From owner-p4-projects@FreeBSD.ORG Sat Jun 12 23:23:23 2010 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id EB7721065675; Sat, 12 Jun 2010 23:23:22 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AFBE01065673 for ; Sat, 12 Jun 2010 23:23:22 +0000 (UTC) (envelope-from jlaffaye@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 9C8E98FC08 for ; Sat, 12 Jun 2010 23:23:22 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id o5CNNLo6088212 for ; Sat, 12 Jun 2010 23:23:21 GMT (envelope-from jlaffaye@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id o5CNNL2H088210 for perforce@freebsd.org; Sat, 12 Jun 2010 23:23:21 GMT (envelope-from jlaffaye@FreeBSD.org) Date: Sat, 12 Jun 2010 23:23:21 GMT Message-Id: <201006122323.o5CNNL2H088210@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jlaffaye@FreeBSD.org using -f From: Julien Laffaye To: Perforce Change Reviews Precedence: bulk Cc: Subject: PERFORCE change 179560 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 12 Jun 2010 23:23:23 -0000 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); }