X-Git-Url: https://git.wh0rd.org/?p=dump.git;a=blobdiff_plain;f=dump%2Fitime.c;h=e29632cf75626cf721a38ab238d282f2bcbcd46c;hp=a1b66f9a33ddf4194dd90ee933d2c59d3d0d8c8a;hb=8d4197bb9ba5bbcef21409231ed8903b0cac353a;hpb=ddd2ef55b78a62c4bc3daad18bef8a90e85a2052 diff --git a/dump/itime.c b/dump/itime.c index a1b66f9..e29632c 100644 --- a/dump/itime.c +++ b/dump/itime.c @@ -44,7 +44,7 @@ static char sccsid[] = "@(#)itime.c 8.1 (Berkeley) 6/5/93"; #endif static const char rcsid[] = - "$Id: itime.c,v 1.3 1999/10/11 12:59:18 stelian Exp $"; + "$Id: itime.c,v 1.4 1999/10/11 13:08:07 stelian Exp $"; #endif /* not lint */ #include @@ -93,7 +93,7 @@ static int makedumpdate __P((struct dumpdates *, char *)); static void readdumptimes __P((FILE *)); void -initdumptimes(void) +initdumptimes(int createdumpdates) { FILE *df; @@ -103,25 +103,31 @@ initdumptimes(void) strerror(errno)); /* NOTREACHED */ } - /* - * Dumpdates does not exist, make an empty one. - */ - msg("WARNING: no file `%s', making an empty one\n", dumpdates); - if ((df = fopen(dumpdates, "w")) == NULL) { - quit("cannot create %s: %s\n", dumpdates, - strerror(errno)); - /* NOTREACHED */ + if (createdumpdates) { + /* + * Dumpdates does not exist, make an empty one. + */ + msg("WARNING: no file `%s', making an empty one\n", dumpdates); + if ((df = fopen(dumpdates, "w")) == NULL) { + quit("cannot create %s: %s\n", dumpdates, + strerror(errno)); + /* NOTREACHED */ + } + (void) fclose(df); + if ((df = fopen(dumpdates, "r")) == NULL) { + quit("cannot read %s even after creating it: %s\n", + dumpdates, strerror(errno)); + /* NOTREACHED */ + } } + else + msg("WARNING: no file `%s'\n", dumpdates); + } + if (df != NULL) { + (void) flock(fileno(df), LOCK_SH); + readdumptimes(df); (void) fclose(df); - if ((df = fopen(dumpdates, "r")) == NULL) { - quit("cannot read %s even after creating it: %s\n", - dumpdates, strerror(errno)); - /* NOTREACHED */ - } } - (void) flock(fileno(df), LOCK_SH); - readdumptimes(df); - (void) fclose(df); } static void @@ -152,7 +158,7 @@ readdumptimes(FILE *df) } void -getdumptime(void) +getdumptime(int createdumpdates) { register struct dumpdates *ddp; register int i; @@ -169,10 +175,11 @@ getdumptime(void) /* if we're not going to update dumpdates, there's no point in reading it, particularly since /var might not be mounted... wait until here to benefit from the initialization of variables needed by parent */ - if (uflag == 0) + if (!uflag && level == lastlevel) + return; + initdumptimes(createdumpdates); + if (ddatev == NULL) return; - - initdumptimes(); /* * Go find the entry with the same name for a lower increment * and older date