PERFORCE change 178128 for review

Garrett Cooper gcooper at FreeBSD.org
Wed May 12 00:00:27 UTC 2010


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

Change 178128 by gcooper at starr-bastion on 2010/05/11 23:59:48

	
	Push tar-like -X support into pkg_create(8) again.

Affected files ...

.. //depot/projects/soc2007/gcooper-pkg_install-enhancements-simplified/usr.sbin/pkg_install/create/Makefile#5 edit
.. //depot/projects/soc2007/gcooper-pkg_install-enhancements-simplified/usr.sbin/pkg_install/create/perform.c#16 edit
.. //depot/projects/soc2007/gcooper-pkg_install-enhancements-simplified/usr.sbin/pkg_install/create/tar_bsdtar_platform.h#1 add
.. //depot/projects/soc2007/gcooper-pkg_install-enhancements-simplified/usr.sbin/pkg_install/create/tar_config.h#1 add
.. //depot/projects/soc2007/gcooper-pkg_install-enhancements-simplified/usr.sbin/pkg_install/create/tar_line_reader.c#1 add
.. //depot/projects/soc2007/gcooper-pkg_install-enhancements-simplified/usr.sbin/pkg_install/create/tar_line_reader.h#1 add
.. //depot/projects/soc2007/gcooper-pkg_install-enhancements-simplified/usr.sbin/pkg_install/create/tar_matching.c#1 add
.. //depot/projects/soc2007/gcooper-pkg_install-enhancements-simplified/usr.sbin/pkg_install/create/tar_matching.h#1 add
.. //depot/projects/soc2007/gcooper-pkg_install-enhancements-simplified/usr.sbin/pkg_install/create/tar_pathmatch.c#1 add
.. //depot/projects/soc2007/gcooper-pkg_install-enhancements-simplified/usr.sbin/pkg_install/create/tar_pathmatch.h#1 add

Differences ...

==== //depot/projects/soc2007/gcooper-pkg_install-enhancements-simplified/usr.sbin/pkg_install/create/Makefile#5 (text+ko) ====

@@ -3,6 +3,8 @@
 PROG=	pkg_create
 SRCS=	main.c perform.c pl.c
 
+SRCS+=	tar_line_reader.c tar_matching.c tar_pathmatch.c 
+
 WARNS?=	3
 WFORMAT?=	1
 

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

@@ -19,8 +19,9 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/usr.sbin/pkg_install/create/perform.c,v 1.85 2010/04/23 11:07:43 flz Exp $");
+__FBSDID("$FreeBSD$");
 
+/* XXX (gcooper): needs to come before sys/stat.h for stat(2). */
 #include <sys/types.h>
 #include <sys/mman.h>
 #include <sys/stat.h>
@@ -36,6 +37,7 @@
 
 #include <archive.h>
 #include <archive_entry.h>
+#include "tar_matching.h"
 
 #include <pkg.h>
 #include "create.h"
@@ -374,6 +376,7 @@
 	struct stat *sb;
 	struct archive *archive = NULL;
 	struct archive_entry *entry = NULL;
+        struct lafe_matching *match_patterns = NULL;
 	char *destbase = NULL;
 	char *destfile = NULL;
 	char *prefix = NULL;
@@ -432,6 +435,20 @@
 		error = archive_error_string(archive);
 	else {
 
+                /* 
+                 * XXX (gcooper): replace these bits with a proper callback
+                 * via archive(3) when the time rolls around.
+                 */
+                if (ExcludeFrom != NULL) {
+                        if (lafe_exclude_from_file(&match_patterns,
+                            ExcludeFrom) < 0)
+                                error = strerror(EINVAL);
+                }
+
+        }
+
+        if (error == NULL) { 
+
 		switch(Zipper) {
 		case BZIP2:
 			cname = "bzipp";
@@ -465,14 +482,6 @@
 		error = archive_error_string(archive);
 	if (error != NULL) {
 
-#ifdef NOTYET
-		/* 
-		 * XXX (gcooper): Need to fill bits for the exclude
-		 * stuff
-		 */
-		if (ExcludeFrom != NULL) ;
-#endif
-
 		if (Verbose)
 			printf("Creating %sed tar ball in '%s'\n",
 			    cname, tball);
@@ -544,7 +553,9 @@
 				    PATH_MAX)
 					error = strerror(ENAMETOOLONG);
 
-			ADD_FILE(srcfile, destfile, archive_entry_open_flags);
+                        if (lafe_excluded(match_patterns, srcfile) != 0)
+        			ADD_FILE(srcfile, destfile,
+                                    archive_entry_open_flags);
 
 			break;
 
@@ -683,16 +694,11 @@
 			warn("%s: failed to remove incomplete package - '%s'",
 			    __func__, tball);
 	}
-	if (destbase != NULL)
-		free(destbase);
-	if (destfile != NULL)
-		free(destfile);
-	if (srcbase != NULL)
-		free(srcbase);
-	if (srcfile != NULL)
-		free(srcfile);
-	if (destfile != NULL)
-		free(destfile);
+        free(destbase);
+        free(destfile);
+        free(srcbase);
+        free(srcfile);
+        free(destfile);
 
 }
 


More information about the p4-projects mailing list