diff --git a/include/prototypes.h b/include/prototypes.h index 97e176a0..72ddaaa8 100644 --- a/include/prototypes.h +++ b/include/prototypes.h @@ -196,6 +196,7 @@ int real(void); int reco(void); int reje(void); int rela(void); +int relo(void); int repa(void); int repo(void); int rese(void); diff --git a/info/force.t b/info/force.t index 085a08bc..8b98689d 100644 --- a/info/force.t +++ b/info/force.t @@ -3,4 +3,4 @@ .LV Expert .SY "force" Force an update now. -.SA "enable, disable, shutdown, Deity" +.SA "enable, disable, reload, shutdown, Deity" diff --git a/info/reload.t b/info/reload.t new file mode 100644 index 00000000..62e0ed19 --- /dev/null +++ b/info/reload.t @@ -0,0 +1,7 @@ +.TH Command RELOAD +.NA reload "Reload server configuration and reopen log files" +.LV Expert +.SY "reload" +Reload server configuration and reopen log files. This allows proper +log rotation. Only the update schedule is reloaded at this time. +.SA "enable, disable, force, shutdown, Deity" diff --git a/src/lib/commands/relo.c b/src/lib/commands/relo.c new file mode 100644 index 00000000..4a21ba43 --- /dev/null +++ b/src/lib/commands/relo.c @@ -0,0 +1,58 @@ +/* + * Empire - A multi-player, client/server Internet based war game. + * Copyright (C) 1986-2007, Dave Pare, Jeff Bailey, Thomas Ruschak, + * Ken Stevens, Steve McClure + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * --- + * + * See files README, COPYING and CREDITS in the root of the source + * tree for related information and legal notices. It is expected + * that future projects/authors will amend these files as needed. + * + * --- + * + * relo.c: Re-read (some) configuration files + * + * Known contributors to this file: + * Markus Armbruster, 2007 + */ + +#include + +#include "commands.h" +#include "journal.h" +#include "server.h" + +int +relo(void) +{ + /* + * Like SIGHUP, plus friendly chatter. If you change anything + * here, also update the code that handles SIGHUP! + */ + + if (journal_reopen() < 0) { + pr("Can't reopen journal"); + return RET_SYS; + } + pr("Journal reopened.\n"); + + update_reschedule(); + pr("Reload of update schedule requested.\n"); + + return RET_OK; +} diff --git a/src/lib/player/empmod.c b/src/lib/player/empmod.c index c5ce6cd6..341df73d 100644 --- a/src/lib/player/empmod.c +++ b/src/lib/player/empmod.c @@ -204,6 +204,7 @@ struct cmndstr player_coms[] = { {"reject ", 2, reje, C_MOD, NORM}, {"relations [as-COUNTRY]", 0, rela, 0, VIS}, + {"reload", 0, relo, C_MOD, GOD}, {"repay ", 1, repa, C_MOD, NORM + MONEY + CAP}, {"report ", 0, repo, 0, VIS}, {"reset <0|price>", 1, rese, C_MOD, NORM + CAP},