Sectors need space for items, deliveries and distribution thresholds.
To save space, the ancients invented `variables': a collection of key-value pairs, missing means zero value, space for `enough' keys. This complicates the code, as assigning to a `variable' can fail for lack of space. Over time, `enough' increased, and for quite some time now `variables' have been *wasting* space. This changeset replaces them, except in struct mchrstr, struct lchrstr and struct pchrstr, where they are read-only, and will be replaced later. It is only a first step; further cleanup is required. To simplify and minimize this necessarily huge changeset, the new item[] arrays have an unused slot 0, and the old variable types V_CIVIL, ... are still defined, but must have the same values as the item types I_CIVIL, ...
This commit is contained in:
parent
ba86513b01
commit
eccc5cb7d7
86 changed files with 853 additions and 1226 deletions
|
@ -423,9 +423,8 @@ ef_mtime(int type)
|
|||
return fdate(empfile[type].fd);
|
||||
}
|
||||
|
||||
int
|
||||
ef_vars(int type, register s_char *sp, u_char **nvp, u_char **vp,
|
||||
u_short **ap)
|
||||
u_short *
|
||||
ef_items(int type, void *sp)
|
||||
{
|
||||
register struct empfile *ef;
|
||||
|
||||
|
@ -433,11 +432,8 @@ ef_vars(int type, register s_char *sp, u_char **nvp, u_char **vp,
|
|||
return 0;
|
||||
ef = &empfile[type];
|
||||
if ((ef->flags & EFF_COM) == 0)
|
||||
return -1;
|
||||
*nvp = (u_char *)(sp + ef->varoffs[0]);
|
||||
*vp = (u_char *)(sp + ef->varoffs[1]);
|
||||
*ap = (u_short *)(sp + ef->varoffs[2]);
|
||||
return ef->maxvars;
|
||||
return 0;
|
||||
return (u_short *)((char *)sp + ef->itemoffs);
|
||||
}
|
||||
|
||||
int
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue