summaryrefslogtreecommitdiffstats
path: root/usr.sbin/pkg_install/lib
diff options
context:
space:
mode:
authorjkh <jkh@FreeBSD.org>1995-04-22 00:14:20 +0000
committerjkh <jkh@FreeBSD.org>1995-04-22 00:14:20 +0000
commitf50974f2ec0a1239f728b8d2fdc722dbae37d426 (patch)
tree35669bd532d5846ce72a8f3fa1da9cb86d061f1d /usr.sbin/pkg_install/lib
parent40a3a76a6793772d6fd3960d8fa2e92048cf08b8 (diff)
downloadFreeBSD-src-f50974f2ec0a1239f728b8d2fdc722dbae37d426.zip
FreeBSD-src-f50974f2ec0a1239f728b8d2fdc722dbae37d426.tar.gz
Some patches to make deletions of non-existent files and directories slightly
less fatal (so that the database entry is subsequently removed anyway). Submitted by: Edward Wang <edward@edcom.com>
Diffstat (limited to 'usr.sbin/pkg_install/lib')
-rw-r--r--usr.sbin/pkg_install/lib/plist.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/usr.sbin/pkg_install/lib/plist.c b/usr.sbin/pkg_install/lib/plist.c
index 282f3d0..d8ea00e 100644
--- a/usr.sbin/pkg_install/lib/plist.c
+++ b/usr.sbin/pkg_install/lib/plist.c
@@ -1,5 +1,5 @@
#ifndef lint
-static const char *rcsid = "$Id: plist.c,v 1.9 1994/09/29 13:19:43 jkh Exp $";
+static const char *rcsid = "$Id: plist.c,v 1.10 1994/12/06 00:51:50 jkh Exp $";
#endif
/*
@@ -374,7 +374,7 @@ delete_package(Boolean ign_err, Boolean nukedirs, Package *pkg)
#define REMOVE(dir,ie) vsystem("%s %s%s", REMOVE_CMD, (ie ? "-f " : ""), dir)
#else
#define RMDIR rmdir
-#define REMOVE(file,ie) remove(file)
+#define REMOVE(file,ie) (remove(file) && !(ie))
#endif
/* Selectively delete a hierarchy */
@@ -384,11 +384,15 @@ delete_hierarchy(char *dir, Boolean ign_err, Boolean nukedirs)
char *cp1, *cp2;
cp1 = cp2 = dir;
- if (nukedirs) {
+ if (!fexists(dir)) {
+ if (!ign_err)
+ whinge("%s '%s' doesn't really exist.",
+ isdir(dir) ? "Directory" : "File", dir);
+ } else if (nukedirs) {
if (vsystem("%s -r%s %s", REMOVE_CMD, (ign_err ? "f" : ""), dir))
return 1;
} else if (isdir(dir)) {
- if (RMDIR(dir))
+ if (RMDIR(dir) && !ign_err)
return 1;
} else {
if (REMOVE(dir, ign_err))
@@ -402,8 +406,11 @@ delete_hierarchy(char *dir, Boolean ign_err, Boolean nukedirs)
*cp2 = '\0';
if (!isemptydir(dir))
return 0;
- if (RMDIR(dir) && ign_err)
- return 1;
+ if (RMDIR(dir) && !ign_err)
+ if (!fexists(dir))
+ whinge("Directory '%s' doesn't really exist.", dir);
+ else
+ return 1;
/* back up the pathname one component */
if (cp2) {
cp1 = dir;
OpenPOWER on IntegriCloud