]> git.pond.sub.org Git - empserver/blobdiff - src/lib/common/nsc.c
Record news more compactly
[empserver] / src / lib / common / nsc.c
index eb0348ee9574905790bcc065c2011ea6c26a844a..c237b5e0fd7a550773b4cee45f2bdd04c6f3372e 100644 (file)
@@ -67,6 +67,7 @@ static void *nsc_lnd_acc(struct valstr *, struct natstr *, void *);
 static void *nsc_lnd_dam(struct valstr *, struct natstr *, void *);
 static void *nsc_lnd_aaf(struct valstr *, struct natstr *, void *);
 static void *nsc_lchr(struct valstr *, struct natstr *, void *);
+static void *nsc_nws_timestamp(struct valstr *, struct natstr *, void *);
 
 /* Ugly hack to improve legibility by avoid long lines */
 #define fldoff(fld) offsetof(CURSTR, fld)
@@ -468,9 +469,7 @@ struct castr loan_ca[] = {
 
 struct castr news_ca[] = {
 #define CURSTR struct nwsstr
-    /* no need for uid as long as it's not referenced from other tables */
-    {"timestamp", fldoff(nws_timestamp), NSC_TIME, 0, NULL,
-     EF_BAD, NSC_EXTRA},
+    {"timestamp", 0, NSC_LONG, 0, nsc_nws_timestamp, EF_BAD, NSC_EXTRA},
     {"actor", fldoff(nws_ano), NSC_NATID, 0, NULL, EF_NATION, 0},
     {"action", fldoff(nws_vrb), NSC_UCHAR, 0, NULL, EF_NEWS_CHR, 0},
     {"victim", fldoff(nws_vno), NSC_NATID, 0, NULL, EF_NATION, 0},
@@ -915,3 +914,12 @@ nsc_lchr(struct valstr *val, struct natstr *np, void *ptr)
     val->val_as.sym.get = NULL;
     return lchr + ((struct lndstr *)ptr)->lnd_type;
 }
+
+static void *
+nsc_nws_timestamp(struct valstr *val, struct natstr *natp, void *ptr)
+{
+    struct nwsstr *np = ptr;
+
+    val->val_as.lng = np->nws_when + np->nws_duration;
+    return NULL;
+}