Please find the patch in attachment. When building with GIO, it would use 
g_file_replace_contents
Also, for those who are interested, I have found the reason for strange 
behaviour with gvfs-smb. The proposed patch is here: 
https://bugzilla.gnome.org/show_bug.cgi?id=614696

Fri, 02 Apr 2010 12:12:36 +0400 письмо от Алексей Антипов<1a_anti...@mail.ru>:

> Sure, it does not alter permissions.
> 
> I suppose that with make_backup=TRUE it would first (attempt to) copy 
> previous file to a backup file,
> and only then write a new one. The annoying thing is that it would not delete 
> a backup file, and the
> only way to get its name is to "guess" (usually for "filename" the backup 
> name is "filename~").
> Probably the backup file can be left as it is, so a user gets a copy of 
> his/her old data; those who are
> annoyed with that can simply turn the option off.
> 
> I've created a patch which requires some final testing; I'll send it today or 
> tomorrow (can test only with smb:// and 
> sftp://, 'cause have nothing else:))
> 
> Thu, 1 Apr 2010 17:07:59 +0100 письмо от Nick Treleaven 
> <nick.trelea...@btinternet.com>:
> 
> > On Thu, 1 Apr 2010 12:41:13 +0100
> > Nick Treleaven <nick.trelea...@btinternet.com> wrote:
> > 
> > > > Btw, the bugs with GVFS didn't appear with GNOME 2.26 (and probably 
> > > > before), so I think we can safely use fopen() and fprintf()/fwrite() 
> > > > there. Then, your proposal about version separation (use GIO with 
> > > > GLib>=2.16 and fopen()/g_file_set_contents() with other) is extremely 
> > > > attractive. Do you know if there is a way to get GLib version at 
> > > > runtime, not at compile-time (so that there is no need to rebuild all 
> > > > the packages for different versions)?
> > > > 
> > > > I'm going to start working on it; if this is OK, I'll send a patch ASAP.
> > > 
> > > BTW There is another problem that file saving should solve - not
> > > losing existing file data when there is no space to save the new file.
> > > Does g_file_replace_contents() handle this problem? (g_file_set_contents
> > > () does handle this but as you mention has other problems).
> > 
> > According to the docs for g_file_replace, which g_file_replace_contents
> > uses internally, this case may be handled:
> > 
> > "This will try to replace the file in the safest way possible so that
> > any errors during the writing will not affect an already existing copy
> > of the file. For instance, for local files it may write to a temporary
> > file and then atomically rename over the destination when the stream is
> > closed."
> > http://library.gnome.org/devel/gio/unstable/GFile.html#g-file-replace
> > 
> > Hopefully it still keeps permissions if the rename is done(!)
> > 
> > Regards,
> > Nick
> > _______________________________________________
> > Geany-devel mailing list
> > Geany-devel@uvena.de
> > http://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel
> > 
> 
> 
> Тесты новейших гаджетов на Hi-tech.Mail.Ru
> http://r.mail.ru/cln5823/hi-tech.mail.ru/
> _______________________________________________
> Geany-devel mailing list
> Geany-devel@uvena.de
> http://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel
> 


Лучшие предложения интернет-магазинов на Това�...@mail.ru 
http://r.mail.ru/cln4267/torg.mail.ru/

Attachment: 40_gio_file_saving.dpatch
Description: Binary data

_______________________________________________
Geany-devel mailing list
Geany-devel@uvena.de
http://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel

Reply via email to