[gedit] Do not append the final endline for empty files
- From: Paolo Borelli <pborelli src gnome org>
- To: svn-commits-list gnome org
- Subject: [gedit] Do not append the final endline for empty files
- Date: Tue, 2 Jun 2009 10:02:30 -0400 (EDT)
commit 85d532cf11637d2e5dedaef353971315f951d0d4
Author: Paolo Borelli <porelli gnome org>
Date: Tue Jun 2 16:02:52 2009 +0200
Do not append the final endline for empty files
---
gedit/gedit-document-saver.c | 67 ++++++++++++++++++++------------------
gedit/gedit-gio-document-saver.c | 6 ++--
2 files changed, 38 insertions(+), 35 deletions(-)
diff --git a/gedit/gedit-document-saver.c b/gedit/gedit-document-saver.c
index 26893be..3865ffb 100644
--- a/gedit/gedit-document-saver.c
+++ b/gedit/gedit-document-saver.c
@@ -341,47 +341,50 @@ gedit_document_saver_write_document_contents (GeditDocumentSaver *saver,
}
/* Save the file content */
- if (res)
+ if (len > 0)
{
- const gchar *write_buffer = contents;
- gssize to_write = len;
-
- do
+ if (res)
{
- written = write (fd, write_buffer, to_write);
- if (written == -1)
+ const gchar *write_buffer = contents;
+ gssize to_write = len;
+
+ do
{
- if (errno == EINTR)
- continue;
+ written = write (fd, write_buffer, to_write);
+ if (written == -1)
+ {
+ if (errno == EINTR)
+ continue;
- res = FALSE;
+ res = FALSE;
- break;
- }
+ break;
+ }
- to_write -= written;
- write_buffer += written;
+ to_write -= written;
+ write_buffer += written;
+ }
+ while (to_write > 0);
}
- while (to_write > 0);
- }
-
- /* make sure files are always terminated with \n (see bug #95676). Note
- that we strip the trailing \n when loading the file */
- if (res)
- {
- gchar *n_buf;
- gsize n_len;
- n_buf = gedit_document_saver_get_end_newline (saver, &n_len);
- if (n_buf != NULL)
+ /* make sure files are always terminated with \n (see bug #95676). Note
+ that we strip the trailing \n when loading the file */
+ if (res)
{
- written = write (fd, n_buf, n_len);
- res = (written != -1 && (gsize) written == n_len);
- g_free (n_buf);
- }
- else
- {
- g_warning ("Cannot add '\\n' at the end of the file.");
+ gchar *n_buf;
+ gsize n_len;
+
+ n_buf = gedit_document_saver_get_end_newline (saver, &n_len);
+ if (n_buf != NULL)
+ {
+ written = write (fd, n_buf, n_len);
+ res = (written != -1 && (gsize) written == n_len);
+ g_free (n_buf);
+ }
+ else
+ {
+ g_warning ("Cannot add '\\n' at the end of the file.");
+ }
}
}
diff --git a/gedit/gedit-gio-document-saver.c b/gedit/gedit-gio-document-saver.c
index 1cb5c87..9f7cde7 100644
--- a/gedit/gedit-gio-document-saver.c
+++ b/gedit/gedit-gio-document-saver.c
@@ -534,13 +534,13 @@ begin_write (AsyncData *async)
*/
gvsaver = async->saver;
gchar *buffer = gedit_document_saver_get_document_contents (GEDIT_DOCUMENT_SAVER (gvsaver), &len, &error);
-
- if (buffer)
+
+ if (buffer != NULL && len > 0)
{
/* Append new line to buffer */
buffer = append_new_line (gvsaver, buffer, &len, &error);
}
-
+
if (!buffer)
{
async_failed (async, error);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]