Module Name: src
Committed By: christos
Date: Wed Apr 25 17:33:49 UTC 2012
Modified Files:
src/usr.sbin/sup/source: supscan.c
Log Message:
- don't declare victory when there are errors.
- better error messages.
To generate a diff of this commit:
cvs rdiff -u -r1.19 -r1.20 src/usr.sbin/sup/source/supscan.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/usr.sbin/sup/source/supscan.c
diff -u src/usr.sbin/sup/source/supscan.c:1.19 src/usr.sbin/sup/source/supscan.c:1.20
--- src/usr.sbin/sup/source/supscan.c:1.19 Wed Aug 31 12:25:00 2011
+++ src/usr.sbin/sup/source/supscan.c Wed Apr 25 13:33:49 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: supscan.c,v 1.19 2011/08/31 16:25:00 plunky Exp $ */
+/* $NetBSD: supscan.c,v 1.20 2012/04/25 17:33:49 christos Exp $ */
/*
* Copyright (c) 1992 Carnegie Mellon University
@@ -158,7 +158,7 @@ TREE *refuseT = NULL; /* list of all fi
void usage(void);
-void init(int, char **);
+int init(int, char **);
static SCAN_COLLECTION *getscancoll(char *, char *, char *);
int localhost(char *);
int main(int, char **);
@@ -171,6 +171,7 @@ int
main(int argc, char **argv)
{
SCAN_COLLECTION * volatile c; /* Avoid longjmp clobbering */
+ int errs;
#ifdef RLIMIT_DATA
struct rlimit dlim;
@@ -185,7 +186,11 @@ main(int argc, char **argv)
}
#endif
- init(argc, argv); /* process arguments */
+ errs = init(argc, argv); /* process arguments */
+ if (errs) {
+ fprintf(stderr, "supscan: %d collections had errors", errs);
+ return 1;
+ }
for (c = firstC; c; c = c->Cnext) {
collname = c->Cname;
basedir = c->Cbase;
@@ -202,10 +207,12 @@ main(int argc, char **argv)
if (!quiet)
printf("SUP Scan for %s completed at %s",
collname, ctime(&scantime));
- } else
+ } else {
fprintf(stderr,
"SUP: Scan for %s aborted at %s", collname,
ctime(&scantime));
+ errs++;
+ }
if (!quiet)
(void) fflush(stdout);
}
@@ -217,7 +224,7 @@ main(int argc, char **argv)
free(c->Cprefix);
free(c);
}
- exit(0);
+ return errs ? 1 : 0;
}
/*****************************************
*** I N I T I A L I Z A T I O N ***
@@ -232,7 +239,7 @@ usage(void)
exit(1);
}
-void
+int
init(int argc, char **argv)
{
char buf[STRINGLENGTH], fbuf[STRINGLENGTH], *p, *q;
@@ -240,6 +247,7 @@ init(int argc, char **argv)
SCAN_COLLECTION **c;
int fflag, sflag;
char *filename = NULL;
+ int errs = 0;
quiet = FALSE;
trace = FALSE;
@@ -297,9 +305,11 @@ init(int argc, char **argv)
*c = getscancoll(filename, estrdup(collname), NULL);
if (*c)
c = &((*c)->Cnext);
+ else
+ errs++;
}
(void) fclose(f);
- return;
+ return errs;
}
if (argc < 2 && fflag) {
firstC = NULL;
@@ -317,14 +327,19 @@ init(int argc, char **argv)
*c = getscancoll(filename, estrdup(q), estrdup(p));
if (*c)
c = &((*c)->Cnext);
+ else
+ errs++;
}
(void) fclose(f);
- return;
+ return errs;
}
if (argc < 2 || argc > 3)
usage();
firstC = getscancoll(filename, estrdup(argv[1]),
argc > 2 ? estrdup(argv[2]) : NULL);
+ if (firstC == NULL)
+ errs++;
+ return errs;
}
static SCAN_COLLECTION *
@@ -357,8 +372,8 @@ getscancoll(char *filename, char *collna
}
}
if (chdir(basedir) < 0) {
- fprintf(stderr, "supscan: Can't chdir to base directory %s for %s\n",
- basedir, collname);
+ fprintf(stderr, "supscan: Can't chdir to base directory %s "
+ "for %s (%s)\n", basedir, collname, strerror(errno));
return (NULL);
}
prefix = NULL;
@@ -372,8 +387,9 @@ getscancoll(char *filename, char *collna
continue;
prefix = estrdup(p);
if (chdir(prefix) < 0) {
- fprintf(stderr, "supscan: can't chdir to %s from base directory %s for %s\n",
- prefix, basedir, collname);
+ fprintf(stderr, "supscan: can't chdir to %s "
+ " from base directory %s for %s\n",
+ prefix, basedir, collname, strerror(errno));
fclose(f);
free(prefix);
return (NULL);
@@ -382,7 +398,7 @@ getscancoll(char *filename, char *collna
}
(void) fclose(f);
}
- if ((c = (SCAN_COLLECTION *) malloc(sizeof(SCAN_COLLECTION))) == NULL)
+ if ((c = malloc(sizeof(*c))) == NULL)
quit(1, "supscan: can't malloc collection structure\n");
c->Cname = collname;
c->Cbase = basedir;