debian/0000755000000000000000000000000011700437077007174 5ustar debian/patches/0000755000000000000000000000000011700437472010622 5ustar debian/patches/manpage_cleanup0000644000000000000000000000075511700435751013671 0ustar Description: Remove an URL that appeared illegitimately in the manpage. Author: Nicolas Boullis --- a/xmj.man +++ b/xmj.man @@ -212,7 +212,7 @@ programmed players down to human speed (or, in a teaching situation, to slow the game even more). The current server considers that 50 (i.e. 5 seconds) is the maximum reasonable value for this option. -.brhttp://www.google.co.uk/ +.br The option can also be requested by players, via a PlayerOption protocol request. .TP debian/patches/extra_gui_libraries0000644000000000000000000000135211700435630014563 0ustar Description: Add libm to the libraries used by xmj. xmj directly uses some symbols from libm (hypot and trunc) but does not directly link with that library. This leads to a build failure with binutils-gold. Explicitely link with libm to avoid that build failure. Bug-Debian: http://bugs.debian.org/555582 Author: Nicolas Boullis --- a/Makefile.in +++ b/Makefile.in @@ -155,7 +155,7 @@ # Not Windows. If gtk+ is properly installed, this is all that's needed. ifdef Gtk EXTRA_INCLUDES=`pkg-config --cflags gtk+-$(Gtk)` -GUILIBS=-lgtk-x11-2.0 -lgdk-x11-2.0 -lgobject-2.0 -lglib-2.0 +GUILIBS=-lgtk-x11-2.0 -lgdk-x11-2.0 -lgobject-2.0 -lglib-2.0 -lm else EXTRA_INCLUDES=`gtk-config --cflags` GUILIBS=`gtk-config --libs` debian/patches/prune_gui_libraries0000644000000000000000000000125611700434661014577 0ustar Description: Make the list of required shared libraries for GTK explicit. Using `pkg-config --libs gtk+-$(Gtk)` brings many libraries that are not really needed by xmj. Replace it with an explicit list of libraries that are really needed, to avoid useless dependencies. Author: Nicolas Boullis --- a/Makefile.in +++ b/Makefile.in @@ -155,7 +155,7 @@ # Not Windows. If gtk+ is properly installed, this is all that's needed. ifdef Gtk EXTRA_INCLUDES=`pkg-config --cflags gtk+-$(Gtk)` -GUILIBS=`pkg-config --libs gtk+-$(Gtk)` +GUILIBS=-lgtk-x11-2.0 -lgdk-x11-2.0 -lgobject-2.0 -lglib-2.0 else EXTRA_INCLUDES=`gtk-config --cflags` GUILIBS=`gtk-config --libs` debian/patches/manpages_section_60000644000000000000000000000226511700433705014311 0ustar Description: Install the manpages in section 6. According to the FHS, manpages for games should be in section 6. Upstream disagrees with this and insists on using section 1. Use section 6 anyway, to comply with our policy and the FHS. Author: Nicolas Boullis --- a/Makefile.in +++ b/Makefile.in @@ -54,9 +54,9 @@ DESTDIR = /usr/local/ BINDIR = bin # The man pages go into $(DESTDIR)$(MANDIR) -MANDIR = man/man1 -# and the appropriate suffix is 1 -MANSUFFIX = 1 +MANDIR = man/man6 +# and the appropriate suffix is 6 +MANSUFFIX = 6 ### End of local configuration. --- a/mj-player.man +++ b/mj-player.man @@ -1,2 +1,2 @@ .\" $Header: /home/jcb/MahJong/newmj/RCS/mj-player.man,v 12.0 2009/06/28 20:43:12 jcb Rel $ -.so man1/xmj.1 +.so man6/xmj.6 --- a/mj-server.man +++ b/mj-server.man @@ -1,2 +1,2 @@ .\" $Header: /home/jcb/MahJong/newmj/RCS/mj-server.man,v 12.0 2009/06/28 20:43:12 jcb Rel $ -.so man1/xmj.1 +.so man6/xmj.6 --- a/xmj.man +++ b/xmj.man @@ -10,7 +10,7 @@ .TP \fB\\$1\fP (\fB\\$2\fP) \\$3 .. -.TH XMJ 1 "Mah-Jong" "J.C.Bradfield" +.TH XMJ 6 "Mah-Jong" "J.C.Bradfield" .SH NAME xmj, mj\-server, mj\-player \- programs for playing Mah\-Jong .SH SYNOPSIS debian/patches/series0000644000000000000000000000013711700434702012031 0ustar manpages_section_6 prune_gui_libraries extra_gui_libraries manpage_cleanup autogenerated_files debian/patches/autogenerated_files0000644000000000000000000107672711700437472014602 0ustar Description: Include auto-generated files. Include the files generated by running "debian/rules new-upstream". . This avoids a few build-dependencies and makes the build process slightly faster. --- a/Makefile +++ b/Makefile @@ -54,9 +54,9 @@ DESTDIR = /usr/local/ BINDIR = bin # The man pages go into $(DESTDIR)$(MANDIR) -MANDIR = man/man1 -# and the appropriate suffix is 1 -MANSUFFIX = 1 +MANDIR = man/man6 +# and the appropriate suffix is 6 +MANSUFFIX = 6 ### End of local configuration. @@ -155,7 +155,7 @@ # Not Windows. If gtk+ is properly installed, this is all that's needed. ifdef Gtk EXTRA_INCLUDES=`pkg-config --cflags gtk+-$(Gtk)` -GUILIBS=`pkg-config --libs gtk+-$(Gtk)` +GUILIBS=-lgtk-x11-2.0 -lgdk-x11-2.0 -lgobject-2.0 -lglib-2.0 -lm else EXTRA_INCLUDES=`gtk-config --cflags` GUILIBS=`gtk-config --libs` @@ -502,1419 +502,14 @@ protocol.h cmsg_union.h pmsg_union.h protocol-enums.h game-enums.h \ sysdep.h game-enums.c sysdep.o: sysdep.c sysdep.h -gui.o: gui.c gui.h /usr/include/gtk-2.0/gtk/gtk.h \ - /usr/include/gtk-2.0/gdk/gdk.h \ - /usr/include/gtk-2.0/gdk/gdkapplaunchcontext.h \ - /usr/include/glib-2.0/gio/gio.h /usr/include/glib-2.0/gio/giotypes.h \ - /usr/include/glib-2.0/gio/gioenums.h /usr/include/glib-2.0/glib-object.h \ - /usr/include/glib-2.0/gobject/gbinding.h /usr/include/glib-2.0/glib.h \ - /usr/include/glib-2.0/glib/galloca.h /usr/include/glib-2.0/glib/gtypes.h \ - /usr/lib/glib-2.0/include/glibconfig.h \ - /usr/include/glib-2.0/glib/gmacros.h /usr/include/glib-2.0/glib/garray.h \ - /usr/include/glib-2.0/glib/gasyncqueue.h \ - /usr/include/glib-2.0/glib/gthread.h /usr/include/glib-2.0/glib/gerror.h \ - /usr/include/glib-2.0/glib/gquark.h /usr/include/glib-2.0/glib/gutils.h \ - /usr/include/glib-2.0/glib/gatomic.h \ - /usr/include/glib-2.0/glib/gbacktrace.h \ - /usr/include/glib-2.0/glib/gbase64.h \ - /usr/include/glib-2.0/glib/gbitlock.h \ - /usr/include/glib-2.0/glib/gbookmarkfile.h \ - /usr/include/glib-2.0/glib/gcache.h /usr/include/glib-2.0/glib/glist.h \ - /usr/include/glib-2.0/glib/gmem.h /usr/include/glib-2.0/glib/gslice.h \ - /usr/include/glib-2.0/glib/gchecksum.h \ - /usr/include/glib-2.0/glib/gcompletion.h \ - /usr/include/glib-2.0/glib/gconvert.h \ - /usr/include/glib-2.0/glib/gdataset.h /usr/include/glib-2.0/glib/gdate.h \ - /usr/include/glib-2.0/glib/gdatetime.h \ - /usr/include/glib-2.0/glib/gtimezone.h /usr/include/glib-2.0/glib/gdir.h \ - /usr/include/glib-2.0/glib/gfileutils.h \ - /usr/include/glib-2.0/glib/ghash.h /usr/include/glib-2.0/glib/ghook.h \ - /usr/include/glib-2.0/glib/ghostutils.h \ - /usr/include/glib-2.0/glib/giochannel.h \ - /usr/include/glib-2.0/glib/gmain.h /usr/include/glib-2.0/glib/gpoll.h \ - /usr/include/glib-2.0/glib/gslist.h /usr/include/glib-2.0/glib/gstring.h \ - /usr/include/glib-2.0/glib/gunicode.h \ - /usr/include/glib-2.0/glib/gkeyfile.h \ - /usr/include/glib-2.0/glib/gmappedfile.h \ - /usr/include/glib-2.0/glib/gmarkup.h \ - /usr/include/glib-2.0/glib/gmessages.h \ - /usr/include/glib-2.0/glib/gnode.h /usr/include/glib-2.0/glib/goption.h \ - /usr/include/glib-2.0/glib/gpattern.h \ - /usr/include/glib-2.0/glib/gprimes.h /usr/include/glib-2.0/glib/gqsort.h \ - /usr/include/glib-2.0/glib/gqueue.h /usr/include/glib-2.0/glib/grand.h \ - /usr/include/glib-2.0/glib/grel.h /usr/include/glib-2.0/glib/gregex.h \ - /usr/include/glib-2.0/glib/gscanner.h \ - /usr/include/glib-2.0/glib/gsequence.h \ - /usr/include/glib-2.0/glib/gshell.h /usr/include/glib-2.0/glib/gspawn.h \ - /usr/include/glib-2.0/glib/gstrfuncs.h \ - /usr/include/glib-2.0/glib/gtestutils.h \ - /usr/include/glib-2.0/glib/gthreadpool.h \ - /usr/include/glib-2.0/glib/gtimer.h /usr/include/glib-2.0/glib/gtree.h \ - /usr/include/glib-2.0/glib/gurifuncs.h \ - /usr/include/glib-2.0/glib/gvarianttype.h \ - /usr/include/glib-2.0/glib/gvariant.h \ - /usr/include/glib-2.0/gobject/gobject.h \ - /usr/include/glib-2.0/gobject/gtype.h \ - /usr/include/glib-2.0/gobject/gvalue.h \ - /usr/include/glib-2.0/gobject/gparam.h \ - /usr/include/glib-2.0/gobject/gclosure.h \ - /usr/include/glib-2.0/gobject/gsignal.h \ - /usr/include/glib-2.0/gobject/gmarshal.h \ - /usr/include/glib-2.0/gobject/gboxed.h \ - /usr/include/glib-2.0/gobject/genums.h \ - /usr/include/glib-2.0/gobject/gparamspecs.h \ - /usr/include/glib-2.0/gobject/gsourceclosure.h \ - /usr/include/glib-2.0/gobject/gtypemodule.h \ - /usr/include/glib-2.0/gobject/gtypeplugin.h \ - /usr/include/glib-2.0/gobject/gvaluearray.h \ - /usr/include/glib-2.0/gobject/gvaluetypes.h \ - /usr/include/glib-2.0/gio/gappinfo.h /usr/include/glib-2.0/gio/gaction.h \ - /usr/include/glib-2.0/gio/gsimpleaction.h \ - /usr/include/glib-2.0/gio/gactiongroup.h \ - /usr/include/glib-2.0/gio/gsimpleactiongroup.h \ - /usr/include/glib-2.0/gio/gactiongroup.h \ - /usr/include/glib-2.0/gio/gapplication.h \ - /usr/include/glib-2.0/gio/gapplicationcommandline.h \ - /usr/include/glib-2.0/gio/gasyncinitable.h \ - /usr/include/glib-2.0/gio/ginitable.h \ - /usr/include/glib-2.0/gio/gasyncresult.h \ - /usr/include/glib-2.0/gio/gbufferedinputstream.h \ - /usr/include/glib-2.0/gio/gfilterinputstream.h \ - /usr/include/glib-2.0/gio/ginputstream.h \ - /usr/include/glib-2.0/gio/gbufferedoutputstream.h \ - /usr/include/glib-2.0/gio/gfilteroutputstream.h \ - /usr/include/glib-2.0/gio/goutputstream.h \ - /usr/include/glib-2.0/gio/gcancellable.h \ - /usr/include/glib-2.0/gio/gcharsetconverter.h \ - /usr/include/glib-2.0/gio/gconverter.h \ - /usr/include/glib-2.0/gio/gcontenttype.h \ - /usr/include/glib-2.0/gio/gconverterinputstream.h \ - /usr/include/glib-2.0/gio/gconverteroutputstream.h \ - /usr/include/glib-2.0/gio/gcredentials.h \ - /usr/include/glib-2.0/gio/gdatainputstream.h \ - /usr/include/glib-2.0/gio/gdataoutputstream.h \ - /usr/include/glib-2.0/gio/gdbusaddress.h \ - /usr/include/glib-2.0/gio/gdbusauthobserver.h \ - /usr/include/glib-2.0/gio/gdbusconnection.h \ - /usr/include/glib-2.0/gio/gdbuserror.h \ - /usr/include/glib-2.0/gio/gdbusintrospection.h \ - /usr/include/glib-2.0/gio/gdbusmessage.h \ - /usr/include/glib-2.0/gio/gdbusmethodinvocation.h \ - /usr/include/glib-2.0/gio/gdbusnameowning.h \ - /usr/include/glib-2.0/gio/gdbusnamewatching.h \ - /usr/include/glib-2.0/gio/gdbusproxy.h \ - /usr/include/glib-2.0/gio/gdbusserver.h \ - /usr/include/glib-2.0/gio/gdbusutils.h \ - /usr/include/glib-2.0/gio/gdrive.h \ - /usr/include/glib-2.0/gio/gemblemedicon.h \ - /usr/include/glib-2.0/gio/gicon.h /usr/include/glib-2.0/gio/gemblem.h \ - /usr/include/glib-2.0/gio/gfileattribute.h \ - /usr/include/glib-2.0/gio/gfileenumerator.h \ - /usr/include/glib-2.0/gio/gfile.h /usr/include/glib-2.0/gio/gfileicon.h \ - /usr/include/glib-2.0/gio/gfileinfo.h \ - /usr/include/glib-2.0/gio/gfileinputstream.h \ - /usr/include/glib-2.0/gio/gfileiostream.h \ - /usr/include/glib-2.0/gio/giostream.h \ - /usr/include/glib-2.0/gio/gioerror.h \ - /usr/include/glib-2.0/gio/gfilemonitor.h \ - /usr/include/glib-2.0/gio/gfilenamecompleter.h \ - /usr/include/glib-2.0/gio/gfileoutputstream.h \ - /usr/include/glib-2.0/gio/ginetaddress.h \ - /usr/include/glib-2.0/gio/ginetsocketaddress.h \ - /usr/include/glib-2.0/gio/gsocketaddress.h \ - /usr/include/glib-2.0/gio/gioenumtypes.h \ - /usr/include/glib-2.0/gio/giomodule.h /usr/include/glib-2.0/gmodule.h \ - /usr/include/glib-2.0/gio/gioscheduler.h \ - /usr/include/glib-2.0/gio/gloadableicon.h \ - /usr/include/glib-2.0/gio/gmemoryinputstream.h \ - /usr/include/glib-2.0/gio/gmemoryoutputstream.h \ - /usr/include/glib-2.0/gio/gmount.h \ - /usr/include/glib-2.0/gio/gmountoperation.h \ - /usr/include/glib-2.0/gio/gnativevolumemonitor.h \ - /usr/include/glib-2.0/gio/gvolumemonitor.h \ - /usr/include/glib-2.0/gio/gnetworkaddress.h \ - /usr/include/glib-2.0/gio/gnetworkservice.h \ - /usr/include/glib-2.0/gio/gpermission.h \ - /usr/include/glib-2.0/gio/gpollableinputstream.h \ - /usr/include/glib-2.0/gio/gpollableoutputstream.h \ - /usr/include/glib-2.0/gio/gproxy.h \ - /usr/include/glib-2.0/gio/gproxyaddress.h \ - /usr/include/glib-2.0/gio/gproxyaddressenumerator.h \ - /usr/include/glib-2.0/gio/gsocketaddressenumerator.h \ - /usr/include/glib-2.0/gio/gproxyresolver.h \ - /usr/include/glib-2.0/gio/gresolver.h \ - /usr/include/glib-2.0/gio/gseekable.h \ - /usr/include/glib-2.0/gio/gsettings.h \ - /usr/include/glib-2.0/gio/gsimpleasyncresult.h \ - /usr/include/glib-2.0/gio/gsimplepermission.h \ - /usr/include/glib-2.0/gio/gsocketclient.h \ - /usr/include/glib-2.0/gio/gsocketconnectable.h \ - /usr/include/glib-2.0/gio/gsocketconnection.h \ - /usr/include/glib-2.0/gio/gsocket.h \ - /usr/include/glib-2.0/gio/gsocketcontrolmessage.h \ - /usr/include/glib-2.0/gio/gsocketlistener.h \ - /usr/include/glib-2.0/gio/gsocketservice.h \ - /usr/include/glib-2.0/gio/gsrvtarget.h \ - /usr/include/glib-2.0/gio/gtcpconnection.h \ - /usr/include/glib-2.0/gio/gtcpwrapperconnection.h \ - /usr/include/glib-2.0/gio/gthemedicon.h \ - /usr/include/glib-2.0/gio/gthreadedsocketservice.h \ - /usr/include/glib-2.0/gio/gtlsbackend.h \ - /usr/include/glib-2.0/gio/gtlscertificate.h \ - /usr/include/glib-2.0/gio/gtlsclientconnection.h \ - /usr/include/glib-2.0/gio/gtlsconnection.h \ - /usr/include/glib-2.0/gio/gtlsserverconnection.h \ - /usr/include/glib-2.0/gio/gvfs.h /usr/include/glib-2.0/gio/gvolume.h \ - /usr/include/glib-2.0/gio/gzlibcompressor.h \ - /usr/include/glib-2.0/gio/gzlibdecompressor.h \ - /usr/include/gtk-2.0/gdk/gdkscreen.h /usr/include/cairo/cairo.h \ - /usr/include/cairo/cairo-version.h /usr/include/cairo/cairo-features.h \ - /usr/include/cairo/cairo-deprecated.h \ - /usr/include/gtk-2.0/gdk/gdktypes.h /usr/include/pango-1.0/pango/pango.h \ - /usr/include/pango-1.0/pango/pango-attributes.h \ - /usr/include/pango-1.0/pango/pango-font.h \ - /usr/include/pango-1.0/pango/pango-coverage.h \ - /usr/include/pango-1.0/pango/pango-types.h \ - /usr/include/pango-1.0/pango/pango-gravity.h \ - /usr/include/pango-1.0/pango/pango-matrix.h \ - /usr/include/pango-1.0/pango/pango-script.h \ - /usr/include/pango-1.0/pango/pango-language.h \ - /usr/include/pango-1.0/pango/pango-bidi-type.h \ - /usr/include/pango-1.0/pango/pango-break.h \ - /usr/include/pango-1.0/pango/pango-item.h \ - /usr/include/pango-1.0/pango/pango-context.h \ - /usr/include/pango-1.0/pango/pango-fontmap.h \ - /usr/include/pango-1.0/pango/pango-fontset.h \ - /usr/include/pango-1.0/pango/pango-engine.h \ - /usr/include/pango-1.0/pango/pango-glyph.h \ - /usr/include/pango-1.0/pango/pango-enum-types.h \ - /usr/include/pango-1.0/pango/pango-features.h \ - /usr/include/pango-1.0/pango/pango-glyph-item.h \ - /usr/include/pango-1.0/pango/pango-layout.h \ - /usr/include/pango-1.0/pango/pango-tabs.h \ - /usr/include/pango-1.0/pango/pango-renderer.h \ - /usr/include/pango-1.0/pango/pango-utils.h \ - /usr/lib/gtk-2.0/include/gdkconfig.h \ - /usr/include/gtk-2.0/gdk/gdkdisplay.h \ - /usr/include/gtk-2.0/gdk/gdkevents.h /usr/include/gtk-2.0/gdk/gdkcolor.h \ - /usr/include/gtk-2.0/gdk/gdkdnd.h /usr/include/gtk-2.0/gdk/gdkinput.h \ - /usr/include/gtk-2.0/gdk/gdkcairo.h /usr/include/gtk-2.0/gdk/gdkpixbuf.h \ - /usr/include/gtk-2.0/gdk/gdkrgb.h \ - /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf.h \ - /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-features.h \ - /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-core.h \ - /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-transform.h \ - /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-animation.h \ - /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-simple-anim.h \ - /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-io.h \ - /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-loader.h \ - /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-enum-types.h \ - /usr/include/pango-1.0/pango/pangocairo.h \ - /usr/include/gtk-2.0/gdk/gdkcursor.h \ - /usr/include/gtk-2.0/gdk/gdkdisplaymanager.h \ - /usr/include/gtk-2.0/gdk/gdkdrawable.h /usr/include/gtk-2.0/gdk/gdkgc.h \ - /usr/include/gtk-2.0/gdk/gdkenumtypes.h \ - /usr/include/gtk-2.0/gdk/gdkfont.h /usr/include/gtk-2.0/gdk/gdkimage.h \ - /usr/include/gtk-2.0/gdk/gdkkeys.h /usr/include/gtk-2.0/gdk/gdkpango.h \ - /usr/include/gtk-2.0/gdk/gdkpixmap.h \ - /usr/include/gtk-2.0/gdk/gdkproperty.h \ - /usr/include/gtk-2.0/gdk/gdkregion.h \ - /usr/include/gtk-2.0/gdk/gdkselection.h \ - /usr/include/gtk-2.0/gdk/gdkspawn.h \ - /usr/include/gtk-2.0/gdk/gdktestutils.h \ - /usr/include/gtk-2.0/gdk/gdkwindow.h \ - /usr/include/gtk-2.0/gdk/gdkvisual.h \ - /usr/include/gtk-2.0/gtk/gtkaboutdialog.h \ - /usr/include/gtk-2.0/gtk/gtkdialog.h \ - /usr/include/gtk-2.0/gtk/gtkwindow.h \ - /usr/include/gtk-2.0/gtk/gtkaccelgroup.h \ - /usr/include/gtk-2.0/gtk/gtkenums.h /usr/include/gtk-2.0/gtk/gtkbin.h \ - /usr/include/gtk-2.0/gtk/gtkcontainer.h \ - /usr/include/gtk-2.0/gtk/gtkwidget.h \ - /usr/include/gtk-2.0/gtk/gtkobject.h \ - /usr/include/gtk-2.0/gtk/gtktypeutils.h \ - /usr/include/gtk-2.0/gtk/gtktypebuiltins.h \ - /usr/include/gtk-2.0/gtk/gtkdebug.h \ - /usr/include/gtk-2.0/gtk/gtkadjustment.h \ - /usr/include/gtk-2.0/gtk/gtkstyle.h \ - /usr/include/gtk-2.0/gtk/gtksettings.h /usr/include/gtk-2.0/gtk/gtkrc.h \ - /usr/include/atk-1.0/atk/atk.h /usr/include/atk-1.0/atk/atkobject.h \ - /usr/include/atk-1.0/atk/atkstate.h \ - /usr/include/atk-1.0/atk/atkrelationtype.h \ - /usr/include/atk-1.0/atk/atkaction.h \ - /usr/include/atk-1.0/atk/atkcomponent.h \ - /usr/include/atk-1.0/atk/atkutil.h \ - /usr/include/atk-1.0/atk/atkdocument.h \ - /usr/include/atk-1.0/atk/atkeditabletext.h \ - /usr/include/atk-1.0/atk/atktext.h \ - /usr/include/atk-1.0/atk/atkgobjectaccessible.h \ - /usr/include/atk-1.0/atk/atkhyperlink.h \ - /usr/include/atk-1.0/atk/atkhyperlinkimpl.h \ - /usr/include/atk-1.0/atk/atkhypertext.h \ - /usr/include/atk-1.0/atk/atkimage.h \ - /usr/include/atk-1.0/atk/atknoopobject.h \ - /usr/include/atk-1.0/atk/atknoopobjectfactory.h \ - /usr/include/atk-1.0/atk/atkobjectfactory.h \ - /usr/include/atk-1.0/atk/atkplug.h \ - /usr/include/atk-1.0/atk/atkregistry.h \ - /usr/include/atk-1.0/atk/atkobjectfactory.h \ - /usr/include/atk-1.0/atk/atkrelation.h \ - /usr/include/atk-1.0/atk/atkrelationset.h \ - /usr/include/atk-1.0/atk/atkselection.h \ - /usr/include/atk-1.0/atk/atksocket.h \ - /usr/include/atk-1.0/atk/atkstateset.h \ - /usr/include/atk-1.0/atk/atkstreamablecontent.h \ - /usr/include/atk-1.0/atk/atktable.h /usr/include/atk-1.0/atk/atkmisc.h \ - /usr/include/atk-1.0/atk/atkvalue.h \ - /usr/include/gtk-2.0/gtk/gtkaccellabel.h \ - /usr/include/gtk-2.0/gtk/gtklabel.h /usr/include/gtk-2.0/gtk/gtkmisc.h \ - /usr/include/gtk-2.0/gtk/gtkmenu.h \ - /usr/include/gtk-2.0/gtk/gtkmenushell.h \ - /usr/include/gtk-2.0/gtk/gtkaccelmap.h \ - /usr/include/gtk-2.0/gtk/gtkaccessible.h \ - /usr/include/gtk-2.0/gtk/gtkaction.h \ - /usr/include/gtk-2.0/gtk/gtkactiongroup.h \ - /usr/include/gtk-2.0/gtk/gtkactivatable.h \ - /usr/include/gtk-2.0/gtk/gtkalignment.h \ - /usr/include/gtk-2.0/gtk/gtkarrow.h \ - /usr/include/gtk-2.0/gtk/gtkaspectframe.h \ - /usr/include/gtk-2.0/gtk/gtkframe.h \ - /usr/include/gtk-2.0/gtk/gtkassistant.h \ - /usr/include/gtk-2.0/gtk/gtkbbox.h /usr/include/gtk-2.0/gtk/gtkbox.h \ - /usr/include/gtk-2.0/gtk/gtkbindings.h \ - /usr/include/gtk-2.0/gtk/gtkbuildable.h \ - /usr/include/gtk-2.0/gtk/gtkbuilder.h \ - /usr/include/gtk-2.0/gtk/gtkbutton.h /usr/include/gtk-2.0/gtk/gtkimage.h \ - /usr/include/gtk-2.0/gtk/gtkcalendar.h \ - /usr/include/gtk-2.0/gtk/gtksignal.h \ - /usr/include/gtk-2.0/gtk/gtkmarshal.h \ - /usr/include/gtk-2.0/gtk/gtkcelleditable.h \ - /usr/include/gtk-2.0/gtk/gtkcelllayout.h \ - /usr/include/gtk-2.0/gtk/gtkcellrenderer.h \ - /usr/include/gtk-2.0/gtk/gtktreeviewcolumn.h \ - /usr/include/gtk-2.0/gtk/gtktreemodel.h \ - /usr/include/gtk-2.0/gtk/gtktreesortable.h \ - /usr/include/gtk-2.0/gtk/gtkcellrendereraccel.h \ - /usr/include/gtk-2.0/gtk/gtkcellrenderertext.h \ - /usr/include/gtk-2.0/gtk/gtkcellrenderercombo.h \ - /usr/include/gtk-2.0/gtk/gtkcellrendererpixbuf.h \ - /usr/include/gtk-2.0/gtk/gtkcellrendererprogress.h \ - /usr/include/gtk-2.0/gtk/gtkcellrendererspin.h \ - /usr/include/gtk-2.0/gtk/gtkcellrendererspinner.h \ - /usr/include/gtk-2.0/gtk/gtkcellrenderertoggle.h \ - /usr/include/gtk-2.0/gtk/gtkcellview.h \ - /usr/include/gtk-2.0/gtk/gtkcheckbutton.h \ - /usr/include/gtk-2.0/gtk/gtktogglebutton.h \ - /usr/include/gtk-2.0/gtk/gtkcheckmenuitem.h \ - /usr/include/gtk-2.0/gtk/gtkmenuitem.h \ - /usr/include/gtk-2.0/gtk/gtkitem.h \ - /usr/include/gtk-2.0/gtk/gtkclipboard.h \ - /usr/include/gtk-2.0/gtk/gtkselection.h \ - /usr/include/gtk-2.0/gtk/gtktextiter.h \ - /usr/include/gtk-2.0/gtk/gtktexttag.h \ - /usr/include/gtk-2.0/gtk/gtktextchild.h \ - /usr/include/gtk-2.0/gtk/gtkcolorbutton.h \ - /usr/include/gtk-2.0/gtk/gtkcolorsel.h \ - /usr/include/gtk-2.0/gtk/gtkvbox.h \ - /usr/include/gtk-2.0/gtk/gtkcolorseldialog.h \ - /usr/include/gtk-2.0/gtk/gtkcombobox.h \ - /usr/include/gtk-2.0/gtk/gtktreeview.h /usr/include/gtk-2.0/gtk/gtkdnd.h \ - /usr/include/gtk-2.0/gtk/gtkentry.h \ - /usr/include/gtk-2.0/gtk/gtkeditable.h \ - /usr/include/gtk-2.0/gtk/gtkimcontext.h \ - /usr/include/gtk-2.0/gtk/gtkentrybuffer.h \ - /usr/include/gtk-2.0/gtk/gtkentrycompletion.h \ - /usr/include/gtk-2.0/gtk/gtkliststore.h \ - /usr/include/gtk-2.0/gtk/gtktreemodelfilter.h \ - /usr/include/gtk-2.0/gtk/gtkcomboboxentry.h \ - /usr/include/gtk-2.0/gtk/gtkdrawingarea.h \ - /usr/include/gtk-2.0/gtk/gtkeventbox.h \ - /usr/include/gtk-2.0/gtk/gtkexpander.h \ - /usr/include/gtk-2.0/gtk/gtkfixed.h \ - /usr/include/gtk-2.0/gtk/gtkfilechooser.h \ - /usr/include/gtk-2.0/gtk/gtkfilefilter.h \ - /usr/include/gtk-2.0/gtk/gtkfilechooserbutton.h \ - /usr/include/gtk-2.0/gtk/gtkhbox.h \ - /usr/include/gtk-2.0/gtk/gtkfilechooserdialog.h \ - /usr/include/gtk-2.0/gtk/gtkfilechooserwidget.h \ - /usr/include/gtk-2.0/gtk/gtkfontbutton.h \ - /usr/include/gtk-2.0/gtk/gtkfontsel.h /usr/include/gtk-2.0/gtk/gtkgc.h \ - /usr/include/gtk-2.0/gtk/gtkhandlebox.h \ - /usr/include/gtk-2.0/gtk/gtkhbbox.h /usr/include/gtk-2.0/gtk/gtkhpaned.h \ - /usr/include/gtk-2.0/gtk/gtkpaned.h /usr/include/gtk-2.0/gtk/gtkhruler.h \ - /usr/include/gtk-2.0/gtk/gtkruler.h /usr/include/gtk-2.0/gtk/gtkhscale.h \ - /usr/include/gtk-2.0/gtk/gtkscale.h /usr/include/gtk-2.0/gtk/gtkrange.h \ - /usr/include/gtk-2.0/gtk/gtkhscrollbar.h \ - /usr/include/gtk-2.0/gtk/gtkscrollbar.h \ - /usr/include/gtk-2.0/gtk/gtkhseparator.h \ - /usr/include/gtk-2.0/gtk/gtkseparator.h \ - /usr/include/gtk-2.0/gtk/gtkhsv.h \ - /usr/include/gtk-2.0/gtk/gtkiconfactory.h \ - /usr/include/gtk-2.0/gtk/gtkicontheme.h \ - /usr/include/gtk-2.0/gtk/gtkiconview.h \ - /usr/include/gtk-2.0/gtk/gtktooltip.h \ - /usr/include/gtk-2.0/gtk/gtkimagemenuitem.h \ - /usr/include/gtk-2.0/gtk/gtkimcontextsimple.h \ - /usr/include/gtk-2.0/gtk/gtkimmulticontext.h \ - /usr/include/gtk-2.0/gtk/gtkinfobar.h \ - /usr/include/gtk-2.0/gtk/gtkinvisible.h \ - /usr/include/gtk-2.0/gtk/gtklayout.h \ - /usr/include/gtk-2.0/gtk/gtklinkbutton.h \ - /usr/include/gtk-2.0/gtk/gtkmain.h /usr/include/gtk-2.0/gtk/gtkmenubar.h \ - /usr/include/gtk-2.0/gtk/gtkmenutoolbutton.h \ - /usr/include/gtk-2.0/gtk/gtktoolbutton.h \ - /usr/include/gtk-2.0/gtk/gtktoolitem.h \ - /usr/include/gtk-2.0/gtk/gtktooltips.h \ - /usr/include/gtk-2.0/gtk/gtksizegroup.h \ - /usr/include/gtk-2.0/gtk/gtkmessagedialog.h \ - /usr/include/gtk-2.0/gtk/gtkmodules.h \ - /usr/include/gtk-2.0/gtk/gtkmountoperation.h \ - /usr/include/gtk-2.0/gtk/gtknotebook.h \ - /usr/include/gtk-2.0/gtk/gtkoffscreenwindow.h \ - /usr/include/gtk-2.0/gtk/gtkorientable.h \ - /usr/include/gtk-2.0/gtk/gtkpagesetup.h \ - /usr/include/gtk-2.0/gtk/gtkpapersize.h \ - /usr/include/gtk-2.0/gtk/gtkplug.h /usr/include/gtk-2.0/gtk/gtksocket.h \ - /usr/include/gtk-2.0/gtk/gtkprintcontext.h \ - /usr/include/gtk-2.0/gtk/gtkprintoperation.h \ - /usr/include/gtk-2.0/gtk/gtkprintsettings.h \ - /usr/include/gtk-2.0/gtk/gtkprintoperationpreview.h \ - /usr/include/gtk-2.0/gtk/gtkprogressbar.h \ - /usr/include/gtk-2.0/gtk/gtkprogress.h \ - /usr/include/gtk-2.0/gtk/gtkradioaction.h \ - /usr/include/gtk-2.0/gtk/gtktoggleaction.h \ - /usr/include/gtk-2.0/gtk/gtkradiobutton.h \ - /usr/include/gtk-2.0/gtk/gtkradiomenuitem.h \ - /usr/include/gtk-2.0/gtk/gtkradiotoolbutton.h \ - /usr/include/gtk-2.0/gtk/gtktoggletoolbutton.h \ - /usr/include/gtk-2.0/gtk/gtkrecentaction.h \ - /usr/include/gtk-2.0/gtk/gtkrecentmanager.h \ - /usr/include/gtk-2.0/gtk/gtkrecentchooser.h \ - /usr/include/gtk-2.0/gtk/gtkrecentfilter.h \ - /usr/include/gtk-2.0/gtk/gtkrecentchooserdialog.h \ - /usr/include/gtk-2.0/gtk/gtkrecentchoosermenu.h \ - /usr/include/gtk-2.0/gtk/gtkrecentchooserwidget.h \ - /usr/include/gtk-2.0/gtk/gtkscalebutton.h \ - /usr/include/gtk-2.0/gtk/gtkscrolledwindow.h \ - /usr/include/gtk-2.0/gtk/gtkvscrollbar.h \ - /usr/include/gtk-2.0/gtk/gtkviewport.h \ - /usr/include/gtk-2.0/gtk/gtkseparatormenuitem.h \ - /usr/include/gtk-2.0/gtk/gtkseparatortoolitem.h \ - /usr/include/gtk-2.0/gtk/gtkshow.h \ - /usr/include/gtk-2.0/gtk/gtkspinbutton.h \ - /usr/include/gtk-2.0/gtk/gtkspinner.h \ - /usr/include/gtk-2.0/gtk/gtkstatusbar.h \ - /usr/include/gtk-2.0/gtk/gtkstatusicon.h \ - /usr/include/gtk-2.0/gtk/gtkstock.h /usr/include/gtk-2.0/gtk/gtktable.h \ - /usr/include/gtk-2.0/gtk/gtktearoffmenuitem.h \ - /usr/include/gtk-2.0/gtk/gtktextbuffer.h \ - /usr/include/gtk-2.0/gtk/gtktexttagtable.h \ - /usr/include/gtk-2.0/gtk/gtktextmark.h \ - /usr/include/gtk-2.0/gtk/gtktextbufferrichtext.h \ - /usr/include/gtk-2.0/gtk/gtktextview.h \ - /usr/include/gtk-2.0/gtk/gtktoolbar.h \ - /usr/include/gtk-2.0/gtk/gtkpixmap.h \ - /usr/include/gtk-2.0/gtk/gtktoolitemgroup.h \ - /usr/include/gtk-2.0/gtk/gtktoolpalette.h \ - /usr/include/gtk-2.0/gtk/gtktoolshell.h \ - /usr/include/gtk-2.0/gtk/gtktestutils.h \ - /usr/include/gtk-2.0/gtk/gtktreednd.h \ - /usr/include/gtk-2.0/gtk/gtktreemodelsort.h \ - /usr/include/gtk-2.0/gtk/gtktreeselection.h \ - /usr/include/gtk-2.0/gtk/gtktreestore.h \ - /usr/include/gtk-2.0/gtk/gtkuimanager.h \ - /usr/include/gtk-2.0/gtk/gtkvbbox.h \ - /usr/include/gtk-2.0/gtk/gtkversion.h \ - /usr/include/gtk-2.0/gtk/gtkvolumebutton.h \ - /usr/include/gtk-2.0/gtk/gtkvpaned.h \ - /usr/include/gtk-2.0/gtk/gtkvruler.h \ - /usr/include/gtk-2.0/gtk/gtkvscale.h \ - /usr/include/gtk-2.0/gtk/gtkvseparator.h \ - /usr/include/gtk-2.0/gtk/gtktext.h /usr/include/gtk-2.0/gtk/gtktree.h \ - /usr/include/gtk-2.0/gtk/gtktreeitem.h \ - /usr/include/gtk-2.0/gtk/gtkclist.h /usr/include/gtk-2.0/gtk/gtkcombo.h \ - /usr/include/gtk-2.0/gtk/gtkctree.h /usr/include/gtk-2.0/gtk/gtkcurve.h \ - /usr/include/gtk-2.0/gtk/gtkfilesel.h \ - /usr/include/gtk-2.0/gtk/gtkgamma.h \ - /usr/include/gtk-2.0/gtk/gtkinputdialog.h \ - /usr/include/gtk-2.0/gtk/gtkitemfactory.h \ - /usr/include/gtk-2.0/gtk/gtklist.h \ - /usr/include/gtk-2.0/gtk/gtklistitem.h \ - /usr/include/gtk-2.0/gtk/gtkoldeditable.h \ - /usr/include/gtk-2.0/gtk/gtkoptionmenu.h \ - /usr/include/gtk-2.0/gtk/gtkpreview.h \ - /usr/include/gtk-2.0/gtk/gtktipsquery.h \ - /usr/include/gtk-2.0/gdk/gdkkeysyms.h \ - /usr/include/gtk-2.0/gdk/gdkkeysyms-compat.h lazyfixed.h sysdep.h \ - vlazyfixed.h client.h game.h tiles.h tiles-enums.h player.h \ - player-enums.h protocol.h cmsg_union.h pmsg_union.h protocol-enums.h \ - game-enums.h version.h gtkrc.h -gui-dial.o: gui-dial.c gui.h /usr/include/gtk-2.0/gtk/gtk.h \ - /usr/include/gtk-2.0/gdk/gdk.h \ - /usr/include/gtk-2.0/gdk/gdkapplaunchcontext.h \ - /usr/include/glib-2.0/gio/gio.h /usr/include/glib-2.0/gio/giotypes.h \ - /usr/include/glib-2.0/gio/gioenums.h /usr/include/glib-2.0/glib-object.h \ - /usr/include/glib-2.0/gobject/gbinding.h /usr/include/glib-2.0/glib.h \ - /usr/include/glib-2.0/glib/galloca.h /usr/include/glib-2.0/glib/gtypes.h \ - /usr/lib/glib-2.0/include/glibconfig.h \ - /usr/include/glib-2.0/glib/gmacros.h /usr/include/glib-2.0/glib/garray.h \ - /usr/include/glib-2.0/glib/gasyncqueue.h \ - /usr/include/glib-2.0/glib/gthread.h /usr/include/glib-2.0/glib/gerror.h \ - /usr/include/glib-2.0/glib/gquark.h /usr/include/glib-2.0/glib/gutils.h \ - /usr/include/glib-2.0/glib/gatomic.h \ - /usr/include/glib-2.0/glib/gbacktrace.h \ - /usr/include/glib-2.0/glib/gbase64.h \ - /usr/include/glib-2.0/glib/gbitlock.h \ - /usr/include/glib-2.0/glib/gbookmarkfile.h \ - /usr/include/glib-2.0/glib/gcache.h /usr/include/glib-2.0/glib/glist.h \ - /usr/include/glib-2.0/glib/gmem.h /usr/include/glib-2.0/glib/gslice.h \ - /usr/include/glib-2.0/glib/gchecksum.h \ - /usr/include/glib-2.0/glib/gcompletion.h \ - /usr/include/glib-2.0/glib/gconvert.h \ - /usr/include/glib-2.0/glib/gdataset.h /usr/include/glib-2.0/glib/gdate.h \ - /usr/include/glib-2.0/glib/gdatetime.h \ - /usr/include/glib-2.0/glib/gtimezone.h /usr/include/glib-2.0/glib/gdir.h \ - /usr/include/glib-2.0/glib/gfileutils.h \ - /usr/include/glib-2.0/glib/ghash.h /usr/include/glib-2.0/glib/ghook.h \ - /usr/include/glib-2.0/glib/ghostutils.h \ - /usr/include/glib-2.0/glib/giochannel.h \ - /usr/include/glib-2.0/glib/gmain.h /usr/include/glib-2.0/glib/gpoll.h \ - /usr/include/glib-2.0/glib/gslist.h /usr/include/glib-2.0/glib/gstring.h \ - /usr/include/glib-2.0/glib/gunicode.h \ - /usr/include/glib-2.0/glib/gkeyfile.h \ - /usr/include/glib-2.0/glib/gmappedfile.h \ - /usr/include/glib-2.0/glib/gmarkup.h \ - /usr/include/glib-2.0/glib/gmessages.h \ - /usr/include/glib-2.0/glib/gnode.h /usr/include/glib-2.0/glib/goption.h \ - /usr/include/glib-2.0/glib/gpattern.h \ - /usr/include/glib-2.0/glib/gprimes.h /usr/include/glib-2.0/glib/gqsort.h \ - /usr/include/glib-2.0/glib/gqueue.h /usr/include/glib-2.0/glib/grand.h \ - /usr/include/glib-2.0/glib/grel.h /usr/include/glib-2.0/glib/gregex.h \ - /usr/include/glib-2.0/glib/gscanner.h \ - /usr/include/glib-2.0/glib/gsequence.h \ - /usr/include/glib-2.0/glib/gshell.h /usr/include/glib-2.0/glib/gspawn.h \ - /usr/include/glib-2.0/glib/gstrfuncs.h \ - /usr/include/glib-2.0/glib/gtestutils.h \ - /usr/include/glib-2.0/glib/gthreadpool.h \ - /usr/include/glib-2.0/glib/gtimer.h /usr/include/glib-2.0/glib/gtree.h \ - /usr/include/glib-2.0/glib/gurifuncs.h \ - /usr/include/glib-2.0/glib/gvarianttype.h \ - /usr/include/glib-2.0/glib/gvariant.h \ - /usr/include/glib-2.0/gobject/gobject.h \ - /usr/include/glib-2.0/gobject/gtype.h \ - /usr/include/glib-2.0/gobject/gvalue.h \ - /usr/include/glib-2.0/gobject/gparam.h \ - /usr/include/glib-2.0/gobject/gclosure.h \ - /usr/include/glib-2.0/gobject/gsignal.h \ - /usr/include/glib-2.0/gobject/gmarshal.h \ - /usr/include/glib-2.0/gobject/gboxed.h \ - /usr/include/glib-2.0/gobject/genums.h \ - /usr/include/glib-2.0/gobject/gparamspecs.h \ - /usr/include/glib-2.0/gobject/gsourceclosure.h \ - /usr/include/glib-2.0/gobject/gtypemodule.h \ - /usr/include/glib-2.0/gobject/gtypeplugin.h \ - /usr/include/glib-2.0/gobject/gvaluearray.h \ - /usr/include/glib-2.0/gobject/gvaluetypes.h \ - /usr/include/glib-2.0/gio/gappinfo.h /usr/include/glib-2.0/gio/gaction.h \ - /usr/include/glib-2.0/gio/gsimpleaction.h \ - /usr/include/glib-2.0/gio/gactiongroup.h \ - /usr/include/glib-2.0/gio/gsimpleactiongroup.h \ - /usr/include/glib-2.0/gio/gactiongroup.h \ - /usr/include/glib-2.0/gio/gapplication.h \ - /usr/include/glib-2.0/gio/gapplicationcommandline.h \ - /usr/include/glib-2.0/gio/gasyncinitable.h \ - /usr/include/glib-2.0/gio/ginitable.h \ - /usr/include/glib-2.0/gio/gasyncresult.h \ - /usr/include/glib-2.0/gio/gbufferedinputstream.h \ - /usr/include/glib-2.0/gio/gfilterinputstream.h \ - /usr/include/glib-2.0/gio/ginputstream.h \ - /usr/include/glib-2.0/gio/gbufferedoutputstream.h \ - /usr/include/glib-2.0/gio/gfilteroutputstream.h \ - /usr/include/glib-2.0/gio/goutputstream.h \ - /usr/include/glib-2.0/gio/gcancellable.h \ - /usr/include/glib-2.0/gio/gcharsetconverter.h \ - /usr/include/glib-2.0/gio/gconverter.h \ - /usr/include/glib-2.0/gio/gcontenttype.h \ - /usr/include/glib-2.0/gio/gconverterinputstream.h \ - /usr/include/glib-2.0/gio/gconverteroutputstream.h \ - /usr/include/glib-2.0/gio/gcredentials.h \ - /usr/include/glib-2.0/gio/gdatainputstream.h \ - /usr/include/glib-2.0/gio/gdataoutputstream.h \ - /usr/include/glib-2.0/gio/gdbusaddress.h \ - /usr/include/glib-2.0/gio/gdbusauthobserver.h \ - /usr/include/glib-2.0/gio/gdbusconnection.h \ - /usr/include/glib-2.0/gio/gdbuserror.h \ - /usr/include/glib-2.0/gio/gdbusintrospection.h \ - /usr/include/glib-2.0/gio/gdbusmessage.h \ - /usr/include/glib-2.0/gio/gdbusmethodinvocation.h \ - /usr/include/glib-2.0/gio/gdbusnameowning.h \ - /usr/include/glib-2.0/gio/gdbusnamewatching.h \ - /usr/include/glib-2.0/gio/gdbusproxy.h \ - /usr/include/glib-2.0/gio/gdbusserver.h \ - /usr/include/glib-2.0/gio/gdbusutils.h \ - /usr/include/glib-2.0/gio/gdrive.h \ - /usr/include/glib-2.0/gio/gemblemedicon.h \ - /usr/include/glib-2.0/gio/gicon.h /usr/include/glib-2.0/gio/gemblem.h \ - /usr/include/glib-2.0/gio/gfileattribute.h \ - /usr/include/glib-2.0/gio/gfileenumerator.h \ - /usr/include/glib-2.0/gio/gfile.h /usr/include/glib-2.0/gio/gfileicon.h \ - /usr/include/glib-2.0/gio/gfileinfo.h \ - /usr/include/glib-2.0/gio/gfileinputstream.h \ - /usr/include/glib-2.0/gio/gfileiostream.h \ - /usr/include/glib-2.0/gio/giostream.h \ - /usr/include/glib-2.0/gio/gioerror.h \ - /usr/include/glib-2.0/gio/gfilemonitor.h \ - /usr/include/glib-2.0/gio/gfilenamecompleter.h \ - /usr/include/glib-2.0/gio/gfileoutputstream.h \ - /usr/include/glib-2.0/gio/ginetaddress.h \ - /usr/include/glib-2.0/gio/ginetsocketaddress.h \ - /usr/include/glib-2.0/gio/gsocketaddress.h \ - /usr/include/glib-2.0/gio/gioenumtypes.h \ - /usr/include/glib-2.0/gio/giomodule.h /usr/include/glib-2.0/gmodule.h \ - /usr/include/glib-2.0/gio/gioscheduler.h \ - /usr/include/glib-2.0/gio/gloadableicon.h \ - /usr/include/glib-2.0/gio/gmemoryinputstream.h \ - /usr/include/glib-2.0/gio/gmemoryoutputstream.h \ - /usr/include/glib-2.0/gio/gmount.h \ - /usr/include/glib-2.0/gio/gmountoperation.h \ - /usr/include/glib-2.0/gio/gnativevolumemonitor.h \ - /usr/include/glib-2.0/gio/gvolumemonitor.h \ - /usr/include/glib-2.0/gio/gnetworkaddress.h \ - /usr/include/glib-2.0/gio/gnetworkservice.h \ - /usr/include/glib-2.0/gio/gpermission.h \ - /usr/include/glib-2.0/gio/gpollableinputstream.h \ - /usr/include/glib-2.0/gio/gpollableoutputstream.h \ - /usr/include/glib-2.0/gio/gproxy.h \ - /usr/include/glib-2.0/gio/gproxyaddress.h \ - /usr/include/glib-2.0/gio/gproxyaddressenumerator.h \ - /usr/include/glib-2.0/gio/gsocketaddressenumerator.h \ - /usr/include/glib-2.0/gio/gproxyresolver.h \ - /usr/include/glib-2.0/gio/gresolver.h \ - /usr/include/glib-2.0/gio/gseekable.h \ - /usr/include/glib-2.0/gio/gsettings.h \ - /usr/include/glib-2.0/gio/gsimpleasyncresult.h \ - /usr/include/glib-2.0/gio/gsimplepermission.h \ - /usr/include/glib-2.0/gio/gsocketclient.h \ - /usr/include/glib-2.0/gio/gsocketconnectable.h \ - /usr/include/glib-2.0/gio/gsocketconnection.h \ - /usr/include/glib-2.0/gio/gsocket.h \ - /usr/include/glib-2.0/gio/gsocketcontrolmessage.h \ - /usr/include/glib-2.0/gio/gsocketlistener.h \ - /usr/include/glib-2.0/gio/gsocketservice.h \ - /usr/include/glib-2.0/gio/gsrvtarget.h \ - /usr/include/glib-2.0/gio/gtcpconnection.h \ - /usr/include/glib-2.0/gio/gtcpwrapperconnection.h \ - /usr/include/glib-2.0/gio/gthemedicon.h \ - /usr/include/glib-2.0/gio/gthreadedsocketservice.h \ - /usr/include/glib-2.0/gio/gtlsbackend.h \ - /usr/include/glib-2.0/gio/gtlscertificate.h \ - /usr/include/glib-2.0/gio/gtlsclientconnection.h \ - /usr/include/glib-2.0/gio/gtlsconnection.h \ - /usr/include/glib-2.0/gio/gtlsserverconnection.h \ - /usr/include/glib-2.0/gio/gvfs.h /usr/include/glib-2.0/gio/gvolume.h \ - /usr/include/glib-2.0/gio/gzlibcompressor.h \ - /usr/include/glib-2.0/gio/gzlibdecompressor.h \ - /usr/include/gtk-2.0/gdk/gdkscreen.h /usr/include/cairo/cairo.h \ - /usr/include/cairo/cairo-version.h /usr/include/cairo/cairo-features.h \ - /usr/include/cairo/cairo-deprecated.h \ - /usr/include/gtk-2.0/gdk/gdktypes.h /usr/include/pango-1.0/pango/pango.h \ - /usr/include/pango-1.0/pango/pango-attributes.h \ - /usr/include/pango-1.0/pango/pango-font.h \ - /usr/include/pango-1.0/pango/pango-coverage.h \ - /usr/include/pango-1.0/pango/pango-types.h \ - /usr/include/pango-1.0/pango/pango-gravity.h \ - /usr/include/pango-1.0/pango/pango-matrix.h \ - /usr/include/pango-1.0/pango/pango-script.h \ - /usr/include/pango-1.0/pango/pango-language.h \ - /usr/include/pango-1.0/pango/pango-bidi-type.h \ - /usr/include/pango-1.0/pango/pango-break.h \ - /usr/include/pango-1.0/pango/pango-item.h \ - /usr/include/pango-1.0/pango/pango-context.h \ - /usr/include/pango-1.0/pango/pango-fontmap.h \ - /usr/include/pango-1.0/pango/pango-fontset.h \ - /usr/include/pango-1.0/pango/pango-engine.h \ - /usr/include/pango-1.0/pango/pango-glyph.h \ - /usr/include/pango-1.0/pango/pango-enum-types.h \ - /usr/include/pango-1.0/pango/pango-features.h \ - /usr/include/pango-1.0/pango/pango-glyph-item.h \ - /usr/include/pango-1.0/pango/pango-layout.h \ - /usr/include/pango-1.0/pango/pango-tabs.h \ - /usr/include/pango-1.0/pango/pango-renderer.h \ - /usr/include/pango-1.0/pango/pango-utils.h \ - /usr/lib/gtk-2.0/include/gdkconfig.h \ - /usr/include/gtk-2.0/gdk/gdkdisplay.h \ - /usr/include/gtk-2.0/gdk/gdkevents.h /usr/include/gtk-2.0/gdk/gdkcolor.h \ - /usr/include/gtk-2.0/gdk/gdkdnd.h /usr/include/gtk-2.0/gdk/gdkinput.h \ - /usr/include/gtk-2.0/gdk/gdkcairo.h /usr/include/gtk-2.0/gdk/gdkpixbuf.h \ - /usr/include/gtk-2.0/gdk/gdkrgb.h \ - /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf.h \ - /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-features.h \ - /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-core.h \ - /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-transform.h \ - /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-animation.h \ - /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-simple-anim.h \ - /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-io.h \ - /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-loader.h \ - /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-enum-types.h \ - /usr/include/pango-1.0/pango/pangocairo.h \ - /usr/include/gtk-2.0/gdk/gdkcursor.h \ - /usr/include/gtk-2.0/gdk/gdkdisplaymanager.h \ - /usr/include/gtk-2.0/gdk/gdkdrawable.h /usr/include/gtk-2.0/gdk/gdkgc.h \ - /usr/include/gtk-2.0/gdk/gdkenumtypes.h \ - /usr/include/gtk-2.0/gdk/gdkfont.h /usr/include/gtk-2.0/gdk/gdkimage.h \ - /usr/include/gtk-2.0/gdk/gdkkeys.h /usr/include/gtk-2.0/gdk/gdkpango.h \ - /usr/include/gtk-2.0/gdk/gdkpixmap.h \ - /usr/include/gtk-2.0/gdk/gdkproperty.h \ - /usr/include/gtk-2.0/gdk/gdkregion.h \ - /usr/include/gtk-2.0/gdk/gdkselection.h \ - /usr/include/gtk-2.0/gdk/gdkspawn.h \ - /usr/include/gtk-2.0/gdk/gdktestutils.h \ - /usr/include/gtk-2.0/gdk/gdkwindow.h \ - /usr/include/gtk-2.0/gdk/gdkvisual.h \ - /usr/include/gtk-2.0/gtk/gtkaboutdialog.h \ - /usr/include/gtk-2.0/gtk/gtkdialog.h \ - /usr/include/gtk-2.0/gtk/gtkwindow.h \ - /usr/include/gtk-2.0/gtk/gtkaccelgroup.h \ - /usr/include/gtk-2.0/gtk/gtkenums.h /usr/include/gtk-2.0/gtk/gtkbin.h \ - /usr/include/gtk-2.0/gtk/gtkcontainer.h \ - /usr/include/gtk-2.0/gtk/gtkwidget.h \ - /usr/include/gtk-2.0/gtk/gtkobject.h \ - /usr/include/gtk-2.0/gtk/gtktypeutils.h \ - /usr/include/gtk-2.0/gtk/gtktypebuiltins.h \ - /usr/include/gtk-2.0/gtk/gtkdebug.h \ - /usr/include/gtk-2.0/gtk/gtkadjustment.h \ - /usr/include/gtk-2.0/gtk/gtkstyle.h \ - /usr/include/gtk-2.0/gtk/gtksettings.h /usr/include/gtk-2.0/gtk/gtkrc.h \ - /usr/include/atk-1.0/atk/atk.h /usr/include/atk-1.0/atk/atkobject.h \ - /usr/include/atk-1.0/atk/atkstate.h \ - /usr/include/atk-1.0/atk/atkrelationtype.h \ - /usr/include/atk-1.0/atk/atkaction.h \ - /usr/include/atk-1.0/atk/atkcomponent.h \ - /usr/include/atk-1.0/atk/atkutil.h \ - /usr/include/atk-1.0/atk/atkdocument.h \ - /usr/include/atk-1.0/atk/atkeditabletext.h \ - /usr/include/atk-1.0/atk/atktext.h \ - /usr/include/atk-1.0/atk/atkgobjectaccessible.h \ - /usr/include/atk-1.0/atk/atkhyperlink.h \ - /usr/include/atk-1.0/atk/atkhyperlinkimpl.h \ - /usr/include/atk-1.0/atk/atkhypertext.h \ - /usr/include/atk-1.0/atk/atkimage.h \ - /usr/include/atk-1.0/atk/atknoopobject.h \ - /usr/include/atk-1.0/atk/atknoopobjectfactory.h \ - /usr/include/atk-1.0/atk/atkobjectfactory.h \ - /usr/include/atk-1.0/atk/atkplug.h \ - /usr/include/atk-1.0/atk/atkregistry.h \ - /usr/include/atk-1.0/atk/atkobjectfactory.h \ - /usr/include/atk-1.0/atk/atkrelation.h \ - /usr/include/atk-1.0/atk/atkrelationset.h \ - /usr/include/atk-1.0/atk/atkselection.h \ - /usr/include/atk-1.0/atk/atksocket.h \ - /usr/include/atk-1.0/atk/atkstateset.h \ - /usr/include/atk-1.0/atk/atkstreamablecontent.h \ - /usr/include/atk-1.0/atk/atktable.h /usr/include/atk-1.0/atk/atkmisc.h \ - /usr/include/atk-1.0/atk/atkvalue.h \ - /usr/include/gtk-2.0/gtk/gtkaccellabel.h \ - /usr/include/gtk-2.0/gtk/gtklabel.h /usr/include/gtk-2.0/gtk/gtkmisc.h \ - /usr/include/gtk-2.0/gtk/gtkmenu.h \ - /usr/include/gtk-2.0/gtk/gtkmenushell.h \ - /usr/include/gtk-2.0/gtk/gtkaccelmap.h \ - /usr/include/gtk-2.0/gtk/gtkaccessible.h \ - /usr/include/gtk-2.0/gtk/gtkaction.h \ - /usr/include/gtk-2.0/gtk/gtkactiongroup.h \ - /usr/include/gtk-2.0/gtk/gtkactivatable.h \ - /usr/include/gtk-2.0/gtk/gtkalignment.h \ - /usr/include/gtk-2.0/gtk/gtkarrow.h \ - /usr/include/gtk-2.0/gtk/gtkaspectframe.h \ - /usr/include/gtk-2.0/gtk/gtkframe.h \ - /usr/include/gtk-2.0/gtk/gtkassistant.h \ - /usr/include/gtk-2.0/gtk/gtkbbox.h /usr/include/gtk-2.0/gtk/gtkbox.h \ - /usr/include/gtk-2.0/gtk/gtkbindings.h \ - /usr/include/gtk-2.0/gtk/gtkbuildable.h \ - /usr/include/gtk-2.0/gtk/gtkbuilder.h \ - /usr/include/gtk-2.0/gtk/gtkbutton.h /usr/include/gtk-2.0/gtk/gtkimage.h \ - /usr/include/gtk-2.0/gtk/gtkcalendar.h \ - /usr/include/gtk-2.0/gtk/gtksignal.h \ - /usr/include/gtk-2.0/gtk/gtkmarshal.h \ - /usr/include/gtk-2.0/gtk/gtkcelleditable.h \ - /usr/include/gtk-2.0/gtk/gtkcelllayout.h \ - /usr/include/gtk-2.0/gtk/gtkcellrenderer.h \ - /usr/include/gtk-2.0/gtk/gtktreeviewcolumn.h \ - /usr/include/gtk-2.0/gtk/gtktreemodel.h \ - /usr/include/gtk-2.0/gtk/gtktreesortable.h \ - /usr/include/gtk-2.0/gtk/gtkcellrendereraccel.h \ - /usr/include/gtk-2.0/gtk/gtkcellrenderertext.h \ - /usr/include/gtk-2.0/gtk/gtkcellrenderercombo.h \ - /usr/include/gtk-2.0/gtk/gtkcellrendererpixbuf.h \ - /usr/include/gtk-2.0/gtk/gtkcellrendererprogress.h \ - /usr/include/gtk-2.0/gtk/gtkcellrendererspin.h \ - /usr/include/gtk-2.0/gtk/gtkcellrendererspinner.h \ - /usr/include/gtk-2.0/gtk/gtkcellrenderertoggle.h \ - /usr/include/gtk-2.0/gtk/gtkcellview.h \ - /usr/include/gtk-2.0/gtk/gtkcheckbutton.h \ - /usr/include/gtk-2.0/gtk/gtktogglebutton.h \ - /usr/include/gtk-2.0/gtk/gtkcheckmenuitem.h \ - /usr/include/gtk-2.0/gtk/gtkmenuitem.h \ - /usr/include/gtk-2.0/gtk/gtkitem.h \ - /usr/include/gtk-2.0/gtk/gtkclipboard.h \ - /usr/include/gtk-2.0/gtk/gtkselection.h \ - /usr/include/gtk-2.0/gtk/gtktextiter.h \ - /usr/include/gtk-2.0/gtk/gtktexttag.h \ - /usr/include/gtk-2.0/gtk/gtktextchild.h \ - /usr/include/gtk-2.0/gtk/gtkcolorbutton.h \ - /usr/include/gtk-2.0/gtk/gtkcolorsel.h \ - /usr/include/gtk-2.0/gtk/gtkvbox.h \ - /usr/include/gtk-2.0/gtk/gtkcolorseldialog.h \ - /usr/include/gtk-2.0/gtk/gtkcombobox.h \ - /usr/include/gtk-2.0/gtk/gtktreeview.h /usr/include/gtk-2.0/gtk/gtkdnd.h \ - /usr/include/gtk-2.0/gtk/gtkentry.h \ - /usr/include/gtk-2.0/gtk/gtkeditable.h \ - /usr/include/gtk-2.0/gtk/gtkimcontext.h \ - /usr/include/gtk-2.0/gtk/gtkentrybuffer.h \ - /usr/include/gtk-2.0/gtk/gtkentrycompletion.h \ - /usr/include/gtk-2.0/gtk/gtkliststore.h \ - /usr/include/gtk-2.0/gtk/gtktreemodelfilter.h \ - /usr/include/gtk-2.0/gtk/gtkcomboboxentry.h \ - /usr/include/gtk-2.0/gtk/gtkdrawingarea.h \ - /usr/include/gtk-2.0/gtk/gtkeventbox.h \ - /usr/include/gtk-2.0/gtk/gtkexpander.h \ - /usr/include/gtk-2.0/gtk/gtkfixed.h \ - /usr/include/gtk-2.0/gtk/gtkfilechooser.h \ - /usr/include/gtk-2.0/gtk/gtkfilefilter.h \ - /usr/include/gtk-2.0/gtk/gtkfilechooserbutton.h \ - /usr/include/gtk-2.0/gtk/gtkhbox.h \ - /usr/include/gtk-2.0/gtk/gtkfilechooserdialog.h \ - /usr/include/gtk-2.0/gtk/gtkfilechooserwidget.h \ - /usr/include/gtk-2.0/gtk/gtkfontbutton.h \ - /usr/include/gtk-2.0/gtk/gtkfontsel.h /usr/include/gtk-2.0/gtk/gtkgc.h \ - /usr/include/gtk-2.0/gtk/gtkhandlebox.h \ - /usr/include/gtk-2.0/gtk/gtkhbbox.h /usr/include/gtk-2.0/gtk/gtkhpaned.h \ - /usr/include/gtk-2.0/gtk/gtkpaned.h /usr/include/gtk-2.0/gtk/gtkhruler.h \ - /usr/include/gtk-2.0/gtk/gtkruler.h /usr/include/gtk-2.0/gtk/gtkhscale.h \ - /usr/include/gtk-2.0/gtk/gtkscale.h /usr/include/gtk-2.0/gtk/gtkrange.h \ - /usr/include/gtk-2.0/gtk/gtkhscrollbar.h \ - /usr/include/gtk-2.0/gtk/gtkscrollbar.h \ - /usr/include/gtk-2.0/gtk/gtkhseparator.h \ - /usr/include/gtk-2.0/gtk/gtkseparator.h \ - /usr/include/gtk-2.0/gtk/gtkhsv.h \ - /usr/include/gtk-2.0/gtk/gtkiconfactory.h \ - /usr/include/gtk-2.0/gtk/gtkicontheme.h \ - /usr/include/gtk-2.0/gtk/gtkiconview.h \ - /usr/include/gtk-2.0/gtk/gtktooltip.h \ - /usr/include/gtk-2.0/gtk/gtkimagemenuitem.h \ - /usr/include/gtk-2.0/gtk/gtkimcontextsimple.h \ - /usr/include/gtk-2.0/gtk/gtkimmulticontext.h \ - /usr/include/gtk-2.0/gtk/gtkinfobar.h \ - /usr/include/gtk-2.0/gtk/gtkinvisible.h \ - /usr/include/gtk-2.0/gtk/gtklayout.h \ - /usr/include/gtk-2.0/gtk/gtklinkbutton.h \ - /usr/include/gtk-2.0/gtk/gtkmain.h /usr/include/gtk-2.0/gtk/gtkmenubar.h \ - /usr/include/gtk-2.0/gtk/gtkmenutoolbutton.h \ - /usr/include/gtk-2.0/gtk/gtktoolbutton.h \ - /usr/include/gtk-2.0/gtk/gtktoolitem.h \ - /usr/include/gtk-2.0/gtk/gtktooltips.h \ - /usr/include/gtk-2.0/gtk/gtksizegroup.h \ - /usr/include/gtk-2.0/gtk/gtkmessagedialog.h \ - /usr/include/gtk-2.0/gtk/gtkmodules.h \ - /usr/include/gtk-2.0/gtk/gtkmountoperation.h \ - /usr/include/gtk-2.0/gtk/gtknotebook.h \ - /usr/include/gtk-2.0/gtk/gtkoffscreenwindow.h \ - /usr/include/gtk-2.0/gtk/gtkorientable.h \ - /usr/include/gtk-2.0/gtk/gtkpagesetup.h \ - /usr/include/gtk-2.0/gtk/gtkpapersize.h \ - /usr/include/gtk-2.0/gtk/gtkplug.h /usr/include/gtk-2.0/gtk/gtksocket.h \ - /usr/include/gtk-2.0/gtk/gtkprintcontext.h \ - /usr/include/gtk-2.0/gtk/gtkprintoperation.h \ - /usr/include/gtk-2.0/gtk/gtkprintsettings.h \ - /usr/include/gtk-2.0/gtk/gtkprintoperationpreview.h \ - /usr/include/gtk-2.0/gtk/gtkprogressbar.h \ - /usr/include/gtk-2.0/gtk/gtkprogress.h \ - /usr/include/gtk-2.0/gtk/gtkradioaction.h \ - /usr/include/gtk-2.0/gtk/gtktoggleaction.h \ - /usr/include/gtk-2.0/gtk/gtkradiobutton.h \ - /usr/include/gtk-2.0/gtk/gtkradiomenuitem.h \ - /usr/include/gtk-2.0/gtk/gtkradiotoolbutton.h \ - /usr/include/gtk-2.0/gtk/gtktoggletoolbutton.h \ - /usr/include/gtk-2.0/gtk/gtkrecentaction.h \ - /usr/include/gtk-2.0/gtk/gtkrecentmanager.h \ - /usr/include/gtk-2.0/gtk/gtkrecentchooser.h \ - /usr/include/gtk-2.0/gtk/gtkrecentfilter.h \ - /usr/include/gtk-2.0/gtk/gtkrecentchooserdialog.h \ - /usr/include/gtk-2.0/gtk/gtkrecentchoosermenu.h \ - /usr/include/gtk-2.0/gtk/gtkrecentchooserwidget.h \ - /usr/include/gtk-2.0/gtk/gtkscalebutton.h \ - /usr/include/gtk-2.0/gtk/gtkscrolledwindow.h \ - /usr/include/gtk-2.0/gtk/gtkvscrollbar.h \ - /usr/include/gtk-2.0/gtk/gtkviewport.h \ - /usr/include/gtk-2.0/gtk/gtkseparatormenuitem.h \ - /usr/include/gtk-2.0/gtk/gtkseparatortoolitem.h \ - /usr/include/gtk-2.0/gtk/gtkshow.h \ - /usr/include/gtk-2.0/gtk/gtkspinbutton.h \ - /usr/include/gtk-2.0/gtk/gtkspinner.h \ - /usr/include/gtk-2.0/gtk/gtkstatusbar.h \ - /usr/include/gtk-2.0/gtk/gtkstatusicon.h \ - /usr/include/gtk-2.0/gtk/gtkstock.h /usr/include/gtk-2.0/gtk/gtktable.h \ - /usr/include/gtk-2.0/gtk/gtktearoffmenuitem.h \ - /usr/include/gtk-2.0/gtk/gtktextbuffer.h \ - /usr/include/gtk-2.0/gtk/gtktexttagtable.h \ - /usr/include/gtk-2.0/gtk/gtktextmark.h \ - /usr/include/gtk-2.0/gtk/gtktextbufferrichtext.h \ - /usr/include/gtk-2.0/gtk/gtktextview.h \ - /usr/include/gtk-2.0/gtk/gtktoolbar.h \ - /usr/include/gtk-2.0/gtk/gtkpixmap.h \ - /usr/include/gtk-2.0/gtk/gtktoolitemgroup.h \ - /usr/include/gtk-2.0/gtk/gtktoolpalette.h \ - /usr/include/gtk-2.0/gtk/gtktoolshell.h \ - /usr/include/gtk-2.0/gtk/gtktestutils.h \ - /usr/include/gtk-2.0/gtk/gtktreednd.h \ - /usr/include/gtk-2.0/gtk/gtktreemodelsort.h \ - /usr/include/gtk-2.0/gtk/gtktreeselection.h \ - /usr/include/gtk-2.0/gtk/gtktreestore.h \ - /usr/include/gtk-2.0/gtk/gtkuimanager.h \ - /usr/include/gtk-2.0/gtk/gtkvbbox.h \ - /usr/include/gtk-2.0/gtk/gtkversion.h \ - /usr/include/gtk-2.0/gtk/gtkvolumebutton.h \ - /usr/include/gtk-2.0/gtk/gtkvpaned.h \ - /usr/include/gtk-2.0/gtk/gtkvruler.h \ - /usr/include/gtk-2.0/gtk/gtkvscale.h \ - /usr/include/gtk-2.0/gtk/gtkvseparator.h \ - /usr/include/gtk-2.0/gtk/gtktext.h /usr/include/gtk-2.0/gtk/gtktree.h \ - /usr/include/gtk-2.0/gtk/gtktreeitem.h \ - /usr/include/gtk-2.0/gtk/gtkclist.h /usr/include/gtk-2.0/gtk/gtkcombo.h \ - /usr/include/gtk-2.0/gtk/gtkctree.h /usr/include/gtk-2.0/gtk/gtkcurve.h \ - /usr/include/gtk-2.0/gtk/gtkfilesel.h \ - /usr/include/gtk-2.0/gtk/gtkgamma.h \ - /usr/include/gtk-2.0/gtk/gtkinputdialog.h \ - /usr/include/gtk-2.0/gtk/gtkitemfactory.h \ - /usr/include/gtk-2.0/gtk/gtklist.h \ - /usr/include/gtk-2.0/gtk/gtklistitem.h \ - /usr/include/gtk-2.0/gtk/gtkoldeditable.h \ - /usr/include/gtk-2.0/gtk/gtkoptionmenu.h \ - /usr/include/gtk-2.0/gtk/gtkpreview.h \ - /usr/include/gtk-2.0/gtk/gtktipsquery.h \ - /usr/include/gtk-2.0/gdk/gdkkeysyms.h \ - /usr/include/gtk-2.0/gdk/gdkkeysyms-compat.h lazyfixed.h sysdep.h \ - vlazyfixed.h client.h game.h tiles.h tiles-enums.h player.h \ - player-enums.h protocol.h cmsg_union.h pmsg_union.h protocol-enums.h \ - game-enums.h version.h -lazyfixed.o: lazyfixed.c lazyfixed.h /usr/include/gtk-2.0/gtk/gtkfixed.h \ - /usr/include/gtk-2.0/gtk/gtkcontainer.h \ - /usr/include/gtk-2.0/gtk/gtkwidget.h /usr/include/gtk-2.0/gdk/gdk.h \ - /usr/include/gtk-2.0/gdk/gdkapplaunchcontext.h \ - /usr/include/glib-2.0/gio/gio.h /usr/include/glib-2.0/gio/giotypes.h \ - /usr/include/glib-2.0/gio/gioenums.h /usr/include/glib-2.0/glib-object.h \ - /usr/include/glib-2.0/gobject/gbinding.h /usr/include/glib-2.0/glib.h \ - /usr/include/glib-2.0/glib/galloca.h /usr/include/glib-2.0/glib/gtypes.h \ - /usr/lib/glib-2.0/include/glibconfig.h \ - /usr/include/glib-2.0/glib/gmacros.h /usr/include/glib-2.0/glib/garray.h \ - /usr/include/glib-2.0/glib/gasyncqueue.h \ - /usr/include/glib-2.0/glib/gthread.h /usr/include/glib-2.0/glib/gerror.h \ - /usr/include/glib-2.0/glib/gquark.h /usr/include/glib-2.0/glib/gutils.h \ - /usr/include/glib-2.0/glib/gatomic.h \ - /usr/include/glib-2.0/glib/gbacktrace.h \ - /usr/include/glib-2.0/glib/gbase64.h \ - /usr/include/glib-2.0/glib/gbitlock.h \ - /usr/include/glib-2.0/glib/gbookmarkfile.h \ - /usr/include/glib-2.0/glib/gcache.h /usr/include/glib-2.0/glib/glist.h \ - /usr/include/glib-2.0/glib/gmem.h /usr/include/glib-2.0/glib/gslice.h \ - /usr/include/glib-2.0/glib/gchecksum.h \ - /usr/include/glib-2.0/glib/gcompletion.h \ - /usr/include/glib-2.0/glib/gconvert.h \ - /usr/include/glib-2.0/glib/gdataset.h /usr/include/glib-2.0/glib/gdate.h \ - /usr/include/glib-2.0/glib/gdatetime.h \ - /usr/include/glib-2.0/glib/gtimezone.h /usr/include/glib-2.0/glib/gdir.h \ - /usr/include/glib-2.0/glib/gfileutils.h \ - /usr/include/glib-2.0/glib/ghash.h /usr/include/glib-2.0/glib/ghook.h \ - /usr/include/glib-2.0/glib/ghostutils.h \ - /usr/include/glib-2.0/glib/giochannel.h \ - /usr/include/glib-2.0/glib/gmain.h /usr/include/glib-2.0/glib/gpoll.h \ - /usr/include/glib-2.0/glib/gslist.h /usr/include/glib-2.0/glib/gstring.h \ - /usr/include/glib-2.0/glib/gunicode.h \ - /usr/include/glib-2.0/glib/gkeyfile.h \ - /usr/include/glib-2.0/glib/gmappedfile.h \ - /usr/include/glib-2.0/glib/gmarkup.h \ - /usr/include/glib-2.0/glib/gmessages.h \ - /usr/include/glib-2.0/glib/gnode.h /usr/include/glib-2.0/glib/goption.h \ - /usr/include/glib-2.0/glib/gpattern.h \ - /usr/include/glib-2.0/glib/gprimes.h /usr/include/glib-2.0/glib/gqsort.h \ - /usr/include/glib-2.0/glib/gqueue.h /usr/include/glib-2.0/glib/grand.h \ - /usr/include/glib-2.0/glib/grel.h /usr/include/glib-2.0/glib/gregex.h \ - /usr/include/glib-2.0/glib/gscanner.h \ - /usr/include/glib-2.0/glib/gsequence.h \ - /usr/include/glib-2.0/glib/gshell.h /usr/include/glib-2.0/glib/gspawn.h \ - /usr/include/glib-2.0/glib/gstrfuncs.h \ - /usr/include/glib-2.0/glib/gtestutils.h \ - /usr/include/glib-2.0/glib/gthreadpool.h \ - /usr/include/glib-2.0/glib/gtimer.h /usr/include/glib-2.0/glib/gtree.h \ - /usr/include/glib-2.0/glib/gurifuncs.h \ - /usr/include/glib-2.0/glib/gvarianttype.h \ - /usr/include/glib-2.0/glib/gvariant.h \ - /usr/include/glib-2.0/gobject/gobject.h \ - /usr/include/glib-2.0/gobject/gtype.h \ - /usr/include/glib-2.0/gobject/gvalue.h \ - /usr/include/glib-2.0/gobject/gparam.h \ - /usr/include/glib-2.0/gobject/gclosure.h \ - /usr/include/glib-2.0/gobject/gsignal.h \ - /usr/include/glib-2.0/gobject/gmarshal.h \ - /usr/include/glib-2.0/gobject/gboxed.h \ - /usr/include/glib-2.0/gobject/genums.h \ - /usr/include/glib-2.0/gobject/gparamspecs.h \ - /usr/include/glib-2.0/gobject/gsourceclosure.h \ - /usr/include/glib-2.0/gobject/gtypemodule.h \ - /usr/include/glib-2.0/gobject/gtypeplugin.h \ - /usr/include/glib-2.0/gobject/gvaluearray.h \ - /usr/include/glib-2.0/gobject/gvaluetypes.h \ - /usr/include/glib-2.0/gio/gappinfo.h /usr/include/glib-2.0/gio/gaction.h \ - /usr/include/glib-2.0/gio/gsimpleaction.h \ - /usr/include/glib-2.0/gio/gactiongroup.h \ - /usr/include/glib-2.0/gio/gsimpleactiongroup.h \ - /usr/include/glib-2.0/gio/gactiongroup.h \ - /usr/include/glib-2.0/gio/gapplication.h \ - /usr/include/glib-2.0/gio/gapplicationcommandline.h \ - /usr/include/glib-2.0/gio/gasyncinitable.h \ - /usr/include/glib-2.0/gio/ginitable.h \ - /usr/include/glib-2.0/gio/gasyncresult.h \ - /usr/include/glib-2.0/gio/gbufferedinputstream.h \ - /usr/include/glib-2.0/gio/gfilterinputstream.h \ - /usr/include/glib-2.0/gio/ginputstream.h \ - /usr/include/glib-2.0/gio/gbufferedoutputstream.h \ - /usr/include/glib-2.0/gio/gfilteroutputstream.h \ - /usr/include/glib-2.0/gio/goutputstream.h \ - /usr/include/glib-2.0/gio/gcancellable.h \ - /usr/include/glib-2.0/gio/gcharsetconverter.h \ - /usr/include/glib-2.0/gio/gconverter.h \ - /usr/include/glib-2.0/gio/gcontenttype.h \ - /usr/include/glib-2.0/gio/gconverterinputstream.h \ - /usr/include/glib-2.0/gio/gconverteroutputstream.h \ - /usr/include/glib-2.0/gio/gcredentials.h \ - /usr/include/glib-2.0/gio/gdatainputstream.h \ - /usr/include/glib-2.0/gio/gdataoutputstream.h \ - /usr/include/glib-2.0/gio/gdbusaddress.h \ - /usr/include/glib-2.0/gio/gdbusauthobserver.h \ - /usr/include/glib-2.0/gio/gdbusconnection.h \ - /usr/include/glib-2.0/gio/gdbuserror.h \ - /usr/include/glib-2.0/gio/gdbusintrospection.h \ - /usr/include/glib-2.0/gio/gdbusmessage.h \ - /usr/include/glib-2.0/gio/gdbusmethodinvocation.h \ - /usr/include/glib-2.0/gio/gdbusnameowning.h \ - /usr/include/glib-2.0/gio/gdbusnamewatching.h \ - /usr/include/glib-2.0/gio/gdbusproxy.h \ - /usr/include/glib-2.0/gio/gdbusserver.h \ - /usr/include/glib-2.0/gio/gdbusutils.h \ - /usr/include/glib-2.0/gio/gdrive.h \ - /usr/include/glib-2.0/gio/gemblemedicon.h \ - /usr/include/glib-2.0/gio/gicon.h /usr/include/glib-2.0/gio/gemblem.h \ - /usr/include/glib-2.0/gio/gfileattribute.h \ - /usr/include/glib-2.0/gio/gfileenumerator.h \ - /usr/include/glib-2.0/gio/gfile.h /usr/include/glib-2.0/gio/gfileicon.h \ - /usr/include/glib-2.0/gio/gfileinfo.h \ - /usr/include/glib-2.0/gio/gfileinputstream.h \ - /usr/include/glib-2.0/gio/gfileiostream.h \ - /usr/include/glib-2.0/gio/giostream.h \ - /usr/include/glib-2.0/gio/gioerror.h \ - /usr/include/glib-2.0/gio/gfilemonitor.h \ - /usr/include/glib-2.0/gio/gfilenamecompleter.h \ - /usr/include/glib-2.0/gio/gfileoutputstream.h \ - /usr/include/glib-2.0/gio/ginetaddress.h \ - /usr/include/glib-2.0/gio/ginetsocketaddress.h \ - /usr/include/glib-2.0/gio/gsocketaddress.h \ - /usr/include/glib-2.0/gio/gioenumtypes.h \ - /usr/include/glib-2.0/gio/giomodule.h /usr/include/glib-2.0/gmodule.h \ - /usr/include/glib-2.0/gio/gioscheduler.h \ - /usr/include/glib-2.0/gio/gloadableicon.h \ - /usr/include/glib-2.0/gio/gmemoryinputstream.h \ - /usr/include/glib-2.0/gio/gmemoryoutputstream.h \ - /usr/include/glib-2.0/gio/gmount.h \ - /usr/include/glib-2.0/gio/gmountoperation.h \ - /usr/include/glib-2.0/gio/gnativevolumemonitor.h \ - /usr/include/glib-2.0/gio/gvolumemonitor.h \ - /usr/include/glib-2.0/gio/gnetworkaddress.h \ - /usr/include/glib-2.0/gio/gnetworkservice.h \ - /usr/include/glib-2.0/gio/gpermission.h \ - /usr/include/glib-2.0/gio/gpollableinputstream.h \ - /usr/include/glib-2.0/gio/gpollableoutputstream.h \ - /usr/include/glib-2.0/gio/gproxy.h \ - /usr/include/glib-2.0/gio/gproxyaddress.h \ - /usr/include/glib-2.0/gio/gproxyaddressenumerator.h \ - /usr/include/glib-2.0/gio/gsocketaddressenumerator.h \ - /usr/include/glib-2.0/gio/gproxyresolver.h \ - /usr/include/glib-2.0/gio/gresolver.h \ - /usr/include/glib-2.0/gio/gseekable.h \ - /usr/include/glib-2.0/gio/gsettings.h \ - /usr/include/glib-2.0/gio/gsimpleasyncresult.h \ - /usr/include/glib-2.0/gio/gsimplepermission.h \ - /usr/include/glib-2.0/gio/gsocketclient.h \ - /usr/include/glib-2.0/gio/gsocketconnectable.h \ - /usr/include/glib-2.0/gio/gsocketconnection.h \ - /usr/include/glib-2.0/gio/gsocket.h \ - /usr/include/glib-2.0/gio/gsocketcontrolmessage.h \ - /usr/include/glib-2.0/gio/gsocketlistener.h \ - /usr/include/glib-2.0/gio/gsocketservice.h \ - /usr/include/glib-2.0/gio/gsrvtarget.h \ - /usr/include/glib-2.0/gio/gtcpconnection.h \ - /usr/include/glib-2.0/gio/gtcpwrapperconnection.h \ - /usr/include/glib-2.0/gio/gthemedicon.h \ - /usr/include/glib-2.0/gio/gthreadedsocketservice.h \ - /usr/include/glib-2.0/gio/gtlsbackend.h \ - /usr/include/glib-2.0/gio/gtlscertificate.h \ - /usr/include/glib-2.0/gio/gtlsclientconnection.h \ - /usr/include/glib-2.0/gio/gtlsconnection.h \ - /usr/include/glib-2.0/gio/gtlsserverconnection.h \ - /usr/include/glib-2.0/gio/gvfs.h /usr/include/glib-2.0/gio/gvolume.h \ - /usr/include/glib-2.0/gio/gzlibcompressor.h \ - /usr/include/glib-2.0/gio/gzlibdecompressor.h \ - /usr/include/gtk-2.0/gdk/gdkscreen.h /usr/include/cairo/cairo.h \ - /usr/include/cairo/cairo-version.h /usr/include/cairo/cairo-features.h \ - /usr/include/cairo/cairo-deprecated.h \ - /usr/include/gtk-2.0/gdk/gdktypes.h /usr/include/pango-1.0/pango/pango.h \ - /usr/include/pango-1.0/pango/pango-attributes.h \ - /usr/include/pango-1.0/pango/pango-font.h \ - /usr/include/pango-1.0/pango/pango-coverage.h \ - /usr/include/pango-1.0/pango/pango-types.h \ - /usr/include/pango-1.0/pango/pango-gravity.h \ - /usr/include/pango-1.0/pango/pango-matrix.h \ - /usr/include/pango-1.0/pango/pango-script.h \ - /usr/include/pango-1.0/pango/pango-language.h \ - /usr/include/pango-1.0/pango/pango-bidi-type.h \ - /usr/include/pango-1.0/pango/pango-break.h \ - /usr/include/pango-1.0/pango/pango-item.h \ - /usr/include/pango-1.0/pango/pango-context.h \ - /usr/include/pango-1.0/pango/pango-fontmap.h \ - /usr/include/pango-1.0/pango/pango-fontset.h \ - /usr/include/pango-1.0/pango/pango-engine.h \ - /usr/include/pango-1.0/pango/pango-glyph.h \ - /usr/include/pango-1.0/pango/pango-enum-types.h \ - /usr/include/pango-1.0/pango/pango-features.h \ - /usr/include/pango-1.0/pango/pango-glyph-item.h \ - /usr/include/pango-1.0/pango/pango-layout.h \ - /usr/include/pango-1.0/pango/pango-tabs.h \ - /usr/include/pango-1.0/pango/pango-renderer.h \ - /usr/include/pango-1.0/pango/pango-utils.h \ - /usr/lib/gtk-2.0/include/gdkconfig.h \ - /usr/include/gtk-2.0/gdk/gdkdisplay.h \ - /usr/include/gtk-2.0/gdk/gdkevents.h /usr/include/gtk-2.0/gdk/gdkcolor.h \ - /usr/include/gtk-2.0/gdk/gdkdnd.h /usr/include/gtk-2.0/gdk/gdkinput.h \ - /usr/include/gtk-2.0/gdk/gdkcairo.h /usr/include/gtk-2.0/gdk/gdkpixbuf.h \ - /usr/include/gtk-2.0/gdk/gdkrgb.h \ - /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf.h \ - /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-features.h \ - /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-core.h \ - /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-transform.h \ - /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-animation.h \ - /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-simple-anim.h \ - /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-io.h \ - /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-loader.h \ - /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-enum-types.h \ - /usr/include/pango-1.0/pango/pangocairo.h \ - /usr/include/gtk-2.0/gdk/gdkcursor.h \ - /usr/include/gtk-2.0/gdk/gdkdisplaymanager.h \ - /usr/include/gtk-2.0/gdk/gdkdrawable.h /usr/include/gtk-2.0/gdk/gdkgc.h \ - /usr/include/gtk-2.0/gdk/gdkenumtypes.h \ - /usr/include/gtk-2.0/gdk/gdkfont.h /usr/include/gtk-2.0/gdk/gdkimage.h \ - /usr/include/gtk-2.0/gdk/gdkkeys.h /usr/include/gtk-2.0/gdk/gdkpango.h \ - /usr/include/gtk-2.0/gdk/gdkpixmap.h \ - /usr/include/gtk-2.0/gdk/gdkproperty.h \ - /usr/include/gtk-2.0/gdk/gdkregion.h \ - /usr/include/gtk-2.0/gdk/gdkselection.h \ - /usr/include/gtk-2.0/gdk/gdkspawn.h \ - /usr/include/gtk-2.0/gdk/gdktestutils.h \ - /usr/include/gtk-2.0/gdk/gdkwindow.h \ - /usr/include/gtk-2.0/gdk/gdkvisual.h \ - /usr/include/gtk-2.0/gtk/gtkaccelgroup.h \ - /usr/include/gtk-2.0/gtk/gtkenums.h /usr/include/gtk-2.0/gtk/gtkobject.h \ - /usr/include/gtk-2.0/gtk/gtktypeutils.h \ - /usr/include/gtk-2.0/gtk/gtktypebuiltins.h \ - /usr/include/gtk-2.0/gtk/gtkdebug.h \ - /usr/include/gtk-2.0/gtk/gtkadjustment.h \ - /usr/include/gtk-2.0/gtk/gtkstyle.h \ - /usr/include/gtk-2.0/gtk/gtksettings.h /usr/include/gtk-2.0/gtk/gtkrc.h \ - /usr/include/atk-1.0/atk/atk.h /usr/include/atk-1.0/atk/atkobject.h \ - /usr/include/atk-1.0/atk/atkstate.h \ - /usr/include/atk-1.0/atk/atkrelationtype.h \ - /usr/include/atk-1.0/atk/atkaction.h \ - /usr/include/atk-1.0/atk/atkcomponent.h \ - /usr/include/atk-1.0/atk/atkutil.h \ - /usr/include/atk-1.0/atk/atkdocument.h \ - /usr/include/atk-1.0/atk/atkeditabletext.h \ - /usr/include/atk-1.0/atk/atktext.h \ - /usr/include/atk-1.0/atk/atkgobjectaccessible.h \ - /usr/include/atk-1.0/atk/atkhyperlink.h \ - /usr/include/atk-1.0/atk/atkhyperlinkimpl.h \ - /usr/include/atk-1.0/atk/atkhypertext.h \ - /usr/include/atk-1.0/atk/atkimage.h \ - /usr/include/atk-1.0/atk/atknoopobject.h \ - /usr/include/atk-1.0/atk/atknoopobjectfactory.h \ - /usr/include/atk-1.0/atk/atkobjectfactory.h \ - /usr/include/atk-1.0/atk/atkplug.h \ - /usr/include/atk-1.0/atk/atkregistry.h \ - /usr/include/atk-1.0/atk/atkobjectfactory.h \ - /usr/include/atk-1.0/atk/atkrelation.h \ - /usr/include/atk-1.0/atk/atkrelationset.h \ - /usr/include/atk-1.0/atk/atkselection.h \ - /usr/include/atk-1.0/atk/atksocket.h \ - /usr/include/atk-1.0/atk/atkstateset.h \ - /usr/include/atk-1.0/atk/atkstreamablecontent.h \ - /usr/include/atk-1.0/atk/atktable.h /usr/include/atk-1.0/atk/atkmisc.h \ - /usr/include/atk-1.0/atk/atkvalue.h sysdep.h -vlazyfixed.o: vlazyfixed.c vlazyfixed.h \ - /usr/include/gtk-2.0/gtk/gtkfixed.h \ - /usr/include/gtk-2.0/gtk/gtkcontainer.h \ - /usr/include/gtk-2.0/gtk/gtkwidget.h /usr/include/gtk-2.0/gdk/gdk.h \ - /usr/include/gtk-2.0/gdk/gdkapplaunchcontext.h \ - /usr/include/glib-2.0/gio/gio.h /usr/include/glib-2.0/gio/giotypes.h \ - /usr/include/glib-2.0/gio/gioenums.h /usr/include/glib-2.0/glib-object.h \ - /usr/include/glib-2.0/gobject/gbinding.h /usr/include/glib-2.0/glib.h \ - /usr/include/glib-2.0/glib/galloca.h /usr/include/glib-2.0/glib/gtypes.h \ - /usr/lib/glib-2.0/include/glibconfig.h \ - /usr/include/glib-2.0/glib/gmacros.h /usr/include/glib-2.0/glib/garray.h \ - /usr/include/glib-2.0/glib/gasyncqueue.h \ - /usr/include/glib-2.0/glib/gthread.h /usr/include/glib-2.0/glib/gerror.h \ - /usr/include/glib-2.0/glib/gquark.h /usr/include/glib-2.0/glib/gutils.h \ - /usr/include/glib-2.0/glib/gatomic.h \ - /usr/include/glib-2.0/glib/gbacktrace.h \ - /usr/include/glib-2.0/glib/gbase64.h \ - /usr/include/glib-2.0/glib/gbitlock.h \ - /usr/include/glib-2.0/glib/gbookmarkfile.h \ - /usr/include/glib-2.0/glib/gcache.h /usr/include/glib-2.0/glib/glist.h \ - /usr/include/glib-2.0/glib/gmem.h /usr/include/glib-2.0/glib/gslice.h \ - /usr/include/glib-2.0/glib/gchecksum.h \ - /usr/include/glib-2.0/glib/gcompletion.h \ - /usr/include/glib-2.0/glib/gconvert.h \ - /usr/include/glib-2.0/glib/gdataset.h /usr/include/glib-2.0/glib/gdate.h \ - /usr/include/glib-2.0/glib/gdatetime.h \ - /usr/include/glib-2.0/glib/gtimezone.h /usr/include/glib-2.0/glib/gdir.h \ - /usr/include/glib-2.0/glib/gfileutils.h \ - /usr/include/glib-2.0/glib/ghash.h /usr/include/glib-2.0/glib/ghook.h \ - /usr/include/glib-2.0/glib/ghostutils.h \ - /usr/include/glib-2.0/glib/giochannel.h \ - /usr/include/glib-2.0/glib/gmain.h /usr/include/glib-2.0/glib/gpoll.h \ - /usr/include/glib-2.0/glib/gslist.h /usr/include/glib-2.0/glib/gstring.h \ - /usr/include/glib-2.0/glib/gunicode.h \ - /usr/include/glib-2.0/glib/gkeyfile.h \ - /usr/include/glib-2.0/glib/gmappedfile.h \ - /usr/include/glib-2.0/glib/gmarkup.h \ - /usr/include/glib-2.0/glib/gmessages.h \ - /usr/include/glib-2.0/glib/gnode.h /usr/include/glib-2.0/glib/goption.h \ - /usr/include/glib-2.0/glib/gpattern.h \ - /usr/include/glib-2.0/glib/gprimes.h /usr/include/glib-2.0/glib/gqsort.h \ - /usr/include/glib-2.0/glib/gqueue.h /usr/include/glib-2.0/glib/grand.h \ - /usr/include/glib-2.0/glib/grel.h /usr/include/glib-2.0/glib/gregex.h \ - /usr/include/glib-2.0/glib/gscanner.h \ - /usr/include/glib-2.0/glib/gsequence.h \ - /usr/include/glib-2.0/glib/gshell.h /usr/include/glib-2.0/glib/gspawn.h \ - /usr/include/glib-2.0/glib/gstrfuncs.h \ - /usr/include/glib-2.0/glib/gtestutils.h \ - /usr/include/glib-2.0/glib/gthreadpool.h \ - /usr/include/glib-2.0/glib/gtimer.h /usr/include/glib-2.0/glib/gtree.h \ - /usr/include/glib-2.0/glib/gurifuncs.h \ - /usr/include/glib-2.0/glib/gvarianttype.h \ - /usr/include/glib-2.0/glib/gvariant.h \ - /usr/include/glib-2.0/gobject/gobject.h \ - /usr/include/glib-2.0/gobject/gtype.h \ - /usr/include/glib-2.0/gobject/gvalue.h \ - /usr/include/glib-2.0/gobject/gparam.h \ - /usr/include/glib-2.0/gobject/gclosure.h \ - /usr/include/glib-2.0/gobject/gsignal.h \ - /usr/include/glib-2.0/gobject/gmarshal.h \ - /usr/include/glib-2.0/gobject/gboxed.h \ - /usr/include/glib-2.0/gobject/genums.h \ - /usr/include/glib-2.0/gobject/gparamspecs.h \ - /usr/include/glib-2.0/gobject/gsourceclosure.h \ - /usr/include/glib-2.0/gobject/gtypemodule.h \ - /usr/include/glib-2.0/gobject/gtypeplugin.h \ - /usr/include/glib-2.0/gobject/gvaluearray.h \ - /usr/include/glib-2.0/gobject/gvaluetypes.h \ - /usr/include/glib-2.0/gio/gappinfo.h /usr/include/glib-2.0/gio/gaction.h \ - /usr/include/glib-2.0/gio/gsimpleaction.h \ - /usr/include/glib-2.0/gio/gactiongroup.h \ - /usr/include/glib-2.0/gio/gsimpleactiongroup.h \ - /usr/include/glib-2.0/gio/gactiongroup.h \ - /usr/include/glib-2.0/gio/gapplication.h \ - /usr/include/glib-2.0/gio/gapplicationcommandline.h \ - /usr/include/glib-2.0/gio/gasyncinitable.h \ - /usr/include/glib-2.0/gio/ginitable.h \ - /usr/include/glib-2.0/gio/gasyncresult.h \ - /usr/include/glib-2.0/gio/gbufferedinputstream.h \ - /usr/include/glib-2.0/gio/gfilterinputstream.h \ - /usr/include/glib-2.0/gio/ginputstream.h \ - /usr/include/glib-2.0/gio/gbufferedoutputstream.h \ - /usr/include/glib-2.0/gio/gfilteroutputstream.h \ - /usr/include/glib-2.0/gio/goutputstream.h \ - /usr/include/glib-2.0/gio/gcancellable.h \ - /usr/include/glib-2.0/gio/gcharsetconverter.h \ - /usr/include/glib-2.0/gio/gconverter.h \ - /usr/include/glib-2.0/gio/gcontenttype.h \ - /usr/include/glib-2.0/gio/gconverterinputstream.h \ - /usr/include/glib-2.0/gio/gconverteroutputstream.h \ - /usr/include/glib-2.0/gio/gcredentials.h \ - /usr/include/glib-2.0/gio/gdatainputstream.h \ - /usr/include/glib-2.0/gio/gdataoutputstream.h \ - /usr/include/glib-2.0/gio/gdbusaddress.h \ - /usr/include/glib-2.0/gio/gdbusauthobserver.h \ - /usr/include/glib-2.0/gio/gdbusconnection.h \ - /usr/include/glib-2.0/gio/gdbuserror.h \ - /usr/include/glib-2.0/gio/gdbusintrospection.h \ - /usr/include/glib-2.0/gio/gdbusmessage.h \ - /usr/include/glib-2.0/gio/gdbusmethodinvocation.h \ - /usr/include/glib-2.0/gio/gdbusnameowning.h \ - /usr/include/glib-2.0/gio/gdbusnamewatching.h \ - /usr/include/glib-2.0/gio/gdbusproxy.h \ - /usr/include/glib-2.0/gio/gdbusserver.h \ - /usr/include/glib-2.0/gio/gdbusutils.h \ - /usr/include/glib-2.0/gio/gdrive.h \ - /usr/include/glib-2.0/gio/gemblemedicon.h \ - /usr/include/glib-2.0/gio/gicon.h /usr/include/glib-2.0/gio/gemblem.h \ - /usr/include/glib-2.0/gio/gfileattribute.h \ - /usr/include/glib-2.0/gio/gfileenumerator.h \ - /usr/include/glib-2.0/gio/gfile.h /usr/include/glib-2.0/gio/gfileicon.h \ - /usr/include/glib-2.0/gio/gfileinfo.h \ - /usr/include/glib-2.0/gio/gfileinputstream.h \ - /usr/include/glib-2.0/gio/gfileiostream.h \ - /usr/include/glib-2.0/gio/giostream.h \ - /usr/include/glib-2.0/gio/gioerror.h \ - /usr/include/glib-2.0/gio/gfilemonitor.h \ - /usr/include/glib-2.0/gio/gfilenamecompleter.h \ - /usr/include/glib-2.0/gio/gfileoutputstream.h \ - /usr/include/glib-2.0/gio/ginetaddress.h \ - /usr/include/glib-2.0/gio/ginetsocketaddress.h \ - /usr/include/glib-2.0/gio/gsocketaddress.h \ - /usr/include/glib-2.0/gio/gioenumtypes.h \ - /usr/include/glib-2.0/gio/giomodule.h /usr/include/glib-2.0/gmodule.h \ - /usr/include/glib-2.0/gio/gioscheduler.h \ - /usr/include/glib-2.0/gio/gloadableicon.h \ - /usr/include/glib-2.0/gio/gmemoryinputstream.h \ - /usr/include/glib-2.0/gio/gmemoryoutputstream.h \ - /usr/include/glib-2.0/gio/gmount.h \ - /usr/include/glib-2.0/gio/gmountoperation.h \ - /usr/include/glib-2.0/gio/gnativevolumemonitor.h \ - /usr/include/glib-2.0/gio/gvolumemonitor.h \ - /usr/include/glib-2.0/gio/gnetworkaddress.h \ - /usr/include/glib-2.0/gio/gnetworkservice.h \ - /usr/include/glib-2.0/gio/gpermission.h \ - /usr/include/glib-2.0/gio/gpollableinputstream.h \ - /usr/include/glib-2.0/gio/gpollableoutputstream.h \ - /usr/include/glib-2.0/gio/gproxy.h \ - /usr/include/glib-2.0/gio/gproxyaddress.h \ - /usr/include/glib-2.0/gio/gproxyaddressenumerator.h \ - /usr/include/glib-2.0/gio/gsocketaddressenumerator.h \ - /usr/include/glib-2.0/gio/gproxyresolver.h \ - /usr/include/glib-2.0/gio/gresolver.h \ - /usr/include/glib-2.0/gio/gseekable.h \ - /usr/include/glib-2.0/gio/gsettings.h \ - /usr/include/glib-2.0/gio/gsimpleasyncresult.h \ - /usr/include/glib-2.0/gio/gsimplepermission.h \ - /usr/include/glib-2.0/gio/gsocketclient.h \ - /usr/include/glib-2.0/gio/gsocketconnectable.h \ - /usr/include/glib-2.0/gio/gsocketconnection.h \ - /usr/include/glib-2.0/gio/gsocket.h \ - /usr/include/glib-2.0/gio/gsocketcontrolmessage.h \ - /usr/include/glib-2.0/gio/gsocketlistener.h \ - /usr/include/glib-2.0/gio/gsocketservice.h \ - /usr/include/glib-2.0/gio/gsrvtarget.h \ - /usr/include/glib-2.0/gio/gtcpconnection.h \ - /usr/include/glib-2.0/gio/gtcpwrapperconnection.h \ - /usr/include/glib-2.0/gio/gthemedicon.h \ - /usr/include/glib-2.0/gio/gthreadedsocketservice.h \ - /usr/include/glib-2.0/gio/gtlsbackend.h \ - /usr/include/glib-2.0/gio/gtlscertificate.h \ - /usr/include/glib-2.0/gio/gtlsclientconnection.h \ - /usr/include/glib-2.0/gio/gtlsconnection.h \ - /usr/include/glib-2.0/gio/gtlsserverconnection.h \ - /usr/include/glib-2.0/gio/gvfs.h /usr/include/glib-2.0/gio/gvolume.h \ - /usr/include/glib-2.0/gio/gzlibcompressor.h \ - /usr/include/glib-2.0/gio/gzlibdecompressor.h \ - /usr/include/gtk-2.0/gdk/gdkscreen.h /usr/include/cairo/cairo.h \ - /usr/include/cairo/cairo-version.h /usr/include/cairo/cairo-features.h \ - /usr/include/cairo/cairo-deprecated.h \ - /usr/include/gtk-2.0/gdk/gdktypes.h /usr/include/pango-1.0/pango/pango.h \ - /usr/include/pango-1.0/pango/pango-attributes.h \ - /usr/include/pango-1.0/pango/pango-font.h \ - /usr/include/pango-1.0/pango/pango-coverage.h \ - /usr/include/pango-1.0/pango/pango-types.h \ - /usr/include/pango-1.0/pango/pango-gravity.h \ - /usr/include/pango-1.0/pango/pango-matrix.h \ - /usr/include/pango-1.0/pango/pango-script.h \ - /usr/include/pango-1.0/pango/pango-language.h \ - /usr/include/pango-1.0/pango/pango-bidi-type.h \ - /usr/include/pango-1.0/pango/pango-break.h \ - /usr/include/pango-1.0/pango/pango-item.h \ - /usr/include/pango-1.0/pango/pango-context.h \ - /usr/include/pango-1.0/pango/pango-fontmap.h \ - /usr/include/pango-1.0/pango/pango-fontset.h \ - /usr/include/pango-1.0/pango/pango-engine.h \ - /usr/include/pango-1.0/pango/pango-glyph.h \ - /usr/include/pango-1.0/pango/pango-enum-types.h \ - /usr/include/pango-1.0/pango/pango-features.h \ - /usr/include/pango-1.0/pango/pango-glyph-item.h \ - /usr/include/pango-1.0/pango/pango-layout.h \ - /usr/include/pango-1.0/pango/pango-tabs.h \ - /usr/include/pango-1.0/pango/pango-renderer.h \ - /usr/include/pango-1.0/pango/pango-utils.h \ - /usr/lib/gtk-2.0/include/gdkconfig.h \ - /usr/include/gtk-2.0/gdk/gdkdisplay.h \ - /usr/include/gtk-2.0/gdk/gdkevents.h /usr/include/gtk-2.0/gdk/gdkcolor.h \ - /usr/include/gtk-2.0/gdk/gdkdnd.h /usr/include/gtk-2.0/gdk/gdkinput.h \ - /usr/include/gtk-2.0/gdk/gdkcairo.h /usr/include/gtk-2.0/gdk/gdkpixbuf.h \ - /usr/include/gtk-2.0/gdk/gdkrgb.h \ - /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf.h \ - /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-features.h \ - /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-core.h \ - /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-transform.h \ - /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-animation.h \ - /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-simple-anim.h \ - /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-io.h \ - /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-loader.h \ - /usr/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-enum-types.h \ - /usr/include/pango-1.0/pango/pangocairo.h \ - /usr/include/gtk-2.0/gdk/gdkcursor.h \ - /usr/include/gtk-2.0/gdk/gdkdisplaymanager.h \ - /usr/include/gtk-2.0/gdk/gdkdrawable.h /usr/include/gtk-2.0/gdk/gdkgc.h \ - /usr/include/gtk-2.0/gdk/gdkenumtypes.h \ - /usr/include/gtk-2.0/gdk/gdkfont.h /usr/include/gtk-2.0/gdk/gdkimage.h \ - /usr/include/gtk-2.0/gdk/gdkkeys.h /usr/include/gtk-2.0/gdk/gdkpango.h \ - /usr/include/gtk-2.0/gdk/gdkpixmap.h \ - /usr/include/gtk-2.0/gdk/gdkproperty.h \ - /usr/include/gtk-2.0/gdk/gdkregion.h \ - /usr/include/gtk-2.0/gdk/gdkselection.h \ - /usr/include/gtk-2.0/gdk/gdkspawn.h \ - /usr/include/gtk-2.0/gdk/gdktestutils.h \ - /usr/include/gtk-2.0/gdk/gdkwindow.h \ - /usr/include/gtk-2.0/gdk/gdkvisual.h \ - /usr/include/gtk-2.0/gtk/gtkaccelgroup.h \ - /usr/include/gtk-2.0/gtk/gtkenums.h /usr/include/gtk-2.0/gtk/gtkobject.h \ - /usr/include/gtk-2.0/gtk/gtktypeutils.h \ - /usr/include/gtk-2.0/gtk/gtktypebuiltins.h \ - /usr/include/gtk-2.0/gtk/gtkdebug.h \ - /usr/include/gtk-2.0/gtk/gtkadjustment.h \ - /usr/include/gtk-2.0/gtk/gtkstyle.h \ - /usr/include/gtk-2.0/gtk/gtksettings.h /usr/include/gtk-2.0/gtk/gtkrc.h \ - /usr/include/atk-1.0/atk/atk.h /usr/include/atk-1.0/atk/atkobject.h \ - /usr/include/atk-1.0/atk/atkstate.h \ - /usr/include/atk-1.0/atk/atkrelationtype.h \ - /usr/include/atk-1.0/atk/atkaction.h \ - /usr/include/atk-1.0/atk/atkcomponent.h \ - /usr/include/atk-1.0/atk/atkutil.h \ - /usr/include/atk-1.0/atk/atkdocument.h \ - /usr/include/atk-1.0/atk/atkeditabletext.h \ - /usr/include/atk-1.0/atk/atktext.h \ - /usr/include/atk-1.0/atk/atkgobjectaccessible.h \ - /usr/include/atk-1.0/atk/atkhyperlink.h \ - /usr/include/atk-1.0/atk/atkhyperlinkimpl.h \ - /usr/include/atk-1.0/atk/atkhypertext.h \ - /usr/include/atk-1.0/atk/atkimage.h \ - /usr/include/atk-1.0/atk/atknoopobject.h \ - /usr/include/atk-1.0/atk/atknoopobjectfactory.h \ - /usr/include/atk-1.0/atk/atkobjectfactory.h \ - /usr/include/atk-1.0/atk/atkplug.h \ - /usr/include/atk-1.0/atk/atkregistry.h \ - /usr/include/atk-1.0/atk/atkobjectfactory.h \ - /usr/include/atk-1.0/atk/atkrelation.h \ - /usr/include/atk-1.0/atk/atkrelationset.h \ - /usr/include/atk-1.0/atk/atkselection.h \ - /usr/include/atk-1.0/atk/atksocket.h \ - /usr/include/atk-1.0/atk/atkstateset.h \ - /usr/include/atk-1.0/atk/atkstreamablecontent.h \ - /usr/include/atk-1.0/atk/atktable.h /usr/include/atk-1.0/atk/atkmisc.h \ - /usr/include/atk-1.0/atk/atkvalue.h sysdep.h +gui.o: gui.c gui.h lazyfixed.h sysdep.h vlazyfixed.h client.h game.h \ + tiles.h tiles-enums.h player.h player-enums.h protocol.h cmsg_union.h \ + pmsg_union.h protocol-enums.h game-enums.h version.h gtkrc.h +gui-dial.o: gui-dial.c gui.h lazyfixed.h sysdep.h vlazyfixed.h client.h \ + game.h tiles.h tiles-enums.h player.h player-enums.h protocol.h \ + cmsg_union.h pmsg_union.h protocol-enums.h game-enums.h version.h +lazyfixed.o: lazyfixed.c lazyfixed.h sysdep.h +vlazyfixed.o: vlazyfixed.c vlazyfixed.h sysdep.h client.o: client.c sysdep.h client.h game.h tiles.h tiles-enums.h \ player.h player-enums.h protocol.h cmsg_union.h pmsg_union.h \ protocol-enums.h game-enums.h --- /dev/null +++ b/cmsg_size.c @@ -0,0 +1,1332 @@ +static int cmsg_size[] = { +-sizeof(CMsgErrorMsg), +-sizeof(CMsgInfoTilesMsg), +-sizeof(CMsgStateSavedMsg), +0, +0, +0, +0, +0, +0, +0, +-sizeof(CMsgConnectReplyMsg), +sizeof(CMsgReconnectMsg), +-sizeof(CMsgAuthReqdMsg), +-sizeof(CMsgRedirectMsg), +0, +0, +0, +0, +0, +0, +-sizeof(CMsgPlayerMsg), +0, +0, +0, +0, +0, +0, +0, +0, +sizeof(CMsgNewRoundMsg), +sizeof(CMsgGameMsg), +sizeof(CMsgNewHandMsg), +0, +0, +sizeof(CMsgPlayerDeclaresSpecialMsg), +sizeof(CMsgStartPlayMsg), +-sizeof(CMsgStopPlayMsg), +-sizeof(CMsgPauseMsg), +sizeof(CMsgPlayerReadyMsg), +0, +sizeof(CMsgPlayerDrawsMsg), +sizeof(CMsgPlayerDrawsLooseMsg), +0, +0, +0, +0, +0, +0, +0, +0, +sizeof(CMsgPlayerDiscardsMsg), +-sizeof(CMsgClaimDeniedMsg), +sizeof(CMsgPlayerDoesntClaimMsg), +0, +0, +sizeof(CMsgDangerousDiscardMsg), +0, +0, +0, +0, +sizeof(CMsgPlayerClaimsPungMsg), +sizeof(CMsgPlayerPungsMsg), +sizeof(CMsgPlayerFormsClosedPungMsg), +0, +0, +0, +0, +0, +0, +0, +sizeof(CMsgPlayerClaimsKongMsg), +sizeof(CMsgPlayerKongsMsg), +0, +0, +0, +0, +0, +0, +0, +0, +sizeof(CMsgPlayerDeclaresClosedKongMsg), +sizeof(CMsgPlayerAddsToPungMsg), +0, +0, +0, +sizeof(CMsgPlayerRobsKongMsg), +0, +sizeof(CMsgCanMahJongMsg), +0, +0, +sizeof(CMsgPlayerClaimsChowMsg), +sizeof(CMsgPlayerChowsMsg), +sizeof(CMsgPlayerFormsClosedChowMsg), +0, +0, +0, +0, +0, +0, +-sizeof(CMsgWashOutMsg), +sizeof(CMsgPlayerClaimsMahJongMsg), +sizeof(CMsgPlayerMahJongsMsg), +sizeof(CMsgPlayerPairsMsg), +sizeof(CMsgPlayerFormsClosedPairMsg), +0, +-sizeof(CMsgPlayerShowsTilesMsg), +-sizeof(CMsgPlayerSpecialSetMsg), +-sizeof(CMsgPlayerFormsClosedSpecialSetMsg), +0, +0, +-sizeof(CMsgPlayerOptionSetMsg), +0, +0, +0, +0, +-sizeof(CMsgHandScoreMsg), +0, +0, +0, +0, +-sizeof(CMsgSettlementMsg), +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +sizeof(CMsgGameOverMsg), +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +sizeof(CMsgGameOptionMsg), +0, +0, +0, +0, +0, +0, +0, +0, +0, +sizeof(CMsgChangeManagerMsg), +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +-sizeof(CMsgMessageMsg), +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +-sizeof(CMsgWallMsg), +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +-sizeof(CMsgCommentMsg), +sizeof(CMsgSwapTileMsg), +}; + +int cmsg_size_of(ControllerMsgType t) { return cmsg_size[t]; } + +CMsgMsg *cmsg_deepcopy(CMsgMsg *m) { + CMsgMsg *n; + int size; + char *mc,*nc; + + size = cmsg_size_of(m->type); + if ( size < 0 ) size *= -1; + n = (CMsgMsg *)malloc(size); + if ( ! n ) return n; + + memcpy((void *)n,(const void *)m,size); + switch ( m->type ) { + case CMsgWashOut: + mc = ((CMsgWashOutMsg *)m)->reason; + if ( mc ) { + nc = (char *)malloc(strlen(mc)+1); + if ( ! nc ) return NULL; + strcpy(nc,mc); + } else { + nc = NULL; + } + ((CMsgWashOutMsg *)n)->reason = nc; + break; + case CMsgSettlement: + mc = ((CMsgSettlementMsg *)m)->explanation; + if ( mc ) { + nc = (char *)malloc(strlen(mc)+1); + if ( ! nc ) return NULL; + strcpy(nc,mc); + } else { + nc = NULL; + } + ((CMsgSettlementMsg *)n)->explanation = nc; + break; + case CMsgConnectReply: + mc = ((CMsgConnectReplyMsg *)m)->reason; + if ( mc ) { + nc = (char *)malloc(strlen(mc)+1); + if ( ! nc ) return NULL; + strcpy(nc,mc); + } else { + nc = NULL; + } + ((CMsgConnectReplyMsg *)n)->reason = nc; + break; + case CMsgPlayerOptionSet: + mc = ((CMsgPlayerOptionSetMsg *)m)->text; + if ( mc ) { + nc = (char *)malloc(strlen(mc)+1); + if ( ! nc ) return NULL; + strcpy(nc,mc); + } else { + nc = NULL; + } + ((CMsgPlayerOptionSetMsg *)n)->text = nc; + break; + case CMsgError: + mc = ((CMsgErrorMsg *)m)->error; + if ( mc ) { + nc = (char *)malloc(strlen(mc)+1); + if ( ! nc ) return NULL; + strcpy(nc,mc); + } else { + nc = NULL; + } + ((CMsgErrorMsg *)n)->error = nc; + break; + case CMsgInfoTiles: + mc = ((CMsgInfoTilesMsg *)m)->tileinfo; + if ( mc ) { + nc = (char *)malloc(strlen(mc)+1); + if ( ! nc ) return NULL; + strcpy(nc,mc); + } else { + nc = NULL; + } + ((CMsgInfoTilesMsg *)n)->tileinfo = nc; + break; + case CMsgRedirect: + mc = ((CMsgRedirectMsg *)m)->dest; + if ( mc ) { + nc = (char *)malloc(strlen(mc)+1); + if ( ! nc ) return NULL; + strcpy(nc,mc); + } else { + nc = NULL; + } + ((CMsgRedirectMsg *)n)->dest = nc; + break; + case CMsgPlayerFormsClosedSpecialSet: + mc = ((CMsgPlayerFormsClosedSpecialSetMsg *)m)->tiles; + if ( mc ) { + nc = (char *)malloc(strlen(mc)+1); + if ( ! nc ) return NULL; + strcpy(nc,mc); + } else { + nc = NULL; + } + ((CMsgPlayerFormsClosedSpecialSetMsg *)n)->tiles = nc; + break; + case CMsgMessage: + mc = ((CMsgMessageMsg *)m)->text; + if ( mc ) { + nc = (char *)malloc(strlen(mc)+1); + if ( ! nc ) return NULL; + strcpy(nc,mc); + } else { + nc = NULL; + } + ((CMsgMessageMsg *)n)->text = nc; + break; + case CMsgAuthReqd: + mc = ((CMsgAuthReqdMsg *)m)->authdata; + if ( mc ) { + nc = (char *)malloc(strlen(mc)+1); + if ( ! nc ) return NULL; + strcpy(nc,mc); + } else { + nc = NULL; + } + ((CMsgAuthReqdMsg *)n)->authdata = nc; + break; + case CMsgPause: + mc = ((CMsgPauseMsg *)m)->reason; + if ( mc ) { + nc = (char *)malloc(strlen(mc)+1); + if ( ! nc ) return NULL; + strcpy(nc,mc); + } else { + nc = NULL; + } + ((CMsgPauseMsg *)n)->reason = nc; + break; + case CMsgStateSaved: + mc = ((CMsgStateSavedMsg *)m)->filename; + if ( mc ) { + nc = (char *)malloc(strlen(mc)+1); + if ( ! nc ) return NULL; + strcpy(nc,mc); + } else { + nc = NULL; + } + ((CMsgStateSavedMsg *)n)->filename = nc; + break; + case CMsgWall: + mc = ((CMsgWallMsg *)m)->wall; + if ( mc ) { + nc = (char *)malloc(strlen(mc)+1); + if ( ! nc ) return NULL; + strcpy(nc,mc); + } else { + nc = NULL; + } + ((CMsgWallMsg *)n)->wall = nc; + break; + case CMsgPlayerSpecialSet: + mc = ((CMsgPlayerSpecialSetMsg *)m)->tiles; + if ( mc ) { + nc = (char *)malloc(strlen(mc)+1); + if ( ! nc ) return NULL; + strcpy(nc,mc); + } else { + nc = NULL; + } + ((CMsgPlayerSpecialSetMsg *)n)->tiles = nc; + break; + case CMsgPlayerShowsTiles: + mc = ((CMsgPlayerShowsTilesMsg *)m)->tiles; + if ( mc ) { + nc = (char *)malloc(strlen(mc)+1); + if ( ! nc ) return NULL; + strcpy(nc,mc); + } else { + nc = NULL; + } + ((CMsgPlayerShowsTilesMsg *)n)->tiles = nc; + break; + case CMsgComment: + mc = ((CMsgCommentMsg *)m)->comment; + if ( mc ) { + nc = (char *)malloc(strlen(mc)+1); + if ( ! nc ) return NULL; + strcpy(nc,mc); + } else { + nc = NULL; + } + ((CMsgCommentMsg *)n)->comment = nc; + break; + case CMsgPlayer: + mc = ((CMsgPlayerMsg *)m)->name; + if ( mc ) { + nc = (char *)malloc(strlen(mc)+1); + if ( ! nc ) return NULL; + strcpy(nc,mc); + } else { + nc = NULL; + } + ((CMsgPlayerMsg *)n)->name = nc; + break; + case CMsgStopPlay: + mc = ((CMsgStopPlayMsg *)m)->reason; + if ( mc ) { + nc = (char *)malloc(strlen(mc)+1); + if ( ! nc ) return NULL; + strcpy(nc,mc); + } else { + nc = NULL; + } + ((CMsgStopPlayMsg *)n)->reason = nc; + break; + case CMsgClaimDenied: + mc = ((CMsgClaimDeniedMsg *)m)->reason; + if ( mc ) { + nc = (char *)malloc(strlen(mc)+1); + if ( ! nc ) return NULL; + strcpy(nc,mc); + } else { + nc = NULL; + } + ((CMsgClaimDeniedMsg *)n)->reason = nc; + break; + case CMsgHandScore: + mc = ((CMsgHandScoreMsg *)m)->explanation; + if ( mc ) { + nc = (char *)malloc(strlen(mc)+1); + if ( ! nc ) return NULL; + strcpy(nc,mc); + } else { + nc = NULL; + } + ((CMsgHandScoreMsg *)n)->explanation = nc; + break; + default: + ; + } + return n; +} + +void cmsg_deepfree(CMsgMsg *m) { + switch ( m->type ) { + case CMsgWashOut: + if ( ((CMsgWashOutMsg *)m)->reason ) + free((void *)((CMsgWashOutMsg *)m)->reason); + break; + case CMsgSettlement: + if ( ((CMsgSettlementMsg *)m)->explanation ) + free((void *)((CMsgSettlementMsg *)m)->explanation); + break; + case CMsgConnectReply: + if ( ((CMsgConnectReplyMsg *)m)->reason ) + free((void *)((CMsgConnectReplyMsg *)m)->reason); + break; + case CMsgPlayerOptionSet: + if ( ((CMsgPlayerOptionSetMsg *)m)->text ) + free((void *)((CMsgPlayerOptionSetMsg *)m)->text); + break; + case CMsgError: + if ( ((CMsgErrorMsg *)m)->error ) + free((void *)((CMsgErrorMsg *)m)->error); + break; + case CMsgInfoTiles: + if ( ((CMsgInfoTilesMsg *)m)->tileinfo ) + free((void *)((CMsgInfoTilesMsg *)m)->tileinfo); + break; + case CMsgRedirect: + if ( ((CMsgRedirectMsg *)m)->dest ) + free((void *)((CMsgRedirectMsg *)m)->dest); + break; + case CMsgPlayerFormsClosedSpecialSet: + if ( ((CMsgPlayerFormsClosedSpecialSetMsg *)m)->tiles ) + free((void *)((CMsgPlayerFormsClosedSpecialSetMsg *)m)->tiles); + break; + case CMsgMessage: + if ( ((CMsgMessageMsg *)m)->text ) + free((void *)((CMsgMessageMsg *)m)->text); + break; + case CMsgAuthReqd: + if ( ((CMsgAuthReqdMsg *)m)->authdata ) + free((void *)((CMsgAuthReqdMsg *)m)->authdata); + break; + case CMsgPause: + if ( ((CMsgPauseMsg *)m)->reason ) + free((void *)((CMsgPauseMsg *)m)->reason); + break; + case CMsgStateSaved: + if ( ((CMsgStateSavedMsg *)m)->filename ) + free((void *)((CMsgStateSavedMsg *)m)->filename); + break; + case CMsgWall: + if ( ((CMsgWallMsg *)m)->wall ) + free((void *)((CMsgWallMsg *)m)->wall); + break; + case CMsgPlayerSpecialSet: + if ( ((CMsgPlayerSpecialSetMsg *)m)->tiles ) + free((void *)((CMsgPlayerSpecialSetMsg *)m)->tiles); + break; + case CMsgPlayerShowsTiles: + if ( ((CMsgPlayerShowsTilesMsg *)m)->tiles ) + free((void *)((CMsgPlayerShowsTilesMsg *)m)->tiles); + break; + case CMsgComment: + if ( ((CMsgCommentMsg *)m)->comment ) + free((void *)((CMsgCommentMsg *)m)->comment); + break; + case CMsgPlayer: + if ( ((CMsgPlayerMsg *)m)->name ) + free((void *)((CMsgPlayerMsg *)m)->name); + break; + case CMsgStopPlay: + if ( ((CMsgStopPlayMsg *)m)->reason ) + free((void *)((CMsgStopPlayMsg *)m)->reason); + break; + case CMsgClaimDenied: + if ( ((CMsgClaimDeniedMsg *)m)->reason ) + free((void *)((CMsgClaimDeniedMsg *)m)->reason); + break; + case CMsgHandScore: + if ( ((CMsgHandScoreMsg *)m)->explanation ) + free((void *)((CMsgHandScoreMsg *)m)->explanation); + break; + default: + ; + } + free((void *)m); +} + --- /dev/null +++ b/cmsg_union.h @@ -0,0 +1,57 @@ +typedef union _CMsgUnion { + /* Note that this type field relies on the fact that all + messages have type as their first field */ +ControllerMsgType type; +CMsgErrorMsg error; +CMsgInfoTilesMsg infotiles; +CMsgStateSavedMsg statesaved; +CMsgConnectReplyMsg connectreply; +CMsgReconnectMsg reconnect; +CMsgAuthReqdMsg authreqd; +CMsgRedirectMsg redirect; +CMsgPlayerMsg player; +CMsgNewRoundMsg newround; +CMsgGameMsg game; +CMsgNewHandMsg newhand; +CMsgPlayerDeclaresSpecialMsg playerdeclaresspecial; +CMsgStartPlayMsg startplay; +CMsgStopPlayMsg stopplay; +CMsgPauseMsg pause; +CMsgPlayerReadyMsg playerready; +CMsgPlayerDrawsMsg playerdraws; +CMsgPlayerDrawsLooseMsg playerdrawsloose; +CMsgPlayerDiscardsMsg playerdiscards; +CMsgClaimDeniedMsg claimdenied; +CMsgPlayerDoesntClaimMsg playerdoesntclaim; +CMsgDangerousDiscardMsg dangerousdiscard; +CMsgPlayerClaimsPungMsg playerclaimspung; +CMsgPlayerPungsMsg playerpungs; +CMsgPlayerFormsClosedPungMsg playerformsclosedpung; +CMsgPlayerClaimsKongMsg playerclaimskong; +CMsgPlayerKongsMsg playerkongs; +CMsgPlayerDeclaresClosedKongMsg playerdeclaresclosedkong; +CMsgPlayerAddsToPungMsg playeraddstopung; +CMsgPlayerRobsKongMsg playerrobskong; +CMsgCanMahJongMsg canmahjong; +CMsgPlayerClaimsChowMsg playerclaimschow; +CMsgPlayerChowsMsg playerchows; +CMsgPlayerFormsClosedChowMsg playerformsclosedchow; +CMsgWashOutMsg washout; +CMsgPlayerClaimsMahJongMsg playerclaimsmahjong; +CMsgPlayerMahJongsMsg playermahjongs; +CMsgPlayerPairsMsg playerpairs; +CMsgPlayerFormsClosedPairMsg playerformsclosedpair; +CMsgPlayerShowsTilesMsg playershowstiles; +CMsgPlayerSpecialSetMsg playerspecialset; +CMsgPlayerFormsClosedSpecialSetMsg playerformsclosedspecialset; +CMsgPlayerOptionSetMsg playeroptionset; +CMsgHandScoreMsg handscore; +CMsgSettlementMsg settlement; +CMsgGameOverMsg gameover; +CMsgGameOptionMsg gameoption; +CMsgChangeManagerMsg changemanager; +CMsgMessageMsg message; +CMsgWallMsg wall; +CMsgCommentMsg comment; +CMsgSwapTileMsg swaptile; +} CMsgUnion; --- /dev/null +++ b/dec_cmsg.c @@ -0,0 +1,1176 @@ + if ( strcmp(type,"Error") == 0 ) { + CMsgErrorMsg *m; + + m = (CMsgErrorMsg *)malloc(sizeof(CMsgErrorMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgError; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->seqno = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( strlen(s) == 0 ) m->error = (char *)0; + else { + m->error = (char *)malloc(strlen(s)+1); + if ( ! m->error ) { warn("malloc failed\n"); return (CMsgMsg *)0; } + strcpy(m->error,s+(s[0] == '\\')); + } + return (CMsgMsg *) m; + } + if ( strcmp(type,"StateSaved") == 0 ) { + CMsgStateSavedMsg *m; + + m = (CMsgStateSavedMsg *)malloc(sizeof(CMsgStateSavedMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgStateSaved; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->id = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( strlen(s) == 0 ) m->filename = (char *)0; + else { + m->filename = (char *)malloc(strlen(s)+1); + if ( ! m->filename ) { warn("malloc failed\n"); return (CMsgMsg *)0; } + strcpy(m->filename,s+(s[0] == '\\')); + } + return (CMsgMsg *) m; + } + if ( strcmp(type,"InfoTiles") == 0 ) { + CMsgInfoTilesMsg *m; + + m = (CMsgInfoTilesMsg *)malloc(sizeof(CMsgInfoTilesMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgInfoTiles; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->id = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( strlen(s) == 0 ) m->tileinfo = (char *)0; + else { + m->tileinfo = (char *)malloc(strlen(s)+1); + if ( ! m->tileinfo ) { warn("malloc failed\n"); return (CMsgMsg *)0; } + strcpy(m->tileinfo,s+(s[0] == '\\')); + } + return (CMsgMsg *) m; + } + if ( strcmp(type,"ConnectReply") == 0 ) { + CMsgConnectReplyMsg *m; + + m = (CMsgConnectReplyMsg *)malloc(sizeof(CMsgConnectReplyMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgConnectReply; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->pvers = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->id = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( strlen(s) == 0 ) m->reason = (char *)0; + else { + m->reason = (char *)malloc(strlen(s)+1); + if ( ! m->reason ) { warn("malloc failed\n"); return (CMsgMsg *)0; } + strcpy(m->reason,s+(s[0] == '\\')); + } + return (CMsgMsg *) m; + } + if ( strcmp(type,"AuthReqd") == 0 ) { + CMsgAuthReqdMsg *m; + + m = (CMsgAuthReqdMsg *)malloc(sizeof(CMsgAuthReqdMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgAuthReqd; + + if ( sscanf(s,"%16s%n",little_string,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + strmcpy(m->authtype,little_string,16); + s += n; + while ( isspace(*s) ) s++; + + if ( strlen(s) == 0 ) m->authdata = (char *)0; + else { + m->authdata = (char *)malloc(strlen(s)+1); + if ( ! m->authdata ) { warn("malloc failed\n"); return (CMsgMsg *)0; } + strcpy(m->authdata,s+(s[0] == '\\')); + } + return (CMsgMsg *) m; + } + if ( strcmp(type,"Redirect") == 0 ) { + CMsgRedirectMsg *m; + + m = (CMsgRedirectMsg *)malloc(sizeof(CMsgRedirectMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgRedirect; + + if ( strlen(s) == 0 ) m->dest = (char *)0; + else { + m->dest = (char *)malloc(strlen(s)+1); + if ( ! m->dest ) { warn("malloc failed\n"); return (CMsgMsg *)0; } + strcpy(m->dest,s+(s[0] == '\\')); + } + return (CMsgMsg *) m; + } + if ( strcmp(type,"Reconnect") == 0 ) { + CMsgReconnectMsg *m; + + m = (CMsgReconnectMsg *)malloc(sizeof(CMsgReconnectMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgReconnect; + + return (CMsgMsg *) m; + } + if ( strcmp(type,"Player") == 0 ) { + CMsgPlayerMsg *m; + + m = (CMsgPlayerMsg *)malloc(sizeof(CMsgPlayerMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgPlayer; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->id = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( strlen(s) == 0 ) m->name = (char *)0; + else { + m->name = (char *)malloc(strlen(s)+1); + if ( ! m->name ) { warn("malloc failed\n"); return (CMsgMsg *)0; } + strcpy(m->name,s+(s[0] == '\\')); + } + return (CMsgMsg *) m; + } + if ( strcmp(type,"Game") == 0 ) { + CMsgGameMsg *m; + + m = (CMsgGameMsg *)malloc(sizeof(CMsgGameMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgGame; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->east = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->south = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->west = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->north = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%c%n",&a_char,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->round = letterwind(a_char); + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->hands_as_east = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->firsteast = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->east_score = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->south_score = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->west_score = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->north_score = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->protversion = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->manager = an_int; + s += n; + while ( isspace(*s) ) s++; + + return (CMsgMsg *) m; + } + if ( strcmp(type,"NewRound") == 0 ) { + CMsgNewRoundMsg *m; + + m = (CMsgNewRoundMsg *)malloc(sizeof(CMsgNewRoundMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgNewRound; + + if ( sscanf(s,"%c%n",&a_char,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->round = letterwind(a_char); + s += n; + while ( isspace(*s) ) s++; + + return (CMsgMsg *) m; + } + if ( strcmp(type,"NewHand") == 0 ) { + CMsgNewHandMsg *m; + + m = (CMsgNewHandMsg *)malloc(sizeof(CMsgNewHandMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgNewHand; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->east = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->start_wall = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->start_stack = an_int; + s += n; + while ( isspace(*s) ) s++; + + return (CMsgMsg *) m; + } + if ( strcmp(type,"PlayerDraws") == 0 ) { + CMsgPlayerDrawsMsg *m; + + m = (CMsgPlayerDrawsMsg *)malloc(sizeof(CMsgPlayerDrawsMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgPlayerDraws; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->id = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%2s%n",little_string,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->tile = tile_decode(little_string); + if ( m->tile == ErrorTile ) { warn("protocol error\n"); return (CMsgMsg *)0; } + s += n; + while ( isspace(*s) ) s++; + + return (CMsgMsg *) m; + } + if ( strcmp(type,"PlayerDrawsLoose") == 0 ) { + CMsgPlayerDrawsLooseMsg *m; + + m = (CMsgPlayerDrawsLooseMsg *)malloc(sizeof(CMsgPlayerDrawsLooseMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgPlayerDrawsLoose; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->id = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%2s%n",little_string,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->tile = tile_decode(little_string); + if ( m->tile == ErrorTile ) { warn("protocol error\n"); return (CMsgMsg *)0; } + s += n; + while ( isspace(*s) ) s++; + + return (CMsgMsg *) m; + } + if ( strcmp(type,"PlayerDeclaresSpecial") == 0 ) { + CMsgPlayerDeclaresSpecialMsg *m; + + m = (CMsgPlayerDeclaresSpecialMsg *)malloc(sizeof(CMsgPlayerDeclaresSpecialMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgPlayerDeclaresSpecial; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->id = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%2s%n",little_string,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->tile = tile_decode(little_string); + if ( m->tile == ErrorTile ) { warn("protocol error\n"); return (CMsgMsg *)0; } + s += n; + while ( isspace(*s) ) s++; + + return (CMsgMsg *) m; + } + if ( strcmp(type,"StartPlay") == 0 ) { + CMsgStartPlayMsg *m; + + m = (CMsgStartPlayMsg *)malloc(sizeof(CMsgStartPlayMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgStartPlay; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->id = an_int; + s += n; + while ( isspace(*s) ) s++; + + return (CMsgMsg *) m; + } + if ( strcmp(type,"StopPlay") == 0 ) { + CMsgStopPlayMsg *m; + + m = (CMsgStopPlayMsg *)malloc(sizeof(CMsgStopPlayMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgStopPlay; + + if ( strlen(s) == 0 ) m->reason = (char *)0; + else { + m->reason = (char *)malloc(strlen(s)+1); + if ( ! m->reason ) { warn("malloc failed\n"); return (CMsgMsg *)0; } + strcpy(m->reason,s+(s[0] == '\\')); + } + return (CMsgMsg *) m; + } + if ( strcmp(type,"Pause") == 0 ) { + CMsgPauseMsg *m; + + m = (CMsgPauseMsg *)malloc(sizeof(CMsgPauseMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgPause; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->exempt = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->requestor = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( strlen(s) == 0 ) m->reason = (char *)0; + else { + m->reason = (char *)malloc(strlen(s)+1); + if ( ! m->reason ) { warn("malloc failed\n"); return (CMsgMsg *)0; } + strcpy(m->reason,s+(s[0] == '\\')); + } + return (CMsgMsg *) m; + } + if ( strcmp(type,"PlayerReady") == 0 ) { + CMsgPlayerReadyMsg *m; + + m = (CMsgPlayerReadyMsg *)malloc(sizeof(CMsgPlayerReadyMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgPlayerReady; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->id = an_int; + s += n; + while ( isspace(*s) ) s++; + + return (CMsgMsg *) m; + } + if ( strcmp(type,"PlayerDiscards") == 0 ) { + CMsgPlayerDiscardsMsg *m; + + m = (CMsgPlayerDiscardsMsg *)malloc(sizeof(CMsgPlayerDiscardsMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgPlayerDiscards; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->id = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%2s%n",little_string,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->tile = tile_decode(little_string); + if ( m->tile == ErrorTile ) { warn("protocol error\n"); return (CMsgMsg *)0; } + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->discard = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + if ( an_int < 0 || an_int > 1 ) { warn("protocol error\n") ; return (CMsgMsg *)0; } + m->calling = an_int; + s += n; + while ( isspace(*s) ) s++; + + return (CMsgMsg *) m; + } + if ( strcmp(type,"PlayerDoesntClaim") == 0 ) { + CMsgPlayerDoesntClaimMsg *m; + + m = (CMsgPlayerDoesntClaimMsg *)malloc(sizeof(CMsgPlayerDoesntClaimMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgPlayerDoesntClaim; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->id = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->discard = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + if ( an_int < 0 || an_int > 1 ) { warn("protocol error\n") ; return (CMsgMsg *)0; } + m->timeout = an_int; + s += n; + while ( isspace(*s) ) s++; + + return (CMsgMsg *) m; + } + if ( strcmp(type,"DangerousDiscard") == 0 ) { + CMsgDangerousDiscardMsg *m; + + m = (CMsgDangerousDiscardMsg *)malloc(sizeof(CMsgDangerousDiscardMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgDangerousDiscard; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->id = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->discard = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + if ( an_int < 0 || an_int > 1 ) { warn("protocol error\n") ; return (CMsgMsg *)0; } + m->nochoice = an_int; + s += n; + while ( isspace(*s) ) s++; + + return (CMsgMsg *) m; + } + if ( strcmp(type,"PlayerClaimsPung") == 0 ) { + CMsgPlayerClaimsPungMsg *m; + + m = (CMsgPlayerClaimsPungMsg *)malloc(sizeof(CMsgPlayerClaimsPungMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgPlayerClaimsPung; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->id = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->discard = an_int; + s += n; + while ( isspace(*s) ) s++; + + return (CMsgMsg *) m; + } + if ( strcmp(type,"ClaimDenied") == 0 ) { + CMsgClaimDeniedMsg *m; + + m = (CMsgClaimDeniedMsg *)malloc(sizeof(CMsgClaimDeniedMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgClaimDenied; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->id = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( strlen(s) == 0 ) m->reason = (char *)0; + else { + m->reason = (char *)malloc(strlen(s)+1); + if ( ! m->reason ) { warn("malloc failed\n"); return (CMsgMsg *)0; } + strcpy(m->reason,s+(s[0] == '\\')); + } + return (CMsgMsg *) m; + } + if ( strcmp(type,"PlayerPungs") == 0 ) { + CMsgPlayerPungsMsg *m; + + m = (CMsgPlayerPungsMsg *)malloc(sizeof(CMsgPlayerPungsMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgPlayerPungs; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->id = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%2s%n",little_string,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->tile = tile_decode(little_string); + if ( m->tile == ErrorTile ) { warn("protocol error\n"); return (CMsgMsg *)0; } + s += n; + while ( isspace(*s) ) s++; + + return (CMsgMsg *) m; + } + if ( strcmp(type,"PlayerFormsClosedPung") == 0 ) { + CMsgPlayerFormsClosedPungMsg *m; + + m = (CMsgPlayerFormsClosedPungMsg *)malloc(sizeof(CMsgPlayerFormsClosedPungMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgPlayerFormsClosedPung; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->id = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%2s%n",little_string,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->tile = tile_decode(little_string); + if ( m->tile == ErrorTile ) { warn("protocol error\n"); return (CMsgMsg *)0; } + s += n; + while ( isspace(*s) ) s++; + + return (CMsgMsg *) m; + } + if ( strcmp(type,"PlayerClaimsKong") == 0 ) { + CMsgPlayerClaimsKongMsg *m; + + m = (CMsgPlayerClaimsKongMsg *)malloc(sizeof(CMsgPlayerClaimsKongMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgPlayerClaimsKong; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->id = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->discard = an_int; + s += n; + while ( isspace(*s) ) s++; + + return (CMsgMsg *) m; + } + if ( strcmp(type,"PlayerKongs") == 0 ) { + CMsgPlayerKongsMsg *m; + + m = (CMsgPlayerKongsMsg *)malloc(sizeof(CMsgPlayerKongsMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgPlayerKongs; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->id = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%2s%n",little_string,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->tile = tile_decode(little_string); + if ( m->tile == ErrorTile ) { warn("protocol error\n"); return (CMsgMsg *)0; } + s += n; + while ( isspace(*s) ) s++; + + return (CMsgMsg *) m; + } + if ( strcmp(type,"PlayerDeclaresClosedKong") == 0 ) { + CMsgPlayerDeclaresClosedKongMsg *m; + + m = (CMsgPlayerDeclaresClosedKongMsg *)malloc(sizeof(CMsgPlayerDeclaresClosedKongMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgPlayerDeclaresClosedKong; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->id = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%2s%n",little_string,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->tile = tile_decode(little_string); + if ( m->tile == ErrorTile ) { warn("protocol error\n"); return (CMsgMsg *)0; } + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->discard = an_int; + s += n; + while ( isspace(*s) ) s++; + + return (CMsgMsg *) m; + } + if ( strcmp(type,"PlayerAddsToPung") == 0 ) { + CMsgPlayerAddsToPungMsg *m; + + m = (CMsgPlayerAddsToPungMsg *)malloc(sizeof(CMsgPlayerAddsToPungMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgPlayerAddsToPung; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->id = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%2s%n",little_string,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->tile = tile_decode(little_string); + if ( m->tile == ErrorTile ) { warn("protocol error\n"); return (CMsgMsg *)0; } + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->discard = an_int; + s += n; + while ( isspace(*s) ) s++; + + return (CMsgMsg *) m; + } + if ( strcmp(type,"PlayerRobsKong") == 0 ) { + CMsgPlayerRobsKongMsg *m; + + m = (CMsgPlayerRobsKongMsg *)malloc(sizeof(CMsgPlayerRobsKongMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgPlayerRobsKong; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->id = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%2s%n",little_string,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->tile = tile_decode(little_string); + if ( m->tile == ErrorTile ) { warn("protocol error\n"); return (CMsgMsg *)0; } + s += n; + while ( isspace(*s) ) s++; + + return (CMsgMsg *) m; + } + if ( strcmp(type,"CanMahJong") == 0 ) { + CMsgCanMahJongMsg *m; + + m = (CMsgCanMahJongMsg *)malloc(sizeof(CMsgCanMahJongMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgCanMahJong; + + if ( sscanf(s,"%2s%n",little_string,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->tile = tile_decode(little_string); + if ( m->tile == ErrorTile ) { warn("protocol error\n"); return (CMsgMsg *)0; } + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + if ( an_int < 0 || an_int > 1 ) { warn("protocol error\n") ; return (CMsgMsg *)0; } + m->answer = an_int; + s += n; + while ( isspace(*s) ) s++; + + return (CMsgMsg *) m; + } + if ( strcmp(type,"PlayerClaimsChow") == 0 ) { + CMsgPlayerClaimsChowMsg *m; + + m = (CMsgPlayerClaimsChowMsg *)malloc(sizeof(CMsgPlayerClaimsChowMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgPlayerClaimsChow; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->id = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->discard = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%31s%n",little_string,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->cpos = string_cpos(little_string); + s += n; + while ( isspace(*s) ) s++; + + return (CMsgMsg *) m; + } + if ( strcmp(type,"PlayerChows") == 0 ) { + CMsgPlayerChowsMsg *m; + + m = (CMsgPlayerChowsMsg *)malloc(sizeof(CMsgPlayerChowsMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgPlayerChows; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->id = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%2s%n",little_string,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->tile = tile_decode(little_string); + if ( m->tile == ErrorTile ) { warn("protocol error\n"); return (CMsgMsg *)0; } + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%31s%n",little_string,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->cpos = string_cpos(little_string); + s += n; + while ( isspace(*s) ) s++; + + return (CMsgMsg *) m; + } + if ( strcmp(type,"PlayerFormsClosedChow") == 0 ) { + CMsgPlayerFormsClosedChowMsg *m; + + m = (CMsgPlayerFormsClosedChowMsg *)malloc(sizeof(CMsgPlayerFormsClosedChowMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgPlayerFormsClosedChow; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->id = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%2s%n",little_string,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->tile = tile_decode(little_string); + if ( m->tile == ErrorTile ) { warn("protocol error\n"); return (CMsgMsg *)0; } + s += n; + while ( isspace(*s) ) s++; + + return (CMsgMsg *) m; + } + if ( strcmp(type,"WashOut") == 0 ) { + CMsgWashOutMsg *m; + + m = (CMsgWashOutMsg *)malloc(sizeof(CMsgWashOutMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgWashOut; + + if ( strlen(s) == 0 ) m->reason = (char *)0; + else { + m->reason = (char *)malloc(strlen(s)+1); + if ( ! m->reason ) { warn("malloc failed\n"); return (CMsgMsg *)0; } + strcpy(m->reason,s+(s[0] == '\\')); + } + return (CMsgMsg *) m; + } + if ( strcmp(type,"PlayerClaimsMahJong") == 0 ) { + CMsgPlayerClaimsMahJongMsg *m; + + m = (CMsgPlayerClaimsMahJongMsg *)malloc(sizeof(CMsgPlayerClaimsMahJongMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgPlayerClaimsMahJong; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->id = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->discard = an_int; + s += n; + while ( isspace(*s) ) s++; + + return (CMsgMsg *) m; + } + if ( strcmp(type,"PlayerMahJongs") == 0 ) { + CMsgPlayerMahJongsMsg *m; + + m = (CMsgPlayerMahJongsMsg *)malloc(sizeof(CMsgPlayerMahJongsMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgPlayerMahJongs; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->id = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%2s%n",little_string,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->tile = tile_decode(little_string); + if ( m->tile == ErrorTile ) { warn("protocol error\n"); return (CMsgMsg *)0; } + s += n; + while ( isspace(*s) ) s++; + + return (CMsgMsg *) m; + } + if ( strcmp(type,"PlayerPairs") == 0 ) { + CMsgPlayerPairsMsg *m; + + m = (CMsgPlayerPairsMsg *)malloc(sizeof(CMsgPlayerPairsMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgPlayerPairs; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->id = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%2s%n",little_string,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->tile = tile_decode(little_string); + if ( m->tile == ErrorTile ) { warn("protocol error\n"); return (CMsgMsg *)0; } + s += n; + while ( isspace(*s) ) s++; + + return (CMsgMsg *) m; + } + if ( strcmp(type,"PlayerFormsClosedPair") == 0 ) { + CMsgPlayerFormsClosedPairMsg *m; + + m = (CMsgPlayerFormsClosedPairMsg *)malloc(sizeof(CMsgPlayerFormsClosedPairMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgPlayerFormsClosedPair; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->id = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%2s%n",little_string,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->tile = tile_decode(little_string); + if ( m->tile == ErrorTile ) { warn("protocol error\n"); return (CMsgMsg *)0; } + s += n; + while ( isspace(*s) ) s++; + + return (CMsgMsg *) m; + } + if ( strcmp(type,"PlayerSpecialSet") == 0 ) { + CMsgPlayerSpecialSetMsg *m; + + m = (CMsgPlayerSpecialSetMsg *)malloc(sizeof(CMsgPlayerSpecialSetMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgPlayerSpecialSet; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->id = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%2s%n",little_string,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->tile = tile_decode(little_string); + if ( m->tile == ErrorTile ) { warn("protocol error\n"); return (CMsgMsg *)0; } + s += n; + while ( isspace(*s) ) s++; + + if ( strlen(s) == 0 ) m->tiles = (char *)0; + else { + m->tiles = (char *)malloc(strlen(s)+1); + if ( ! m->tiles ) { warn("malloc failed\n"); return (CMsgMsg *)0; } + strcpy(m->tiles,s+(s[0] == '\\')); + } + return (CMsgMsg *) m; + } + if ( strcmp(type,"PlayerFormsClosedSpecialSet") == 0 ) { + CMsgPlayerFormsClosedSpecialSetMsg *m; + + m = (CMsgPlayerFormsClosedSpecialSetMsg *)malloc(sizeof(CMsgPlayerFormsClosedSpecialSetMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgPlayerFormsClosedSpecialSet; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->id = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( strlen(s) == 0 ) m->tiles = (char *)0; + else { + m->tiles = (char *)malloc(strlen(s)+1); + if ( ! m->tiles ) { warn("malloc failed\n"); return (CMsgMsg *)0; } + strcpy(m->tiles,s+(s[0] == '\\')); + } + return (CMsgMsg *) m; + } + if ( strcmp(type,"PlayerShowsTiles") == 0 ) { + CMsgPlayerShowsTilesMsg *m; + + m = (CMsgPlayerShowsTilesMsg *)malloc(sizeof(CMsgPlayerShowsTilesMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgPlayerShowsTiles; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->id = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( strlen(s) == 0 ) m->tiles = (char *)0; + else { + m->tiles = (char *)malloc(strlen(s)+1); + if ( ! m->tiles ) { warn("malloc failed\n"); return (CMsgMsg *)0; } + strcpy(m->tiles,s+(s[0] == '\\')); + } + return (CMsgMsg *) m; + } + if ( strcmp(type,"HandScore") == 0 ) { + CMsgHandScoreMsg *m; + + m = (CMsgHandScoreMsg *)malloc(sizeof(CMsgHandScoreMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgHandScore; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->id = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->score = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( strlen(s) == 0 ) m->explanation = (char *)0; + else { + m->explanation = (char *)malloc(strlen(s)+1); + if ( ! m->explanation ) { warn("malloc failed\n"); return (CMsgMsg *)0; } + strcpy(m->explanation,s+(s[0] == '\\')); + } + return (CMsgMsg *) m; + } + if ( strcmp(type,"Settlement") == 0 ) { + CMsgSettlementMsg *m; + + m = (CMsgSettlementMsg *)malloc(sizeof(CMsgSettlementMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgSettlement; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->east = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->south = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->west = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->north = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( strlen(s) == 0 ) m->explanation = (char *)0; + else { + m->explanation = (char *)malloc(strlen(s)+1); + if ( ! m->explanation ) { warn("malloc failed\n"); return (CMsgMsg *)0; } + strcpy(m->explanation,s+(s[0] == '\\')); + } + return (CMsgMsg *) m; + } + if ( strcmp(type,"PlayerOptionSet") == 0 ) { + CMsgPlayerOptionSetMsg *m; + + m = (CMsgPlayerOptionSetMsg *)malloc(sizeof(CMsgPlayerOptionSetMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgPlayerOptionSet; + + if ( sscanf(s,"%31s%n",little_string,&n) ==0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->option = player_scan_PlayerOption(little_string); + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + if ( an_int < 0 || an_int > 1 ) { warn("protocol error\n") ; return (CMsgMsg *)0; } + m->ack = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->value = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( strlen(s) == 0 ) m->text = (char *)0; + else { + m->text = (char *)malloc(strlen(s)+1); + if ( ! m->text ) { warn("malloc failed\n"); return (CMsgMsg *)0; } + strcpy(m->text,s+(s[0] == '\\')); + } + return (CMsgMsg *) m; + } + if ( strcmp(type,"GameOver") == 0 ) { + CMsgGameOverMsg *m; + + m = (CMsgGameOverMsg *)malloc(sizeof(CMsgGameOverMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgGameOver; + + return (CMsgMsg *) m; + } + if ( strcmp(type,"GameOption") == 0 ) { + CMsgGameOptionMsg *m; + + m = (CMsgGameOptionMsg *)malloc(sizeof(CMsgGameOptionMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgGameOption; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->id = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( (goe = protocol_scan_GameOptionEntry(s)) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + memcpy(&m->optentry,goe,sizeof(GameOptionEntry)); + return (CMsgMsg *) m; + } + if ( strcmp(type,"ChangeManager") == 0 ) { + CMsgChangeManagerMsg *m; + + m = (CMsgChangeManagerMsg *)malloc(sizeof(CMsgChangeManagerMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgChangeManager; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->id = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->manager = an_int; + s += n; + while ( isspace(*s) ) s++; + + return (CMsgMsg *) m; + } + if ( strcmp(type,"Message") == 0 ) { + CMsgMessageMsg *m; + + m = (CMsgMessageMsg *)malloc(sizeof(CMsgMessageMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgMessage; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->sender = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->addressee = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( strlen(s) == 0 ) m->text = (char *)0; + else { + m->text = (char *)malloc(strlen(s)+1); + if ( ! m->text ) { warn("malloc failed\n"); return (CMsgMsg *)0; } + strcpy(m->text,s+(s[0] == '\\')); + } + return (CMsgMsg *) m; + } + if ( strcmp(type,"Wall") == 0 ) { + CMsgWallMsg *m; + + m = (CMsgWallMsg *)malloc(sizeof(CMsgWallMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgWall; + + if ( strlen(s) == 0 ) m->wall = (char *)0; + else { + m->wall = (char *)malloc(strlen(s)+1); + if ( ! m->wall ) { warn("malloc failed\n"); return (CMsgMsg *)0; } + strcpy(m->wall,s+(s[0] == '\\')); + } + return (CMsgMsg *) m; + } + if ( strcmp(type,"Comment") == 0 || strcmp(type,"#") == 0 ) { + CMsgCommentMsg *m; + + m = (CMsgCommentMsg *)malloc(sizeof(CMsgCommentMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgComment; + + if ( strlen(s) == 0 ) m->comment = (char *)0; + else { + m->comment = (char *)malloc(strlen(s)+1); + if ( ! m->comment ) { warn("malloc failed\n"); return (CMsgMsg *)0; } + strcpy(m->comment,s+(s[0] == '\\')); + } + return (CMsgMsg *) m; + } + if ( strcmp(type,"SwapTile") == 0 ) { + CMsgSwapTileMsg *m; + + m = (CMsgSwapTileMsg *)malloc(sizeof(CMsgSwapTileMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (CMsgMsg *)0; } + + m->type = CMsgSwapTile; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->id = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%2s%n",little_string,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->oldtile = tile_decode(little_string); + if ( m->oldtile == ErrorTile ) { warn("protocol error\n"); return (CMsgMsg *)0; } + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%2s%n",little_string,&n) == 0 ) { warn("protocol error\n"); return (CMsgMsg *)0; } + m->newtile = tile_decode(little_string); + if ( m->newtile == ErrorTile ) { warn("protocol error\n"); return (CMsgMsg *)0; } + s += n; + while ( isspace(*s) ) s++; + + return (CMsgMsg *) m; + } --- /dev/null +++ b/dec_pmsg.c @@ -0,0 +1,557 @@ + if ( strcmp(type,"SaveState") == 0 ) { + PMsgSaveStateMsg *m; + + m = (PMsgSaveStateMsg *)malloc(sizeof(PMsgSaveStateMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (PMsgMsg *)0; } + + m->type = PMsgSaveState; + + if ( strlen(s) == 0 ) m->filename = (char *)0; + else { + m->filename = (char *)malloc(strlen(s)+1); + if ( ! m->filename ) { warn("malloc failed\n"); return (PMsgMsg *)0; } + strcpy(m->filename,s+(s[0] == '\\')); + } + return (PMsgMsg *) m; + } + if ( strcmp(type,"LoadState") == 0 ) { + PMsgLoadStateMsg *m; + + m = (PMsgLoadStateMsg *)malloc(sizeof(PMsgLoadStateMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (PMsgMsg *)0; } + + m->type = PMsgLoadState; + + if ( strlen(s) == 0 ) m->filename = (char *)0; + else { + m->filename = (char *)malloc(strlen(s)+1); + if ( ! m->filename ) { warn("malloc failed\n"); return (PMsgMsg *)0; } + strcpy(m->filename,s+(s[0] == '\\')); + } + return (PMsgMsg *) m; + } + if ( strcmp(type,"Connect") == 0 ) { + PMsgConnectMsg *m; + + m = (PMsgConnectMsg *)malloc(sizeof(PMsgConnectMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (PMsgMsg *)0; } + + m->type = PMsgConnect; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (PMsgMsg *)0; } + m->pvers = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (PMsgMsg *)0; } + m->last_id = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( strlen(s) == 0 ) m->name = (char *)0; + else { + m->name = (char *)malloc(strlen(s)+1); + if ( ! m->name ) { warn("malloc failed\n"); return (PMsgMsg *)0; } + strcpy(m->name,s+(s[0] == '\\')); + } + return (PMsgMsg *) m; + } + if ( strcmp(type,"AuthInfo") == 0 ) { + PMsgAuthInfoMsg *m; + + m = (PMsgAuthInfoMsg *)malloc(sizeof(PMsgAuthInfoMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (PMsgMsg *)0; } + + m->type = PMsgAuthInfo; + + if ( sscanf(s,"%16s%n",little_string,&n) == 0 ) { warn("protocol error\n"); return (PMsgMsg *)0; } + strmcpy(m->authtype,little_string,16); + s += n; + while ( isspace(*s) ) s++; + + if ( strlen(s) == 0 ) m->authdata = (char *)0; + else { + m->authdata = (char *)malloc(strlen(s)+1); + if ( ! m->authdata ) { warn("malloc failed\n"); return (PMsgMsg *)0; } + strcpy(m->authdata,s+(s[0] == '\\')); + } + return (PMsgMsg *) m; + } + if ( strcmp(type,"NewAuthInfo") == 0 ) { + PMsgNewAuthInfoMsg *m; + + m = (PMsgNewAuthInfoMsg *)malloc(sizeof(PMsgNewAuthInfoMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (PMsgMsg *)0; } + + m->type = PMsgNewAuthInfo; + + if ( sscanf(s,"%16s%n",little_string,&n) == 0 ) { warn("protocol error\n"); return (PMsgMsg *)0; } + strmcpy(m->authtype,little_string,16); + s += n; + while ( isspace(*s) ) s++; + + if ( strlen(s) == 0 ) m->authdata = (char *)0; + else { + m->authdata = (char *)malloc(strlen(s)+1); + if ( ! m->authdata ) { warn("malloc failed\n"); return (PMsgMsg *)0; } + strcpy(m->authdata,s+(s[0] == '\\')); + } + return (PMsgMsg *) m; + } + if ( strcmp(type,"RequestReconnect") == 0 ) { + PMsgRequestReconnectMsg *m; + + m = (PMsgRequestReconnectMsg *)malloc(sizeof(PMsgRequestReconnectMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (PMsgMsg *)0; } + + m->type = PMsgRequestReconnect; + + return (PMsgMsg *) m; + } + if ( strcmp(type,"Disconnect") == 0 ) { + PMsgDisconnectMsg *m; + + m = (PMsgDisconnectMsg *)malloc(sizeof(PMsgDisconnectMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (PMsgMsg *)0; } + + m->type = PMsgDisconnect; + + return (PMsgMsg *) m; + } + if ( strcmp(type,"DeclareSpecial") == 0 || strcmp(type,"ds") == 0 ) { + PMsgDeclareSpecialMsg *m; + + m = (PMsgDeclareSpecialMsg *)malloc(sizeof(PMsgDeclareSpecialMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (PMsgMsg *)0; } + + m->type = PMsgDeclareSpecial; + + if ( sscanf(s,"%2s%n",little_string,&n) == 0 ) { warn("protocol error\n"); return (PMsgMsg *)0; } + m->tile = tile_decode(little_string); + if ( m->tile == ErrorTile ) { warn("protocol error\n"); return (PMsgMsg *)0; } + s += n; + while ( isspace(*s) ) s++; + + return (PMsgMsg *) m; + } + if ( strcmp(type,"RequestPause") == 0 ) { + PMsgRequestPauseMsg *m; + + m = (PMsgRequestPauseMsg *)malloc(sizeof(PMsgRequestPauseMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (PMsgMsg *)0; } + + m->type = PMsgRequestPause; + + if ( strlen(s) == 0 ) m->reason = (char *)0; + else { + m->reason = (char *)malloc(strlen(s)+1); + if ( ! m->reason ) { warn("malloc failed\n"); return (PMsgMsg *)0; } + strcpy(m->reason,s+(s[0] == '\\')); + } + return (PMsgMsg *) m; + } + if ( strcmp(type,"Ready") == 0 ) { + PMsgReadyMsg *m; + + m = (PMsgReadyMsg *)malloc(sizeof(PMsgReadyMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (PMsgMsg *)0; } + + m->type = PMsgReady; + + return (PMsgMsg *) m; + } + if ( strcmp(type,"Discard") == 0 || strcmp(type,"d") == 0 ) { + PMsgDiscardMsg *m; + + m = (PMsgDiscardMsg *)malloc(sizeof(PMsgDiscardMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (PMsgMsg *)0; } + + m->type = PMsgDiscard; + + if ( sscanf(s,"%2s%n",little_string,&n) == 0 ) { warn("protocol error\n"); return (PMsgMsg *)0; } + m->tile = tile_decode(little_string); + if ( m->tile == ErrorTile ) { warn("protocol error\n"); return (PMsgMsg *)0; } + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (PMsgMsg *)0; } + if ( an_int < 0 || an_int > 1 ) { warn("protocol error\n") ; return (PMsgMsg *)0; } + m->calling = an_int; + s += n; + while ( isspace(*s) ) s++; + + return (PMsgMsg *) m; + } + if ( strcmp(type,"NoClaim") == 0 || strcmp(type,"n") == 0 ) { + PMsgNoClaimMsg *m; + + m = (PMsgNoClaimMsg *)malloc(sizeof(PMsgNoClaimMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (PMsgMsg *)0; } + + m->type = PMsgNoClaim; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (PMsgMsg *)0; } + m->discard = an_int; + s += n; + while ( isspace(*s) ) s++; + + return (PMsgMsg *) m; + } + if ( strcmp(type,"Pung") == 0 || strcmp(type,"p") == 0 ) { + PMsgPungMsg *m; + + m = (PMsgPungMsg *)malloc(sizeof(PMsgPungMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (PMsgMsg *)0; } + + m->type = PMsgPung; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (PMsgMsg *)0; } + m->discard = an_int; + s += n; + while ( isspace(*s) ) s++; + + return (PMsgMsg *) m; + } + if ( strcmp(type,"FormClosedPung") == 0 ) { + PMsgFormClosedPungMsg *m; + + m = (PMsgFormClosedPungMsg *)malloc(sizeof(PMsgFormClosedPungMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (PMsgMsg *)0; } + + m->type = PMsgFormClosedPung; + + if ( sscanf(s,"%2s%n",little_string,&n) == 0 ) { warn("protocol error\n"); return (PMsgMsg *)0; } + m->tile = tile_decode(little_string); + if ( m->tile == ErrorTile ) { warn("protocol error\n"); return (PMsgMsg *)0; } + s += n; + while ( isspace(*s) ) s++; + + return (PMsgMsg *) m; + } + if ( strcmp(type,"Kong") == 0 || strcmp(type,"k") == 0 ) { + PMsgKongMsg *m; + + m = (PMsgKongMsg *)malloc(sizeof(PMsgKongMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (PMsgMsg *)0; } + + m->type = PMsgKong; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (PMsgMsg *)0; } + m->discard = an_int; + s += n; + while ( isspace(*s) ) s++; + + return (PMsgMsg *) m; + } + if ( strcmp(type,"DeclareClosedKong") == 0 || strcmp(type,"ck") == 0 ) { + PMsgDeclareClosedKongMsg *m; + + m = (PMsgDeclareClosedKongMsg *)malloc(sizeof(PMsgDeclareClosedKongMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (PMsgMsg *)0; } + + m->type = PMsgDeclareClosedKong; + + if ( sscanf(s,"%2s%n",little_string,&n) == 0 ) { warn("protocol error\n"); return (PMsgMsg *)0; } + m->tile = tile_decode(little_string); + if ( m->tile == ErrorTile ) { warn("protocol error\n"); return (PMsgMsg *)0; } + s += n; + while ( isspace(*s) ) s++; + + return (PMsgMsg *) m; + } + if ( strcmp(type,"AddToPung") == 0 ) { + PMsgAddToPungMsg *m; + + m = (PMsgAddToPungMsg *)malloc(sizeof(PMsgAddToPungMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (PMsgMsg *)0; } + + m->type = PMsgAddToPung; + + if ( sscanf(s,"%2s%n",little_string,&n) == 0 ) { warn("protocol error\n"); return (PMsgMsg *)0; } + m->tile = tile_decode(little_string); + if ( m->tile == ErrorTile ) { warn("protocol error\n"); return (PMsgMsg *)0; } + s += n; + while ( isspace(*s) ) s++; + + return (PMsgMsg *) m; + } + if ( strcmp(type,"QueryMahJong") == 0 ) { + PMsgQueryMahJongMsg *m; + + m = (PMsgQueryMahJongMsg *)malloc(sizeof(PMsgQueryMahJongMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (PMsgMsg *)0; } + + m->type = PMsgQueryMahJong; + + if ( sscanf(s,"%2s%n",little_string,&n) == 0 ) { warn("protocol error\n"); return (PMsgMsg *)0; } + m->tile = tile_decode(little_string); + if ( m->tile == ErrorTile ) { warn("protocol error\n"); return (PMsgMsg *)0; } + s += n; + while ( isspace(*s) ) s++; + + return (PMsgMsg *) m; + } + if ( strcmp(type,"Chow") == 0 || strcmp(type,"c") == 0 ) { + PMsgChowMsg *m; + + m = (PMsgChowMsg *)malloc(sizeof(PMsgChowMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (PMsgMsg *)0; } + + m->type = PMsgChow; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (PMsgMsg *)0; } + m->discard = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%31s%n",little_string,&n) == 0 ) { warn("protocol error\n"); return (PMsgMsg *)0; } + m->cpos = string_cpos(little_string); + s += n; + while ( isspace(*s) ) s++; + + return (PMsgMsg *) m; + } + if ( strcmp(type,"FormClosedChow") == 0 ) { + PMsgFormClosedChowMsg *m; + + m = (PMsgFormClosedChowMsg *)malloc(sizeof(PMsgFormClosedChowMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (PMsgMsg *)0; } + + m->type = PMsgFormClosedChow; + + if ( sscanf(s,"%2s%n",little_string,&n) == 0 ) { warn("protocol error\n"); return (PMsgMsg *)0; } + m->tile = tile_decode(little_string); + if ( m->tile == ErrorTile ) { warn("protocol error\n"); return (PMsgMsg *)0; } + s += n; + while ( isspace(*s) ) s++; + + return (PMsgMsg *) m; + } + if ( strcmp(type,"DeclareWashOut") == 0 ) { + PMsgDeclareWashOutMsg *m; + + m = (PMsgDeclareWashOutMsg *)malloc(sizeof(PMsgDeclareWashOutMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (PMsgMsg *)0; } + + m->type = PMsgDeclareWashOut; + + return (PMsgMsg *) m; + } + if ( strcmp(type,"MahJong") == 0 ) { + PMsgMahJongMsg *m; + + m = (PMsgMahJongMsg *)malloc(sizeof(PMsgMahJongMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (PMsgMsg *)0; } + + m->type = PMsgMahJong; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (PMsgMsg *)0; } + m->discard = an_int; + s += n; + while ( isspace(*s) ) s++; + + return (PMsgMsg *) m; + } + if ( strcmp(type,"Pair") == 0 ) { + PMsgPairMsg *m; + + m = (PMsgPairMsg *)malloc(sizeof(PMsgPairMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (PMsgMsg *)0; } + + m->type = PMsgPair; + + return (PMsgMsg *) m; + } + if ( strcmp(type,"FormClosedPair") == 0 ) { + PMsgFormClosedPairMsg *m; + + m = (PMsgFormClosedPairMsg *)malloc(sizeof(PMsgFormClosedPairMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (PMsgMsg *)0; } + + m->type = PMsgFormClosedPair; + + if ( sscanf(s,"%2s%n",little_string,&n) == 0 ) { warn("protocol error\n"); return (PMsgMsg *)0; } + m->tile = tile_decode(little_string); + if ( m->tile == ErrorTile ) { warn("protocol error\n"); return (PMsgMsg *)0; } + s += n; + while ( isspace(*s) ) s++; + + return (PMsgMsg *) m; + } + if ( strcmp(type,"SpecialSet") == 0 ) { + PMsgSpecialSetMsg *m; + + m = (PMsgSpecialSetMsg *)malloc(sizeof(PMsgSpecialSetMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (PMsgMsg *)0; } + + m->type = PMsgSpecialSet; + + return (PMsgMsg *) m; + } + if ( strcmp(type,"FormClosedSpecialSet") == 0 ) { + PMsgFormClosedSpecialSetMsg *m; + + m = (PMsgFormClosedSpecialSetMsg *)malloc(sizeof(PMsgFormClosedSpecialSetMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (PMsgMsg *)0; } + + m->type = PMsgFormClosedSpecialSet; + + return (PMsgMsg *) m; + } + if ( strcmp(type,"ShowTiles") == 0 ) { + PMsgShowTilesMsg *m; + + m = (PMsgShowTilesMsg *)malloc(sizeof(PMsgShowTilesMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (PMsgMsg *)0; } + + m->type = PMsgShowTiles; + + return (PMsgMsg *) m; + } + if ( strcmp(type,"SetPlayerOption") == 0 ) { + PMsgSetPlayerOptionMsg *m; + + m = (PMsgSetPlayerOptionMsg *)malloc(sizeof(PMsgSetPlayerOptionMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (PMsgMsg *)0; } + + m->type = PMsgSetPlayerOption; + + if ( sscanf(s,"%31s%n",little_string,&n) ==0 ) { warn("protocol error\n"); return (PMsgMsg *)0; } + m->option = player_scan_PlayerOption(little_string); + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (PMsgMsg *)0; } + if ( an_int < 0 || an_int > 1 ) { warn("protocol error\n") ; return (PMsgMsg *)0; } + m->ack = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (PMsgMsg *)0; } + m->value = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( strlen(s) == 0 ) m->text = (char *)0; + else { + m->text = (char *)malloc(strlen(s)+1); + if ( ! m->text ) { warn("malloc failed\n"); return (PMsgMsg *)0; } + strcpy(m->text,s+(s[0] == '\\')); + } + return (PMsgMsg *) m; + } + if ( strcmp(type,"SetGameOption") == 0 ) { + PMsgSetGameOptionMsg *m; + + m = (PMsgSetGameOptionMsg *)malloc(sizeof(PMsgSetGameOptionMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (PMsgMsg *)0; } + + m->type = PMsgSetGameOption; + + if ( sscanf(s,"%16s%n",little_string,&n) == 0 ) { warn("protocol error\n"); return (PMsgMsg *)0; } + strmcpy(m->optname,little_string,16); + s += n; + while ( isspace(*s) ) s++; + + if ( strlen(s) == 0 ) m->optvalue = (char *)0; + else { + m->optvalue = (char *)malloc(strlen(s)+1); + if ( ! m->optvalue ) { warn("malloc failed\n"); return (PMsgMsg *)0; } + strcpy(m->optvalue,s+(s[0] == '\\')); + } + return (PMsgMsg *) m; + } + if ( strcmp(type,"QueryGameOption") == 0 ) { + PMsgQueryGameOptionMsg *m; + + m = (PMsgQueryGameOptionMsg *)malloc(sizeof(PMsgQueryGameOptionMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (PMsgMsg *)0; } + + m->type = PMsgQueryGameOption; + + if ( sscanf(s,"%16s%n",little_string,&n) == 0 ) { warn("protocol error\n"); return (PMsgMsg *)0; } + strmcpy(m->optname,little_string,16); + s += n; + while ( isspace(*s) ) s++; + + return (PMsgMsg *) m; + } + if ( strcmp(type,"ListGameOptions") == 0 ) { + PMsgListGameOptionsMsg *m; + + m = (PMsgListGameOptionsMsg *)malloc(sizeof(PMsgListGameOptionsMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (PMsgMsg *)0; } + + m->type = PMsgListGameOptions; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (PMsgMsg *)0; } + if ( an_int < 0 || an_int > 1 ) { warn("protocol error\n") ; return (PMsgMsg *)0; } + m->include_disabled = an_int; + s += n; + while ( isspace(*s) ) s++; + + return (PMsgMsg *) m; + } + if ( strcmp(type,"ChangeManager") == 0 ) { + PMsgChangeManagerMsg *m; + + m = (PMsgChangeManagerMsg *)malloc(sizeof(PMsgChangeManagerMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (PMsgMsg *)0; } + + m->type = PMsgChangeManager; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (PMsgMsg *)0; } + m->manager = an_int; + s += n; + while ( isspace(*s) ) s++; + + return (PMsgMsg *) m; + } + if ( strcmp(type,"SendMessage") == 0 ) { + PMsgSendMessageMsg *m; + + m = (PMsgSendMessageMsg *)malloc(sizeof(PMsgSendMessageMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (PMsgMsg *)0; } + + m->type = PMsgSendMessage; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (PMsgMsg *)0; } + m->addressee = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( strlen(s) == 0 ) m->text = (char *)0; + else { + m->text = (char *)malloc(strlen(s)+1); + if ( ! m->text ) { warn("malloc failed\n"); return (PMsgMsg *)0; } + strcpy(m->text,s+(s[0] == '\\')); + } + return (PMsgMsg *) m; + } + if ( strcmp(type,"SwapTile") == 0 || strcmp(type,"st") == 0 ) { + PMsgSwapTileMsg *m; + + m = (PMsgSwapTileMsg *)malloc(sizeof(PMsgSwapTileMsg)); + if ( ! m ) { warn("malloc failed\n") ; return (PMsgMsg *)0; } + + m->type = PMsgSwapTile; + + if ( sscanf(s,"%d%n",&an_int,&n) == 0 ) { warn("protocol error\n"); return (PMsgMsg *)0; } + m->id = an_int; + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%2s%n",little_string,&n) == 0 ) { warn("protocol error\n"); return (PMsgMsg *)0; } + m->oldtile = tile_decode(little_string); + if ( m->oldtile == ErrorTile ) { warn("protocol error\n"); return (PMsgMsg *)0; } + s += n; + while ( isspace(*s) ) s++; + + if ( sscanf(s,"%2s%n",little_string,&n) == 0 ) { warn("protocol error\n"); return (PMsgMsg *)0; } + m->newtile = tile_decode(little_string); + if ( m->newtile == ErrorTile ) { warn("protocol error\n"); return (PMsgMsg *)0; } + s += n; + while ( isspace(*s) ) s++; + + return (PMsgMsg *) m; + } --- /dev/null +++ b/enc_cmsg.c @@ -0,0 +1,790 @@ + case CMsgError: + { CMsgErrorMsg *m UNUSED = (CMsgErrorMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"Error %d %s%s\r\n", m->seqno,(m->error && (m->error[0] == ' ' || m->error[0] == '\\')) ? "\\" : "", m->error ? m->error : "" ); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgStateSaved: + { CMsgStateSavedMsg *m UNUSED = (CMsgStateSavedMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"StateSaved %d %s%s\r\n", m->id,(m->filename && (m->filename[0] == ' ' || m->filename[0] == '\\')) ? "\\" : "", m->filename ? m->filename : "" ); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgInfoTiles: + { CMsgInfoTilesMsg *m UNUSED = (CMsgInfoTilesMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"InfoTiles %d %s%s\r\n", m->id,(m->tileinfo && (m->tileinfo[0] == ' ' || m->tileinfo[0] == '\\')) ? "\\" : "", m->tileinfo ? m->tileinfo : "" ); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgConnectReply: + { CMsgConnectReplyMsg *m UNUSED = (CMsgConnectReplyMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"ConnectReply %d %d %s%s\r\n", m->pvers, m->id,(m->reason && (m->reason[0] == ' ' || m->reason[0] == '\\')) ? "\\" : "", m->reason ? m->reason : "" ); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgAuthReqd: + { CMsgAuthReqdMsg *m UNUSED = (CMsgAuthReqdMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"AuthReqd %s %s%s\r\n", m->authtype ,(m->authdata && (m->authdata[0] == ' ' || m->authdata[0] == '\\')) ? "\\" : "", m->authdata ? m->authdata : "" ); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgRedirect: + { CMsgRedirectMsg *m UNUSED = (CMsgRedirectMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"Redirect %s%s\r\n",(m->dest && (m->dest[0] == ' ' || m->dest[0] == '\\')) ? "\\" : "", m->dest ? m->dest : "" ); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgReconnect: + { CMsgReconnectMsg *m UNUSED = (CMsgReconnectMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"Reconnect\r\n"); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgPlayer: + { CMsgPlayerMsg *m UNUSED = (CMsgPlayerMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"Player %d %s%s\r\n", m->id,(m->name && (m->name[0] == ' ' || m->name[0] == '\\')) ? "\\" : "", m->name ? m->name : "" ); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgGame: + { CMsgGameMsg *m UNUSED = (CMsgGameMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"Game %d %d %d %d %c %d %d %d %d %d %d %d %d\r\n", m->east, m->south, m->west, m->north, windletter(m->round), m->hands_as_east, m->firsteast, m->east_score, m->south_score, m->west_score, m->north_score, m->protversion, m->manager); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgNewRound: + { CMsgNewRoundMsg *m UNUSED = (CMsgNewRoundMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"NewRound %c\r\n", windletter(m->round)); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgNewHand: + { CMsgNewHandMsg *m UNUSED = (CMsgNewHandMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"NewHand %d %d %d\r\n", m->east, m->start_wall, m->start_stack); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgPlayerDraws: + { CMsgPlayerDrawsMsg *m UNUSED = (CMsgPlayerDrawsMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"PlayerDraws %d %s\r\n", m->id, tile_code(m->tile)); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgPlayerDrawsLoose: + { CMsgPlayerDrawsLooseMsg *m UNUSED = (CMsgPlayerDrawsLooseMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"PlayerDrawsLoose %d %s\r\n", m->id, tile_code(m->tile)); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgPlayerDeclaresSpecial: + { CMsgPlayerDeclaresSpecialMsg *m UNUSED = (CMsgPlayerDeclaresSpecialMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"PlayerDeclaresSpecial %d %s\r\n", m->id, tile_code(m->tile)); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgStartPlay: + { CMsgStartPlayMsg *m UNUSED = (CMsgStartPlayMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"StartPlay %d\r\n", m->id); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgStopPlay: + { CMsgStopPlayMsg *m UNUSED = (CMsgStopPlayMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"StopPlay %s%s\r\n",(m->reason && (m->reason[0] == ' ' || m->reason[0] == '\\')) ? "\\" : "", m->reason ? m->reason : "" ); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgPause: + { CMsgPauseMsg *m UNUSED = (CMsgPauseMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"Pause %d %d %s%s\r\n", m->exempt, m->requestor,(m->reason && (m->reason[0] == ' ' || m->reason[0] == '\\')) ? "\\" : "", m->reason ? m->reason : "" ); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgPlayerReady: + { CMsgPlayerReadyMsg *m UNUSED = (CMsgPlayerReadyMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"PlayerReady %d\r\n", m->id); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgPlayerDiscards: + { CMsgPlayerDiscardsMsg *m UNUSED = (CMsgPlayerDiscardsMsg *) msg; + badfield = 0; + if ( m->calling < 0 || m->calling > 1 ) { warn("bad boolean in message, assuming TRUE"); badfield = 1 ; }; + while (1) { + int size = snprintf(buf,buf_size,"PlayerDiscards %d %s %d %d\r\n", m->id, tile_code(m->tile), m->discard, (badfield ? 1 : m->calling)); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgPlayerDoesntClaim: + { CMsgPlayerDoesntClaimMsg *m UNUSED = (CMsgPlayerDoesntClaimMsg *) msg; + badfield = 0; + if ( m->timeout < 0 || m->timeout > 1 ) { warn("bad boolean in message, assuming TRUE"); badfield = 1 ; }; + while (1) { + int size = snprintf(buf,buf_size,"PlayerDoesntClaim %d %d %d\r\n", m->id, m->discard, (badfield ? 1 : m->timeout)); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgDangerousDiscard: + { CMsgDangerousDiscardMsg *m UNUSED = (CMsgDangerousDiscardMsg *) msg; + badfield = 0; + if ( m->nochoice < 0 || m->nochoice > 1 ) { warn("bad boolean in message, assuming TRUE"); badfield = 1 ; }; + while (1) { + int size = snprintf(buf,buf_size,"DangerousDiscard %d %d %d\r\n", m->id, m->discard, (badfield ? 1 : m->nochoice)); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgPlayerClaimsPung: + { CMsgPlayerClaimsPungMsg *m UNUSED = (CMsgPlayerClaimsPungMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"PlayerClaimsPung %d %d\r\n", m->id, m->discard); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgClaimDenied: + { CMsgClaimDeniedMsg *m UNUSED = (CMsgClaimDeniedMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"ClaimDenied %d %s%s\r\n", m->id,(m->reason && (m->reason[0] == ' ' || m->reason[0] == '\\')) ? "\\" : "", m->reason ? m->reason : "" ); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgPlayerPungs: + { CMsgPlayerPungsMsg *m UNUSED = (CMsgPlayerPungsMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"PlayerPungs %d %s\r\n", m->id, tile_code(m->tile)); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgPlayerFormsClosedPung: + { CMsgPlayerFormsClosedPungMsg *m UNUSED = (CMsgPlayerFormsClosedPungMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"PlayerFormsClosedPung %d %s\r\n", m->id, tile_code(m->tile)); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgPlayerClaimsKong: + { CMsgPlayerClaimsKongMsg *m UNUSED = (CMsgPlayerClaimsKongMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"PlayerClaimsKong %d %d\r\n", m->id, m->discard); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgPlayerKongs: + { CMsgPlayerKongsMsg *m UNUSED = (CMsgPlayerKongsMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"PlayerKongs %d %s\r\n", m->id, tile_code(m->tile)); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgPlayerDeclaresClosedKong: + { CMsgPlayerDeclaresClosedKongMsg *m UNUSED = (CMsgPlayerDeclaresClosedKongMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"PlayerDeclaresClosedKong %d %s %d\r\n", m->id, tile_code(m->tile), m->discard); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgPlayerAddsToPung: + { CMsgPlayerAddsToPungMsg *m UNUSED = (CMsgPlayerAddsToPungMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"PlayerAddsToPung %d %s %d\r\n", m->id, tile_code(m->tile), m->discard); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgPlayerRobsKong: + { CMsgPlayerRobsKongMsg *m UNUSED = (CMsgPlayerRobsKongMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"PlayerRobsKong %d %s\r\n", m->id, tile_code(m->tile)); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgCanMahJong: + { CMsgCanMahJongMsg *m UNUSED = (CMsgCanMahJongMsg *) msg; + badfield = 0; + if ( m->answer < 0 || m->answer > 1 ) { warn("bad boolean in message, assuming TRUE"); badfield = 1 ; }; + while (1) { + int size = snprintf(buf,buf_size,"CanMahJong %s %d\r\n", tile_code(m->tile), (badfield ? 1 : m->answer)); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgPlayerClaimsChow: + { CMsgPlayerClaimsChowMsg *m UNUSED = (CMsgPlayerClaimsChowMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"PlayerClaimsChow %d %d %s\r\n", m->id, m->discard, cpos_string(m->cpos)); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgPlayerChows: + { CMsgPlayerChowsMsg *m UNUSED = (CMsgPlayerChowsMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"PlayerChows %d %s %s\r\n", m->id, tile_code(m->tile), cpos_string(m->cpos)); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgPlayerFormsClosedChow: + { CMsgPlayerFormsClosedChowMsg *m UNUSED = (CMsgPlayerFormsClosedChowMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"PlayerFormsClosedChow %d %s\r\n", m->id, tile_code(m->tile)); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgWashOut: + { CMsgWashOutMsg *m UNUSED = (CMsgWashOutMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"WashOut %s%s\r\n",(m->reason && (m->reason[0] == ' ' || m->reason[0] == '\\')) ? "\\" : "", m->reason ? m->reason : "" ); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgPlayerClaimsMahJong: + { CMsgPlayerClaimsMahJongMsg *m UNUSED = (CMsgPlayerClaimsMahJongMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"PlayerClaimsMahJong %d %d\r\n", m->id, m->discard); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgPlayerMahJongs: + { CMsgPlayerMahJongsMsg *m UNUSED = (CMsgPlayerMahJongsMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"PlayerMahJongs %d %s\r\n", m->id, tile_code(m->tile)); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgPlayerPairs: + { CMsgPlayerPairsMsg *m UNUSED = (CMsgPlayerPairsMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"PlayerPairs %d %s\r\n", m->id, tile_code(m->tile)); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgPlayerFormsClosedPair: + { CMsgPlayerFormsClosedPairMsg *m UNUSED = (CMsgPlayerFormsClosedPairMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"PlayerFormsClosedPair %d %s\r\n", m->id, tile_code(m->tile)); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgPlayerSpecialSet: + { CMsgPlayerSpecialSetMsg *m UNUSED = (CMsgPlayerSpecialSetMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"PlayerSpecialSet %d %s %s%s\r\n", m->id, tile_code(m->tile),(m->tiles && (m->tiles[0] == ' ' || m->tiles[0] == '\\')) ? "\\" : "", m->tiles ? m->tiles : "" ); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgPlayerFormsClosedSpecialSet: + { CMsgPlayerFormsClosedSpecialSetMsg *m UNUSED = (CMsgPlayerFormsClosedSpecialSetMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"PlayerFormsClosedSpecialSet %d %s%s\r\n", m->id,(m->tiles && (m->tiles[0] == ' ' || m->tiles[0] == '\\')) ? "\\" : "", m->tiles ? m->tiles : "" ); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgPlayerShowsTiles: + { CMsgPlayerShowsTilesMsg *m UNUSED = (CMsgPlayerShowsTilesMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"PlayerShowsTiles %d %s%s\r\n", m->id,(m->tiles && (m->tiles[0] == ' ' || m->tiles[0] == '\\')) ? "\\" : "", m->tiles ? m->tiles : "" ); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgHandScore: + { CMsgHandScoreMsg *m UNUSED = (CMsgHandScoreMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"HandScore %d %d %s%s\r\n", m->id, m->score,(m->explanation && (m->explanation[0] == ' ' || m->explanation[0] == '\\')) ? "\\" : "", m->explanation ? m->explanation : "" ); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgSettlement: + { CMsgSettlementMsg *m UNUSED = (CMsgSettlementMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"Settlement %d %d %d %d %s%s\r\n", m->east, m->south, m->west, m->north,(m->explanation && (m->explanation[0] == ' ' || m->explanation[0] == '\\')) ? "\\" : "", m->explanation ? m->explanation : "" ); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgPlayerOptionSet: + { CMsgPlayerOptionSetMsg *m UNUSED = (CMsgPlayerOptionSetMsg *) msg; + badfield = 0; + if ( m->ack < 0 || m->ack > 1 ) { warn("bad boolean in message, assuming TRUE"); badfield = 1 ; }; + while (1) { + int size = snprintf(buf,buf_size,"PlayerOptionSet %s %d %d %s%s\r\n", player_print_PlayerOption(m->option), (badfield ? 1 : m->ack), m->value,(m->text && (m->text[0] == ' ' || m->text[0] == '\\')) ? "\\" : "", m->text ? m->text : "" ); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgGameOver: + { CMsgGameOverMsg *m UNUSED = (CMsgGameOverMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"GameOver\r\n"); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgGameOption: + { CMsgGameOptionMsg *m UNUSED = (CMsgGameOptionMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"GameOption %d %s\r\n", m->id, protocol_print_GameOptionEntry(&m->optentry)); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgChangeManager: + { CMsgChangeManagerMsg *m UNUSED = (CMsgChangeManagerMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"ChangeManager %d %d\r\n", m->id, m->manager); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgMessage: + { CMsgMessageMsg *m UNUSED = (CMsgMessageMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"Message %d %d %s%s\r\n", m->sender, m->addressee,(m->text && (m->text[0] == ' ' || m->text[0] == '\\')) ? "\\" : "", m->text ? m->text : "" ); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgWall: + { CMsgWallMsg *m UNUSED = (CMsgWallMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"Wall %s%s\r\n",(m->wall && (m->wall[0] == ' ' || m->wall[0] == '\\')) ? "\\" : "", m->wall ? m->wall : "" ); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgComment: + { CMsgCommentMsg *m UNUSED = (CMsgCommentMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"# %s%s\r\n",(m->comment && (m->comment[0] == ' ' || m->comment[0] == '\\')) ? "\\" : "", m->comment ? m->comment : "" ); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; + case CMsgSwapTile: + { CMsgSwapTileMsg *m UNUSED = (CMsgSwapTileMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"SwapTile %d %s %s\r\n", m->id, tile_code(m->oldtile), tile_code(m->newtile)); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_cmsg"); + exit(-1); + } + } + } + break; --- /dev/null +++ b/enc_pmsg.c @@ -0,0 +1,516 @@ + case PMsgSaveState: + { PMsgSaveStateMsg *m UNUSED = (PMsgSaveStateMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"SaveState %s%s\r\n",(m->filename && (m->filename[0] == ' ' || m->filename[0] == '\\')) ? "\\" : "", m->filename ? m->filename : "" ); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_pmsg"); + exit(-1); + } + } + } + break; + case PMsgLoadState: + { PMsgLoadStateMsg *m UNUSED = (PMsgLoadStateMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"LoadState %s%s\r\n",(m->filename && (m->filename[0] == ' ' || m->filename[0] == '\\')) ? "\\" : "", m->filename ? m->filename : "" ); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_pmsg"); + exit(-1); + } + } + } + break; + case PMsgConnect: + { PMsgConnectMsg *m UNUSED = (PMsgConnectMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"Connect %d %d %s%s\r\n", m->pvers, m->last_id,(m->name && (m->name[0] == ' ' || m->name[0] == '\\')) ? "\\" : "", m->name ? m->name : "" ); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_pmsg"); + exit(-1); + } + } + } + break; + case PMsgAuthInfo: + { PMsgAuthInfoMsg *m UNUSED = (PMsgAuthInfoMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"AuthInfo %s %s%s\r\n", m->authtype ,(m->authdata && (m->authdata[0] == ' ' || m->authdata[0] == '\\')) ? "\\" : "", m->authdata ? m->authdata : "" ); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_pmsg"); + exit(-1); + } + } + } + break; + case PMsgNewAuthInfo: + { PMsgNewAuthInfoMsg *m UNUSED = (PMsgNewAuthInfoMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"NewAuthInfo %s %s%s\r\n", m->authtype ,(m->authdata && (m->authdata[0] == ' ' || m->authdata[0] == '\\')) ? "\\" : "", m->authdata ? m->authdata : "" ); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_pmsg"); + exit(-1); + } + } + } + break; + case PMsgRequestReconnect: + { PMsgRequestReconnectMsg *m UNUSED = (PMsgRequestReconnectMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"RequestReconnect\r\n"); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_pmsg"); + exit(-1); + } + } + } + break; + case PMsgDisconnect: + { PMsgDisconnectMsg *m UNUSED = (PMsgDisconnectMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"Disconnect\r\n"); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_pmsg"); + exit(-1); + } + } + } + break; + case PMsgDeclareSpecial: + { PMsgDeclareSpecialMsg *m UNUSED = (PMsgDeclareSpecialMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"DeclareSpecial %s\r\n", tile_code(m->tile)); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_pmsg"); + exit(-1); + } + } + } + break; + case PMsgRequestPause: + { PMsgRequestPauseMsg *m UNUSED = (PMsgRequestPauseMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"RequestPause %s%s\r\n",(m->reason && (m->reason[0] == ' ' || m->reason[0] == '\\')) ? "\\" : "", m->reason ? m->reason : "" ); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_pmsg"); + exit(-1); + } + } + } + break; + case PMsgReady: + { PMsgReadyMsg *m UNUSED = (PMsgReadyMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"Ready\r\n"); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_pmsg"); + exit(-1); + } + } + } + break; + case PMsgDiscard: + { PMsgDiscardMsg *m UNUSED = (PMsgDiscardMsg *) msg; + badfield = 0; + if ( m->calling < 0 || m->calling > 1 ) { warn("bad boolean in message, assuming TRUE"); badfield = 1 ; }; + while (1) { + int size = snprintf(buf,buf_size,"Discard %s %d\r\n", tile_code(m->tile), (badfield ? 1 : m->calling)); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_pmsg"); + exit(-1); + } + } + } + break; + case PMsgNoClaim: + { PMsgNoClaimMsg *m UNUSED = (PMsgNoClaimMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"NoClaim %d\r\n", m->discard); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_pmsg"); + exit(-1); + } + } + } + break; + case PMsgPung: + { PMsgPungMsg *m UNUSED = (PMsgPungMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"Pung %d\r\n", m->discard); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_pmsg"); + exit(-1); + } + } + } + break; + case PMsgFormClosedPung: + { PMsgFormClosedPungMsg *m UNUSED = (PMsgFormClosedPungMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"FormClosedPung %s\r\n", tile_code(m->tile)); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_pmsg"); + exit(-1); + } + } + } + break; + case PMsgKong: + { PMsgKongMsg *m UNUSED = (PMsgKongMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"Kong %d\r\n", m->discard); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_pmsg"); + exit(-1); + } + } + } + break; + case PMsgDeclareClosedKong: + { PMsgDeclareClosedKongMsg *m UNUSED = (PMsgDeclareClosedKongMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"DeclareClosedKong %s\r\n", tile_code(m->tile)); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_pmsg"); + exit(-1); + } + } + } + break; + case PMsgAddToPung: + { PMsgAddToPungMsg *m UNUSED = (PMsgAddToPungMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"AddToPung %s\r\n", tile_code(m->tile)); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_pmsg"); + exit(-1); + } + } + } + break; + case PMsgQueryMahJong: + { PMsgQueryMahJongMsg *m UNUSED = (PMsgQueryMahJongMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"QueryMahJong %s\r\n", tile_code(m->tile)); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_pmsg"); + exit(-1); + } + } + } + break; + case PMsgChow: + { PMsgChowMsg *m UNUSED = (PMsgChowMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"Chow %d %s\r\n", m->discard, cpos_string(m->cpos)); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_pmsg"); + exit(-1); + } + } + } + break; + case PMsgFormClosedChow: + { PMsgFormClosedChowMsg *m UNUSED = (PMsgFormClosedChowMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"FormClosedChow %s\r\n", tile_code(m->tile)); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_pmsg"); + exit(-1); + } + } + } + break; + case PMsgDeclareWashOut: + { PMsgDeclareWashOutMsg *m UNUSED = (PMsgDeclareWashOutMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"DeclareWashOut\r\n"); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_pmsg"); + exit(-1); + } + } + } + break; + case PMsgMahJong: + { PMsgMahJongMsg *m UNUSED = (PMsgMahJongMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"MahJong %d\r\n", m->discard); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_pmsg"); + exit(-1); + } + } + } + break; + case PMsgPair: + { PMsgPairMsg *m UNUSED = (PMsgPairMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"Pair\r\n"); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_pmsg"); + exit(-1); + } + } + } + break; + case PMsgFormClosedPair: + { PMsgFormClosedPairMsg *m UNUSED = (PMsgFormClosedPairMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"FormClosedPair %s\r\n", tile_code(m->tile)); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_pmsg"); + exit(-1); + } + } + } + break; + case PMsgSpecialSet: + { PMsgSpecialSetMsg *m UNUSED = (PMsgSpecialSetMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"SpecialSet\r\n"); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_pmsg"); + exit(-1); + } + } + } + break; + case PMsgFormClosedSpecialSet: + { PMsgFormClosedSpecialSetMsg *m UNUSED = (PMsgFormClosedSpecialSetMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"FormClosedSpecialSet\r\n"); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_pmsg"); + exit(-1); + } + } + } + break; + case PMsgShowTiles: + { PMsgShowTilesMsg *m UNUSED = (PMsgShowTilesMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"ShowTiles\r\n"); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_pmsg"); + exit(-1); + } + } + } + break; + case PMsgSetPlayerOption: + { PMsgSetPlayerOptionMsg *m UNUSED = (PMsgSetPlayerOptionMsg *) msg; + badfield = 0; + if ( m->ack < 0 || m->ack > 1 ) { warn("bad boolean in message, assuming TRUE"); badfield = 1 ; }; + while (1) { + int size = snprintf(buf,buf_size,"SetPlayerOption %s %d %d %s%s\r\n", player_print_PlayerOption(m->option), (badfield ? 1 : m->ack), m->value,(m->text && (m->text[0] == ' ' || m->text[0] == '\\')) ? "\\" : "", m->text ? m->text : "" ); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_pmsg"); + exit(-1); + } + } + } + break; + case PMsgSetGameOption: + { PMsgSetGameOptionMsg *m UNUSED = (PMsgSetGameOptionMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"SetGameOption %s %s%s\r\n", m->optname ,(m->optvalue && (m->optvalue[0] == ' ' || m->optvalue[0] == '\\')) ? "\\" : "", m->optvalue ? m->optvalue : "" ); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_pmsg"); + exit(-1); + } + } + } + break; + case PMsgQueryGameOption: + { PMsgQueryGameOptionMsg *m UNUSED = (PMsgQueryGameOptionMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"QueryGameOption %s\r\n", m->optname ); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_pmsg"); + exit(-1); + } + } + } + break; + case PMsgListGameOptions: + { PMsgListGameOptionsMsg *m UNUSED = (PMsgListGameOptionsMsg *) msg; + badfield = 0; + if ( m->include_disabled < 0 || m->include_disabled > 1 ) { warn("bad boolean in message, assuming TRUE"); badfield = 1 ; }; + while (1) { + int size = snprintf(buf,buf_size,"ListGameOptions %d\r\n", (badfield ? 1 : m->include_disabled)); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_pmsg"); + exit(-1); + } + } + } + break; + case PMsgChangeManager: + { PMsgChangeManagerMsg *m UNUSED = (PMsgChangeManagerMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"ChangeManager %d\r\n", m->manager); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_pmsg"); + exit(-1); + } + } + } + break; + case PMsgSendMessage: + { PMsgSendMessageMsg *m UNUSED = (PMsgSendMessageMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"SendMessage %d %s%s\r\n", m->addressee,(m->text && (m->text[0] == ' ' || m->text[0] == '\\')) ? "\\" : "", m->text ? m->text : "" ); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_pmsg"); + exit(-1); + } + } + } + break; + case PMsgSwapTile: + { PMsgSwapTileMsg *m UNUSED = (PMsgSwapTileMsg *) msg; + while (1) { + int size = snprintf(buf,buf_size,"SwapTile %d %s %s\r\n", m->id, tile_code(m->oldtile), tile_code(m->newtile)); + if ((size >= 0)&&(size < (int)buf_size)) + break; + buf_size = (size >= 0)?((size_t)size+1):(buf_size > 0)?(buf_size*2):1024; + buf = realloc(buf, buf_size); + if (!buf) { + perror("encode_pmsg"); + exit(-1); + } + } + } + break; --- /dev/null +++ b/fbtiles.c @@ -0,0 +1,2149 @@ +/* XPM */ +static char *pm_99[] = { +/* width height ncolors chars_per_pixel */ +"25 35 1 1", +/* colors */ +" c #FF0000", +/* pixels */ +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" " +}; +/* XPM */ +static char *pm_0[] = { +/* width height ncolors chars_per_pixel */ +"25 35 1 1", +/* colors */ +" c #948D13", +/* pixels */ +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" " +}; +/* XPM */ +static char *pm_11[] = { +/* width height ncolors chars_per_pixel */ +"25 35 3 1", +/* colors */ +" c #B00000", +". c #EAEAEA", +"X c #063A30", +/* pixels */ +".........................", +"...X........... . . . ...", +"...X..... .X.... . . . ..", +"..XX. . X... . . . . .", +".XX..... ..X. . . . . ", +".XX..... X.. . . .", +".XX... . ..X. . . . . ", +"X.X.. . . ...X. . .", +"X.X.. ... X..X X X . ", +"X.X.. .. ..X.X.XX . .", +"X.X.. .X...X.X X X . . ", +"X.X.. ..X..X.X.X X X . .", +"X..X. ..X..XXXXXXXX . . ", +"X.XX. ..X.X . . .XX .. .", +"X .X. ..XXX X X XXX.. ...", +"X. XXXX.X. . . . XX......", +"X .XX.X.XX X X X XXXX....", +"X. XX.X.X . . . .XXXXX...", +"X .XX...XXXXXXXXX.XX..XX.", +"X.XXX...XXX. . XX...X...X", +"XXX.XX..XX. . .X.XX..X...", +"XX...XXXXX . . .X.XXX....", +"X.........X . .X.X.X.XX..", +".......... XXXXXXXXXXXXXX", +"......... .. . .......", +"........ . .. .. .......", +"....... ... .. ... ......", +"...... ....... .........", +"...... . ...... .........", +"...... ...XXXXX X........", +"...XXXX XX.... ..X.X.X...", +".X.X.......... ..X..X....", +"..XX....... . ...XXX.X...", +"...XX....... .....X...X.", +"XXXX..... .. .....XXXXX" +}; +/* XPM */ +static char *pm_12[] = { +/* width height ncolors chars_per_pixel */ +"25 35 2 1", +/* colors */ +" c #EAEAEA", +". c #063A30", +/* pixels */ +" ..... ", +" ... ... ", +" .. .. ", +" . . ", +" . . ", +" . . ", +" ..... ", +" ... ... ", +" ..... ", +" . . ", +" . . ", +" . . ", +" .. .. ", +" ... ... ", +" ..... ", +" ", +" ", +" ", +" ", +" ", +" ..... ", +" ... ... ", +" .. .. ", +" . . ", +" . . ", +" . . ", +" ..... ", +" ... ... ", +" ..... ", +" . . ", +" . . ", +" . . ", +" .. .. ", +" ... ... ", +" ..... " +}; +/* XPM */ +static char *pm_13[] = { +/* width height ncolors chars_per_pixel */ +"25 35 2 1", +/* colors */ +" c #EAEAEA", +". c #063A30", +/* pixels */ +" ..... ", +" ... ... ", +" .. .. ", +" . . ", +" . . ", +" . . ", +" ..... ", +" ... ... ", +" ..... ", +" . . ", +" . . ", +" . . ", +" .. .. ", +" ... ... ", +" ..... ", +" ", +" ", +" ", +" ", +" ", +" ..... ..... ", +"... ... ... ...", +" .. .. .. .. ", +" . . . . ", +" . . . . ", +" . . . . ", +" ..... ..... ", +"... ... ... ...", +" ..... ..... ", +" . . . . ", +" . . . . ", +" . . . . ", +" .. .. .. .. ", +"... ... ... ...", +" ..... ..... " +}; +/* XPM */ +static char *pm_14[] = { +/* width height ncolors chars_per_pixel */ +"25 35 2 1", +/* colors */ +" c #EAEAEA", +". c #063A30", +/* pixels */ +" ..... ..... ", +" ... ... ... ... ", +" .. .. .. .. ", +" . . . . ", +" . . . . ", +" . . . . ", +" ..... ..... ", +" ... ... ... ... ", +" ..... ..... ", +" . . . . ", +" . . . . ", +" . . . . ", +" .. .. .. .. ", +" ... ... ... ... ", +" ..... ..... ", +" ", +" ", +" ", +" ", +" ", +" ..... ..... ", +" ... ... ... ... ", +" .. .. .. .. ", +" . . . . ", +" . . . . ", +" . . . . ", +" ..... ..... ", +" ... ... ... ... ", +" ..... ..... ", +" . . . . ", +" . . . . ", +" . . . . ", +" .. .. .. .. ", +" ... ... ... ... ", +" ..... ..... " +}; +/* XPM */ +static char *pm_15[] = { +/* width height ncolors chars_per_pixel */ +"25 35 3 1", +/* colors */ +" c #B00000", +". c #EAEAEA", +"X c #063A30", +/* pixels */ +".XXXXX.............XXXXX.", +"XXX.XXX...........XXX.XXX", +".XX.XX.............XX.XX.", +"..X.X...............X.X..", +"..X.X...............X.X..", +"..X.X...............X.X..", +".XXXXX.............XXXXX.", +"XXX.XXX...........XXX.XXX", +".XXXXX.............XXXXX.", +"..X.X...............X.X..", +"..X.X..... .....X.X..", +"..X.X.... . ....X.X..", +".XX.XX.... . ....XX.XX.", +"XXX.XXX.... . ....XXX.XXX", +".XXXXX..... . .....XXXXX.", +"........... . ...........", +".......... ..........", +"......... . .........", +".......... ..........", +"........... . ...........", +".XXXXX..... . .....XXXXX.", +"XXX.XXX.... . ....XXX.XXX", +".XX.XX.... . ....XX.XX.", +"..X.X.... . ....X.X..", +"..X.X..... .....X.X..", +"..X.X...............X.X..", +".XXXXX.............XXXXX.", +"XXX.XXX...........XXX.XXX", +".XXXXX.............XXXXX.", +"..X.X...............X.X..", +"..X.X...............X.X..", +"..X.X...............X.X..", +".XX.XX.............XX.XX.", +"XXX.XXX...........XXX.XXX", +".XXXXX.............XXXXX." +}; +/* XPM */ +static char *pm_16[] = { +/* width height ncolors chars_per_pixel */ +"25 35 2 1", +/* colors */ +" c #EAEAEA", +". c #063A30", +/* pixels */ +" ..... ..... ..... ", +"... ... ... ... ... ...", +" .. .. .. .. .. .. ", +" . . . . . . ", +" . . . . . . ", +" . . . . . . ", +" ..... ..... ..... ", +"... .. ... ... ... ...", +" ..... ..... ..... ", +" . . . . . . ", +" . . . . . . ", +" . . . . . . ", +" .. .. .. .. .. .. ", +"... ... ... ... ... ...", +" ..... ..... ..... ", +" ", +" ", +" ", +" ", +" ", +" ..... ..... ..... ", +"... ... ... ... ... ...", +" .. .. .. .. .. .. ", +" . . . . . . ", +" . . . . . . ", +" . . . . . . ", +" ..... ..... ..... ", +"... .. ... ... ... ...", +" ..... ..... ..... ", +" . . . . . . ", +" . . . . . . ", +" . . . . . . ", +" .. .. .. .. .. .. ", +"... ... ... ... ... ...", +" ..... ..... ..... " +}; +/* XPM */ +static char *pm_17[] = { +/* width height ncolors chars_per_pixel */ +"25 35 3 1", +/* colors */ +" c #B00000", +". c #EAEAEA", +"X c #063A30", +/* pixels */ +".......... ..........", +"......... . .........", +".......... . ..........", +"........... . ...........", +".......... ..........", +"......... . .........", +".......... ..........", +"........... . ...........", +".......... . ..........", +"......... . .........", +".......... ..........", +".........................", +".XXXXX....XXXXX....XXXXX.", +"XXX.XXX..XXX.XXX..XXX.XXX", +".XX.XX....XX.XX....XX.XX.", +"..X.X......X.X......X.X..", +".XXXXX....XXXXX....XXXXX.", +"XXX.XXX..XXX.XXX..XXX.XXX", +".XXXXX....XXXXX....XXXXX.", +"..X.X......X.X......X.X..", +".XX.XX....XX.XX....XX.XX.", +"XXX.XXX..XXX.XXX..XXX.XXX", +".XXXXX....XXXXX....XXXXX.", +".........................", +".XXXXX....XXXXX....XXXXX.", +"XXX.XXX..XXX.XXX..XXX.XXX", +".XX.XX....XX.XX....XX.XX.", +"..X.X......X.X......X.X..", +".XXXXX....XXXXX....XXXXX.", +"XXX.XXX..XXX.XXX..XXX.XXX", +".XXXXX....XXXXX....XXXXX.", +"..X.X......X.X......X.X..", +".XX.XX....XX.XX....XX.XX.", +"XXX.XXX..XXX.XXX..XXX.XXX", +".XXXXX....XXXXX....XXXXX." +}; +/* XPM */ +static char *pm_18[] = { +/* width height ncolors chars_per_pixel */ +"25 35 2 1", +/* colors */ +" c #EAEAEA", +". c #063A30", +/* pixels */ +" ..... ..... ", +"... ... ... ...", +" .. .. .. .. ", +" . . . . ", +" . . ..... . . ", +" . . .. .. . . ", +" ..... . ... ..... ", +"... ... .. ... .. ... ...", +" ..... .... .... ..... ", +" . . .. .. .. .. . . ", +" . . .... .... . . ", +" . .. .. .. .. . ", +" .. . . ... .. ", +"... ... ... ...", +" ..... ..... ", +" ", +" ", +" ", +" ", +" ", +" ..... ..... ", +"... ... ... ...", +" .. . . . . .. ", +" . .. .. .. .. . ", +" . . .... .... . . ", +" . . .. .. .. .. . . ", +" ..... .... .... ..... ", +"... ... .. ... .. ... ...", +" ..... ... . ..... ", +" . . .. .. . . ", +" . . ..... . . ", +" . . . . ", +" .. .. .. .. ", +"... ... ... ...", +" ..... ..... " +}; +/* XPM */ +static char *pm_19[] = { +/* width height ncolors chars_per_pixel */ +"25 35 3 1", +/* colors */ +" c #B00000", +". c #EAEAEA", +"X c #063A30", +/* pixels */ +".XXXXX.... ....XXXXX.", +"XXX.XXX.. . ..XXX.XXX", +".XX.XX.... . ....XX.XX.", +"..X.X...... . ......X.X..", +".XXXXX.... ....XXXXX.", +"XXX.XXX.. . ..XXX.XXX", +".XXXXX.... ....XXXXX.", +"..X.X...... . ......X.X..", +".XX.XX.... . ....XX.XX.", +"XXX.XXX.. . ..XXX.XXX", +".XXXXX.... ....XXXXX.", +".........................", +".XXXXX.... ....XXXXX.", +"XXX.XXX.. . ..XXX.XXX", +".XX.XX.... . ....XX.XX.", +"..X.X...... . ......X.X..", +".XXXXX.... ....XXXXX.", +"XXX.XXX.. . ..XXX.XXX", +".XXXXX.... ....XXXXX.", +"..X.X...... . ......X.X..", +".XX.XX.... . ....XX.XX.", +"XXX.XXX.. . ..XXX.XXX", +".XXXXX.... ....XXXXX.", +".........................", +".XXXXX.... ....XXXXX.", +"XXX.XXX.. . ..XXX.XXX", +".XX.XX.... . ....XX.XX.", +"..X.X...... . ......X.X..", +".XXXXX.... ....XXXXX.", +"XXX.XXX.. . ..XXX.XXX", +".XXXXX.... ....XXXXX.", +"..X.X...... . ......X.X..", +".XX.XX.... . ....XX.XX.", +"XXX.XXX.. . ..XXX.XXX", +".XXXXX.... ....XXXXX." +}; +/* XPM */ +static char *pm_21[] = { +/* width height ncolors chars_per_pixel */ +"25 35 3 1", +/* colors */ +" c #000000", +". c #B00000", +"X c #EAEAEA", +/* pixels */ +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXX XXXXX", +"XXXXXXXXXXX XXX", +"XX XXXXXXXX XX", +"XXX XXXXXXXXXXXXX XX", +"XXXX XXXXXXXXXXXXXXXX XX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXX.XXXXXXXXXXX", +"XXXXXXXXXXXX....XXXXXXXXX", +"XXXXXXXX.XX.XX..XXXXXXXXX", +"XXXXXXXX..XXX..XXXXXXXXXX", +"XXXXXXXXX.X......XXXXXXXX", +"XXXXXXX.....X.XXXXXXXXXXX", +"XXXXXXXXXXX.....XXXXXXXXX", +"XXXXXXX.X....XX..XXXXXXXX", +"XXXXXXX..XX......XXXXXXXX", +"XXXXXXXX.X...X...XXXXXXXX", +"XXXXXXXX..XX....XXXXXXXXX", +"XXXXXXXX.....XX....XXXXXX", +"XXXX..XXX.X.....XX...XXXX", +"XXXXX.........XX.XX...XXX", +"XX.....XXXXX.X....XX...XX", +"XXX.X..........X..XX...XX", +"XXXXX.XX..XXXXXX..XX...XX", +"XXXXXXXXXXXXXX....X...XXX", +"XXXXXXXXXXXXXXXX.....XXXX" +}; +/* XPM */ +static char *pm_22[] = { +/* width height ncolors chars_per_pixel */ +"25 35 3 1", +/* colors */ +" c #000000", +". c #B00000", +"X c #EAEAEA", +/* pixels */ +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXX XXXXXXXXX", +"XXXXXXXXXX XXXXXXXX", +"XXXXX XXXXXXXXXXXXXX", +"XXXXXXX XXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXX XXXXXX", +"XXXXXXXXXXX XXXX", +"XXX XXXXXXX XXX", +"XXXX XXXXXXXXXXX XXX", +"XXXXX XXXXXXXXXXXXXX XXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXX.XXXXXXXXXXX", +"XXXXXXXXXXXX....XXXXXXXXX", +"XXXXXXXX.XX.XX..XXXXXXXXX", +"XXXXXXXX..XXX..XXXXXXXXXX", +"XXXXXXXXX.X......XXXXXXXX", +"XXXXXXX.....X.XXXXXXXXXXX", +"XXXXXXXXXXX.....XXXXXXXXX", +"XXXXXXX.X....XX..XXXXXXXX", +"XXXXXXX..XX......XXXXXXXX", +"XXXXXXXX.X...X...XXXXXXXX", +"XXXXXXXX..XX....XXXXXXXXX", +"XXXXXXXX.....XX....XXXXXX", +"XXXX..XXX.X.....XX...XXXX", +"XXXXX.........XX.XX...XXX", +"XX.....XXXXX.X....XX...XX", +"XXX.X..........X..XX...XX", +"XXXXX.XX..XXXXXX..XX...XX", +"XXXXXXXXXXXXXX....X...XXX", +"XXXXXXXXXXXXXXXX.....XXXX" +}; +/* XPM */ +static char *pm_23[] = { +/* width height ncolors chars_per_pixel */ +"25 35 3 1", +/* colors */ +" c #000000", +". c #B00000", +"X c #EAEAEA", +/* pixels */ +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXX XXXXXXXXX", +"XXXXXXXXXXX XXXXXXX", +"XXXXXXXX XXXX XXXXXXX", +"XXXXXX XXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXX XXXXXXXXX", +"XXXXXXXXXX XXXXXXXX", +"XXXXXXXX XXXX XXXXXXXXX", +"XXXXXXXX XXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXX XXXXXXX", +"XXXXXXXXX XXXXX", +"XXXX XXXXXXXX XXXX", +"XXXXX XXXXXXXXXXXX XXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXX.XXXXXXXXXXX", +"XXXXXXXXXXXX....XXXXXXXXX", +"XXXXXXXX.XX.XX..XXXXXXXXX", +"XXXXXXXX..XXX..XXXXXXXXXX", +"XXXXXXXXX.X......XXXXXXXX", +"XXXXXXX.....X.XXXXXXXXXXX", +"XXXXXXXXXXX.....XXXXXXXXX", +"XXXXXXX.X....XX..XXXXXXXX", +"XXXXXXX..XX......XXXXXXXX", +"XXXXXXXX.X...X...XXXXXXXX", +"XXXXXXXX..XX....XXXXXXXXX", +"XXXXXXXX.....XX....XXXXXX", +"XXXX..XXX.X.....XX...XXXX", +"XXXXX.........XX.XX...XXX", +"XX.....XXXXX.X....XX...XX", +"XXX.X..........X..XX...XX", +"XXXXX.XX..XXXXXX..XX...XX", +"XXXXXXXXXXXXXX....X...XXX", +"XXXXXXXXXXXXXXXX.....XXXX" +}; +/* XPM */ +static char *pm_24[] = { +/* width height ncolors chars_per_pixel */ +"25 35 3 1", +/* colors */ +" c #000000", +". c #B00000", +"X c #EAEAEA", +/* pixels */ +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXX XXXXX", +"XXXX XX XX XX XXXX", +"XXX XXXX XX XXX", +"XXX XX XXX XX XXX", +"XXX XXX XX XX XXX", +"XXXX XXXX X XXX XXXX", +"XXXXX XX XXXXX", +"XXXXXX XXXXXXX XXXXXX", +"XXXXXXX XXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXX.XXXXXXXXXXX", +"XXXXXXXXXXXX....XXXXXXXXX", +"XXXXXXXX.XX.XX..XXXXXXXXX", +"XXXXXXXX..XXX..XXXXXXXXXX", +"XXXXXXXXX.X......XXXXXXXX", +"XXXXXXX.....X.XXXXXXXXXXX", +"XXXXXXXXXXX.....XXXXXXXXX", +"XXXXXXX.X....XX..XXXXXXXX", +"XXXXXXX..XX......XXXXXXXX", +"XXXXXXXX.X...X...XXXXXXXX", +"XXXXXXXX..XX....XXXXXXXXX", +"XXXXXXXX.....XX....XXXXXX", +"XXXX..XXX.X.....XX...XXXX", +"XXXXX.........XX.XX...XXX", +"XX.....XXXXX.X....XX...XX", +"XXX.X..........X..XX...XX", +"XXXXX.XX..XXXXXX..XX...XX", +"XXXXXXXXXXXXXX....X...XXX", +"XXXXXXXXXXXXXXXX.....XXXX" +}; +/* XPM */ +static char *pm_25[] = { +/* width height ncolors chars_per_pixel */ +"25 35 3 1", +/* colors */ +" c #000000", +". c #B00000", +"X c #EAEAEA", +/* pixels */ +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXX XXXXXXXXX", +"XXXXXXXXXXXXXX XXXXXXX", +"XXXXXX XXXX XXXXXX", +"XXXXXXX X XXXXXXXXXX", +"XXXXXX XXXX XXXXXXXXXX", +"XXXXXX XXX X XXXXXXXX", +"XXXXXX XXXX XXXXXXX", +"XXXXX X XXXXXX", +"XXXXX XX XX XXXXXXXX", +"XXXX X XXX XX X XXXXX", +"XXXX XX XX XXX", +"XXX XX XXXXXXX XX", +"XX XXX XXXXXXXXXXXX XX", +"XXXXXXX XXXXXXXXXXXXX XXX", +"XXXXXXXXXXXXX.XXXXXXXXXXX", +"XXXXXXXXXXXX....XXXXXXXXX", +"XXXXXXXX.XX.XX..XXXXXXXXX", +"XXXXXXXX..XXX..XXXXXXXXXX", +"XXXXXXXXX.X......XXXXXXXX", +"XXXXXXX.....X.XXXXXXXXXXX", +"XXXXXXXXXXX.....XXXXXXXXX", +"XXXXXXX.X....XX..XXXXXXXX", +"XXXXXXX..XX......XXXXXXXX", +"XXXXXXXX.X...X...XXXXXXXX", +"XXXXXXXX..XX....XXXXXXXXX", +"XXXXXXXX.....XX....XXXXXX", +"XXXX..XXX.X.....XX...XXXX", +"XXXXX.........XX.XX...XXX", +"XX.....XXXXX.X....XX...XX", +"XXX.X..........X..XX...XX", +"XXXXX.XX..XXXXXX..XX...XX", +"XXXXXXXXXXXXXX....X...XXX", +"XXXXXXXXXXXXXXXX.....XXXX" +}; +/* XPM */ +static char *pm_26[] = { +/* width height ncolors chars_per_pixel */ +"25 35 3 1", +/* colors */ +" c #000000", +". c #B00000", +"X c #EAEAEA", +/* pixels */ +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXX XXXXXXXXXXXX", +"XXXXXXXXXXXX XXXXXXXXXXX", +"XXXXXXXXXXXX XX XXXXXXX", +"XXXXXXXXXXXX XX XXXXXX", +"XXXXXXXXXXX XXXXX", +"XXXX XXXXX XXXX", +"XXXXX XXXX XXXXXX XXXX", +"XXXXXXXX XXX XXX XXXXX", +"XXXXXXXXX XX XXXXXXXX", +"XXXXXXXXX XXXX XXXXXX", +"XXXXXXXX XXXXXX XXXXXX", +"XXXXXXX XXXXXXXX XXXXXX", +"XXXXXX XXXXXXXXXXX XXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXX.XXXXXXXXXXX", +"XXXXXXXXXXXX....XXXXXXXXX", +"XXXXXXXX.XX.XX..XXXXXXXXX", +"XXXXXXXX..XXX..XXXXXXXXXX", +"XXXXXXXXX.X......XXXXXXXX", +"XXXXXXX.....X.XXXXXXXXXXX", +"XXXXXXXXXXX.....XXXXXXXXX", +"XXXXXXX.X....XX..XXXXXXXX", +"XXXXXXX..XX......XXXXXXXX", +"XXXXXXXX.X...X...XXXXXXXX", +"XXXXXXXX..XX....XXXXXXXXX", +"XXXXXXXX.....XX....XXXXXX", +"XXXX..XXX.X.....XX...XXXX", +"XXXXX.........XX.XX...XXX", +"XX.....XXXXX.X....XX...XX", +"XXX.X..........X..XX...XX", +"XXXXX.XX..XXXXXX..XX...XX", +"XXXXXXXXXXXXXX....X...XXX", +"XXXXXXXXXXXXXXXX.....XXXX" +}; +/* XPM */ +static char *pm_27[] = { +/* width height ncolors chars_per_pixel */ +"25 35 3 1", +/* colors */ +" c #000000", +". c #B00000", +"X c #EAEAEA", +/* pixels */ +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXX XXXXXXXX XXX", +"XXXXXXXX XXXXX XXXX", +"XXXXXXXXX XXXX XXXXXXXX", +"XXXXXXXXX XXX XXXXXXXXXX", +"XXXXXXXXXX XX XXXXXXXXXXX", +"XXXXXXXXXX X XXXXXXXXXXXX", +"XXXXXXXXXX XXXXXXXXXXXXX", +"XXXXXXXXX XX XXXXXXXX", +"XXXXXXXX X XXXXXXX", +"XXXXXX XXX XXXXXX", +"XXX XXXXXX XXXXXXX", +"XXXX XXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXX.XXXXXXXXXXX", +"XXXXXXXXXXXX....XXXXXXXXX", +"XXXXXXXX.XX.XX..XXXXXXXXX", +"XXXXXXXX..XXX..XXXXXXXXXX", +"XXXXXXXXX.X......XXXXXXXX", +"XXXXXXX.....X.XXXXXXXXXXX", +"XXXXXXXXXXX.....XXXXXXXXX", +"XXXXXXX.X....XX..XXXXXXXX", +"XXXXXXX..XX......XXXXXXXX", +"XXXXXXXX.X...X...XXXXXXXX", +"XXXXXXXX..XX....XXXXXXXXX", +"XXXXXXXX.....XX....XXXXXX", +"XXXX..XXX.X.....XX...XXXX", +"XXXXX.........XX.XX...XXX", +"XX.....XXXXX.X....XX...XX", +"XXX.X..........X..XX...XX", +"XXXXX.XX..XXXXXX..XX...XX", +"XXXXXXXXXXXXXX....X...XXX", +"XXXXXXXXXXXXXXXX.....XXXX" +}; +/* XPM */ +static char *pm_28[] = { +/* width height ncolors chars_per_pixel */ +"25 35 3 1", +/* colors */ +" c #000000", +". c #B00000", +"X c #EAEAEA", +/* pixels */ +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXX XXXXXXXXXXXX", +"XXXXXXXXXX XXXXXXXXXXX", +"XXXXXXXXXXXX XXXXXXXXXXXX", +"XXXXXXXXXXXXX XXXXXXXXXXX", +"XXXXXXX XXXXX XXXXXXXXXX", +"XXXXXXXX XXXX XXXXXXXXX", +"XXXXXXX XXXX XXXXXXX", +"XXXXXXX X XXXXX XXXX", +"XXXXXX XXXXXXXXX X", +"XXXX XXXXXXXXXXXX XXX", +"X XXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXX.XXXXXXXXXXX", +"XXXXXXXXXXXX....XXXXXXXXX", +"XXXXXXXX.XX.XX..XXXXXXXXX", +"XXXXXXXX..XXX..XXXXXXXXXX", +"XXXXXXXXX.X......XXXXXXXX", +"XXXXXXX.....X.XXXXXXXXXXX", +"XXXXXXXXXXX.....XXXXXXXXX", +"XXXXXXX.X....XX..XXXXXXXX", +"XXXXXXX..XX......XXXXXXXX", +"XXXXXXXX.X...X...XXXXXXXX", +"XXXXXXXX..XX....XXXXXXXXX", +"XXXXXXXX.....XX....XXXXXX", +"XXXX..XXX.X.....XX...XXXX", +"XXXXX.........XX.XX...XXX", +"XX.....XXXXX.X....XX...XX", +"XXX.X..........X..XX...XX", +"XXXXX.XX..XXXXXX..XX...XX", +"XXXXXXXXXXXXXX....X...XXX", +"XXXXXXXXXXXXXXXX.....XXXX" +}; +/* XPM */ +static char *pm_29[] = { +/* width height ncolors chars_per_pixel */ +"25 35 3 1", +/* colors */ +" c #000000", +". c #B00000", +"X c #EAEAEA", +/* pixels */ +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXX XXX XXXXXXXXX", +"XXXXXXXX XXX XXXXXXX", +"XXXXXXXXX XXX XXXXXX", +"XXXXXXXXX X XXXXXX", +"XXXXX XXXXXXXXXX", +"XXXXXXXXX XX XXXXX XXXXX", +"XXXXXXXX XX XXXXX XXXXX", +"XXXXXXXX XXX XXXXX XXXX", +"XXXXXXX XXXX XXX XXXX", +"XXXXXX XXXXXX XXX", +"XXXXX XXXXXXXX XXXX", +"XXX XXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXX.XXXXXXXXXXX", +"XXXXXXXXXXXX....XXXXXXXXX", +"XXXXXXXX.XX.XX..XXXXXXXXX", +"XXXXXXXX..XXX..XXXXXXXXXX", +"XXXXXXXXX.X......XXXXXXXX", +"XXXXXXX.....X.XXXXXXXXXXX", +"XXXXXXXXXXX.....XXXXXXXXX", +"XXXXXXX.X....XX..XXXXXXXX", +"XXXXXXX..XX......XXXXXXXX", +"XXXXXXXX.X...X...XXXXXXXX", +"XXXXXXXX..XX....XXXXXXXXX", +"XXXXXXXX.....XX....XXXXXX", +"XXXX..XXX.X.....XX...XXXX", +"XXXXX.........XX.XX...XXX", +"XX.....XXXXX.X....XX...XX", +"XXX.X..........X..XX...XX", +"XXXXX.XX..XXXXXX..XX...XX", +"XXXXXXXXXXXXXX....X...XXX", +"XXXXXXXXXXXXXXXX.....XXXX" +}; +/* XPM */ +static char *pm_31[] = { +/* width height ncolors chars_per_pixel */ +"25 35 3 1", +/* colors */ +" c #002065", +". c #B00000", +"X c #EAEAEA", +/* pixels */ +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXX XXXXXXXXX", +"XXXXXXX X X X X XXXXXXX", +"XXXXXX X X X X X XXXXXX", +"XXXXX XX X X XX XXXXX", +"XXXX XX X X XX XXXX", +"XXX X XX XX X XXX", +"XXX X ..... X XXX", +"XX X XX ..X.X.. XX X XX", +"XX X ..X.X.X.. X XX", +"XX X X .X.....X. X X XX", +"XX X ..X.X.X.. X XX", +"XX X X .X.....X. X X XX", +"XX X ..X.X.X.. X XX", +"XX X XX ..X.X.. XX X XX", +"XXX X ..... X XXX", +"XXX X XX XX X XXX", +"XXXX XX X X XX XXXX", +"XXXXX XX X X XX XXXXX", +"XXXXXX X X X X X XXXXXX", +"XXXXXXX X X X X XXXXXXX", +"XXXXXXXXX XXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX" +}; +/* XPM */ +static char *pm_32[] = { +/* width height ncolors chars_per_pixel */ +"25 35 2 1", +/* colors */ +" c #002065", +". c #EAEAEA", +/* pixels */ +".........................", +".........................", +".........................", +".......... ..........", +"......... ... .........", +"........ .. .. ........", +"....... . . .......", +"...... . . . . . ......", +"...... . . . . ......", +"...... . . . . . ......", +"...... . . . . ......", +"...... . . . . . ......", +"....... . . .......", +"........ .. .. ........", +"......... ... .........", +".......... ..........", +".........................", +".........................", +".........................", +".......... ..........", +"......... ... .........", +"........ .. .. ........", +"....... . . .......", +"...... . . . . . ......", +"...... . . . . ......", +"...... . . . . . ......", +"...... . . . . ......", +"...... . . . . . ......", +"....... . . .......", +"........ .. .. ........", +"......... ... .........", +".......... ..........", +".........................", +".........................", +"........................." +}; +/* XPM */ +static char *pm_33[] = { +/* width height ncolors chars_per_pixel */ +"25 35 3 1", +/* colors */ +" c #002065", +". c #B00000", +"X c #EAEAEA", +/* pixels */ +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXX XXXXXXXXXXXXXXXXX", +"XX XXX XXXXXXXXXXXXXXXX", +"X X X XXXXXXXXXXXXXXX", +" X X X X XXXXXXXXXXXXXX", +" X X X X X XXXXXXXXXXXXXX", +" X X X X XXXXXXXXXXXXXX", +" X X X X X XXXXXXXXXXXXXX", +" X X X X XXXXXXXXXXXXXX", +"X X X XXXXXXXXXXXXXXX", +"XX XXX XXXXXXXXXXXXXXXX", +"XXX XXXXXXXXXXXXXXXXX", +"XXXXXXXXXX.....XXXXXXXXXX", +"XXXXXXXXX..XXX..XXXXXXXXX", +"XXXXXXXX..X...X..XXXXXXXX", +"XXXXXXX..X.X.X.X..XXXXXXX", +"XXXXXXX.X.X.X.X.X.XXXXXXX", +"XXXXXXX.X..X.X..X.XXXXXXX", +"XXXXXXX.X.X.X.X.X.XXXXXXX", +"XXXXXXX..X.X.X.X..XXXXXXX", +"XXXXXXXX..X...X..XXXXXXXX", +"XXXXXXXXX..XXX..XXXXXXXXX", +"XXXXXXXXXX.....XXXXXXXXXX", +"XXXXXXXXXXXXXXXXX XXX", +"XXXXXXXXXXXXXXXX XXX XX", +"XXXXXXXXXXXXXXX X X X", +"XXXXXXXXXXXXXX X X X X ", +"XXXXXXXXXXXXXX X X X X X ", +"XXXXXXXXXXXXXX X X X X ", +"XXXXXXXXXXXXXX X X X X X ", +"XXXXXXXXXXXXXX X X X X ", +"XXXXXXXXXXXXXXX X X X", +"XXXXXXXXXXXXXXXX XXX XX", +"XXXXXXXXXXXXXXXXX XXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX" +}; +/* XPM */ +static char *pm_34[] = { +/* width height ncolors chars_per_pixel */ +"25 35 2 1", +/* colors */ +" c #002065", +". c #EAEAEA", +/* pixels */ +".... ....... ....", +"... ... ..... ... ...", +".. . . ... . . ..", +". . . . . . . . . . .", +". . . . . . . . . . . . .", +". . . . . . . . . . .", +". . . . . . . . . . . . .", +". . . . . . . . . . .", +".. . . ... . . ..", +"... ... ..... ... ...", +".... ....... ....", +".........................", +".........................", +".........................", +".........................", +".........................", +".........................", +".........................", +".........................", +".........................", +".........................", +".........................", +".........................", +".........................", +".... ....... ....", +"... ... ..... ... ...", +".. . . ... . . ..", +". . . . . . . . . . .", +". . . . . . . . . . . . .", +". . . . . . . . . . .", +". . . . . . . . . . . . .", +". . . . . . . . . . .", +".. . . ... . . ..", +"... ... ..... ... ...", +".... ....... ...." +}; +/* XPM */ +static char *pm_35[] = { +/* width height ncolors chars_per_pixel */ +"25 35 3 1", +/* colors */ +" c #002065", +". c #B00000", +"X c #EAEAEA", +/* pixels */ +"XXXX XXXXXXX XXXX", +"XXX XXX XXXXX XXX XXX", +"XX X X XXX X X XX", +"X X X X X X X X X X X", +"X X X X X X X X X X X X X", +"X X X X X X X X X X X", +"X X X X X X X X X X X X X", +"X X X X X X X X X X X", +"XX X X XXX X X XX", +"XXX XXX XXXXX XXX XXX", +"XXXX XXXXXXX XXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXX.....XXXXXXXXXX", +"XXXXXXXXX..XXX..XXXXXXXXX", +"XXXXXXXX..X...X..XXXXXXXX", +"XXXXXXX..X.X.X.X..XXXXXXX", +"XXXXXXX.X.X.X.X.X.XXXXXXX", +"XXXXXXX.X..X.X..X.XXXXXXX", +"XXXXXXX.X.X.X.X.X.XXXXXXX", +"XXXXXXX..X.X.X.X..XXXXXXX", +"XXXXXXXX..X...X..XXXXXXXX", +"XXXXXXXXX..XXX..XXXXXXXXX", +"XXXXXXXXXX.....XXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXX XXXXXXX XXXX", +"XXX XXX XXXXX XXX XXX", +"XX X X XXX X X XX", +"X X X X X X X X X X X", +"X X X X X X X X X X X X X", +"X X X X X X X X X X X", +"X X X X X X X X X X X X X", +"X X X X X X X X X X X", +"XX X X XXX X X XX", +"XXX XXX XXXXX XXX XXX", +"XXXX XXXXXXX XXXX" +}; +/* XPM */ +static char *pm_36[] = { +/* width height ncolors chars_per_pixel */ +"25 35 4 1", +/* colors */ +" c #002065", +". c #B00000", +"X c #EAEAEA", +"o c #FFFFFF", +/* pixels */ +"XXXo oXXXXXo oXXX", +"XXo ooo oXXXo ooo oXX", +"Xo o o oXo o o oX", +"X o o o o X o o o o X", +"X X o o o X X X o o o X X", +"X X o o X X X o o X X", +"X o o o o o X o o o o o X", +"X o o o o X o o o o X", +"XX o o XXX o o XX", +"XXX ooo XXXXX ooo XXX", +"XXXX XXXXXXX XXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXX.....XXXXXXX.....XXXX", +"XXX..ooo..XXXXX..ooo..XXX", +"XX..o...o..XXX..o...o..XX", +"X..o.o.o.o..X..o.o.o.o..X", +"X.o.o.o.o.o.X.o.o.o.o.o.X", +"X.X..o.o..X.X.X..o.o..X.X", +"X.X.o.o.o.X.X.X.o.o.o.X.X", +"X..o.o.o.o..X..o.o.o.o..X", +"Xo..o...o..oXo..o...o..oX", +"XXo..ooo..oXXXo..ooo..oXX", +"XXXo.....oXXXXXo.....oXXX", +"XXX..ooo..XXXXX..ooo..XXX", +"XX..o...o..XXX..o...o..XX", +"X..o.o.o.o..X..o.o.o.o..X", +"X.o.o.o.o.o.X.o.o.o.o.o.X", +"X.X..o.o..X.X.X..o.o..X.X", +"X.X.o.o.o.X.X.X.o.o.o.X.X", +"X..o.o.o.o..X..o.o.o.o..X", +"Xo..o...o..oXo..o...o..oX", +"XXo..ooo..oXXXo..ooo..oXX", +"XXXo.....oXXXXXo.....oXXX" +}; +/* XPM */ +static char *pm_37[] = { +"25 35 3 1", +". c #EAEAEA", +"+ c #002065", +"@ c #B00000", +"...+++...................", +".++...++.................", +".+.+++.+.................", +"+.++.++.+..+++...........", +"+.+.+.+.+++...++.........", +"+.++.++.++.+++.+.........", +".+.+++.++.++.++.+..+++...", +".++...+++.+.+.+.+++...++.", +"...+++..+.++.++.++.+++.+.", +".........+.+++.++.++.++.+", +".........++...+++.+.+.+.+", +"...........+++..+.++.++.+", +".................+.+++.+.", +".................++...++.", +"...................+++...", +".........................", +".....@@@.........@@@.....", +"...@@...@@.....@@...@@...", +"...@.@@@.@.....@.@@@.@...", +"..@.@@.@@.@...@.@@.@@.@..", +"..@.@.@.@.@...@.@.@.@.@..", +"..@.@@.@@.@...@.@@.@@.@..", +"...@.@@@.@.....@.@@@.@...", +"...@@...@@.....@@...@@...", +".....@@@.........@@@.....", +".....@@@.........@@@.....", +"...@@...@@.....@@...@@...", +"...@.@@@.@.....@.@@@.@...", +"..@.@@.@@.@...@.@@.@@.@..", +"..@.@.@.@.@...@.@.@.@.@..", +"..@.@@.@@.@...@.@@.@@.@..", +"...@.@@@.@.....@.@@@.@...", +"...@@...@@.....@@...@@...", +".....@@@.........@@@.....", +"........................."}; +/* XPM */ +static char *pm_38[] = { +/* width height ncolors chars_per_pixel */ +"25 35 2 1", +/* colors */ +" c #002065", +". c #EAEAEA", +/* pixels */ +".........................", +"...... ....... ......", +".... ... ... ... ....", +".... . . ... . . ....", +"... . . . . . . . ...", +"... . . . . . . . . . ...", +"... . . . . . . . ...", +".... . . ... . . ....", +".... ... ... ... ....", +"...... ....... ......", +".... ... ... ... ....", +".... . . ... . . ....", +"... . . . . . . . ...", +"... . . . . . . . . . ...", +"... . . . . . . . ...", +".... . . ... . . ....", +".... ... ... ... ....", +"...... ....... ......", +".... ... ... ... ....", +".... . . ... . . ....", +"... . . . . . . . ...", +"... . . . . . . . . . ...", +"... . . . . . . . ...", +".... . . ... . . ....", +".... ... ... ... ....", +"...... ....... ......", +".... ... ... ... ....", +".... . . ... . . ....", +"... . . . . . . . ...", +"... . . . . . . . . . ...", +"... . . . . . . . ...", +".... . . ... . . ....", +".... ... ... ... ....", +"...... ....... ......", +"........................." +}; +/* XPM */ +static char *pm_39[] = { +/* width height ncolors chars_per_pixel */ +"25 35 3 1", +/* colors */ +" c #002065", +". c #B00000", +"X c #EAEAEA", +/* pixels */ +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXX XXXXX XXXXX XXX", +"X XXX X XXX X XXX X", +"X X X X X X X X X X", +" X X X X X X X X X ", +" X X X X X X X X X X X X ", +" X X X X X X X X X ", +"X X X X X X X X X X", +"X XXX X XXX X XXX X", +"XXX XXXXX XXXXX XXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXX...XXXXX...XXXXX...XXX", +"X..XXX..X..XXX..X..XXX..X", +"X.X...X.X.X...X.X.X...X.X", +".X..X..X.X..X..X.X..X..X.", +".X.X.X.X.X.X.X.X.X.X.X.X.", +".X..X..X.X..X..X.X..X..X.", +"X.X...X.X.X...X.X.X...X.X", +"X..XXX..X..XXX..X..XXX..X", +"XXX...XXXXX...XXXXX...XXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXX XXXXX XXXXX XXX", +"X XXX X XXX X XXX X", +"X X X X X X X X X X", +" X X X X X X X X X ", +" X X X X X X X X X X X X ", +" X X X X X X X X X ", +"X X X X X X X X X X", +"X XXX X XXX X XXX X", +"XXX XXXXX XXXXX XXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX" +}; +/* XPM */ +static char *pm_41[] = { +/* width height ncolors chars_per_pixel */ +"25 35 2 1", +/* colors */ +" c #000000", +". c #EAEAEA", +/* pixels */ +".........................", +".........................", +".........................", +"........... ...........", +"............ ..........", +"............ ..........", +"............ ...........", +"............ . ........", +"............ .......", +"....... .......", +"......... ...........", +"............ . .......", +"........... ......", +"...... . .....", +"...... .. .... ....", +"...... .. . ....", +"...... ....", +"....... .. ... .....", +"........ ......", +"......... . .. .......", +".......... .........", +"......... . ........", +"........ . .. .......", +"....... .. .. ......", +"...... ... ... .....", +"..... .. ... ...", +"... .... .... ..", +".......... ...........", +"........... ...........", +"............ ...........", +"............ ............", +".........................", +".........................", +".........................", +"........................." +}; +/* XPM */ +static char *pm_42[] = { +/* width height ncolors chars_per_pixel */ +"25 35 2 1", +/* colors */ +" c #000000", +". c #EAEAEA", +/* pixels */ +".........................", +".........................", +".........................", +"......... ..............", +".......... ...........", +"........... .........", +"............ ..........", +"............ ..........", +"............ ...........", +"............ . .........", +"............ ........", +"........... .......", +"........ . .........", +"............ . ........", +"............ .. .......", +"....... .... .......", +"....... . ...", +"........ . .. ..", +"....... .. ... ..", +".. ... . .... ..", +"... . ... .. .. ...", +"... ... . . ...", +".... .... ..... ...", +".... . . ...... ...", +"..... .... ...... ...", +"...... ..... ...", +"....... ........ ...", +"................... ....", +".........................", +".........................", +".........................", +".........................", +".........................", +".........................", +"........................." +}; +/* XPM */ +static char *pm_43[] = { +/* width height ncolors chars_per_pixel */ +"25 35 2 1", +/* colors */ +" c #000000", +". c #EAEAEA", +/* pixels */ +".........................", +".........................", +".........................", +".........................", +".........................", +".........................", +".........................", +"................. ......", +"................ .....", +"............ ...", +"....... ..... ..", +".. ..... . ..", +"... ......... .......", +".............. ........", +"...... ..... .........", +"....... .... .........", +"....... ... . .........", +"........ .. .......", +"....... . .....", +"...... . .. .. ....", +"... . . .. ... ...", +"... ... .. .... ...", +"... ... . ... ...", +".... ... ....", +"..... .....", +"...... .... ......", +"....... ...... .......", +".........................", +".........................", +".........................", +".........................", +".........................", +".........................", +".........................", +"........................." +}; +/* XPM */ +static char *pm_44[] = { +/* width height ncolors chars_per_pixel */ +"25 35 2 1", +/* colors */ +" c #000000", +". c #EAEAEA", +/* pixels */ +".........................", +".........................", +".........................", +".........................", +".........................", +".........................", +".........................", +".........................", +".........................", +"............. .........", +"............. .......", +".............. .......", +"......... .... .......", +"....... ... ........", +"....... .. .. ....", +"........ .. .. ...", +"......... ... . ..", +"... . ... ....", +"... . ... .......", +".... .. ... .........", +"......... ... .........", +"......... . . .........", +"... ..... .. ........", +"... ... ... ..", +"... .... ..", +".. . ....... ...", +"... ... ...............", +".........................", +".........................", +".........................", +".........................", +".........................", +".........................", +".........................", +"........................." +}; +/* XPM */ +static char *pm_51[] = { +/* width height ncolors chars_per_pixel */ +"25 35 2 1", +/* colors */ +" c #B00000", +". c #EAEAEA", +/* pixels */ +".........................", +".........................", +".........................", +".........................", +"............ ............", +".......... ...........", +"........... ..........", +"............ ...........", +"............ ...........", +"............ ...........", +"............ .... .....", +".. ....... ...", +"... .... ..... ..", +".... . ... ..... ..", +".... .... ..... ..", +"..... .... .... ..", +"..... ... ... . ...", +"...... .....", +"...... ... .. ......", +"....... ... ... .......", +"............ ...........", +"............ ...........", +"............ ...........", +"............ ...........", +"............ ...........", +"............ ...........", +"............ ...........", +"............ ...........", +"............ ...........", +"............ ...........", +"............ ............", +"............ ............", +".........................", +".........................", +"........................." +}; +/* XPM */ +static char *pm_52[] = { +/* width height ncolors chars_per_pixel */ +"25 35 2 1", +/* colors */ +" c #EAEAEA", +". c #002060", +/* pixels */ +" ", +" ", +" ...................... ", +" . . ", +" . .................. . ", +" . . . . . . ", +" . .. .. . ", +" . . . . ", +" . . . . ", +" . . . . ", +" . . . . ", +" . . . . ", +" . . . . ", +" . . . . ", +" . . . . ", +" . . . . ", +" . . . . ", +" . . . . ", +" . . . . ", +" . . . . ", +" . . . . ", +" . . . . ", +" . . . . ", +" . . . . ", +" . . . . ", +" . . . . ", +" . . . . ", +" . . . . ", +" . .. .. . ", +" . . . . . . ", +" . .................. . ", +" . . ", +" ...................... ", +" ", +" " +}; +/* XPM */ +static char *pm_53[] = { +/* width height ncolors chars_per_pixel */ +"25 35 2 1", +/* colors */ +" c #EAEAEA", +". c #063A30", +/* pixels */ +" ", +" ", +" ", +" ", +" .. ", +" ... ", +" ... ", +" . .. ", +" .. . ", +" . ... . . ", +" ..... . .. ", +" . ..... ... ", +" .. . ... .. .. ", +" .. ... . ... ", +" .. ... .. .. ", +" . . .. ....... ", +" .. .. .. ... ", +" . .. ........ ", +" . .. .. .. .... ", +" . .... .... .... ", +" . .. ... .......... ", +" . .. ...... .... ... ", +" . ... ............. ", +" . ... ... .... .... ", +" .. ........... . ", +" .... . .. ... ", +" .. .. .... ", +" . ... ", +" ... ", +" .. ", +" ", +" ", +" ", +" ", +" " +}; +/* XPM */ +static char *pm_61[] = { +/* width height ncolors chars_per_pixel */ +"25 35 4 1", +/* colors */ +" c #000000", +". c #B00000", +"X c #EAEAEA", +"o c #063A30", +/* pixels */ +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"...XXXXXXXXXXXXX XXXXXXXX", +"XX.XXXXXooXXXXXX XX X", +"XX.XXXXoooooXXXX XXXXXXXX", +"XX.XXXooooXoXXXX XXX XX", +"X...XXooooXoXXX X X XXXX", +"XXXXXXXXooXXXXX ", +"XXXXXooooXXXXXXX X X XXXX", +"XXXXXoXXooooXXXX XXX XX", +"XXXXXXooooXXoXXX XXX X XX", +"XXXXXXXooXXXoXXXXXXXX XXX", +"XXXXoXXoXXXXXXXXXXXXXXXXX", +"XXXoXoooXXXXXXXXXXXXXXXXX", +"XXXooXooooooXXXXXXoXXXXXX", +"XXXXXooXXXXXXXXXXXXoXXXXX", +"XXXXXXXX....XXXXXXoXXXXXX", +"XXXXXXX..XX..XXXXooXXXXXX", +"XXXXX....XX.....oXooXXXXX", +"XXXX.............XoXoXXXX", +"XXX..XX....X.XX..XoXoXXXX", +"XXXX.XX..XXX....XXXoXXXXX", +"XXXX......XX....XXoXXXXXX", +"XXXXX......X...XXXoXXXXXX", +"XXXooX..XX...X.XXXoXXXXXX", +"XooooX..XX..XX.XXooXXXXXX", +"oooooX.........XXooXXXXXX", +"XooooXXXXXXXXXXXXooXXXXXX", +"XooooXXooooooooXXooXXXXXX", +"XXoooooooXXXXooooooXXXXXX", +"XooXooXXXXXXXXXoooooXXXXX", +"XXXXXoXXXXXXXXXXXooooXXXX", +"XXXXXXXXXXXXXXXXXXXoooooX", +"XXXXXXXXXXXXXXXXXXXXooooX", +"XXXXXXXXXXXXXXXXXXXXXXooX", +"XXXXXXXXXXXXXXXXXXXXXXXXX" +}; +/* XPM */ +static char *pm_62[] = { +/* width height ncolors chars_per_pixel */ +"25 35 4 1", +/* colors */ +" c #000000", +". c #B00000", +"X c #EAEAEA", +"o c #063A30", +/* pixels */ +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXX XX", +"XX....XXXXoXXXXXXXXX XX", +"XX.XX.XXXXXoXXXXXX XX X", +"XXXX..XXXXXoXXXXXX XXXX X", +"XXX..XXXXXXXoXXXXX XXX XX", +"XX..XXXXXXXXoXXXX ", +"XX....XXXXXXoXXXXXX XXXX", +"XXXXXXXXXXXXoXXXXX XXXXX", +"XXXXXXXXXXXXoXXoX X XXXXX", +"XXXXXXXXXXXXooXXX X XXXX", +"XXXXXXXXXXXXoXXXXX XXXXXX", +"XXXXXXXXXXXooXXXXXXXXXXXX", +"XXXoXXXXXXXoXXXXXXooooooX", +"XXoXXXXXXoXoXXoooooXoXXoX", +"XooXXXXXXXoXXoXXXXXXXXXoo", +"XoXXXoooXXooooXXXXXXXXXoo", +"ooXXXXXoXXoooXXXXXXXXXooX", +"ooXXXXXoXooXXXXXXXXXXXoXX", +"XXoXXXXoXoXXXXXXXXXXXXXXX", +"XXXXooXoooXXXXXXXXXXoXXXX", +"XXXXXooooXXXXXXXXoXXXXXXX", +"XXXXXXXooXXXXXXXXoXoXXXXX", +"XXXXXXXoooXXXXXXXXoXooXXX", +"XXXXXXXoooXXXXXXXXooXXXXX", +"XXXXXXXoXoXXoXXXXXoXXXXXX", +"XXXXXXXoXoXooXXXXXoXXXXXX", +"XXXXXXXoXoXoXXXXXXoXXXXXX", +"XXXXXXXoooooXXXXXXoXXXXXX", +"XXXXXXXXoooooXXXXXoXXXXXX", +"XXXXXXXooooooXXXXooXXXXXX", +"XXXXXXXXXXoooXXXXoXXXXXXX", +"XXXXXXXXXXXoooXXooXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX" +}; +/* XPM */ +static char *pm_63[] = { +/* width height ncolors chars_per_pixel */ +"25 35 4 1", +/* colors */ +" c #000000", +". c #B00000", +"X c #EAEAEA", +"o c #063A30", +/* pixels */ +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"X....XXXXXXXXXXXXXXXXX X", +"X.XX..XXXXXXXXXXXXXXXXXXX", +"XXX...XXXXXXXXXXXXX ", +"XXX...XXXXXoXXoXXXXXXXXXX", +"XXXXX.XXXXXooooXXXXX XXXX", +"XX.X..XXXXXXooXXXX X XX X", +"XXX..XXooooXoXXXXXXX XXXX", +"XXXXXXXooooXoXXXXX X", +"XXXXXXXXoooooXXXXXXX XXXX", +"XXXXXXXXXoooXXXXX X XXXX", +"XXXoooXXXXooXXXXXXXXXXXXX", +"XXXooooXXXoXXXXXXXXXXXXXX", +"XXXXXXoXX.....XXXXXXXXXXX", +"XXXXXXo....X.....XXXXXXXX", +"XXXXXX.....XX....XXXXXXXX", +"XXXXXX..X..XX..X..XooXXXX", +"XXXXX.........XX..oXXXXXX", +"oooXX............XoooXXXX", +"oooXX.XX.........XXXXXXXX", +"ooXXX....X....XX..XXXXXXX", +"XXXXX..........XX.XXXXXXX", +"XXXXX..XX.........XXXXXXX", +"XXXXX.XXX........XXXooXXX", +"XXXXX.....XX..XXXXXoooXXX", +"XXXXXX....XX.XXXXXooXXXXX", +"XoXXXXXX.....XXXXXoXXXXXX", +"ooooooooX...XXXXXoXXXXXXX", +"oooXXXXoooXXXXXXXoXXXXXXX", +"XXXXXXXooooooXXXXooooooXX", +"XXXXXoooXXXooooooooooooXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX" +}; +/* XPM */ +static char *pm_64[] = { +/* width height ncolors chars_per_pixel */ +"25 35 4 1", +/* colors */ +" c #000000", +". c #B00000", +"X c #EAEAEA", +"o c #063A30", +/* pixels */ +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXX.XXXXXXXXXXXXXXXXXXXXX", +"XX..XXXXXXXXXXXXXXXXXXXXX", +"X...XXXXXXXXoXXXX X XXXX", +"X.X.XXXXXXXoXXX XXX", +"X....XXXXXoXXXXXX X XXXX", +"XXX.XXXXXXoXXXXXX X XXXX", +"XXXXXXXXXXoXXXXXX XXX XXX", +"XXXXXXXXXXoXXXXX XXX XXX", +"XXXXXXXXXXooXXXX XXXX XXX", +"XXXXXXXXXXooXXXX XXX XXX", +"XXXXXXXXXXooXXXXXoXXXXXXX", +"XXXXooXXXXoooXXXXoXXXXXXX", +"XXXoooXoXXXooXXXooXXXXXXX", +"XXXoXXXXoXXXoXXXXXXXXXoXX", +"XXoooXXXXoXXooXXXXXXooooX", +"XXXXXXXXXXoXXoXXooooooXXX", +"XXXXXXXXXXoXoooooXoXXooXX", +"XXXXXXooooooXooXoXXoXXooX", +"XXXXoooXoooXXXoXooXXXoXoX", +"XXXooXoooooXXXooXXXXXoXoX", +"XXoooXoooXoooooXXoooXXooX", +"XoXXoXooXXooXXooooXooXXoX", +"XoXXXXoXXXoXXXooXXXXXoooX", +"XoXoXXooXXooooooXXXXXXooX", +"XoooXXooXXXooXooXXXXXXoXX", +"XXoooXooXXXoXXXoXXXoXXXXX", +"XXoXXXXoXXXoXXXooXooXXXXX", +"XXXXXoooXXXooooooooXXooXX", +"XXXXXXXooXXooXXXooXXoXXXX", +"XXXXXXXXoXXoXXXXooXoXXXoX", +"XXXXXXXXooXooooooooXXXoXX", +"XXXXXoXXXoooXXXXXXXXXoXXX", +"XXXXXXXXXXoXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX" +}; +/* XPM */ +static char *pm_71[] = { +/* width height ncolors chars_per_pixel */ +"25 35 4 1", +/* colors */ +" c #000000", +". c #B00000", +"X c #EAEAEA", +"o c #063A30", +/* pixels */ +"XXXXXX.XXXXXXXXXXXXXXXXXX", +"XXX....XXXXXXXXXXXXXXXXXX", +"XXXX.X...XXXXXXXXXXXXXXXX", +"XXXX.X.XXXXXXXXXXXoXXXX X", +"XXXX.X.....XXXXXXXoXXX X", +"XXX......XXXXXXXoooXoX X", +"X....XXX.XXXXXXXXooooXX X", +"XXX.......XXXXXXXoooXXX X", +"XX...XX..X..XXXXXooXXXX ", +"X..X.....XXXXXXXXoXXXXXXX", +"XXXX.XX..XXXXXXoooooXXXXX", +"XXXX....XXXXXXXooooooXXXX", +"XXXXXXXXXXXXXXXooXoooXXXX", +"XXXXXXXXXXXXXXXooooXXXXXX", +"XXXXXXXXXXXXXXoooXXXooooX", +"XXXooooXXXXXXXXXXXooXXXoX", +"XXooXXooXXX.....XXoooXooX", +"XXooooooXX..XXX..XoXoooXX", +"XXXXXoX....XXXX..XXXXXXXX", +"XXXXXX..XX..XX.....XXXXXX", +"XXXXXX.XXX......XX.XXXXXX", +"XXXXXX.XXXX.XX.XXX..XXXXX", +"XXXXXXX.XXX....XXX..XXXXX", +"XXXXXXX.XX......X..XXXXXX", +"XXXXXXX.....XX....XXoooXX", +"XXXXXXXXXXX.XXX..XXooXooX", +"XXXXXXXXXXX.XXX.XoXoXXooX", +"XXXXXXXXXXX....XXoXoXXoXX", +"XXoooooooooooXoXXoooooXXX", +"XooooXXoooooooooXXooooXXX", +"ooooXXXXooXoooooooXoooXXX", +"oXoXXXXooooXXooooooooooXX", +"oooXXXXoooXXXXXXXXoXooooX", +"ooXXXXXXoXXXXXXXXXXXXXooX", +"XXXXXXXXXXXXXXXXXXXXXXXoX" +}; +/* XPM */ +static char *pm_72[] = { +/* width height ncolors chars_per_pixel */ +"25 35 4 1", +/* colors */ +" c #000000", +". c #B00000", +"X c #EAEAEA", +"o c #063A30", +/* pixels */ +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXX.XXXXXXXXXXXXX XX", +"X.......XXXoXXXXXXX X XX", +"XXXX..XXXXXooXXXXXX XX XX", +"XXX.....XXXXoXXXooXXX XXX", +"XXX.XXX.XXXXooXXoXXX XXXX", +"XXX.....XXXXXoXXoXX XX", +"XX....X.XXXXXoXoooXXXXXXX", +"X..XX...XXXXXoXoooXXXXXXX", +"XXXXX..XXXXXXooXXoXXXXXXX", +"XX.......XXXXooooXXXXXXXX", +"XXXXXXXXXXXXXoooXXXXXoooX", +"XXoooXXXooXXXooXXXXXoooXX", +"XXXXooXooXXXXooXXXXoooooX", +"XXXXXoooXXXXXXXXXXooXXXXX", +"XXXXXooXXXXX..XXXXoXXXXXX", +"XXXXXooXXX.....XXXoooXXXX", +"XXXXXXoXX...XX..XooXXXXXX", +"XXXXXXoXX.X..XX.XoXXXXXXX", +"XXXXXXoXX.XX.XX..XXXXXXXX", +"XXXXXXoX...X..XX.XXXXXXXX", +"XooXXXXX.X.....X.XXXXXXXX", +"XXooXXXX.XX....X.XXXXXXXX", +"XXXXoXXX.XX..X....XXXXXXX", +"XXXXooXo....XX....XooXXXX", +"XXXXXoooXX..XXX..XooXXXXX", +"XXXXXooXXXX.....XXoXXXXXX", +"XXooXXooXXoooXXXXXXXXXXXX", +"XXXoXXXooXXXooooooXXXXXXX", +"XXXXoXXXoXXXXXXXXXXXXXXXX", +"XXXXXoXXooXXXooXXXXXXXXXX", +"XXXXXXoXooooooooooXXXXXXX", +"XXXXXXooooXXXXXXooXXXXXXX", +"XXXXXXXXXXXXXXXXXoXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX" +}; +/* XPM */ +static char *pm_73[] = { +/* width height ncolors chars_per_pixel */ +"25 35 4 1", +/* colors */ +" c #000000", +". c #B00000", +"X c #EAEAEA", +"o c #063A30", +/* pixels */ +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXX.XXXX.XXXXXXXoXXXX X", +"XXX..XXX.XXXXXXXooXXXXX X", +"XXX...XX....XXXXXooXXXX X", +"X...XX...XXXXXXoooooX X", +"XXX..XXX.XXXXXXoXXoXXXXX ", +"XXX...X...XXXXXooXoXX X ", +"X...XX.XX..XXXXXoooXXX X", +"XXX...XXXX..XXXXoooXXXXXX", +"XXX..XXXXXX..XXXXooXXXXXX", +"XXX.XXXXXXXXXXXXXooXXXXXX", +"XXXXXXXXXXXXXXXXXooXXXXXX", +"XoooooXXXXXoooooooooXXXXX", +"oooXXoXXXXXXoXXooXXoXXXXX", +"XoooooXXXXXXooXooXXoXXXXX", +"XXXXXXXXX..XXoooooooXXXXX", +"XXXXXX...X..XXXoXXXoXXXXX", +"XXXXX..XXXX..XXXXooooXXXX", +"XXXXX.XXXXXX.XXXooXXoXXXX", +"XXXX.....XXX..XXoooooXXXX", +"XXX..X.....XX..XXXooXXXXX", +"XXX..X..XX.XXX.XXXXXXXXXX", +"XXX......XX.XX.XXXXXXXXXX", +"XXX.X.XX..X.XX.XXXXXXXXXX", +"XXX.X..X..X.XX.XXXXXoooXX", +"XXX............XXXXooXoXX", +"XXXX....X....XXXoXoXXooXX", +"XXXXX.......XXXooooXooXXX", +"ooooooooooXXXXXXoooooXXXX", +"oXXooXooooooooooooooXXXXX", +"XXooXXoXXooXXXXXoooooXXXX", +"ooXXXXoXooXXXXXXXXoooooXX", +"XXXXXXoooXXXXXXXXXXXooooo", +"XXXXXXXoXXXXXXXXXXXXXXXXo", +"XXXXXXXXXXXXXXXXXXXXXXXXX" +}; +/* XPM */ +static char *pm_74[] = { +/* width height ncolors chars_per_pixel */ +"25 35 4 1", +/* colors */ +" c #000000", +". c #B00000", +"X c #EAEAEA", +"o c #063A30", +/* pixels */ +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXX...XXXXXXXXXXXXX XX", +"XXX......XXXoXXXXXXXX XX", +"XXXX..X.XXXXoXXXXXXXX XX", +"XXXXX...XXXXooXXXXXX X XX", +"XXXX....XXXXooXXXXXX ", +"XX..XXX..XXXooXXXXXX X", +"X..XXXXX..XoXoXXXXXXXXX X", +"X.XXX...XX.oooXXXXXXXXXXX", +"XXXXXXXXXXXXooXXXXXooooXX", +"XXXX....XXXXoXXXXXooXXooX", +"XXXXXXXXXXXoooooXooXXXXoX", +"XXXXXXXXXXXoooXXXoooooooX", +"XXXXXXoooXooXXXXXooXXXXXX", +"XXXXXooXoooXXXXXooooXXXXX", +"XXXXXooooooXXXXXooXooXXXX", +"XXXXXoXXooXXXXXXoXXoXXXXX", +"XXXXXXXXoX......ooooXXXXX", +"XXXXXXXXXX.XXXX.XXXXXXXXX", +"XXXXXXX....XXX....XXXXXXX", +"XXXXXX..X....X.....XXXXXX", +"XXXXXX..XX.....XXX.XXXXXX", +"XXXXXXX.XX.XX..XXX.XXXXXX", +"XXXXXXX....X...XXX.XXXXXX", +"XXXXXXXXX...X..XX..XXXXXX", +"XXXXXooXX.XXX.....XXXXXXX", +"XXooooooX.XXX.XXXXXooXXXX", +"XXoXXXXoo.....XXooooooXXX", +"XXoooXXXooXXXXXXoXXXXooXX", +"XXXXooooooXoooXooXXXXXooX", +"XXXXXXXXooooXoooooooXXXoX", +"XXXXXXXXXooXXoooXXXoooooX", +"XXXXXXXXXooXXXoXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX", +"XXXXXXXXXXXXXXXXXXXXXXXXX" +}; +/* XPM */ +static char *pm_101[] = { +/* width height ncolors chars_per_pixel */ +"35 35 3 1", +/* colors */ +" c #000000", +". c None", +"X c #FFFFFF", +/* pixels */ +"............. .............", +".......... XXXXXXXXX ..........", +"........ XXXXXXXXXXXXXXX ........", +"....... XXXXXXXX XXXXXXXX .......", +"...... XXXXXXXXXX XXXXXXXX ......", +"..... XXXXXXXXXXX XXXXXXXXX .....", +".... XXXXXXXXXXXX XXXXXXXXXXX ....", +"... XXXXXXXXXXXXX X XXXXXXXXX ...", +".. XXXXXXXXXXXXXX XXXXXXXXX ..", +".. XXXXXXXXX XXXXXXXXX ..", +". XXXXXXXXXXXX XXXXXXXXXXXXXX .", +". XXXXXXXXXXXXXXX X XXXXXXXXXX .", +". XXXXXXXXXXXXXX XXXXXXXXX .", +" XXXXXXXXXX X XXXXXXXXX ", +" XXXXXXXXXX XX XXXX XXXXXXXX ", +" XXXXXXXXXX XX X XXXXXXXX ", +" XXXXXXXXXX XXXXXXXX ", +" XXXXXXXXXXX XX XXX XXXXXXXXX ", +" XXXXXXXXXXXX XXXXXXXXXX ", +" XXXXXXXXXXXXX X XX XXXXXXXXXXX ", +" XXXXXXXXXXXXXX XXXXXXXXXXXXX ", +" XXXXXXXXXXXXX X XXXXXXXXXXXX ", +". XXXXXXXXXXX X XX XXXXXXXXXX .", +". XXXXXXXXXX XX XX XXXXXXXXX .", +". XXXXXXXXX XXX XXX XXXXXXXX .", +".. XXXXXXX XX XXX XXXXX ..", +".. XXXXX XXXX XXXX XXXX ..", +"... XXXXXXXXXXX XXXXXXXXXXXX ...", +".... XXXXXXXXXXX XXXXXXXXXXX ....", +"..... XXXXXXXXXXX XXXXXXXXXX .....", +"...... XXXXXXXXXX XXXXXXXXXX ......", +"....... XXXXXXXXXXXXXXXXXXX .......", +"........ XXXXXXXXXXXXXXX ........", +".......... XXXXXXXXX ..........", +"............. ............." +}; +/* XPM */ +static char *pm_102[] = { +/* width height ncolors chars_per_pixel */ +"35 35 3 1", +/* colors */ +" c #000000", +". c None", +"X c #FFFFFF", +/* pixels */ +"............. .............", +".......... XXXXXXXXX ..........", +"........ XXXXXXXXXXXXXXX ........", +"....... XXXXXX XXXXXXXXXXX .......", +"...... XXXXXXXX XXXXXXXXX ......", +"..... XXXXXXXXXX XXXXXXXX .....", +".... XXXXXXXXXXXX XXXXXXXXXX ....", +"... XXXXXXXXXXXXX XXXXXXXXXXX ...", +".. XXXXXXXXXXXXXX XXXXXXXXXXXXX ..", +".. XXXXXXXXXXXXXX X XXXXXXXXXXX ..", +". XXXXXXXXXXXXXXX XXXXXXXXXXX .", +". XXXXXXXXXXXXXX XXXXXXXXXX .", +". XXXXXXXXXXX X XXXXXXXXXXXX .", +" XXXXXXXXXXXXXXXX X XXXXXXXXXXXX ", +" XXXXXXXXXXXXXXXX XX XXXXXXXXXXX ", +" XXXXXXXXXXX XXXX XXXXXXXXXXX ", +" XXXXXXXXXXX X XXXXXXX ", +" XXXXXXXXXXXX X XX XXXXXX ", +" XXXXXXXXXXX XX XXX XXXXXX ", +" XXXXXX XXX X XXXX XXXXXX ", +" XXXXXXX X XXX XX XX XXXXXXX ", +" XXXXXXX XXX X X XXXXXXX ", +". XXXXXXX XXXX XXXXX XXXXXX .", +". XXXXXXX X X XXXXXX XXXXXX .", +". XXXXXXXX XXXX XXXXXX XXXXXX .", +".. XXXXXXXX XXXXX XXXXX ..", +".. XXXXXXXXX XXXXXXXX XXXXX ..", +"... XXXXXXXXXXXXXXXXXXXX XXXXX ...", +".... XXXXXXXXXXXXXXXXXXXXXXXXX ....", +"..... XXXXXXXXXXXXXXXXXXXXXXX .....", +"...... XXXXXXXXXXXXXXXXXXXXX ......", +"....... XXXXXXXXXXXXXXXXXXX .......", +"........ XXXXXXXXXXXXXXX ........", +".......... XXXXXXXXX ..........", +"............. ............." +}; +/* XPM */ +static char *pm_103[] = { +/* width height ncolors chars_per_pixel */ +"35 35 3 1", +/* colors */ +" c #000000", +". c None", +"X c #FFFFFF", +/* pixels */ +"............. .............", +".......... XXXXXXXXX ..........", +"........ XXXXXXXXXXXXXXX ........", +"....... XXXXXXXXXXXXXXXXXXX .......", +"...... XXXXXXXXXXXXXXXXXXXXX ......", +"..... XXXXXXXXXXXXXXXXXXXXXXX .....", +".... XXXXXXXXXXXXXXXXXXXXXXXXX ....", +"... XXXXXXXXXXXXXXXXXX XXXXXXX ...", +".. XXXXXXXXXXXXXXXXXX XXXXXXX ..", +".. XXXXXXXXXXXXXX XXXXX ..", +". XXXXXXXXXX XXXXX XXXXX .", +". XXXXX XXXXX X XXXXX .", +". XXXXXX XXXXXXXXX XXXXXXXXXX .", +" XXXXXXXXXXXXXXXXXX XXXXXXXXXXXX ", +" XXXXXXXXXX XXXXX XXXXXXXXXXXXX ", +" XXXXXXXXXXX XXXX XXXXXXXXXXXXX ", +" XXXXXXXXXXX XXX X XXXXXXXXXXXXX ", +" XXXXXXXXXXXX XX XXXXXXXXXXX ", +" XXXXXXXXXXX X XXXXXXXXX ", +" XXXXXXXXXX X XX XX XXXXXXXX ", +" XXXXXXX X X XX XXX XXXXXXX ", +" XXXXXXX XXX XX XXXX XXXXXXX ", +". XXXXXX XXX X XXX XXXXXX .", +". XXXXXXX XXX XXXXXXX .", +". XXXXXXXX XXXXXXXX .", +".. XXXXXXXX XXXX XXXXXXXX ..", +".. XXXXXXXXX XXXXXX XXXXXXXXX ..", +"... XXXXXXXXXXXXXXXXXXXXXXXXXXX ...", +".... XXXXXXXXXXXXXXXXXXXXXXXXX ....", +"..... XXXXXXXXXXXXXXXXXXXXXXX .....", +"...... XXXXXXXXXXXXXXXXXXXXX ......", +"....... XXXXXXXXXXXXXXXXXXX .......", +"........ XXXXXXXXXXXXXXX ........", +".......... XXXXXXXXX ..........", +"............. ............." +}; +/* XPM */ +static char *pm_104[] = { +/* width height ncolors chars_per_pixel */ +"35 35 3 1", +/* colors */ +" c #000000", +". c None", +"X c #FFFFFF", +/* pixels */ +"............. .............", +".......... XXXXXXXXX ..........", +"........ XXXXXXXXXXXXXXX ........", +"....... XXXXXXXXXXXXXXXXXXX .......", +"...... XXXXXXXXXXXXXXXXXXXXX ......", +"..... XXXXXXXXXXXXXXXXXXXXXXX .....", +".... XXXXXXXXXXXXXXXXXXXXXXXXX ....", +"... XXXXXXXXXXXXXXXXXXXXXXXXXXX ...", +".. XXXXXXXXXXXXXXXXXXXXXXXXXXXXX ..", +".. XXXXXXXXXXXXXXX XXXXXXXXXXX ..", +". XXXXXXXXXXXXXXXX XXXXXXXXXX .", +". XXXXXXXXXXXXXXXXX XXXXXXXXXX .", +". XXXXXXXXXXXX XXXX XXXXXXXXXX .", +" XXXXXXXXXXX XXX XXXXXXXXXXXX ", +" XXXXXXXXXXX XX XX XXXXXXXX ", +" XXXXXXXXXXXX XX XX XXXXXXX ", +" XXXXXXXXXXXXX XXX X XXXXXX ", +" XXXXXXX X XXX XXXXXXXX ", +" XXXXXXX X XXX XXXXXXXXXXX ", +" XXXXXXXX XX XXX XXXXXXXXXXXXX ", +" XXXXXXXXXXXXX XXX XXXXXXXXXXXXX ", +" XXXXXXXXXXXXX X X XXXXXXXXXXXXX ", +". XXXXXX XXXXX XX XXXXXXXXXXX .", +". XXXXXX XXX XXX XXXXX .", +". XXXXXX XXXX XXXXX .", +".. XXXX X XXXXXXX XXXXX ..", +".. XXXXX XXX XXXXXXXXXXXXXXXXX ..", +"... XXXXXXXXXXXXXXXXXXXXXXXXXXX ...", +".... XXXXXXXXXXXXXXXXXXXXXXXXX ....", +"..... XXXXXXXXXXXXXXXXXXXXXXX .....", +"...... XXXXXXXXXXXXXXXXXXXXX ......", +"....... XXXXXXXXXXXXXXXXXXX .......", +"........ XXXXXXXXXXXXXXX ........", +".......... XXXXXXXXX ..........", +"............. ............." +}; +char **fallbackpixmaps[] = { +pm_0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, pm_11, pm_12, pm_13, pm_14, pm_15, pm_16, pm_17, pm_18, pm_19, 0, pm_21, pm_22, pm_23, pm_24, pm_25, pm_26, pm_27, pm_28, pm_29, 0, pm_31, pm_32, pm_33, pm_34, pm_35, pm_36, pm_37, pm_38, pm_39, 0, pm_41, pm_42, pm_43, pm_44, 0, 0, 0, 0, 0, 0, pm_51, pm_52, pm_53, 0, 0, 0, 0, 0, 0, 0, pm_61, pm_62, pm_63, pm_64, 0, 0, 0, 0, 0, 0, pm_71, pm_72, pm_73, pm_74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, pm_99, 0, pm_101, pm_102, pm_103, pm_104, +}; --- /dev/null +++ b/game-enums.c @@ -0,0 +1,116 @@ +char *game_print_GameState(const GameState t) { + if ( t == HandComplete ) return "HandComplete"; + if ( t == Dealing ) return "Dealing"; + if ( t == DeclaringSpecials ) return "DeclaringSpecials"; + if ( t == Discarding ) return "Discarding"; + if ( t == Discarded ) return "Discarded"; + if ( t == MahJonging ) return "MahJonging"; + return (char *)0; +} + +GameState game_scan_GameState(const char *s) { + if ( strcmp(s,"HandComplete") == 0 ) return HandComplete; + if ( strcmp(s,"Dealing") == 0 ) return Dealing; + if ( strcmp(s,"DeclaringSpecials") == 0 ) return DeclaringSpecials; + if ( strcmp(s,"Discarding") == 0 ) return Discarding; + if ( strcmp(s,"Discarded") == 0 ) return Discarded; + if ( strcmp(s,"MahJonging") == 0 ) return MahJonging; + return -1; +} + + +char *game_print_seats(const seats t) { + if ( t == east ) return "east"; + if ( t == south ) return "south"; + if ( t == west ) return "west"; + if ( t == north ) return "north"; + if ( t == noseat ) return "noseat"; + return (char *)0; +} + +seats game_scan_seats(const char *s) { + if ( strcmp(s,"east") == 0 ) return east; + if ( strcmp(s,"south") == 0 ) return south; + if ( strcmp(s,"west") == 0 ) return west; + if ( strcmp(s,"north") == 0 ) return north; + if ( strcmp(s,"noseat") == 0 ) return noseat; + return -1; +} + + +char *game_print_Whence(const Whence t) { + if ( t == FromNone ) return "FromNone"; + if ( t == FromWall ) return "FromWall"; + if ( t == FromDiscard ) return "FromDiscard"; + if ( t == FromLoose ) return "FromLoose"; + if ( t == FromRobbedKong ) return "FromRobbedKong"; + return (char *)0; +} + +Whence game_scan_Whence(const char *s) { + if ( strcmp(s,"FromNone") == 0 ) return FromNone; + if ( strcmp(s,"FromWall") == 0 ) return FromWall; + if ( strcmp(s,"FromDiscard") == 0 ) return FromDiscard; + if ( strcmp(s,"FromLoose") == 0 ) return FromLoose; + if ( strcmp(s,"FromRobbedKong") == 0 ) return FromRobbedKong; + return -1; +} + + +char *game_print_Konging(const Konging t) { + if ( t == NotKonging ) return "NotKonging"; + if ( t == AddingToPung ) return "AddingToPung"; + if ( t == DeclaringKong ) return "DeclaringKong"; + return (char *)0; +} + +Konging game_scan_Konging(const char *s) { + if ( strcmp(s,"NotKonging") == 0 ) return NotKonging; + if ( strcmp(s,"AddingToPung") == 0 ) return AddingToPung; + if ( strcmp(s,"DeclaringKong") == 0 ) return DeclaringKong; + return -1; +} + + +char *game_print_Claims(const Claims t) { + if ( t == UnknownClaim ) return "UnknownClaim"; + if ( t == NoClaim ) return "NoClaim"; + if ( t == ChowClaim ) return "ChowClaim"; + if ( t == PungClaim ) return "PungClaim"; + if ( t == KongClaim ) return "KongClaim"; + if ( t == MahJongClaim ) return "MahJongClaim"; + if ( t == PairClaim ) return "PairClaim"; + if ( t == SpecialSetClaim ) return "SpecialSetClaim"; + return (char *)0; +} + +Claims game_scan_Claims(const char *s) { + if ( strcmp(s,"UnknownClaim") == 0 ) return UnknownClaim; + if ( strcmp(s,"NoClaim") == 0 ) return NoClaim; + if ( strcmp(s,"ChowClaim") == 0 ) return ChowClaim; + if ( strcmp(s,"PungClaim") == 0 ) return PungClaim; + if ( strcmp(s,"KongClaim") == 0 ) return KongClaim; + if ( strcmp(s,"MahJongClaim") == 0 ) return MahJongClaim; + if ( strcmp(s,"PairClaim") == 0 ) return PairClaim; + if ( strcmp(s,"SpecialSetClaim") == 0 ) return SpecialSetClaim; + return -1; +} + + +char *game_print_GameFlags(const GameFlags t) { + if ( t == GFKong ) return "GFKong"; + if ( t == GFKongUponKong ) return "GFKongUponKong"; + if ( t == GFDangerousDiscard ) return "GFDangerousDiscard"; + if ( t == GFNoChoice ) return "GFNoChoice"; + return (char *)0; +} + +GameFlags game_scan_GameFlags(const char *s) { + if ( strcmp(s,"GFKong") == 0 ) return GFKong; + if ( strcmp(s,"GFKongUponKong") == 0 ) return GFKongUponKong; + if ( strcmp(s,"GFDangerousDiscard") == 0 ) return GFDangerousDiscard; + if ( strcmp(s,"GFNoChoice") == 0 ) return GFNoChoice; + return -1; +} + + --- /dev/null +++ b/game-enums.h @@ -0,0 +1,18 @@ +char *game_print_GameState(const GameState t); +GameState game_scan_GameState(const char *s); + +char *game_print_seats(const seats t); +seats game_scan_seats(const char *s); + +char *game_print_Whence(const Whence t); +Whence game_scan_Whence(const char *s); + +char *game_print_Konging(const Konging t); +Konging game_scan_Konging(const char *s); + +char *game_print_Claims(const Claims t); +Claims game_scan_Claims(const char *s); + +char *game_print_GameFlags(const GameFlags t); +GameFlags game_scan_GameFlags(const char *s); + --- /dev/null +++ b/player-enums.c @@ -0,0 +1,122 @@ +char *player_print_TileSetType(const TileSetType t) { + if ( t == Empty ) return "Empty"; + if ( t == Chow ) return "Chow"; + if ( t == Pung ) return "Pung"; + if ( t == Kong ) return "Kong"; + if ( t == ClosedPung ) return "ClosedPung"; + if ( t == ClosedKong ) return "ClosedKong"; + if ( t == ClosedChow ) return "ClosedChow"; + if ( t == Pair ) return "Pair"; + if ( t == ClosedPair ) return "ClosedPair"; + return (char *)0; +} + +TileSetType player_scan_TileSetType(const char *s) { + if ( strcmp(s,"Empty") == 0 ) return Empty; + if ( strcmp(s,"Chow") == 0 ) return Chow; + if ( strcmp(s,"Pung") == 0 ) return Pung; + if ( strcmp(s,"Kong") == 0 ) return Kong; + if ( strcmp(s,"ClosedPung") == 0 ) return ClosedPung; + if ( strcmp(s,"ClosedKong") == 0 ) return ClosedKong; + if ( strcmp(s,"ClosedChow") == 0 ) return ClosedChow; + if ( strcmp(s,"Pair") == 0 ) return Pair; + if ( strcmp(s,"ClosedPair") == 0 ) return ClosedPair; + return -1; +} + + +char *player_print_PlayerOption(const PlayerOption t) { + if ( t == POUnknown ) return "Unknown"; + if ( t == POInfoTiles ) return "InfoTiles"; + if ( t == PODelayTime ) return "DelayTime"; + if ( t == POLocalTimeouts ) return "LocalTimeouts"; + if ( t == PONumOptions ) return "NumOptions"; + return (char *)0; +} + +PlayerOption player_scan_PlayerOption(const char *s) { + if ( strcmp(s,"Unknown") == 0 ) return POUnknown; + if ( strcmp(s,"InfoTiles") == 0 ) return POInfoTiles; + if ( strcmp(s,"DelayTime") == 0 ) return PODelayTime; + if ( strcmp(s,"LocalTimeouts") == 0 ) return POLocalTimeouts; + if ( strcmp(s,"NumOptions") == 0 ) return PONumOptions; + return -1; +} + + +char *player_print_PlayerFlags(const PlayerFlags t) { + if ( t == Hidden ) return "Hidden"; + if ( t == MahJongged ) return "MahJongged"; + if ( t == HandDeclared ) return "HandDeclared"; + if ( t == NoDiscard ) return "NoDiscard"; + if ( t == OriginalCall ) return "OriginalCall"; + if ( t == Calling ) return "Calling"; + return (char *)0; +} + +PlayerFlags player_scan_PlayerFlags(const char *s) { + if ( strcmp(s,"Hidden") == 0 ) return Hidden; + if ( strcmp(s,"MahJongged") == 0 ) return MahJongged; + if ( strcmp(s,"HandDeclared") == 0 ) return HandDeclared; + if ( strcmp(s,"NoDiscard") == 0 ) return NoDiscard; + if ( strcmp(s,"OriginalCall") == 0 ) return OriginalCall; + if ( strcmp(s,"Calling") == 0 ) return Calling; + return -1; +} + + +char *player_print_DangerSignals(const DangerSignals t) { + if ( t == DangerBamboo ) return "DangerBamboo"; + if ( t == DangerCharacter ) return "DangerCharacter"; + if ( t == DangerCircle ) return "DangerCircle"; + if ( t == DangerWind ) return "DangerWind"; + if ( t == DangerDragon ) return "DangerDragon"; + if ( t == DangerHonour ) return "DangerHonour"; + if ( t == DangerGreen ) return "DangerGreen"; + if ( t == DangerTerminal ) return "DangerTerminal"; + if ( t == DangerEnd ) return "DangerEnd"; + return (char *)0; +} + +DangerSignals player_scan_DangerSignals(const char *s) { + if ( strcmp(s,"DangerBamboo") == 0 ) return DangerBamboo; + if ( strcmp(s,"DangerCharacter") == 0 ) return DangerCharacter; + if ( strcmp(s,"DangerCircle") == 0 ) return DangerCircle; + if ( strcmp(s,"DangerWind") == 0 ) return DangerWind; + if ( strcmp(s,"DangerDragon") == 0 ) return DangerDragon; + if ( strcmp(s,"DangerHonour") == 0 ) return DangerHonour; + if ( strcmp(s,"DangerGreen") == 0 ) return DangerGreen; + if ( strcmp(s,"DangerTerminal") == 0 ) return DangerTerminal; + if ( strcmp(s,"DangerEnd") == 0 ) return DangerEnd; + return -1; +} + + +char *player_print_ChowPosition(const ChowPosition t) { + if ( t == Lower ) return "Lower"; + if ( t == Middle ) return "Middle"; + if ( t == Upper ) return "Upper"; + if ( t == AnyPos ) return "AnyPos"; + return (char *)0; +} + +ChowPosition player_scan_ChowPosition(const char *s) { + if ( strcmp(s,"Lower") == 0 ) return Lower; + if ( strcmp(s,"Middle") == 0 ) return Middle; + if ( strcmp(s,"Upper") == 0 ) return Upper; + if ( strcmp(s,"AnyPos") == 0 ) return AnyPos; + return -1; +} + + +char *player_print_MJSpecialHandFlags(const MJSpecialHandFlags t) { + if ( t == MJSevenPairs ) return "MJSevenPairs"; + return (char *)0; +} + +MJSpecialHandFlags player_scan_MJSpecialHandFlags(const char *s) { + if ( strcmp(s,"MJSevenPairs") == 0 ) return MJSevenPairs; + return -1; +} + + --- /dev/null +++ b/player-enums.h @@ -0,0 +1,18 @@ +char *player_print_TileSetType(const TileSetType t); +TileSetType player_scan_TileSetType(const char *s); + +char *player_print_PlayerOption(const PlayerOption t); +PlayerOption player_scan_PlayerOption(const char *s); + +char *player_print_PlayerFlags(const PlayerFlags t); +PlayerFlags player_scan_PlayerFlags(const char *s); + +char *player_print_DangerSignals(const DangerSignals t); +DangerSignals player_scan_DangerSignals(const char *s); + +char *player_print_ChowPosition(const ChowPosition t); +ChowPosition player_scan_ChowPosition(const char *s); + +char *player_print_MJSpecialHandFlags(const MJSpecialHandFlags t); +MJSpecialHandFlags player_scan_MJSpecialHandFlags(const char *s); + --- /dev/null +++ b/pmsg_size.c @@ -0,0 +1,1167 @@ +static int pmsg_size[] = { +0, +-sizeof(PMsgSaveStateMsg), +-sizeof(PMsgLoadStateMsg), +0, +0, +0, +0, +0, +0, +0, +-sizeof(PMsgConnectMsg), +sizeof(PMsgRequestReconnectMsg), +-sizeof(PMsgAuthInfoMsg), +-sizeof(PMsgNewAuthInfoMsg), +sizeof(PMsgDisconnectMsg), +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +sizeof(PMsgDeclareSpecialMsg), +0, +0, +-sizeof(PMsgRequestPauseMsg), +sizeof(PMsgReadyMsg), +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +sizeof(PMsgDiscardMsg), +sizeof(PMsgNoClaimMsg), +0, +0, +0, +0, +0, +0, +0, +0, +sizeof(PMsgPungMsg), +0, +sizeof(PMsgFormClosedPungMsg), +0, +0, +0, +0, +0, +0, +0, +sizeof(PMsgKongMsg), +0, +0, +0, +0, +0, +0, +0, +0, +0, +sizeof(PMsgDeclareClosedKongMsg), +sizeof(PMsgAddToPungMsg), +0, +0, +0, +0, +0, +sizeof(PMsgQueryMahJongMsg), +0, +0, +sizeof(PMsgChowMsg), +0, +sizeof(PMsgFormClosedChowMsg), +0, +0, +0, +0, +0, +0, +sizeof(PMsgDeclareWashOutMsg), +sizeof(PMsgMahJongMsg), +0, +sizeof(PMsgPairMsg), +sizeof(PMsgFormClosedPairMsg), +0, +sizeof(PMsgShowTilesMsg), +sizeof(PMsgSpecialSetMsg), +sizeof(PMsgFormClosedSpecialSetMsg), +0, +0, +-sizeof(PMsgSetPlayerOptionMsg), +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +-sizeof(PMsgSetGameOptionMsg), +sizeof(PMsgQueryGameOptionMsg), +sizeof(PMsgListGameOptionsMsg), +0, +0, +0, +0, +0, +0, +0, +sizeof(PMsgChangeManagerMsg), +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +-sizeof(PMsgSendMessageMsg), +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +sizeof(PMsgSwapTileMsg), +}; + +int pmsg_size_of(PlayerMsgType t) { return pmsg_size[t]; } + +PMsgMsg *pmsg_deepcopy(PMsgMsg *m) { + PMsgMsg *n; + int size; + char *mc,*nc; + + size = pmsg_size_of(m->type); + if ( size < 0 ) size *= -1; + n = (PMsgMsg *)malloc(size); + if ( ! n ) return n; + + memcpy((void *)n,(const void *)m,size); + switch ( m->type ) { + case PMsgNewAuthInfo: + mc = ((PMsgNewAuthInfoMsg *)m)->authdata; + if ( mc ) { + nc = (char *)malloc(strlen(mc)+1); + if ( ! nc ) return NULL; + strcpy(nc,mc); + } else { + nc = NULL; + } + ((PMsgNewAuthInfoMsg *)n)->authdata = nc; + break; + case PMsgAuthInfo: + mc = ((PMsgAuthInfoMsg *)m)->authdata; + if ( mc ) { + nc = (char *)malloc(strlen(mc)+1); + if ( ! nc ) return NULL; + strcpy(nc,mc); + } else { + nc = NULL; + } + ((PMsgAuthInfoMsg *)n)->authdata = nc; + break; + case PMsgSendMessage: + mc = ((PMsgSendMessageMsg *)m)->text; + if ( mc ) { + nc = (char *)malloc(strlen(mc)+1); + if ( ! nc ) return NULL; + strcpy(nc,mc); + } else { + nc = NULL; + } + ((PMsgSendMessageMsg *)n)->text = nc; + break; + case PMsgSetGameOption: + mc = ((PMsgSetGameOptionMsg *)m)->optvalue; + if ( mc ) { + nc = (char *)malloc(strlen(mc)+1); + if ( ! nc ) return NULL; + strcpy(nc,mc); + } else { + nc = NULL; + } + ((PMsgSetGameOptionMsg *)n)->optvalue = nc; + break; + case PMsgSaveState: + mc = ((PMsgSaveStateMsg *)m)->filename; + if ( mc ) { + nc = (char *)malloc(strlen(mc)+1); + if ( ! nc ) return NULL; + strcpy(nc,mc); + } else { + nc = NULL; + } + ((PMsgSaveStateMsg *)n)->filename = nc; + break; + case PMsgSetPlayerOption: + mc = ((PMsgSetPlayerOptionMsg *)m)->text; + if ( mc ) { + nc = (char *)malloc(strlen(mc)+1); + if ( ! nc ) return NULL; + strcpy(nc,mc); + } else { + nc = NULL; + } + ((PMsgSetPlayerOptionMsg *)n)->text = nc; + break; + case PMsgLoadState: + mc = ((PMsgLoadStateMsg *)m)->filename; + if ( mc ) { + nc = (char *)malloc(strlen(mc)+1); + if ( ! nc ) return NULL; + strcpy(nc,mc); + } else { + nc = NULL; + } + ((PMsgLoadStateMsg *)n)->filename = nc; + break; + case PMsgRequestPause: + mc = ((PMsgRequestPauseMsg *)m)->reason; + if ( mc ) { + nc = (char *)malloc(strlen(mc)+1); + if ( ! nc ) return NULL; + strcpy(nc,mc); + } else { + nc = NULL; + } + ((PMsgRequestPauseMsg *)n)->reason = nc; + break; + case PMsgConnect: + mc = ((PMsgConnectMsg *)m)->name; + if ( mc ) { + nc = (char *)malloc(strlen(mc)+1); + if ( ! nc ) return NULL; + strcpy(nc,mc); + } else { + nc = NULL; + } + ((PMsgConnectMsg *)n)->name = nc; + break; + default: + ; + } + return n; +} + +void pmsg_deepfree(PMsgMsg *m) { + switch ( m->type ) { + case PMsgNewAuthInfo: + if ( ((PMsgNewAuthInfoMsg *)m)->authdata ) + free((void *)((PMsgNewAuthInfoMsg *)m)->authdata); + break; + case PMsgAuthInfo: + if ( ((PMsgAuthInfoMsg *)m)->authdata ) + free((void *)((PMsgAuthInfoMsg *)m)->authdata); + break; + case PMsgSendMessage: + if ( ((PMsgSendMessageMsg *)m)->text ) + free((void *)((PMsgSendMessageMsg *)m)->text); + break; + case PMsgSetGameOption: + if ( ((PMsgSetGameOptionMsg *)m)->optvalue ) + free((void *)((PMsgSetGameOptionMsg *)m)->optvalue); + break; + case PMsgSaveState: + if ( ((PMsgSaveStateMsg *)m)->filename ) + free((void *)((PMsgSaveStateMsg *)m)->filename); + break; + case PMsgSetPlayerOption: + if ( ((PMsgSetPlayerOptionMsg *)m)->text ) + free((void *)((PMsgSetPlayerOptionMsg *)m)->text); + break; + case PMsgLoadState: + if ( ((PMsgLoadStateMsg *)m)->filename ) + free((void *)((PMsgLoadStateMsg *)m)->filename); + break; + case PMsgRequestPause: + if ( ((PMsgRequestPauseMsg *)m)->reason ) + free((void *)((PMsgRequestPauseMsg *)m)->reason); + break; + case PMsgConnect: + if ( ((PMsgConnectMsg *)m)->name ) + free((void *)((PMsgConnectMsg *)m)->name); + break; + default: + ; + } + free((void *)m); +} + --- /dev/null +++ b/pmsg_union.h @@ -0,0 +1,39 @@ +typedef union _PMsgUnion { + /* Note that this type field relies on the fact that all + messages have type as their first field */ +PlayerMsgType type; +PMsgSaveStateMsg savestate; +PMsgLoadStateMsg loadstate; +PMsgConnectMsg connect; +PMsgRequestReconnectMsg requestreconnect; +PMsgAuthInfoMsg authinfo; +PMsgNewAuthInfoMsg newauthinfo; +PMsgDisconnectMsg disconnect; +PMsgDeclareSpecialMsg declarespecial; +PMsgRequestPauseMsg requestpause; +PMsgReadyMsg ready; +PMsgDiscardMsg discard; +PMsgNoClaimMsg noclaim; +PMsgPungMsg pung; +PMsgFormClosedPungMsg formclosedpung; +PMsgKongMsg kong; +PMsgDeclareClosedKongMsg declareclosedkong; +PMsgAddToPungMsg addtopung; +PMsgQueryMahJongMsg querymahjong; +PMsgChowMsg chow; +PMsgFormClosedChowMsg formclosedchow; +PMsgDeclareWashOutMsg declarewashout; +PMsgMahJongMsg mahjong; +PMsgPairMsg pair; +PMsgFormClosedPairMsg formclosedpair; +PMsgShowTilesMsg showtiles; +PMsgSpecialSetMsg specialset; +PMsgFormClosedSpecialSetMsg formclosedspecialset; +PMsgSetPlayerOptionMsg setplayeroption; +PMsgSetGameOptionMsg setgameoption; +PMsgQueryGameOptionMsg querygameoption; +PMsgListGameOptionsMsg listgameoptions; +PMsgChangeManagerMsg changemanager; +PMsgSendMessageMsg sendmessage; +PMsgSwapTileMsg swaptile; +} PMsgUnion; --- /dev/null +++ b/protocol-enums.c @@ -0,0 +1,268 @@ +char *protocol_print_GameOption(const GameOption t) { + if ( t == GOUnknown ) return "Unknown"; + if ( t == GOTimeout ) return "Timeout"; + if ( t == GOTimeoutGrace ) return "TimeoutGrace"; + if ( t == GOScoreLimit ) return "ScoreLimit"; + if ( t == GONoLimit ) return "NoLimit"; + if ( t == GOMahJongScore ) return "MahJongScore"; + if ( t == GOSevenPairs ) return "SevenPairs"; + if ( t == GOSevenPairsVal ) return "SevenPairsVal"; + if ( t == GOFlowers ) return "Flowers"; + if ( t == GOFlowersLoose ) return "FlowersLoose"; + if ( t == GOFlowersOwnEach ) return "FlowersOwnEach"; + if ( t == GOFlowersOwnBoth ) return "FlowersOwnBoth"; + if ( t == GOFlowersBouquet ) return "FlowersBouquet"; + if ( t == GODeadWall ) return "DeadWall"; + if ( t == GODeadWall16 ) return "DeadWall16"; + if ( t == GOConcealedFully ) return "ConcealedFully"; + if ( t == GOConcealedAlmost ) return "ConcealedAlmost"; + if ( t == GOLosersPurity ) return "LosersPurity"; + if ( t == GOKongHas3Types ) return "KongHas3Types"; + if ( t == GOEastDoubles ) return "EastDoubles"; + if ( t == GOLosersSettle ) return "LosersSettle"; + if ( t == GODiscDoubles ) return "DiscDoubles"; + if ( t == GOShowOnWashout ) return "ShowOnWashout"; + if ( t == GONumRounds ) return "NumRounds"; + if ( t == GOEnd ) return "End"; + return (char *)0; +} + +GameOption protocol_scan_GameOption(const char *s) { + if ( strcmp(s,"Unknown") == 0 ) return GOUnknown; + if ( strcmp(s,"Timeout") == 0 ) return GOTimeout; + if ( strcmp(s,"TimeoutGrace") == 0 ) return GOTimeoutGrace; + if ( strcmp(s,"ScoreLimit") == 0 ) return GOScoreLimit; + if ( strcmp(s,"NoLimit") == 0 ) return GONoLimit; + if ( strcmp(s,"MahJongScore") == 0 ) return GOMahJongScore; + if ( strcmp(s,"SevenPairs") == 0 ) return GOSevenPairs; + if ( strcmp(s,"SevenPairsVal") == 0 ) return GOSevenPairsVal; + if ( strcmp(s,"Flowers") == 0 ) return GOFlowers; + if ( strcmp(s,"FlowersLoose") == 0 ) return GOFlowersLoose; + if ( strcmp(s,"FlowersOwnEach") == 0 ) return GOFlowersOwnEach; + if ( strcmp(s,"FlowersOwnBoth") == 0 ) return GOFlowersOwnBoth; + if ( strcmp(s,"FlowersBouquet") == 0 ) return GOFlowersBouquet; + if ( strcmp(s,"DeadWall") == 0 ) return GODeadWall; + if ( strcmp(s,"DeadWall16") == 0 ) return GODeadWall16; + if ( strcmp(s,"ConcealedFully") == 0 ) return GOConcealedFully; + if ( strcmp(s,"ConcealedAlmost") == 0 ) return GOConcealedAlmost; + if ( strcmp(s,"LosersPurity") == 0 ) return GOLosersPurity; + if ( strcmp(s,"KongHas3Types") == 0 ) return GOKongHas3Types; + if ( strcmp(s,"EastDoubles") == 0 ) return GOEastDoubles; + if ( strcmp(s,"LosersSettle") == 0 ) return GOLosersSettle; + if ( strcmp(s,"DiscDoubles") == 0 ) return GODiscDoubles; + if ( strcmp(s,"ShowOnWashout") == 0 ) return GOShowOnWashout; + if ( strcmp(s,"NumRounds") == 0 ) return GONumRounds; + if ( strcmp(s,"End") == 0 ) return GOEnd; + return -1; +} + + +char *protocol_print_GameOptionType(const GameOptionType t) { + if ( t == GOTBool ) return "bool"; + if ( t == GOTInt ) return "int"; + if ( t == GOTNat ) return "nat"; + if ( t == GOTScore ) return "score"; + if ( t == GOTString ) return "string"; + return (char *)0; +} + +GameOptionType protocol_scan_GameOptionType(const char *s) { + if ( strcmp(s,"bool") == 0 ) return GOTBool; + if ( strcmp(s,"int") == 0 ) return GOTInt; + if ( strcmp(s,"nat") == 0 ) return GOTNat; + if ( strcmp(s,"score") == 0 ) return GOTScore; + if ( strcmp(s,"string") == 0 ) return GOTString; + return -1; +} + + +char *protocol_print_ControllerMsgType(const ControllerMsgType t) { + if ( t == CMsgError ) return "CMsgError"; + if ( t == CMsgInfoTiles ) return "CMsgInfoTiles"; + if ( t == CMsgStateSaved ) return "CMsgStateSaved"; + if ( t == CMsgConnectReply ) return "CMsgConnectReply"; + if ( t == CMsgReconnect ) return "CMsgReconnect"; + if ( t == CMsgAuthReqd ) return "CMsgAuthReqd"; + if ( t == CMsgRedirect ) return "CMsgRedirect"; + if ( t == CMsgPlayer ) return "CMsgPlayer"; + if ( t == CMsgNewRound ) return "CMsgNewRound"; + if ( t == CMsgGame ) return "CMsgGame"; + if ( t == CMsgNewHand ) return "CMsgNewHand"; + if ( t == CMsgPlayerDeclaresSpecial ) return "CMsgPlayerDeclaresSpecial"; + if ( t == CMsgStartPlay ) return "CMsgStartPlay"; + if ( t == CMsgStopPlay ) return "CMsgStopPlay"; + if ( t == CMsgPause ) return "CMsgPause"; + if ( t == CMsgPlayerReady ) return "CMsgPlayerReady"; + if ( t == CMsgPlayerDraws ) return "CMsgPlayerDraws"; + if ( t == CMsgPlayerDrawsLoose ) return "CMsgPlayerDrawsLoose"; + if ( t == CMsgPlayerDiscards ) return "CMsgPlayerDiscards"; + if ( t == CMsgClaimDenied ) return "CMsgClaimDenied"; + if ( t == CMsgPlayerDoesntClaim ) return "CMsgPlayerDoesntClaim"; + if ( t == CMsgDangerousDiscard ) return "CMsgDangerousDiscard"; + if ( t == CMsgPlayerClaimsPung ) return "CMsgPlayerClaimsPung"; + if ( t == CMsgPlayerPungs ) return "CMsgPlayerPungs"; + if ( t == CMsgPlayerFormsClosedPung ) return "CMsgPlayerFormsClosedPung"; + if ( t == CMsgPlayerClaimsKong ) return "CMsgPlayerClaimsKong"; + if ( t == CMsgPlayerKongs ) return "CMsgPlayerKongs"; + if ( t == CMsgPlayerDeclaresClosedKong ) return "CMsgPlayerDeclaresClosedKong"; + if ( t == CMsgPlayerAddsToPung ) return "CMsgPlayerAddsToPung"; + if ( t == CMsgPlayerRobsKong ) return "CMsgPlayerRobsKong"; + if ( t == CMsgCanMahJong ) return "CMsgCanMahJong"; + if ( t == CMsgPlayerClaimsChow ) return "CMsgPlayerClaimsChow"; + if ( t == CMsgPlayerChows ) return "CMsgPlayerChows"; + if ( t == CMsgPlayerFormsClosedChow ) return "CMsgPlayerFormsClosedChow"; + if ( t == CMsgWashOut ) return "CMsgWashOut"; + if ( t == CMsgPlayerClaimsMahJong ) return "CMsgPlayerClaimsMahJong"; + if ( t == CMsgPlayerMahJongs ) return "CMsgPlayerMahJongs"; + if ( t == CMsgPlayerPairs ) return "CMsgPlayerPairs"; + if ( t == CMsgPlayerFormsClosedPair ) return "CMsgPlayerFormsClosedPair"; + if ( t == CMsgPlayerShowsTiles ) return "CMsgPlayerShowsTiles"; + if ( t == CMsgPlayerSpecialSet ) return "CMsgPlayerSpecialSet"; + if ( t == CMsgPlayerFormsClosedSpecialSet ) return "CMsgPlayerFormsClosedSpecialSet"; + if ( t == CMsgPlayerOptionSet ) return "CMsgPlayerOptionSet"; + if ( t == CMsgHandScore ) return "CMsgHandScore"; + if ( t == CMsgSettlement ) return "CMsgSettlement"; + if ( t == CMsgGameOver ) return "CMsgGameOver"; + if ( t == CMsgGameOption ) return "CMsgGameOption"; + if ( t == CMsgChangeManager ) return "CMsgChangeManager"; + if ( t == CMsgMessage ) return "CMsgMessage"; + if ( t == CMsgWall ) return "CMsgWall"; + if ( t == CMsgComment ) return "CMsgComment"; + if ( t == CMsgSwapTile ) return "CMsgSwapTile"; + return (char *)0; +} + +ControllerMsgType protocol_scan_ControllerMsgType(const char *s) { + if ( strcmp(s,"CMsgError") == 0 ) return CMsgError; + if ( strcmp(s,"CMsgInfoTiles") == 0 ) return CMsgInfoTiles; + if ( strcmp(s,"CMsgStateSaved") == 0 ) return CMsgStateSaved; + if ( strcmp(s,"CMsgConnectReply") == 0 ) return CMsgConnectReply; + if ( strcmp(s,"CMsgReconnect") == 0 ) return CMsgReconnect; + if ( strcmp(s,"CMsgAuthReqd") == 0 ) return CMsgAuthReqd; + if ( strcmp(s,"CMsgRedirect") == 0 ) return CMsgRedirect; + if ( strcmp(s,"CMsgPlayer") == 0 ) return CMsgPlayer; + if ( strcmp(s,"CMsgNewRound") == 0 ) return CMsgNewRound; + if ( strcmp(s,"CMsgGame") == 0 ) return CMsgGame; + if ( strcmp(s,"CMsgNewHand") == 0 ) return CMsgNewHand; + if ( strcmp(s,"CMsgPlayerDeclaresSpecial") == 0 ) return CMsgPlayerDeclaresSpecial; + if ( strcmp(s,"CMsgStartPlay") == 0 ) return CMsgStartPlay; + if ( strcmp(s,"CMsgStopPlay") == 0 ) return CMsgStopPlay; + if ( strcmp(s,"CMsgPause") == 0 ) return CMsgPause; + if ( strcmp(s,"CMsgPlayerReady") == 0 ) return CMsgPlayerReady; + if ( strcmp(s,"CMsgPlayerDraws") == 0 ) return CMsgPlayerDraws; + if ( strcmp(s,"CMsgPlayerDrawsLoose") == 0 ) return CMsgPlayerDrawsLoose; + if ( strcmp(s,"CMsgPlayerDiscards") == 0 ) return CMsgPlayerDiscards; + if ( strcmp(s,"CMsgClaimDenied") == 0 ) return CMsgClaimDenied; + if ( strcmp(s,"CMsgPlayerDoesntClaim") == 0 ) return CMsgPlayerDoesntClaim; + if ( strcmp(s,"CMsgDangerousDiscard") == 0 ) return CMsgDangerousDiscard; + if ( strcmp(s,"CMsgPlayerClaimsPung") == 0 ) return CMsgPlayerClaimsPung; + if ( strcmp(s,"CMsgPlayerPungs") == 0 ) return CMsgPlayerPungs; + if ( strcmp(s,"CMsgPlayerFormsClosedPung") == 0 ) return CMsgPlayerFormsClosedPung; + if ( strcmp(s,"CMsgPlayerClaimsKong") == 0 ) return CMsgPlayerClaimsKong; + if ( strcmp(s,"CMsgPlayerKongs") == 0 ) return CMsgPlayerKongs; + if ( strcmp(s,"CMsgPlayerDeclaresClosedKong") == 0 ) return CMsgPlayerDeclaresClosedKong; + if ( strcmp(s,"CMsgPlayerAddsToPung") == 0 ) return CMsgPlayerAddsToPung; + if ( strcmp(s,"CMsgPlayerRobsKong") == 0 ) return CMsgPlayerRobsKong; + if ( strcmp(s,"CMsgCanMahJong") == 0 ) return CMsgCanMahJong; + if ( strcmp(s,"CMsgPlayerClaimsChow") == 0 ) return CMsgPlayerClaimsChow; + if ( strcmp(s,"CMsgPlayerChows") == 0 ) return CMsgPlayerChows; + if ( strcmp(s,"CMsgPlayerFormsClosedChow") == 0 ) return CMsgPlayerFormsClosedChow; + if ( strcmp(s,"CMsgWashOut") == 0 ) return CMsgWashOut; + if ( strcmp(s,"CMsgPlayerClaimsMahJong") == 0 ) return CMsgPlayerClaimsMahJong; + if ( strcmp(s,"CMsgPlayerMahJongs") == 0 ) return CMsgPlayerMahJongs; + if ( strcmp(s,"CMsgPlayerPairs") == 0 ) return CMsgPlayerPairs; + if ( strcmp(s,"CMsgPlayerFormsClosedPair") == 0 ) return CMsgPlayerFormsClosedPair; + if ( strcmp(s,"CMsgPlayerShowsTiles") == 0 ) return CMsgPlayerShowsTiles; + if ( strcmp(s,"CMsgPlayerSpecialSet") == 0 ) return CMsgPlayerSpecialSet; + if ( strcmp(s,"CMsgPlayerFormsClosedSpecialSet") == 0 ) return CMsgPlayerFormsClosedSpecialSet; + if ( strcmp(s,"CMsgPlayerOptionSet") == 0 ) return CMsgPlayerOptionSet; + if ( strcmp(s,"CMsgHandScore") == 0 ) return CMsgHandScore; + if ( strcmp(s,"CMsgSettlement") == 0 ) return CMsgSettlement; + if ( strcmp(s,"CMsgGameOver") == 0 ) return CMsgGameOver; + if ( strcmp(s,"CMsgGameOption") == 0 ) return CMsgGameOption; + if ( strcmp(s,"CMsgChangeManager") == 0 ) return CMsgChangeManager; + if ( strcmp(s,"CMsgMessage") == 0 ) return CMsgMessage; + if ( strcmp(s,"CMsgWall") == 0 ) return CMsgWall; + if ( strcmp(s,"CMsgComment") == 0 ) return CMsgComment; + if ( strcmp(s,"CMsgSwapTile") == 0 ) return CMsgSwapTile; + return -1; +} + + +char *protocol_print_PlayerMsgType(const PlayerMsgType t) { + if ( t == PMsgSaveState ) return "PMsgSaveState"; + if ( t == PMsgLoadState ) return "PMsgLoadState"; + if ( t == PMsgConnect ) return "PMsgConnect"; + if ( t == PMsgRequestReconnect ) return "PMsgRequestReconnect"; + if ( t == PMsgAuthInfo ) return "PMsgAuthInfo"; + if ( t == PMsgNewAuthInfo ) return "PMsgNewAuthInfo"; + if ( t == PMsgDisconnect ) return "PMsgDisconnect"; + if ( t == PMsgDeclareSpecial ) return "PMsgDeclareSpecial"; + if ( t == PMsgRequestPause ) return "PMsgRequestPause"; + if ( t == PMsgReady ) return "PMsgReady"; + if ( t == PMsgDiscard ) return "PMsgDiscard"; + if ( t == PMsgNoClaim ) return "PMsgNoClaim"; + if ( t == PMsgPung ) return "PMsgPung"; + if ( t == PMsgFormClosedPung ) return "PMsgFormClosedPung"; + if ( t == PMsgKong ) return "PMsgKong"; + if ( t == PMsgDeclareClosedKong ) return "PMsgDeclareClosedKong"; + if ( t == PMsgAddToPung ) return "PMsgAddToPung"; + if ( t == PMsgQueryMahJong ) return "PMsgQueryMahJong"; + if ( t == PMsgChow ) return "PMsgChow"; + if ( t == PMsgFormClosedChow ) return "PMsgFormClosedChow"; + if ( t == PMsgDeclareWashOut ) return "PMsgDeclareWashOut"; + if ( t == PMsgMahJong ) return "PMsgMahJong"; + if ( t == PMsgPair ) return "PMsgPair"; + if ( t == PMsgFormClosedPair ) return "PMsgFormClosedPair"; + if ( t == PMsgShowTiles ) return "PMsgShowTiles"; + if ( t == PMsgSpecialSet ) return "PMsgSpecialSet"; + if ( t == PMsgFormClosedSpecialSet ) return "PMsgFormClosedSpecialSet"; + if ( t == PMsgSetPlayerOption ) return "PMsgSetPlayerOption"; + if ( t == PMsgSetGameOption ) return "PMsgSetGameOption"; + if ( t == PMsgQueryGameOption ) return "PMsgQueryGameOption"; + if ( t == PMsgListGameOptions ) return "PMsgListGameOptions"; + if ( t == PMsgChangeManager ) return "PMsgChangeManager"; + if ( t == PMsgSendMessage ) return "PMsgSendMessage"; + if ( t == PMsgSwapTile ) return "PMsgSwapTile"; + return (char *)0; +} + +PlayerMsgType protocol_scan_PlayerMsgType(const char *s) { + if ( strcmp(s,"PMsgSaveState") == 0 ) return PMsgSaveState; + if ( strcmp(s,"PMsgLoadState") == 0 ) return PMsgLoadState; + if ( strcmp(s,"PMsgConnect") == 0 ) return PMsgConnect; + if ( strcmp(s,"PMsgRequestReconnect") == 0 ) return PMsgRequestReconnect; + if ( strcmp(s,"PMsgAuthInfo") == 0 ) return PMsgAuthInfo; + if ( strcmp(s,"PMsgNewAuthInfo") == 0 ) return PMsgNewAuthInfo; + if ( strcmp(s,"PMsgDisconnect") == 0 ) return PMsgDisconnect; + if ( strcmp(s,"PMsgDeclareSpecial") == 0 ) return PMsgDeclareSpecial; + if ( strcmp(s,"PMsgRequestPause") == 0 ) return PMsgRequestPause; + if ( strcmp(s,"PMsgReady") == 0 ) return PMsgReady; + if ( strcmp(s,"PMsgDiscard") == 0 ) return PMsgDiscard; + if ( strcmp(s,"PMsgNoClaim") == 0 ) return PMsgNoClaim; + if ( strcmp(s,"PMsgPung") == 0 ) return PMsgPung; + if ( strcmp(s,"PMsgFormClosedPung") == 0 ) return PMsgFormClosedPung; + if ( strcmp(s,"PMsgKong") == 0 ) return PMsgKong; + if ( strcmp(s,"PMsgDeclareClosedKong") == 0 ) return PMsgDeclareClosedKong; + if ( strcmp(s,"PMsgAddToPung") == 0 ) return PMsgAddToPung; + if ( strcmp(s,"PMsgQueryMahJong") == 0 ) return PMsgQueryMahJong; + if ( strcmp(s,"PMsgChow") == 0 ) return PMsgChow; + if ( strcmp(s,"PMsgFormClosedChow") == 0 ) return PMsgFormClosedChow; + if ( strcmp(s,"PMsgDeclareWashOut") == 0 ) return PMsgDeclareWashOut; + if ( strcmp(s,"PMsgMahJong") == 0 ) return PMsgMahJong; + if ( strcmp(s,"PMsgPair") == 0 ) return PMsgPair; + if ( strcmp(s,"PMsgFormClosedPair") == 0 ) return PMsgFormClosedPair; + if ( strcmp(s,"PMsgShowTiles") == 0 ) return PMsgShowTiles; + if ( strcmp(s,"PMsgSpecialSet") == 0 ) return PMsgSpecialSet; + if ( strcmp(s,"PMsgFormClosedSpecialSet") == 0 ) return PMsgFormClosedSpecialSet; + if ( strcmp(s,"PMsgSetPlayerOption") == 0 ) return PMsgSetPlayerOption; + if ( strcmp(s,"PMsgSetGameOption") == 0 ) return PMsgSetGameOption; + if ( strcmp(s,"PMsgQueryGameOption") == 0 ) return PMsgQueryGameOption; + if ( strcmp(s,"PMsgListGameOptions") == 0 ) return PMsgListGameOptions; + if ( strcmp(s,"PMsgChangeManager") == 0 ) return PMsgChangeManager; + if ( strcmp(s,"PMsgSendMessage") == 0 ) return PMsgSendMessage; + if ( strcmp(s,"PMsgSwapTile") == 0 ) return PMsgSwapTile; + return -1; +} + + --- /dev/null +++ b/protocol-enums.h @@ -0,0 +1,12 @@ +char *protocol_print_GameOption(const GameOption t); +GameOption protocol_scan_GameOption(const char *s); + +char *protocol_print_GameOptionType(const GameOptionType t); +GameOptionType protocol_scan_GameOptionType(const char *s); + +char *protocol_print_ControllerMsgType(const ControllerMsgType t); +ControllerMsgType protocol_scan_ControllerMsgType(const char *s); + +char *protocol_print_PlayerMsgType(const PlayerMsgType t); +PlayerMsgType protocol_scan_PlayerMsgType(const char *s); + --- /dev/null +++ b/tiles-enums.c @@ -0,0 +1,91 @@ +char *tiles_print_TileSuit(const TileSuit t) { + if ( t == BambooSuit ) return "BambooSuit"; + if ( t == CharacterSuit ) return "CharacterSuit"; + if ( t == CircleSuit ) return "CircleSuit"; + if ( t == WindSuit ) return "WindSuit"; + if ( t == DragonSuit ) return "DragonSuit"; + if ( t == FlowerSuit ) return "FlowerSuit"; + if ( t == SeasonSuit ) return "SeasonSuit"; + return (char *)0; +} + +TileSuit tiles_scan_TileSuit(const char *s) { + if ( strcmp(s,"BambooSuit") == 0 ) return BambooSuit; + if ( strcmp(s,"CharacterSuit") == 0 ) return CharacterSuit; + if ( strcmp(s,"CircleSuit") == 0 ) return CircleSuit; + if ( strcmp(s,"WindSuit") == 0 ) return WindSuit; + if ( strcmp(s,"DragonSuit") == 0 ) return DragonSuit; + if ( strcmp(s,"FlowerSuit") == 0 ) return FlowerSuit; + if ( strcmp(s,"SeasonSuit") == 0 ) return SeasonSuit; + return -1; +} + + +char *tiles_print_TileWind(const TileWind t) { + if ( t == UnknownWind ) return "UnknownWind"; + if ( t == EastWind ) return "EastWind"; + if ( t == SouthWind ) return "SouthWind"; + if ( t == WestWind ) return "WestWind"; + if ( t == NorthWind ) return "NorthWind"; + return (char *)0; +} + +TileWind tiles_scan_TileWind(const char *s) { + if ( strcmp(s,"UnknownWind") == 0 ) return UnknownWind; + if ( strcmp(s,"EastWind") == 0 ) return EastWind; + if ( strcmp(s,"SouthWind") == 0 ) return SouthWind; + if ( strcmp(s,"WestWind") == 0 ) return WestWind; + if ( strcmp(s,"NorthWind") == 0 ) return NorthWind; + return -1; +} + + +char *tiles_print_TileDragon(const TileDragon t) { + if ( t == RedDragon ) return "RedDragon"; + if ( t == WhiteDragon ) return "WhiteDragon"; + if ( t == GreenDragon ) return "GreenDragon"; + return (char *)0; +} + +TileDragon tiles_scan_TileDragon(const char *s) { + if ( strcmp(s,"RedDragon") == 0 ) return RedDragon; + if ( strcmp(s,"WhiteDragon") == 0 ) return WhiteDragon; + if ( strcmp(s,"GreenDragon") == 0 ) return GreenDragon; + return -1; +} + + +char *tiles_print_TileFlower(const TileFlower t) { + if ( t == Plum ) return "Plum"; + if ( t == Orchid ) return "Orchid"; + if ( t == Chrysanthemum ) return "Chrysanthemum"; + if ( t == Bamboo ) return "Bamboo"; + return (char *)0; +} + +TileFlower tiles_scan_TileFlower(const char *s) { + if ( strcmp(s,"Plum") == 0 ) return Plum; + if ( strcmp(s,"Orchid") == 0 ) return Orchid; + if ( strcmp(s,"Chrysanthemum") == 0 ) return Chrysanthemum; + if ( strcmp(s,"Bamboo") == 0 ) return Bamboo; + return -1; +} + + +char *tiles_print_TileSeason(const TileSeason t) { + if ( t == Spring ) return "Spring"; + if ( t == Summer ) return "Summer"; + if ( t == Autumn ) return "Autumn"; + if ( t == Winter ) return "Winter"; + return (char *)0; +} + +TileSeason tiles_scan_TileSeason(const char *s) { + if ( strcmp(s,"Spring") == 0 ) return Spring; + if ( strcmp(s,"Summer") == 0 ) return Summer; + if ( strcmp(s,"Autumn") == 0 ) return Autumn; + if ( strcmp(s,"Winter") == 0 ) return Winter; + return -1; +} + + --- /dev/null +++ b/tiles-enums.h @@ -0,0 +1,15 @@ +char *tiles_print_TileSuit(const TileSuit t); +TileSuit tiles_scan_TileSuit(const char *s); + +char *tiles_print_TileWind(const TileWind t); +TileWind tiles_scan_TileWind(const char *s); + +char *tiles_print_TileDragon(const TileDragon t); +TileDragon tiles_scan_TileDragon(const char *s); + +char *tiles_print_TileFlower(const TileFlower t); +TileFlower tiles_scan_TileFlower(const char *s); + +char *tiles_print_TileSeason(const TileSeason t); +TileSeason tiles_scan_TileSeason(const char *s); + debian/source/0000755000000000000000000000000011700427703010467 5ustar debian/source/format0000644000000000000000000000001411700427703011675 0ustar 3.0 (quilt) debian/mah-jong.desktop0000644000000000000000000000027311700427472012267 0ustar [Desktop Entry] Name=Mah-Jong GenericName=Classic Mahjong game Comment=Play classic Mahjong puzzle game Type=Application Exec=xmj Icon=mah-jong Terminal=false Categories=Game;BoardGame; debian/control0000644000000000000000000000150211700436640010570 0ustar Source: mah-jong Section: games Priority: optional Maintainer: Nicolas Boullis Build-Depends: debhelper (>= 8.0.0), libgtk2.0-dev Standards-Version: 3.9.2 Homepage: http://mahjong.julianbradfield.org/ Package: mah-jong Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Description: Original Mah-Jong game This is a set of programs to play the original Mah-Jong game: one server, one client for a human player and one client for an AI player. Hence the game can be played by 1 to 4 human players. . You should keep in mind that the original Mah-Jong game has nothing to do with the well-known solitaire game. (It merely uses the same set of tiles.) . If you like the game, please consider making a donation to the (upstream) author. Read /usr/share/doc/mah-jong/README.Debian for details. debian/rules0000755000000000000000000000333111700436704010250 0ustar #!/usr/bin/make -f # Sample debian/rules that uses debhelper. # GNU copyright 1997 to 1999 by Joey Hess. # Uncomment this to turn on verbose mode. #export DH_VERBOSE=1 ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) CCOPTIONS = "-O0 -Wall" else CCOPTIONS = "-O2 -Wall" endif new-upstream: cp version.h version.h.sav make distclean mv version.h.sav version.h make -f Makefile.in Makefile make EXTRA_INCLUDES="`pkg-config --cflags gtk+-2.0 | sed -e 's/-I/-isystem/g'`" depend rm Makefile.bak build: build-arch build-indep build-indep: # We have nothing to do. build-arch: build-stamp build-stamp: dh_testdir $(MAKE) CCOPTIONS=$(CCOPTIONS) CDEBUGFLAGS="-g" TILESETPATH=\""/usr/share/mah-jong"\" touch build-stamp clean: dh_testdir dh_testroot [ ! -f Makefile ] || $(MAKE) clean dh_clean install-arch: build-arch dh_testdir dh_testroot dh_prep dh_installdirs $(MAKE) install DESTDIR=$(CURDIR)/debian/mah-jong/ BINDIR=usr/games INSTPGMFLAGS= $(MAKE) install.man DESTDIR=$(CURDIR)/debian/mah-jong/ MANDIR=usr/share/man/man6 for tileset in fallbacktiles tiles-v1 tiles-numbered tiles-small; do \ install -d $(CURDIR)/debian/mah-jong/usr/share/mah-jong/$${tileset}; \ install -m 644 $${tileset}/* $(CURDIR)/debian/mah-jong/usr/share/mah-jong/$${tileset}; \ done binary-indep: # We have nothing to do. binary-arch: build-arch install-arch dh_testdir dh_testroot dh_installdocs dh_installmenu dh_install debian/mah-jong.desktop usr/share/applications dh_installchangelogs ChangeLog dh_strip dh_compress dh_fixperms dh_installdeb dh_shlibdeps dh_gencontrol dh_md5sums dh_builddeb binary: binary-indep binary-arch .PHONY: build build-indep build-arch clean binary-indep binary-arch binary install-arch configure debian/watch0000644000000000000000000000013511700427472010222 0ustar version=3 http://mahjong.julianbradfield.org/Source/mj-([0-9.]*)-src\.tar\.gz debian uupdate debian/compat0000644000000000000000000000000211700436623010366 0ustar 8 debian/changelog0000644000000000000000000001700211700437076011045 0ustar mah-jong (1.11-2) unstable; urgency=low * Switch to dpkg-source 3.0 (quilt) format. * Split the big monolithic patch into several patches managed with quilt. * debian/control: Add a Homepage field. * debian/compat: Switch to debhelper compatibility version 8. - debian/control: Update the Build-Depends accordingly. - debian/rules: No need to manually remove build-stamp and any more in the clean target. - debian/rules: Replace the call to "dh_clean -k" (deprecated) with a call to dh_prep. -- Nicolas Boullis Tue, 03 Jan 2012 00:31:07 +0100 mah-jong (1.11-1) unstable; urgency=low * New upstream release. * xmj.man: remove an URL that appeared illegitimately in the manpage. * Makefile.in, Makefile: Add -lm to GUILIBS to ensure xmj builds properly with binutils-gold. Thanks to Peter Fritzsche for pointing the problem. (Closes: #555582) * debian/rules, Makefile: Exclude the header files for gtk from the dependencies hardcoded into the Makefile. This is necessary because the path of a few of those header files is now architecture-dependant. Thanks to peter green for pointing the problem and for suggesting a patch. (Closes: #651585) * debian/rules: add targets build-arch and build-indep, as suggested by lintian. * debian/watch: Update, thanks to Yan Morin. (Closes: #550785) * debian/README.Debian: Update the URL for donations to the author. * debian/control: Add ${misc:Depends} to the Depends field, as suggested by lintian. * debian/control: Bump Standards-Version: to 3.9.2. * debian/control: Remove the article at the beginning of the description. -- Nicolas Boullis Thu, 22 Dec 2011 16:14:56 +0100 mah-jong (1.10-1) unstable; urgency=low * The "Thanks Barry for all your work" release. * Put the manpages back in section 6. * Run debian/rules new-upstream. * Make the list of required shared libraries for GTK explicit, and don't link with unneeded shared libraries. -- Nicolas Boullis Fri, 07 Aug 2009 22:56:54 +0200 mah-jong (1.10-0.1) unstable; urgency=low * Non-maintainer upload. * New upstream release. (Closes: #523729). + Builds with GTK2. (Closes: #515348). + Update libgtk1.2-dev build-dep to libgtk2.0-dev. * Add .desktop file. (Closes: #493748). * Replace pwd with $(CURDIR) in rules. * Bump debhelper and compat to 5. * Bump Standards Version to 3.8.2. (No changes needed). -- Barry deFreese Tue, 28 Jul 2009 12:44:50 -0400 mah-jong (1.8-1) unstable; urgency=low * New upstream release. * Don't strip on program installation; rely on dh_strip to strip unless requested by the nostrip build option. (Closes: #437549) * Don't ignore failures of "make clean", as suggested by lintian. -- Nicolas Boullis Wed, 5 Sep 2007 00:55:41 +0200 mah-jong (1.7-2) unstable; urgency=low * Don't link with unneeded shared libraries. -- Nicolas Boullis Mon, 30 Oct 2006 22:34:02 +0100 mah-jong (1.7-1) unstable; urgency=low * The "upstream is working on GTK2 support" release. * New upstream release. * Switch to the debhelper compatibility version 4. * Bump Standards-Version: to 3.7.2. -- Nicolas Boullis Mon, 8 May 2006 22:34:58 +0200 mah-jong (1.6.3-2) unstable; urgency=low * Remove the old http://www.dcs.ed.ac.uk/home/jcb/MahJong/ URL from xmj's manpage since it is not available anymore (and leads to a "cannot adjust line" warning by groff). * Bump Standards-Version: to 3.6.2. -- Nicolas Boullis Sun, 20 Nov 2005 20:29:15 +0100 mah-jong (1.6.3-1) unstable; urgency=low * New upstream release. * Update changelog entry for 1.6.2-1 (about fixed DOS). -- Nicolas Boullis Mon, 24 May 2004 02:13:34 +0200 mah-jong (1.6.2-1) unstable; urgency=low * New upstream release. - Fix DOS in mj-server by connecting with an empty name. (CAN-2004-0458) * Add missing quotes around strings in menu item; thanks to lintian for reporting the problem. * Fix a misplaced test in player.c . -- Nicolas Boullis Sat, 8 May 2004 14:49:02 +0200 mah-jong (1.6-1) unstable; urgency=low * New upstream release. -- Nicolas Boullis Sun, 12 Oct 2003 19:03:27 +0200 mah-jong (1.5.6-2) unstable; urgency=high * Urgency set to high because of security issues. * Fix remotely exploitable buffer overflows. (CAN-2003-0705) * Fix denial of service due to broken handling of escaping. (CAN-2003-0706) * Fix handling of escaping. * Remove unused and potentially dangerous code in proto-encode-msg.pl and proto-decode-msg.pl. * Bump Standards-Version: to 3.6.1. -- Nicolas Boullis Sun, 7 Sep 2003 22:29:46 +0200 mah-jong (1.5.6-1) unstable; urgency=low * New upstream release. * Bump Standards-Version: to 3.6.0. -- Nicolas Boullis Wed, 16 Jul 2003 18:42:28 +0200 mah-jong (1.5.5-2) unstable; urgency=low * Fixed long description thanks to Colin Watson. * Bump Standards-Version: to 3.5.10. -- Nicolas Boullis Sun, 25 May 2003 02:47:18 +0200 mah-jong (1.5.5-1) unstable; urgency=low * New upstream release. (1.5.4 skipped.) * Write a new "new-upstream" target for debian/rules to rebuild the auto-generated files. -- Nicolas Boullis Fri, 11 Apr 2003 22:48:08 +0200 mah-jong (1.5.3-1) unstable; urgency=low * The "upstream is really too fast for me" release. * New upstream release. * Rebuild the auto-generated program files. Because I forgot to do this, xmj was complaining about "Unknown option"... * Fix the section reported in xmj.6 (change it from 1 to 6). -- Nicolas Boullis Tue, 8 Apr 2003 22:46:06 +0200 mah-jong (1.5.1-1) unstable; urgency=low * New upstream release. * Add debian/watch file to ease upgrades. -- Nicolas Boullis Mon, 17 Mar 2003 02:05:46 +0100 mah-jong (1.5-1) unstable; urgency=low * New upstream release. * Include the tilesets provided by upstream in the package. * Bump Standards-Version: to 3.5.9. -- Nicolas Boullis Sun, 16 Mar 2003 21:58:07 +0100 mah-jong (1.4.1-1) unstable; urgency=low * New upstream release. * New maintainer email. * Removed obsolete "local variables" from changelog. -- Nicolas Boullis Wed, 28 Aug 2002 00:16:32 +0200 mah-jong (1.4-1) unstable; urgency=low * New upstream release. -- Nicolas Boullis Tue, 2 Apr 2002 01:30:12 +0200 mah-jong (1.3.2-1) unstable; urgency=low * New upstream release. -- Nicolas Boullis Sun, 24 Feb 2002 18:06:49 +0100 mah-jong (1.3.1-1) unstable; urgency=low * New upstream release. -- Nicolas Boullis Wed, 9 Jan 2002 20:07:52 +0100 mah-jong (1.3-1) unstable; urgency=low * New upstream version. -- Nicolas Boullis Sat, 5 Jan 2002 01:01:12 +0100 mah-jong (1.2.3-2) unstable; urgency=low * Corrected the inclusion of the upstream CHANGES and ChangeLog files. -- Nicolas Boullis Sat, 15 Dec 2001 20:39:26 +0100 mah-jong (1.2.3-1) unstable; urgency=low * Initial Release. (Closes: #123146) * Added a missing #include in sysdep.h. * Corrected section for manpages. -- Nicolas Boullis Mon, 10 Dec 2001 01:21:40 +0100 debian/menu0000644000000000000000000000014111700427472010055 0ustar ?package(mah-jong):needs="X11" section="Games/Card"\ title="Mah-Jong" command="/usr/games/xmj" debian/copyright0000644000000000000000000000107111700427472011124 0ustar This package was debianized by Nicolas Boullis on Thu, 1 Nov 2001 12:38:05 +0100. It was downloaded from http://www.stevens-bradfield.com/MahJong/Source/ Upstream Author: Julian Bradfield Copyright: This software is copyright (c) 2000-01 by Julian Bradfield. The programs are distributed under the GNU General Public License, version 2, or at your discretion any later version. On Debian systems, the complete text of the GNU General Public License can be found in /usr/share/common-licenses/GPL file. debian/README.Debian0000644000000000000000000000062511700427472011236 0ustar The upstream author has spent quite a lot of time programming this game, and he would like to have a little income for his work. So, if you like these programs, please consider making a (small) donation to the upstream author. To make a donation, please visit "http://mahjong.julianbradfield.org/makedon.cgi". Thanks for him. -- Nicolas Boullis , Wed, 18 Aug 2002 0:18:22 +0100 debian/docs0000644000000000000000000000004111700427472010040 0ustar README rules.txt use.txt CHANGES