X-Git-Url: https://git.wh0rd.org/?p=dump.git;a=blobdiff_plain;f=dump%2Fitime.c;h=2529865cb06da1e02d5a52aa035c75ada3bbf621;hp=a1b66f9a33ddf4194dd90ee933d2c59d3d0d8c8a;hb=ec387a1267f4cac7625cd5b6d1c1f080d39085b3;hpb=ddd2ef55b78a62c4bc3daad18bef8a90e85a2052 diff --git a/dump/itime.c b/dump/itime.c index a1b66f9..2529865 100644 --- a/dump/itime.c +++ b/dump/itime.c @@ -37,16 +37,10 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. + * + * $Id: itime.c,v 1.5 1999/10/11 13:31:11 stelian Exp $ */ -#ifndef lint -#if 0 -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 $"; -#endif /* not lint */ - #include #include #ifdef __linux__ @@ -93,7 +87,7 @@ static int makedumpdate __P((struct dumpdates *, char *)); static void readdumptimes __P((FILE *)); void -initdumptimes(void) +initdumptimes(int createdumpdates) { FILE *df; @@ -103,25 +97,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 +152,7 @@ readdumptimes(FILE *df) } void -getdumptime(void) +getdumptime(int createdumpdates) { register struct dumpdates *ddp; register int i; @@ -169,10 +169,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