Commit graph

407 commits

Author SHA1 Message Date
e1420d2a14 (xundump): Fix parsing of XDUMP header (really!) and footer. 2005-12-02 19:22:27 +00:00
b2e18c5125 (xuflds): The way field separators were parsed lead to confusing
diagnostics on EOF.  Fix.  Also simplify treatment of newline.

(xuflds): Require identifiers to start with a letter.
2005-12-02 18:57:55 +00:00
1e4ecda185 (xundump): Fix parsing of XDUMP header. 2005-12-02 17:27:19 +00:00
aa63e64107 (xuflds): Test for no fields was off by one. Remove it; let caller
deal with missing fields.
2005-12-02 17:08:36 +00:00
f6bec2c3f7 (xuflds): Simplify test for space in values[]. 2005-12-02 17:05:25 +00:00
8d0ec9db08 (xundump): Improve diagnostics. Remove superflous check for
unexpected EOF.
2005-12-02 16:06:24 +00:00
8e6baf0bcb (xundump): Table names no longer contain whitespace. Simplify. 2005-12-01 20:00:15 +00:00
95a2523b9f (xuflds): Fix confusing diagnostics on unexpected EOF. 2005-12-01 19:28:31 +00:00
656b726a24 Plug memory leaks:
(freeflds): New.
(xundump): Call it.
(xuloadrow): Leave freeing storage to freeflds().
(xuflds): Ensure values[] is terminated with a VAL_NOTUSED element
even on error.
2005-12-01 19:12:54 +00:00
33912952bb Roll back to rev. 1.3 in preparation of a re-engineering of the
changes since then.
2005-12-01 18:56:41 +00:00
Ron Koenderink
65cda58286 (verify_row): Remove // comment.
Change %d to %ld when printing a long.
2005-12-01 00:39:05 +00:00
Ron Koenderink
40c821d28b (ef_init_srv): Add a call ef_verify() to verify game data and game
configuration consistency.

(ef_verify): New.  Verifies game data and game
configuration consistency.
2005-11-30 19:17:58 +00:00
Ron Koenderink
ea1e3b6090 (xuflds): Allow multiple spaces to separate fields or symbols in symbol set. 2005-11-30 17:16:02 +00:00
Ron Koenderink
e9ddf6a80b (xunsymbol): Fix formating. 2005-11-30 00:36:35 +00:00
Ron Koenderink
d223865d2b (xuloadrow): Add missing case for VAL_SYMBOL_SET for trailing
junk row check.

(xuskipcommentlines): Make the function static.
2005-11-30 00:33:37 +00:00
Ron Koenderink
bf94174f88 (xuflds, xunsymbol, xuloadrow): Split VAL_SYMBOL into
VAL_SYMBOL and VAL_SYMBOL_SET.  Identify SYMBOL_SET
by the '(' and ')'.  Switch SYMBOL_SET separator from '|' to a space.
2005-11-29 23:55:17 +00:00
Ron Koenderink
125af4b338 (xuskipcommentlines): Include the lines skipped in the line count. 2005-11-29 23:38:32 +00:00
Ron Koenderink
03121d44aa (xundump): Skip lines beginning with '#'.
These lines are considered comments.

