[Geany-devel] Changed file saving implementation for systems with GIO
elextr at xxxxx
Sun Nov 7 03:26:27 UTC 2010
2010/11/6 Dimitar Zhekov <dimitar.zhekov at gmail.com>:
> On Sat, 6 Nov 2010 21:31:31 +1100
> Lex Trotman <elextr at gmail.com> wrote:
>> On 6 November 2010 20:33, Dimitar Zhekov <dimitar.zhekov at gmail.com> 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.
> 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
> Geany-devel at uvena.de
More information about the Devel