Author: delphij
Date: Mon Apr 27 05:49:18 2015
New Revision: 282052
URL: https://svnweb.freebsd.org/changeset/base/282052

Log:
  MFC r281500,281540,281626:
  
  Sync with NetBSD:
   - Mention xz(1) in gzip(1).
   - Strip away path from header name when decompressing.

Modified:
  stable/10/usr.bin/gzip/gzip.1
  stable/10/usr.bin/gzip/gzip.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/usr.bin/gzip/gzip.1
==============================================================================
--- stable/10/usr.bin/gzip/gzip.1       Mon Apr 27 05:44:09 2015        
(r282051)
+++ stable/10/usr.bin/gzip/gzip.1       Mon Apr 27 05:49:18 2015        
(r282052)
@@ -1,4 +1,4 @@
-.\"    $NetBSD: gzip.1,v 1.23 2014/03/18 18:20:45 riastradh Exp $
+.\"    $NetBSD: gzip.1,v 1.25 2015/04/06 21:41:17 wiz Exp $
 .\"
 .\" Copyright (c) 1997, 2003, 2004 Matthew R. Green
 .\" All rights reserved.
@@ -25,7 +25,7 @@
 .\" SUCH DAMAGE.
 .\"
 .\" $FreeBSD$
-.Dd October 9, 2011
+.Dd April 6, 2015
 .Dt GZIP 1
 .Os
 .Sh NAME
@@ -105,9 +105,10 @@ options are enabled.
 This version of
 .Nm
 is also capable of decompressing files compressed using
-.Xr compress 1
+.Xr compress 1 ,
+.Xr bzip2 1 ,
 or
-.Xr bzip2 1 .
+.Xr xz 1 .
 .Sh OPTIONS
 The following options are available:
 .Bl -tag -width XXrXXXrecursiveX

Modified: stable/10/usr.bin/gzip/gzip.c
==============================================================================
--- stable/10/usr.bin/gzip/gzip.c       Mon Apr 27 05:44:09 2015        
(r282051)
+++ stable/10/usr.bin/gzip/gzip.c       Mon Apr 27 05:49:18 2015        
(r282052)
@@ -1,4 +1,4 @@
-/*     $NetBSD: gzip.c,v 1.106 2014/10/18 08:33:30 snj Exp $   */
+/*     $NetBSD: gzip.c,v 1.108 2015/04/15 02:29:12 christos Exp $      */
 
 /*-
  * Copyright (c) 1997, 1998, 2003, 2004, 2006 Matthew R. Green
@@ -158,7 +158,7 @@ static suffixes_t suffixes[] = {
 #define NUM_SUFFIXES (sizeof suffixes / sizeof suffixes[0])
 #define SUFFIX_MAXLEN  30
 
-static const char      gzip_version[] = "FreeBSD gzip 20141022";
+static const char      gzip_version[] = "FreeBSD gzip 20150413";
 
 #ifndef SMALL
 static const char      gzip_copyright[] = \
@@ -1354,7 +1354,7 @@ file_uncompress(char *file, char *outfil
 #ifndef SMALL
        ssize_t rv;
        time_t timestamp = 0;
-       unsigned char name[PATH_MAX + 1];
+       char name[PATH_MAX + 1];
 #endif
 
        /* gather the old name info */
@@ -1409,21 +1409,33 @@ file_uncompress(char *file, char *outfil
                timestamp = ts[3] << 24 | ts[2] << 16 | ts[1] << 8 | ts[0];
 
                if (header1[3] & ORIG_NAME) {
-                       rbytes = pread(fd, name, sizeof name, GZIP_ORIGNAME);
+                       rbytes = pread(fd, name, sizeof(name) - 1, 
GZIP_ORIGNAME);
                        if (rbytes < 0) {
                                maybe_warn("can't read %s", file);
                                goto lose;
                        }
-                       if (name[0] != 0) {
+                       if (name[0] != '\0') {
+                               char *dp, *nf;
+
+                               /* Make sure that name is NUL-terminated */
+                               name[rbytes] = '\0';
+
+                               /* strip saved directory name */
+                               nf = strrchr(name, '/');
+                               if (nf == NULL)
+                                       nf = name;
+                               else
+                                       nf++;
+
                                /* preserve original directory name */
-                               char *dp = strrchr(file, '/');
+                               dp = strrchr(file, '/');
                                if (dp == NULL)
                                        dp = file;
                                else
                                        dp++;
                                snprintf(outfile, outsize, "%.*s%.*s",
                                                (int) (dp - file), 
-                                               file, (int) rbytes, name);
+                                               file, (int) rbytes, nf);
                        }
                }
        }
@@ -2110,7 +2122,7 @@ static void
 display_license(void)
 {
 
-       fprintf(stderr, "%s (based on NetBSD gzip 20141018)\n", gzip_version);
+       fprintf(stderr, "%s (based on NetBSD gzip 20150113)\n", gzip_version);
        fprintf(stderr, "%s\n", gzip_copyright);
        exit(0);
 }
_______________________________________________
svn-src-stable-10@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-stable-10
To unsubscribe, send any mail to "svn-src-stable-10-unsubscr...@freebsd.org"

Reply via email to