SF.net SVN: geany:[5396] trunk
ntrel at users.sourceforge.net
ntrel at xxxxx
Thu Nov 11 13:13:37 UTC 2010
Revision: 5396
http://geany.svn.sourceforge.net/geany/?rev=5396&view=rev
Author: ntrel
Date: 2010-11-11 13:13:37 +0000 (Thu, 11 Nov 2010)
Log Message:
-----------
Display better error messages when saving a document fails (patch by
Dimitar Zhekov, thanks).
Modified Paths:
--------------
trunk/ChangeLog
trunk/src/document.c
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2010-11-10 18:19:20 UTC (rev 5395)
+++ trunk/ChangeLog 2010-11-11 13:13:37 UTC (rev 5396)
@@ -1,3 +1,10 @@
+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:
Modified: trunk/src/document.c
===================================================================
--- trunk/src/document.c 2010-11-10 18:19:20 UTC (rev 5395)
+++ trunk/src/document.c 2010-11-11 13:13:37 UTC (rev 5396)
@@ -1726,32 +1726,59 @@
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;
- if (fclose(fp) != 0)
- fail = TRUE;
+ 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));
+ }
+
+ 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));
+ }
}
- if (fail)
- {
- gint err = errno;
- if (!err)
- err = EIO;
- return g_strdup(g_strerror(err));
- }
+
+ g_free(display_name);
#endif
}
else
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Commits
mailing list