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>
This commit is contained in:
parent
ca22b5aa87
commit
cca32e93aa
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=7989
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user