(EFF_STATIC): New.
(empfile): Use it. (ef_open): Oops on it (not implemented). (ef_close): Implement it (trivial).
This commit is contained in:
parent
62c80be94c
commit
babf467e15
3 changed files with 27 additions and 17 deletions
|
@ -73,6 +73,7 @@ struct empfile {
|
|||
/* Create table file, clobbering any existing file */
|
||||
#define EFF_CREATE bit(5)
|
||||
/* Table is allocated statically */
|
||||
#define EFF_STATIC bit(6)
|
||||
|
||||
/* Flags that may be passed to ef_open() */
|
||||
#define EFF_OPEN (EFF_MEM | EFF_RDONLY | EFF_CREATE)
|
||||
|
|
|
@ -94,6 +94,12 @@ ef_open(int type, int how)
|
|||
return 0;
|
||||
}
|
||||
ep->fids = fsiz / ep->size;
|
||||
|
||||
/* allocate cache */
|
||||
if (CANT_HAPPEN(ep->flags & EFF_STATIC)) {
|
||||
/* not implemented */
|
||||
ep->flags &= ~EFF_STATIC;
|
||||
}
|
||||
if (how & EFF_MEM)
|
||||
ep->csize = ep->fids;
|
||||
else
|
||||
|
@ -140,8 +146,10 @@ ef_close(int type)
|
|||
retval = ef_flush(type);
|
||||
ep = &empfile[type];
|
||||
ep->flags &= ~EFF_OPEN;
|
||||
free(ep->cache);
|
||||
ep->cache = NULL;
|
||||
if (!(ep->flags & EFF_STATIC)) {
|
||||
free(ep->cache);
|
||||
ep->cache = NULL;
|
||||
}
|
||||
if (close(ep->fd) < 0) {
|
||||
logerror("Error closing %s (%s)", ep->name, strerror(errno));
|
||||
retval = 0;
|
||||
|
|
|
@ -103,52 +103,53 @@ struct empfile empfile[] = {
|
|||
-1, -1, 0, 0, NULL, 0, lost_ca},
|
||||
|
||||
/* Static game data (configuation) */
|
||||
{EF_SECTOR_CHR, "sect chr", NULL, EFF_MEM,
|
||||
#define EFF_CFG (EFF_RDONLY | EFF_MEM | EFF_STATIC)
|
||||
{EF_SECTOR_CHR, "sect chr", NULL, EFF_CFG,
|
||||
sizeof(dchr[0]), NULL, NULL, NULL,
|
||||
-1, -1, 0, 0, (char *)dchr, 0, dchr_ca},
|
||||
{EF_SHIP_CHR, "ship chr", NULL, EFF_MEM,
|
||||
{EF_SHIP_CHR, "ship chr", NULL, EFF_CFG,
|
||||
sizeof(mchr[0]), NULL, NULL, NULL,
|
||||
-1, -1, 0, 0, (char *)mchr, 0, mchr_ca},
|
||||
{EF_PLANE_CHR, "plane chr", NULL, EFF_MEM,
|
||||
{EF_PLANE_CHR, "plane chr", NULL, EFF_CFG,
|
||||
sizeof(plchr[0]), NULL, NULL, NULL,
|
||||
-1, -1, 0, 0, (char *)plchr, 0, plchr_ca},
|
||||
{EF_LAND_CHR, "land chr", NULL, EFF_MEM,
|
||||
{EF_LAND_CHR, "land chr", NULL, EFF_CFG,
|
||||
sizeof(lchr[0]), NULL, NULL, NULL,
|
||||
-1, -1, 0, 0, (char *)lchr, 0, lchr_ca},
|
||||
{EF_NUKE_CHR, "nuke chr", NULL, EFF_MEM,
|
||||
{EF_NUKE_CHR, "nuke chr", NULL, EFF_CFG,
|
||||
sizeof(nchr[0]), NULL, NULL, NULL,
|
||||
-1, -1, 0, 0, (char *)nchr, 0, nchr_ca},
|
||||
#if 0
|
||||
/* FIXME rpt[] lacks sentinel, xdchr() doesn't terminate */
|
||||
{EF_, "news chr", NULL, EFF_MEM,
|
||||
{EF_, "news chr", NULL, EFF_CFG,
|
||||
sizeof(rpt[0]), NULL, NULL, NULL,
|
||||
-1, -1, 0, 0, (char *)rpt, 0, rpt_ca},
|
||||
#endif
|
||||
{EF_TREATY_CHR, "treaty chr", NULL, EFF_MEM,
|
||||
{EF_TREATY_CHR, "treaty chr", NULL, EFF_CFG,
|
||||
sizeof(tchr[0]), NULL, NULL, NULL,
|
||||
-1, -1, 0, 0, (char *)tchr, 0, tchr_ca},
|
||||
{EF_ITEM, "item", NULL, EFF_MEM,
|
||||
{EF_ITEM, "item", NULL, EFF_CFG,
|
||||
sizeof(ichr[0]), NULL, NULL, NULL,
|
||||
-1, -1, 0, 0, (char *)ichr, 0, ichr_ca},
|
||||
{EF_INFRASTRUCTURE, "infrastructure", NULL, EFF_MEM,
|
||||
{EF_INFRASTRUCTURE, "infrastructure", NULL, EFF_CFG,
|
||||
sizeof(intrchr[0]), NULL, NULL, NULL,
|
||||
-1, -1, 0, 0, (char *)intrchr, 0, intrchr_ca},
|
||||
{EF_PRODUCT, "product", NULL, EFF_MEM,
|
||||
{EF_PRODUCT, "product", NULL, EFF_CFG,
|
||||
sizeof(pchr[0]), NULL, NULL, NULL,
|
||||
-1, -1, 0, 0, (char *)pchr, 0, pchr_ca},
|
||||
{EF_TABLE, "table", NULL, EFF_MEM,
|
||||
{EF_TABLE, "table", NULL, EFF_CFG,
|
||||
sizeof(empfile[0]), NULL, NULL, NULL,
|
||||
-1, -1, 0, 0, (char *)empfile, 0, empfile_ca},
|
||||
{EF_SHIP_CHR_FLAGS, "ship chr flags", NULL, EFF_MEM,
|
||||
{EF_SHIP_CHR_FLAGS, "ship chr flags", NULL, EFF_CFG,
|
||||
sizeof(ship_chr_flags[0]), NULL, NULL, NULL,
|
||||
-1, -1, 0, 0, (char *)ship_chr_flags, 0, lookup_ca},
|
||||
{EF_PLANE_CHR_FLAGS, "plane chr flags", NULL, EFF_MEM,
|
||||
{EF_PLANE_CHR_FLAGS, "plane chr flags", NULL, EFF_CFG,
|
||||
sizeof(plane_chr_flags[0]), NULL, NULL, NULL,
|
||||
-1, -1, 0, 0, (char *)plane_chr_flags, 0, lookup_ca},
|
||||
{EF_LAND_CHR_FLAGS, "land chr flags", NULL, EFF_MEM,
|
||||
{EF_LAND_CHR_FLAGS, "land chr flags", NULL, EFF_CFG,
|
||||
sizeof(land_chr_flags[0]), NULL, NULL, NULL,
|
||||
-1, -1, 0, 0, (char *)land_chr_flags, 0, lookup_ca},
|
||||
{EF_NUKE_CHR_FLAGS, "nuke chr flags", NULL, EFF_MEM,
|
||||
{EF_NUKE_CHR_FLAGS, "nuke chr flags", NULL, EFF_CFG,
|
||||
sizeof(nuke_chr_flags[0]), NULL, NULL, NULL,
|
||||
-1, -1, 0, 0, (char *)nuke_chr_flags, 0, lookup_ca},
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue