PERFORCE change 178380 for review

Garrett Cooper gcooper at FreeBSD.org
Mon May 17 10:34:14 UTC 2010


http://p4web.freebsd.org/@@178380?ac=10

Change 178380 by gcooper at gcooper-bayonetta on 2010/05/17 10:33:23

	Remove all references of cleanup in plist.c . style(9)-ize things appropriately.

Affected files ...

.. //depot/projects/soc2007/gcooper-pkg_install-enhancements-simplified/lib/libpkg/plist.c#3 edit

Differences ...

==== //depot/projects/soc2007/gcooper-pkg_install-enhancements-simplified/lib/libpkg/plist.c#3 (text+ko) ====

@@ -23,9 +23,10 @@
 
 #include <sys/types.h>
 #include <sys/uio.h>
-#include <unistd.h>
 #include <err.h>
+#include <errno.h>
 #include <md5.h>
+#include <unistd.h>
 
 #include "pkg.h"
 
@@ -260,160 +261,191 @@
 }
 
 /* Read a packing list from a file */
-void
+int
 read_plist(Package *pkg, int fd)
 {
-    char *cp, pline[FILENAME_MAX];
-    int cmd, major, minor;
+	char *cp, pline[FILENAME_MAX];
+	int cmd, major, minor, rc = 0;
+	size_t len;
+
+	pkg->fmtver_maj = 1;
+	pkg->fmtver_mnr = 0;
+	pkg->origin = NULL;
+
+	/* 
+	 * XXX (gcooper): BAD BAD BAD -- this can be longer than
+	 * FILENAME_MAX
+	 */
+	while (rc == 0 && 0 < read(fd, pline, FILENAME_MAX)) {
+		len = strlen(pline);
+
+		while (len && isspace(pline[len - 1]))
+			pline[--len] = '\0';
+		if (!len)
+			continue;
+		cp = pline;
+		if (pline[0] != CMD_CHAR) {
+			cmd = PLIST_FILE;
+			goto bottom;
+		}
+		cmd = plist_cmd(pline + 1, &cp);
+		if (cmd == FAIL) {
+			warnx("%s: unknown command '%s' (package tools out of "
+			    "date?)", __func__, pline);
+			goto bottom;
+		}
+		if (*cp == '\0') {
+			cp = NULL;
+			if (cmd == PLIST_PKGDEP) {
+				warnx("corrupted record (pkgdep line without "
+				    "argument), ignoring");
+				cmd = FAIL;
+			}
+			goto bottom;
+		}
+		if (cmd == PLIST_COMMENT &&
+		    sscanf(cp, "PKG_FORMAT_REVISION:%d.%d\n", &major, &minor) ==
+		    2) {
+
+			pkg->fmtver_maj = major;
+			pkg->fmtver_mnr = minor;
+
+			if (verscmp(pkg, PLIST_FMT_VER_MAJOR,
+			    PLIST_FMT_VER_MINOR) <= 0)
+				goto bottom;
+
+			warnx("plist format revision (%d.%d) is higher than "
+			    "supported (%d.%d)",
+			    pkg->fmtver_maj, pkg->fmtver_mnr,
+			    PLIST_FMT_VER_MAJOR, PLIST_FMT_VER_MINOR);
+
+			if (pkg->fmtver_maj > PLIST_FMT_VER_MAJOR) {
+				errno = EINVAL;
+				rc = -1;
+			}
 
-    pkg->fmtver_maj = 1;
-    pkg->fmtver_mnr = 0;
-    pkg->origin = NULL;
+		}
 
-    /* XXX (gcooper): BAD BAD BAD -- this can be longer than FILENAME_MAX */
-    while (0 < read(fd, pline, FILENAME_MAX)) {
-	int len = strlen(pline);
+bottom:
+		if (rc == 0)
+			add_plist(pkg, cmd, cp);
 
-	while (len && isspace(pline[len - 1]))
-	    pline[--len] = '\0';
-	if (!len)
-	    continue;
-	cp = pline;
-	if (pline[0] != CMD_CHAR) {
-	    cmd = PLIST_FILE;
-	    goto bottom;
 	}
-	cmd = plist_cmd(pline + 1, &cp);
-	if (cmd == FAIL) {
-	    warnx("%s: unknown command '%s' (package tools out of date?)",
-		__func__, pline);
-	    goto bottom;
-	}
-	if (*cp == '\0') {
-	    cp = NULL;
-	    if (cmd == PLIST_PKGDEP) {
-		warnx("corrupted record (pkgdep line without argument), ignoring");
-		cmd = FAIL;
-	    }
-	    goto bottom;
-	}
-	if (cmd == PLIST_COMMENT && sscanf(cp, "PKG_FORMAT_REVISION:%d.%d\n",
-					   &major, &minor) == 2) {
-	    pkg->fmtver_maj = major;
-	    pkg->fmtver_mnr = minor;
-	    if (verscmp(pkg, PLIST_FMT_VER_MAJOR, PLIST_FMT_VER_MINOR) <= 0)
-		goto bottom;
+
+	return rc;
 
-	    warnx("plist format revision (%d.%d) is higher than supported"
-		  "(%d.%d)", pkg->fmtver_maj, pkg->fmtver_mnr,
-		  PLIST_FMT_VER_MAJOR, PLIST_FMT_VER_MINOR);
-	    if (pkg->fmtver_maj > PLIST_FMT_VER_MAJOR) {
-		cleanup(0);
-		exit(2);
-	    }
-	}
-bottom:
-	add_plist(pkg, cmd, cp);
-    }
 }
 
 /* Write a packing list to a file, converting commands to ascii equivs */
-void
+int
 write_plist(Package *pkg, FILE *fp)
 {
-    PackingList plist = pkg->head;
+	PackingList plist;
+	int rc = 0;
+
+	for (plist = pkg->head; plist != NULL; plist = plist->next) {
+
+		switch(plist->type) {
+		case PLIST_FILE:
+			fprintf(fp, "%s\n", plist->name);
+			break;
 
-    while (plist) {
-	switch(plist->type) {
-	case PLIST_FILE:
-	    fprintf(fp, "%s\n", plist->name);
-	    break;
+		case PLIST_CWD:
+			fprintf(fp, "%ccwd %s\n",
+			    CMD_CHAR, (plist->name == NULL) ? "" : plist->name);
+			break;
 
-	case PLIST_CWD:
-	    fprintf(fp, "%ccwd %s\n", CMD_CHAR, (plist->name == NULL) ? "" : plist->name);
-	    break;
+		case PLIST_SRC:
+			fprintf(fp, "%csrcdir %s\n", CMD_CHAR, plist->name);
+			break;
 
-	case PLIST_SRC:
-	    fprintf(fp, "%csrcdir %s\n", CMD_CHAR, plist->name);
-	    break;
+		case PLIST_CMD:
+			fprintf(fp, "%cexec %s\n", CMD_CHAR, plist->name);
+			break;
 
-	case PLIST_CMD:
-	    fprintf(fp, "%cexec %s\n", CMD_CHAR, plist->name);
-	    break;
+		case PLIST_UNEXEC:
+			fprintf(fp, "%cunexec %s\n", CMD_CHAR, plist->name);
+			break;
 
-	case PLIST_UNEXEC:
-	    fprintf(fp, "%cunexec %s\n", CMD_CHAR, plist->name);
-	    break;
+		case PLIST_CHMOD:
+			fprintf(fp, "%cmode %s\n",
+			    CMD_CHAR, plist->name ? plist->name : "");
+			break;
 
-	case PLIST_CHMOD:
-	    fprintf(fp, "%cmode %s\n", CMD_CHAR, plist->name ? plist->name : "");
-	    break;
+		case PLIST_CHOWN:
+			fprintf(fp, "%cowner %s\n",
+			    CMD_CHAR, plist->name ? plist->name : "");
+			break;
 
-	case PLIST_CHOWN:
-	    fprintf(fp, "%cowner %s\n", CMD_CHAR, plist->name ? plist->name : "");
-	    break;
+		case PLIST_CHGRP:
+			fprintf(fp, "%cgroup %s\n",
+			    CMD_CHAR, plist->name ? plist->name : "");
+			break;
 
-	case PLIST_CHGRP:
-	    fprintf(fp, "%cgroup %s\n", CMD_CHAR, plist->name ? plist->name : "");
-	    break;
+		case PLIST_COMMENT:
+			fprintf(fp, "%ccomment %s\n",
+			    CMD_CHAR, plist->name);
+			break;
 
-	case PLIST_COMMENT:
-	    fprintf(fp, "%ccomment %s\n", CMD_CHAR, plist->name);
-	    break;
+		case PLIST_NOINST:
+			fprintf(fp, "%cnoinst %s\n", CMD_CHAR, plist->name);
+			break;
 
-	case PLIST_NOINST:
-	    fprintf(fp, "%cnoinst %s\n", CMD_CHAR, plist->name);
-	    break;
+		case PLIST_IGNORE:
+			/* FALLTHROUGH */
+		/* a one-time non-ignored file */
+		case PLIST_IGNORE_INST:
+			fprintf(fp, "%cignore\n", CMD_CHAR);
+			break;
 
-	case PLIST_IGNORE:
-	case PLIST_IGNORE_INST:		/* a one-time non-ignored file */
-	    fprintf(fp, "%cignore\n", CMD_CHAR);
-	    break;
+		case PLIST_NAME:
+			fprintf(fp, "%cname %s\n", CMD_CHAR, plist->name);
+			break;
 
-	case PLIST_NAME:
-	    fprintf(fp, "%cname %s\n", CMD_CHAR, plist->name);
-	    break;
+		case PLIST_DISPLAY:
+			fprintf(fp, "%cdisplay %s\n", CMD_CHAR, plist->name);
+			break;
 
-	case PLIST_DISPLAY:
-	    fprintf(fp, "%cdisplay %s\n", CMD_CHAR, plist->name);
-	    break;
+		case PLIST_PKGDEP:
+			fprintf(fp, "%cpkgdep %s\n", CMD_CHAR, plist->name);
+			break;
 
-	case PLIST_PKGDEP:
-	    fprintf(fp, "%cpkgdep %s\n", CMD_CHAR, plist->name);
-	    break;
+		case PLIST_CONFLICTS:
+			fprintf(fp, "%cconflicts %s\n", CMD_CHAR, plist->name);
+			break;
 
-	case PLIST_CONFLICTS:
-	    fprintf(fp, "%cconflicts %s\n", CMD_CHAR, plist->name);
-	    break;
+		case PLIST_MTREE:
+			fprintf(fp, "%cmtree %s\n", CMD_CHAR, plist->name);
+			break;
 
-	case PLIST_MTREE:
-	    fprintf(fp, "%cmtree %s\n", CMD_CHAR, plist->name);
-	    break;
+		case PLIST_DIR_RM:
+			fprintf(fp, "%cdirrm %s\n", CMD_CHAR, plist->name);
+			break;
 
-	case PLIST_DIR_RM:
-	    fprintf(fp, "%cdirrm %s\n", CMD_CHAR, plist->name);
-	    break;
+		case PLIST_OPTION:
+			fprintf(fp, "%coption %s\n", CMD_CHAR, plist->name);
+			break;
 
-	case PLIST_OPTION:
-	    fprintf(fp, "%coption %s\n", CMD_CHAR, plist->name);
-	    break;
+		case PLIST_ORIGIN:
+			fprintf(fp, "%ccomment ORIGIN:%s\n",
+			    CMD_CHAR, plist->name);
+			break;
 
-	case PLIST_ORIGIN:
-	    fprintf(fp, "%ccomment ORIGIN:%s\n", CMD_CHAR, plist->name);
-	    break;
+		case PLIST_DEPORIGIN:
+			fprintf(fp, "%ccomment DEPORIGIN:%s\n", CMD_CHAR, plist->name);
+			break;
 
-	case PLIST_DEPORIGIN:
-	    fprintf(fp, "%ccomment DEPORIGIN:%s\n", CMD_CHAR, plist->name);
-	    break;
+		default:
+			warnx("%s: unknown command type %d (%s)", __func__,
+			    plist->type, plist->name);
+			rc = -1;
+			break;
+		}
 
-	default:
-	    cleanup(0);
-	    errx(2, "%s: unknown command type %d (%s)", __func__,
-		plist->type, plist->name);
-	    break;
 	}
-	plist = plist->next;
-    }
+
+	return rc;
+
 }
 
 /*
@@ -473,9 +505,9 @@
 		    char *cp = NULL, buf[33];
 
 		    /*
-		     * For packing lists whose version is 1.1 or greater, the md5
-		     * hash for a symlink is calculated on the string returned
-		     * by readlink().
+		     * For packing lists whose version is 1.1 or greater, the
+		     * md5 hash for a symlink is calculated on the string
+		     * returned by readlink().
 		     */
 		    if (issymlink(tmp) && verscmp(pkg, 1, 0) > 0) {
 			int len;


More information about the p4-projects mailing list