tCurrency can now be configured with Currency.Symbol and Currency.Prefix; Windows client windows cannot now be made unreadably small; bank/loan shark dialog now warns on entering negative prices; default configuration is restored properly at the start of each game - vaccinewars - be a doctor and try to vaccinate the world
HTML git clone git://src.adamsgaard.dk/vaccinewars
DIR Log
DIR Files
DIR Refs
DIR README
DIR LICENSE
---
DIR commit 61edd1ea12d1bcde6aec9bd8033db8bf527e542a
DIR parent 1d4fe829cbae531259381286d3166e18d070d05d
HTML Author: Ben Webb <ben@salilab.org>
Date: Mon, 29 Oct 2001 22:47:12 +0000
Currency can now be configured with Currency.Symbol and Currency.Prefix;
Windows client windows cannot now be made unreadably small;
bank/loan shark dialog now warns on entering negative prices;
default configuration is restored properly at the start of each game
Diffstat:
M ChangeLog | 4 ++++
M TODO | 3 ---
M acconfig.h | 7 -------
M configure | 238 ++++++++++++++++---------------
M configure.in | 11 +++++++----
M doc/Makefile.in | 12 +++++++-----
M doc/configfile.html | 19 ++++++++++++++++---
M doc/protocol.html | 13 +++++++++----
M po/Makefile.in.in | 182 +++++++++++--------------------
M src/Makefile.in | 12 +++++++-----
M src/curses_client.c | 2 ++
M src/dopewars.c | 124 +++++++++++++++++++++++++++----
M src/dopewars.h | 17 +++++++++++++++--
M src/gtk_client.c | 90 ++++++++++++++++++-------------
M src/gtkport.c | 40 +++++++++++++++++++++++++++++--
M src/gtkport.h | 5 +++++
M src/message.c | 119 +++++++++++++++++--------------
M src/winmain.c | 4 +++-
18 files changed, 524 insertions(+), 378 deletions(-)
---
DIR diff --git a/ChangeLog b/ChangeLog
t@@ -1,4 +1,8 @@
cvs
+ - Currency can now be configured with Currency.Symbol and Currency.Prefix
+ - Windows client windows cannot now be made unreadably small
+ - Bank/loan shark dialog now warns on entering negative prices
+ - Default configuration is restored properly at the start of each game
- Translations should now work with the Windows client
- Documentation on the client-server protocol added
- Windows graphical server can be minimized to the System Tray
DIR diff --git a/TODO b/TODO
t@@ -1,9 +1,6 @@
-- Implement allow_shrink window attribute for Windows client
- Make server run as an NT Service
-- Restore default configuration properly at the start of each game
- Configuration file editor thingy in the client?
- Make minimize-to-systray code a) more robust and b) configurable
-- Have bank/loan shark dialog warn on entering negative prices
- GSS_API SOCKS support?
- Fix problem with dialogs popping up while menus are open
- Increase difficulty of escaping from another player - impose penalty on
DIR diff --git a/acconfig.h b/acconfig.h
t@@ -23,10 +23,3 @@
/* Do we have GTK+ with a non-buggy gtk_entry_set_visibility() ?
(i.e. >= 1.2.10) */
#undef HAVE_FIXED_GTK
-
-#undef ENABLE_NLS
-#undef HAVE_CATGETS
-#undef HAVE_GETTEXT
-#undef HAVE_LC_MESSAGES
-#undef HAVE_STPCPY
-
DIR diff --git a/configure b/configure
t@@ -1571,10 +1571,10 @@ EOF
- CFLAGS="$CFLAGS -mwindows -fnative-struct -mno-cygwin"
+ CFLAGS="$CFLAGS -mwindows -fnative-struct"
+ CPPFLAGS="$CPPFLAGS -mno-cygwin"
LIBS="$LIBS -lwsock32 -lcomctl32 -lmpr"
-
- LDFLAGS="$LDFLAGS -lglib-1.3"
+ LDFLAGS="$LDFLAGS -mno-cygwin -lglib-1.3"
WNDRES="dopewars.res"
t@@ -2801,7 +2801,7 @@ EOF
fi
-for ac_hdr in unistd.h
+for ac_hdr in stdlib.h unistd.h sys/stat.h sys/types.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
t@@ -2933,11 +2933,24 @@ else
#include <fcntl.h>
#include <sys/mman.h>
+#if HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+
+#if HAVE_STDLIB_H
+# include <stdlib.h>
+#endif
+
+#if HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+
/* This mess was copied from the GNU getpagesize.h. */
#ifndef HAVE_GETPAGESIZE
-# ifdef HAVE_UNISTD_H
-# include <unistd.h>
-# endif
/* Assume that all systems that can run configure have sys/param.h. */
# ifndef HAVE_SYS_PARAM_H
t@@ -3045,7 +3058,7 @@ main()
}
EOF
-if { (eval echo configure:3049: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3062: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_mmap_fixed_mapped=yes
else
t@@ -3069,12 +3082,12 @@ fi
echo $ac_n "checking whether we are using the GNU C Library 2.1 or newer""... $ac_c" 1>&6
-echo "configure:3073: checking whether we are using the GNU C Library 2.1 or newer" >&5
+echo "configure:3086: checking whether we are using the GNU C Library 2.1 or newer" >&5
if eval "test \"`echo '$''{'ac_cv_gnu_library_2_1'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3078 "configure"
+#line 3091 "configure"
#include "confdefs.h"
#include <features.h>
t@@ -3110,17 +3123,17 @@ stdlib.h string.h unistd.h sys/param.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3114: checking for $ac_hdr" >&5
+echo "configure:3127: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3119 "configure"
+#line 3132 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3124: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3137: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
t@@ -3151,12 +3164,12 @@ getgid getuid mempcpy munmap putenv setenv setlocale stpcpy strchr strcasecmp \
strdup strtoul tsearch __argz_count __argz_stringify __argz_next
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3155: checking for $ac_func" >&5
+echo "configure:3168: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3160 "configure"
+#line 3173 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
t@@ -3179,7 +3192,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3183: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3196: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
t@@ -3219,7 +3232,7 @@ fi
echo $ac_n "checking for iconv""... $ac_c" 1>&6
-echo "configure:3223: checking for iconv" >&5
+echo "configure:3236: checking for iconv" >&5
if eval "test \"`echo '$''{'am_cv_func_iconv'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
t@@ -3227,7 +3240,7 @@ else
am_cv_func_iconv="no, consider installing GNU libiconv"
am_cv_lib_iconv=no
cat > conftest.$ac_ext <<EOF
-#line 3231 "configure"
+#line 3244 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <iconv.h>
t@@ -3237,7 +3250,7 @@ iconv_t cd = iconv_open("","");
iconv_close(cd);
; return 0; }
EOF
-if { (eval echo configure:3241: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3254: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_func_iconv=yes
else
t@@ -3249,7 +3262,7 @@ rm -f conftest*
am_save_LIBS="$LIBS"
LIBS="$LIBS -liconv"
cat > conftest.$ac_ext <<EOF
-#line 3253 "configure"
+#line 3266 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <iconv.h>
t@@ -3259,7 +3272,7 @@ iconv_t cd = iconv_open("","");
iconv_close(cd);
; return 0; }
EOF
-if { (eval echo configure:3263: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3276: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_lib_iconv=yes
am_cv_func_iconv=yes
t@@ -3280,13 +3293,13 @@ echo "$ac_t""$am_cv_func_iconv" 1>&6
EOF
echo $ac_n "checking for iconv declaration""... $ac_c" 1>&6
-echo "configure:3284: checking for iconv declaration" >&5
+echo "configure:3297: checking for iconv declaration" >&5
if eval "test \"`echo '$''{'am_cv_proto_iconv'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3290 "configure"
+#line 3303 "configure"
#include "confdefs.h"
#include <stdlib.h>
t@@ -3305,7 +3318,7 @@ int main() {
; return 0; }
EOF
-if { (eval echo configure:3309: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3322: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
am_cv_proto_iconv_arg1=""
else
t@@ -3334,19 +3347,19 @@ EOF
echo $ac_n "checking for nl_langinfo and CODESET""... $ac_c" 1>&6
-echo "configure:3338: checking for nl_langinfo and CODESET" >&5
+echo "configure:3351: checking for nl_langinfo and CODESET" >&5
if eval "test \"`echo '$''{'am_cv_langinfo_codeset'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3343 "configure"
+#line 3356 "configure"
#include "confdefs.h"
#include <langinfo.h>
int main() {
char* cs = nl_langinfo(CODESET);
; return 0; }
EOF
-if { (eval echo configure:3350: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3363: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_langinfo_codeset=yes
else
t@@ -3369,19 +3382,19 @@ EOF
if test $ac_cv_header_locale_h = yes; then
echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6
-echo "configure:3373: checking for LC_MESSAGES" >&5
+echo "configure:3386: checking for LC_MESSAGES" >&5
if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3378 "configure"
+#line 3391 "configure"
#include "confdefs.h"
#include <locale.h>
int main() {
return LC_MESSAGES
; return 0; }
EOF
-if { (eval echo configure:3385: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3398: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_val_LC_MESSAGES=yes
else
t@@ -3402,7 +3415,7 @@ EOF
fi
fi
echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6
-echo "configure:3406: checking whether NLS is requested" >&5
+echo "configure:3419: checking whether NLS is requested" >&5
# Check whether --enable-nls or --disable-nls was given.
if test "${enable_nls+set}" = set; then
enableval="$enable_nls"
t@@ -3424,7 +3437,7 @@ fi
EOF
echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6
-echo "configure:3428: checking whether included gettext is requested" >&5
+echo "configure:3441: checking whether included gettext is requested" >&5
# Check whether --with-included-gettext or --without-included-gettext was given.
if test "${with_included_gettext+set}" = set; then
withval="$with_included_gettext"
t@@ -3444,17 +3457,17 @@ fi
ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for libintl.h""... $ac_c" 1>&6
-echo "configure:3448: checking for libintl.h" >&5
+echo "configure:3461: checking for libintl.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3453 "configure"
+#line 3466 "configure"
#include "confdefs.h"
#include <libintl.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3458: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3471: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
t@@ -3471,12 +3484,12 @@ fi
if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for GNU gettext in libc""... $ac_c" 1>&6
-echo "configure:3475: checking for GNU gettext in libc" >&5
+echo "configure:3488: checking for GNU gettext in libc" >&5
if eval "test \"`echo '$''{'gt_cv_func_gnugettext1_libc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3480 "configure"
+#line 3493 "configure"
#include "confdefs.h"
#include <libintl.h>
extern int _nl_msg_cat_cntr;
t@@ -3485,7 +3498,7 @@ bindtextdomain ("", "");
return (int) gettext ("") + _nl_msg_cat_cntr
; return 0; }
EOF
-if { (eval echo configure:3489: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3502: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gnugettext1_libc=yes
else
t@@ -3501,14 +3514,14 @@ echo "$ac_t""$gt_cv_func_gnugettext1_libc" 1>&6
if test "$gt_cv_func_gnugettext1_libc" != "yes"; then
echo $ac_n "checking for GNU gettext in libintl""... $ac_c" 1>&6
-echo "configure:3505: checking for GNU gettext in libintl" >&5
+echo "configure:3518: checking for GNU gettext in libintl" >&5
if eval "test \"`echo '$''{'gt_cv_func_gnugettext1_libintl'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
gt_save_LIBS="$LIBS"
LIBS="$LIBS -lintl $LIBICONV"
cat > conftest.$ac_ext <<EOF
-#line 3512 "configure"
+#line 3525 "configure"
#include "confdefs.h"
#include <libintl.h>
extern int _nl_msg_cat_cntr;
t@@ -3517,7 +3530,7 @@ bindtextdomain ("", "");
return (int) gettext ("") + _nl_msg_cat_cntr
; return 0; }
EOF
-if { (eval echo configure:3521: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3534: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gnugettext1_libintl=yes
else
t@@ -3550,12 +3563,12 @@ EOF
for ac_func in dcgettext
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3554: checking for $ac_func" >&5
+echo "configure:3567: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3559 "configure"
+#line 3572 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
t@@ -3578,7 +3591,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3582: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3595: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
t@@ -3604,10 +3617,10 @@ done
LIBS="$gt_save_LIBS"
- # Extract the first word of "msgfmt", so it can be a program name with args.
+ # Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3611: checking for $ac_word" >&5
+echo "configure:3624: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
t@@ -3620,28 +3633,28 @@ else
for ac_dir in $PATH; do
test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then
- if $ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1; then
+ if test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"; then
ac_cv_path_MSGFMT="$ac_dir/$ac_word"
break
fi
fi
done
IFS="$ac_save_ifs"
- test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":"
+ test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT="no"
;;
esac
fi
MSGFMT="$ac_cv_path_MSGFMT"
-if test "$MSGFMT" != ":"; then
+if test -n "$MSGFMT"; then
echo "$ac_t""$MSGFMT" 1>&6
else
echo "$ac_t""no" 1>&6
fi
-
- # Extract the first word of "gmsgfmt", so it can be a program name with args.
+ if test "$MSGFMT" != "no"; then
+ # Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3645: checking for $ac_word" >&5
+echo "configure:3658: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
t@@ -3674,11 +3687,12 @@ else
echo "$ac_t""no" 1>&6
fi
+ fi
- # Extract the first word of "xgettext", so it can be a program name with args.
+ # Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3682: checking for $ac_word" >&5
+echo "configure:3696: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
t@@ -3691,7 +3705,7 @@ else
for ac_dir in $PATH; do
test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then
- if $ac_dir/$ac_word --omit-header /dev/null >/dev/null 2>&1; then
+ if test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"; then
ac_cv_path_XGETTEXT="$ac_dir/$ac_word"
break
fi
t@@ -3703,7 +3717,7 @@ else
esac
fi
XGETTEXT="$ac_cv_path_XGETTEXT"
-if test "$XGETTEXT" != ":"; then
+if test -n "$XGETTEXT"; then
echo "$ac_t""$XGETTEXT" 1>&6
else
echo "$ac_t""no" 1>&6
t@@ -3728,7 +3742,7 @@ fi
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3732: checking for $ac_word" >&5
+echo "configure:3746: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
t@@ -3741,19 +3755,19 @@ else
for ac_dir in $PATH; do
test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then
- if $ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1; then
+ if test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"; then
ac_cv_path_MSGFMT="$ac_dir/$ac_word"
break
fi
fi
done
IFS="$ac_save_ifs"
- test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":"
+ test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT="msgfmt"
;;
esac
fi
MSGFMT="$ac_cv_path_MSGFMT"
-if test "$MSGFMT" != ":"; then
+if test -n "$MSGFMT"; then
echo "$ac_t""$MSGFMT" 1>&6
else
echo "$ac_t""no" 1>&6
t@@ -3762,7 +3776,7 @@ fi
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3766: checking for $ac_word" >&5
+echo "configure:3780: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
t@@ -3798,7 +3812,7 @@ fi
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3802: checking for $ac_word" >&5
+echo "configure:3816: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
t@@ -3811,7 +3825,7 @@ else
for ac_dir in $PATH; do
test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then
- if $ac_dir/$ac_word --omit-header /dev/null >/dev/null 2>&1; then
+ if test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"; then
ac_cv_path_XGETTEXT="$ac_dir/$ac_word"
break
fi
t@@ -3823,7 +3837,7 @@ else
esac
fi
XGETTEXT="$ac_cv_path_XGETTEXT"
-if test "$XGETTEXT" != ":"; then
+if test -n "$XGETTEXT"; then
echo "$ac_t""$XGETTEXT" 1>&6
else
echo "$ac_t""no" 1>&6
t@@ -3837,17 +3851,8 @@ fi
LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'`
fi
- if test "$GMSGFMT" != ":"; then
- if $GMSGFMT --statistics /dev/null >/dev/null 2>&1; then
- : ;
- else
- echo "$ac_t""found msgfmt program is not GNU msgfmt; ignore it" 1>&6
- GMSGFMT=":"
- fi
- fi
-
- if test "$XGETTEXT" != ":"; then
- if $XGETTEXT --omit-header /dev/null >/dev/null 2>&1; then
+ if test "$XGETTEXT" != ":"; then
+ if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
: ;
else
echo "$ac_t""found xgettext program is not GNU xgettext; ignore it" 1>&6
t@@ -3869,7 +3874,7 @@ do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3873: checking for $ac_word" >&5
+echo "configure:3878: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_INTLBISON'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
t@@ -3902,8 +3907,8 @@ done
ac_verc_fail=yes
else
echo $ac_n "checking version of bison""... $ac_c" 1>&6
-echo "configure:3906: checking version of bison" >&5
- ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
+echo "configure:3911: checking version of bison" >&5
+ ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison .* \([0-9]*\.[0-9.]*\).*$/\1/p'`
case $ac_prog_version in
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*)
t@@ -3949,7 +3954,7 @@ echo "configure:3906: checking version of bison" >&5
LINGUAS=
else
echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6
-echo "configure:3953: checking for catalogs to be installed" >&5
+echo "configure:3958: checking for catalogs to be installed" >&5
NEW_LINGUAS=
for presentlang in $ALL_LINGUAS; do
useit=no
t@@ -4038,7 +4043,7 @@ if test "$GUI_CLIENT" = "yes" -o "$GUI_SERVER" = "yes" ; then
fi
echo $ac_n "checking size of long long""... $ac_c" 1>&6
-echo "configure:4042: checking size of long long" >&5
+echo "configure:4047: checking size of long long" >&5
if eval "test \"`echo '$''{'ac_cv_sizeof_long_long'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
t@@ -4046,18 +4051,18 @@ else
{ echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
else
cat > conftest.$ac_ext <<EOF
-#line 4050 "configure"
+#line 4055 "configure"
#include "confdefs.h"
#include <stdio.h>
-main()
+int main()
{
FILE *f=fopen("conftestval", "w");
- if (!f) exit(1);
+ if (!f) return(1);
fprintf(f, "%d\n", sizeof(long long));
- exit(0);
+ return(0);
}
EOF
-if { (eval echo configure:4061: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4066: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_sizeof_long_long=`cat conftestval`
else
t@@ -4078,7 +4083,7 @@ EOF
echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6
-echo "configure:4082: checking for 8-bit clean memcmp" >&5
+echo "configure:4087: checking for 8-bit clean memcmp" >&5
if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
t@@ -4086,7 +4091,7 @@ else
ac_cv_func_memcmp_clean=no
else
cat > conftest.$ac_ext <<EOF
-#line 4090 "configure"
+#line 4095 "configure"
#include "confdefs.h"
main()
t@@ -4096,7 +4101,7 @@ main()
}
EOF
-if { (eval echo configure:4100: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4105: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_memcmp_clean=yes
else
t@@ -4114,7 +4119,7 @@ echo "$ac_t""$ac_cv_func_memcmp_clean" 1>&6
test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}"
echo $ac_n "checking whether setvbuf arguments are reversed""... $ac_c" 1>&6
-echo "configure:4118: checking whether setvbuf arguments are reversed" >&5
+echo "configure:4123: checking whether setvbuf arguments are reversed" >&5
if eval "test \"`echo '$''{'ac_cv_func_setvbuf_reversed'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
t@@ -4122,7 +4127,7 @@ else
{ echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
else
cat > conftest.$ac_ext <<EOF
-#line 4126 "configure"
+#line 4131 "configure"
#include "confdefs.h"
#include <stdio.h>
/* If setvbuf has the reversed format, exit 0. */
t@@ -4136,7 +4141,7 @@ main () {
exit(0); /* Non-reversed systems segv here. */
}
EOF
-if { (eval echo configure:4140: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4145: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_setvbuf_reversed=yes
else
t@@ -4160,12 +4165,12 @@ EOF
fi
echo $ac_n "checking for strftime""... $ac_c" 1>&6
-echo "configure:4164: checking for strftime" >&5
+echo "configure:4169: checking for strftime" >&5
if eval "test \"`echo '$''{'ac_cv_func_strftime'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4169 "configure"
+#line 4174 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char strftime(); below. */
t@@ -4188,7 +4193,7 @@ strftime();
; return 0; }
EOF
-if { (eval echo configure:4192: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4197: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_strftime=yes"
else
t@@ -4210,7 +4215,7 @@ else
echo "$ac_t""no" 1>&6
# strftime is in -lintl on SCO UNIX.
echo $ac_n "checking for strftime in -lintl""... $ac_c" 1>&6
-echo "configure:4214: checking for strftime in -lintl" >&5
+echo "configure:4219: checking for strftime in -lintl" >&5
ac_lib_var=`echo intl'_'strftime | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
t@@ -4218,7 +4223,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lintl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4222 "configure"
+#line 4227 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
t@@ -4229,7 +4234,7 @@ int main() {
strftime()
; return 0; }
EOF
-if { (eval echo configure:4233: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4238: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
t@@ -4258,12 +4263,12 @@ fi
for ac_func in strdup strstr getopt_long
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4262: checking for $ac_func" >&5
+echo "configure:4267: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4267 "configure"
+#line 4272 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
t@@ -4286,7 +4291,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:4290: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4295: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
t@@ -4317,14 +4322,14 @@ if test "$CYGWIN" = "yes" ; then
else
echo $ac_n "checking for library containing socket""... $ac_c" 1>&6
-echo "configure:4321: checking for library containing socket" >&5
+echo "configure:4326: checking for library containing socket" >&5
if eval "test \"`echo '$''{'ac_cv_search_socket'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_func_search_save_LIBS="$LIBS"
ac_cv_search_socket="no"
cat > conftest.$ac_ext <<EOF
-#line 4328 "configure"
+#line 4333 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
t@@ -4335,7 +4340,7 @@ int main() {
socket()
; return 0; }
EOF
-if { (eval echo configure:4339: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4344: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_socket="none required"
else
t@@ -4346,7 +4351,7 @@ rm -f conftest*
test "$ac_cv_search_socket" = "no" && for i in socket; do
LIBS="-l$i $ac_func_search_save_LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4350 "configure"
+#line 4355 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
t@@ -4357,7 +4362,7 @@ int main() {
socket()
; return 0; }
EOF
-if { (eval echo configure:4361: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4366: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_socket="-l$i"
break
t@@ -4379,14 +4384,14 @@ else :
fi
echo $ac_n "checking for library containing gethostbyname""... $ac_c" 1>&6
-echo "configure:4383: checking for library containing gethostbyname" >&5
+echo "configure:4388: checking for library containing gethostbyname" >&5
if eval "test \"`echo '$''{'ac_cv_search_gethostbyname'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_func_search_save_LIBS="$LIBS"
ac_cv_search_gethostbyname="no"
cat > conftest.$ac_ext <<EOF
-#line 4390 "configure"
+#line 4395 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
t@@ -4397,7 +4402,7 @@ int main() {
gethostbyname()
; return 0; }
EOF
-if { (eval echo configure:4401: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4406: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_gethostbyname="none required"
else
t@@ -4408,7 +4413,7 @@ rm -f conftest*
test "$ac_cv_search_gethostbyname" = "no" && for i in nsl socket; do
LIBS="-l$i $ac_func_search_save_LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4412 "configure"
+#line 4417 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
t@@ -4419,7 +4424,7 @@ int main() {
gethostbyname()
; return 0; }
EOF
-if { (eval echo configure:4423: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4428: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_gethostbyname="-l$i"
break
t@@ -4442,12 +4447,12 @@ fi
for ac_func in socket gethostbyname select
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4446: checking for $ac_func" >&5
+echo "configure:4451: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4451 "configure"
+#line 4456 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
t@@ -4470,7 +4475,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:4474: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4479: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
t@@ -4954,9 +4959,6 @@ for ac_file in $CONFIG_FILES; do
ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
- # In autoconf-2.13 it is called $ac_given_srcdir.
- # In autoconf-2.50 it is called $srcdir.
- test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
case "$ac_given_srcdir" in
.) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
/*) top_srcdir="$ac_given_srcdir" ;;
t@@ -4964,9 +4966,9 @@ for ac_file in $CONFIG_FILES; do
esac
if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
rm -f "$ac_dir/POTFILES"
- test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
+ echo creating "$ac_dir/POTFILES"
sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," -e "\$s/\(.*\) \\\\/\1/" < "$ac_given_srcdir/$ac_dir/POTFILES.in" > "$ac_dir/POTFILES"
- test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile"
+ echo creating "$ac_dir/Makefile"
sed -e "/POTFILES =/r $ac_dir/POTFILES" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
fi
;;
DIR diff --git a/configure.in b/configure.in
t@@ -48,11 +48,14 @@ if test "$CYGWIN" = "yes" ; then
dnl even when glib-1.3.dll is - so we assume GLib is in place; the worst
dnl that can happen is that "make" fails later on.
- CFLAGS="$CFLAGS -mwindows -fnative-struct -mno-cygwin"
+ dnl Libraries and flags
+ dnl N.B. -mno-cygwin is included in CPPFLAGS so the right headers
+ dnl are detected (in /usr/include/mingw/ rather than /usr/include)
+ dnl later on - e.g. sys/param.h isn't in mingw.
+ CFLAGS="$CFLAGS -mwindows -fnative-struct"
+ CPPFLAGS="$CPPFLAGS -mno-cygwin"
LIBS="$LIBS -lwsock32 -lcomctl32 -lmpr"
-
- dnl Glib stuff
- LDFLAGS="$LDFLAGS -lglib-1.3"
+ LDFLAGS="$LDFLAGS -mno-cygwin -lglib-1.3"
dnl We need to compile and then link in the Windows resources
WNDRES="dopewars.res"
DIR diff --git a/doc/Makefile.in b/doc/Makefile.in
t@@ -57,11 +57,15 @@ POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
+host_alias = @host_alias@
+host_triplet = @host@
+BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
CATALOGS = @CATALOGS@
CATOBJEXT = @CATOBJEXT@
CC = @CC@
DATADIRNAME = @DATADIRNAME@
GENCAT = @GENCAT@
+GLIBC21 = @GLIBC21@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_CONFIG = @GLIB_CONFIG@
GLIB_LIBS = @GLIB_LIBS@
t@@ -72,13 +76,12 @@ GTKPORT_O = @GTKPORT_O@
GTK_CFLAGS = @GTK_CFLAGS@
GTK_CONFIG = @GTK_CONFIG@
GTK_LIBS = @GTK_LIBS@
-GT_NO = @GT_NO@
-GT_YES = @GT_YES@
-INCLUDE_LOCALE_H = @INCLUDE_LOCALE_H@
INSTOBJEXT = @INSTOBJEXT@
-INTLDEPS = @INTLDEPS@
+INTLBISON = @INTLBISON@
INTLLIBS = @INTLLIBS@
INTLOBJS = @INTLOBJS@
+INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@
+LIBICONV = @LIBICONV@
MAKEINFO = @MAKEINFO@
MKINSTALLDIRS = @MKINSTALLDIRS@
MSGFMT = @MSGFMT@
t@@ -90,7 +93,6 @@ USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
WNDRES = @WNDRES@
-l = @l@
localedir = @localedir@
DOCPATH = ${DESTDIR}${datadir}/doc/${PACKAGE}-${VERSION}/
DIR diff --git a/doc/configfile.html b/doc/configfile.html
t@@ -427,12 +427,25 @@ against a player.</dd>
<h2><a name="advanced">Advanced configuration</a></h2>
<dl>
-<dt><b>LogLevel=<i>2</i></b></dt>
+<dt><b>Currrency.Symbol=<i>$</i></b></dt>
+<dd>Uses the dollar (<i>$</i>) symbol to display all prices of drugs, guns,
+etc.</dd>
+
+<dt><b>Currrency.Prefix=<i>TRUE</i></b></dt>
+<dd>Prints Currency.Symbol in front of any price - e.g. "$1,000"; if
+FALSE, prints it after the price - e.g. "1,000 $".</dd>
+
+<dt><b>Log.File=<i>dopewars.log</i></b></dt>
+<dd>By default, server log messages are printed to the screen (standard
+output). By setting this variable, they will instead be written to the file
+<i>dopewars.log</i>.</dd>
+
+<dt><b>Log.Level=<i>2</i></b></dt>
<dd>Most server log messages are given a priority level, from 0 (most urgent)
to 5 (most verbose). This setting instructs the server only to log messages
from level 0 up to <i>2</i>, inclusive.</dd>
-<dt><b>LogTimestamp=<i>"[%H:%M:%S] "</i></b></dt>
+<dt><b>Log.Timestamp=<i>"[%H:%M:%S] "</i></b></dt>
<dd>Prefixes all log messages with a timestamp of the form (e.g.)
<i>[16:34:49]</i>. This is a string which is passed as input to the
<tt>strftime(3)</tt> function. If this is set to a blank string, then no
t@@ -584,6 +597,6 @@ any drugs, and clients will display this information if available.</dd>
<ul>
<li><a href="index.html">Main index</a></li>
</ul>
-<p>Last update: <b>16-10-2001</b></p>
+<p>Last update: <b>28-10-2001</b></p>
</body>
</html>
DIR diff --git a/doc/protocol.html b/doc/protocol.html
t@@ -73,7 +73,9 @@ terminated by the message terminator, \n - it may also be terminated by a ^
character. This allows the client to ignore extra fields, if later versions
of the protocol should add them. (N.B. This does not apply to free-form text
fields, as in the C_QUESTION, C_PRINTMESSAGE, C_MSG, C_MSGTO, and C_FIGHTPRINT
-messages, which _do_ extend to the end of the message.)</p>
+messages, which _do_ extend to the end of the message.) Note also that older
+servers may not send all the fields, so if fewer fields than expected are
+received, the client should substitute default values.</p>
<p>Message codes are shown below, together with the symbolic constants used in
the dopewars code for clarity (e.g. the 'A' code is represented by
t@@ -287,7 +289,7 @@ e.g. "1^AbFred"<br />
<dt><b>C_INIT</b> ('<tt>k</tt>')</dt>
<dd>Tells the client about various global game settings<br />
-<tt>data</tt> = <tt>"version"^<numloc>^<numgun>^<numdrug>^"bitch"^"bitches"^"gun"^"guns"^"drug"^"drugs"^"month"^"year"^<ID>^"loanshark"^"bank"^"gunshop"^"pub"</tt><br />
+<tt>data</tt> = <tt>"version"^<numloc>^<numgun>^<numdrug>^"bitch"^"bitches"^"gun"^"guns"^"drug"^"drugs"^"month"^"year"^<ID>^"loanshark"^"bank"^"gunshop"^"pub"^(prefix)"currency"</tt><br />
<tt>version</tt> = dopewars version of the server - e.g. "1.5.2"<br />
<tt>numloc</tt> = the number of locations in the game<br />
<tt>numgun</tt> = the number of guns in the game<br />
t@@ -297,7 +299,10 @@ e.g. "1^AbFred"<br />
<tt>bank</tt>, <tt>gunshop</tt>, <tt>pub</tt> = various names used in the
game<br />
<tt>ID</tt> = the ID that the client should use to refer to itself<br />
-e.g. "^Ak1.5.2^8^4^12^bitch^bitches^gun^guns^drug^drugs^12-^-1984^0^the Loan Shark^the Bank^Dan's House of Guns^the pub"<br />
+<tt>prefix</tt> = '1' if the currency symbol (e.g. $) should be printed before
+prices in the game, '0' otherwise<br />
+<tt>currency</tt> = the currency symbol to use<br />
+e.g. "^Ak1.5.2^8^4^12^bitch^bitches^gun^guns^drug^drugs^12-^-1984^0^the Loan Shark^the Bank^Dan's House of Guns^the pub"^1$<br />
<b>Answer required:</b> no<p /></dd>
<dt><b>C_DATA</b> ('<tt>l</tt>')</dt>
t@@ -553,7 +558,7 @@ e.g.<br />
</ul>
</li>
</ul>
-<p>Last update: <b>25-10-2001</b></p>
+<p>Last update: <b>29-10-2001</b></p>
</body>
</html>
DIR diff --git a/po/Makefile.in.in b/po/Makefile.in.in
t@@ -1,5 +1,5 @@
# Makefile for program source directory in GNU NLS utilities package.
-# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
+# Copyright (C) 1995-1997, 2000, 2001 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
#
# This file file be copied and used freely without restrictions. It can
# be used in projects which are not available under the GNU Public License
t@@ -9,6 +9,10 @@
PACKAGE = @PACKAGE@
VERSION = @VERSION@
+# These two variables depend on the location of this directory.
+subdir = po
+top_builddir = ..
+
SHELL = /bin/sh
@SET_MAKE@
t@@ -18,22 +22,20 @@ VPATH = @srcdir@
prefix = @prefix@
exec_prefix = @exec_prefix@
-datadir = $(prefix)/@DATADIRNAME@
+datadir = @datadir@
localedir = $(datadir)/locale
-gnulocaledir = $(prefix)/share/locale
-gettextsrcdir = $(prefix)/share/gettext/po
-subdir = po
+gettextsrcdir = $(datadir)/gettext/po
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
-MKINSTALLDIRS = $(top_srcdir)/@MKINSTALLDIRS@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+mkinstalldirs = $(SHELL) `case "$(MKINSTALLDIRS)" in /*) echo "$(MKINSTALLDIRS)" ;; *) echo "$(top_builddir)/$(MKINSTALLDIRS)" ;; esac`
CC = @CC@
-GENCAT = @GENCAT@
-GMSGFMT = PATH=../src:$$PATH @GMSGFMT@
+GMSGFMT = @GMSGFMT@
MSGFMT = @MSGFMT@
-XGETTEXT = PATH=../src:$$PATH @XGETTEXT@
-MSGMERGE = PATH=../src:$$PATH msgmerge
+XGETTEXT = @XGETTEXT@
+MSGMERGE = msgmerge
DEFS = @DEFS@
CFLAGS = @CFLAGS@
t@@ -43,20 +45,17 @@ INCLUDES = -I.. -I$(top_srcdir)/intl
COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
-SOURCES = cat-id-tbl.c
POFILES = @POFILES@
GMOFILES = @GMOFILES@
DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(PACKAGE).pot \
-stamp-cat-id $(POFILES) $(GMOFILES) $(SOURCES)
+$(POFILES) $(GMOFILES)
POTFILES = \
CATALOGS = @CATALOGS@
-CATOBJEXT = @CATOBJEXT@
-INSTOBJEXT = @INSTOBJEXT@
.SUFFIXES:
-.SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat
+.SUFFIXES: .c .o .po .pox .gmo .mo
.c.o:
$(COMPILE) $<
t@@ -70,19 +69,19 @@ INSTOBJEXT = @INSTOBJEXT@
.po.gmo:
file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \
- && rm -f $$file && $(GMSGFMT) -o $$file $<
-
-.po.cat:
- sed -f ../intl/po2msg.sed < $< > $*.msg \
- && rm -f $@ && $(GENCAT) $@ $*.msg
+ && rm -f $$file && $(GMSGFMT) --statistics -o $$file $<
all: all-@USE_NLS@
-all-yes: cat-id-tbl.c $(CATALOGS)
+all-yes: $(CATALOGS)
all-no:
-$(srcdir)/$(PACKAGE).pot: $(POTFILES)
+# Note: Target 'all' must not depend on target '$(srcdir)/$(PACKAGE).pot',
+# otherwise packages like GCC can not be built if only parts of the source
+# have been downloaded.
+
+$(srcdir)/$(PACKAGE).pot: $(POTFILES) $(srcdir)/POTFILES.in
$(XGETTEXT) --default-domain=$(PACKAGE) --directory=$(top_srcdir) \
--add-comments --keyword=_ --keyword=N_ \
--files-from=$(srcdir)/POTFILES.in \
t@@ -90,78 +89,35 @@ $(srcdir)/$(PACKAGE).pot: $(POTFILES)
|| ( rm -f $(srcdir)/$(PACKAGE).pot \
&& mv $(PACKAGE).po $(srcdir)/$(PACKAGE).pot )
-$(srcdir)/cat-id-tbl.c: stamp-cat-id; @:
-$(srcdir)/stamp-cat-id: $(PACKAGE).pot
- rm -f cat-id-tbl.tmp
- sed -f ../intl/po2tbl.sed $(srcdir)/$(PACKAGE).pot \
- | sed -e "s/@PACKAGE NAME@/$(PACKAGE)/" > cat-id-tbl.tmp
- if cmp -s cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; then \
- rm cat-id-tbl.tmp; \
- else \
- echo cat-id-tbl.c changed; \
- rm -f $(srcdir)/cat-id-tbl.c; \
- mv cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; \
- fi
- cd $(srcdir) && rm -f stamp-cat-id && echo timestamp > stamp-cat-id
-
install: install-exec install-data
install-exec:
install-data: install-data-@USE_NLS@
-install-data-no: all
-install-data-yes: all
- if test -r "$(MKINSTALLDIRS)"; then \
- $(MKINSTALLDIRS) $(datadir); \
+ if test "$(PACKAGE)" = "gettext"; then \
+ $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \
+ $(INSTALL_DATA) $(srcdir)/Makefile.in.in \
+ $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
else \
- $(SHELL) $(top_srcdir)/mkinstalldirs $(datadir); \
+ : ; \
fi
+install-data-no: all
+install-data-yes: all
+ $(mkinstalldirs) $(DESTDIR)$(datadir)
@catalogs='$(CATALOGS)'; \
for cat in $$catalogs; do \
cat=`basename $$cat`; \
- case "$$cat" in \
- *.gmo) destdir=$(gnulocaledir);; \
- *) destdir=$(localedir);; \
- esac; \
- lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
- dir=$$destdir/$$lang/LC_MESSAGES; \
- if test -r "$(MKINSTALLDIRS)"; then \
- $(MKINSTALLDIRS) $$dir; \
- else \
- $(SHELL) $(top_srcdir)/mkinstalldirs $$dir; \
- fi; \
+ lang=`echo $$cat | sed 's/\.gmo$$//'`; \
+ dir=$(localedir)/$$lang/LC_MESSAGES; \
+ $(mkinstalldirs) $(DESTDIR)$$dir; \
if test -r $$cat; then \
- $(INSTALL_DATA) $$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \
- echo "installing $$cat as $$dir/$(PACKAGE)$(INSTOBJEXT)"; \
+ $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \
+ echo "installing $$cat as $(DESTDIR)$$dir/$(PACKAGE).mo"; \
else \
- $(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \
+ $(INSTALL_DATA) $(srcdir)/$$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \
echo "installing $(srcdir)/$$cat as" \
- "$$dir/$(PACKAGE)$(INSTOBJEXT)"; \
- fi; \
- if test -r $$cat.m; then \
- $(INSTALL_DATA) $$cat.m $$dir/$(PACKAGE)$(INSTOBJEXT).m; \
- echo "installing $$cat.m as $$dir/$(PACKAGE)$(INSTOBJEXT).m"; \
- else \
- if test -r $(srcdir)/$$cat.m ; then \
- $(INSTALL_DATA) $(srcdir)/$$cat.m \
- $$dir/$(PACKAGE)$(INSTOBJEXT).m; \
- echo "installing $(srcdir)/$$cat as" \
- "$$dir/$(PACKAGE)$(INSTOBJEXT).m"; \
- else \
- true; \
- fi; \
+ "$(DESTDIR)$$dir/$(PACKAGE).mo"; \
fi; \
done
- if test "$(PACKAGE)" = "gettext"; then \
- if test -r "$(MKINSTALLDIRS)"; then \
- $(MKINSTALLDIRS) $(gettextsrcdir); \
- else \
- $(SHELL) $(top_srcdir)/mkinstalldirs $(gettextsrcdir); \
- fi; \
- $(INSTALL_DATA) $(srcdir)/Makefile.in.in \
- $(gettextsrcdir)/Makefile.in.in; \
- else \
- : ; \
- fi
# Define this as empty until I found a useful application.
installcheck:
t@@ -170,76 +126,68 @@ uninstall:
catalogs='$(CATALOGS)'; \
for cat in $$catalogs; do \
cat=`basename $$cat`; \
- lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
- rm -f $(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \
- rm -f $(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \
- rm -f $(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \
- rm -f $(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \
+ lang=`echo $$cat | sed 's/\.gmo$$//'`; \
+ rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(PACKAGE).mo; \
done
- rm -f $(gettextsrcdir)/po-Makefile.in.in
+ if test "$(PACKAGE)" = "gettext"; then \
+ rm -f $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
+ else \
+ : ; \
+ fi
check: all
-cat-id-tbl.o: ../intl/libgettext.h
-
dvi info tags TAGS ID:
mostlyclean:
- rm -f core core.* *.pox $(PACKAGE).po *.old.po cat-id-tbl.tmp
+ rm -f core core.* *.pox $(PACKAGE).po *.new.po
rm -fr *.o
clean: mostlyclean
distclean: clean
- rm -f Makefile Makefile.in POTFILES *.mo *.msg *.cat *.cat.m
+ rm -f Makefile Makefile.in POTFILES *.mo
maintainer-clean: distclean
@echo "This command is intended for maintainers to use;"
@echo "it deletes files that may require special tools to rebuild."
rm -f $(GMOFILES)
-distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
-dist distdir: update-po $(DISTFILES)
+distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
+dist distdir:
+ $(MAKE) update-po
+ @$(MAKE) dist2
+# This is a separate target because 'update-po' must be executed before.
+dist2: $(DISTFILES)
dists="$(DISTFILES)"; \
for file in $$dists; do \
- ln $(srcdir)/$$file $(distdir) 2> /dev/null \
- || cp -p $(srcdir)/$$file $(distdir); \
+ if test -f $$file; then dir=.; else dir=$(srcdir); fi; \
+ cp -p $$dir/$$file $(distdir); \
done
update-po: Makefile
$(MAKE) $(PACKAGE).pot
- PATH=`pwd`/../src:$$PATH; \
+ if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; fi; \
cd $(srcdir); \
- catalogs='$(CATALOGS)'; \
+ catalogs='$(GMOFILES)'; \
for cat in $$catalogs; do \
cat=`basename $$cat`; \
- lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
- mv $$lang.po $$lang.old.po; \
+ lang=`echo $$cat | sed 's/\.gmo$$//'`; \
echo "$$lang:"; \
- if $(MSGMERGE) $$lang.old.po $(PACKAGE).pot -o $$lang.po; then \
- rm -f $$lang.old.po; \
+ if $(MSGMERGE) $$lang.po $(PACKAGE).pot -o $$lang.new.po; then \
+ mv -f $$lang.new.po $$lang.po; \
else \
echo "msgmerge for $$cat failed!"; \
- rm -f $$lang.po; \
- mv $$lang.old.po $$lang.po; \
+ rm -f $$lang.new.po; \
fi; \
done
+ $(MAKE) update-gmo
-POTFILES: POTFILES.in
- ( if test 'x$(srcdir)' != 'x.'; then \
- posrcprefix='$(top_srcdir)/'; \
- else \
- posrcprefix="../"; \
- fi; \
- rm -f $@-t $@ \
- && (sed -e '/^#/d' -e '/^[ ]*$$/d' \
- -e "s@.*@ $$posrcprefix& \\\\@" < $(srcdir)/$@.in \
- | sed -e '$$s/\\$$//') > $@-t \
- && chmod a-w $@-t \
- && mv $@-t $@ )
-
-Makefile: Makefile.in.in ../config.status POTFILES
- cd .. \
+update-gmo: Makefile $(GMOFILES)
+ @:
+
+Makefile: Makefile.in.in $(top_builddir)/config.status POTFILES.in
+ cd $(top_builddir) \
&& CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \
$(SHELL) ./config.status
DIR diff --git a/src/Makefile.in b/src/Makefile.in
t@@ -57,11 +57,15 @@ POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
+host_alias = @host_alias@
+host_triplet = @host@
+BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
CATALOGS = @CATALOGS@
CATOBJEXT = @CATOBJEXT@
CC = @CC@
DATADIRNAME = @DATADIRNAME@
GENCAT = @GENCAT@
+GLIBC21 = @GLIBC21@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_CONFIG = @GLIB_CONFIG@
GLIB_LIBS = @GLIB_LIBS@
t@@ -72,13 +76,12 @@ GTKPORT_O = @GTKPORT_O@
GTK_CFLAGS = @GTK_CFLAGS@
GTK_CONFIG = @GTK_CONFIG@
GTK_LIBS = @GTK_LIBS@
-GT_NO = @GT_NO@
-GT_YES = @GT_YES@
-INCLUDE_LOCALE_H = @INCLUDE_LOCALE_H@
INSTOBJEXT = @INSTOBJEXT@
-INTLDEPS = @INTLDEPS@
+INTLBISON = @INTLBISON@
INTLLIBS = @INTLLIBS@
INTLOBJS = @INTLOBJS@
+INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@
+LIBICONV = @LIBICONV@
MAKEINFO = @MAKEINFO@
MKINSTALLDIRS = @MKINSTALLDIRS@
MSGFMT = @MSGFMT@
t@@ -90,7 +93,6 @@ USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
WNDRES = @WNDRES@
-l = @l@
localedir = @localedir@
bin_PROGRAMS = dopewars
DIR diff --git a/src/curses_client.c b/src/curses_client.c
t@@ -1400,6 +1400,7 @@ void print_status(Player *Play,gboolean DispDrug) {
text=g_string_new(NULL);
attrset(TitleAttr);
+ clear_line(0);
g_string_sprintf(text,"%s%02d%s",Names.Month,Play->Turn,Names.Year);
mvaddstr(0,3,text->str);
t@@ -2048,6 +2049,7 @@ void CursesLoop(void) {
Curses_DoGame(Play);
ShutdownNetwork(Play);
CleanUpServer();
+ RestoreConfig();
attrset(TextAttr);
mvaddstr(23,20,_("Play again? "));
c=GetKey(_("YN"),"YN",TRUE,TRUE,FALSE);
DIR diff --git a/src/dopewars.c b/src/dopewars.c
t@@ -65,9 +65,10 @@ gboolean Network,Client,Server,NotifyMetaServer,AIPlayer;
dopewars in single-player or antique mode:
Network=Server=Client=FALSE
*/
+FILE *logfp;
unsigned Port=7902;
gboolean Sanitized,ConfigVerbose,DrugValue;
-char *HiScoreFile=NULL,*ServerName=NULL,*Pager=NULL,*ConvertFile=NULL;
+gchar *HiScoreFile=NULL,*ServerName=NULL,*Pager=NULL,*ConvertFile=NULL;
gboolean WantHelp,WantVersion,WantAntique,WantColour,WantNetwork,WantConvert;
ClientType WantedClient;
int NumLocation=0,NumGun=0,NumCop=0,NumDrug=0,NumSubway=0,
t@@ -150,6 +151,8 @@ struct NAMES DefaultNames = {
N_("Dan\'s House of Guns"),N_("the pub")
};
+struct CURRENCY Currency;
+
struct PRICES Prices = {
20000,10000
};
t@@ -175,8 +178,7 @@ int NumTurns=31;
int PlayerArmour=100,BitchArmour=50;
-int LogLevel=2;
-gchar *LogTimestamp=NULL;
+struct LOG Log;
struct GLOBALS Globals[] = {
/* The following strings are the helptexts for all the options that can be
t@@ -263,10 +265,19 @@ struct GLOBALS Globals[] = {
{ &NumTurns,NULL,NULL,NULL,NULL,"NumTurns",
N_("No. of game turns (if 0, game never ends)"),
NULL,NULL,0,"",NULL,NULL },
- { &LogLevel,NULL,NULL,NULL,NULL,"LogLevel",
+ { NULL,NULL,NULL,&Currency.Symbol,NULL,"Currency.Symbol",
+ N_("The currency symbol (e.g. $)"),
+ NULL,NULL,0,"",NULL,NULL },
+ { NULL,&Currency.Prefix,NULL,NULL,NULL,"Currency.Prefix",
+ N_("If TRUE, the currency symbol precedes prices"),
+ NULL,NULL,0,"",NULL,NULL },
+ { NULL,NULL,NULL,&Log.File,NULL,"Log.File",
+ N_("File to write log messages to"),
+ NULL,NULL,0,"",NULL,NULL },
+ { &Log.Level,NULL,NULL,NULL,NULL,"Log.Level",
N_("Controls the number of log messages produced"),
NULL,NULL,0,"",NULL,NULL },
- { NULL,NULL,NULL,&LogTimestamp,NULL,"LogTimestamp",
+ { NULL,NULL,NULL,&Log.Timestamp,NULL,"Log.Timestamp",
N_("strftime() format string for log timestamps"),
NULL,NULL,0,"",NULL,NULL },
{ NULL,&Sanitized,NULL,NULL,NULL,"Sanitized",
t@@ -863,7 +874,9 @@ gchar *FormatPrice(price_t price) {
g_string_prepend(PriceStr,thou);
First=FALSE;
}
- g_string_prepend_c(PriceStr,'$');
+ if (Currency.Prefix) g_string_prepend(PriceStr,Currency.Symbol);
+ else g_string_append(PriceStr,Currency.Symbol);
+
NewBuffer=PriceStr->str;
/* Free the string structure only, not the char data */
g_string_free(PriceStr,FALSE);
t@@ -1336,6 +1349,63 @@ void CopyDrugs(struct DRUGS *dest,struct DRUGS *src) {
dest->ExpensiveMultiply=src->ExpensiveMultiply;
}
+static struct PRICES BackupPrices;
+static struct NAMES BackupNames;
+static struct DRUG *BackupDrug=NULL;
+static struct GUN *BackupGun=NULL;
+static struct LOCATION *BackupLocation=NULL;
+static struct CURRENCY BackupCurrency = { NULL,TRUE };
+static gint NumBackupDrug=0,NumBackupGun=0,NumBackupLocation=0;
+
+void BackupConfig(void) {
+ gint i;
+ BackupPrices.Spy = Prices.Spy;
+ BackupPrices.Tipoff = Prices.Tipoff;
+ AssignName(&BackupCurrency.Symbol,Currency.Symbol);
+ BackupCurrency.Prefix = Currency.Prefix;
+ CopyNames(&BackupNames,&Names);
+
+/* Free existing backups of guns, drugs, and locations */
+ for (i=0;i<NumBackupGun;i++) g_free(BackupGun[i].Name);
+ g_free(BackupGun);
+ for (i=0;i<NumBackupDrug;i++) {
+ g_free(BackupDrug[i].Name);
+ g_free(BackupDrug[i].CheapStr);
+ }
+ g_free(BackupDrug);
+ for (i=0;i<NumBackupLocation;i++) g_free(BackupLocation[i].Name);
+ g_free(BackupLocation);
+
+ NumBackupGun = NumGun;
+ BackupGun = g_new0(struct GUN,NumGun);
+ for (i=0;i<NumGun;i++) CopyGun(&BackupGun[i],&Gun[i]);
+
+ NumBackupDrug = NumDrug;
+ BackupDrug = g_new0(struct DRUG,NumDrug);
+ for (i=0;i<NumDrug;i++) CopyDrug(&BackupDrug[i],&Drug[i]);
+
+ NumBackupLocation = NumLocation;
+ BackupLocation = g_new0(struct LOCATION,NumLocation);
+ for (i=0;i<NumLocation;i++) CopyLocation(&BackupLocation[i],&Location[i]);
+}
+
+void RestoreConfig(void) {
+ gint i;
+
+ Prices.Spy = BackupPrices.Spy;
+ Prices.Tipoff = BackupPrices.Tipoff;
+ CopyNames(&Names,&BackupNames);
+ AssignName(&Currency.Symbol,BackupCurrency.Symbol);
+ Currency.Prefix = BackupCurrency.Prefix;
+
+ ResizeGuns(NumBackupGun);
+ for (i=0;i<NumGun;i++) CopyGun(&Gun[i],&BackupGun[i]);
+ ResizeDrugs(NumBackupDrug);
+ for (i=0;i<NumDrug;i++) CopyDrug(&Drug[i],&BackupDrug[i]);
+ ResizeLocations(NumBackupLocation);
+ for (i=0;i<NumLocation;i++) CopyLocation(&Location[i],&BackupLocation[i]);
+}
+
void ScannerErrorHandler(GScanner *scanner,gchar *msg,gint error) {
g_print("%s\n",msg);
}
t@@ -1730,13 +1800,18 @@ void SetupParameters() {
WantedClient=CLIENT_AUTO;
Server=AIPlayer=Client=Network=FALSE;
+ Log.Level=2;
+ Log.Timestamp=g_strdup("[%H:%M:%S] ");
+ Log.File=NULL;
+
+ Currency.Symbol = g_strdup("$");
+ Currency.Prefix = TRUE;
+
/* Set hard-coded default values */
g_free(HiScoreFile); g_free(ServerName); g_free(Pager);
- g_free(LogTimestamp);
HiScoreFile=g_strdup_printf("%s/dopewars.sco",DATADIR);
ServerName=g_strdup("localhost");
Pager=g_strdup("more");
- LogTimestamp=g_strdup("[%H:%M:%S] ");
CopyNames(&Names,&DefaultNames);
CopyDrugs(&Drugs,&DefaultDrugs);
t@@ -1790,6 +1865,10 @@ void SetupParameters() {
systems only) */
ReadConfigFile("dopewars-config.txt");
#endif
+
+/* Save this configuration, so we can restore those elements that get
+ overwritten when we connect to a dopewars server */
+ BackupConfig();
}
void HandleHelpTexts() {
t@@ -1820,7 +1899,8 @@ Drug dealing game based on \"Drug Wars\" by John E. Dell\n\
-g, --config-file=FILE specify the pathname of a dopewars configuration file.\n\
This file is read immediately when the -g option\n\
is encountered\n\
- -r, --pidfile=FILE maintain pid file \"file\" while running the server\n\
+ -r, --pidfile=FILE maintain pid file \"FILE\" while running the server\n\
+ -l, --logfile=FILE write log information to \"FILE\"\n\
-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@@ -1853,6 +1933,7 @@ Drug dealing game based on \"Drug Wars\" by John E. Dell\n\
-g file specify the pathname of a dopewars configuration file. This file\n\
is read immediately when the -g option is encountered\n\
-r file maintain pid file \"file\" while running the server\n\
+ -l file write log information to \"file\"\n\
-c create and run a computer player\n\
-w force the use of a graphical (windowed) client (GTK+ or Win32)\n\
-t force the use of a text-mode client (curses)\n\
t@@ -1867,7 +1948,7 @@ Report bugs to the author at ben@bellatrix.pcl.ox.ac.uk\n"),DATADIR);
void HandleCmdLine(int argc,char *argv[]) {
int c;
- static const gchar *options = "anbchvf:o:sSp:g:r:wtC:";
+ static const gchar *options = "anbchvf:o:sSp:g:r:wtC:l:";
#ifdef HAVE_GETOPT_LONG
static const struct option long_options[] = {
{ "no-color", no_argument, NULL, 'b' },
t@@ -1885,6 +1966,7 @@ void HandleCmdLine(int argc,char *argv[]) {
{ "windowed-client", no_argument, NULL, 'w' },
{ "text-client", no_argument, NULL, 't' },
{ "convert", required_argument, NULL, 'C' },
+ { "logfile", required_argument, NULL, 'l' },
{ "help", no_argument, NULL, 'h' },
{ "version", no_argument, NULL, 'v' },
{ 0, 0, 0, 0 }
t@@ -1913,6 +1995,7 @@ void HandleCmdLine(int argc,char *argv[]) {
case 'p': Port=atoi(optarg); break;
case 'g': ReadConfigFile(optarg); break;
case 'r': AssignName(&PidFile,optarg); break;
+ case 'l': AssignName(&Log.File,optarg); break;
case 'w': WantedClient=CLIENT_WINDOW; break;
case 't': WantedClient=CLIENT_CURSES; break;
case 'C': AssignName(&ConvertFile,optarg); WantConvert=TRUE; break;
t@@ -1940,16 +2023,16 @@ GString *GetLogString(GLogLevelFlags log_level,const gchar *message) {
struct tm *timep;
text=g_string_new("");
- if (LogTimestamp) {
+ if (Log.Timestamp) {
tim=time(NULL);
timep=localtime(&tim);
- strftime(TimeBuf,80,LogTimestamp,timep);
+ strftime(TimeBuf,80,Log.Timestamp,timep);
TimeBuf[79]='\0';
g_string_append(text,TimeBuf);
}
for (i=0;i<MAXLOG;i++) if (log_level&(1<<(G_LOG_LEVEL_USER_SHIFT+i))) {
- if (i>LogLevel) { g_string_free(text,TRUE); return NULL; }
+ if (i>Log.Level) { g_string_free(text,TRUE); return NULL; }
g_string_sprintfa(text,"%d: ",i);
}
g_string_append(text,message);
t@@ -1964,7 +2047,8 @@ static void ServerLogMessage(const gchar *log_domain,GLogLevelFlags log_level,
GString *text;
text=GetLogString(log_level,message);
if (text) {
- g_print("%s\n",text->str); g_string_free(text,TRUE);
+ fprintf(logfp ? logfp : stdout,"%s\n",text->str);
+ g_string_free(text,TRUE);
}
}
#endif
t@@ -1993,8 +2077,17 @@ int main(int argc,char *argv[]) {
GuiServerLoop();
#else
/* Deal with dopelog() stuff nicely */
+ logfp = fopen(Log.File,"a");
+ if (logfp) {
+#ifdef SETVBUF_REVERSED /* 2nd and 3rd arguments are reversed on some systems */
+ setvbuf(logfp,_IOLBF,(char *)NULL,0);
+#else
+ setvbuf(logfp,(char *)NULL,_IOLBF,0);
+#endif
+ }
g_log_set_handler(NULL,LogMask(),ServerLogMessage,NULL);
- ServerLoop();
+ /*if (fork()<=0)*/ ServerLoop();
+ fclose(logfp);
#endif /* GUI_SERVER */
#else
g_print(_("This binary has been compiled without networking "
t@@ -2020,6 +2113,7 @@ int main(int argc,char *argv[]) {
}
CloseHighScoreFile();
g_free(PidFile);
+ g_free(Log.File);
g_free(ConvertFile);
return 0;
}
DIR diff --git a/src/dopewars.h b/src/dopewars.h
t@@ -90,6 +90,11 @@ struct METASERVER {
};
#endif
+struct CURRENCY {
+ gchar *Symbol;
+ gboolean Prefix;
+};
+
struct PRICES {
price_t Spy,Tipoff;
};
t@@ -136,6 +141,13 @@ typedef enum {
PEYOTE, SHROOMS, SPEED, WEED
} DrugIndex;
+struct LOG {
+ gchar *File;
+ gint Level;
+ gchar *Timestamp;
+};
+
+
extern int ClientSock,ListenSock;
extern gboolean Network,Client,Server,NotifyMetaServer,AIPlayer;
extern unsigned Port;
t@@ -148,6 +160,7 @@ extern ClientType WantedClient;
extern int LoanSharkLoc,BankLoc,GunShopLoc,RoughPubLoc;
extern int DrugSortMethod,FightTimeout,IdleTimeout,ConnectTimeout;
extern int MaxClients,AITurnPause;
+extern struct CURRENCY Currency;
extern struct PRICES Prices;
extern struct BITCH Bitch;
extern price_t StartCash,StartDebt;
t@@ -161,8 +174,6 @@ extern gboolean UseSocks;
extern int NumTurns;
extern int PlayerArmour,BitchArmour;
-extern int LogLevel;
-extern gchar *LogTimestamp;
#define MAXLOG 6
t@@ -311,6 +322,7 @@ extern char **SubwaySaying;
extern char **StoppedTo;
extern GSList *ServerList;
extern GScannerConfig ScannerConfig;
+extern struct LOG Log;
GSList *RemovePlayer(Player *Play,GSList *First);
Player *GetPlayerByID(guint ID,GSList *First);
t@@ -380,4 +392,5 @@ gboolean IsCop(Player *Play);
void dopelog(int loglevel,const gchar *format,...);
GLogLevelFlags LogMask(void);
GString *GetLogString(GLogLevelFlags log_level,const gchar *message);
+void RestoreConfig(void);
#endif
DIR diff --git a/src/gtk_client.c b/src/gtk_client.c
t@@ -439,7 +439,7 @@ void HandleClientMessage(char *pt,Player *Play) {
"<main>/Errands/Sack Bitch...");
/* Text for the Errands/Sack Bitch menu item */
- text=dpg_strdup_printf(_("%/Sack Bitch menu item/S_ack %Tde"),
+ text=dpg_strdup_printf(_("%/Sack Bitch menu item/S_ack %Tde..."),
Names.Bitch);
SetAccelerator(MenuItem,text,NULL,NULL,NULL);
g_free(text);
t@@ -1626,6 +1626,7 @@ void EndGame(void) {
ShutdownNetwork(ClientData.Play);
UpdatePlayerLists();
CleanUpServer();
+ RestoreConfig();
InGame=FALSE;
UpdateMenus();
}
t@@ -2495,41 +2496,50 @@ static void TransferPayAll(GtkWidget *widget,GtkWidget *dialog) {
}
static void TransferOK(GtkWidget *widget,GtkWidget *dialog) {
- gpointer Debt;
- GtkWidget *deposit,*entry;
- gchar *text;
- price_t money;
+ gpointer Debt;
+ GtkWidget *deposit,*entry;
+ gchar *text,*title;
+ price_t money;
+ gboolean withdraw=FALSE;
+
+ Debt=gtk_object_get_data(GTK_OBJECT(dialog),"debt");
+ entry=GTK_WIDGET(gtk_object_get_data(GTK_OBJECT(dialog),"entry"));
+ text=gtk_editable_get_chars(GTK_EDITABLE(entry),0,-1);
+ money=strtoprice(text);
+ g_free(text);
- Debt=gtk_object_get_data(GTK_OBJECT(dialog),"debt");
- entry=GTK_WIDGET(gtk_object_get_data(GTK_OBJECT(dialog),"entry"));
- text=gtk_editable_get_chars(GTK_EDITABLE(entry),0,-1);
- money=strtoprice(text);
- g_free(text);
+ if (Debt) {
+/* Title of loan shark dialog - (%Tde="The Loan Shark" by default) */
+ title = dpg_strdup_printf(_("%/LoanShark window title/%Tde"),
+ Names.LoanSharkName);
+ if (money>ClientData.Play->Debt) money=ClientData.Play->Debt;
+ } else {
+/* Title of bank dialog - (%Tde="The Bank" by default) */
+ title = dpg_strdup_printf(_("%/BankName window title/%Tde"),
+ Names.BankName);
+ deposit=GTK_WIDGET(gtk_object_get_data(GTK_OBJECT(dialog),"deposit"));
+ if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(deposit))) {
+ withdraw=TRUE;
+ }
+ }
- if (money<0) money=0;
- if (Debt) {
- if (money>ClientData.Play->Debt) money=ClientData.Play->Debt;
- } else {
- deposit=GTK_WIDGET(gtk_object_get_data(GTK_OBJECT(dialog),"deposit"));
- if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(deposit))) {
- money=-money;
- }
- if (-money>ClientData.Play->Bank) {
- GtkMessageBox(dialog,_("There isn't that much money available..."),
- Names.BankName,MB_OK);
- return;
- }
- }
- if (money>ClientData.Play->Cash) {
- GtkMessageBox(dialog,_("You don't have that much money!"),
- Debt ? Names.LoanSharkName : Names.BankName,MB_OK);
- return;
- }
- text=pricetostr(money);
- SendClientMessage(ClientData.Play,C_NONE,
- Debt ? C_PAYLOAN : C_DEPOSIT,NULL,text);
- g_free(text);
- gtk_widget_destroy(dialog);
+ if (money<0) {
+ GtkMessageBox(dialog,_("You must enter a positive amount of money!"),
+ title,MB_OK);
+ } else if (!Debt && withdraw && money>ClientData.Play->Bank) {
+ GtkMessageBox(dialog,_("There isn't that much money available..."),
+ title,MB_OK);
+ } else if (money>ClientData.Play->Cash) {
+ GtkMessageBox(dialog,_("You don't have that much money!"),
+ title,MB_OK);
+ } else {
+ text=pricetostr(withdraw ? -money : money);
+ SendClientMessage(ClientData.Play,C_NONE,
+ Debt ? C_PAYLOAN : C_DEPOSIT,NULL,text);
+ g_free(text);
+ gtk_widget_destroy(dialog);
+ }
+ g_free(title);
}
void TransferDialog(gboolean Debt) {
t@@ -2593,14 +2603,20 @@ void TransferDialog(gboolean Debt) {
radio=gtk_radio_button_new_with_label(group,_("Withdraw"));
gtk_table_attach_defaults(GTK_TABLE(table),radio,0,1,3,4);
}
- label=gtk_label_new("$");
- gtk_table_attach_defaults(GTK_TABLE(table),label,1,2,2,4);
+ label=gtk_label_new(Currency.Symbol);
entry=gtk_entry_new();
gtk_entry_set_text(GTK_ENTRY(entry),"0");
gtk_object_set_data(GTK_OBJECT(dialog),"entry",entry);
gtk_signal_connect(GTK_OBJECT(entry),"activate",
GTK_SIGNAL_FUNC(TransferOK),dialog);
- gtk_table_attach_defaults(GTK_TABLE(table),entry,2,3,2,4);
+
+ if (Currency.Prefix) {
+ gtk_table_attach_defaults(GTK_TABLE(table),label,1,2,2,4);
+ gtk_table_attach_defaults(GTK_TABLE(table),entry,2,3,2,4);
+ } else {
+ gtk_table_attach_defaults(GTK_TABLE(table),label,2,3,2,4);
+ gtk_table_attach_defaults(GTK_TABLE(table),entry,1,2,2,4);
+ }
gtk_box_pack_start(GTK_BOX(vbox),table,TRUE,TRUE,0);
DIR diff --git a/src/gtkport.c b/src/gtkport.c
t@@ -213,6 +213,8 @@ static void gtk_window_update_focus(GtkWindow *window);
static void gtk_window_set_focus(GtkWindow *window);
static void gtk_window_handle_user_size(GtkWindow *window,
GtkAllocation *allocation);
+static void gtk_window_handle_minmax_size(GtkWindow *window,
+ LPMINMAXINFO minmax);
static void gtk_window_handle_auto_size(GtkWindow *window,
GtkAllocation *allocation);
static void gtk_window_set_initial_position(GtkWindow *window,
t@@ -850,6 +852,14 @@ LRESULT CALLBACK MainWndProc(HWND hwnd,UINT msg,UINT wParam,LONG lParam) {
gtk_window_handle_user_size(GTK_WINDOW(window),&alloc);
gtk_widget_set_size(window,&alloc);
break;
+ case WM_GETMINMAXINFO:
+ widget=GTK_WIDGET(GetWindowLong(hwnd,GWL_USERDATA));
+ if (widget) klass=GTK_OBJECT(widget)->klass; else klass=NULL;
+ if (klass==&GtkWindowClass) {
+ gtk_window_handle_minmax_size(GTK_WINDOW(widget),
+ (LPMINMAXINFO)lParam);
+ }
+ break;
case WM_ACTIVATE:
case WM_ACTIVATEAPP:
widget=GTK_WIDGET(GetWindowLong(hwnd,GWL_USERDATA));
t@@ -1289,6 +1299,7 @@ GtkWidget *gtk_window_new(GtkWindowType type) {
win->title=g_strdup("");
win->type=type;
+ win->allow_grow = TRUE;
return GTK_WIDGET(win);
}
t@@ -1317,6 +1328,13 @@ void gtk_window_set_transient_for(GtkWindow *window,GtkWindow *parent) {
}
}
+void gtk_window_set_policy(GtkWindow *window,gint allow_shrink,
+ gint allow_grow,gint auto_shrink) {
+ window->allow_shrink = allow_shrink;
+ window->allow_grow = allow_grow;
+ window->auto_shrink = auto_shrink;
+}
+
void gtk_window_set_menu(GtkWindow *window,GtkMenuBar *menu_bar) {
HWND hWnd;
HMENU hMenu;
t@@ -1988,15 +2006,19 @@ void gtk_vbox_set_size(GtkWidget *widget,GtkAllocation *allocation) {
void gtk_window_realize(GtkWidget *widget) {
GtkWindow *win=GTK_WINDOW(widget);
HWND Parent;
+ DWORD resize=0;
+
+ if (win->allow_shrink || win->allow_grow) resize=WS_SIZEBOX;
+
Parent=gtk_get_parent_hwnd(widget->parent);
if (win->type==GTK_WINDOW_TOPLEVEL) {
widget->hWnd = CreateWindow("mainwin",win->title,
- WS_OVERLAPPEDWINDOW|CS_HREDRAW|CS_VREDRAW|WS_SIZEBOX,
+ WS_OVERLAPPEDWINDOW|CS_HREDRAW|CS_VREDRAW|resize,
CW_USEDEFAULT,0,0,0,Parent,NULL,hInst,NULL);
if (!TopLevel) TopLevel=widget->hWnd;
} else {
widget->hWnd = CreateWindow(WC_GTKDIALOG,win->title,
- WS_CAPTION|WS_SYSMENU|CS_HREDRAW|CS_VREDRAW|WS_SIZEBOX,
+ WS_CAPTION|WS_SYSMENU|CS_HREDRAW|CS_VREDRAW|resize,
CW_USEDEFAULT,0,0,0,Parent,NULL,hInst,NULL);
}
WindowList=g_slist_append(WindowList,(gpointer)win);
t@@ -4448,6 +4470,20 @@ void gtk_window_handle_user_size(GtkWindow *window,
GtkAllocation *allocation) {
}
+void gtk_window_handle_minmax_size(GtkWindow *window,LPMINMAXINFO minmax) {
+ GtkRequisition *req;
+
+ req = >K_WIDGET(window)->requisition;
+ if (!window->allow_shrink) {
+ minmax->ptMinTrackSize.x = req->width;
+ minmax->ptMinTrackSize.y = req->height;
+ }
+ if (!window->allow_grow) {
+ minmax->ptMaxTrackSize.x = req->width;
+ minmax->ptMaxTrackSize.y = req->height;
+ }
+}
+
void gtk_window_set_initial_position(GtkWindow *window,
GtkAllocation *allocation) {
RECT rect;
DIR diff --git a/src/gtkport.h b/src/gtkport.h
t@@ -449,6 +449,9 @@ struct _GtkWindow {
GtkWidget *focus;
HACCEL hAccel;
guint modal : 1;
+ guint allow_shrink : 1;
+ guint allow_grow : 1;
+ guint auto_shrink : 1;
};
typedef struct _GtkTable GtkTable;
t@@ -534,6 +537,8 @@ GtkWidget *gtk_window_new(GtkWindowType type);
void gtk_window_set_title(GtkWindow *window,const gchar *title);
void gtk_window_set_default_size(GtkWindow *window,gint width,gint height);
void gtk_window_set_transient_for(GtkWindow *window,GtkWindow *parent);
+void gtk_window_set_policy(GtkWindow *window,gint allow_shrink,
+ gint allow_grow,gint auto_shrink);
void gtk_container_add(GtkContainer *container,GtkWidget *widget);
void gtk_container_set_border_width(GtkContainer *container,guint border_width);
GtkWidget *gtk_button_new_with_label(const gchar *label);
DIR diff --git a/src/message.c b/src/message.c
t@@ -512,73 +512,82 @@ void SendSpyReport(Player *To,Player *SpiedOn) {
#define NUMNAMES 12
void SendInitialData(Player *To) {
- gchar *LocalNames[NUMNAMES] = { Names.Bitch,Names.Bitches,Names.Gun,
- Names.Guns,Names.Drug,Names.Drugs,
- Names.Month,Names.Year,Names.LoanSharkName,
- Names.BankName,Names.GunShopName,
- Names.RoughPubName };
- gint i;
- GString *text;
-
- if (!Network) return;
- if (!HaveAbility(To,A_TSTRING)) for (i=0;i<NUMNAMES;i++) {
- LocalNames[i] = GetDefaultTString(LocalNames[i]);
- }
- text=g_string_new("");
- g_string_sprintf(text,"%s^%d^%d^%d^",VERSION,NumLocation,NumGun,NumDrug);
- for (i=0;i<8;i++) {
- g_string_append(text,LocalNames[i]);
- g_string_append_c(text,'^');
- }
- if (HaveAbility(To,A_PLAYERID)) g_string_sprintfa(text,"%d^",To->ID);
+ gchar *LocalNames[NUMNAMES] = { Names.Bitch,Names.Bitches,Names.Gun,
+ Names.Guns,Names.Drug,Names.Drugs,
+ Names.Month,Names.Year,Names.LoanSharkName,
+ Names.BankName,Names.GunShopName,
+ Names.RoughPubName };
+ gint i;
+ GString *text;
+
+ if (!Network) return;
+ if (!HaveAbility(To,A_TSTRING)) for (i=0;i<NUMNAMES;i++) {
+ LocalNames[i] = GetDefaultTString(LocalNames[i]);
+ }
+ text=g_string_new("");
+ g_string_sprintf(text,"%s^%d^%d^%d^",VERSION,NumLocation,NumGun,NumDrug);
+ for (i=0;i<8;i++) {
+ g_string_append(text,LocalNames[i]);
+ g_string_append_c(text,'^');
+ }
+ if (HaveAbility(To,A_PLAYERID)) g_string_sprintfa(text,"%d^",To->ID);
/* Player ID is expected after the first 8 names, so send the rest now */
- for (i=8;i<NUMNAMES;i++) {
- g_string_append(text,LocalNames[i]);
- g_string_append_c(text,'^');
- }
+ for (i=8;i<NUMNAMES;i++) {
+ g_string_append(text,LocalNames[i]);
+ g_string_append_c(text,'^');
+ }
- if (!HaveAbility(To,A_TSTRING)) for (i=0;i<NUMNAMES;i++) {
- g_free(LocalNames[i]);
- }
- SendServerMessage(NULL,C_NONE,C_INIT,To,text->str);
- g_string_free(text,TRUE);
+ if (!HaveAbility(To,A_TSTRING)) for (i=0;i<NUMNAMES;i++) {
+ g_free(LocalNames[i]);
+ }
+
+ g_string_sprintfa(text,"%c%s^",Currency.Prefix ? '1' : '0',Currency.Symbol);
+ SendServerMessage(NULL,C_NONE,C_INIT,To,text->str);
+ g_string_free(text,TRUE);
}
void ReceiveInitialData(Player *Play,char *Data) {
- char *pt,*ServerVersion;
- GSList *list;
- pt=Data;
- ServerVersion=GetNextWord(&pt,"(unknown)");
- ResizeLocations(GetNextInt(&pt,NumLocation));
- ResizeGuns(GetNextInt(&pt,NumGun));
- ResizeDrugs(GetNextInt(&pt,NumDrug));
- for (list=FirstClient;list;list=g_slist_next(list)) {
- UpdatePlayer((Player*)list->data);
- }
- AssignName(&Names.Bitch,GetNextWord(&pt,""));
- AssignName(&Names.Bitches,GetNextWord(&pt,""));
- AssignName(&Names.Gun,GetNextWord(&pt,""));
- AssignName(&Names.Guns,GetNextWord(&pt,""));
- AssignName(&Names.Drug,GetNextWord(&pt,""));
- AssignName(&Names.Drugs,GetNextWord(&pt,""));
- AssignName(&Names.Month,GetNextWord(&pt,""));
- AssignName(&Names.Year,GetNextWord(&pt,""));
- if (HaveAbility(Play,A_PLAYERID)) Play->ID=GetNextInt(&pt,0);
+ char *pt,*ServerVersion,*curr;
+ GSList *list;
+ pt=Data;
+ ServerVersion=GetNextWord(&pt,"(unknown)");
+ ResizeLocations(GetNextInt(&pt,NumLocation));
+ ResizeGuns(GetNextInt(&pt,NumGun));
+ ResizeDrugs(GetNextInt(&pt,NumDrug));
+ for (list=FirstClient;list;list=g_slist_next(list)) {
+ UpdatePlayer((Player*)list->data);
+ }
+ AssignName(&Names.Bitch,GetNextWord(&pt,""));
+ AssignName(&Names.Bitches,GetNextWord(&pt,""));
+ AssignName(&Names.Gun,GetNextWord(&pt,""));
+ AssignName(&Names.Guns,GetNextWord(&pt,""));
+ AssignName(&Names.Drug,GetNextWord(&pt,""));
+ AssignName(&Names.Drugs,GetNextWord(&pt,""));
+ AssignName(&Names.Month,GetNextWord(&pt,""));
+ AssignName(&Names.Year,GetNextWord(&pt,""));
+ if (HaveAbility(Play,A_PLAYERID)) Play->ID=GetNextInt(&pt,0);
/* Servers up to version 1.4.8 don't send the following names, so
default to the existing values if they haven't been sent */
- AssignName(&Names.LoanSharkName,GetNextWord(&pt,Names.LoanSharkName));
- AssignName(&Names.BankName,GetNextWord(&pt,Names.BankName));
- AssignName(&Names.GunShopName,GetNextWord(&pt,Names.GunShopName));
- AssignName(&Names.RoughPubName,GetNextWord(&pt,Names.RoughPubName));
+ AssignName(&Names.LoanSharkName,GetNextWord(&pt,Names.LoanSharkName));
+ AssignName(&Names.BankName,GetNextWord(&pt,Names.BankName));
+ AssignName(&Names.GunShopName,GetNextWord(&pt,Names.GunShopName));
+ AssignName(&Names.RoughPubName,GetNextWord(&pt,Names.RoughPubName));
+
+/* Currency data are only sent by versions >= 1.5.3 */
+ curr = GetNextWord(&pt,NULL);
+ if (curr && strlen(curr)>=1) {
+ Currency.Prefix = (curr[0]=='1');
+ AssignName(&Currency.Symbol,&curr[1]);
+ }
- if (strcmp(VERSION,ServerVersion)!=0) {
- g_message(_("This server is version %s, while your client is "
+ if (strcmp(VERSION,ServerVersion)!=0) {
+ g_message(_("This server is version %s, while your client is "
"version %s.\nBe warned that different versions may not be fully compatible!\n"
-"Refer to the website at http://bellatrix.pcl.ox.ac.uk/~ben/dopewars/\n"
+"Refer to the website at http://dopewars.sourceforge.net/\n"
"for the latest version."),ServerVersion,VERSION);
- }
+ }
}
void SendMiscData(Player *To) {
DIR diff --git a/src/winmain.c b/src/winmain.c
t@@ -247,7 +247,9 @@ int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,
LogFileEnd();
g_strfreev(split);
CloseHighScoreFile();
- if (PidFile) g_free(PidFile);
+ g_free(PidFile);
+ g_free(Log.File);
+ g_free(ConvertFile);
return 0;
}