tReturn unlink/rmdir status in delete_content() - pm - barely a pack manager
HTML git clone git://z3bra.org/pm
DIR Log
DIR Files
DIR Refs
DIR README
DIR LICENSE
---
DIR commit 2c21ea32dfdc263efdc030050d16a88f28c2dd48
DIR parent 0561c20abeb8345867dab622822d3abf323b5fff
HTML Author: z3bra <willyatmailoodotorg>
Date: Tue, 5 Jan 2016 18:08:24 +0100
Return unlink/rmdir status in delete_content()
Diffstat:
M pm.c | 24 +++++++++++-------------
1 file changed, 11 insertions(+), 13 deletions(-)
---
DIR diff --git a/pm.c b/pm.c
t@@ -381,11 +381,9 @@ delete_content(FILE *f)
stat(file, &st);
if (S_ISDIR(st.st_mode) && is_empty(file))
- rmdir(file);
- else
- unlink(file);
+ return rmdir(file);
- return 0;
+ return unlink(file);
}
t@@ -415,19 +413,20 @@ delete(const char *datadir, const char *rootfs, const char *name)
return -1;
}
- delete_content(f);
+ if (delete_content(f) < 0)
+ return ERR_DELETE;
+
fclose(f);
/* hack again */
chdir(cwd);
free(cwd);
- unlink(meta);
+ if (unlink(meta) < 0)
+ return ERR_DELETE;
snprintf(meta, PATH_MAX, "%s/%s", datadir, name);
- rmdir(meta);
-
- return 0;
+ return rmdir(meta);
}
t@@ -520,7 +519,6 @@ main (int argc, char **argv)
break;
case 'd':
action = ACTION_DELETE;
- n = EARGF(usage(argv0));
break;
case 'i':
action = ACTION_INSPECT;
t@@ -533,7 +531,7 @@ main (int argc, char **argv)
switch (action) {
case ACTION_INSTALL:
- while(*argv) {
+ while (*argv) {
if ((p = pack_load(*(argv++)))) {
metadata(PACKAGE_DATA, p);
unpack(PACKAGE_ROOT, p->path);
t@@ -543,8 +541,8 @@ main (int argc, char **argv)
break;
case ACTION_DELETE:
- if (delete(PACKAGE_DATA, PACKAGE_ROOT, n) != 0)
- return ERR_DELETE;
+ while (*argv)
+ delete(PACKAGE_DATA, PACKAGE_ROOT, *argv++);
break;
case ACTION_INSPECT: