[alt.sources] Patch#2 for unzipbsd

michaele@vice.ICO.TEK.COM (Michael Enkelis) (05/18/89)

Here is PATCH#2 for unzipbsd.c

This will allow a "list" of the zip file with time and date
information, etc for each file.
This is a DIFF listing, feed to patch.

#! /bin/sh
# This is a shell archive, meaning:
# 1. Remove everything above the #! /bin/sh line.
# 2. Save the resulting text in a file.
# 3. Execute the file with /bin/sh (not csh) to create the files:
#	unzipbsd.P2
# This archive created: Wed May 17 13:25:23 1989
export PATH; PATH=/bin:$PATH
echo shar: extracting "'unzipbsd.P2'" '(5383 characters)'
if test -f 'unzipbsd.P2'
then
	echo shar: will not over-write existing file "'unzipbsd.P2'"
else
sed 's/^	X//' << \SHAR_EOF > 'unzipbsd.P2'
	X269a270
	X> int extract   = 1;		/* Extract contents */
	X271a273
	X> int list_zip  = 0;		/* list contents only */
	X274a277,280
	X> int numbad =0;
	X> int Total_files =0;
	X> long Total_bytes =0;
	X> long Total_length =0;
	X281c287
	X< 	if (test_zip)
	X---
	X> 	if (!extract)
	X407c413
	X< 	if (!test_zip)
	X---
	X> 	if (extract)
	X769,771c775,777
	X< 			printf(" Testing: %-12s ", filename);
	X< 			else
	X< 			printf(" Extracting: %-12s ", filename);
	X---
	X> 				printf("Testing: %-12s ", filename);
	X> 			if (extract)
	X> 				printf(" Extracting: %-12s ", filename);
	X779,781c785,787
	X< 			printf(" Testing: %-12s ", filename);
	X< 			else
	X< 			printf("UnShrinking: %-12s ", filename);
	X---
	X> 				printf("Testing: %-12s ", filename);
	X> 			if (extract)
	X> 				printf("UnShrinking: %-12s ", filename);
	X791,793c797,799
	X< 			printf(" Testing: %-12s ", filename);
	X< 			else
	X< 			printf("  Expanding: %-12s ", filename);
	X---
	X> 				printf("Testing: %-12s ", filename);
	X> 			if (extract)
	X> 				printf("  Expanding: %-12s ", filename);
	X815,819c821,831
	X<         if (crc32val != lrec.crc32)
	X<               printf(" Bad CRC %08lx  (should be %08lx)", lrec.crc32, crc32val);
	X< 	else
	X< 	if (verbose)
	X< 		printf(" Passed, CRC = %08lx", lrec.crc32);
	X---
	X> 	if (!list_zip) {
	X> 	  if (crc32val != lrec.crc32) {
	X> 		numbad++;
	X> 		printf(" Bad");
	X> 		if(verbose)
	X> 		printf(", CRC %08lx  (should be %08lx)", lrec.crc32, crc32val);
	X> 	  } else {
	X> 		printf(" Ok");
	X> 		if (verbose)
	X> 		printf(", CRC = %08lx", lrec.crc32);
	X> 	  }
	X820a833
	X> 	}
	X868a882,891
	X> 	byte	yr, mo, dy;	/* parts of a date */
	X> 	byte	hh, mm, ss;	/* parts of a time */
	X> 
	X> 	static char    *mon[] =	/* month abbreviations */
	X> 	{
	X> 	 "Jan", "Feb", "Mar", "Apr",
	X> 	 "May", "Jun", "Jul", "Aug",
	X> 	 "Sep", "Oct", "Nov", "Dec"
	X> 	};
	X> 
	X882a906,913
	X> 	yr = (lrec.last_mod_file_date >> 9) & 0x7f;	/* dissect the date */
	X> 	mo = (lrec.last_mod_file_date >> 5) & 0x0f;
	X> 	dy = lrec.last_mod_file_date & 0x1f;
	X> 
	X> 	hh = (lrec.last_mod_file_time >> 11) & 0x1f;	/* dissect the time */
	X> 	mm = (lrec.last_mod_file_time >> 5) & 0x3f;
	X> 	ss = (lrec.last_mod_file_time & 0x1f) * 2;
	X> 
	X888,889c919,923
	X< 	printf("Mod time	: %d\n",lrec.last_mod_file_time);
	X< 	printf("Mod date	: %d\n",lrec.last_mod_file_date);
	X---
	X> 	printf("Mod time	:");
	X> 		printf("%2d:%02d%c\n",
	X> 		       (hh > 12 ? hh - 12 : hh), mm, (hh > 11 ? 'p' : 'a'));
	X> 	printf("Mod date	:");
	X> 		printf("%2d %3s %02d\n", dy, mon[mo - 1], (yr + 80) % 100);
	X907a942,951
	X> 	byte	yr, mo, dy;	/* parts of a date */
	X> 	byte	hh, mm, ss;	/* parts of a time */
	X> 
	X> 	static char    *mon[] =	/* month abbreviations */
	X> 	{
	X> 	 "Jan", "Feb", "Mar", "Apr",
	X> 	 "May", "Jun", "Jul", "Aug",
	X> 	 "Sep", "Oct", "Nov", "Dec"
	X> 	};
	X> 
	X930a975,982
	X> 	yr = (rec.last_mod_file_date >> 9) & 0x7f;	/* dissect the date */
	X> 	mo = (rec.last_mod_file_date >> 5) & 0x0f;
	X> 	dy = rec.last_mod_file_date & 0x1f;
	X> 
	X> 	hh = (rec.last_mod_file_time >> 11) & 0x1f;	/* dissect the time */
	X> 	mm = (rec.last_mod_file_time >> 5) & 0x3f;
	X> 	ss = (rec.last_mod_file_time & 0x1f) * 2;
	X> 
	X937,938c989,993
	X< 	printf("Mod time	: %d\n",rec.last_mod_file_time);
	X< 	printf("Mod date	: %d\n",rec.last_mod_file_date);
	X---
	X> 	printf("Mod time	:");
	X> 		printf("%2d:%02d%c\n",
	X> 		       (hh > 12 ? hh - 12 : hh), mm, (hh > 11 ? 'p' : 'a'));
	X> 	printf("Mod date	:");
	X> 		printf("%2d %3s %02d\n", dy, mon[mo - 1], (yr + 80) % 100);
	X949a1005,1028
	X> 
	X> 	if (list_zip) {
	X> 	Total_files++;
	X> 	Total_bytes += rec.uncompressed_size;
	X> 	Total_length += rec.compressed_size;
	X> 
	X> 	printf("%-12s  %8d  ", filename,rec.uncompressed_size);
	X> 	if (verbose) {
	X> 		printf("%8d  ",rec.compressed_size);
	X> 		if (rec.compressed_size)
	X> 			printf("%3d%%  ",100L - (100L * rec.compressed_size)/
	X> 				rec.uncompressed_size);
	X> 		else
	X> 			printf("---   ");
	X> 	}
	X> 
	X> 	printf("%2d %3s %02d", dy, mon[mo - 1], (yr + 80) % 100);
	X> 
	X> 	if (verbose)
	X> 		printf("  %2d:%02d%c",
	X> 		       (hh > 12 ? hh - 12 : hh), mm, (hh > 11 ? 'p' : 'a'));
	X> 	printf("\n");
	X> 	}
	X> 
	X982a1062,1071
	X> 	if (list_zip) {
	X> 	 if (verbose) {
	X> 	 printf("\nName          Length    Size now   SF   Date       Time");
	X> 	 printf("\n============  ========  ========  ====  =========  ========\n");
	X> 	 } else {
	X> 	 printf("\nName          Length    Date");
	X> 	 printf("\n============  ========  =========\n");
	X> 	 }
	X> 	}
	X> 
	X996a1086,1111
	X> 			if (test_zip) {
	X> 			if (numbad < 1)
	X> 				printf("No errors detected\n");
	X> 			else
	X> 			if (numbad == 1)
	X> 				printf("One error detected\n");
	X> 			else
	X> 				printf("%d errors detected\n",numbad);
	X> 			}
	X> 			if (list_zip) {
	X> 			 if (verbose) {
	X> 	 		 printf("        ====  ========  ========  ====  \n");
	X> 			 printf("Total:  %4d  %8d  %8d  ",
	X> 				Total_files,Total_bytes,Total_length);
	X> 			 if (Total_length)
	X> 				printf("%3d%%\n", 100 - (100 * Total_length)/
	X> 					Total_bytes);
	X> 			else
	X> 				printf("---\n");
	X> 
	X> 			 } else {
	X> 			 printf("        ====  ========\n");
	X> 			 printf("Total:  %4d  %8d\n",
	X> 				Total_files,Total_bytes);
	X> 			 }
	X> 			}
	X1048c1163
	X< 	while ((c = getopt (argc, argv, "dtv")) != EOF)
	X---
	X> 	while ((c = getopt (argc, argv, "dltv")) != EOF)
	X1052c1167,1168
	X< 		case 't':	test_zip++; break;
	X---
	X> 		case 'l':	list_zip =1;extract =0; break;
	X> 		case 't':	test_zip =1;extract =0; break;
	X1114c1230
	X< 	printf("Usage:	UnZip -htv FILE[.zip]\n\n");
	X---
	X> 	printf("Usage:	UnZip -hltv FILE[.zip]\n\n");
	X1115a1232
	X> 	printf("  -l    List zip archive.\n");
SHAR_EOF
if test 5383 -ne "`wc -c < 'unzipbsd.P2'`"
then
	echo shar: error transmitting "'unzipbsd.P2'" '(should have been 5383 characters)'
fi
fi # end of overwriting check
#	End of shell archive
exit 0
-- 
 _ _ _                          __
' ) ) )      /          /)     /  `       /      /)	Michael Enkelis
 / / / o _. /_  __. _  //     /--   __   /_  _  // o _ 	tektronix!vice!michaele
/ ' (_(_(__/ /_(_(_(<_(/_    (___, /) )_/ <_(<_(/_(_/_)_    (503) 627-4099