tGNU long command line options now supported on platforms that have getopt_long… | |
git clone git://src.adamsgaard.dk/vaccinewars | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit a18abcdeb0cc04a32cadd7ba529e35dab4e829ae | |
parent 3da714467e1f8a8015bb3df74212ea8c6ab3dbc3 | |
Author: Ben Webb <[email protected]> | |
Date: Thu, 13 Sep 2001 16:27:56 +0000 | |
GNU long command line options now supported on platforms that have getopt_long | |
Diffstat: | |
M ChangeLog | 1 + | |
M config.h.in | 3 +++ | |
M configure | 2 +- | |
M configure.in | 2 +- | |
M src/dopewars.c | 73 +++++++++++++++++++++++++++++… | |
5 files changed, 77 insertions(+), 4 deletions(-) | |
--- | |
diff --git a/ChangeLog b/ChangeLog | |
t@@ -8,6 +8,7 @@ cvs | |
identify them, and so the -f option cannot be used to force setgid-games | |
dopewars to overwrite random files writeable by group "games" - use | |
the -C option to convert old high score files to the new format | |
+ - GNU long command line options now accepted on platforms with getopt_long | |
1.5.1 19-06-2001 | |
- Improved logging in server via. LogLevel and LogTimestamp variables | |
diff --git a/config.h.in b/config.h.in | |
t@@ -105,6 +105,9 @@ | |
/* Define if you have the gethostbyname function. */ | |
#undef HAVE_GETHOSTBYNAME | |
+/* Define if you have the getopt_long function. */ | |
+#undef HAVE_GETOPT_LONG | |
+ | |
/* Define if you have the getpagesize function. */ | |
#undef HAVE_GETPAGESIZE | |
diff --git a/configure b/configure | |
t@@ -4486,7 +4486,7 @@ fi | |
fi | |
-for ac_func in strdup strstr | |
+for ac_func in strdup strstr getopt_long | |
do | |
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 | |
echo "configure:4493: checking for $ac_func" >&5 | |
diff --git a/configure.in b/configure.in | |
t@@ -156,7 +156,7 @@ dnl Checks for library functions. | |
AC_FUNC_MEMCMP | |
AC_FUNC_SETVBUF_REVERSED | |
AC_FUNC_STRFTIME | |
-AC_CHECK_FUNCS(strdup strstr) | |
+AC_CHECK_FUNCS(strdup strstr getopt_long) | |
dnl Enable networking by default under Win32, but on Unix systems | |
dnl make it dependent on the availability of select and socket | |
diff --git a/src/dopewars.c b/src/dopewars.c | |
t@@ -18,6 +18,8 @@ | |
/* Foundation, Inc., 59 Temple Place - Suite 330, Boston, */ | |
/* MA 02111-1307, USA. */ | |
+#define _GNU_SOURCE | |
+ | |
#ifdef HAVE_CONFIG_H | |
#include <config.h> | |
#endif | |
t@@ -31,6 +33,9 @@ | |
#ifdef HAVE_UNISTD_H | |
#include <unistd.h> | |
#endif | |
+#ifdef HAVE_GETOPT_LONG | |
+#include <getopt.h> | |
+#endif | |
#include <string.h> | |
#include <errno.h> | |
#include <signal.h> | |
t@@ -1692,7 +1697,43 @@ void HandleHelpTexts() { | |
if (!WantHelp) return; | |
g_print( | |
-/* Usage information, printed when the user runs "dopewars -h" */ | |
+#ifdef HAVE_GETOPT_LONG | |
+/* Usage information, printed when the user runs "dopewars -h" (version | |
+ with support for GNU long options) */ | |
+_("Usage: dopewars [OPTION]...\n\ | |
+Drug dealing game based on \"Drug Wars\" by John E. Dell\n\ | |
+ -b, --no-color, \"black and white\" - i.e. do not use pretty colours… | |
+ --no-colour (by default colours are used where available)\n\ | |
+ -n, --single-player be boring and don't connect to any available dopewar… | |
+ servers (i.e. single player mode)\n\ | |
+ -a, --antique \"antique\" dopewars - keep as closely to the origin… | |
+ version as possible (no networking)\n\ | |
+ -f, --scorefile=FILE specify a file to use as the high score table (by\n\ | |
+ default %s/dopewars.sco is used)\n\ | |
+ -o, --hostname=ADDR specify a hostname where the server for multiplayer\… | |
+ dopewars can be found\n\ | |
+ -s, --public-server run in server mode (note: for a \"non-interactive\"\… | |
+ server, simply run as\n\ | |
+ dopewars -s < /dev/null >> logfile & )\n\ | |
+ -S, --private-server run a \"private\" server (do not notify the metaserv… | |
+ -p, --port=PORT specify the network port to use (default: 7902)\n\ | |
+ -g, --config-file=FILE specify the pathname of a dopewars configuration fil… | |
+ This file is read immediately when the -g option\n\ | |
+ is encountered\n\ | |
+ -r, --pidfile=FILE maintain pid file \"file\" while running the server\… | |
+ -c, --ai-player create and run a computer player\n\ | |
+ -w, --windowed-client force the use of a graphical (windowed)\n\ | |
+ client (GTK+ or Win32)\n\ | |
+ -t, --text-client force the use of a text-mode client (curses) (by\n\ | |
+ default, a windowed client is used when possible)\… | |
+ -C, --convert=FILE convert an \"old format\" score file to the new form… | |
+ -h, --help display this help information\n\ | |
+ -v, --version output version information and exit\n\n\ | |
+dopewars is Copyright (C) Ben Webb 1998-2001, and released under the GNU GPL\n\ | |
+Report bugs to the author at [email protected]\n"),DATADIR); | |
+#else | |
+/* Usage information, printed when the user runs "dopewars -h" (short | |
+ options only version) */ | |
_("Usage: dopewars [OPTION]...\n\ | |
Drug dealing game based on \"Drug Wars\" by John E. Dell\n\ | |
-b \"black and white\" - i.e. do not use pretty colours\n\ | |
t@@ -1721,13 +1762,41 @@ Drug dealing game based on \"Drug Wars\" by John E. De… | |
-v output version information and exit\n\n\ | |
dopewars is Copyright (C) Ben Webb 1998-2001, and released under the GNU GPL\n\ | |
Report bugs to the author at [email protected]\n"),DATADIR); | |
+#endif | |
} | |
void HandleCmdLine(int argc,char *argv[]) { | |
int c; | |
+ static const gchar *options = "anbchvf:o:sSp:g:r:wtC:"; | |
+#ifdef HAVE_GETOPT_LONG | |
+ static const struct option long_options[] = { | |
+ { "no-color", no_argument, NULL, 'b' }, | |
+ { "no-colour", no_argument, NULL, 'b' }, | |
+ { "single-player", no_argument, NULL, 'n' }, | |
+ { "antique", no_argument, NULL, 'a' }, | |
+ { "scorefile", required_argument, NULL, 'f' }, | |
+ { "hostname", required_argument, NULL, 'o' }, | |
+ { "public-server", no_argument, NULL, 's' }, | |
+ { "private-server", no_argument, NULL, 'S' }, | |
+ { "port", required_argument, NULL, 'p' }, | |
+ { "configfile", required_argument, NULL, 'g' }, | |
+ { "pidfile", required_argument, NULL, 'r' }, | |
+ { "ai-player", no_argument, NULL, 'c' }, | |
+ { "windowed-client", no_argument, NULL, 'w' }, | |
+ { "text-client", no_argument, NULL, 't' }, | |
+ { "convert", required_argument, NULL, 'C' }, | |
+ { "help", no_argument, NULL, 'h' }, | |
+ { "version", no_argument, NULL, 'v' }, | |
+ { 0, 0, 0, 0 } | |
+ }; | |
+#endif | |
while (1) { | |
- c=getopt(argc,argv,"anbchvf:o:sSp:g:r:wtC:"); | |
+#ifdef HAVE_GETOPT_LONG | |
+ c=getopt_long(argc,argv,options,long_options,NULL); | |
+#else | |
+ c=getopt(argc,argv,options); | |
+#endif | |
if (c==-1) break; | |
switch(c) { | |
case 'n': WantNetwork=FALSE; break; |