diff --git a/include/file.h b/include/file.h index b14d0bc6..c086fe22 100644 --- a/include/file.h +++ b/include/file.h @@ -98,9 +98,11 @@ struct emptypedstr { #define EFF_PRIVATE bit(9) /* Table is customized (configuration tables only) */ #define EFF_CUSTOM bit(10) +/* Don't update timestamps */ +#define EFF_NOTIME bit(11) /* Transient flags, only occur in argument of ef_open() */ /* Create table file, clobbering any existing file */ -#define EFF_CREATE bit(11) +#define EFF_CREATE bit(16) /* * Empire `file types' diff --git a/src/lib/common/file.c b/src/lib/common/file.c index b1ebfb13..d20f7e02 100644 --- a/src/lib/common/file.c +++ b/src/lib/common/file.c @@ -369,7 +369,7 @@ do_write(struct empfile *ep, void *buf, int id, int count) return -1; if (ep->flags & EFF_TYPED) { - now = time(NULL); + now = ep->flags & EFF_NOTIME ? (time_t)-1 : time(NULL); for (i = 0; i < count; i++) { /* * TODO Oopses here could be due to bad data corruption. @@ -380,7 +380,8 @@ do_write(struct empfile *ep, void *buf, int id, int count) elt->ef_type = ep->uid; if (CANT_HAPPEN(elt->uid != id + i)) elt->uid = id + i; - elt->timestamp = now; + if (now != (time_t)-1) + elt->timestamp = now; } } diff --git a/src/util/files.c b/src/util/files.c index 4151e20d..5ef61618 100644 --- a/src/util/files.c +++ b/src/util/files.c @@ -131,7 +131,7 @@ main(int argc, char *argv[]) for (i = 0; i < EF_MAX; i++) { if (!EF_IS_GAME_STATE(i)) continue; - if (!ef_open(i, EFF_CREATE, -1)) { + if (!ef_open(i, EFF_CREATE | EFF_NOTIME, -1)) { perror("ef_open"); exit(1); }