PERFORCE change 178985 for review
Garrett Cooper
gcooper at FreeBSD.org
Sun May 30 23:53:42 UTC 2010
http://p4web.freebsd.org/@@178985?ac=10
Change 178985 by gcooper at gcooper-bayonetta on 2010/05/30 23:53:38
Purely style(9) fixes.
Affected files ...
.. //depot/projects/soc2007/gcooper-pkg_install-enhancements-simplified/lib/libpkg/file.c#18 edit
.. //depot/projects/soc2007/gcooper-pkg_install-enhancements-simplified/lib/libpkg/global.c#3 edit
.. //depot/projects/soc2007/gcooper-pkg_install-enhancements-simplified/lib/libpkg/match.c#3 edit
.. //depot/projects/soc2007/gcooper-pkg_install-enhancements-simplified/lib/libpkg/pen.c#6 edit
.. //depot/projects/soc2007/gcooper-pkg_install-enhancements-simplified/lib/libpkg/url.c#3 edit
Differences ...
==== //depot/projects/soc2007/gcooper-pkg_install-enhancements-simplified/lib/libpkg/file.c#18 (text+ko) ====
@@ -381,7 +381,7 @@
errno = serrno;
}
- return buf;
+ return (buf);
}
@@ -563,7 +563,7 @@
if (0 <= archive_fd)
close(archive_fd);
- return fd;
+ return (fd);
}
==== //depot/projects/soc2007/gcooper-pkg_install-enhancements-simplified/lib/libpkg/global.c#3 (text+ko) ====
@@ -28,4 +28,4 @@
Boolean Quiet = FALSE;
Boolean Fake = FALSE;
Boolean Force = FALSE;
-int Verbose = 0; /* Allow multiple levels of verbose. */
+int Verbose = 0; /* Allow multiple levels of verbose. */
==== //depot/projects/soc2007/gcooper-pkg_install-enhancements-simplified/lib/libpkg/match.c#3 (text+ko) ====
@@ -57,136 +57,154 @@
char **
matchinstalled(match_t MatchType, char **patterns, int *retval)
{
- int i, errcode, len;
- char *matched;
- const char *paths[2] = {LOG_DIR, NULL};
- static struct store *store = NULL;
- FTS *ftsp;
- FTSENT *f;
- Boolean *lmatched = NULL;
+ static struct store *store = NULL;
+ FTS *ftsp;
+ FTSENT *f;
+ char *matched;
+ const char *paths[2] = {LOG_DIR, NULL};
+ int i;
+ int errcode;
+ int len;
+ Boolean *lmatched = NULL;
+
+ store = storecreate(store);
+ if (store == NULL) {
+ if (retval != NULL)
+ *retval = 1;
+ return (NULL);
+ }
- store = storecreate(store);
- if (store == NULL) {
if (retval != NULL)
- *retval = 1;
- return NULL;
- }
+ *retval = 0;
+
+ if (!isdir(paths[0])) {
+ if (retval != NULL)
+ *retval = 1;
+ return (NULL);
+ }
+
+ /* Count number of patterns */
+ if (patterns != NULL) {
- if (retval != NULL)
- *retval = 0;
+ for (len = 0; patterns[len]; len++) ;
- if (!isdir(paths[0])) {
- if (retval != NULL)
- *retval = 1;
- return NULL;
- /* Not reached */
- }
+ lmatched = alloca(sizeof(*lmatched) * len);
+ if (lmatched == NULL) {
+ warn("%s(): alloca() failed", __func__);
+ if (retval != NULL)
+ *retval = 1;
+ return (NULL);
+ }
- /* Count number of patterns */
- if (patterns != NULL) {
- for (len = 0; patterns[len]; len++) {}
- lmatched = alloca(sizeof(*lmatched) * len);
- if (lmatched == NULL) {
- warnx("%s(): alloca() failed", __func__);
- if (retval != NULL)
- *retval = 1;
- return NULL;
- }
- } else
- len = 0;
+ } else
+ len = 0;
- for (i = 0; i < len; i++)
- lmatched[i] = FALSE;
+ for (i = 0; i < len; i++)
+ lmatched[i] = FALSE;
+
+ ftsp = fts_open((char * const *)(uintptr_t)paths,
+ FTS_LOGICAL | FTS_NOCHDIR | FTS_NOSTAT, fname_cmp);
+
+ if (ftsp != NULL) {
+
+ while ((f = fts_read(ftsp)) != NULL) {
+
+ if (f->fts_info == FTS_D && f->fts_level == 1) {
+
+ fts_set(ftsp, f, FTS_SKIP);
+ matched = NULL;
+ errcode = 0;
+
+ if (MatchType == MATCH_ALL)
+ matched = f->fts_name;
+ else
+ for (i = 0; patterns[i]; i++) {
+ errcode = pattern_match(
+ MatchType, patterns[i],
+ f->fts_name);
+ if (errcode == 1) {
+ matched = f->fts_name;
+ lmatched[i] = TRUE;
+ errcode = 0;
+ }
+ if (matched != NULL ||
+ errcode != 0)
+ break;
+ }
+
+ if (errcode == 0 && matched != NULL)
+ errcode = storeappend(store, matched);
+ if (errcode != 0) {
+ if (retval != NULL)
+ *retval = 1;
+ return (NULL);
+ }
- ftsp = fts_open((char * const *)(uintptr_t)paths, FTS_LOGICAL | FTS_NOCHDIR | FTS_NOSTAT, fname_cmp);
- if (ftsp != NULL) {
- while ((f = fts_read(ftsp)) != NULL) {
- if (f->fts_info == FTS_D && f->fts_level == 1) {
- fts_set(ftsp, f, FTS_SKIP);
- matched = NULL;
- errcode = 0;
- if (MatchType == MATCH_ALL)
- matched = f->fts_name;
- else
- for (i = 0; patterns[i]; i++) {
- errcode = pattern_match(MatchType, patterns[i], f->fts_name);
- if (errcode == 1) {
- matched = f->fts_name;
- lmatched[i] = TRUE;
- errcode = 0;
}
- if (matched != NULL || errcode != 0)
- break;
- }
- if (errcode == 0 && matched != NULL)
- errcode = storeappend(store, matched);
- if (errcode != 0) {
- if (retval != NULL)
- *retval = 1;
- return NULL;
- /* Not reached */
+
}
- }
+
+ fts_close(ftsp);
+
}
- fts_close(ftsp);
- }
- if (MatchType == MATCH_GLOB) {
- for (i = 0; i < len; i++)
- if (lmatched[i] == FALSE)
- storeappend(store, patterns[i]);
- }
+ /* XXX (gcooper): check for return code from storeappend here? */
+ if (MatchType == MATCH_GLOB)
+ for (i = 0; i < len; i++)
+ if (lmatched[i] == FALSE)
+ storeappend(store, patterns[i]);
- if (store->used == 0)
- return NULL;
- else
- return store->store;
+ if (store->used == 0)
+ return (NULL);
+ else
+ return (store->store);
}
int
pattern_match(match_t MatchType, char *pattern, const char *pkgname)
{
- int errcode = 0;
- const char *fname = pkgname;
- char basefname[PATH_MAX];
- char condchar = '\0';
- char *condition;
+ char basefname[PATH_MAX];
+ char condchar = '\0';
+ char *condition;
+ const char *ch;
+ const char *fname = pkgname;
+ int errcode = 0;
- /* do we have an appended condition? */
- condition = strpbrk(pattern, "<>=");
- if (condition) {
- const char *ch;
- /* yes, isolate the pattern from the condition ... */
- if (condition > pattern && condition[-1] == '!')
- condition--;
- condchar = *condition;
- *condition = '\0';
- /* ... and compare the name without version */
- ch = strrchr(fname, '-');
- if (ch && ch - fname < PATH_MAX) {
- strlcpy(basefname, fname, ch - fname + 1);
- fname = basefname;
+ /* do we have an appended condition? */
+ condition = strpbrk(pattern, "<>=");
+ if (condition) {
+ /* yes, isolate the pattern from the condition ... */
+ if (condition > pattern && condition[-1] == '!')
+ condition--;
+ condchar = *condition;
+ *condition = '\0';
+ /* ... and compare the name without version */
+ ch = strrchr(fname, '-');
+ if (ch != NULL && ch - fname < PATH_MAX) {
+ strlcpy(basefname, fname, ch - fname + 1);
+ fname = basefname;
+ }
}
- }
- switch (MatchType) {
- case MATCH_EREGEX:
- case MATCH_REGEX:
- errcode = rex_match(pattern, fname, MatchType == MATCH_EREGEX ? 1 : 0);
- break;
- case MATCH_NGLOB:
- case MATCH_GLOB:
- errcode = (csh_match(pattern, fname, 0) == 0) ? 1 : 0;
- break;
- case MATCH_EXACT:
- errcode = (strcmp(pattern, fname) == 0) ? 1 : 0;
- break;
- case MATCH_ALL:
- errcode = 1;
- break;
- default:
- break;
- }
+ switch (MatchType) {
+ case MATCH_EREGEX:
+ case MATCH_REGEX:
+ errcode = rex_match(pattern, fname,
+ MatchType == MATCH_EREGEX ? 1 : 0);
+ break;
+ case MATCH_NGLOB:
+ case MATCH_GLOB:
+ errcode = (csh_match(pattern, fname, 0) == 0) ? 1 : 0;
+ break;
+ case MATCH_EXACT:
+ errcode = (strcmp(pattern, fname) == 0) ? 1 : 0;
+ break;
+ case MATCH_ALL:
+ errcode = 1;
+ break;
+ default:
+ break;
+ }
/* loop over all appended conditions */
while (condition) {
@@ -366,53 +384,53 @@
int
isinstalledpkg(const char *name)
{
- int result;
- char *buf, *buf2;
- struct iip_memo *memo;
+ struct iip_memo *memo;
+ int result;
+ char *buf, *buf2;
+
+ LIST_FOREACH(memo, &iip_memo, iip_link) {
+ if (strcmp(memo->iip_name, name) == 0)
+ return (memo->iip_result);
+ }
- LIST_FOREACH(memo, &iip_memo, iip_link) {
- if (strcmp(memo->iip_name, name) == 0)
- return memo->iip_result;
- }
-
- buf2 = NULL;
- asprintf(&buf, "%s/%s", LOG_DIR, name);
- if (buf == NULL)
- goto errout;
- if (!isdir(buf) || access(buf, R_OK) == -1) {
- result = 0;
- } else {
- asprintf(&buf2, "%s/%s", buf, CONTENTS_FNAME);
- if (buf2 == NULL)
- goto errout;
+ buf2 = NULL;
+ asprintf(&buf, "%s/%s", LOG_DIR, name);
+ if (buf == NULL)
+ goto errout;
+ if (!isdir(buf) || access(buf, R_OK) == -1)
+ result = 0;
+ else {
+ asprintf(&buf2, "%s/%s", buf, CONTENTS_FNAME);
+ if (buf2 == NULL)
+ goto errout;
- if (!isfile(buf2) || access(buf2, R_OK) == -1)
- result = -1;
- else
- result = 1;
- }
+ if (!isfile(buf2) || access(buf2, R_OK) == -1)
+ result = -1;
+ else
+ result = 1;
+ }
- free(buf);
- buf = strdup(name);
- if (buf == NULL)
- goto errout;
- free(buf2);
- buf2 = NULL;
+ free(buf);
+ buf = strdup(name);
+ if (buf == NULL)
+ goto errout;
+ free(buf2);
+ buf2 = NULL;
- memo = malloc(sizeof *memo);
- if (memo == NULL)
- goto errout;
- memo->iip_name = buf;
- memo->iip_result = result;
- LIST_INSERT_HEAD(&iip_memo, memo, iip_link);
- return result;
+ memo = malloc(sizeof *memo);
+ if (memo == NULL)
+ goto errout;
+ memo->iip_name = buf;
+ memo->iip_result = result;
+ LIST_INSERT_HEAD(&iip_memo, memo, iip_link);
+ return (result);
errout:
- if (buf != NULL)
- free(buf);
- if (buf2 != NULL)
- free(buf2);
- return -1;
+ if (buf != NULL)
+ free(buf);
+ if (buf2 != NULL)
+ free(buf2);
+ return (-1);
}
/*
@@ -423,28 +441,30 @@
static int
rex_match(const char *pattern, const char *pkgname, int extended)
{
- char errbuf[128];
- int errcode;
- int retval;
- regex_t rex;
+ char errbuf[128];
+ int errcode;
+ int retval;
+ regex_t rex;
+
+ retval = 0;
- retval = 0;
+ errcode = regcomp(&rex, pattern,
+ (extended ? REG_EXTENDED : REG_BASIC) | REG_NOSUB);
+ if (errcode == 0)
+ errcode = regexec(&rex, pkgname, 0, NULL, 0);
- errcode = regcomp(&rex, pattern, (extended ? REG_EXTENDED : REG_BASIC) | REG_NOSUB);
- if (errcode == 0)
- errcode = regexec(&rex, pkgname, 0, NULL, 0);
+ if (errcode == 0)
+ retval = 1;
+ else if (errcode != REG_NOMATCH) {
+ regerror(errcode, &rex, errbuf, sizeof(errbuf));
+ warnx("%s: %s", pattern, errbuf);
+ retval = -1;
+ }
- if (errcode == 0) {
- retval = 1;
- } else if (errcode != REG_NOMATCH) {
- regerror(errcode, &rex, errbuf, sizeof(errbuf));
- warnx("%s: %s", pattern, errbuf);
- retval = -1;
- }
+ regfree(&rex);
- regfree(&rex);
+ return (retval);
- return retval;
}
/*
@@ -455,89 +475,106 @@
static int
csh_match(const char *pattern, const char *string, int flags)
{
- int ret = FNM_NOMATCH;
+
+ Boolean quoted;
+
+ const char *current = NULL;
+ const char *eb;
+ const char *nextchoice = pattern;
+ const char *pos;
+ const char *postfix;
+ char buf[FILENAME_MAX];
+
+ int prefixlen = -1;
+ int currentlen = 0;
+ int level = 0;
+ int ret = FNM_NOMATCH;
+
+ do {
+
+ pos = nextchoice;
+ postfix = NULL;
+
+ quoted = FALSE;
+
+ nextchoice = NULL;
+
+ do {
+
+ if (*pos == '\0')
+ postfix = pos;
+ else if (quoted == TRUE)
+ quoted = FALSE;
+ else {
+
+ switch (*pos) {
+ case '{':
+ ++level;
+ if (level == 1) {
+ current = pos + 1;
+ prefixlen = pos - pattern;
+ }
+ break;
+ case ',':
+ if (level == 1 && !nextchoice) {
+ nextchoice = pos + 1;
+ currentlen = pos - current;
+ }
+ break;
+ case '}':
+ if (level == 1) {
+ postfix = pos+1;
+ if (!nextchoice) {
+ currentlen =
+ pos - current;
+ }
+ }
+ level--;
+ break;
+ case '[':
+ eb = pos + 1;
+ if (*eb == '!' || *eb == '^')
+ eb++;
+ if (*eb == ']')
+ eb++;
+ while (*eb && *eb != ']')
+ eb++;
+ if (*eb)
+ pos = eb;
+ break;
+ case '\\':
+ quoted = TRUE;
+ break;
+ default:
+ break;
+ }
+
+ }
+ pos++;
- const char *nextchoice = pattern;
- const char *current = NULL;
+ } while (postfix == NULL);
- int prefixlen = -1;
- int currentlen = 0;
+ if (current) {
- int level = 0;
+ snprintf(buf, sizeof(buf), "%.*s%.*s%s",
+ prefixlen, pattern, currentlen, current, postfix);
- do {
- const char *pos = nextchoice;
- const char *postfix = NULL;
+ ret = csh_match(buf, string, flags);
- Boolean quoted = FALSE;
+ if (ret) {
+ current = nextchoice;
+ level = 1;
+ } else
+ current = NULL;
- nextchoice = NULL;
+ } else
+ ret = fnmatch(pattern, string, flags);
- do {
- const char *eb;
- if (!*pos) {
- postfix = pos;
- } else if (quoted) {
- quoted = FALSE;
- } else {
- switch (*pos) {
- case '{':
- ++level;
- if (level == 1) {
- current = pos+1;
- prefixlen = pos-pattern;
- }
- break;
- case ',':
- if (level == 1 && !nextchoice) {
- nextchoice = pos+1;
- currentlen = pos-current;
- }
- break;
- case '}':
- if (level == 1) {
- postfix = pos+1;
- if (!nextchoice)
- currentlen = pos-current;
- }
- level--;
- break;
- case '[':
- eb = pos+1;
- if (*eb == '!' || *eb == '^')
- eb++;
- if (*eb == ']')
- eb++;
- while(*eb && *eb != ']')
- eb++;
- if (*eb)
- pos=eb;
- break;
- case '\\':
- quoted = TRUE;
- break;
- default:
- ;
- }
- }
- pos++;
- } while (!postfix);
+ } while (current);
- if (current) {
- char buf[FILENAME_MAX];
- snprintf(buf, sizeof(buf), "%.*s%.*s%s", prefixlen, pattern, currentlen, current, postfix);
- ret = csh_match(buf, string, flags);
- if (ret) {
- current = nextchoice;
- level = 1;
- } else
- current = NULL;
- } else
- ret = fnmatch(pattern, string, flags);
- } while (current);
+ return (ret);
- return ret;
}
/*
@@ -547,57 +584,74 @@
struct store *
storecreate(struct store *store)
{
- int i;
+ int i;
- if (store == NULL) {
- store = malloc(sizeof *store);
if (store == NULL) {
- warnx("%s(): malloc() failed", __func__);
- return NULL;
+ store = malloc(sizeof *store);
+ if (store == NULL) {
+ warn("%s(): malloc() failed", __func__);
+ return (NULL);
+ }
+ store->currlen = 0;
+ store->store = NULL;
+ } else if (store->store != NULL) {
+ /* Free previously allocated memory */
+ for (i = 0; store->store[i] != NULL; i++)
+ free(store->store[i]);
+ store->store[0] = NULL;
}
- store->currlen = 0;
- store->store = NULL;
- } else if (store->store != NULL) {
- /* Free previously allocated memory */
- for (i = 0; store->store[i] != NULL; i++)
- free(store->store[i]);
- store->store[0] = NULL;
- }
- store->used = 0;
+ store->used = 0;
- return store;
+ return (store);
}
/*
* Append specified element to the provided store.
+ *
+ * Return 0 on success, return 1 on error.
*/
static int
storeappend(struct store *store, const char *item)
{
- if (store->used + 2 > store->currlen) {
- store->currlen += 16;
- store->store = reallocf(store->store,
- store->currlen * sizeof(*(store->store)));
- if (store->store == NULL) {
- store->currlen = 0;
- warnx("%s(): reallocf() failed", __func__);
- return 1;
+ int retcode = 0;
+
+ if (store->used + 2 > store->currlen) {
+
+ store->currlen += 16;
+ store->store = reallocf(store->store,
+ store->currlen * sizeof(*(store->store)));
+
+ if (store->store == NULL) {
+ store->currlen = 0;
+ warn("%s(): reallocf() failed", __func__);
+ retcode = -1;
+ }
+
+ }
+
+ if (retcode == 0) {
+
+ asprintf(&(store->store[store->used]), "%s", item);
+ /*
+ * XXX (gcooper): should the entire store be invalidated here,
+ * i.e. free store->store?
+ */
+ if (store->store[store->used] == NULL) {
+ warn("%s(): malloc() failed", __func__);
+ retcode = -1;
+ } else {
+ store->used++;
+ store->store[store->used] = NULL;
+ }
+
}
- }
- asprintf(&(store->store[store->used]), "%s", item);
- if (store->store[store->used] == NULL) {
- warnx("%s(): malloc() failed", __func__);
- return 1;
- }
- store->used++;
- store->store[store->used] = NULL;
+ return (retcode);
- return 0;
}
static int
fname_cmp(const FTSENT * const *a, const FTSENT * const *b)
{
- return strcmp((*a)->fts_name, (*b)->fts_name);
+ return (strcmp((*a)->fts_name, (*b)->fts_name));
}
==== //depot/projects/soc2007/gcooper-pkg_install-enhancements-simplified/lib/libpkg/pen.c#6 (text+ko) ====
@@ -37,7 +37,7 @@
char *
where_playpen(void)
{
- return PenLocation;
+ return (PenLocation);
}
/* Find a good place to play. */
@@ -49,7 +49,7 @@
if (pen[0] != '\0' && isdir(dirname(pen)) == TRUE &&
(min_free(dirname(pen)) >= sz))
- return pen;
+ return (pen);
else if ((cp = getenv("PKG_TMPDIR")) != NULL && stat(cp, &sb) == 0 &&
(min_free(cp) >= sz))
sprintf(pen, "%s/instmp.XXXXXX", cp);
@@ -65,9 +65,9 @@
strcpy(pen, "/usr/tmp/instmp.XXXXXX");
else {
errno = ENOSPC;
- return NULL;
+ return (NULL);
}
- return pen;
+ return (pen);
}
#define MAX_STACK 20
@@ -81,7 +81,7 @@
errx(2, "%s: stack overflow.\n", __func__);
pstack[pdepth] = strdup(pen);
- return pstack[pdepth];
+ return (pstack[pdepth]);
}
static void
@@ -118,7 +118,7 @@
}
- return pen_location;
+ return (pen_location);
}
@@ -155,7 +155,7 @@
}
- return rc;
+ return (rc);
}
@@ -166,7 +166,7 @@
if (statfs(tmpdir, &buf) != 0) {
warn("statfs");
- return -1;
+ return (-1);
}
- return (off_t)buf.f_bavail * (off_t)buf.f_bsize;
+ return ((off_t)buf.f_bavail * (off_t)buf.f_bsize);
}
==== //depot/projects/soc2007/gcooper-pkg_install-enhancements-simplified/lib/libpkg/url.c#3 (text+ko) ====
@@ -21,12 +21,13 @@
#include <sys/cdefs.h>
__FBSDID("$FreeBSD: src/lib/libpkg/url.c,v 1.1 2010/04/23 11:07:43 flz Exp $");
-#include "pkg.h"
+#include <sys/param.h>
+#include <sys/wait.h>
#include <err.h>
-#include <fetch.h>
#include <libgen.h>
-#include <sys/wait.h>
#include <stdio.h>
+#include <fetch.h> /* NOTE: stdio must come before fetch. */
+#include "pkg.h"
/*
* Try and fetch a file by URL, returning the directory name for where
@@ -75,7 +76,7 @@
strcat(cp, ".tbz");
}
else
- return NULL;
+ return (NULL);
}
else if (hint != NULL) {
/*
@@ -88,7 +89,7 @@
}
else
- return NULL;
+ return (NULL);
}
else
@@ -104,7 +105,7 @@
if ((pkgfd = open(pkg, O_WRONLY|O_CREAT|O_TRUNC, 0644)) == -1) {
warn("Error: Unable to open %s", pkg);
- return NULL;
+ return (NULL);
}
}
@@ -118,7 +119,7 @@
warnx("failed to remove partially fetched package: %s",
pkg);
}
- return NULL;
+ return (NULL);
}
if (isatty(0) || Verbose) {
@@ -178,6 +179,6 @@
if (0 < pkgfd)
close(pkgfd);
- return rp;
+ return (rp);
}
More information about the p4-projects
mailing list