[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Lost] [Patch] LostIO - truncate bei fopen(..., "w")
Kevin Wolf wrote:
>> + // Wenn w+ muss Lesen auch aktiviert werden dafuer truncate
>> + // nicht
>>
>
> Falls ich mal die Manpage von fopen zitieren darf:
>
> w+ Öffne die Datei zum Lesen und Schreiben. Die Datei wird erzeugt,
> wenn sie nicht existiert, ansonsten abgeschnitten. Der Stream wird
> auf den Dateianfang positioniert
>
> truncate wird bei a und a+ nicht aktiviert.
>
Ups, das habe ich wohl nicht genau genug gelesen...
Index: src/modules/include/io.h
===================================================================
--- src/modules/include/io.h (Revision 616)
+++ src/modules/include/io.h (Arbeitskopie)
@@ -45,7 +45,7 @@
#define IO_OPEN_MODE_READ 1
#define IO_OPEN_MODE_WRITE 2
#define IO_OPEN_MODE_APPEND 4
-#define IO_OPEN_MODE_BINARY 8
+#define IO_OPEN_MODE_TRUNC 8
#define IO_OPEN_MODE_DIRECTORY 16
#define IO_OPEN_MODE_CREATE 32
#define IO_OPEN_MODE_LINK 64
Index: src/modules/lib/stdlibc/file.c
===================================================================
--- src/modules/lib/stdlibc/file.c (Revision 616)
+++ src/modules/lib/stdlibc/file.c (Arbeitskopie)
@@ -73,7 +73,13 @@
break;
case 'w':
- *attr |= IO_OPEN_MODE_WRITE | IO_OPEN_MODE_CREATE;
+ *attr |= IO_OPEN_MODE_WRITE | IO_OPEN_MODE_CREATE |
+ IO_OPEN_MODE_TRUNC;
+
+ // Bei w+ muss Lesen auch aktiviert werden.
+ if (mode[i + 1] == '+') {
+ *attr |= IO_OPEN_MODE_READ;
+ }
break;
case 'a':