(xuskipcommentlines): New.
2005-11-29 21:50:31 +00:00
803009d0ce (fillcache, do_write): Revert the previous revision. The portability
issue applies only to sockets, and EWOULDBLOCK isn't defined on all
systems.
2005-11-26 18:36:48 +00:00
edaa05b8cb (fillcache, do_write, io_input, io_output): Portability fix: always
check both EAGAIN and EWOULDBLOCK.  These are distinct on some
systems, e.g. HP-UX.
(io_output) [hpux]: Used to treat all errors as EWOULDBLOCK.  This
looks like a inept attempt to `fix' the above.  Remove.
2005-11-22 20:28:18 +00:00
661b650c1a (ef_write): Don't memcpy() onto itself; behavior's undefined. 2005-11-19 15:41:37 +00:00
Ron Koenderink
3fd64ccb48 (getcontact,putcontact): Generalize the interface back to an int.
Add range checks to prevent unexpected results.
2005-11-19 14:55:03 +00:00
d575d779ad (ef_ptr, ef_read): Undo rev. 1.52 for these two, because there are
callers that rely on these functions to fail for bad ID.
2005-11-19 11:20:13 +00:00
Ron Koenderink
762d39d905 (getcontact, putcontact, nat_contact): Change nat_contact
to unsigned char to reduce the space required for natstr.
2005-11-18 23:40:30 +00:00
Ron Koenderink
974af7130c (agecontact): Remove the opt_LOSE_CONTACT, the calling
procedure update_main() already has opt_LOSE_CONTACT check.
2005-11-18 23:02:51 +00:00
Ron Koenderink
09b2530d97 (getcontact, putcontact): Remove the bit shifting that was in the
function to save space.  opt_LOSE_CONTACT changes negated
any space saving.
2005-11-18 22:58:54 +00:00
Ron Koenderink
a2798857cf (fuel, load, prod, max_population, shp_nav_one_sector,
nav_loadship, upd_buildeff): Identify BIG_CITY
(IS_BIG_CITY) by using packing type of UPKG instead of
opt_BIG_CITY and sector type of SCT_CAPITAL.
2005-11-14 13:52:12 +00:00
Ron Koenderink
50e4ef3e39 (xunsymbol): Fix xunsymbol() to parse multiple symbols for a
symbol_set (NSC_BITS).
2005-11-13 01:45:39 +00:00
Ron Koenderink
ede257e8f2 (xundump): Add prototypes.h to get a prototype for
xundump().
2005-11-13 00:34:24 +00:00
Ron Koenderink
d8422caa84 (init_server, ef_load, xundump): Add ability to customize game
configurations.  The custom game configurations are loaded via
text files in the data directory.  Closes #752881.
2005-11-12 16:53:52 +00:00
4fb17a62c0 (ef_init_chr): Sentinel names are now null, simplify sentinel check. 2005-11-07 07:54:16 +00:00
5173f8cd07 (ef_ptr, ef_read): Oops on bad ID. Some callers rely on these
functions to fail at the end of the table.  To support that, the first
ID beyond the end is not considered bad.

(ef_ensure_space): Oops on bad ID.
2005-11-06 11:01:37 +00:00
41bf5be715 (UNMAPPED_INIT, UNMAPPED_CACHE, ARRAY_INIT, ARRAY_TABLE, PTR_INIT)
(PTR_CACHE): Rename.

(ARRAY_CACHE): New.
(empfile): Use it to set csize of elements EF_SHIP_CHR, EF_PLANE_CHR,
EF_LAND_CHR, EF_NUKE_CHR.
(ef_init_chr): Now that empfile[]'s initializer sets csize, remove the
temporary csize initialization here.  The value wasn't correct, but
better than nothing.
2005-11-03 18:25:26 +00:00
ae9e7dad43 (ef_ptr): Null cache can't happen. 2005-10-31 21:26:16 +00:00
4cbb45d0e0 (ef_open): EFF_STATIC and cache not null can't happen.
(ef_open): Leave check of fd to do_write().
2005-10-30 18:48:55 +00:00
05c8377e35 Doc fix. 2005-10-30 16:50:32 +00:00
e59f9a43d1 (ep): Global variable pointing to sector cache. Gross. Remove.
(bp_neighbors, bp_lbcost, pathcost): Replace pointer arithmetic by
array subscript.
2005-10-30 16:22:29 +00:00
b2ae3257ca (empfile): Rename member ef_uid to uid for consistency with other
members.

(empfile): Reorder members for clearer documentation.

(EFF_IMMUTABLE): New.
(EFF_OPEN): Remove, use ~EFF_IMMUTABLE.

(empfile): Don't initialize member size to a useless value for EF_MAP
and EF_BMAP.  ef_init() writes the real value.
2005-10-30 12:50:13 +00:00
Ron Koenderink
bb79c64b92 (ef_init_chr): Add a NULL check to sentinel check. 2005-10-29 20:38:59 +00:00
6c849f0334 (ef_init): Fix check for sentinel. 2005-10-29 16:50:07 +00:00
ae81dade53 (ef_init, ef_init_srv): Rename old ef_init() ef_init_srv(), call new
ef_init().  Move initialization of map sizes to ef_init().
(main): Don't initialize map sizes by hand, call ef_init().

(fileinit): Internal linkage.
2005-10-29 15:16:50 +00:00
6be5ba5d40 (ef_byname): Old version didn't work when a table name was followed by
one of its prefixes.  src/lib/global/file.c rev. 1.18 added such table
entries, and file.h rev. 1.34 made them visible to ef_byname().
Simply use stmtch().  This also rejects ambiguous abbreviations: "s"
used to return EF_SECTOR, it now returns M_NOTUNIQUE.
2005-10-29 06:18:41 +00:00
2fc1e74a72 (ef_byname_from): New.
(set, mission, multifire, fuel, cons_choose, cede): Use it instead of
ef_byname().  Remove the hacks to map unwanted results to wanted
results.  The hacks in set() were broken: bad input made the code cast
arbitrary items to union trdgenstr, with potentially disastrous
consequences.  Closes #906483 and #906486.

(set): Less cryptic prompt and diagnostics.
2005-10-27 21:33:17 +00:00
71908018ec (ef_open): Implement EFF_STATIC.
(ef_open): Simplify dynamic buffer allocation.
2005-10-26 16:49:52 +00:00
babf467e15 (EFF_STATIC): New.
(empfile): Use it.
(ef_open): Oops on it (not implemented).
(ef_close): Implement it (trivial).
2005-10-24 23:35:18 +00:00
889dfebaad (ef_nameof, ef_ensure_space): Oops on bad argument.
(ef_check): Use CANT_HAPPEN().
2005-10-24 23:27:18 +00:00
12b1427693 (ef_zapcache): Clearing the cache doesn't make sense. No harm done if
the next user can't use the cache, it gets automatically zapped then.
Remove.
2005-10-24 23:23:53 +00:00
ecab7c4f2f (ef_read): Catch null cache.
(ef_read): Used to get the file size again some circumstances; doesn't
make sense, as no other process may be writing this file.

(ef_write): Don't refuse to write beyond record 65536.  This module
can cope with that.  Some users have trouble long before that (short
record numbers), but that should be handled there.

(ef_write): Catch table not file-backed.
2005-10-24 23:16:13 +00:00
880a3e399b (ef_extend): Use do_write() & simplify. Catch table not file-backed.
Catch negative count; used to have no effect with EFF_MEM, and
confusion otherwise.  Try to recover from partially successful
extension.  Need help from ef_write() to do a better job; to be done.
2005-10-24 22:47:16 +00:00
62264f8ada (ef_extend): Fix rev. 1.25. 2005-10-24 22:44:29 +00:00