]> git.pond.sub.org Git - empserver/log
empserver
16 years agoUpdate example to current output.
Markus Armbruster [Tue, 10 Jul 2007 21:15:53 +0000 (21:15 +0000)]
Update example to current output.

16 years agoFix indentation.
Markus Armbruster [Tue, 10 Jul 2007 21:03:22 +0000 (21:03 +0000)]
Fix indentation.

16 years agoFix .SA.
Markus Armbruster [Tue, 10 Jul 2007 21:00:49 +0000 (21:00 +0000)]
Fix .SA.

16 years agoClarify. Improve .SA.
Markus Armbruster [Tue, 10 Jul 2007 20:54:15 +0000 (20:54 +0000)]
Clarify.  Improve .SA.

16 years agoFix for N_WELCH_DEAL, N_LND_LOSE, N_BOARD_LAND.
Markus Armbruster [Tue, 10 Jul 2007 20:49:07 +0000 (20:49 +0000)]
Fix for N_WELCH_DEAL, N_LND_LOSE, N_BOARD_LAND.

16 years ago(EMPCFONLYC, EMPCFBOTH): Rename parameter num to flags.
Markus Armbruster [Tue, 10 Jul 2007 18:27:24 +0000 (18:27 +0000)]
(EMPCFONLYC, EMPCFBOTH): Rename parameter num to flags.

16 years ago(natstr): Simplify encoding of member nat_update. Users changed.
Markus Armbruster [Tue, 10 Jul 2007 17:48:57 +0000 (17:48 +0000)]
(natstr): Simplify encoding of member nat_update.  Users changed.
(WUPD_WANT): Unused, remove.

16 years ago(zdon): Simplify. Also gets rid of a compiler warning.
Markus Armbruster [Tue, 10 Jul 2007 17:28:23 +0000 (17:28 +0000)]
(zdon): Simplify.  Also gets rid of a compiler warning.

16 years agoFix the previous revision.
Markus Armbruster [Tue, 10 Jul 2007 16:44:57 +0000 (16:44 +0000)]
Fix the previous revision.

16 years ago(opt_DEMANDUPDATE): Remove. Deities can use update_demandpolicy to
Markus Armbruster [Sun, 8 Jul 2007 15:26:23 +0000 (15:26 +0000)]
(opt_DEMANDUPDATE): Remove.  Deities can use update_demandpolicy to
control demand updates.

16 years ago(prnat): Show nat_missed even when opt_DEMANDUPDATE is off, because
Markus Armbruster [Sun, 8 Jul 2007 11:46:49 +0000 (11:46 +0000)]
(prnat): Show nat_missed even when opt_DEMANDUPDATE is off, because
docountry() lets you edit it even then.

16 years ago(journal_entry): Silence compiler warning in previous revision.
Markus Armbruster [Sun, 27 May 2007 14:00:59 +0000 (14:00 +0000)]
(journal_entry): Silence compiler warning in previous revision.

16 years ago(player): Remove unused member blitz_time.
Markus Armbruster [Sun, 27 May 2007 13:36:14 +0000 (13:36 +0000)]
(player): Remove unused member blitz_time.

16 years ago(show_nuke_build, show_nuke_capab): Fix rounding of research.
Markus Armbruster [Sun, 13 May 2007 14:39:42 +0000 (14:39 +0000)]
(show_nuke_build, show_nuke_capab): Fix rounding of research.
Reported by Doug Wescott.

17 years agoSpelling fixes.
Markus Armbruster [Mon, 9 Apr 2007 09:36:28 +0000 (09:36 +0000)]
Spelling fixes.

17 years ago(powe): Don't tell user to run power new when it is disabled by
Markus Armbruster [Sat, 24 Mar 2007 17:31:36 +0000 (17:31 +0000)]
(powe): Don't tell user to run power new when it is disabled by
AUTO_POWER.

17 years ago(journal_entry): Print unprintable characters in octal instead of a question mark.
Ron Koenderink [Tue, 13 Mar 2007 13:48:11 +0000 (13:48 +0000)]
(journal_entry): Print unprintable characters in octal instead of a question mark.

