Set timestamp automatically on write

Do it in do_write().  Remove the setting of timestamps elsewhere.

This fixes empdump to set timestamps to the current time instead of
zero on import.
This commit is contained in:
Markus Armbruster 2008-03-05 22:43:10 +01:00
parent a680c81110
commit f33b96b1d1
11 changed files with 12 additions and 38 deletions

View file

@ -50,9 +50,6 @@ state may not result in identical data files; besides the loss of
floating-point precision just mentioned, coordinates are normalized, floating-point precision just mentioned, coordinates are normalized,
and characters beyond a string's terminating zero in a character array and characters beyond a string's terminating zero in a character array
are lost. are lost.
.SH "BUGS"
Importing resets timestamps to zero. It should set them to the
current time.
.SH "SEE ALSO" .SH "SEE ALSO"
\fIemp_server\fR(6). \fIemp_server\fR(6).
.SH AUTHOR .SH AUTHOR

View file

@ -89,7 +89,6 @@ real(void)
realm.r_xh = abs.hx - 1; realm.r_xh = abs.hx - 1;
realm.r_yl = abs.ly; realm.r_yl = abs.ly;
realm.r_yh = abs.hy - 1; realm.r_yh = abs.hy - 1;
realm.r_timestamp = time(NULL);
putrealm(&realm); putrealm(&realm);
list_realm(curr, natp); list_realm(curr, natp);
} }

View file

@ -48,7 +48,7 @@
static int ef_realloc_cache(struct empfile *, int); static int ef_realloc_cache(struct empfile *, int);
static int fillcache(struct empfile *, int); static int fillcache(struct empfile *, int);
static int do_write(struct empfile *, void *, int, int); static int do_write(struct empfile *, void *, int, int, time_t);
static void do_blank(struct empfile *, void *, int, int); static void do_blank(struct empfile *, void *, int, int);
/* /*
@ -230,8 +230,10 @@ ef_flush(int type)
* allowed only with EFF_MEM. Assume the whole cash is dirty * allowed only with EFF_MEM. Assume the whole cash is dirty
* then. * then.
*/ */
if (ep->flags & EFF_MEM) if (ep->flags & EFF_MEM) {
return do_write(ep, ep->cache, ep->baseid, ep->cids) >= 0; if (do_write(ep, ep->cache, ep->baseid, ep->cids, time(NULL)) < 0)
return 0;
}
return 1; return 1;
} }
@ -337,10 +339,11 @@ fillcache(struct empfile *ep, int start)
/* /*
* Write COUNT elements from BUF to EP, starting at ID. * Write COUNT elements from BUF to EP, starting at ID.
* Set the timestamp to NOW if the table has those.
* Return 0 on success, -1 on error. * Return 0 on success, -1 on error.
*/ */
static int static int
do_write(struct empfile *ep, void *buf, int id, int count) do_write(struct empfile *ep, void *buf, int id, int count, time_t now)
{ {
int i, n, ret; int i, n, ret;
char *p; char *p;
@ -361,6 +364,7 @@ do_write(struct empfile *ep, void *buf, int id, int count)
elt->ef_type = ep->uid; elt->ef_type = ep->uid;
if (CANT_HAPPEN(elt->uid != id + i)) if (CANT_HAPPEN(elt->uid != id + i))
elt->uid = id + i; elt->uid = id + i;
elt->timestamp = now;
} }
} }
@ -413,7 +417,7 @@ ef_write(int type, int id, void *from)
if (CANT_HAPPEN((ep->flags & EFF_MEM) ? id >= ep->fids : id > ep->fids)) if (CANT_HAPPEN((ep->flags & EFF_MEM) ? id >= ep->fids : id > ep->fids))
return 0; /* not implemented */ return 0; /* not implemented */
if (!(ep->flags & EFF_PRIVATE)) { if (!(ep->flags & EFF_PRIVATE)) {
if (do_write(ep, from, id, 1) < 0) if (do_write(ep, from, id, 1, time(NULL)) < 0)
return 0; return 0;
} }
if (id >= ep->baseid && id < ep->baseid + ep->cids) { if (id >= ep->baseid && id < ep->baseid + ep->cids) {
@ -440,6 +444,7 @@ ef_extend(int type, int count)
struct empfile *ep; struct empfile *ep;
char *p; char *p;
int i, id; int i, id;
time_t now = time(NULL);
if (ef_check(type) < 0) if (ef_check(type) < 0)
return 0; return 0;
@ -464,7 +469,7 @@ ef_extend(int type, int count)
p = ep->cache + id * ep->size; p = ep->cache + id * ep->size;
do_blank(ep, p, id, count); do_blank(ep, p, id, count);
if (ep->fd >= 0 && !(ep->flags & EFF_PRIVATE)) { if (ep->fd >= 0 && !(ep->flags & EFF_PRIVATE)) {
if (do_write(ep, p, id, count) < 0) if (do_write(ep, p, id, count, now) < 0)
return 0; return 0;
} }
ep->cids += count; ep->cids += count;
@ -475,7 +480,7 @@ ef_extend(int type, int count)
p = ep->cache + ep->cids * ep->size; p = ep->cache + ep->cids * ep->size;
for (i = 0; i < count; i++) { for (i = 0; i < count; i++) {
do_blank(ep, p, id + i, 1); do_blank(ep, p, id + i, 1);
if (do_write(ep, p, id + i, 1) < 0) if (do_write(ep, p, id + i, 1, now) < 0)
return 0; return 0;
} }
} }

