Author: jpaetzel
Date: Wed May 30 21:01:06 2012
New Revision: 236333
URL: http://svn.freebsd.org/changeset/base/236333

Log:
  Let pkg_add use the ENV variable PACKAGESUFFIX. This
  can be used to override the default .tbz package extension to
  .txz .tgz or .tar
  
  Submitted by: kmoore
  Obtained from:        PC-BSD
  Sponsored by: iXsystems
  MFC after:    3 days

Modified:
  head/usr.sbin/pkg_install/add/main.c
  head/usr.sbin/pkg_install/add/perform.c
  head/usr.sbin/pkg_install/add/pkg_add.1
  head/usr.sbin/pkg_install/lib/file.c
  head/usr.sbin/pkg_install/lib/url.c

Modified: head/usr.sbin/pkg_install/add/main.c
==============================================================================
--- head/usr.sbin/pkg_install/add/main.c        Wed May 30 20:56:07 2012        
(r236332)
+++ head/usr.sbin/pkg_install/add/main.c        Wed May 30 21:01:06 2012        
(r236333)
@@ -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: head/usr.sbin/pkg_install/add/perform.c
==============================================================================
--- head/usr.sbin/pkg_install/add/perform.c     Wed May 30 20:56:07 2012        
(r236332)
+++ head/usr.sbin/pkg_install/add/perform.c     Wed May 30 21:01:06 2012        
(r236333)
@@ -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;

Modified: head/usr.sbin/pkg_install/add/pkg_add.1
==============================================================================
--- head/usr.sbin/pkg_install/add/pkg_add.1     Wed May 30 20:56:07 2012        
(r236332)
+++ head/usr.sbin/pkg_install/add/pkg_add.1     Wed May 30 21:01:06 2012        
(r236333)
@@ -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: head/usr.sbin/pkg_install/lib/file.c
==============================================================================
--- head/usr.sbin/pkg_install/lib/file.c        Wed May 30 20:56:07 2012        
(r236332)
+++ head/usr.sbin/pkg_install/lib/file.c        Wed May 30 21:01:06 2012        
(r236333)
@@ -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: head/usr.sbin/pkg_install/lib/url.c
==============================================================================
--- head/usr.sbin/pkg_install/lib/url.c Wed May 30 20:56:07 2012        
(r236332)
+++ head/usr.sbin/pkg_install/lib/url.c Wed May 30 21:01:06 2012        
(r236333)
@@ -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
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to