svn commit: r240674 - in stable/8/usr.sbin/pkg_install: add lib
Baptiste Daroussin
bapt at FreeBSD.org
Tue Sep 18 20:20:30 UTC 2012
Author: bapt
Date: Tue Sep 18 20:20:29 2012
New Revision: 240674
URL: http://svn.freebsd.org/changeset/base/240674
Log:
MFC: r236213, r236333, r236336, r240476
- Let pkg_add use the ENV variable PACKAGESUFFIX
- Make sure that each va_start has one and only one matching va_end
- Do not change owner, group, or mode when package database directory and
its contents are created with pkg_add(1). It may happen when the packing
list contains @owner, @group, or @mode.
Modified:
stable/8/usr.sbin/pkg_install/add/add.h
stable/8/usr.sbin/pkg_install/add/extract.c
stable/8/usr.sbin/pkg_install/add/futil.c
stable/8/usr.sbin/pkg_install/add/main.c
stable/8/usr.sbin/pkg_install/add/perform.c
stable/8/usr.sbin/pkg_install/add/pkg_add.1
stable/8/usr.sbin/pkg_install/lib/exec.c
stable/8/usr.sbin/pkg_install/lib/file.c
stable/8/usr.sbin/pkg_install/lib/lib.h
stable/8/usr.sbin/pkg_install/lib/msg.c
stable/8/usr.sbin/pkg_install/lib/url.c
Directory Properties:
stable/8/usr.sbin/pkg_install/ (props changed)
stable/8/usr.sbin/pkg_install/add/ (props changed)
Modified: stable/8/usr.sbin/pkg_install/add/add.h
==============================================================================
--- stable/8/usr.sbin/pkg_install/add/add.h Tue Sep 18 19:08:07 2012 (r240673)
+++ stable/8/usr.sbin/pkg_install/add/add.h Tue Sep 18 20:20:29 2012 (r240674)
@@ -41,7 +41,7 @@ extern char *PkgAddCmd;
extern char FirstPen[];
extern add_mode_t AddMode;
-int make_hierarchy(char *);
+int make_hierarchy(char *, Boolean);
void extract_plist(const char *, Package *);
void apply_perms(const char *, const char *);
Modified: stable/8/usr.sbin/pkg_install/add/extract.c
==============================================================================
--- stable/8/usr.sbin/pkg_install/add/extract.c Tue Sep 18 19:08:07 2012 (r240673)
+++ stable/8/usr.sbin/pkg_install/add/extract.c Tue Sep 18 20:20:29 2012 (r240674)
@@ -225,7 +225,7 @@ extract_plist(const char *home, Package
printf("extract: CWD to %s\n", p->name);
PUSHOUT(Directory);
if (strcmp(p->name, ".")) {
- if (!Fake && make_hierarchy(p->name) == FAIL) {
+ if (!Fake && make_hierarchy(p->name, TRUE) == FAIL) {
cleanup(0);
errx(2, "%s: unable to cwd to '%s'", __func__, p->name);
}
Modified: stable/8/usr.sbin/pkg_install/add/futil.c
==============================================================================
--- stable/8/usr.sbin/pkg_install/add/futil.c Tue Sep 18 19:08:07 2012 (r240673)
+++ stable/8/usr.sbin/pkg_install/add/futil.c Tue Sep 18 20:20:29 2012 (r240674)
@@ -31,7 +31,7 @@ __FBSDID("$FreeBSD$");
*/
int
-make_hierarchy(char *dir)
+make_hierarchy(char *dir, Boolean set_perm)
{
char *cp1, *cp2;
@@ -55,7 +55,8 @@ make_hierarchy(char *dir)
*cp2 = '/';
return FAIL;
}
- apply_perms(NULL, dir);
+ if (set_perm)
+ apply_perms(NULL, dir);
}
/* Put it back */
if (cp2) {
Modified: stable/8/usr.sbin/pkg_install/add/main.c
==============================================================================
--- stable/8/usr.sbin/pkg_install/add/main.c Tue Sep 18 19:08:07 2012 (r240673)
+++ stable/8/usr.sbin/pkg_install/add/main.c Tue Sep 18 20:20:29 2012 (r240674)
@@ -234,10 +234,17 @@ main(int argc, char **argv)
remotepkg = temppackageroot;
if (!((ptr = strrchr(remotepkg, '.')) && ptr[1] == 't' &&
(ptr[2] == 'b' || ptr[2] == 'g' || ptr[2] == 'x') &&
- ptr[3] == 'z' && !ptr[4]))
- if (strlcat(remotepkg, ".tbz",
- sizeof(temppackageroot)) >= sizeof(temppackageroot))
- errx(1, "package name too long");
+ ptr[3] == 'z' && !ptr[4])) {
+ if (getenv("PACKAGESUFFIX")) {
+ if (strlcat(remotepkg, getenv("PACKAGESUFFIX"),
+ sizeof(temppackageroot)) >= sizeof(temppackageroot))
+ errx(1, "package name too long");
+ } else {
+ if (strlcat(remotepkg, ".tbz",
+ sizeof(temppackageroot)) >= sizeof(temppackageroot))
+ errx(1, "package name too long");
+ }
+ }
}
if (!strcmp(*argv, "-")) /* stdin? */
pkgs[ch] = (char *)"-";
Modified: stable/8/usr.sbin/pkg_install/add/perform.c
==============================================================================
--- stable/8/usr.sbin/pkg_install/add/perform.c Tue Sep 18 19:08:07 2012 (r240673)
+++ stable/8/usr.sbin/pkg_install/add/perform.c Tue Sep 18 20:20:29 2012 (r240674)
@@ -307,8 +307,12 @@ pkg_do(char *pkg)
*sep = '\0';
strlcat(subpkg, "/All/", sizeof subpkg);
strlcat(subpkg, p->name, sizeof subpkg);
- if ((ext = strrchr(pkg, '.')) == NULL)
- ext = ".tbz";
+ if ((ext = strrchr(pkg, '.')) == NULL) {
+ if (getenv("PACKAGESUFFIX"))
+ ext = getenv("PACKAGESUFFIX");
+ else
+ ext = ".tbz";
+ }
strlcat(subpkg, ext, sizeof subpkg);
pkg_do(subpkg);
}
@@ -345,8 +349,13 @@ pkg_do(char *pkg)
const char *ext;
ext = strrchr(pkg_fullname, '.');
- if (ext == NULL)
- ext = ".tbz";
+ if (ext == NULL) {
+ if (getenv("PACKAGESUFFIX")) {
+ ext = getenv("PACKAGESUFFIX");
+ } else {
+ ext = ".tbz";
+ }
+ }
snprintf(path, FILENAME_MAX, "%s/%s%s", getenv("_TOP"), p->name, ext);
if (fexists(path))
cp = path;
@@ -502,7 +511,7 @@ pkg_do(char *pkg)
zapLogDir = 1;
if (Verbose)
printf("Attempting to record package into %s..\n", LogDir);
- if (make_hierarchy(LogDir)) {
+ if (make_hierarchy(LogDir, FALSE)) {
warnx("can't record package into '%s', you're on your own!",
LogDir);
bzero(LogDir, FILENAME_MAX);
Modified: stable/8/usr.sbin/pkg_install/add/pkg_add.1
==============================================================================
--- stable/8/usr.sbin/pkg_install/add/pkg_add.1 Tue Sep 18 19:08:07 2012 (r240673)
+++ stable/8/usr.sbin/pkg_install/add/pkg_add.1 Tue Sep 18 20:20:29 2012 (r240674)
@@ -553,6 +553,11 @@ The environment variable
specifies an alternative location to save downloaded packages to when
.Fl K
option is used.
+.Pp
+The environment variable
+.Ev PACKAGESUFFIX
+specifies an alternative file extension to use when fetching remote
+packages. Default is .tbz
.Sh FILES
.Bl -tag -width /var/db/pkg -compact
.It Pa /var/tmp
Modified: stable/8/usr.sbin/pkg_install/lib/exec.c
==============================================================================
--- stable/8/usr.sbin/pkg_install/lib/exec.c Tue Sep 18 19:08:07 2012 (r240673)
+++ stable/8/usr.sbin/pkg_install/lib/exec.c Tue Sep 18 20:20:29 2012 (r240674)
@@ -47,6 +47,7 @@ vsystem(const char *fmt, ...)
va_start(args, fmt);
if (vsnprintf(cmd, maxargs, fmt, args) > maxargs) {
warnx("vsystem args are too long");
+ va_end(args);
return 1;
}
#ifdef DEBUG
@@ -82,6 +83,7 @@ vpipe(const char *fmt, ...)
va_start(args, fmt);
if (vsnprintf(cmd, maxargs, fmt, args) > maxargs) {
warnx("vsystem args are too long");
+ va_end(args);
return NULL;
}
#ifdef DEBUG
Modified: stable/8/usr.sbin/pkg_install/lib/file.c
==============================================================================
--- stable/8/usr.sbin/pkg_install/lib/file.c Tue Sep 18 19:08:07 2012 (r240673)
+++ stable/8/usr.sbin/pkg_install/lib/file.c Tue Sep 18 20:20:29 2012 (r240674)
@@ -140,7 +140,7 @@ fileFindByPath(const char *base, const c
{
static char tmp[FILENAME_MAX];
char *cp;
- const char *suffixes[] = {".tbz", ".tgz", ".tar", NULL};
+ const char *suffixes[] = {".tbz", ".tgz", ".tar", ".txz", NULL};
int i;
if (fexists(fname) && isfile(fname)) {
Modified: stable/8/usr.sbin/pkg_install/lib/lib.h
==============================================================================
--- stable/8/usr.sbin/pkg_install/lib/lib.h Tue Sep 18 19:08:07 2012 (r240673)
+++ stable/8/usr.sbin/pkg_install/lib/lib.h Tue Sep 18 20:20:29 2012 (r240674)
@@ -99,7 +99,7 @@
* Version of the package tools - increase whenever you make a change
* in the code that is not cosmetic only.
*/
-#define PKG_INSTALL_VERSION 20100403
+#define PKG_INSTALL_VERSION 20120913
#define PKG_WRAPCONF_FNAME "/var/db/pkg_install.conf"
#define main(argc, argv) real_main(argc, argv)
Modified: stable/8/usr.sbin/pkg_install/lib/msg.c
==============================================================================
--- stable/8/usr.sbin/pkg_install/lib/msg.c Tue Sep 18 19:08:07 2012 (r240673)
+++ stable/8/usr.sbin/pkg_install/lib/msg.c Tue Sep 18 20:20:29 2012 (r240674)
@@ -71,5 +71,6 @@ y_or_n(Boolean def, const char *msg, ...
ch = (def) ? 'Y' : 'N';
}
fclose(tty) ;
+ va_end(args);
return (ch == 'Y') ? TRUE : FALSE;
}
Modified: stable/8/usr.sbin/pkg_install/lib/url.c
==============================================================================
--- stable/8/usr.sbin/pkg_install/lib/url.c Tue Sep 18 19:08:07 2012 (r240673)
+++ stable/8/usr.sbin/pkg_install/lib/url.c Tue Sep 18 20:20:29 2012 (r240674)
@@ -73,7 +73,10 @@ fileGetURL(const char *base, const char
*(cp + 1) = '\0';
strcat(cp, "All/");
strcat(cp, spec);
- strcat(cp, ".tbz");
+ if (getenv("PACKAGESUFFIX"))
+ strcat(cp, getenv("PACKAGESUFFIX"));
+ else
+ strcat(cp, ".tbz");
}
else
return NULL;
@@ -85,7 +88,10 @@ fileGetURL(const char *base, const char
*/
strcpy(fname, hint);
strcat(fname, spec);
- strcat(fname, ".tbz");
+ if (getenv("PACKAGESUFFIX"))
+ strcat(fname, getenv("PACKAGESUFFIX"));
+ else
+ strcat(fname, ".tbz");
}
}
else
More information about the svn-src-stable-8
mailing list