handle.c
(interrupt): Internal linkage.
(interrupt): Use proper type for access from signal handler.
(intr): Don't increment to set, it's unobvious and it could overflow.
compiler command line. Don't bother to conditionalize code in .c
files that are only compiled when their thread package is used.
(_EMPTH_LWP, EMPTH_LWP, _EMPTH_POSIX, EMPTH_POSIX, _EMPTH_WIN32)
(EMPTH_W32): Identifiers beginning with an underscore and an uppercase
letter are reserved for any use. Rename.
descriptors was not portable. Simply use FD_SETSIZE instead. The
lower of the two applies, so this wastes storage if the system's limit
is significantly below FD_SETSIZE. Not an issue, as FD_SETSIZE is
fairly small.
(lwpSleepFd): Return if fd is too large. Returning isn't nice,
but better than the buffer overruns in the old code.
(lwpSelect): Member nfile unused, remove.
Move assignment of hostaddr and hostname from player_new() to
player_accept(). This solves the necessary of adding the socket include
file to prototypes.h for player_new(). The socket include file creates
a namespace conflict for WIN32.
and Autoconf macros that come with Automake. It supports multiple
separate builds of the same source tree, and updates dependencies
automatically. Targets info, html, install, install-html, uninstall
and dist are not yet implemented.
System configuration is now automatic. Previously, you had to choose
one of several canned system configurations, defined in Make.sysdefs.
Currently, system configuration always uses UCONTEXT for LWP, and
chooses LWP only if its requirements are met.
Feature configuration changed: instead of editing build.conf (further
processed by doconfig), you pass arguments to configure. Note that
build.conf settings that can be overridden in econfig have no
configure equivalent; just edit econfig instead.
Because generated headers complicate makefiles, fold gamesdef.h into
its users: path.c and ipglob.c become path.c.in and ipglob.c.in,
constants.c, vers.c, options.h simply hardcode defaults (most of them
are run-time configurable).
Call the client empire instead of emp_client. This matches what the
old standalone build did.
Add M_CANAL flag to indicate which ships can navigate a canal
in a big city. Remove the hard code values for canal from
shp_nav_one_sector() for which ships can navigate a canal.
Set M_CANAL flag in ship_chr_flags[] to match the hard
coding in shp_nav_one_sector().
Update Ship-types.t with new canal flag.
Update Sector-types.t to indicate that cities have canals.
machine-dependencies:
(lwpNewContext): New, factored out of lwpCreate().
(lwpSwitchContext): New, factored out of lwpReschedule().
(LWP_EXTRASTACK, STKALIGN, lwpInitContext, lwpSave, lwpRestore): Move
to arch.c. Remove for UCONTEXT, else static linkage unless macro or
AIX32.
(lwpReschedule): Skip lwpStatus() when not actually switching.
(LwpStackGrowsDown): New.
(lwpInitSystem): Initialize it.
(lwpStackCheck, lwpStackCheckUsed): Use it.
ustack, usize.
(lwpCreate): Initialize them.
(lwpStackCheckInit, lwpStackCheck, lwpStackCheckUsed): Rewrite using
them. lwpStackCheckUsed() was off by LWP_REDZONE when stack grows
down.
(lwpDestroy): Don't bother to clear memory to be freed.
(lwpCreate): Used to allocate one byte more than necessary. The fix
won't save memory (malloc() will add the byte back), it's just clearer
this way.
(lwpCreate): Clean up computation of sp. Rename parameter size to
stacksz.
(lwpCreate): Always compute newp->lowmark and newp->highmark from sp,
not from s. Old code misaligned newp->himark for stacks growing
upward when stack size argument wasn't aligned.
complete declaration to src/lib/lwp/lwpint.h.
(lwpQueue): Move to src/lib/lwp/lwpint.h.
(empth_main, empth_flags): New.
(empth_init): Initialize them.
(empth_create, empth_exit): Use them instead of lwpProc members.