Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 12 Jun 2010 23:23:21 GMT
From:      Julien Laffaye <jlaffaye@FreeBSD.org>
To:        Perforce Change Reviews <perforce@FreeBSD.org>
Subject:   PERFORCE change 179560 for review
Message-ID:  <201006122323.o5CNNL2H088210@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://p4web.freebsd.org/@@179560?ac=10

Change 179560 by jlaffaye@jlaffaye-chulak on 2010/06/12 23:23:10

	Completed complete package creation.
	Cleanup, style(9).

Affected files ...

.. //depot/projects/soc2010/pkg_complete/usr.sbin/pkg_install/complete/complete.h#2 edit
.. //depot/projects/soc2010/pkg_complete/usr.sbin/pkg_install/complete/main.c#2 edit
.. //depot/projects/soc2010/pkg_complete/usr.sbin/pkg_install/complete/perform.c#2 edit

Differences ...

==== //depot/projects/soc2010/pkg_complete/usr.sbin/pkg_install/complete/complete.h#2 (text+ko) ====

@@ -1,16 +1,3 @@
-#define deps_new(d)					\
-		d.deps = malloc(sizeof(Package)*100);	\
-		d.size = 100;				\
-		d.len = 0;				\
-
-#define deps_add(d, p)							\
-		if(d.size <= d.len) {					\
-			d.size += 100;					\
-			d.deps = realloc(d.deps, sizeof(Package)*size);	\
-		}							\
-		d.deps[d.len] = p;					\
-		d.len++;						\
-
 struct list_deps {
 	Package *pkgs;
 	size_t size;

==== //depot/projects/soc2010/pkg_complete/usr.sbin/pkg_install/complete/main.c#2 (text+ko) ====

@@ -17,24 +17,24 @@
 	char *pkg, *dir, out[PATH_MAX];
 	pkg_wrap(PKG_INSTALL_VERSION, argv);
 
-	if(argc != 3) {
+	if (argc != 3) {
 		usage();
 		return 1;
 	}
 
-	if((pkg = basename(argv[1])) == NULL)
+	if ((pkg = basename(argv[1])) == NULL)
 		err(1, "basename(%s)", argv[1]);
 
-	if((dir = dirname(argv[1])) == NULL)
+	if ((dir = dirname(argv[1])) == NULL)
 		err(1, "dirname(%s)", argv[1]);
-	
-	if((realpath(argv[2], out)) == NULL)
+
+	if ((realpath(argv[2], out)) == NULL)
 		err(1, "realpath(%s)", argv[2]);
 
-	if(chdir(dir) == -1)
+	if (chdir(dir) == -1)
 		err(1, "chdir(%s)", dir);
 
-	return pkg_do(pkg, out);
+	return (pkg_do(pkg, out));
 }
 
 static void

==== //depot/projects/soc2010/pkg_complete/usr.sbin/pkg_install/complete/perform.c#2 (text+ko) ====

@@ -25,7 +25,7 @@
 	size_t r;
 	int fd, err = 0;
 
-	if((ext = strrchr(pkgname, '.')) == NULL)
+	if ((ext = strrchr(pkgname, '.')) == NULL)
 		warn("strrchr()");
 
 	deps.size = 100;
@@ -41,18 +41,19 @@
 	archive_write_open_filename(a, outname);
 
 	entry = archive_entry_new();
-	/* TODO: add a special (identifier) file */
-#if 0
+
+	/*
+	 * Add a special file named "+PKG_COMPLETE"
+	 * The existence of this file in the package archive can be tested
+	 * to determine if the package is a complete or regular package.
+	 */
 	archive_entry_set_pathname(entry, "+PKG_COMPLETE");
-	fd = open("/dev/null", O_RDONLY);
-	fstat(fd, &st);
-	archive_entry_copy_stat(entry, &st);
+	archive_entry_set_filetype(entry, AE_IFREG);
+	archive_entry_set_size(entry, 0);
 	archive_write_header(a, entry);
-	r = read(fd, buf, sizeof(buf));
-	archive_write_data(a, buf, r);
 	archive_entry_clear(entry);
-#endif
-	for(size_t i = 0; i < deps.len; i++) {
+
+	for (size_t i = 0; i < deps.len; i++) {
 		snprintf(fname, sizeof(fname), "%s%s",
 			 deps.pkgs[i].name, ext);
 		if((fd = open(fname, O_RDONLY)) < 0) {
@@ -64,10 +65,11 @@
 		archive_entry_copy_stat(entry, &st);
 		archive_entry_set_pathname(entry, fname);
 		archive_write_header(a, entry);
-		r = read(fd, buf, sizeof(buf));
-		while ( r > 0 ) {
+		for (;;) {
+			r = read(fd, buf, sizeof(buf));
+			if (r <= 0)
+				break;
 			archive_write_data(a, buf, r);
-			r = read(fd, buf, sizeof(buf));
 		}
 		close(fd);
 		archive_entry_clear(entry);
@@ -75,10 +77,10 @@
 	archive_entry_free(entry);
 	archive_write_finish(a);
 
-	for(size_t i = 0; i < deps.len; i++)
+	for (size_t i = 0; i < deps.len; i++)
 		free_plist(&deps.pkgs[i]);
 	free(deps.pkgs);
-	return err;
+	return (err);
 }
 
 static int
@@ -94,7 +96,7 @@
 	int err = 0;
 	short found = 0;
 
-	if((plist_size = unpack_to_buffer(pkgname, CONTENTS_FNAME, &plist_buf))
+	if ((plist_size = unpack_to_buffer(pkgname, CONTENTS_FNAME, &plist_buf))
 	    == 0) {
 		warn("unpack_to_buffer()");
 		err = 1;
@@ -104,7 +106,7 @@
 		free(plist_buf);
 
 		/* Register the current package */
-		if(deps->size <= deps->len) {
+		if (deps->size <= deps->len) {
 			deps->size *= 2;
 			deps->pkgs = realloc(deps->pkgs,
 					     sizeof(Package)*(deps->size));
@@ -116,17 +118,17 @@
 		 * Get the dependencies of pkgname's dependencies,
 		 * if not already done.
 		 */
-		for(p = pkg.head; p; p = p->next) {
+		for (p = pkg.head; p; p = p->next) {
 			if(p->type == PLIST_PKGDEP) {
 				found = 0;
-				for(i=0; i < deps->len; i++) {
-					if(strcmp(deps->pkgs[i].name, 
+				for (i=0; i < deps->len; i++) {
+					if (strcmp(deps->pkgs[i].name, 
 						  p->name) == 0) {
 						found = 1;
 						break;
 					}
 				}
-				if(found == 0) {
+				if (found == 0) {
 					snprintf(fname, sizeof(fname),
 						"%s%s", p->name, ext);
 					err += pkg_get_deps(fname, ext, deps);
@@ -134,7 +136,7 @@
 			}
 		}
 	}
-	return err;
+	return (err);
 }
 
 static int
@@ -143,13 +145,13 @@
 	const Package *pkga = a;
 	const Package *pkgb = b;
 
-	if(pkg_depend_on(pkga, pkgb))
-		return 1;
+	if (pkg_depend_on(pkga, pkgb))
+		return (1);
 
-	if(pkg_depend_on(pkgb, pkga))
-		return -1;
+	if (pkg_depend_on(pkgb, pkga))
+		return (-1);
 
-	return 0;
+	return (0);
 }
 
 /* Returns 1 if pkga depends on pkgb, 0 otherwise */
@@ -157,10 +159,10 @@
 pkg_depend_on(const Package *pkga, const Package *pkgb)
 {
 	PackingList p;
-	for(p = pkga->head; p; p = p->next)
-		if(p->type == PLIST_PKGDEP)
-			if(strcmp(pkgb->name, p->name) == 0)
-				return 1;
+	for (p = pkga->head; p; p = p->next)
+		if (p->type == PLIST_PKGDEP)
+			if (strcmp(pkgb->name, p->name) == 0)
+				return (1);
 
-	return 0;
+	return (0);
 }



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201006122323.o5CNNL2H088210>