};
struct castr treaty_ca[] = {
- /* FIXME disclose only to cna, cnb */
{NSC_SHORT, 0, 0, fldoff(trtstr, trt_uid), "uid", EF_TREATY},
{NSC_NATID, 0, 0, fldoff(trtstr, trt_cna), "cna", EF_NATION},
{NSC_NATID, 0, 0, fldoff(trtstr, trt_cnb), "cnb", EF_NATION},
};
struct castr loan_ca[] = {
- /* FIXME disclose only to loaner, loanee and partially to all if signed */
{NSC_SHORT, 0, 0, fldoff(lonstr, l_uid), "uid", EF_LOAN},
{NSC_NATID, 0, 0, fldoff(lonstr, l_loner), "loaner", EF_NATION},
{NSC_NATID, 0, 0, fldoff(lonstr, l_lonee), "loanee", EF_NATION},
};
struct castr news_ca[] = {
- /* FIXME if HIDDEN disclose requires contact with actor and victim, and new */
{NSC_SHORT, 0, 0, fldoff(nwsstr, nws_uid), "uid", EF_NEWS},
{NSC_NATID, 0, 0, fldoff(nwsstr, nws_ano), "actor", EF_NATION},
{NSC_CHAR, 0, 0, fldoff(nwsstr, nws_vrb), "action", EF_NEWS_CHR},
EF_BAD},
{NSC_FLOAT, 0, 0, fldoff(natstr, nat_level[NAT_HLEV]), "happiness",
EF_BAD},
- /* FIXME nat_b[] */
{NSC_SHORT, 0, MAXNOC, fldoff(natstr, nat_relate), "relations",
EF_NATION_RELATIONS},
{NSC_UCHAR, NSC_DEITY, MAXNOC, fldoff(natstr, nat_contact), "contacts",
{NSC_NOTYPE, 0, 0, 0, NULL, EF_BAD}
};
+struct castr cou_ca[] = {
+ {NSC_NATID, 0, 0, fldoff(natstr, nat_cnum), "cnum", EF_NATION},
+ {NSC_CHAR, 0, 0, fldoff(natstr, nat_stat), "stat",
+ EF_NATION_STATUS},
+ {NSC_STRINGY, 0, 20, fldoff(natstr, nat_cnam), "cname", EF_BAD},
+ {NSC_NOTYPE, 0, 0, 0, NULL, EF_BAD}
+};
+
struct castr realm_ca[] = {
{NSC_SHORT, 0, 0, fldoff(realmstr, r_uid), "uid", EF_REALM},
{NSC_NATID, 0, 0, fldoff(realmstr, r_cnum), "cnum", EF_NATION},
static void ef_open_srv(void);
static void ef_close_srv(void);
+static int ef_init_view(int, int);
+static void ef_fina_view(int);
/*
* Initialize empfile for full server operations.
failed |= !ef_open(EF_COMM, 0);
failed |= !ef_open(EF_LOST, 0);
failed |= !ef_open(EF_REALM, EFF_MEM);
+ failed |= ef_init_view(EF_COUNTRY, EF_NATION);
if (failed) {
logerror("Missing files, giving up");
exit(EXIT_FAILURE);
static void
ef_close_srv(void)
{
+ ef_fina_view(EF_COUNTRY);
ef_close(EF_NATION);
ef_close(EF_SECTOR);
ef_close(EF_SHIP);
ef_close(EF_LOST);
ef_close(EF_REALM);
}
+
+static int
+ef_init_view(int type, int base)
+{
+ if (CANT_HAPPEN(!(empfile[base].flags & EFF_MEM)))
+ return -1;
+ empfile[type].cache = empfile[base].cache;
+ empfile[type].csize = empfile[base].csize;
+ empfile[type].flags |= EFF_MEM;
+ empfile[type].baseid = empfile[base].baseid;
+ empfile[type].cids = empfile[base].cids;
+ empfile[type].fids = empfile[base].fids;
+ return 0;
+}
+
+static void
+ef_fina_view(int type)
+{
+ empfile[type].cache = NULL;
+}