- Backout latest changes (follow symlinks: r186496, r186518).

- Bump PKG_INSTALL_VER to 20090106.
This commit is contained in:
flz 2009-01-06 19:00:12 +00:00
parent 70a6427140
commit ac26b19109
2 changed files with 24 additions and 61 deletions

View File

@ -105,7 +105,7 @@
* Version of the package tools - increase only when some
* functionality used by bsd.port.mk is changed, added or removed
*/
#define PKG_INSTALL_VERSION 20081227
#define PKG_INSTALL_VERSION 20090106
#define PKG_WRAPCONF_FNAME "/var/db/pkg_install.conf"
#define main(argc, argv) real_main(argc, argv)

View File

@ -544,82 +544,45 @@ delete_package(Boolean ign_err, Boolean nukedirs, Package *pkg)
int
delete_hierarchy(const char *dir, Boolean ign_err, Boolean nukedirs)
{
char *cp1, *cp2, realdir[FILENAME_MAX];
char *cp1, *cp2;
if (realdir == NULL) {
warnx("Couldn't allocate enough memory\n");
return (ign_err ? SUCCESS : FAIL);
}
if (issymlink(dir) && readlink(dir, realdir, FILENAME_MAX-1) == -1)
return (ign_err ? SUCCESS : FAIL);
strlcpy(realdir, dir, FILENAME_MAX-1);
cp1 = cp2 = strdup(realdir);
if (cp1 == NULL) {
warnx("Couldn't allocate enough memory\n");
return (ign_err ? SUCCESS : FAIL);
}
if (!fexists(realdir)) {
cp1 = cp2 = strdup(dir);
if (!fexists(dir)) {
if (!ign_err)
warnx("%s '%s' doesn't exist",
isdir(realdir) ? "directory" : "file", realdir);
free(cp1);
return (ign_err ? SUCCESS : FAIL);
isdir(dir) ? "directory" : "file", dir);
return !ign_err;
}
else if (nukedirs) {
if (vsystem("%s -r%s %s", REMOVE_CMD, (ign_err ? "f" : ""), realdir)) {
free(cp1);
return (ign_err ? SUCCESS : FAIL);
}
if (vsystem("%s -r%s %s", REMOVE_CMD, (ign_err ? "f" : ""), dir))
return 1;
}
else if (isdir(realdir)) {
if (RMDIR(realdir)) {
free(cp1);
return (ign_err ? SUCCESS : FAIL);
}
else if (isdir(dir) && !issymlink(dir)) {
if (RMDIR(dir) && !ign_err)
return 1;
}
else {
if (REMOVE(realdir, ign_err)) {
free(cp1);
return (ign_err ? SUCCESS : FAIL);
}
if (REMOVE(dir, ign_err))
return 1;
}
if (!nukedirs) {
free(cp1);
return (SUCCESS);
}
if (!nukedirs)
return 0;
while (cp2) {
if ((cp2 = strrchr(cp1, '/')) != NULL)
*cp2 = '\0';
if (!isemptydir(realdir)) {
free(cp1);
return (SUCCESS);
}
if (RMDIR(realdir) && !ign_err) {
if (!fexists(realdir)) {
warnx("directory '%s' doesn't exist", realdir);
free(cp1);
return (SUCCESS);
} else {
free(cp1);
return (FAIL);
}
if (!isemptydir(dir))
return 0;
if (RMDIR(dir) && !ign_err) {
if (!fexists(dir))
warnx("directory '%s' doesn't exist", dir);
else
return 1;
}
/* back up the pathname one component */
if (cp2) {
free(cp1);
cp1 = strdup(realdir);
if (cp1 == NULL) {
warnx("Couldn't allocate enough memory\n");
return (ign_err ? SUCCESS : FAIL);
}
cp1 = strdup(dir);
}
}
free(cp1);
return (SUCCESS);
return 0;
}