svn commit: r186835 - head/usr.sbin/pkg_install/lib
Florent Thoumie
flz at FreeBSD.org
Tue Jan 6 11:00:13 PST 2009
Author: flz
Date: Tue Jan 6 19:00:12 2009
New Revision: 186835
URL: http://svn.freebsd.org/changeset/base/186835
Log:
- Backout latest changes (follow symlinks: r186496, r186518).
- Bump PKG_INSTALL_VER to 20090106.
Modified:
head/usr.sbin/pkg_install/lib/lib.h
head/usr.sbin/pkg_install/lib/plist.c
Modified: head/usr.sbin/pkg_install/lib/lib.h
==============================================================================
--- head/usr.sbin/pkg_install/lib/lib.h Tue Jan 6 18:10:17 2009 (r186834)
+++ head/usr.sbin/pkg_install/lib/lib.h Tue Jan 6 19:00:12 2009 (r186835)
@@ -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)
Modified: head/usr.sbin/pkg_install/lib/plist.c
==============================================================================
--- head/usr.sbin/pkg_install/lib/plist.c Tue Jan 6 18:10:17 2009 (r186834)
+++ head/usr.sbin/pkg_install/lib/plist.c Tue Jan 6 19:00:12 2009 (r186835)
@@ -544,82 +544,45 @@ delete_package(Boolean ign_err, Boolean
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;
}
-
More information about the svn-src-head
mailing list