├── .gitignore ├── AUTHORS ├── COPYING ├── ChangeLog ├── INSTALL ├── Makefile.am ├── NEWS ├── README ├── autogen.sh ├── config.h.in ├── config.rpath ├── configure.ac ├── doc ├── quest_enhancements.md └── scripting.md ├── git_version.am ├── git_version.sh ├── l10n ├── Makefile.am └── ship-strings.txt ├── legits.xml ├── m4 ├── ax_pthread.m4 ├── cflags.m4 └── iconv.m4 └── src ├── Makefile.am ├── admin.c ├── admin.h ├── bans.c ├── bans.h ├── block.c ├── block.h ├── clients.c ├── clients.h ├── commands.c ├── commands.h ├── flopen.c ├── gm.c ├── gm.h ├── items.c ├── items.h ├── list.c ├── lobby.c ├── lobby.h ├── mapdata.c ├── mapdata.h ├── packets.h ├── pidfile.c ├── player.h ├── pmtdata.c ├── pmtdata.h ├── ptdata.c ├── ptdata.h ├── quest_functions.c ├── quest_functions.h ├── quests.c ├── quests.h ├── rtdata.c ├── rtdata.h ├── scripts.c ├── scripts.h ├── ship.c ├── ship.h ├── ship_packets.c ├── ship_packets.h ├── ship_server.c ├── shipgate.c ├── shipgate.h ├── smutdata.c ├── smutdata.h ├── subcmd-dcnte.c ├── subcmd.c ├── subcmd.h ├── utils.c ├── utils.h ├── word_select-dc.h ├── word_select-gc.h ├── word_select-pc.h ├── word_select.c └── word_select.h /.gitignore: -------------------------------------------------------------------------------- 1 | # Git ignore list... 2 | 3 | # Compiled code. 4 | *.o 5 | *.exe 6 | *.so 7 | *.dylib 8 | *.dSYM 9 | *.a 10 | ship_server 11 | 12 | ship_config.xml 13 | 14 | # Autotools generated stuff and various other build process junk. 15 | Makefile 16 | Makefile.in 17 | aclocal.m4 18 | autom4te.cache 19 | compile 20 | config.guess 21 | config.log 22 | config.status 23 | config.sub 24 | configure 25 | depcomp 26 | install-sh 27 | libtool 28 | ltmain.sh 29 | libtool.m4 30 | ltoptions.m4 31 | ltsugar.m4 32 | ltversion.m4 33 | lt~obsolete.m4 34 | missing 35 | .deps 36 | .dirstamp 37 | src/version.h 38 | config.h 39 | stamp-h1 40 | -------------------------------------------------------------------------------- /AUTHORS: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sylverant/ship_server/6f492349bb4556e96a1986b74fe10bb97cfe2778/AUTHORS -------------------------------------------------------------------------------- /ChangeLog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sylverant/ship_server/6f492349bb4556e96a1986b74fe10bb97cfe2778/ChangeLog -------------------------------------------------------------------------------- /INSTALL: -------------------------------------------------------------------------------- 1 | Installation Instructions 2 | ************************* 3 | 4 | Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, 5 | 2006, 2007, 2008 Free Software Foundation, Inc. 6 | 7 | This file is free documentation; the Free Software Foundation gives 8 | unlimited permission to copy, distribute and modify it. 9 | 10 | Basic Installation 11 | ================== 12 | 13 | Briefly, the shell commands `./configure; make; make install' should 14 | configure, build, and install this package. The following 15 | more-detailed instructions are generic; see the `README' file for 16 | instructions specific to this package. 17 | 18 | The `configure' shell script attempts to guess correct values for 19 | various system-dependent variables used during compilation. It uses 20 | those values to create a `Makefile' in each directory of the package. 21 | It may also create one or more `.h' files containing system-dependent 22 | definitions. Finally, it creates a shell script `config.status' that 23 | you can run in the future to recreate the current configuration, and a 24 | file `config.log' containing compiler output (useful mainly for 25 | debugging `configure'). 26 | 27 | It can also use an optional file (typically called `config.cache' 28 | and enabled with `--cache-file=config.cache' or simply `-C') that saves 29 | the results of its tests to speed up reconfiguring. Caching is 30 | disabled by default to prevent problems with accidental use of stale 31 | cache files. 32 | 33 | If you need to do unusual things to compile the package, please try 34 | to figure out how `configure' could check whether to do them, and mail 35 | diffs or instructions to the address given in the `README' so they can 36 | be considered for the next release. If you are using the cache, and at 37 | some point `config.cache' contains results you don't want to keep, you 38 | may remove or edit it. 39 | 40 | The file `configure.ac' (or `configure.in') is used to create 41 | `configure' by a program called `autoconf'. You need `configure.ac' if 42 | you want to change it or regenerate `configure' using a newer version 43 | of `autoconf'. 44 | 45 | The simplest way to compile this package is: 46 | 47 | 1. `cd' to the directory containing the package's source code and type 48 | `./configure' to configure the package for your system. 49 | 50 | Running `configure' might take a while. While running, it prints 51 | some messages telling which features it is checking for. 52 | 53 | 2. Type `make' to compile the package. 54 | 55 | 3. Optionally, type `make check' to run any self-tests that come with 56 | the package. 57 | 58 | 4. Type `make install' to install the programs and any data files and 59 | documentation. 60 | 61 | 5. You can remove the program binaries and object files from the 62 | source code directory by typing `make clean'. To also remove the 63 | files that `configure' created (so you can compile the package for 64 | a different kind of computer), type `make distclean'. There is 65 | also a `make maintainer-clean' target, but that is intended mainly 66 | for the package's developers. If you use it, you may have to get 67 | all sorts of other programs in order to regenerate files that came 68 | with the distribution. 69 | 70 | 6. Often, you can also type `make uninstall' to remove the installed 71 | files again. 72 | 73 | Compilers and Options 74 | ===================== 75 | 76 | Some systems require unusual options for compilation or linking that 77 | the `configure' script does not know about. Run `./configure --help' 78 | for details on some of the pertinent environment variables. 79 | 80 | You can give `configure' initial values for configuration parameters 81 | by setting variables in the command line or in the environment. Here 82 | is an example: 83 | 84 | ./configure CC=c99 CFLAGS=-g LIBS=-lposix 85 | 86 | *Note Defining Variables::, for more details. 87 | 88 | Compiling For Multiple Architectures 89 | ==================================== 90 | 91 | You can compile the package for more than one kind of computer at the 92 | same time, by placing the object files for each architecture in their 93 | own directory. To do this, you can use GNU `make'. `cd' to the 94 | directory where you want the object files and executables to go and run 95 | the `configure' script. `configure' automatically checks for the 96 | source code in the directory that `configure' is in and in `..'. 97 | 98 | With a non-GNU `make', it is safer to compile the package for one 99 | architecture at a time in the source code directory. After you have 100 | installed the package for one architecture, use `make distclean' before 101 | reconfiguring for another architecture. 102 | 103 | On MacOS X 10.5 and later systems, you can create libraries and 104 | executables that work on multiple system types--known as "fat" or 105 | "universal" binaries--by specifying multiple `-arch' options to the 106 | compiler but only a single `-arch' option to the preprocessor. Like 107 | this: 108 | 109 | ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ 110 | CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ 111 | CPP="gcc -E" CXXCPP="g++ -E" 112 | 113 | This is not guaranteed to produce working output in all cases, you 114 | may have to build one architecture at a time and combine the results 115 | using the `lipo' tool if you have problems. 116 | 117 | Installation Names 118 | ================== 119 | 120 | By default, `make install' installs the package's commands under 121 | `/usr/local/bin', include files under `/usr/local/include', etc. You 122 | can specify an installation prefix other than `/usr/local' by giving 123 | `configure' the option `--prefix=PREFIX'. 124 | 125 | You can specify separate installation prefixes for 126 | architecture-specific files and architecture-independent files. If you 127 | pass the option `--exec-prefix=PREFIX' to `configure', the package uses 128 | PREFIX as the prefix for installing programs and libraries. 129 | Documentation and other data files still use the regular prefix. 130 | 131 | In addition, if you use an unusual directory layout you can give 132 | options like `--bindir=DIR' to specify different values for particular 133 | kinds of files. Run `configure --help' for a list of the directories 134 | you can set and what kinds of files go in them. 135 | 136 | If the package supports it, you can cause programs to be installed 137 | with an extra prefix or suffix on their names by giving `configure' the 138 | option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. 139 | 140 | Optional Features 141 | ================= 142 | 143 | Some packages pay attention to `--enable-FEATURE' options to 144 | `configure', where FEATURE indicates an optional part of the package. 145 | They may also pay attention to `--with-PACKAGE' options, where PACKAGE 146 | is something like `gnu-as' or `x' (for the X Window System). The 147 | `README' should mention any `--enable-' and `--with-' options that the 148 | package recognizes. 149 | 150 | For packages that use the X Window System, `configure' can usually 151 | find the X include and library files automatically, but if it doesn't, 152 | you can use the `configure' options `--x-includes=DIR' and 153 | `--x-libraries=DIR' to specify their locations. 154 | 155 | Particular systems 156 | ================== 157 | 158 | On HP-UX, the default C compiler is not ANSI C compatible. If GNU 159 | CC is not installed, it is recommended to use the following options in 160 | order to use an ANSI C compiler: 161 | 162 | ./configure CC="cc -Ae" 163 | 164 | and if that doesn't work, install pre-built binaries of GCC for HP-UX. 165 | 166 | On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot 167 | parse its `' header file. The option `-nodtk' can be used as 168 | a workaround. If GNU CC is not installed, it is therefore recommended 169 | to try 170 | 171 | ./configure CC="cc" 172 | 173 | and if that doesn't work, try 174 | 175 | ./configure CC="cc -nodtk" 176 | 177 | Specifying the System Type 178 | ========================== 179 | 180 | There may be some features `configure' cannot figure out 181 | automatically, but needs to determine by the type of machine the package 182 | will run on. Usually, assuming the package is built to be run on the 183 | _same_ architectures, `configure' can figure that out, but if it prints 184 | a message saying it cannot guess the machine type, give it the 185 | `--build=TYPE' option. TYPE can either be a short name for the system 186 | type, such as `sun4', or a canonical name which has the form: 187 | 188 | CPU-COMPANY-SYSTEM 189 | 190 | where SYSTEM can have one of these forms: 191 | 192 | OS KERNEL-OS 193 | 194 | See the file `config.sub' for the possible values of each field. If 195 | `config.sub' isn't included in this package, then this package doesn't 196 | need to know the machine type. 197 | 198 | If you are _building_ compiler tools for cross-compiling, you should 199 | use the option `--target=TYPE' to select the type of system they will 200 | produce code for. 201 | 202 | If you want to _use_ a cross compiler, that generates code for a 203 | platform different from the build platform, you should specify the 204 | "host" platform (i.e., that on which the generated programs will 205 | eventually be run) with `--host=TYPE'. 206 | 207 | Sharing Defaults 208 | ================ 209 | 210 | If you want to set default values for `configure' scripts to share, 211 | you can create a site shell script called `config.site' that gives 212 | default values for variables like `CC', `cache_file', and `prefix'. 213 | `configure' looks for `PREFIX/share/config.site' if it exists, then 214 | `PREFIX/etc/config.site' if it exists. Or, you can set the 215 | `CONFIG_SITE' environment variable to the location of the site script. 216 | A warning: not all `configure' scripts look for a site script. 217 | 218 | Defining Variables 219 | ================== 220 | 221 | Variables not defined in a site shell script can be set in the 222 | environment passed to `configure'. However, some packages may run 223 | configure again during the build, and the customized values of these 224 | variables may be lost. In order to avoid this problem, you should set 225 | them in the `configure' command line, using `VAR=value'. For example: 226 | 227 | ./configure CC=/usr/local2/bin/gcc 228 | 229 | causes the specified `gcc' to be used as the C compiler (unless it is 230 | overridden in the site shell script). 231 | 232 | Unfortunately, this technique does not work for `CONFIG_SHELL' due to 233 | an Autoconf bug. Until the bug is fixed you can use this workaround: 234 | 235 | CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash 236 | 237 | `configure' Invocation 238 | ====================== 239 | 240 | `configure' recognizes the following options to control how it 241 | operates. 242 | 243 | `--help' 244 | `-h' 245 | Print a summary of all of the options to `configure', and exit. 246 | 247 | `--help=short' 248 | `--help=recursive' 249 | Print a summary of the options unique to this package's 250 | `configure', and exit. The `short' variant lists options used 251 | only in the top level, while the `recursive' variant lists options 252 | also present in any nested packages. 253 | 254 | `--version' 255 | `-V' 256 | Print the version of Autoconf used to generate the `configure' 257 | script, and exit. 258 | 259 | `--cache-file=FILE' 260 | Enable the cache: use and save the results of the tests in FILE, 261 | traditionally `config.cache'. FILE defaults to `/dev/null' to 262 | disable caching. 263 | 264 | `--config-cache' 265 | `-C' 266 | Alias for `--cache-file=config.cache'. 267 | 268 | `--quiet' 269 | `--silent' 270 | `-q' 271 | Do not print messages saying which checks are being made. To 272 | suppress all normal output, redirect it to `/dev/null' (any error 273 | messages will still be shown). 274 | 275 | `--srcdir=DIR' 276 | Look for the package's source code in directory DIR. Usually 277 | `configure' can determine that directory automatically. 278 | 279 | `--prefix=DIR' 280 | Use DIR as the installation prefix. *Note Installation Names:: 281 | for more details, including other options available for fine-tuning 282 | the installation locations. 283 | 284 | `--no-create' 285 | `-n' 286 | Run the configure checks, but stop before creating any output 287 | files. 288 | 289 | `configure' also accepts some other, not widely useful, options. Run 290 | `configure --help' for more details. 291 | 292 | -------------------------------------------------------------------------------- /Makefile.am: -------------------------------------------------------------------------------- 1 | # 2 | # This file is part of Sylverant PSO Server. 3 | # 4 | # Copyright (C) 2009, 2010, 2011, 2012, 2013, 2018, 2019, 2021 Lawrence Sebald 5 | # 6 | # This program is free software: you can redistribute it and/or modify 7 | # it under the terms of the GNU Affero General Public License version 3 8 | # as published by the Free Software Foundation. 9 | # 10 | # This program is distributed in the hope that it will be useful, 11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | # GNU Affero General Public License for more details. 14 | # 15 | # You should have received a copy of the GNU Affero General Public License 16 | # along with this program. If not, see . 17 | 18 | ACLOCAL_AMFLAGS = -I m4 19 | EXTRA_DIST = git_version.sh 20 | datarootdir = @datarootdir@ 21 | SUBDIRS = l10n src 22 | -------------------------------------------------------------------------------- /NEWS: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sylverant/ship_server/6f492349bb4556e96a1986b74fe10bb97cfe2778/NEWS -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sylverant/ship_server/6f492349bb4556e96a1986b74fe10bb97cfe2778/README -------------------------------------------------------------------------------- /autogen.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | libtoolize --install --copy && aclocal && autoheader && autoconf && automake --add-missing --copy 3 | 4 | -------------------------------------------------------------------------------- /config.h.in: -------------------------------------------------------------------------------- 1 | /* config.h.in. Generated from configure.ac by autoheader. */ 2 | 3 | /* Define if building universal (internal helper macro) */ 4 | #undef AC_APPLE_UNIVERSAL_BUILD 5 | 6 | /* Define if you want debugging turned on */ 7 | #undef DEBUG 8 | 9 | /* Define to 1 if you have the header file. */ 10 | #undef HAVE_ARPA_INET_H 11 | 12 | /* Define to 1 if you have the header file. */ 13 | #undef HAVE_BSD_LIBUTIL_H 14 | 15 | /* Define to 1 if you have the header file. */ 16 | #undef HAVE_DLFCN_H 17 | 18 | /* Define to 1 if you have the `getgrouplist' function. */ 19 | #undef HAVE_GETGROUPLIST 20 | 21 | /* Define to 1 if you have the `gethostname' function. */ 22 | #undef HAVE_GETHOSTNAME 23 | 24 | /* Define to 1 if you have the `gettimeofday' function. */ 25 | #undef HAVE_GETTIMEOFDAY 26 | 27 | /* Define to 1 if you have the header file. */ 28 | #undef HAVE_GRP_H 29 | 30 | /* Define if you have the iconv() function and it works. */ 31 | #undef HAVE_ICONV 32 | 33 | /* Define to 1 if you have the `inet_ntoa' function. */ 34 | #undef HAVE_INET_NTOA 35 | 36 | /* Define to 1 if you have the header file. */ 37 | #undef HAVE_INTTYPES_H 38 | 39 | /* Define to 1 if you have the `mini18n' library (-lmini18n). */ 40 | #undef HAVE_LIBMINI18N 41 | 42 | /* Define to 1 if you have the `psoarchive' library (-lpsoarchive). */ 43 | #undef HAVE_LIBPSOARCHIVE 44 | 45 | /* Define to 1 if you have the `sylverant' library (-lsylverant). */ 46 | #undef HAVE_LIBSYLVERANT 47 | 48 | /* Define to 1 if you have the header file. */ 49 | #undef HAVE_LIBUTIL_H 50 | 51 | /* Define to 1 if you have the `malloc' function. */ 52 | #undef HAVE_MALLOC 53 | 54 | /* Define to 1 if you have the header file. */ 55 | #undef HAVE_MATH_H 56 | 57 | /* Define to 1 if you have the `memmove' function. */ 58 | #undef HAVE_MEMMOVE 59 | 60 | /* Define to 1 if you have the `memset' function. */ 61 | #undef HAVE_MEMSET 62 | 63 | /* Define to 1 if you have the header file. */ 64 | #undef HAVE_NETDB_H 65 | 66 | /* Define to 1 if you have the header file. */ 67 | #undef HAVE_NETINET_IN_H 68 | 69 | /* Define to 1 if you have the header file. */ 70 | #undef HAVE_NETINET_TCP_H 71 | 72 | /* Define if you have POSIX threads libraries and header files. */ 73 | #undef HAVE_PTHREAD 74 | 75 | /* Define to 1 if you have the header file. */ 76 | #undef HAVE_PWD_H 77 | 78 | /* Define to 1 if you have the `realloc' function. */ 79 | #undef HAVE_REALLOC 80 | 81 | /* Define to 1 if you have the `select' function. */ 82 | #undef HAVE_SELECT 83 | 84 | /* Define to 1 if you have the `socket' function. */ 85 | #undef HAVE_SOCKET 86 | 87 | /* Define to 1 if you have the header file. */ 88 | #undef HAVE_STDINT_H 89 | 90 | /* Define to 1 if you have the header file. */ 91 | #undef HAVE_STDIO_H 92 | 93 | /* Define to 1 if you have the header file. */ 94 | #undef HAVE_STDLIB_H 95 | 96 | /* Define to 1 if you have the header file. */ 97 | #undef HAVE_STRINGS_H 98 | 99 | /* Define to 1 if you have the header file. */ 100 | #undef HAVE_STRING_H 101 | 102 | /* Define to 1 if you have the `strtoul' function. */ 103 | #undef HAVE_STRTOUL 104 | 105 | /* Define to 1 if you have the header file. */ 106 | #undef HAVE_SYS_SOCKET_H 107 | 108 | /* Define to 1 if you have the header file. */ 109 | #undef HAVE_SYS_STAT_H 110 | 111 | /* Define to 1 if you have the header file. */ 112 | #undef HAVE_SYS_TIME_H 113 | 114 | /* Define to 1 if you have the header file. */ 115 | #undef HAVE_SYS_TYPES_H 116 | 117 | /* Define to 1 if you have the header file. */ 118 | #undef HAVE_SYS_UTSNAME_H 119 | 120 | /* Define to 1 if you have the header file. */ 121 | #undef HAVE_UNISTD_H 122 | 123 | /* Define as const if the declaration of iconv() needs const. */ 124 | #undef ICONV_CONST 125 | 126 | /* Define to the sub-directory where libtool stores uninstalled libraries. */ 127 | #undef LT_OBJDIR 128 | 129 | /* Name of package */ 130 | #undef PACKAGE 131 | 132 | /* Define to the address where bug reports for this package should be sent. */ 133 | #undef PACKAGE_BUGREPORT 134 | 135 | /* Define to the full name of this package. */ 136 | #undef PACKAGE_NAME 137 | 138 | /* Define to the full name and version of this package. */ 139 | #undef PACKAGE_STRING 140 | 141 | /* Define to the one symbol short name of this package. */ 142 | #undef PACKAGE_TARNAME 143 | 144 | /* Define to the home page for this package. */ 145 | #undef PACKAGE_URL 146 | 147 | /* Define to the version of this package. */ 148 | #undef PACKAGE_VERSION 149 | 150 | /* Define to necessary symbol if this constant uses a non-standard name on 151 | your system. */ 152 | #undef PTHREAD_CREATE_JOINABLE 153 | 154 | /* The size of `double', as computed by sizeof. */ 155 | #undef SIZEOF_DOUBLE 156 | 157 | /* The size of `float', as computed by sizeof. */ 158 | #undef SIZEOF_FLOAT 159 | 160 | /* The size of `int', as computed by sizeof. */ 161 | #undef SIZEOF_INT 162 | 163 | /* The size of `long int', as computed by sizeof. */ 164 | #undef SIZEOF_LONG_INT 165 | 166 | /* The size of `void *', as computed by sizeof. */ 167 | #undef SIZEOF_VOID_P 168 | 169 | /* Define to 1 if all of the C90 standard headers exist (not just the ones 170 | required in a freestanding environment). This macro is provided for 171 | backward compatibility; new code need not use it. */ 172 | #undef STDC_HEADERS 173 | 174 | /* Define if you want IPv6 support */ 175 | #undef SYLVERANT_ENABLE_IPV6 176 | 177 | /* Version number of package */ 178 | #undef VERSION 179 | 180 | /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most 181 | significant byte first (like Motorola and SPARC, unlike Intel). */ 182 | #if defined AC_APPLE_UNIVERSAL_BUILD 183 | # if defined __BIG_ENDIAN__ 184 | # define WORDS_BIGENDIAN 1 185 | # endif 186 | #else 187 | # ifndef WORDS_BIGENDIAN 188 | # undef WORDS_BIGENDIAN 189 | # endif 190 | #endif 191 | 192 | /* Define for Solaris 2.5.1 so the uint32_t typedef from , 193 | , or is not used. If the typedef were allowed, the 194 | #define below would cause a syntax error. */ 195 | #undef _UINT32_T 196 | 197 | /* Define for Solaris 2.5.1 so the uint8_t typedef from , 198 | , or is not used. If the typedef were allowed, the 199 | #define below would cause a syntax error. */ 200 | #undef _UINT8_T 201 | 202 | /* Define to empty if `const' does not conform to ANSI C. */ 203 | #undef const 204 | 205 | /* Define to `__inline__' or `__inline' if that's what the C compiler 206 | calls it, or to nothing if 'inline' is not supported under any name. */ 207 | #ifndef __cplusplus 208 | #undef inline 209 | #endif 210 | 211 | /* Define to the equivalent of the C99 'restrict' keyword, or to 212 | nothing if this is not supported. Do not define if restrict is 213 | supported only directly. */ 214 | #undef restrict 215 | /* Work around a bug in older versions of Sun C++, which did not 216 | #define __restrict__ or support _Restrict or __restrict__ 217 | even though the corresponding Sun C compiler ended up with 218 | "#define restrict _Restrict" or "#define restrict __restrict__" 219 | in the previous line. This workaround can be removed once 220 | we assume Oracle Developer Studio 12.5 (2016) or later. */ 221 | #if defined __SUNPRO_CC && !defined __RESTRICT && !defined __restrict__ 222 | # define _Restrict 223 | # define __restrict__ 224 | #endif 225 | 226 | /* Define to `unsigned int' if does not define. */ 227 | #undef size_t 228 | 229 | /* Define to `int' if does not define. */ 230 | #undef ssize_t 231 | 232 | /* Define to the type of an unsigned integer type of width exactly 16 bits if 233 | such a type exists and the standard includes do not define it. */ 234 | #undef uint16_t 235 | 236 | /* Define to the type of an unsigned integer type of width exactly 32 bits if 237 | such a type exists and the standard includes do not define it. */ 238 | #undef uint32_t 239 | 240 | /* Define to the type of an unsigned integer type of width exactly 8 bits if 241 | such a type exists and the standard includes do not define it. */ 242 | #undef uint8_t 243 | -------------------------------------------------------------------------------- /configure.ac: -------------------------------------------------------------------------------- 1 | dnl 2 | dnl This file is part of Sylverant PSO Server. 3 | dnl 4 | dnl Copyright (C) 2009, 2011, 2013, 2015, 2016, 2018, 2020, 2021, 5 | dnl 2022 Lawrence Sebald 6 | dnl 7 | dnl This program is free software: you can redistribute it and/or modify 8 | dnl it under the terms of the GNU Affero General Public License version 3 9 | dnl as published by the Free Software Foundation. 10 | dnl 11 | dnl This program is distributed in the hope that it will be useful, 12 | dnl but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | dnl GNU Affero General Public License for more details. 15 | dnl 16 | dnl You should have received a copy of the GNU Affero General Public License 17 | dnl along with this program. If not, see . 18 | 19 | AC_PREREQ([2.67]) 20 | 21 | AC_INIT([Sylverant Ship Server], [0.1.0], [https://sf.net/p/sylverant], [ship_server], [https://sylverant.net/]) 22 | AC_CONFIG_MACRO_DIR([m4]) 23 | AC_CONFIG_HEADERS([config.h]) 24 | 25 | AC_CANONICAL_HOST 26 | AC_CANONICAL_TARGET 27 | 28 | AM_INIT_AUTOMAKE([subdir-objects]) 29 | AC_PROG_INSTALL 30 | AC_PROG_LIBTOOL 31 | AC_PROG_GREP 32 | AC_PROG_SED 33 | 34 | AC_CHECK_FILE([.git/index], [git_build=yes], [git_build=no]) 35 | 36 | # We need these for the git_version.sh script... 37 | AS_IF([test "x$git_build" != xno], 38 | [ 39 | AC_CHECK_PROG([GIT], [git], [yes], [no]) 40 | AS_IF([test "x$GIT" != xyes], [AC_MSG_ERROR([required program 'git' not found.])]) 41 | ], 42 | AC_CHECK_FILE([src/version.h], , [AC_MSG_ERROR([program source appears to be incomplete])]) 43 | ) 44 | 45 | echo $host_os | $GREP darwin > /dev/null && IS_OSX=yes 46 | 47 | AC_LANG(C) 48 | 49 | AC_CONFIG_SRCDIR([src/block.c]) 50 | 51 | # Checks for programs. 52 | AC_PROG_CC 53 | AC_PROG_CC_C99 54 | AC_C_INLINE 55 | AC_C_CONST 56 | AC_C_RESTRICT 57 | 58 | # Checks for libraries. 59 | if test $IS_OSX; then 60 | test $libxml2_CFLAGS || libxml2_CFLAGS="-I/usr/include/libxml2" 61 | test $libxml2_LIBS || libxml2_LIBS="-lxml2" 62 | else 63 | PKG_CHECK_MODULES([libxml2], [libxml-2.0 >= 2.6]) 64 | fi 65 | 66 | CFLAGS="$CFLAGS $libxml2_CFLAGS" 67 | LIBS="$LIBS $libxml2_LIBS" 68 | 69 | PKG_CHECK_MODULES([gnutls], [gnutls >= 2.0]) 70 | CFLAGS="$CFLAGS $gnutls_CFLAGS" 71 | LIBS="$LIBS $gnutls_LIBS" 72 | 73 | AC_CHECK_LIB([sylverant], [sylverant_read_config], , [AC_MSG_ERROR([libsylverant is required!])]) 74 | AC_CHECK_LIB([mini18n], [mini18n_get], , [AC_MSG_WARN([Internationalization support requires mini18n])]) 75 | AC_CHECK_LIB([psoarchive], [pso_gsl_read_open], , [AC_MSG_ERROR([libpsoarchive is required!])]) 76 | 77 | AC_SEARCH_LIBS([sqrt], [m], , [AC_MSG_ERROR([unable to find the sqrt function])]) 78 | AC_SEARCH_LIBS([pidfile_fileno], [util bsd], [NEED_PIDFILE=0], [NEED_PIDFILE=1]) 79 | 80 | AC_ARG_ENABLE([scripting], [AS_HELP_STRING([--enable-scripting], 81 | [enable scripting support in the binary (requires Lua 5.3.x)])], 82 | [enable_scripting=$enableval], 83 | [enable_scripting=no]) 84 | 85 | AS_IF([test "x$enable_scripting" != xno], [ 86 | PKG_CHECK_MODULES([lua], [lua-5.3], , [ 87 | PKG_CHECK_MODULES([lua], [lua5.3], , [ 88 | PKG_CHECK_MODULES([lua], [lua >= 5.3], , [ 89 | AC_MSG_ERROR([Scripting support requires Lua 5.3.x!]) 90 | ]) 91 | ]) 92 | ]) 93 | 94 | CFLAGS="$CFLAGS $lua_CFLAGS -DENABLE_LUA" 95 | LIBS="$LIBS $lua_LIBS" 96 | ]) 97 | 98 | AM_ICONV 99 | AM_ICONV_LINK 100 | AM_CONDITIONAL([NEED_PIDFILE], [test "$NEED_PIDFILE" -eq 1]) 101 | 102 | AX_PTHREAD 103 | 104 | # Checks for header files. 105 | AC_CHECK_HEADERS([arpa/inet.h inttypes.h netdb.h netinet/in.h netinet/tcp.h stdlib.h string.h sys/socket.h sys/time.h unistd.h pwd.h grp.h]) 106 | AC_CHECK_HEADERS([libutil.h bsd/libutil.h math.h sys/utsname.h]) 107 | 108 | # Checks for typedefs, structures, and compiler characteristics. 109 | AC_TYPE_SIZE_T 110 | AC_TYPE_SSIZE_T 111 | AC_TYPE_UINT16_T 112 | AC_TYPE_UINT32_T 113 | AC_TYPE_UINT8_T 114 | AC_C_BIGENDIAN 115 | AC_CHECK_SIZEOF([void *]) 116 | AC_CHECK_SIZEOF([int]) 117 | AC_CHECK_SIZEOF([long int]) 118 | AC_CHECK_SIZEOF([float]) 119 | AC_CHECK_SIZEOF([double]) 120 | 121 | # Checks for library functions. 122 | AC_CHECK_FUNCS([malloc realloc gethostname gettimeofday inet_ntoa memmove memset select socket strtoul getgrouplist]) 123 | 124 | CFLAGS="$CFLAGS -Wall" 125 | 126 | AC_ARG_ENABLE([debug], [AS_HELP_STRING([--enable-debug], 127 | [enable debugging symbols in the binary])], 128 | [enable_debug=$enableval], 129 | [enable_debug=no]) 130 | AC_ARG_ENABLE([ipv6], [AS_HELP_STRING([--disable-ipv6], 131 | [disable IPv6 support (enabled by default)])], 132 | [enable_ipv6=$enableval], 133 | [enable_ipv6=yes]) 134 | 135 | AS_IF([test "x$enable_ipv6" != xno], 136 | [AC_DEFINE([SYLVERANT_ENABLE_IPV6], [1], 137 | [Define if you want IPv6 support])]) 138 | 139 | AS_IF([test "x$enable_debug" != xno], 140 | [AC_DEFINE([DEBUG], [1], [Define if you want debugging turned on]) 141 | CFLAGS="$CFLAGS -g -DSYLVERANT_DEBUG"]) 142 | 143 | AC_CONFIG_FILES([Makefile] 144 | [src/Makefile] 145 | [l10n/Makefile]) 146 | 147 | AC_OUTPUT 148 | -------------------------------------------------------------------------------- /git_version.am: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2007 Hans Ulrich Niedermann 2 | # 3 | # This Makefile fragment is free software; the author(s) give(s) 4 | # unlimited permission to copy, distribute and modify it. 5 | 6 | # Slightly modified to change the name of the header generated. 7 | 8 | # The stamp file which is never created ensures that git_version.h is updated 9 | # before every build. Having git_version.h in foo_SOURCES ensures a recompile 10 | # of foo-bar.c if it is newer than the foo-bar.o file. Using noinst_foo_SOURCES 11 | # instead of foo_SOURCES prevents shipping git_version.h in dist tarballs, 12 | # which may cause false GIT_FOO readings. 13 | BUILT_SOURCES += git_version.stamp 14 | CLEANFILES += version.h 15 | GIT_VERSION_CMD = $(SHELL) $(top_srcdir)/git_version.sh 16 | git_version.stamp: 17 | @if test -f "$(srcdir)/version.h"; then \ 18 | if test -f "version.h"; then :; \ 19 | else \ 20 | cp "$(srcdir)/version.h" "version.h"; \ 21 | fi; \ 22 | fi 23 | $(GIT_VERSION_CMD) -k -s $(top_srcdir) -o version.h 24 | @if test -s "$(srcdir)/version.h"; then \ 25 | if cmp "$(srcdir)/version.h" "version.h"; then :; \ 26 | else \ 27 | echo "Error: $(srcdir)/version.h and version.h differ."; \ 28 | echo " You probably want to remove the former."; \ 29 | exit 1; \ 30 | fi; \ 31 | fi 32 | 33 | dist-hook: git_version.stamp 34 | if test -f "$(srcdir)/version.h"; then \ 35 | $(SED) -e 's|^#undef GIT_IS_DIST.*|#define GIT_IS_DIST 1|' \ 36 | "$(srcdir)/version.h" > "$(distdir)/version.h"; \ 37 | fi 38 | -------------------------------------------------------------------------------- /git_version.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # Generate some basic versioning information which can be piped to a header. 4 | # 5 | # Copyright (c) 2006-2007 Luc Verhaegen 6 | # Copyright (C) 2007-2008 Hans Ulrich Niedermann 7 | # Copyright (C) 2021 Lawrence Sebald 8 | # 9 | # Permission is hereby granted, free of charge, to any person obtaining a 10 | # copy of this software and associated documentation files (the "Software"), 11 | # to deal in the Software without restriction, including without limitation 12 | # the rights to use, copy, modify, merge, publish, distribute, sublicense, 13 | # and/or sell copies of the Software, and to permit persons to whom the 14 | # Software is furnished to do so, subject to the following conditions: 15 | # 16 | # The above copyright notice and this permission notice shall be included in 17 | # all copies or substantial portions of the Software. 18 | # 19 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 22 | # THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR 23 | # OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 24 | # ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 25 | # OTHER DEALINGS IN THE SOFTWARE. 26 | # 27 | # This script is based on the one written for xf86-video-unichrome by 28 | # Luc Verhaegen, but was rewritten almost completely by Hans Ulrich 29 | # Niedermann. The script contains a few bug fixes from Egbert Eich, 30 | # Matthias Hopf, Joerg Sonnenberger, and possibly others. Later modified 31 | # for Sylverant by Lawrence Sebald. 32 | # 33 | # The author thanks the nice people on #git for the assistance. 34 | # 35 | # Simple testing of this script: 36 | # /sbin/busybox sh git_version.sh --example > moo.c \ 37 | # && gcc -Wall -Wextra -Wno-unused -o moo moo.c \ 38 | # && ./moo 39 | # (bash should also do) 40 | # 41 | # For how to hook this up to your automake- and/or imake-based build 42 | # system, best take a look at how the RadeonHD.am and/or RadeonHD.tmpl 43 | # work in the xf86-video-radeonhd build system. For non-recursive make, 44 | # you can probably make things a little bit simpler. 45 | # 46 | # Requires git >= 1.3.0 for the 'git foo' (with space) syntax, 47 | # and git >= 1.4 for some specific commands. 48 | 49 | # Help messages 50 | USAGE="[