[Geany-devel] Changed file saving implementation for systems with GIO

Lex Trotman 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.
>>
>> 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
> Geany-devel at uvena.de
> http://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel
>
>



More information about the Devel mailing list