Kaydet (Commit) 80799825 authored tarafından Nick Treleaven's avatar Nick Treleaven

Display better error messages when saving a document fails (patch by

Dimitar Zhekov, thanks).



git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5396 ea778897-0a13-0410-b9d1-a72fbfd435f5
üst 6cfea4b5
2010-11-11 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
* src/document.c:
Display better error messages when saving a document fails (patch by
Dimitar Zhekov, thanks).
2010-11-10 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
* src/templates.c, src/document.c:
......
......@@ -1726,32 +1726,59 @@ static gchar *write_data_to_disk(const gchar *locale_filename,
g_object_unref(fp);
#else
FILE *fp;
gint bytes_written;
gboolean fail = FALSE;
int save_errno;
gchar *display_name = g_filename_display_name(locale_filename);
/* Use POSIX API for unsafe saving (GVFS-unsafe) */
/* The error handling is taken from glib-2.26.0 gfileutils.c */
errno = 0;
fp = g_fopen(locale_filename, "wb");
if (fp == NULL)
fail = TRUE;
{
save_errno = errno;
g_set_error(&error,
G_FILE_ERROR,
g_file_error_from_errno(save_errno),
_("Failed to open file '%s' for writing: fopen() failed: %s"),
display_name,
g_strerror(save_errno));
}
else
{
gint bytes_written;
errno = 0;
bytes_written = fwrite(data, sizeof(gchar), len, fp);
if (len != bytes_written)
fail = TRUE;
{
save_errno = errno;
g_set_error(&error,
G_FILE_ERROR,
g_file_error_from_errno(save_errno),
_("Failed to write file '%s': fwrite() failed: %s"),
display_name,
g_strerror(save_errno));
}
if (fclose(fp) != 0)
fail = TRUE;
}
if (fail)
{
gint err = errno;
if (!err)
err = EIO;
return g_strdup(g_strerror(err));
errno = 0;
/* preserve the fwrite() error if any */
if (fclose(fp) != 0 && error == NULL)
{
save_errno = errno;
g_set_error(&error,
G_FILE_ERROR,
g_file_error_from_errno(save_errno),
_("Failed to close file '%s': fclose() failed: %s"),
display_name,
g_strerror(save_errno));
}
}
g_free(display_name);
#endif
}
else
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment