From owner-svn-src-all@FreeBSD.ORG Tue Jan 6 19:00:12 2009 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CB44B1065672; Tue, 6 Jan 2009 19:00:12 +0000 (UTC) (envelope-from flz@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B88858FC1D; Tue, 6 Jan 2009 19:00:12 +0000 (UTC) (envelope-from flz@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n06J0CTh039200; Tue, 6 Jan 2009 19:00:12 GMT (envelope-from flz@svn.freebsd.org) Received: (from flz@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n06J0CGZ039198; Tue, 6 Jan 2009 19:00:12 GMT (envelope-from flz@svn.freebsd.org) Message-Id: <200901061900.n06J0CGZ039198@svn.freebsd.org> From: Florent Thoumie Date: Tue, 6 Jan 2009 19:00:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r186835 - head/usr.sbin/pkg_install/lib X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 06 Jan 2009 19:00:13 -0000 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; } -