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> 2010-11-10 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
* src/templates.c, src/document.c: * src/templates.c, src/document.c:
......
...@@ -1726,32 +1726,59 @@ static gchar *write_data_to_disk(const gchar *locale_filename, ...@@ -1726,32 +1726,59 @@ static gchar *write_data_to_disk(const gchar *locale_filename,
g_object_unref(fp); g_object_unref(fp);
#else #else
FILE *fp; FILE *fp;
gint bytes_written; int save_errno;
gboolean fail = FALSE; gchar *display_name = g_filename_display_name(locale_filename);
/* Use POSIX API for unsafe saving (GVFS-unsafe) */ /* Use POSIX API for unsafe saving (GVFS-unsafe) */
/* The error handling is taken from glib-2.26.0 gfileutils.c */
errno = 0; errno = 0;
fp = g_fopen(locale_filename, "wb"); fp = g_fopen(locale_filename, "wb");
if (fp == NULL) 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 else
{ {
gint bytes_written;
errno = 0; errno = 0;
bytes_written = fwrite(data, sizeof(gchar), len, fp); bytes_written = fwrite(data, sizeof(gchar), len, fp);
if (len != bytes_written) 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) errno = 0;
fail = TRUE; /* preserve the fwrite() error if any */
} if (fclose(fp) != 0 && error == NULL)
if (fail) {
{ save_errno = errno;
gint err = errno;
if (!err) g_set_error(&error,
err = EIO; G_FILE_ERROR,
return g_strdup(g_strerror(err)); 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 #endif
} }
else 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