PERFORCE change 179560 for review
Julien Laffaye
jlaffaye at FreeBSD.org
Sat Jun 12 23:23:23 UTC 2010
http://p4web.freebsd.org/@@179560?ac=10
Change 179560 by jlaffaye at 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);
}
More information about the p4-projects
mailing list