2010/11/6 Dimitar Zhekov <[email protected]>: > On Sat, 6 Nov 2010 21:31:31 +1100 > Lex Trotman <[email protected]> wrote: > >> On 6 November 2010 20:33, Dimitar Zhekov <[email protected]> wrote: >> > >> > 1. Open the file for reading and writing. >> >> I'm not sure all non-local filesystems support read/write or they >> support it via local caching which isn't safe until flushed to the >> remote system >> [...] >> The problem is that on local filesystems where its safe is where you >> don't need the performance and on remote filesystems where you need >> the performance you also need the safety. Can't win. > > Touchdown. OK, that's not worth. > >> > if (G_UNLIKELY(len != bytes_written)) >> > err = errno; >> > >> > but fwrite() is not guaranteed to set errno, only write() is. >> >> Even write's behavoir is filesystem dependent IIUC. > > Yes, but the documented behaviour of write(2) is to set errno, while > fwrite(2) does not.
Actually SUS2 and POSIX both require it to set errno, its just Linux & MS who don't :-S It's the same even for MSVCRT. > >> > If not anything else, we should use non-buffered I/O, with fsync(), and >> > check the result of close() anyway. >> >> Yes. > > Attached. I also rearranged the code a bit to restore the safe saving > support for Geany compiled with GIO. Since g_file_replace_contents() is > unsafe, there would be no harm have the old safe saving, at least until > we resolve the matter. > Looks generally ok, but also havn't tried it. > -- > E-gards: Jimmy > > _______________________________________________ > Geany-devel mailing list > [email protected] > http://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel > > _______________________________________________ Geany-devel mailing list [email protected] http://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel
