Use g_file_set_contents to save 'config' with a temporary file

If the filesystem runs out of space and Midori tries to save
the 'config' file under that condition, the file is lost. To
avoid that, we use g_file_set_contents which writes a temporary
file first, at the cost of destroying symbolic links.
This commit is contained in:
Christian Dywan 2010-06-10 17:49:22 +02:00
parent 5333845ba4
commit ff6fec6367

View file

@ -1103,22 +1103,15 @@ sokoke_key_file_save_to_file (GKeyFile* key_file,
GError** error) GError** error)
{ {
gchar* data; gchar* data;
FILE* fp; gboolean success = FALSE;
data = g_key_file_to_data (key_file, NULL, error); data = g_key_file_to_data (key_file, NULL, error);
if (!data) if (!data)
return FALSE; return FALSE;
if (!(fp = fopen (filename, "w"))) success = g_file_set_contents (filename, data, -1, error);
{
*error = g_error_new (G_FILE_ERROR, G_FILE_ERROR_ACCES,
_("Writing failed."));
return FALSE;
}
fputs (data, fp);
fclose (fp);
g_free (data); g_free (data);
return TRUE; return success;
} }
void void