17 years ago(S_IRUSR, S_IWUSR, S_IEUSR, S_IRWXU,
Ron Koenderink [Sun, 11 Mar 2007 21:29:37 +0000 (21:29 +0000)]
(S_IRUSR, S_IWUSR, S_IEUSR, S_IRWXU,
S_IRGRP, S_IWGRP, S_IEGRP, S_IRWXG,
S_IROTH, S_IWOTH, S_IEOTH, S_IRWXO) [_WIN32]:
Add #ifndef for standard defines as the the MinGW environment has the
user defines already created.  Correct EXEC permision to use S_IEXEC.
Set the group and other permssions to 0 as they do not exist in WIN32.

17 years ago(new): Switch permissions to standard defines instead of magic numbers
Ron Koenderink [Sat, 10 Mar 2007 19:23:44 +0000 (19:23 +0000)]
(new): Switch permissions to standard defines instead of magic numbers
to improve portability.

17 years ago(journal_entry): Add unsigned char cast to isprint() call.
Ron Koenderink [Sat, 10 Mar 2007 18:12:29 +0000 (18:12 +0000)]
(journal_entry): Add unsigned char cast to isprint() call.
(parse): Add unsigned char cast to isspace() call.
Portability bug fix for WIN32.

17 years ago(add, disa, ef_open, logerror, main): Switch permissions to
Ron Koenderink [Sat, 10 Mar 2007 16:29:51 +0000 (16:29 +0000)]
(add, disa, ef_open, logerror, main): Switch permissions to
standard defines instead of magic numbers to improve portability.
Also define WIN32 equivalents to the standard defines.

17 years ago(main): Enable group file permissions.
Ron Koenderink [Mon, 5 Mar 2007 13:31:56 +0000 (13:31 +0000)]
(main): Enable group file permissions.
Makes the group file permissions consist with the rest of the server.

17 years ago(main.c) [_WIN32,WIN32]: Remove the define WIN32.
Ron Koenderink [Mon, 5 Mar 2007 02:43:28 +0000 (02:43 +0000)]
(main.c) [_WIN32,WIN32]: Remove the define WIN32.
Not required for VC8.

17 years ago(init_server): Move log_init() before the mobility_init() so its errors are logged
Ron Koenderink [Mon, 5 Mar 2007 02:40:18 +0000 (02:40 +0000)]
(init_server): Move log_init() before the mobility_init() so its errors are logged
to the server log.

17 years ago(main): Remove the resetting of file permissions.
Ron Koenderink [Mon, 5 Mar 2007 02:03:33 +0000 (02:03 +0000)]
(main): Remove the resetting of file permissions.
This will be prevent some file permissions being changed
unexpectly when running the files command.

17 years ago(logerror): Remove the permissions for others to view the game log file.
Ron Koenderink [Mon, 5 Mar 2007 01:58:54 +0000 (01:58 +0000)]
(logerror): Remove the permissions for others to view the game log file.

17 years ago(logerror): Ensure that logerror() only writes to the log file after log_init()
Ron Koenderink [Sat, 3 Mar 2007 15:23:32 +0000 (15:23 +0000)]
(logerror): Ensure that logerror() only writes to the log file after log_init()
has been called

17 years ago(nuk_on_plane): Ignore destroyed nukes when searching for the nuke that
Ron Koenderink [Sat, 3 Mar 2007 15:12:57 +0000 (15:12 +0000)]
(nuk_on_plane): Ignore destroyed nukes when searching for the nuke that
belongs to a particular plane.

17 years ago(kaboom): Print at least one set of "O O "s.
Ron Koenderink [Sat, 3 Mar 2007 15:09:43 +0000 (15:09 +0000)]
(kaboom): Print at least one set of "O O "s.

17 years ago(empth_create) [_WIN32]: Fix the error return code check for
Ron Koenderink [Sat, 24 Feb 2007 14:05:21 +0000 (14:05 +0000)]
(empth_create) [_WIN32]: Fix the error return code check for
the call to _beginthread() to check for 1L instead of -1.

17 years ago[_WIN32,WIN32]: Remove the define WIN32.
Ron Koenderink [Sat, 24 Feb 2007 13:39:07 +0000 (13:39 +0000)]
[_WIN32,WIN32]: Remove the define WIN32.
Not required for VC8.

17 years ago(accept.c, io.c, nthread.c, tcp_listen.c) [_WIN32,WIN32]:
Ron Koenderink [Fri, 23 Feb 2007 22:51:30 +0000 (22:51 +0000)]
(accept.c, io.c, nthread.c, tcp_listen.c) [_WIN32,WIN32]:
Remove the define WIN32.
Not required for VC8.

17 years ago(add.c, disa.c, log.c, new.c, wantupd.c, wu.c) [_WIN32,__GNUC__]:
Ron Koenderink [Fri, 23 Feb 2007 22:35:50 +0000 (22:35 +0000)]
(add.c, disa.c, log.c, new.c, wantupd.c, wu.c) [_WIN32,__GNUC__]:
Remove the !defined(__GNUC__) for <io.h>.
Not required for VC8.

17 years ago(shut): Remove unused local variables.
Ron Koenderink [Thu, 22 Feb 2007 21:48:23 +0000 (21:48 +0000)]
(shut): Remove unused local variables.

17 years agoSemaphores are no longer used, remove:
Markus Armbruster [Thu, 8 Feb 2007 12:29:16 +0000 (12:29 +0000)]
Semaphores are no longer used, remove:
(empth_sem_t, empth_sem_create, empth_sem_signal, empth_sem_wait):
Remove.
[EMPTH_LWP] (lwpSem, lwpCreateSem, lwpSignal, lwpWait): Remove.
[EMPTH_W32] (loc_sem): Remove.

17 years agoRewrite how updates are triggered (closes #1504036):
Markus Armbruster [Thu, 8 Feb 2007 11:54:31 +0000 (11:54 +0000)]
Rewrite how updates are triggered (closes #1504036):
(update_init, update_sched, update_run, update_wait): Don't create a
separate UpdateSched thread, run update_sched() in the Update thread.
Run the update by calling update_run() instead of by signalling its
thread.  update_run() replaces update_wait(); it just runs the update
and returns instead of waiting for the signal to update in a loop.
Move initialization of the Update thread's *player to its new thread
entry point.
(update_sem, update_init): Remove update_sem.
(update_thread): New.
(update_init): Initialize it.
(update_forced): New.
(update_trigger, update_force): Wake up update_thread with
update_force set.
(update_sched): Reset it before sleep, test it after sleep so that
schedule checking is only done for scheduled updates, not forced
updates.

(update_sched, update_init): Move sanity test of s_p_etu to
update_init().

17 years agoMake empth_wakeup() and empth_terminate() wake up empth_sleep(), and
Markus Armbruster [Thu, 8 Feb 2007 11:26:43 +0000 (11:26 +0000)]
Make empth_wakeup() and empth_terminate() wake up empth_sleep(), and
empth_sleep() return whether that happened:
[EMPTH_LWP] (lwpWakeupSleep): New, factored out of lwpSelect().
[EMPTH_LWP] (lwpSelect): Use it.
[EMPTH_LWP] (lwpWakeup): New.  Call lwpWakeupFd() if sleeping in
lwpSleepFd(), lwpWakeupSleep() if sleeping in lwpSleepUntil().
[EMPTH_LWP] (lwpTerminate, empth_wakeup): Use it rather than
lwpWakeupFd().
[EMPTH_LWP] (lwpWakeupFd): Internal linkage.
[EMPTH_LWP] (lwpSleepUntil): Reset member runtime, so that lwpWakeup()
can test it reliably.  Return how sleep woke up.
[EMPTH_LWP] (empth_sleep): Return value of lwpSleepUntil().
[EMPTH_POSIX] (EMPTH_INTR): New.
[EMPTH_POSIX] (empth_wakeup): Set state to it.
[EMPTH_POSIX] (empth_restorectx): Clear state.
[EMPTH_POSIX] (empth_sleep): Don't re-seleep when state is not clear,
i.e. thread was woken up prematurely.  Return how sleep woke up.
[EMPTH_W32] (empth_sleep): Implement by waiting on hThreadEvent with a
timeout rather than a straight Sleep().  Return how sleep woke up.

17 years agoSimplify. Should also be more efficient.
Markus Armbruster [Wed, 31 Jan 2007 20:23:07 +0000 (20:23 +0000)]
Simplify.  Should also be more efficient.
(LwpSigCheck): New.
(lwpCatchAwaitedSig): Set it.
(lwpSigWait): Clear it.
(lwpSigWakeup): Test it.
(lwpSigWakeup): Unblock LwpSigWaiter without testing LwpSigCatched.
(lwpSigWait): Test LwpSigCatched after wakeup.
(LwpSigAwaited, LwpSigPtr): Remove.

17 years agoClean up after removal of wait command:
Markus Armbruster [Wed, 31 Jan 2007 06:08:39 +0000 (06:08 +0000)]
Clean up after removal of wait command:
(player_wakeup_all, player_wakeup): Remove.  Callers changed.
(player): Remove member waiting.

17 years agoRev. 1.16 included time.h to get time_t. Change to sys/types.h.
Markus Armbruster [Sun, 28 Jan 2007 17:22:43 +0000 (17:22 +0000)]
Rev. 1.16 included time.h to get time_t.  Change to sys/types.h.

17 years ago(lwp_rwlock_destroy): Plug memory leak.
Markus Armbruster [Sun, 28 Jan 2007 17:02:46 +0000 (17:02 +0000)]
(lwp_rwlock_destroy): Plug memory leak.

17 years ago(empth_exit, empth_rwlock_destroy): Plug memory leaks.
Markus Armbruster [Sun, 28 Jan 2007 16:59:15 +0000 (16:59 +0000)]
(empth_exit, empth_rwlock_destroy): Plug memory leaks.

17 years ago(lwpSetDesc): Unused, remove.
Markus Armbruster [Sun, 28 Jan 2007 16:40:27 +0000 (16:40 +0000)]
(lwpSetDesc): Unused, remove.

[EMPTH_LWP] (lwpProc): Remove member desc.
[EMPTH_LWP] (lwpCreate, lwpDestroy): Don't initialize / finalize it.

[EMPTH_POSIX] (empth_t): Remove member desc.
[EMPTH_POSIX] (empth_init, empth_create): Don't initialize it.

[EMPTH_W32] (loc_Thread): Remove member szDesc.
[EMPTH_W32] (empth_init, empth_create): Don't initialize it.

(empth_create, lwpCreate): Remove parameter desc.  Callers changed.

17 years ago(lwpCreate): Initialize members runtime and fd. Initializing fd is
Markus Armbruster [Sun, 28 Jan 2007 14:34:34 +0000 (14:34 +0000)]
(lwpCreate): Initialize members runtime and fd.  Initializing fd is
necessary to make lwpWakeupFd() work reliably.  Initializing runtime
isn't strictly necessary, as it is used only while the thread is on
LwpDelayq, and putting it there sets runtime.

17 years ago(lwpProc): Change type of member runtime to time_t.
Markus Armbruster [Sun, 28 Jan 2007 14:14:40 +0000 (14:14 +0000)]
(lwpProc): Change type of member runtime to time_t.
(lwpSleepUntil): Change type of parameter to time_t.

17 years ago(LWP_CHECKMARK): Change to int. Should have been done in rev. 1.14.
Markus Armbruster [Sun, 28 Jan 2007 10:17:35 +0000 (10:17 +0000)]
(LWP_CHECKMARK): Change to int.  Should have been done in rev. 1.14.

17 years ago(unit_path): Replace mpr() with pr() as unit_path() is only called
Ron Koenderink [Sat, 27 Jan 2007 02:31:08 +0000 (02:31 +0000)]
(unit_path): Replace mpr() with pr() as unit_path() is only called
from navigate or march command.

17 years ago(unit_view): Replace mpr() with pr() as unit_view() is only called
Ron Koenderink [Sat, 27 Jan 2007 02:20:30 +0000 (02:20 +0000)]
(unit_view): Replace mpr() with pr() as unit_view() is only called
from navigate or march command.

17 years ago(unit_view): New, create by expanding shp_view() to work for
Ron Koenderink [Sat, 27 Jan 2007 02:04:27 +0000 (02:04 +0000)]
(unit_view): New, create by expanding shp_view() to work for
land_unit as well.
(do_unit_move): Add view option for land units using unit_view().
Combine ship and land viewing using the unit_view().
(shp_view): Remove, not used any more, replaced by unit_view().

17 years ago(unit_path): New, create by combining shp_path() and lnd_path().
Ron Koenderink [Wed, 24 Jan 2007 23:24:37 +0000 (23:24 +0000)]
(unit_path): New, create by combining shp_path() and lnd_path().
(do_unit_move): Replace shp_path() and lnd_path() with unit_path().
(shp_path, lnd_path): Remove shp_path() and lnd_path(),
not used any more.

17 years ago(unit_put): New, create by combining shp_put() and lnd_put().
Ron Koenderink [Tue, 23 Jan 2007 23:51:02 +0000 (23:51 +0000)]
(unit_put): New, create by combining shp_put() and lnd_put().
(sail_nav_fleet, shp_nav_one_sector): Replace shp_put() with unit_put().
(lnd_mar_one_sector, att_fight, move_in_land): Replace lnd_put() with unit_put().
(shp_put, lnd_put): Remove.

17 years ago(unit_list): New, create by combining shp_list() and lnd_list().
Ron Koenderink [Tue, 23 Jan 2007 01:41:37 +0000 (01:41 +0000)]
(unit_list): New, create by combining shp_list() and lnd_list().
(do_unit_move): Replace call to shp_list() and lnd_list() with unit_list().
(shp_list, lnd_list): Remove, not needed, replaced by unit_list().

17 years ago(do_unit_move): Rename unit_list parameter to ulist
Ron Koenderink [Sun, 21 Jan 2007 23:11:59 +0000 (23:11 +0000)]
(do_unit_move): Rename unit_list parameter to ulist
to prevent a future conflict with unit_list().

17 years ago(ef_open_srv, start_server): Journal must not be written before
Markus Armbruster [Sun, 21 Jan 2007 17:58:01 +0000 (17:58 +0000)]
(ef_open_srv, start_server): Journal must not be written before
empth_init(), because writing calls empth_self().  Move call of
journal_startup().
(ef_close_srv, finish_server, panic): Move call of journal_shutdown()
for symmetry.

17 years agoFix server not to create a journal on SIGHUP when !keep_journal:
Markus Armbruster [Sun, 21 Jan 2007 17:34:22 +0000 (17:34 +0000)]
Fix server not to create a journal on SIGHUP when !keep_journal:
(journal_reopen): New.
(main): Use it.  Fixes failure to obey !keep_journal.
(journal_open): Internal linkage, changed semantics and return value.
Callers changed.
(journal_close): One caller left, inline and remove.

17 years ago(do_unit_move): Combine the two length checks and type check for
Ron Koenderink [Sun, 21 Jan 2007 12:28:40 +0000 (12:28 +0000)]
(do_unit_move): Combine the two length checks and type check for
printing the ship path into one if statement.  No functional changes.

17 years ago(PS_KILL): Nobody can observe this state, as player is deleted right
Markus Armbruster [Sun, 21 Jan 2007 12:16:54 +0000 (12:16 +0000)]
(PS_KILL): Nobody can observe this state, as player is deleted right
after entering it.  Remove.
(player_kill_idle, player_login): Simplify.

17 years ago(shutdwn): Take exclusive update lock for shutdown. This makes the
Markus Armbruster [Sun, 21 Jan 2007 12:04:16 +0000 (12:04 +0000)]
(shutdwn): Take exclusive update lock for shutdown.  This makes the
shutdown block until all aborted commands terminated and gave up their
lock.  Remove the cheesy one second wait for commands to finish.  This
also locks out further commands to execute during shutdown.  However,
it also makes it impossible to kill hung player threads here.  Rely on
player_kill_idle() for that.  That doesn't quite work right now,
because it leaves a stale shared lock behind, which blocks shutdown.

17 years ago(do_look): Make public.
Ron Koenderink [Sun, 21 Jan 2007 11:48:14 +0000 (11:48 +0000)]
(do_look): Make public.

(do_unit_move): Switch look() and llook() to use
do_look() instead.

17 years ago(do_unit_move): Change unit type to be determined at the
Ron Koenderink [Sun, 21 Jan 2007 11:39:52 +0000 (11:39 +0000)]
(do_unit_move): Change unit type to be determined at the
beginning of function instead using the leader.  The leader
becomes unknown when stopping or unit list becomes
empty.  This broke printing the path for ships.  Broken
in rev 1.43.

17 years ago(do_mob_ship): Combine to two duplicate blocks of code.
Ron Koenderink [Sun, 21 Jan 2007 11:38:04 +0000 (11:38 +0000)]
(do_mob_ship): Combine to two duplicate blocks of code.

17 years ago(do_look): New, created by combining by look() and llook().
Ron Koenderink [Sun, 21 Jan 2007 11:34:21 +0000 (11:34 +0000)]
(do_look): New, created by combining by look() and llook().

(look, llook): Use the do_look() and remove the unneeded code.

17 years agoUpdate known contributors comment.
Markus Armbruster [Sat, 20 Jan 2007 21:02:08 +0000 (21:02 +0000)]
Update known contributors comment.

17 years agoAbstract from shutdown initiation mechanism:
Markus Armbruster [Sat, 20 Jan 2007 20:40:52 +0000 (20:40 +0000)]
Abstract from shutdown initiation mechanism:
(shutdown_initiate): New.
(shut): Use it.  Shutdown in zero minutes no longer cancels the
shutdown, it just works.  Use negative argument to cancel.  Logging is
less detailed.
(shutdown_sequence): Internal linkage.

(pr_wall): All callers prefix text it with the same header.  Move it
into the function.

17 years ago(player_coms): Fix shutdown's c_form: first argument is not optional.
Markus Armbruster [Sat, 20 Jan 2007 20:19:16 +0000 (20:19 +0000)]
(player_coms): Fix shutdown's c_form: first argument is not optional.

17 years ago(getlandp, getloanp, getnatp, getnewsp, getnukep, getplanep)
Markus Armbruster [Sat, 20 Jan 2007 19:16:09 +0000 (19:16 +0000)]
(getlandp, getloanp, getnatp, getnewsp, getnukep, getplanep)
(getpowerp, getshipp, gettradep, gettrep): Fix insufficiently
parenthesized macro expansion.

17 years agoUpdate for flash.c rev. 1.20: flash and wall no longer break lines.
Markus Armbruster [Sat, 20 Jan 2007 18:59:49 +0000 (18:59 +0000)]
Update for flash.c rev. 1.20: flash and wall no longer break lines.

17 years ago(sendmessage): Don't split messages into lines of no more than 60
Markus Armbruster [Sat, 20 Jan 2007 16:32:35 +0000 (16:32 +0000)]
(sendmessage): Don't split messages into lines of no more than 60
characters.  Update info flash and wall.  They were wrong, anyway:
they claimed long messages were truncated.

17 years ago(coll): Fix freeing of repaid loan. The incorrectly freed loan
Markus Armbruster [Sat, 20 Jan 2007 15:57:25 +0000 (15:57 +0000)]
(coll): Fix freeing of repaid loan.  The incorrectly freed loan
continued to exist.  Fortunately, both shark and collect refused to
touch it.  fina() and repa() oopsed in loan_owed(), and recovered by
assuming (incorrectly!) a plausible debt.  Before trdsub.c rev. 1.7,
fina() catched and logged the bug, and ignored the loan, and repa()
computed a ridiculous debt.

17 years ago(do_unit_move): Move the shp_view() code in the switch case.
Ron Koenderink [Sat, 20 Jan 2007 12:56:55 +0000 (12:56 +0000)]
(do_unit_move): Move the shp_view() code in the switch case.
No functional changes.

17 years ago(do_unit_move): New, create from common code in navi() and march().
Ron Koenderink [Sat, 20 Jan 2007 02:21:10 +0000 (02:21 +0000)]
(do_unit_move): New, create from common code in navi() and march().

(navi, move): Use do_unit_move(), remove unneeded code.

(switch_leader, pr_leader_change, get_leader): Make static as only called
from marc.c.

17 years ago(pr_leader_change, get_leader, switch_leader): Move
Ron Koenderink [Sat, 20 Jan 2007 01:42:39 +0000 (01:42 +0000)]
(pr_leader_change, get_leader, switch_leader): Move
pr_leader_change(), get_leader() and switch_leader()
from marc.c to navi.c.

17 years ago(force, shut): Remove useless test of update pending. Commands are
Markus Armbruster [Fri, 19 Jan 2007 18:41:05 +0000 (18:41 +0000)]
(force, shut): Remove useless test of update pending.  Commands are
not dispatched while it is true.

17 years agoFix the previous revision.
Markus Armbruster [Fri, 19 Jan 2007 18:25:30 +0000 (18:25 +0000)]
Fix the previous revision.

17 years agoAbstract from update trigger mechanism:
Markus Armbruster [Fri, 19 Jan 2007 06:46:10 +0000 (06:46 +0000)]
Abstract from update trigger mechanism:
(update_trigger): New.
(force, zdon): Use it.
(update_sem, update_force): Internal linkage.

(update_trigger, update_force): Passing a pointer to static storage as
thread argument is racy.  Use dynamic allocation.

17 years agoClean up includes after the previous revision.
Markus Armbruster [Fri, 19 Jan 2007 06:34:45 +0000 (06:34 +0000)]
Clean up includes after the previous revision.

17 years ago(struct loc_Thread, empth_sem_wait, empth_sem_signal) [WIN32]:
Ron Koenderink [Thu, 18 Jan 2007 14:28:23 +0000 (14:28 +0000)]
(struct loc_Thread, empth_sem_wait, empth_sem_signal) [WIN32]:
Remove the semaphore mutex and replace with hThreadMutex instead

17 years ago(struct loc_RWLock_t): Rename struct loc_RWLock_t to struct loc_RWLock
Ron Koenderink [Thu, 18 Jan 2007 01:22:32 +0000 (01:22 +0000)]
(struct loc_RWLock_t): Rename struct loc_RWLock_t to struct loc_RWLock
as the struct loc_RWLock_t is not a typedef.  No functional changes.

17 years ago(struct loc_Sem_t): Rename struct loc_Sem_t to struct loc_Sem
Ron Koenderink [Thu, 18 Jan 2007 01:18:19 +0000 (01:18 +0000)]
(struct loc_Sem_t): Rename struct loc_Sem_t to struct loc_Sem
as the struct loc_Sem_t is not a typedef.  No functional changes.

17 years ago(struct loc_Thread_t): Rename struct loc_Thread_t to struct loc_Thread
Ron Koenderink [Thu, 18 Jan 2007 01:12:43 +0000 (01:12 +0000)]
(struct loc_Thread_t): Rename struct loc_Thread_t to struct loc_Thread
as the struct loc_Thread_t is not a typedef.  No functional changes.

17 years ago(empth_wait_for_signal) [WIN32]: Simplify empth_wait_for_signal()
Ron Koenderink [Thu, 18 Jan 2007 01:05:19 +0000 (01:05 +0000)]
(empth_wait_for_signal) [WIN32]: Simplify empth_wait_for_signal()
by combined the waiting for hShutdownEvent and hThreadMutex
using the optional parmeter added to loc_RunThisThread().

17 years agoRemove the wait command, it's been broken and restricted to deity
Markus Armbruster [Wed, 17 Jan 2007 20:04:03 +0000 (20:04 +0000)]
Remove the wait command, it's been broken and restricted to deity
since Empire 2, ca. 1995:
(wai): Remove.
(player_coms): Update accordingly.

17 years ago(ac_encounter): Called writemap() only for active sorties, and not
Markus Armbruster [Wed, 17 Jan 2007 19:52:12 +0000 (19:52 +0000)]
(ac_encounter): Called writemap() only for active sorties, and not
when update_pending.  This makes no sense.  The map is updated in
memory and not calling writemap() only delays the write back to disk.
Remove the conditional.

17 years ago(can_listen): Never returns; change return type to void.
Markus Armbruster [Wed, 17 Jan 2007 19:22:49 +0000 (19:22 +0000)]
(can_listen): Never returns; change return type to void.

17 years ago(recvclient): Fix race condition: when io_output_all() blocked, then
Markus Armbruster [Wed, 17 Jan 2007 19:13:53 +0000 (19:13 +0000)]
(recvclient): Fix race condition: when io_output_all() blocked, then
got unblocked by command abortion, it could then block in io_input().

17 years ago(check_all_markets): Don't flush tables to disk. Remaining code is
Markus Armbruster [Tue, 16 Jan 2007 20:50:31 +0000 (20:50 +0000)]
(check_all_markets): Don't flush tables to disk.  Remaining code is
trivial; inline function into its only caller and remove it.

17 years agoFuse market update and market check thread:
Markus Armbruster [Tue, 16 Jan 2007 20:46:32 +0000 (20:46 +0000)]
Fuse market update and market check thread:
(check_all_markets): No longer a thread entry point.  Remove the
parameter.  Remove *player setup.  Don't terminate the thread when
done.
(market_update): Call check_all_markets() instead of running it in its
own thread.  Set up *player for it.
(market_init): Create the fused update thread instead of the update
wait thread.

17 years ago(market_init): New.
Markus Armbruster [Tue, 16 Jan 2007 20:22:06 +0000 (20:22 +0000)]
(market_init): New.
(start_server): Call it.  Move initialization stuff to it, with error
checking added.
(market_update): Internal linkage.

17 years agoFuse update wait thread and update thread:
Markus Armbruster [Tue, 16 Jan 2007 20:06:27 +0000 (20:06 +0000)]
Fuse update wait thread and update thread:
(update_main): No longer a thread entry point.  Remove the parameter.
Remove *player setup.  Don't terminate the thread when done.
(update_pending): Move to src/server/update.c.
(update_wait): Call update_main() instead of running it in its own
thread.  Set up *player for it.
(update_init): Create the fused update thread instead of the update
wait thread.

17 years agoFix the previous revision.
Markus Armbruster [Tue, 16 Jan 2007 19:54:12 +0000 (19:54 +0000)]
Fix the previous revision.

17 years ago(exit_nomem): New.
Markus Armbruster [Tue, 16 Jan 2007 19:26:31 +0000 (19:26 +0000)]
(exit_nomem): New.

(update_init): New.
(start_server): Call it.
(start_server, update_sched): Move initialization stuff to it, with
error checking added.
(update_sched): Internal linkage.

17 years agoSynchronize commands and update properly with a lock (towards
Markus Armbruster [Mon, 15 Jan 2007 19:57:26 +0000 (19:57 +0000)]
Synchronize commands and update properly with a lock (towards
resolving #1458175 and #1504036):
(update_lock): New.
(update_shed): Initialize it.
(update_wait, dispatch): Take exclusive update_lock around the update,
shared update_lock around commands.  This makes the update block until
all aborted commands terminated and gave up their lock.  Remove the
cheesy and unsafe two second wait for commands to finish.  It also
makes player threads block before executing commands while the update
is pending, removing the need to fail commands then.  So don't.

17 years ago(struct loc_Thread_t, struct loc_Sem_t, hThreadStartEvent)
Ron Koenderink [Mon, 15 Jan 2007 13:34:33 +0000 (13:34 +0000)]
(struct loc_Thread_t, struct loc_Sem_t, hThreadStartEvent)
(loc_RunThisThread, empth_init, empth_create, empth_wait_for_signal)
[EMPTH_W32]: Remove some incorrect references to semaphones
in the comments.  No functional changes.

17 years ago(loc_RunThread, empth_init, empth_threadMain, empth_yield)
Ron Koenderink [Mon, 15 Jan 2007 12:45:35 +0000 (12:45 +0000)]
(loc_RunThread, empth_init, empth_threadMain, empth_yield)
(empth_select, empth_sleep, empth_wait_for_signal)
(empth_sem_wait) [EMPTH_W32]: Add the ability to wait additional
event in loc_RunThread() when acquiring the hThread mutex.

(empth_rwlock_t, empth_rwlock_create, empth_rwlock_destroy)
(empth_rwlock_wrlock, empth_rwlock_rdlock, empth_rwlock_unlock): New.

(empth_rwlock_t, empth_rwlock_create, empth_rwlock_destroy)
(empth_rwlock_wrlock, empth_rwlock_rdlock, empth_rwlock_unlock)
[EMPTH_W32]: WIN32 implementation.

(empth_rwlock_t, empth_rwlock_create, empth_rwlock_destroy)
(empth_rwlock_wrlock, empth_rwlock_rdlock, empth_rwlock_unlock)
(lwp_rwlock, lwp_rwlock_create, lwp_rwlock_destroy)
(lwp_rwlock_wrlock, lwp_rwlock_rdlock, lwp_rwlock_unlock)
[EMPTH_LWP]: LWP implementation.

(empth_rwlock_t, empth_rwlock_create, empth_rwlock_destroy)
(empth_rwlock_wrlock, empth_rwlock_rdlock, empth_rwlock_unlock)
[EMPTH_POSIX]: pthread implementation.

17 years ago(produce_sect): Use bp_put_items() after calls that may update vec[].
Markus Armbruster [Sun, 14 Jan 2007 10:07:37 +0000 (10:07 +0000)]
(produce_sect): Use bp_put_items() after calls that may update vec[].
This is more robust than using bp_put_item() for those elements of
vec[] that the call may change.  The old code missed some changes:
upd_buildeff() changing population when tearing down a big city,
enlist(), and produce().  The first two should have been harmless, the
last one made budget mispredict repairs when required materials were
produced in the same update.

17 years ago(do_feed, produce_sect): Move bp_put_item() calls from do_feed() to
Markus Armbruster [Sun, 14 Jan 2007 10:03:19 +0000 (10:03 +0000)]
(do_feed, produce_sect): Move bp_put_item() calls from do_feed() to
produce_sect(), for consistency with the other update functions that
update sct_item[].  Parameter bp is now unused, remove.

17 years ago(do_feed): Don't update sp->sct_avail for growing of emergency ration,
Markus Armbruster [Sun, 14 Jan 2007 09:46:30 +0000 (09:46 +0000)]
(do_feed): Don't update sp->sct_avail for growing of emergency ration,
that's the caller's job.

17 years agoFix the previous revision.
Markus Armbruster [Sun, 14 Jan 2007 09:38:09 +0000 (09:38 +0000)]
Fix the previous revision.

17 years ago(bp_put_items): New.
Markus Armbruster [Sun, 14 Jan 2007 09:11:25 +0000 (09:11 +0000)]
(bp_put_items): New.
(bp_set_from_sect): Use it.

17 years ago(produce_sect): Don't truncate population; that's already done in
Markus Armbruster [Sun, 14 Jan 2007 08:59:07 +0000 (08:59 +0000)]
(produce_sect): Don't truncate population; that's already done in
do_feed().