RPM Package Manager, CVS Repository
http://rpm5.org/cvs/
____________________________________________________________________________
Server: rpm5.org Name: Jeff Johnson
Root: /v/rpm/cvs Email: jbj@rpm5.org
Module: rpm Date: 09-Feb-2008 03:54:50
Branch: HEAD Handle: 2008020902544901
Modified files:
rpm CHANGES
rpm/rpmio tdir.c tfts.c tget.c tglob.c
Log:
- jbj: map tdir/tglob/tfts errors into exit codes.
Summary:
Revision Changes Path
1.2159 +1 -0 rpm/CHANGES
2.12 +12 -6 rpm/rpmio/tdir.c
2.19 +11 -6 rpm/rpmio/tfts.c
1.14 +4 -3 rpm/rpmio/tget.c
2.11 +4 -3 rpm/rpmio/tglob.c
____________________________________________________________________________
patch -p0 <<'@@ .'
Index: rpm/CHANGES
============================================================================
$ cvs diff -u -r1.2158 -r1.2159 CHANGES
--- rpm/CHANGES 9 Feb 2008 02:34:23 -0000 1.2158
+++ rpm/CHANGES 9 Feb 2008 02:54:49 -0000 1.2159
@@ -1,4 +1,5 @@
5.0.0 -> 5.1a1:
+ - jbj: map tdir/tglob/tfts errors into exit codes.
- jbj: dav{Stat,LStat,Opendir) return ENOENT with malformed URI (including
no pesky trailing /).
- jbj: rpmdav: fix: supply davOpendir->davHEAD a statbuf to avoid tdir/tfts
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmio/tdir.c
============================================================================
$ cvs diff -u -r2.11 -r2.12 tdir.c
--- rpm/rpmio/tdir.c 8 Feb 2008 21:02:16 -0000 2.11
+++ rpm/rpmio/tdir.c 9 Feb 2008 02:54:50 -0000 2.12
@@ -29,24 +29,29 @@
}
}
-static void dirWalk(const char * dn)
+static int dirWalk(const char * dn)
{
rpmop op = memset(alloca(sizeof(*op)), 0, sizeof(*op));
struct dirent * dp;
DIR * dir;
int nentries;
+ int rc = 1;
int xx;
xx = rpmswEnter(op, 0);
nentries = 0;
- dir = Opendir(dn);
+ if ((dir = Opendir(dn)) == NULL)
+ goto exit;
while ((dp = Readdir(dir)) != NULL)
printDir(dp, nentries++);
- xx = Closedir(dir);
+ rc = Closedir(dir);
+
+exit:
xx = rpmswExit(op, nentries);
fprintf(stderr, "===== %s: %d entries\n", dn, nentries);
rpmswPrint("opendir:", op);
+ return rc;
}
static struct poptOption optionsTable[] = {
@@ -106,10 +111,11 @@
}
/* XXX Add pesky trailing '/' to http:// URI's */
- while ((dn = *av++) != NULL) {
+ rc = 0;
+ while (rc == 0 && (dn = *av++) != NULL) {
size_t nb = strlen(dn);
dn = rpmExpand(dn, (dn[nb-1] != '/' ? "/" : NULL), NULL);
- dirWalk(dn);
+ rc = dirWalk(dn);
dn = _free(dn);
}
@@ -119,5 +125,5 @@
optCon = poptFreeContext(optCon);
- return 0;
+ return rc;
}
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmio/tfts.c
============================================================================
$ cvs diff -u -r2.18 -r2.19 tfts.c
--- rpm/rpmio/tfts.c 8 Feb 2008 22:20:03 -0000 2.18
+++ rpm/rpmio/tfts.c 9 Feb 2008 02:54:50 -0000 2.19
@@ -133,21 +133,25 @@
rpmop op = memset(alloca(sizeof(*op)), 0, sizeof(*op));
FTS * ftsp;
FTSENT * fts;
+ int rc = 1;
int xx;
xx = rpmswEnter(op, 0);
ndirs = nfiles = 0;
- ftsp = Fts_open((char *const *)av, ftsOpts, NULL);
+ if ((ftsp = Fts_open((char *const *)av, ftsOpts, NULL)) == NULL)
+ goto exit;
while((fts = Fts_read(ftsp)) != NULL)
xx = ftsPrint(ftsp, fts);
- xx = Fts_close(ftsp);
+ rc = Fts_close(ftsp);
+
+exit:
xx = rpmswExit(op, ndirs);
fprintf(stderr, "===== (%d/%d) dirs/files in:\n", ndirs, nfiles);
argvPrint(NULL, av, NULL);
rpmswPrint("fts:", op);
- return 0;
+ return rc;
}
static struct poptOption optionsTable[] = {
@@ -240,12 +244,13 @@
ac = argvCount(dav);
if (ac < 1) {
poptPrintUsage(optCon, stderr, 0);
+ rc = 1;
goto exit;
}
if (mirePattern) {
mire = mireNew(mireMode, mireTag);
- if ((xx = mireRegcomp(mire, mirePattern)) != 0)
+ if ((rc = mireRegcomp(mire, mirePattern)) != 0)
goto exit;;
}
@@ -261,7 +266,7 @@
dn = _free(dn);
}
- ftsWalk(av);
+ rc = ftsWalk(av);
exit:
mg = rpmmgFree(mg);
@@ -273,5 +278,5 @@
optCon = poptFreeContext(optCon);
- return 0;
+ return rc;
}
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmio/tget.c
============================================================================
$ cvs diff -u -r1.13 -r1.14 tget.c
--- rpm/rpmio/tget.c 8 Feb 2008 21:02:16 -0000 1.13
+++ rpm/rpmio/tget.c 9 Feb 2008 02:54:50 -0000 1.14
@@ -179,8 +179,9 @@
goto exit;
}
- while ((fn = *av++) != NULL)
- xx = readFile(fn);
+ rc = 0;
+ while (rc == 0 && (fn = *av++) != NULL)
+ rc = readFile(fn);
exit:
@@ -188,5 +189,5 @@
optCon = poptFreeContext(optCon);
- return 0;
+ return rc;
}
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmio/tglob.c
============================================================================
$ cvs diff -u -r2.10 -r2.11 tglob.c
--- rpm/rpmio/tglob.c 8 Feb 2008 21:12:57 -0000 2.10
+++ rpm/rpmio/tglob.c 9 Feb 2008 02:54:50 -0000 2.11
@@ -101,8 +101,9 @@
goto exit;
}
- while ((dn = *av++) != NULL)
- xx = printGlob(dn);
+ rc = 0;
+ while (rc == 0 && (dn = *av++) != NULL)
+ rc = printGlob(dn);
exit:
@@ -110,5 +111,5 @@
optCon = poptFreeContext(optCon);
- return 0;
+ return rc;
}
@@ .
Received on Sat Feb 9 03:54:50 2008