The following reply was made to PR bin/166895; it has been noted by GNATS.

From: dfil...@freebsd.org (dfilter service)
To: bug-follo...@freebsd.org
Cc:  
Subject: Re: bin/166895: commit references a PR
Date: Fri, 13 Apr 2012 06:16:02 +0000 (UTC)

 Author: kevlo
 Date: Fri Apr 13 06:15:51 2012
 New Revision: 234206
 URL: http://svn.freebsd.org/changeset/base/234206
 
 Log:
   Partially implement zipinfo (-Z) support.
   This fixes some test failures seen with perl 5.12 and 5.14.
   
   PR:  bin/166895
   Submitted by:        swills
   MFC after:   3 days
 
 Modified:
   head/usr.bin/unzip/unzip.c
 
 Modified: head/usr.bin/unzip/unzip.c
 ==============================================================================
 --- head/usr.bin/unzip/unzip.c Fri Apr 13 06:13:37 2012        (r234205)
 +++ head/usr.bin/unzip/unzip.c Fri Apr 13 06:15:51 2012        (r234206)
 @@ -65,6 +65,7 @@ static int            q_opt;         /* quiet */
  static int             t_opt;         /* test */
  static int             u_opt;         /* update */
  static int             v_opt;         /* verbose/list */
 +static int             Z1_opt;        /* zipinfo mode list files only */
  
  /* time when unzip started */
  static time_t          now;
 @@ -72,6 +73,9 @@ static time_t                 now;
  /* debug flag */
  static int             unzip_debug;
  
 +/* zipinfo mode */
 +static int             zipinfo_mode;
 +
  /* running on tty? */
  static int             tty;
  
 @@ -802,17 +806,22 @@ list(struct archive *a, struct archive_e
        mtime = archive_entry_mtime(e);
        strftime(buf, sizeof(buf), "%m-%d-%g %R", localtime(&mtime));
  
 -      if (v_opt == 1) {
 -              printf(" %8ju  %s   %s\n",
 -                  (uintmax_t)archive_entry_size(e),
 -                  buf, archive_entry_pathname(e));
 -      } else if (v_opt == 2) {
 -              printf("%8ju  Stored  %7ju   0%%  %s  %08x  %s\n",
 -                  (uintmax_t)archive_entry_size(e),
 -                  (uintmax_t)archive_entry_size(e),
 -                  buf,
 -                  0U,
 -                  archive_entry_pathname(e));
 +      if (!zipinfo_mode) {
 +              if (v_opt == 1) {
 +                      printf(" %8ju  %s   %s\n",
 +                          (uintmax_t)archive_entry_size(e),
 +                          buf, archive_entry_pathname(e));
 +              } else if (v_opt == 2) {
 +                      printf("%8ju  Stored  %7ju   0%%  %s  %08x  %s\n",
 +                          (uintmax_t)archive_entry_size(e),
 +                          (uintmax_t)archive_entry_size(e),
 +                          buf,
 +                          0U,
 +                          archive_entry_pathname(e));
 +              }
 +      } else {
 +              if (Z1_opt)
 +                      printf("%s\n",archive_entry_pathname(e));
        }
        ac(archive_read_data_skip(a));
  }
 @@ -870,14 +879,16 @@ unzip(const char *fn)
        ac(archive_read_support_format_zip(a));
        ac(archive_read_open_fd(a, fd, 8192));
  
 -      if (!p_opt && !q_opt)
 -              printf("Archive:  %s\n", fn);
 -      if (v_opt == 1) {
 -              printf("  Length     Date   Time    Name\n");
 -              printf(" --------    ----   ----    ----\n");
 -      } else if (v_opt == 2) {
 -              printf(" Length   Method    Size  Ratio   Date   Time   CRC-32  
  Name\n");
 -              printf("--------  ------  ------- -----   ----   ----   ------  
  ----\n");
 +      if (!zipinfo_mode) {
 +              if (!p_opt && !q_opt)
 +                      printf("Archive:  %s\n", fn);
 +              if (v_opt == 1) {
 +                      printf("  Length     Date   Time    Name\n");
 +                      printf(" --------    ----   ----    ----\n");
 +              } else if (v_opt == 2) {
 +                      printf(" Length   Method    Size  Ratio   Date   Time   
CRC-32    Name\n");
 +                      printf("--------  ------  ------- -----   ----   ----   
------    ----\n");
 +              }
        }
  
        total_size = 0;
 @@ -888,28 +899,35 @@ unzip(const char *fn)
                if (ret == ARCHIVE_EOF)
                        break;
                ac(ret);
 -              if (t_opt)
 -                      error_count += test(a, e);
 -              else if (v_opt)
 -                      list(a, e);
 -              else if (p_opt || c_opt)
 -                      extract_stdout(a, e);
 -              else
 -                      extract(a, e);
 +              if (!zipinfo_mode) {
 +                      if (t_opt)
 +                              error_count += test(a, e);
 +                      else if (v_opt)
 +                              list(a, e);
 +                      else if (p_opt || c_opt)
 +                              extract_stdout(a, e);
 +                      else
 +                              extract(a, e);
 +              } else {
 +                      if (Z1_opt)
 +                              list(a, e);
 +              }
  
                total_size += archive_entry_size(e);
                ++file_count;
        }
  
 -      if (v_opt == 1) {
 -              printf(" --------                   -------\n");
 -              printf(" %8ju                   %ju file%s\n",
 -                  total_size, file_count, file_count != 1 ? "s" : "");
 -      } else if (v_opt == 2) {
 -              printf("--------          -------  ---                          
  -------\n");
 -              printf("%8ju          %7ju   0%%                            %ju 
file%s\n",
 -                  total_size, total_size, file_count,
 -                  file_count != 1 ? "s" : "");
 +      if (zipinfo_mode) {
 +              if (v_opt == 1) {
 +                      printf(" --------                   -------\n");
 +                      printf(" %8ju                   %ju file%s\n",
 +                          total_size, file_count, file_count != 1 ? "s" : "");
 +              } else if (v_opt == 2) {
 +                      printf("--------          -------  ---                  
          -------\n");
 +                      printf("%8ju          %7ju   0%%                        
    %ju file%s\n",
 +                          total_size, total_size, file_count,
 +                          file_count != 1 ? "s" : "");
 +              }
        }
  
        ac(archive_read_close(a));
 @@ -933,7 +951,7 @@ static void
  usage(void)
  {
  
 -      fprintf(stderr, "usage: unzip [-aCcfjLlnopqtuv] [-d dir] [-x pattern] 
zipfile\n");
 +      fprintf(stderr, "usage: unzip [-aCcfjLlnopqtuvZ1] [-d dir] [-x pattern] 
zipfile\n");
        exit(1);
  }
  
 @@ -943,8 +961,11 @@ getopts(int argc, char *argv[])
        int opt;
  
        optreset = optind = 1;
 -      while ((opt = getopt(argc, argv, "aCcd:fjLlnopqtuvx:")) != -1)
 +      while ((opt = getopt(argc, argv, "aCcd:fjLlnopqtuvx:Z1")) != -1)
                switch (opt) {
 +              case '1':
 +                      Z1_opt = 1;
 +                      break;
                case 'a':
                        a_opt = 1;
                        break;
 @@ -995,6 +1016,9 @@ getopts(int argc, char *argv[])
                case 'x':
                        add_pattern(&exclude, optarg);
                        break;
 +              case 'Z':
 +                      zipinfo_mode = 1;
 +                      break;
                default:
                        usage();
                }
 @@ -1024,6 +1048,15 @@ main(int argc, char *argv[])
         */
        nopts = getopts(argc, argv);
  
 +      /* 
 +       * When more of the zipinfo mode options are implemented, this
 +       * will need to change.
 +       */
 +      if (zipinfo_mode && !Z1_opt) {
 +              printf("Zipinfo mode needs additional options\n");
 +              exit(1);
 +      }
 +
        if (argc <= nopts)
                usage();
        zipfile = argv[nopts++];
 _______________________________________________
 svn-src-...@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"
 
_______________________________________________
freebsd-bugs@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-bugs
To unsubscribe, send any mail to "freebsd-bugs-unsubscr...@freebsd.org"

Reply via email to