[2774] in BarnOwl Developers

home help back first fref pref prev next nref lref last post

[PATCH 2/2] I/O errors on writing subscription file in :unsub are no longer clobbered by "No subscription present in..."

daemon@ATHENA.MIT.EDU (Jason Gross)
Sat Nov 13 23:22:47 2010

From: Jason Gross <jgross@MIT.EDU>
To: barnowl-dev@mit.edu
Date: Sat, 13 Nov 2010 23:22:36 -0500
In-Reply-To: <1289708556-7552-1-git-send-email-jgross@mit.edu>

owl_util_file_deleteline now returns -1 on error, and owl_zephyr_delsub
now checks linesdeleted == 0 before erroring with "No subscription
present in..."
---
 util.c   |   14 +++++++-------
 zephyr.c |    2 +-
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/util.c b/util.c
index e00da2e..44c4cc5 100644
--- a/util.c
+++ b/util.c
@@ -392,12 +392,12 @@ int owl_util_file_deleteline(const char *filename, const char *line, int backup)
   if ((old = fopen(filename, "r")) == NULL) {
     owl_function_error("Cannot open %s (for reading): %s",
 		       filename, strerror(errno));
-    return 0;
+    return -1;
   }
 
   if (fstat(fileno(old), &st) != 0) {
     owl_function_error("Cannot stat %s: %s", filename, strerror(errno));
-    return 0;
+    return -1;
   }
 
   /* canonicalize filename and handle errors */
@@ -405,7 +405,7 @@ int owl_util_file_deleteline(const char *filename, const char *line, int backup)
   if (actual_filename == NULL) {
     owl_function_error("Cannot canonicalize file name %s: %s",
 		       actual_filename, strerror(errno));
-    return 0;
+    return -1;
   }
 
   newfile = owl_sprintf("%s.new", actual_filename);
@@ -415,7 +415,7 @@ int owl_util_file_deleteline(const char *filename, const char *line, int backup)
     owl_free(newfile);
     fclose(old);
     free(actual_filename);
-    return 0;
+    return -1;
   }
 
   if (fchmod(fileno(new), st.st_mode & 0777) != 0) {
@@ -426,7 +426,7 @@ int owl_util_file_deleteline(const char *filename, const char *line, int backup)
     owl_free(newfile);
     fclose(old);
     free(actual_filename);
-    return 0;
+    return -1;
   }
 
   while (owl_getline_chomp(&buf, old))
@@ -447,7 +447,7 @@ int owl_util_file_deleteline(const char *filename, const char *line, int backup)
       owl_free(backupfile);
       unlink(newfile);
       owl_free(newfile);
-      return 0;
+      return -1;
     }
     owl_free(backupfile);
   }
@@ -455,7 +455,7 @@ int owl_util_file_deleteline(const char *filename, const char *line, int backup)
   if (rename(newfile, actual_filename) != 0) {
     owl_function_error("Cannot move %s to %s: %s",
 		       newfile, actual_filename, strerror(errno));
-    numremoved = 0;
+    numremoved = -1;
   }
 
   unlink(newfile);
diff --git a/zephyr.c b/zephyr.c
index 7b67459..eb39065 100644
--- a/zephyr.c
+++ b/zephyr.c
@@ -1011,7 +1011,7 @@ void owl_zephyr_delsub(const char *filename, const char *class, const char *inst
   linesdeleted = owl_util_file_deleteline(subsfile, line, 1);
   if (linesdeleted > 0) {
     owl_function_makemsg("Subscription removed");
-  } else {
+  } else if (linesdeleted == 0) {
     owl_function_error("No subscription present in %s", subsfile);
   }
   owl_free(subsfile);
-- 
1.7.1


home help back first fref pref prev next nref lref last post