Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/usr.sbin/sup/source - don't declare victory when there are e...



details:   https://anonhg.NetBSD.org/src/rev/53925ffb27cd
branches:  trunk
changeset: 779013:53925ffb27cd
user:      christos <christos%NetBSD.org@localhost>
date:      Wed Apr 25 17:33:49 2012 +0000

description:
- don't declare victory when there are errors.
- better error messages.

diffstat:

 usr.sbin/sup/source/supscan.c |  42 +++++++++++++++++++++++++++++-------------
 1 files changed, 29 insertions(+), 13 deletions(-)

diffs (145 lines):

diff -r 508bdf72d20e -r 53925ffb27cd usr.sbin/sup/source/supscan.c
--- a/usr.sbin/sup/source/supscan.c     Wed Apr 25 16:11:26 2012 +0000
+++ b/usr.sbin/sup/source/supscan.c     Wed Apr 25 17:33:49 2012 +0000
@@ -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 @@
 
 
 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 @@
 main(int argc, char **argv)
 {
        SCAN_COLLECTION * volatile c;   /* Avoid longjmp clobbering */
+       int errs;
 #ifdef RLIMIT_DATA
        struct rlimit dlim;
 
@@ -185,7 +186,11 @@
        }
 #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 @@
                        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 @@
                        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 @@
        exit(1);
 }
 
-void
+int
 init(int argc, char **argv)
 {
        char buf[STRINGLENGTH], fbuf[STRINGLENGTH], *p, *q;
@@ -240,6 +247,7 @@
        SCAN_COLLECTION **c;
        int fflag, sflag;
        char *filename = NULL;
+       int errs = 0;
 
        quiet = FALSE;
        trace = FALSE;
@@ -297,9 +305,11 @@
                        *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 @@
                        *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 @@
                }
        }
        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 @@
                                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 @@
                }
                (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;



Home | Main Index | Thread Index | Old Index