From a9dd524370d6bb80343fa74d2b426b069f1d5d50 Mon Sep 17 00:00:00 2001 From: Arthur David Olson Date: Fri, 10 Mar 1989 19:07:58 -0500 Subject: [PATCH] errensure work SCCS-file: date.c SCCS-SID: 3.1 --- date.c | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/date.c b/date.c index 2dcf5f0..00b7d05 100644 --- a/date.c +++ b/date.c @@ -179,6 +179,7 @@ static int retval = EXIT_SUCCESS; static void ambiguous(); static void display(); +static void errensure(); static void finalcheck(); static time_t parse(); #ifdef TSP_SETDATE @@ -229,7 +230,8 @@ char * argv[]; #ifdef D_OR_T_OPTION if (gettimeofday((struct timeval *) NULL, &tz) != 0) { perror("date: error: gettimeofday"); - (void) exit(EXIT_FAILURE); + errensure(); + (void) exit(retval); } #endif /* defined D_OR_T_OPTION */ (void) time(&now); @@ -385,8 +387,7 @@ char * argv[]; if (aflag && value != NULL) { (void) fprintf(stderr, "date: error: attempt to both set and adjust time\n"); - if (retval == EXIT_SUCCESS) - retval = EXIT_FAILURE; + errensure(); display((char *) NULL); } if (aflag) @@ -439,6 +440,13 @@ char * argv[]; ; } +static void +errensure() +{ + if (retval == EXIT_SUCCESS) + retval = EXIT_FAILURE; +} + static char * nondigit(cp) register char * cp; @@ -452,7 +460,7 @@ static void usage() { (void) fprintf(stderr, "date: usage is date %s\n", usemes); - retval = EXIT_FAILURE; + errensure(); display((char *) NULL); } @@ -461,7 +469,7 @@ oops(string) char * string; { (void) perror(string); - retval = EXIT_FAILURE; + errensure(); display((char *) NULL); } @@ -500,7 +508,8 @@ int was_set; (void) fprintf(stderr, " (%s time)", tm.tm_isdst ? "summer" : "standard"); (void) fprintf(stderr, ".\n"); - (void) exit(EXIT_FAILURE); + errensure(); + (void) exit(retval); } static void @@ -517,8 +526,7 @@ char * format; (void) fflush(stderr); if (ferror(stdout) || ferror(stderr)) { (void) fprintf(stderr, "date: error: couldn't write results\n"); - if (retval == EXIT_SUCCESS) - retval = EXIT_FAILURE; + errensure(); } (void) exit(retval); for ( ; ; ) @@ -566,7 +574,7 @@ struct tm * tmp; (void) fflush(fp); (void) fprintf(stderr, "date: error: bad format character - %c\n", c); - retval = EXIT_FAILURE; + errensure(); display((char *) NULL); case 'a': (void) fprintf(fp, "%.3s", wday_names[tmp->tm_wday]);