PERFORCE change 179820 for review
Julien Laffaye
jlaffaye at FreeBSD.org
Sat Jun 19 02:35:46 UTC 2010
http://p4web.freebsd.org/@@179820?ac=10
Change 179820 by jlaffaye at jlaffaye-chulak on 2010/06/19 02:34:57
Use Boolean type wherever applicable.
Check for memory allocation errors.
Affected files ...
.. //depot/projects/soc2010/pkg_complete/usr.sbin/pkg_install/complete/perform.c#5 edit
Differences ...
==== //depot/projects/soc2010/pkg_complete/usr.sbin/pkg_install/complete/perform.c#5 (text+ko) ====
@@ -12,7 +12,7 @@
static int pkg_get_deps(char *, char *, struct list_deps *);
static int pkg_sort_deps(const void *, const void *);
-static int pkg_depend_on(const Package *, const Package *);
+static Boolean pkg_depend_on(const Package *, const Package *);
int
pkg_do(char *pkgname, char *outname)
@@ -23,7 +23,7 @@
struct list_deps deps;
char fname[PATH_MAX], buf[1024], *ext;
ssize_t r;
- int fd, err = 0;
+ int fd, retcode = 0;
if ((ext = strrchr(pkgname, '.')) == NULL) {
warn("strrchr()");
@@ -33,6 +33,8 @@
deps.size = 100;
deps.len = 0;
deps.pkgs = malloc(sizeof(Package)*(deps.size));
+ if (deps.pkgs == NULL)
+ err(1, "malloc()");
if(pkg_get_deps(pkgname, ext, &deps) > 0)
return (1);
@@ -65,7 +67,7 @@
snprintf(fname, sizeof(fname), "%s%s", deps.pkgs[i].name, ext);
if ((fd = open(fname, O_RDONLY)) < 0) {
warn("open(%s)", fname);
- err = 1;
+ retcode = 1;
break;
}
fstat(fd, &st);
@@ -75,14 +77,14 @@
for (;;) {
if ((r = read(fd, buf, sizeof(buf))) == -1) {
warn("read()");
- err = 1;
+ retcode = 1;
break;
}
if (r <= 0)
break;
if (archive_write_data(a, buf, r) != r) {
warnx("%s", archive_error_string(a));
- err = 1;
+ retcode = 1;
break;
}
}
@@ -100,12 +102,12 @@
* An error at this level means that we failed to create the archive.
* Be nice and remove this useless file.
*/
- if (err != 0) {
+ if (retcode != 0) {
warnx("removing corrupted package file");
unlink(outname);
}
- return (err);
+ return (retcode);
}
/*
@@ -124,8 +126,8 @@
size_t i;
char *plist_buf;
char fname[PATH_MAX];
- int err = 0;
- short found = 0;
+ int retcode = 0;
+ Boolean found = 0;
if ((plist_size = unpack_to_buffer(pkgname, CONTENTS_FNAME, &plist_buf))
== -1) {
@@ -134,13 +136,19 @@
}
pkg.head = pkg.tail = NULL;
- read_plist_from_buffer(&pkg, plist_buf, plist_size);
+ retcode = read_plist_from_buffer(&pkg, plist_buf, plist_size);
free(plist_buf);
+ if (retcode != 0) {
+ warnx("unable to parse %s's plist", pkgname);
+ return (1);
+ }
/* Register the current package */
if (deps->size <= deps->len) {
deps->size *= 2;
deps->pkgs = realloc(deps->pkgs, sizeof(Package)*(deps->size));
+ if (deps->pkgs == NULL)
+ err(1, "realloc()");
}
deps->pkgs[deps->len] = pkg;
deps->len++;
@@ -151,22 +159,22 @@
*/
for (p = pkg.head; p; p = p->next) {
if (p->type == PLIST_PKGDEP) {
- found = 0;
+ found = FALSE;
for (i=0; i < deps->len; i++) {
if (strcmp(deps->pkgs[i].name, p->name) == 0) {
- found = 1;
+ found = TRUE;
break;
}
}
- if (found == 0) {
+ if (found == FALSE) {
snprintf(fname, sizeof(fname), "%s%s", p->name,
ext);
- err += pkg_get_deps(fname, ext, deps);
+ retcode += pkg_get_deps(fname, ext, deps);
}
}
}
- return (err);
+ return (retcode);
}
/*
@@ -189,15 +197,15 @@
return (0);
}
-/* Returns 1 if `pkga` depends on `pkgb`, 0 otherwise */
-static int
+/* Returns TRUE if `pkga` depends on `pkgb`, FALSE otherwise */
+static Boolean
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);
+ return (TRUE);
- return (0);
+ return (FALSE);
}
More information about the p4-projects
mailing list