[2774] in BarnOwl Developers
[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