PERFORCE change 176827 for review

Garrett Cooper gcooper at FreeBSD.org
Mon Apr 12 09:54:16 UTC 2010


http://p4web.freebsd.org/@@176827?ac=10

Change 176827 by gcooper at gcooper-bayonetta on 2010/04/12 09:53:17

	Fix two bugs and add debug code in unpack.
	
	1. Forgot to add archive_read(3).
	2. Didn't delete leftover arguments from previous tar(1) invocation.
	3. Add psuedo-tar(1)-like printouts for determining what was extracted (X) and what was skipped (S).

Affected files ...

.. //depot/projects/soc2007/gcooper-pkg_install-enhancements-simplified/usr.sbin/pkg_install/add/perform.c#4 edit
.. //depot/projects/soc2007/gcooper-pkg_install-enhancements-simplified/usr.sbin/pkg_install/lib/file.c#9 edit

Differences ...

==== //depot/projects/soc2007/gcooper-pkg_install-enhancements-simplified/usr.sbin/pkg_install/add/perform.c#4 (text+ko) ====

@@ -63,7 +63,6 @@
     Package Plist;
     char pkg_fullname[FILENAME_MAX];
     char playpen[FILENAME_MAX];
-    char extract_contents[FILENAME_MAX];
     char *extract;
     const char *where_to;
     FILE *cfile;
@@ -129,8 +128,7 @@
 		    warnx("can't stat package file '%s'", pkg_fullname);
 		    goto bomb;
 		}
-		sprintf(extract_contents, "--fast-read %s", CONTENTS_FNAME);
-		extract = extract_contents;
+		extract = CONTENTS_FNAME;
 	    }
 	    else {
 		extract = NULL;

==== //depot/projects/soc2007/gcooper-pkg_install-enhancements-simplified/usr.sbin/pkg_install/lib/file.c#9 (text+ko) ====

@@ -355,8 +355,17 @@
 	if (file_expr == NULL || strcmp("*", file_expr) == 0)
 		extract_whole_archive = TRUE;
 
+	if (Verbose) {
+		if (extract_whole_archive)
+			printf("%s: will extract whole archive\n", __func__);
+		else
+			printf("%s: will extract files that match: %s\n",
+			    __func__, file_expr);
+	}
+
 	pkg_name_humanized = strcmp(pkg, "-") == 0 ? "(stdin)" : pkg;
 
+	archive = archive_read_new();
 	archive_read_support_compression_all(archive);
 	archive_read_support_format_tar(archive);
 
@@ -388,7 +397,14 @@
 					    "%s", __func__, pkg_name_humanized,
 					    error);
 				}
+				if (Verbose) {
+					printf("X - %s\n",
+					    archive_entry_pathname(archive_entry));
+				}
 
+			} else if (Verbose) {
+				printf("S - %s\n",
+				    archive_entry_pathname(archive_entry));
 			}
 
 		}


More information about the p4-projects mailing list