← Commit list

8abae8841

Denis Vlasenko
Denis Vlasenko
2008-05-03
FAILED Duration: 26s

Subject

vi: do not truncate file to zero length. closes bug 2944.

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

editors/vi.c+6 -1
@@ -2437,11 +2437,16 @@ static int file_write(char * fn, char * first, char * last)
return -2;
}
charcnt = 0;
- fd = open(fn, (O_WRONLY | O_CREAT | O_TRUNC), 0666);
+ /* By popular request we do not open file with O_TRUNC,
+ * but instead ftruncate() it _after_ successful write.
+ * Might reduce amount of data lost on power fail etc.
+ */
+ fd = open(fn, (O_WRONLY | O_CREAT), 0666);
if (fd < 0)
return -1;
cnt = last - first + 1;
charcnt = full_write(fd, first, cnt);
+ ftruncate(fd, charcnt);
if (charcnt == cnt) {
// good write
//file_modified = FALSE; // the file has not been modified