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:
parent
a680c81110
commit
f33b96b1d1
11 changed files with 12 additions and 38 deletions
|
@ -50,9 +50,6 @@ state may not result in identical data files; besides the loss of
|
|||
floating-point precision just mentioned, coordinates are normalized,
|
||||
and characters beyond a string's terminating zero in a character array
|
||||
are lost.
|
||||
.SH "BUGS"
|
||||
Importing resets timestamps to zero. It should set them to the
|
||||
current time.
|
||||
.SH "SEE ALSO"
|
||||
\fIemp_server\fR(6).
|
||||
.SH AUTHOR
|
||||
|
|
|
@ -89,7 +89,6 @@ real(void)
|
|||
realm.r_xh = abs.hx - 1;
|
||||
realm.r_yl = abs.ly;
|
||||
realm.r_yh = abs.hy - 1;
|
||||
realm.r_timestamp = time(NULL);
|
||||
putrealm(&realm);
|
||||
list_realm(curr, natp);
|
||||
}
|
||||
|
|
|
@ -48,7 +48,7 @@
|
|||
|
||||
static int ef_realloc_cache(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);
|
||||
|
||||
/*
|
||||
|
@ -230,8 +230,10 @@ ef_flush(int type)
|
|||
* allowed only with EFF_MEM. Assume the whole cash is dirty
|
||||
* then.
|
||||
*/
|
||||
if (ep->flags & EFF_MEM)
|
||||
return do_write(ep, ep->cache, ep->baseid, ep->cids) >= 0;
|
||||
if (ep->flags & EFF_MEM) {
|
||||
if (do_write(ep, ep->cache, ep->baseid, ep->cids, time(NULL)) < 0)
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
@ -337,10 +339,11 @@ fillcache(struct empfile *ep, int start)
|
|||
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
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;
|
||||
char *p;
|
||||
|
@ -361,6 +364,7 @@ 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;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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))
|
||||
return 0; /* not implemented */
|
||||
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;
|
||||
}
|
||||
if (id >= ep->baseid && id < ep->baseid + ep->cids) {
|
||||
|
@ -440,6 +444,7 @@ ef_extend(int type, int count)
|
|||
struct empfile *ep;
|
||||
char *p;
|
||||
int i, id;
|
||||
time_t now = time(NULL);
|
||||
|
||||
if (ef_check(type) < 0)
|
||||
return 0;
|
||||
|
@ -464,7 +469,7 @@ ef_extend(int type, int count)
|
|||
p = ep->cache + id * ep->size;
|
||||
do_blank(ep, p, id, count);
|
||||
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;
|
||||
}
|
||||
ep->cids += count;
|
||||
|
@ -475,7 +480,7 @@ ef_extend(int type, int count)
|
|||
p = ep->cache + ep->cids * ep->size;
|
||||
for (i = 0; i < count; i++) {
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -118,11 +118,6 @@ lnd_prewrite(int n, void *ptr)
|
|||
struct plnstr *pp;
|
||||
int i;
|
||||
|
||||
llp->ef_type = EF_LAND;
|
||||
llp->lnd_uid = n;
|
||||
|
||||
time(&llp->lnd_timestamp);
|
||||
|
||||
if (llp->lnd_own && llp->lnd_effic < LAND_MINEFF) {
|
||||
makelost(EF_LAND, llp->lnd_own, llp->lnd_uid,
|
||||
llp->lnd_x, llp->lnd_y);
|
||||
|
|
|
@ -51,7 +51,6 @@ makelost(short type, natid owner, short id, coord x, coord y)
|
|||
lost.lost_id = id;
|
||||
lost.lost_x = x;
|
||||
lost.lost_y = y;
|
||||
time(&lost.lost_timestamp);
|
||||
putlost(n, &lost);
|
||||
}
|
||||
|
||||
|
@ -66,7 +65,6 @@ makenotlost(short type, natid owner, short id, coord x, coord y)
|
|||
return;
|
||||
getlost(n, &lost);
|
||||
lost.lost_owner = 0;
|
||||
lost.lost_timestamp = 0;
|
||||
putlost(n, &lost);
|
||||
}
|
||||
|
||||
|
|
|
@ -56,7 +56,6 @@ nat_reset(struct natstr *natp, enum nat_status stat, coord x, coord y)
|
|||
struct realmstr newrealm;
|
||||
struct range absrealm;
|
||||
char buf[1024];
|
||||
time_t now = time(NULL);
|
||||
int i;
|
||||
|
||||
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_yl = absrealm.ly;
|
||||
newrealm.r_yh = absrealm.hy;
|
||||
newrealm.r_timestamp = now;
|
||||
putrealm(&newrealm);
|
||||
}
|
||||
if (players_at_00) {
|
||||
|
|
|
@ -88,11 +88,6 @@ nuk_prewrite(int n, void *ptr)
|
|||
np->nuk_effic = 0;
|
||||
}
|
||||
|
||||
np->ef_type = EF_NUKE;
|
||||
np->nuk_uid = n;
|
||||
|
||||
time(&np->nuk_timestamp);
|
||||
|
||||
getnuke(n, &nuke);
|
||||
|
||||
return 1;
|
||||
|
|
|
@ -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);
|
||||
|
||||
return 1;
|
||||
|
|
|
@ -68,8 +68,6 @@ sct_prewrite(int id, void *ptr)
|
|||
struct sctstr *sp = ptr;
|
||||
struct sctstr sect;
|
||||
|
||||
time(&sp->sct_timestamp);
|
||||
|
||||
bridge_damaged(sp, NULL);
|
||||
checksect(sp);
|
||||
getsect(sp->sct_x, sp->sct_y, §);
|
||||
|
|
|
@ -71,11 +71,6 @@ shp_prewrite(int n, void *ptr)
|
|||
struct plnstr *pp;
|
||||
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) {
|
||||
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);
|
||||
|
|
|
@ -58,7 +58,6 @@ delete_lostitems(void *unused)
|
|||
if (lost.lost_timestamp > (now - lost_items_timeout))
|
||||
continue;
|
||||
lost.lost_owner = 0;
|
||||
lost.lost_timestamp = 0;
|
||||
putlost(n, &lost);
|
||||
ncnt++;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue