bin/166895: commit references a PR

dfilter service dfilter at FreeBSD.ORG
Fri Apr 13 06:20:13 UTC 2012


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

From: dfilter at FreeBSD.ORG (dfilter service)
To: bug-followup at 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-all at freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe at freebsd.org"
 


More information about the freebsd-bugs mailing list