View file

@ -118,11 +118,6 @@ lnd_prewrite(int n, void *ptr)
struct plnstr *pp; struct plnstr *pp;
int i; int i;
llp->ef_type = EF_LAND;
llp->lnd_uid = n;
time(&llp->lnd_timestamp);
if (llp->lnd_own && llp->lnd_effic < LAND_MINEFF) { if (llp->lnd_own && llp->lnd_effic < LAND_MINEFF) {
makelost(EF_LAND, llp->lnd_own, llp->lnd_uid, makelost(EF_LAND, llp->lnd_own, llp->lnd_uid,
llp->lnd_x, llp->lnd_y); llp->lnd_x, llp->lnd_y);

View file

@ -51,7 +51,6 @@ makelost(short type, natid owner, short id, coord x, coord y)
lost.lost_id = id; lost.lost_id = id;
lost.lost_x = x; lost.lost_x = x;
lost.lost_y = y; lost.lost_y = y;
time(&lost.lost_timestamp);
putlost(n, &lost); putlost(n, &lost);
} }
@ -66,7 +65,6 @@ makenotlost(short type, natid owner, short id, coord x, coord y)
return; return;
getlost(n, &lost); getlost(n, &lost);
lost.lost_owner = 0; lost.lost_owner = 0;
lost.lost_timestamp = 0;
putlost(n, &lost); putlost(n, &lost);
} }

View file

@ -56,7 +56,6 @@ nat_reset(struct natstr *natp, enum nat_status stat, coord x, coord y)
struct realmstr newrealm; struct realmstr newrealm;
struct range absrealm; struct range absrealm;
char buf[1024]; char buf[1024];
time_t now = time(NULL);
int i; int i;
natp->nat_stat = stat; natp->nat_stat = stat;
@ -76,7 +75,6 @@ nat_reset(struct natstr *natp, enum nat_status stat, coord x, coord y)
newrealm.r_xh = absrealm.hx; newrealm.r_xh = absrealm.hx;
newrealm.r_yl = absrealm.ly; newrealm.r_yl = absrealm.ly;
newrealm.r_yh = absrealm.hy; newrealm.r_yh = absrealm.hy;
newrealm.r_timestamp = now;
putrealm(&newrealm); putrealm(&newrealm);
} }
if (players_at_00) { if (players_at_00) {

View file

@ -88,11 +88,6 @@ nuk_prewrite(int n, void *ptr)
np->nuk_effic = 0; np->nuk_effic = 0;
} }
np->ef_type = EF_NUKE;
np->nuk_uid = n;
time(&np->nuk_timestamp);
getnuke(n, &nuke); getnuke(n, &nuke);
return 1; return 1;

View file

@ -131,11 +131,6 @@ pln_prewrite(int n, void *ptr)
} }
} }
} }
pp->ef_type = EF_PLANE;
pp->pln_uid = n;
time(&pp->pln_timestamp);
getplane(n, &plane); getplane(n, &plane);
return 1; return 1;

View file

@ -68,8 +68,6 @@ sct_prewrite(int id, void *ptr)
struct sctstr *sp = ptr; struct sctstr *sp = ptr;
struct sctstr sect; struct sctstr sect;
time(&sp->sct_timestamp);
bridge_damaged(sp, NULL); bridge_damaged(sp, NULL);
checksect(sp); checksect(sp);
getsect(sp->sct_x, sp->sct_y, &sect); getsect(sp->sct_x, sp->sct_y, &sect);

View file

@ -71,11 +71,6 @@ shp_prewrite(int n, void *ptr)
struct plnstr *pp; struct plnstr *pp;
int i; int i;
sp->ef_type = EF_SHIP;
sp->shp_uid = n;
time(&sp->shp_timestamp);
if (sp->shp_own != 0 && sp->shp_effic < SHIP_MINEFF) { if (sp->shp_own != 0 && sp->shp_effic < SHIP_MINEFF) {
mpr(sp->shp_own, "\t%s sunk!\n", prship(sp)); mpr(sp->shp_own, "\t%s sunk!\n", prship(sp));
makelost(EF_SHIP, sp->shp_own, sp->shp_uid, sp->shp_x, sp->shp_y); makelost(EF_SHIP, sp->shp_own, sp->shp_uid, sp->shp_x, sp->shp_y);

View file

@ -58,7 +58,6 @@ delete_lostitems(void *unused)
if (lost.lost_timestamp > (now - lost_items_timeout)) if (lost.lost_timestamp > (now - lost_items_timeout))
continue; continue;
lost.lost_owner = 0; lost.lost_owner = 0;
lost.lost_timestamp = 0;
putlost(n, &lost); putlost(n, &lost);
ncnt++; ncnt++;
} }