tUpdateConfigFile() now returns FALSE if it failed to write the config file; a … | |
git clone git://src.adamsgaard.dk/vaccinewars | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit d5e203347aa5c6bf3cc11244f826d4b77a848535 | |
parent d8129b26f75227b30e263238fae55e9cab967cec | |
Author: Ben Webb <[email protected]> | |
Date: Mon, 24 Jun 2002 11:36:53 +0000 | |
UpdateConfigFile() now returns FALSE if it failed to write the config file; | |
a new server command "save" can now be used to save the current configuration | |
tto a named file. | |
Diffstat: | |
M ChangeLog | 2 ++ | |
M TODO | 2 -- | |
M doc/servercommands.html | 8 +++++++- | |
M src/configfile.c | 17 ++++++++++------- | |
M src/configfile.h | 2 +- | |
M src/serverside.c | 42 +++++++++++++++++++++++------… | |
6 files changed, 51 insertions(+), 22 deletions(-) | |
--- | |
diff --git a/ChangeLog b/ChangeLog | |
t@@ -17,6 +17,8 @@ cvs | |
a user-specified high score file with privilege | |
- It is no longer necessary to run "dopewars -C" on a zero-byte high | |
score file; it will be converted automatically | |
+ - A new server command "save" can be used to save the current configuration | |
+ to a named config file | |
1.5.6 29-04-2002 | |
- Bug fix: the server will only let you pay back loans or deal with the | |
diff --git a/TODO b/TODO | |
t@@ -1,5 +1,3 @@ | |
-- Have an option in the graphical server to save the current configuration | |
- (wishlist item from SourceForge) | |
- Startscreen | |
- Track down server memory corruption bug! | |
- Implement server option to buy more than one bitch at a time in the Pub. | |
diff --git a/doc/servercommands.html b/doc/servercommands.html | |
t@@ -44,6 +44,12 @@ This is necessary if, for example, the client refuses to ac… | |
<dd>Broadcasts the message <i>Hi all!</i> to all players currently connected | |
to this server.</dd> | |
+<dt><b>save <i>my-conf</i></b></dt> | |
+<dd>Saves the current configuration (names of drugs, locations, etc.) to | |
+the file <i>my-conf</i>. If no file name is given, the configuration is | |
+written to the local configuration file - usually <tt>~/.dopewars</tt> on | |
+Unix systems and <tt>dopewars-config.txt</tt> on Windows.</dd> | |
+ | |
<dt><b>quit</b></dt> | |
<dd>Politely quit, by asking all clients to leave, and then terminating once | |
they have done so. An "impolite" quit, which is necessary if the clients fail | |
t@@ -60,6 +66,6 @@ command).</dd> | |
</ul> | |
</li> | |
</ul> | |
-<p>Last update: <b>13-05-2001</b></p> | |
+<p>Last update: <b>23-06-2002</b></p> | |
</body> | |
</html> | |
diff --git a/src/configfile.c b/src/configfile.c | |
t@@ -195,19 +195,21 @@ static void WriteConfigFile(FILE *fp) | |
} | |
} | |
-void UpdateConfigFile(gchar *cfgfile) | |
+gboolean UpdateConfigFile(const gchar *cfgfile) | |
{ | |
FILE *fp; | |
+ gchar *defaultfile; | |
static gchar *header = | |
"\n### Everything from here on is written automatically by\n" | |
"### the dopewars program; you can edit it manually, but any\n" | |
"### formatting (comments, etc.) will be lost at the next rewrite.\n\n"; | |
- if (!cfgfile) { | |
- cfgfile = GetLocalConfigFile(); | |
+ defaultfile = GetLocalConfigFile(); | |
+ if (!cfgfile || !cfgfile[0]) { | |
+ cfgfile = defaultfile; | |
if (!cfgfile) { | |
g_warning(_("Could not determine local config file to write to")); | |
- return; | |
+ return FALSE; | |
} | |
} | |
t@@ -220,13 +222,14 @@ void UpdateConfigFile(gchar *cfgfile) | |
gchar *errstr = ErrStrFromErrno(errno); | |
g_warning(_("Could not open file %s: %s"), cfgfile, errstr); | |
g_free(errstr); | |
- g_free(cfgfile); | |
- return; | |
+ g_free(defaultfile); | |
+ return FALSE; | |
} | |
ReadFileToString(fp, header, 50); | |
WriteConfigFile(fp); | |
fclose(fp); | |
- g_free(cfgfile); | |
+ g_free(defaultfile); | |
+ return TRUE; | |
} | |
diff --git a/src/configfile.h b/src/configfile.h | |
t@@ -25,6 +25,6 @@ | |
#include <glib.h> | |
-void UpdateConfigFile(const gchar *cfgfile); | |
+gboolean UpdateConfigFile(const gchar *cfgfile); | |
#endif /* __DP_CONFIGFILE_H__ */ | |
diff --git a/src/serverside.c b/src/serverside.c | |
t@@ -47,6 +47,7 @@ | |
#include <errno.h> | |
#include <stdlib.h> | |
#include <glib.h> | |
+#include "configfile.h" /* For UpdateConfigFile */ | |
#include "dopewars.h" | |
#include "log.h" | |
#include "message.h" | |
t@@ -118,18 +119,19 @@ char *PidFile; | |
static char HelpText[] = { | |
/* Help on various general server commands */ | |
N_("dopewars server version %s commands and settings\n\n" | |
- "help Displays this help screen\n" | |
- "list Lists all players logged on\n" | |
- "push <player> Politely asks the named player to leave\n" | |
- "kill <player> Abruptly breaks the connection with the " | |
+ "help Displays this help screen\n" | |
+ "list Lists all players logged on\n" | |
+ "push <player> Politely asks the named player to leave\n" | |
+ "kill <player> Abruptly breaks the connection with the " | |
"named player\n" | |
- "msg:<mesg> Send message to all players\n" | |
- "quit Gracefully quit, after notifying all players\… | |
- "<variable>=<value> Sets the named variable to the given value\n" | |
- "<variable> Displays the value of the named variable\n" | |
- "<list>[x].<var>=<value> Sets the named variable in the given list,\n" | |
- " index x, to the given value\n" | |
- "<list>[x].<var> Displays the value of the named list variable… | |
+ "msg:<mesg> Send message to all players\n" | |
+ "save <file> Save current configuration to the named file\n" | |
+ "quit Gracefully quit, after notifying all players\n" | |
+ "<variable>=<value> Sets the named variable to the given value\n" | |
+ "<variable> Displays the value of the named variable\n" | |
+ "<list>[x].<var>=<value> Sets the named variable in the given list,\n" | |
+ " index x, to the given value\n" | |
+ "<list>[x].<var> Displays the value of the named list variable\n" | |
"\nValid variables are listed below:-\n\n") | |
}; | |
t@@ -956,6 +958,20 @@ static void FinishServerReply(GPrintFunc oldprint) | |
g_set_print_handler(oldprint); | |
} | |
+static void ServerSaveConfigFile(const char *string) | |
+{ | |
+ gchar *file = NULL; | |
+ | |
+ if (!string) { | |
+ file = GetLocalConfigFile(); | |
+ string = file; | |
+ } | |
+ if (UpdateConfigFile(file)) { | |
+ g_print(_("Configuration file saved OK as %s\n"), string); | |
+ } | |
+ g_free(file); | |
+} | |
+ | |
static void HandleServerCommand(char *string, NetworkBuffer *netbuf) | |
{ | |
GSList *list; | |
t@@ -973,6 +989,10 @@ static void HandleServerCommand(char *string, NetworkBuff… | |
RequestServerShutdown(); | |
} else if (g_strncasecmp(string, "msg:", 4) == 0) { | |
BroadcastToClients(C_NONE, C_MSG, string + 4, NULL, NULL); | |
+ } else if (g_strncasecmp(string, "save ", 5) == 0) { | |
+ ServerSaveConfigFile(string + 5); | |
+ } else if (g_strcasecmp(string, "save") == 0) { | |
+ ServerSaveConfigFile(NULL); | |
} else if (g_strcasecmp(string, "list") == 0) { | |
if (FirstServer) { | |
g_print(_("Users currently logged on:-\n")); |