ping On Sun, 30 Aug 2015, Donovan Watteau wrote: > Hi, > > Here's another attempt at getting this port updated [1]. > > Here are the changes: > > - update from 0.5.2 to 0.6.3, which fixes a lot of security issues and > which makes the game playable online again. > - don't bother building on strict-alignment archs. On loongson, both > the client and the server SIGBUS during startup, and looking at the > code it seems that it will crash on anything not x86 or ppc. > - don't include an extra copy of DejaVuSans.ttf. > - use audio/wavpack, not an internal copy. > - make sure an internal zlib is never used. > - invoke "bam" with -a, to make sure that it will abort on error. > - don't enforce stack protector, base gcc(1) enables it wherever > it's possible. > - fix endianness detection (confirmed to work on macppc). > - drop patch-src_engine_client_ec_snd_c. At first, I ported it to > teeworlds-0.6.2, but actually this patch makes audio much worse > for me, and I can't observe anymore the crash it was supposed > to fix. > > There are some CRLFs in patch-bam-0_2_0*, and an inline diff might > corrupt this part of the patch, but these files get removed anyway > so it shouldn't matter. > > [1] https://marc.info/?l=openbsd-ports&m=139956748407652&w=2 > > Index: Makefile > =================================================================== > RCS file: /cvs/ports/games/teeworlds/Makefile,v > retrieving revision 1.17 > diff -u -p -r1.17 Makefile > --- Makefile 9 Aug 2013 19:04:49 -0000 1.17 > +++ Makefile 30 Aug 2015 12:40:14 -0000 > @@ -1,60 +1,69 @@ > # $OpenBSD: Makefile,v 1.17 2013/08/09 19:04:49 ajacoutot Exp $ > > -COMMENT = platform game featuring buggers equipped with weapons > +# Crashes on strict-alignment archs, see: src/base/system.c:164 > +ONLY_FOR_ARCHS= amd64 i386 powerpc > > -V = 0.5.2 > -DISTNAME = teeworlds-${V}-src > -PKGNAME = teeworlds-${V} > -REVISION = 4 > -CATEGORIES = games > +COMMENT= platform game featuring buggers equipped with weapons > > -MAINTAINER = Jonathan Armani <arm...@openbsd.org> > -HOMEPAGE = http://www.teeworlds.com/ > +V= 0.6.3 > +DISTNAME= teeworlds-${V}-src > +PKGNAME= teeworlds-${V} > +CATEGORIES= games > > -BAM_VERSION = 0.2.0 > -BAM_WRKSRC = ${WRKSRC}/bam-${BAM_VERSION} > -BAM_TARGET = release > +HOMEPAGE= http://www.teeworlds.com/ > > -MASTER_SITES = http://www.teeworlds.com/files/ > -DISTFILES = ${DISTNAME}${EXTRACT_SUFX} bam-${BAM_VERSION}${EXTRACT_SUFX} > +MAINTAINER= Donovan Watteau <tso...@gmail.com> > > -# GPLv2 > -PERMIT_PACKAGE_CDROM = Yes > +BAM_VERSION= 0.4.0 > +BAM_WRKSRC= ${WRKSRC}/bam-${BAM_VERSION} > > -WANTLIB = GL GLU SDL X11 c m pthread stdc++ z > -LIB_DEPENDS = devel/sdl > +MASTER_SITES= https://downloads.teeworlds.com/ > +DISTFILES= ${DISTNAME}${EXTRACT_SUFX} bam-${BAM_VERSION}${EXTRACT_SUFX} > > -MODULES = lang/python > +# BSD-like > +PERMIT_PACKAGE_CDROM= Yes > > -NO_TEST = Yes > +WANTLIB= GL GLU SDL X11 c freetype m pthread stdc++ wavpack z > > -GAMEDIR = ${PREFIX}/share/teeworlds > +LIB_DEPENDS= audio/wavpack \ > + devel/sdl > > -SUBST_VARS = CC CXX CFLAGS > +MODULES= lang/python > + > +SUBST_VARS= CC CXX CFLAGS CXXFLAGS X11BASE > + > +NO_TEST= Yes > > post-extract: > @mv ${WRKDIR}/bam-${BAM_VERSION} ${BAM_WRKSRC} > > pre-configure: > - ${SUBST_CMD} ${WRKSRC}/src/engine/e_engine.c \ > - ${WRKSRC}/scripts/make_src.py \ > + @${SUBST_CMD} ${WRKSRC}/src/engine/shared/storage.cpp \ > + ${WRKSRC}/src/game/client/gameclient.cpp \ > + ${WRKSRC}/scripts/build.py \ > + ${WRKSRC}/scripts/compiler.py \ > ${WRKSRC}/scripts/font_installer.sh \ > - ${WRKSRC}/default.bam \ > + ${WRKSRC}/scripts/make_src.py \ > + ${WRKSRC}/bam.lua \ > ${BAM_WRKSRC}/make_unix.sh \ > - ${BAM_WRKSRC}/src/driver_gcc.bam \ > - ${BAM_WRKSRC}/src/base.bam > + ${BAM_WRKSRC}/src/driver_gcc.lua \ > + ${BAM_WRKSRC}/src/base.lua > + # Make sure internal wavpack and zlib can't be picked up > + rm -rf ${WRKSRC}/src/engine/external/{wavpack,zlib} > + # Don't provide an extra copy of DejaVu > + rm -rf ${WRKSRC}/data/fonts > > # build bam executable - teeworlds own build system > pre-build: > cd ${BAM_WRKSRC} && /bin/sh -v make_unix.sh > > do-build: > - cd ${WRKSRC} && CC=${CC} ${BAM_WRKSRC}/src/bam -v ${BAM_TARGET} > + cd ${WRKSRC} && CC=${CC} ${BAM_WRKSRC}/bam -a -v release > wavpack=${LOCALBASE} > > do-install: > ${INSTALL_PROGRAM} ${WRKSRC}/teeworlds ${PREFIX}/bin > ${INSTALL_PROGRAM} ${WRKSRC}/teeworlds_srv ${PREFIX}/bin > - ${INSTALL_DATA_DIR} ${GAMEDIR} > - cd ${WRKSRC}; tar cf - data | tar xf - -C ${GAMEDIR} > + ${INSTALL_DATA_DIR} ${PREFIX}/share/teeworlds > + cd ${WRKSRC}; tar cf - data | tar xf - -C ${PREFIX}/share/teeworlds > > .include <bsd.port.mk> > Index: distinfo > =================================================================== > RCS file: /cvs/ports/games/teeworlds/distinfo,v > retrieving revision 1.4 > diff -u -p -r1.4 distinfo > --- distinfo 9 Aug 2013 19:04:49 -0000 1.4 > +++ distinfo 30 Aug 2015 12:40:14 -0000 > @@ -1,4 +1,4 @@ > -SHA256 (bam-0.2.0.tar.gz) = 72zdwd9HsNgQYmUDPvTlXmHeyr8ieaKs1/3wFmM8B1g= > -SHA256 (teeworlds-0.5.2-src.tar.gz) = > GBGnG/mhRwx6aTCANXREkvPoUK790S8bwiP7hdmM9MA= > -SIZE (bam-0.2.0.tar.gz) = 162342 > -SIZE (teeworlds-0.5.2-src.tar.gz) = 6393472 > +SHA256 (bam-0.4.0.tar.gz) = Xk5JILTSZdpYL2Z3TpseyN37513cAo+6hsEvaG6hjbM= > +SHA256 (teeworlds-0.6.3-src.tar.gz) = > SQ7nw3KJh2HGCa+Newxr1VlCxsb81/Nh7voAq/xwB3s= > +SIZE (bam-0.4.0.tar.gz) = 206780 > +SIZE (teeworlds-0.6.3-src.tar.gz) = 13101446 > Index: patches/patch-bam-0_2_0_make_unix_sh > =================================================================== > RCS file: patches/patch-bam-0_2_0_make_unix_sh > diff -N patches/patch-bam-0_2_0_make_unix_sh > --- patches/patch-bam-0_2_0_make_unix_sh 9 Aug 2013 19:04:49 -0000 > 1.3 > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > @@ -1,10 +0,0 @@ > -$OpenBSD: patch-bam-0_2_0_make_unix_sh,v 1.3 2013/08/09 19:04:49 ajacoutot > Exp $ > ---- bam-0.2.0/make_unix.sh.orig Thu Jan 8 13:07:44 2009 > -+++ bam-0.2.0/make_unix.sh Sun Feb 8 18:11:29 2009 > -@@ -1,4 +1,4 @@ > - #!/bin/sh > --gcc -Wall -ansi -pedantic src/tools/txt2c.c -o src/tools/txt2c > -+${CC} ${CFLAGS} -Wall -ansi -pedantic src/tools/txt2c.c -o src/tools/txt2c > - src/tools/txt2c src/base.bam src/driver_gcc.bam src/driver_cl.bam > > src/internal_base.h > --gcc -Wall -ansi -pedantic src/lua/*.c src/*.c -o src/bam -I src/lua -lm > -lpthread -O2 $* > -+${CC} ${CFLAGS} -Wall -ansi -pedantic src/lua/*.c src/*.c -o src/bam -I > src/lua -lm -lpthread $* > Index: patches/patch-bam-0_2_0_src_base_bam > =================================================================== > RCS file: patches/patch-bam-0_2_0_src_base_bam > diff -N patches/patch-bam-0_2_0_src_base_bam > --- patches/patch-bam-0_2_0_src_base_bam 18 Jan 2009 17:53:36 -0000 > 1.1.1.1 > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > @@ -1,12 +0,0 @@ > -$OpenBSD: patch-bam-0_2_0_src_base_bam,v 1.1.1.1 2009/01/18 17:53:36 > ajacoutot Exp $ > ---- bam-0.2.0/src/base.bam.orig Fri Jan 16 18:46:07 2009 > -+++ bam-0.2.0/src/base.bam Fri Jan 16 18:46:33 2009 > -@@ -589,7 +589,7 @@ end > - @END]]-- > - function OptFindCompiler() > - local check = function(option, settings) > -- if ExecuteSilent("g++ -v") == 0 then > -+ if ExecuteSilent("${CXX} -v") == 0 then > - option.value = "gcc" > - elseif ExecuteSilent("cl") == 0 then > - option.value = "cl" > Index: patches/patch-bam-0_2_0_src_context_h > =================================================================== > RCS file: patches/patch-bam-0_2_0_src_context_h > diff -N patches/patch-bam-0_2_0_src_context_h > --- patches/patch-bam-0_2_0_src_context_h 8 Feb 2009 22:31:58 -0000 > 1.1 > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > @@ -1,24 +0,0 @@ > -$OpenBSD: patch-bam-0_2_0_src_context_h,v 1.1 2009/02/08 22:31:58 ajacoutot > Exp $ > - > -Fix bus error on sparc64. > - > ---- bam-0.2.0/src/context.h.orig Mon Feb 9 00:11:33 2009 > -+++ bam-0.2.0/src/context.h Mon Feb 9 00:09:59 2009 > -@@ -5,7 +5,7 @@ struct TARGET > - { > - struct NODE *node; > - struct TARGET *next; > --}; > -+} __attribute__((packed)); > - > - struct CONTEXT > - { > -@@ -24,7 +24,7 @@ struct CONTEXT > - > - volatile int current_cmd_num; > - int num_commands; > --}; > -+} __attribute__((packed)); > - > - const char *context_get_path(lua_State *L); > - struct CONTEXT *context_get_pointer(lua_State *L); > Index: patches/patch-bam-0_2_0_src_driver_gcc_bam > =================================================================== > RCS file: patches/patch-bam-0_2_0_src_driver_gcc_bam > diff -N patches/patch-bam-0_2_0_src_driver_gcc_bam > --- patches/patch-bam-0_2_0_src_driver_gcc_bam 18 Jan 2009 17:53:36 > -0000 1.1.1.1 > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > @@ -1,14 +0,0 @@ > -$OpenBSD: patch-bam-0_2_0_src_driver_gcc_bam,v 1.1.1.1 2009/01/18 17:53:36 > ajacoutot Exp $ > ---- bam-0.2.0/src/driver_gcc.bam.orig Fri Jan 16 18:44:47 2009 > -+++ bam-0.2.0/src/driver_gcc.bam Fri Jan 16 18:45:47 2009 > -@@ -82,8 +82,8 @@ end > - function SetDriversGCC(settings) > - if settings.cc then > - settings.cc.extension = ".o" > -- settings.cc.c_compiler = "gcc" > -- settings.cc.cxx_compiler = "g++" > -+ settings.cc.c_compiler = "${CC} ${CFLAGS}" > -+ settings.cc.cxx_compiler = "${CXX} ${CFLAGS}" > - settings.cc.DriverCTest = DriverCTest_GCC > - settings.cc.DriverC = DriverC_GCC > - settings.cc.DriverCXX = DriverCXX_GCC > Index: patches/patch-bam-0_2_0_src_main_c > =================================================================== > RCS file: patches/patch-bam-0_2_0_src_main_c > diff -N patches/patch-bam-0_2_0_src_main_c > --- patches/patch-bam-0_2_0_src_main_c 8 Feb 2009 16:54:54 -0000 > 1.1 > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > @@ -1,37 +0,0 @@ > -$OpenBSD: patch-bam-0_2_0_src_main_c,v 1.1 2009/02/08 16:54:54 ajacoutot Exp > $ > ---- bam-0.2.0/src/main.c.orig Sun Feb 8 18:09:12 2009 > -+++ bam-0.2.0/src/main.c Sun Feb 8 18:10:27 2009 > -@@ -986,8 +986,8 @@ int register_lua_globals(struct CONTEXT *context) > - > - /* set paths */ > - { > -- char cwd[512]; > -- getcwd(cwd, 512); > -+ char cwd[1024]; > -+ getcwd(cwd, 1024); > - > - lua_pushstring(context->lua, CONTEXT_LUA_PATH); > - lua_pushstring(context->lua, context->script_directory); > -@@ -1131,17 +1131,17 @@ static int bam(const char *scriptfile, const char > **ta > - > - /* fetch script directory */ > - { > -- char cwd[512]; > -- char path[512]; > -+ char cwd[1024]; > -+ char path[1024]; > - > -- getcwd(cwd, 512); > -- if(path_directory(context.filename, path, 512)) > -+ getcwd(cwd, 1024); > -+ if(path_directory(context.filename, path, 1024)) > - { > - printf("crap error1\n"); > - *((int*)0) = 0; > - } > - > -- if(path_join(cwd, path, context.script_directory, 512)) > -+ if(path_join(cwd, path, context.script_directory, 1024)) > - { > - printf("crap error2\n"); > - *((int*)0) = 0; > Index: patches/patch-bam-0_2_0_src_node_h > =================================================================== > RCS file: patches/patch-bam-0_2_0_src_node_h > diff -N patches/patch-bam-0_2_0_src_node_h > --- patches/patch-bam-0_2_0_src_node_h 8 Feb 2009 22:31:58 -0000 > 1.1 > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > @@ -1,24 +0,0 @@ > -$OpenBSD: patch-bam-0_2_0_src_node_h,v 1.1 2009/02/08 22:31:58 ajacoutot Exp > $ > - > -Fix bus error on sparc64. > - > ---- bam-0.2.0/src/node.h.orig Mon Feb 9 00:11:20 2009 > -+++ bam-0.2.0/src/node.h Mon Feb 9 00:10:15 2009 > -@@ -9,7 +9,7 @@ struct DEPENDENCY > - { > - struct NODE *node; > - struct DEPENDENCY *next; > --}; > -+} __attribute__((packed)); > - > - #define USE_NODE_RB > - > -@@ -55,7 +55,7 @@ struct NODE > - unsigned int counted:1; > - > - volatile unsigned int workstatus:2; /* 0 = undone, 1 = in the workings, > 2 = done*/ > --}; > -+} __attribute__((packed)); > - > - struct HEAP; > - struct GRAPH; > Index: patches/patch-bam-0_4_0_make_unix_sh > =================================================================== > RCS file: patches/patch-bam-0_4_0_make_unix_sh > diff -N patches/patch-bam-0_4_0_make_unix_sh > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-bam-0_4_0_make_unix_sh 30 Aug 2015 12:40:14 -0000 > @@ -0,0 +1,13 @@ > +$OpenBSD$ > + > +Don't hardcode compiler path and flags. > + > +--- bam-0.4.0/make_unix.sh.orig Mon Aug 9 20:08:24 2010 > ++++ bam-0.4.0/make_unix.sh Sat Mar 17 15:05:51 2012 > +@@ -1,4 +1,4 @@ > + #!/bin/sh > +-gcc -Wall -ansi -pedantic src/tools/txt2c.c -o src/tools/txt2c > ++${CC} ${CFLAGS} -Wall -ansi -pedantic src/tools/txt2c.c -o src/tools/txt2c > + src/tools/txt2c src/base.lua src/tools.lua src/driver_gcc.lua > src/driver_cl.lua > src/internal_base.h > +-gcc -Wall -ansi -pedantic src/*.c src/lua/*.c -o bam -I src/lua -lm > -lpthread -ldl -O2 -rdynamic $* > ++${CC} ${CFLAGS} -Wall -ansi -pedantic src/*.c src/lua/*.c -o bam -I src/lua > -lm -lpthread -rdynamic $* > Index: patches/patch-bam-0_4_0_src_driver_gcc_lua > =================================================================== > RCS file: patches/patch-bam-0_4_0_src_driver_gcc_lua > diff -N patches/patch-bam-0_4_0_src_driver_gcc_lua > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-bam-0_4_0_src_driver_gcc_lua 30 Aug 2015 12:40:14 > -0000 > @@ -0,0 +1,52 @@ > +$OpenBSD$ > + > +Don't hardcode compiler path and flags. > + > +--- bam-0.4.0/src/driver_gcc.lua.orig Mon Aug 9 20:08:24 2010 > ++++ bam-0.4.0/src/driver_gcc.lua Sat Mar 17 15:14:24 2012 > +@@ -13,7 +13,6 @@ function DriverGCC_Get(exe, cache_name, flags_name) > + local f = cc.flags:ToString() > + f = f .. cc[flags_name]:ToString() > + if settings.debug > 0 then f = f .. "-g " end > +- if settings.optimize > 0 then f = f .. "-O2 " end > + > + cache.str = cc[exe] .. " " .. f .. "-c " .. d .. i .. " > -o " > + end > +@@ -27,7 +26,7 @@ function DriverGCC_CTest(code, options) > + f:write(code) > + f:write("\n") > + f:close() > +- local ret = ExecuteSilent("gcc _test.c -o _test " .. options) > ++ local ret = ExecuteSilent("${CC} _test.c -o _test " .. options) > + os.remove("_test.c") > + os.remove("_test") > + return ret==0 > +@@ -80,8 +79,8 @@ end > + function SetDriversGCC(settings) > + if settings.cc then > + settings.cc.extension = ".o" > +- settings.cc.exe_c = "gcc" > +- settings.cc.exe_cxx = "g++" > ++ settings.cc.exe_c = "${CC} ${CFLAGS}" > ++ settings.cc.exe_cxx = "${CXX} ${CXXFLAGS}" > + settings.cc.DriverCTest = DriverGCC_CTest > + settings.cc.DriverC = DriverGCC_Get("exe_c", "_c_cache", > "flags_c") > + settings.cc.DriverCXX = DriverGCC_Get("exe_cxx", "_cxx_cache", > "flags_cxx") > +@@ -89,7 +88,7 @@ function SetDriversGCC(settings) > + > + if settings.link then > + settings.link.extension = "" > +- settings.link.exe = "g++" > ++ settings.link.exe = "${CXX}" > + settings.link.Driver = DriverGCC_Link > + end > + > +@@ -108,7 +107,7 @@ function SetDriversGCC(settings) > + settings.dll.prefix = "" > + settings.dll.extension = ".so" > + end > +- settings.dll.exe = "g++" > ++ settings.dll.exe = "${CXX}" > + settings.dll.Driver = DriverGCC_DLL > + end > + end > Index: patches/patch-bam_lua > =================================================================== > RCS file: patches/patch-bam_lua > diff -N patches/patch-bam_lua > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-bam_lua 30 Aug 2015 12:40:14 -0000 > @@ -0,0 +1,73 @@ > +$OpenBSD$ > + > +- Don't enforce stack protector > +- Don't hardcode python > +- Make it possible to use wavpack as an external dependency (from Debian) > +- Fix zlib external dependency (from Debian) > + > +--- bam.lua.orig Wed May 1 13:47:39 2013 > ++++ bam.lua Thu May 8 16:13:57 2014 > +@@ -7,12 +7,12 @@ Import("other/freetype/freetype.lua") > + --- Setup Config ------- > + config = NewConfig() > + config:Add(OptCCompiler("compiler")) > +-config:Add(OptTestCompileC("stackprotector", "int main(){return 0;}", > "-fstack-protector -fstack-protector-all")) > + config:Add(OptTestCompileC("minmacosxsdk", "int main(){return 0;}", > "-mmacosx-version-min=10.5 -isysroot /Developer/SDKs/MacOSX10.5.sdk")) > + config:Add(OptTestCompileC("macosxppc", "int main(){return 0;}", "-arch > ppc")) > + config:Add(OptLibrary("zlib", "zlib.h", false)) > + config:Add(SDL.OptFind("sdl", true)) > + config:Add(FreeType.OptFind("freetype", true)) > ++config:Add(OptLibrary("wavpack", "wavpack/wavpack.h", false)) > + config:Finalize("config.lua") > + > + -- data compiler > +@@ -20,7 +20,7 @@ function Script(name) > + if family == "windows" then > + return str_replace(name, "/", "\\") > + end > +- return "python " .. name > ++ return "${MODPY_BIN} " .. name > + end > + > + function CHash(output, ...) > +@@ -157,9 +157,6 @@ function build(settings) > + settings.cc.flags:Add("-isysroot > /Developer/SDKs/MacOSX10.5.sdk") > + settings.link.flags:Add("-isysroot > /Developer/SDKs/MacOSX10.5.sdk") > + end > +- elseif config.stackprotector.value == 1 then > +- settings.cc.flags:Add("-fstack-protector", > "-fstack-protector-all") > +- settings.link.flags:Add("-fstack-protector", > "-fstack-protector-all") > + end > + end > + > +@@ -187,7 +184,7 @@ function build(settings) > + end > + > + -- compile zlib if needed > +- if config.zlib.value == 1 then > ++ if config.zlib.value then > + settings.link.libs:Add("z") > + if config.zlib.include_path then > + settings.cc.includes:Add(config.zlib.include_path) > +@@ -198,8 +195,20 @@ function build(settings) > + settings.cc.includes:Add("src/engine/external/zlib") > + end > + > ++ -- compile wavpack if needed > ++ if config.wavpack.value then > ++ settings.link.libs:Add("wavpack") > ++ if config.wavpack.include_path then > ++ settings.cc.includes:Add(config.wavpack.include_path .. > "/include") > ++ settings.link.libpath:Add(config.wavpack.include_path > .. "/lib") > ++ end > ++ wavpack = {} > ++ else > ++ wavpack = Compile(settings, > Collect("src/engine/external/wavpack/*.c")) > ++ settings.cc.includes:Add("src/engine/external") > ++ end > ++ > + -- build the small libraries > +- wavpack = Compile(settings, Collect("src/engine/external/wavpack/*.c")) > + pnglite = Compile(settings, Collect("src/engine/external/pnglite/*.c")) > + > + -- build game components > Index: patches/patch-default_bam > =================================================================== > RCS file: patches/patch-default_bam > diff -N patches/patch-default_bam > --- patches/patch-default_bam 5 Apr 2009 16:59:40 -0000 1.2 > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > @@ -1,21 +0,0 @@ > -$OpenBSD: patch-default_bam,v 1.2 2009/04/05 16:59:40 ajacoutot Exp $ > ---- default.bam.orig Thu Mar 5 11:41:17 2009 > -+++ default.bam Thu Mar 5 11:41:53 2009 > -@@ -15,7 +15,7 @@ function Script(name) > - if family == "windows" then > - return str_replace(name, "/", "\\") > - end > -- return "python " .. name > -+ return "${MODPY_BIN} " .. name > - end > - > - function CHash(output, ...) > -@@ -128,7 +128,7 @@ function build(settings) > - settings.link.frameworks:Add("Carbon") > - settings.link.frameworks:Add("AppKit") > - else > -- settings.link.libs:Add("pthread") > -+ settings.link.flags:Add("-pthread") > - end > - elseif family == "windows" then > - settings.link.libs:Add("gdi32") > Index: patches/patch-scripts_build_py > =================================================================== > RCS file: patches/patch-scripts_build_py > diff -N patches/patch-scripts_build_py > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-scripts_build_py 30 Aug 2015 12:40:14 -0000 > @@ -0,0 +1,12 @@ > +$OpenBSD$ > +--- scripts/build.py.orig Sun Jul 31 23:17:00 2011 > ++++ scripts/build.py Sat Mar 17 15:19:47 2012 > +@@ -276,7 +276,7 @@ if flag_make_release: > + os.chdir(src_dir_teeworlds) > + command = '"%s/%s/scripts/make_release.py" %s %s' % (work_dir, > src_dir_teeworlds, version_teeworlds, platform) > + if os.name != "nt": > +- command = "python %s" % command > ++ command = "${MODPY_BIN} %s" % command > + if os.system(command) != 0: > + bail("failed to make a relase of %s" % name) > + final_output = "FAIL" > Index: patches/patch-scripts_compiler_py > =================================================================== > RCS file: patches/patch-scripts_compiler_py > diff -N patches/patch-scripts_compiler_py > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-scripts_compiler_py 30 Aug 2015 12:40:14 -0000 > @@ -0,0 +1,9 @@ > +$OpenBSD$ > +--- scripts/compiler.py.orig Sun Jul 31 23:17:00 2011 > ++++ scripts/compiler.py Sat Mar 17 15:22:43 2012 > +@@ -1,4 +1,4 @@ > +-#!/usr/bin/python > ++#!${MODPY_BIN} > + > + import sys > + import struct > Index: patches/patch-scripts_font_installer_sh > =================================================================== > RCS file: /cvs/ports/games/teeworlds/patches/patch-scripts_font_installer_sh,v > retrieving revision 1.1.1.1 > diff -u -p -r1.1.1.1 patch-scripts_font_installer_sh > --- patches/patch-scripts_font_installer_sh 18 Jan 2009 17:53:36 -0000 > 1.1.1.1 > +++ patches/patch-scripts_font_installer_sh 30 Aug 2015 12:40:14 -0000 > @@ -1,6 +1,6 @@ > $OpenBSD: patch-scripts_font_installer_sh,v 1.1.1.1 2009/01/18 17:53:36 > ajacoutot Exp $ > ---- scripts/font_installer.sh.orig Fri Jan 16 17:18:33 2009 > -+++ scripts/font_installer.sh Fri Jan 16 17:18:51 2009 > +--- scripts/font_installer.sh.orig Sun Jul 31 23:17:00 2011 > ++++ scripts/font_installer.sh Sat Mar 17 15:19:57 2012 > @@ -1,3 +1,3 @@ > echo Generating .fnts... > ../../font_generator/a.out > Index: patches/patch-scripts_make_src_py > =================================================================== > RCS file: patches/patch-scripts_make_src_py > diff -N patches/patch-scripts_make_src_py > --- patches/patch-scripts_make_src_py 18 Jan 2009 17:53:36 -0000 1.1.1.1 > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > @@ -1,12 +0,0 @@ > -$OpenBSD: patch-scripts_make_src_py,v 1.1.1.1 2009/01/18 17:53:36 ajacoutot > Exp $ > ---- scripts/make_src.py.orig Fri Jan 16 17:17:44 2009 > -+++ scripts/make_src.py Fri Jan 16 17:18:15 2009 > -@@ -34,7 +34,7 @@ os.chdir(root_dir) > - if 1: > - os.system("svn export svn://svn.teeworlds.com/teeworlds/%s teeworlds" % > svn_tree) > - os.chdir("teeworlds") > -- os.system("python scripts/make_release.py %s src" % version) > -+ os.system("${MODPY_BIN} scripts/make_release.py %s src" % version) > - os.chdir(root_dir) > - for f in os.listdir("teeworlds"): > - if "teeworlds" in f and "src" in f and (".zip" in f or > ".tar.gz" in f): > Index: patches/patch-src_base_detect_h > =================================================================== > RCS file: patches/patch-src_base_detect_h > diff -N patches/patch-src_base_detect_h > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-src_base_detect_h 30 Aug 2015 12:40:14 -0000 > @@ -0,0 +1,25 @@ > +$OpenBSD$ > + > +Fix endianness detection. > + > +--- src/base/detect.h.orig Wed Nov 19 23:08:22 2014 > ++++ src/base/detect.h Sat Aug 22 16:44:40 2015 > +@@ -78,15 +78,15 @@ > + > + /* use gcc endianness definitions when available */ > + #if defined(__GNUC__) && !defined(__APPLE__) && !defined(__MINGW32__) && > !defined(__sun) > +- #if defined(__FreeBSD__) || defined(__OpenBSD__) > ++ #if defined(__FreeBSD__) > + #include <sys/endian.h> > + #else > + #include <endian.h> > + #endif > + > +- #if __BYTE_ORDER == __LITTLE_ENDIAN > ++ #if BYTE_ORDER == LITTLE_ENDIAN > + #define CONF_ARCH_ENDIAN_LITTLE 1 > +- #elif __BYTE_ORDER == __BIG_ENDIAN > ++ #elif BYTE_ORDER == BIG_ENDIAN > + #define CONF_ARCH_ENDIAN_BIG 1 > + #endif > + #endif > Index: patches/patch-src_engine_client_ec_snd_c > =================================================================== > RCS file: patches/patch-src_engine_client_ec_snd_c > diff -N patches/patch-src_engine_client_ec_snd_c > --- patches/patch-src_engine_client_ec_snd_c 10 Feb 2009 00:32:43 -0000 > 1.1 > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > @@ -1,38 +0,0 @@ > -$OpenBSD: patch-src_engine_client_ec_snd_c,v 1.1 2009/02/10 00:32:43 sthen > Exp $ > ---- src/engine/client/ec_snd.c.orig Tue Jan 27 11:41:17 2009 > -+++ src/engine/client/ec_snd.c Tue Jan 27 12:30:08 2009 > -@@ -139,10 +139,19 @@ static int iabs(int i) > - > - static void mix(short *final_out, unsigned frames) > - { > -- int mix_buffer[MAX_FRAMES*2] = {0}; > -- int i, s; > -+ int *mix_buffer; > -+ int i, s, mix_buffer_size; > - int master_vol; > - > -+ mix_buffer_size = frames * 2 * sizeof(int); > -+ mix_buffer = malloc(mix_buffer_size); > -+ if (mix_buffer == NULL) > -+ { > -+ printf("malloc failed"); > -+ return; > -+ } > -+ bzero(mix_buffer, mix_buffer_size); > -+ > - /* aquire lock while we are mixing */ > - lock_wait(sound_lock); > - > -@@ -239,6 +248,12 @@ static void mix(short *final_out, unsigned frames) > - #if defined(CONF_ARCH_ENDIAN_BIG) > - swap_endian(final_out, sizeof(short), frames * 2); > - #endif > -+ > -+ if(mix_buffer != NULL) { > -+ free(mix_buffer); > -+ mix_buffer = NULL; > -+ } > -+ > - } > - > - static void sdlcallback(void *unused, Uint8 *stream, int len) > Index: patches/patch-src_engine_client_sound_cpp > =================================================================== > RCS file: patches/patch-src_engine_client_sound_cpp > diff -N patches/patch-src_engine_client_sound_cpp > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-src_engine_client_sound_cpp 30 Aug 2015 12:40:14 -0000 > @@ -0,0 +1,82 @@ > +$OpenBSD$ > + > +Make it possible to compile with an external and newer wavpack. > +From Debian. > + > +--- src/engine/client/sound.cpp.orig Wed May 1 13:47:39 2013 > ++++ src/engine/client/sound.cpp Thu May 8 16:00:47 2014 > +@@ -13,7 +13,7 @@ > + #include "sound.h" > + > + extern "C" { // wavpack > +- #include <engine/external/wavpack/wavpack.h> > ++ #include <wavpack/wavpack.h> > + } > + #include <math.h> > + > +@@ -328,17 +328,14 @@ void CSound::RateConvert(int SampleID) > + pSample->m_NumFrames = NumFrames; > + } > + > +-int CSound::ReadData(void *pBuffer, int Size) > +-{ > +- return io_read(ms_File, pBuffer, Size); > +-} > +- > + int CSound::LoadWV(const char *pFilename) > + { > + CSample *pSample; > + int SampleID = -1; > + char aError[100]; > + WavpackContext *pContext; > ++ char aWholePath[1024]; > ++ IOHANDLE File; > + > + // don't waste memory on sound when we are stress testing > + if(g_Config.m_DbgStress) > +@@ -351,19 +348,23 @@ int CSound::LoadWV(const char *pFilename) > + if(!m_pStorage) > + return -1; > + > +- ms_File = m_pStorage->OpenFile(pFilename, IOFLAG_READ, > IStorage::TYPE_ALL); > +- if(!ms_File) > ++ File = m_pStorage->OpenFile(pFilename, IOFLAG_READ, IStorage::TYPE_ALL, > aWholePath, sizeof(aWholePath)); > ++ if(!File) > + { > + dbg_msg("sound/wv", "failed to open file. filename='%s'", > pFilename); > + return -1; > + } > ++ else > ++ { > ++ io_close(File); > ++ } > + > + SampleID = AllocID(); > + if(SampleID < 0) > + return -1; > + pSample = &m_aSamples[SampleID]; > + > +- pContext = WavpackOpenFileInput(ReadData, aError); > ++ pContext = WavpackOpenFileInput(aWholePath, aError, OPEN_2CH_MAX, 0); > + if (pContext) > + { > + int m_aSamples = WavpackGetNumSamples(pContext); > +@@ -419,9 +420,6 @@ int CSound::LoadWV(const char *pFilename) > + dbg_msg("sound/wv", "failed to open %s: %s", pFilename, aError); > + } > + > +- io_close(ms_File); > +- ms_File = NULL; > +- > + if(g_Config.m_Debug) > + dbg_msg("sound/wv", "loaded %s", pFilename); > + > +@@ -526,8 +524,6 @@ void CSound::StopAll() > + } > + lock_release(m_SoundLock); > + } > +- > +-IOHANDLE CSound::ms_File = 0; > + > + IEngineSound *CreateEngineSound() { return new CSound; } > + > Index: patches/patch-src_engine_client_sound_h > =================================================================== > RCS file: patches/patch-src_engine_client_sound_h > diff -N patches/patch-src_engine_client_sound_h > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-src_engine_client_sound_h 30 Aug 2015 12:40:14 -0000 > @@ -0,0 +1,18 @@ > +$OpenBSD$ > + > +Make it possible to compile with an external and newer wavpack. > +From Debian. > + > +--- src/engine/client/sound.h.orig Wed May 1 13:47:39 2013 > ++++ src/engine/client/sound.h Thu May 8 15:58:08 2014 > +@@ -21,10 +21,6 @@ class CSound : public IEngineSound (public) > + > + static void RateConvert(int SampleID); > + > +- // TODO: Refactor: clean this mess up > +- static IOHANDLE ms_File; > +- static int ReadData(void *pBuffer, int Size); > +- > + virtual bool IsSoundEnabled() { return m_SoundEnabled != 0; } > + > + virtual int LoadWV(const char *pFilename); > Index: patches/patch-src_engine_e_engine_c > =================================================================== > RCS file: patches/patch-src_engine_e_engine_c > diff -N patches/patch-src_engine_e_engine_c > --- patches/patch-src_engine_e_engine_c 18 Jan 2009 17:53:36 -0000 > 1.1.1.1 > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > @@ -1,12 +0,0 @@ > -$OpenBSD: patch-src_engine_e_engine_c,v 1.1.1.1 2009/01/18 17:53:36 > ajacoutot Exp $ > ---- src/engine/e_engine.c.orig Fri Jan 16 17:15:42 2009 > -+++ src/engine/e_engine.c Fri Jan 16 17:16:30 2009 > -@@ -13,7 +13,7 @@ > - #include "e_linereader.h" > - > - /* compiled-in data-dir path */ > --#define DATA_DIR "data" > -+#define DATA_DIR "${PREFIX}/share/teeworlds/data" > - > - static JOBPOOL hostlookuppool; > - static int engine_find_datadir(char *argv0); > Index: patches/patch-src_engine_shared_storage_cpp > =================================================================== > RCS file: patches/patch-src_engine_shared_storage_cpp > diff -N patches/patch-src_engine_shared_storage_cpp > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-src_engine_shared_storage_cpp 30 Aug 2015 12:40:14 > -0000 > @@ -0,0 +1,12 @@ > +$OpenBSD$ > +--- src/engine/shared/storage.cpp.orig Sun Jul 31 23:17:00 2011 > ++++ src/engine/shared/storage.cpp Sat Mar 17 15:21:21 2012 > +@@ -5,7 +5,7 @@ > + #include "linereader.h" > + > + // compiled-in data-dir path > +-#define DATA_DIR "data" > ++#define DATA_DIR "${PREFIX}/share/teeworlds/data" > + > + class CStorage : public IStorage > + { > Index: patches/patch-src_game_client_gameclient_cpp > =================================================================== > RCS file: patches/patch-src_game_client_gameclient_cpp > diff -N patches/patch-src_game_client_gameclient_cpp > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-src_game_client_gameclient_cpp 30 Aug 2015 12:40:14 > -0000 > @@ -0,0 +1,24 @@ > +$OpenBSD$ > + > +Don't require a local copy of DejavuSans.ttf. > + > +--- src/game/client/gameclient.cpp.orig Wed May 1 13:47:39 2013 > ++++ src/game/client/gameclient.cpp Thu May 8 16:59:57 2014 > +@@ -240,7 +240,7 @@ void CGameClient::OnInit() > + // load default font > + static CFont *pDefaultFont = 0; > + char aFilename[512]; > +- IOHANDLE File = Storage()->OpenFile("fonts/DejaVuSans.ttf", > IOFLAG_READ, IStorage::TYPE_ALL, aFilename, sizeof(aFilename)); > ++ IOHANDLE File = > Storage()->OpenFile("${X11BASE}/lib/X11/fonts/TTF/DejaVuSans.ttf", > IOFLAG_READ, IStorage::TYPE_ALL, aFilename, sizeof(aFilename)); > + if(File) > + { > + io_close(File); > +@@ -248,7 +248,7 @@ void CGameClient::OnInit() > + TextRender()->SetDefaultFont(pDefaultFont); > + } > + if(!pDefaultFont) > +- Console()->Print(IConsole::OUTPUT_LEVEL_STANDARD, "gameclient", > "failed to load font. filename='fonts/DejaVuSans.ttf'"); > ++ Console()->Print(IConsole::OUTPUT_LEVEL_STANDARD, "gameclient", > "failed to load font. filename='DejaVuSans.ttf'"); > + > + // init all components > + for(int i = m_All.m_Num-1; i >= 0; --i) > Index: pkg/DESCR > =================================================================== > RCS file: /cvs/ports/games/teeworlds/pkg/DESCR,v > retrieving revision 1.1.1.1 > diff -u -p -r1.1.1.1 DESCR > --- pkg/DESCR 18 Jan 2009 17:53:36 -0000 1.1.1.1 > +++ pkg/DESCR 30 Aug 2015 12:40:14 -0000 > @@ -1,3 +1,3 @@ > -Teeworlds is a free online multiplayer game, available for all major > -operating systems. Battle with up to 16 players in a variety of game > +Teeworlds is a free online multiplayer game, available for all major > +operating systems. Battle with up to 16 players in a variety of game > modes, including Team Deathmatch and Capture The Flag. > Index: pkg/PLIST > =================================================================== > RCS file: /cvs/ports/games/teeworlds/pkg/PLIST,v > retrieving revision 1.1.1.1 > diff -u -p -r1.1.1.1 PLIST > --- pkg/PLIST 18 Jan 2009 17:53:36 -0000 1.1.1.1 > +++ pkg/PLIST 30 Aug 2015 12:40:14 -0000 > @@ -34,6 +34,7 @@ share/teeworlds/data/audio/hook_loop-02. > share/teeworlds/data/audio/hook_noattach-01.wv > share/teeworlds/data/audio/hook_noattach-02.wv > share/teeworlds/data/audio/hook_noattach-03.wv > +share/teeworlds/data/audio/music_menu.wv > share/teeworlds/data/audio/sfx_ctf_cap_pl.wv > share/teeworlds/data/audio/sfx_ctf_drop.wv > share/teeworlds/data/audio/sfx_ctf_grab_en.wv > @@ -45,6 +46,7 @@ share/teeworlds/data/audio/sfx_hit_weak- > share/teeworlds/data/audio/sfx_hit_weak-02.wv > share/teeworlds/data/audio/sfx_hit_weak-03.wv > share/teeworlds/data/audio/sfx_msg-client.wv > +share/teeworlds/data/audio/sfx_msg-highlight.wv > share/teeworlds/data/audio/sfx_msg-server.wv > share/teeworlds/data/audio/sfx_pickup_arm-01.wv > share/teeworlds/data/audio/sfx_pickup_arm-02.wv > @@ -137,73 +139,317 @@ share/teeworlds/data/blob.png > share/teeworlds/data/browse_icons.png > share/teeworlds/data/console.png > share/teeworlds/data/console_bar.png > +share/teeworlds/data/countryflags/ > +share/teeworlds/data/countryflags/AD.png > +share/teeworlds/data/countryflags/AE.png > +share/teeworlds/data/countryflags/AF.png > +share/teeworlds/data/countryflags/AG.png > +share/teeworlds/data/countryflags/AI.png > +share/teeworlds/data/countryflags/AL.png > +share/teeworlds/data/countryflags/AM.png > +share/teeworlds/data/countryflags/AO.png > +share/teeworlds/data/countryflags/AR.png > +share/teeworlds/data/countryflags/AS.png > +share/teeworlds/data/countryflags/AT.png > +share/teeworlds/data/countryflags/AU.png > +share/teeworlds/data/countryflags/AW.png > +share/teeworlds/data/countryflags/AX.png > +share/teeworlds/data/countryflags/AZ.png > +share/teeworlds/data/countryflags/BA.png > +share/teeworlds/data/countryflags/BB.png > +share/teeworlds/data/countryflags/BD.png > +share/teeworlds/data/countryflags/BE.png > +share/teeworlds/data/countryflags/BF.png > +share/teeworlds/data/countryflags/BG.png > +share/teeworlds/data/countryflags/BH.png > +share/teeworlds/data/countryflags/BI.png > +share/teeworlds/data/countryflags/BJ.png > +share/teeworlds/data/countryflags/BL.png > +share/teeworlds/data/countryflags/BM.png > +share/teeworlds/data/countryflags/BN.png > +share/teeworlds/data/countryflags/BO.png > +share/teeworlds/data/countryflags/BR.png > +share/teeworlds/data/countryflags/BS.png > +share/teeworlds/data/countryflags/BT.png > +share/teeworlds/data/countryflags/BW.png > +share/teeworlds/data/countryflags/BY.png > +share/teeworlds/data/countryflags/BZ.png > +share/teeworlds/data/countryflags/CA.png > +share/teeworlds/data/countryflags/CC.png > +share/teeworlds/data/countryflags/CD.png > +share/teeworlds/data/countryflags/CF.png > +share/teeworlds/data/countryflags/CG.png > +share/teeworlds/data/countryflags/CH.png > +share/teeworlds/data/countryflags/CI.png > +share/teeworlds/data/countryflags/CK.png > +share/teeworlds/data/countryflags/CL.png > +share/teeworlds/data/countryflags/CM.png > +share/teeworlds/data/countryflags/CN.png > +share/teeworlds/data/countryflags/CO.png > +share/teeworlds/data/countryflags/CR.png > +share/teeworlds/data/countryflags/CU.png > +share/teeworlds/data/countryflags/CV.png > +share/teeworlds/data/countryflags/CW.png > +share/teeworlds/data/countryflags/CX.png > +share/teeworlds/data/countryflags/CY.png > +share/teeworlds/data/countryflags/CZ.png > +share/teeworlds/data/countryflags/DE.png > +share/teeworlds/data/countryflags/DJ.png > +share/teeworlds/data/countryflags/DK.png > +share/teeworlds/data/countryflags/DM.png > +share/teeworlds/data/countryflags/DO.png > +share/teeworlds/data/countryflags/DZ.png > +share/teeworlds/data/countryflags/EC.png > +share/teeworlds/data/countryflags/EE.png > +share/teeworlds/data/countryflags/EG.png > +share/teeworlds/data/countryflags/EH.png > +share/teeworlds/data/countryflags/ER.png > +share/teeworlds/data/countryflags/ES.png > +share/teeworlds/data/countryflags/ET.png > +share/teeworlds/data/countryflags/FI.png > +share/teeworlds/data/countryflags/FJ.png > +share/teeworlds/data/countryflags/FK.png > +share/teeworlds/data/countryflags/FM.png > +share/teeworlds/data/countryflags/FO.png > +share/teeworlds/data/countryflags/FR.png > +share/teeworlds/data/countryflags/GA.png > +share/teeworlds/data/countryflags/GB.png > +share/teeworlds/data/countryflags/GD.png > +share/teeworlds/data/countryflags/GE.png > +share/teeworlds/data/countryflags/GF.png > +share/teeworlds/data/countryflags/GG.png > +share/teeworlds/data/countryflags/GH.png > +share/teeworlds/data/countryflags/GI.png > +share/teeworlds/data/countryflags/GL.png > +share/teeworlds/data/countryflags/GM.png > +share/teeworlds/data/countryflags/GN.png > +share/teeworlds/data/countryflags/GP.png > +share/teeworlds/data/countryflags/GQ.png > +share/teeworlds/data/countryflags/GR.png > +share/teeworlds/data/countryflags/GS.png > +share/teeworlds/data/countryflags/GT.png > +share/teeworlds/data/countryflags/GU.png > +share/teeworlds/data/countryflags/GW.png > +share/teeworlds/data/countryflags/GY.png > +share/teeworlds/data/countryflags/HK.png > +share/teeworlds/data/countryflags/HN.png > +share/teeworlds/data/countryflags/HR.png > +share/teeworlds/data/countryflags/HT.png > +share/teeworlds/data/countryflags/HU.png > +share/teeworlds/data/countryflags/ID.png > +share/teeworlds/data/countryflags/IE.png > +share/teeworlds/data/countryflags/IL.png > +share/teeworlds/data/countryflags/IM.png > +share/teeworlds/data/countryflags/IN.png > +share/teeworlds/data/countryflags/IO.png > +share/teeworlds/data/countryflags/IQ.png > +share/teeworlds/data/countryflags/IR.png > +share/teeworlds/data/countryflags/IS.png > +share/teeworlds/data/countryflags/IT.png > +share/teeworlds/data/countryflags/JE.png > +share/teeworlds/data/countryflags/JM.png > +share/teeworlds/data/countryflags/JO.png > +share/teeworlds/data/countryflags/JP.png > +share/teeworlds/data/countryflags/KE.png > +share/teeworlds/data/countryflags/KG.png > +share/teeworlds/data/countryflags/KH.png > +share/teeworlds/data/countryflags/KI.png > +share/teeworlds/data/countryflags/KM.png > +share/teeworlds/data/countryflags/KN.png > +share/teeworlds/data/countryflags/KP.png > +share/teeworlds/data/countryflags/KR.png > +share/teeworlds/data/countryflags/KW.png > +share/teeworlds/data/countryflags/KY.png > +share/teeworlds/data/countryflags/KZ.png > +share/teeworlds/data/countryflags/LA.png > +share/teeworlds/data/countryflags/LB.png > +share/teeworlds/data/countryflags/LC.png > +share/teeworlds/data/countryflags/LI.png > +share/teeworlds/data/countryflags/LK.png > +share/teeworlds/data/countryflags/LR.png > +share/teeworlds/data/countryflags/LS.png > +share/teeworlds/data/countryflags/LT.png > +share/teeworlds/data/countryflags/LU.png > +share/teeworlds/data/countryflags/LV.png > +share/teeworlds/data/countryflags/LY.png > +share/teeworlds/data/countryflags/MA.png > +share/teeworlds/data/countryflags/MC.png > +share/teeworlds/data/countryflags/MD.png > +share/teeworlds/data/countryflags/ME.png > +share/teeworlds/data/countryflags/MF.png > +share/teeworlds/data/countryflags/MG.png > +share/teeworlds/data/countryflags/MH.png > +share/teeworlds/data/countryflags/MK.png > +share/teeworlds/data/countryflags/ML.png > +share/teeworlds/data/countryflags/MM.png > +share/teeworlds/data/countryflags/MN.png > +share/teeworlds/data/countryflags/MO.png > +share/teeworlds/data/countryflags/MP.png > +share/teeworlds/data/countryflags/MQ.png > +share/teeworlds/data/countryflags/MR.png > +share/teeworlds/data/countryflags/MS.png > +share/teeworlds/data/countryflags/MT.png > +share/teeworlds/data/countryflags/MU.png > +share/teeworlds/data/countryflags/MV.png > +share/teeworlds/data/countryflags/MW.png > +share/teeworlds/data/countryflags/MX.png > +share/teeworlds/data/countryflags/MY.png > +share/teeworlds/data/countryflags/MZ.png > +share/teeworlds/data/countryflags/NA.png > +share/teeworlds/data/countryflags/NC.png > +share/teeworlds/data/countryflags/NE.png > +share/teeworlds/data/countryflags/NF.png > +share/teeworlds/data/countryflags/NG.png > +share/teeworlds/data/countryflags/NI.png > +share/teeworlds/data/countryflags/NL.png > +share/teeworlds/data/countryflags/NO.png > +share/teeworlds/data/countryflags/NP.png > +share/teeworlds/data/countryflags/NR.png > +share/teeworlds/data/countryflags/NU.png > +share/teeworlds/data/countryflags/NZ.png > +share/teeworlds/data/countryflags/OM.png > +share/teeworlds/data/countryflags/PA.png > +share/teeworlds/data/countryflags/PE.png > +share/teeworlds/data/countryflags/PF.png > +share/teeworlds/data/countryflags/PG.png > +share/teeworlds/data/countryflags/PH.png > +share/teeworlds/data/countryflags/PK.png > +share/teeworlds/data/countryflags/PL.png > +share/teeworlds/data/countryflags/PM.png > +share/teeworlds/data/countryflags/PN.png > +share/teeworlds/data/countryflags/PR.png > +share/teeworlds/data/countryflags/PT.png > +share/teeworlds/data/countryflags/PW.png > +share/teeworlds/data/countryflags/PY.png > +share/teeworlds/data/countryflags/QA.png > +share/teeworlds/data/countryflags/RE.png > +share/teeworlds/data/countryflags/RO.png > +share/teeworlds/data/countryflags/RS.png > +share/teeworlds/data/countryflags/RU.png > +share/teeworlds/data/countryflags/RW.png > +share/teeworlds/data/countryflags/SA.png > +share/teeworlds/data/countryflags/SB.png > +share/teeworlds/data/countryflags/SC.png > +share/teeworlds/data/countryflags/SD.png > +share/teeworlds/data/countryflags/SE.png > +share/teeworlds/data/countryflags/SG.png > +share/teeworlds/data/countryflags/SH.png > +share/teeworlds/data/countryflags/SI.png > +share/teeworlds/data/countryflags/SK.png > +share/teeworlds/data/countryflags/SL.png > +share/teeworlds/data/countryflags/SM.png > +share/teeworlds/data/countryflags/SN.png > +share/teeworlds/data/countryflags/SO.png > +share/teeworlds/data/countryflags/SR.png > +share/teeworlds/data/countryflags/SS.png > +share/teeworlds/data/countryflags/ST.png > +share/teeworlds/data/countryflags/SV.png > +share/teeworlds/data/countryflags/SX.png > +share/teeworlds/data/countryflags/SY.png > +share/teeworlds/data/countryflags/SZ.png > +share/teeworlds/data/countryflags/TC.png > +share/teeworlds/data/countryflags/TD.png > +share/teeworlds/data/countryflags/TF.png > +share/teeworlds/data/countryflags/TG.png > +share/teeworlds/data/countryflags/TH.png > +share/teeworlds/data/countryflags/TJ.png > +share/teeworlds/data/countryflags/TK.png > +share/teeworlds/data/countryflags/TL.png > +share/teeworlds/data/countryflags/TM.png > +share/teeworlds/data/countryflags/TN.png > +share/teeworlds/data/countryflags/TO.png > +share/teeworlds/data/countryflags/TR.png > +share/teeworlds/data/countryflags/TT.png > +share/teeworlds/data/countryflags/TV.png > +share/teeworlds/data/countryflags/TW.png > +share/teeworlds/data/countryflags/TZ.png > +share/teeworlds/data/countryflags/UA.png > +share/teeworlds/data/countryflags/UG.png > +share/teeworlds/data/countryflags/US.png > +share/teeworlds/data/countryflags/UY.png > +share/teeworlds/data/countryflags/UZ.png > +share/teeworlds/data/countryflags/VA.png > +share/teeworlds/data/countryflags/VC.png > +share/teeworlds/data/countryflags/VE.png > +share/teeworlds/data/countryflags/VG.png > +share/teeworlds/data/countryflags/VI.png > +share/teeworlds/data/countryflags/VN.png > +share/teeworlds/data/countryflags/VU.png > +share/teeworlds/data/countryflags/WF.png > +share/teeworlds/data/countryflags/WS.png > +share/teeworlds/data/countryflags/XEN.png > +share/teeworlds/data/countryflags/XNI.png > +share/teeworlds/data/countryflags/XSC.png > +share/teeworlds/data/countryflags/XWA.png > +share/teeworlds/data/countryflags/YE.png > +share/teeworlds/data/countryflags/ZA.png > +share/teeworlds/data/countryflags/ZM.png > +share/teeworlds/data/countryflags/ZW.png > +share/teeworlds/data/countryflags/default.png > +share/teeworlds/data/countryflags/index.txt > share/teeworlds/data/debug_font.png > +share/teeworlds/data/demo_buttons.png > share/teeworlds/data/editor/ > share/teeworlds/data/editor/background.png > share/teeworlds/data/editor/checker.png > share/teeworlds/data/editor/cursor.png > +share/teeworlds/data/editor/desert_main.rules > share/teeworlds/data/editor/entities.png > +share/teeworlds/data/editor/grass_main.rules > +share/teeworlds/data/editor/jungle_main.rules > +share/teeworlds/data/editor/winter_main.rules > share/teeworlds/data/emoticons.png > -share/teeworlds/data/fonts/ > -share/teeworlds/data/fonts/default_font10.png > -share/teeworlds/data/fonts/default_font10.tfnt > -share/teeworlds/data/fonts/default_font10_b.png > -share/teeworlds/data/fonts/default_font11.png > -share/teeworlds/data/fonts/default_font11.tfnt > -share/teeworlds/data/fonts/default_font11_b.png > -share/teeworlds/data/fonts/default_font12.png > -share/teeworlds/data/fonts/default_font12.tfnt > -share/teeworlds/data/fonts/default_font12_b.png > -share/teeworlds/data/fonts/default_font13.png > -share/teeworlds/data/fonts/default_font13.tfnt > -share/teeworlds/data/fonts/default_font13_b.png > -share/teeworlds/data/fonts/default_font14.png > -share/teeworlds/data/fonts/default_font14.tfnt > -share/teeworlds/data/fonts/default_font14_b.png > -share/teeworlds/data/fonts/default_font15.png > -share/teeworlds/data/fonts/default_font15.tfnt > -share/teeworlds/data/fonts/default_font15_b.png > -share/teeworlds/data/fonts/default_font16.png > -share/teeworlds/data/fonts/default_font16.tfnt > -share/teeworlds/data/fonts/default_font16_b.png > -share/teeworlds/data/fonts/default_font17.png > -share/teeworlds/data/fonts/default_font17.tfnt > -share/teeworlds/data/fonts/default_font17_b.png > -share/teeworlds/data/fonts/default_font18.png > -share/teeworlds/data/fonts/default_font18.tfnt > -share/teeworlds/data/fonts/default_font18_b.png > -share/teeworlds/data/fonts/default_font19.png > -share/teeworlds/data/fonts/default_font19.tfnt > -share/teeworlds/data/fonts/default_font19_b.png > -share/teeworlds/data/fonts/default_font20.png > -share/teeworlds/data/fonts/default_font20.tfnt > -share/teeworlds/data/fonts/default_font20_b.png > -share/teeworlds/data/fonts/default_font36.png > -share/teeworlds/data/fonts/default_font36.tfnt > -share/teeworlds/data/fonts/default_font36_b.png > -share/teeworlds/data/fonts/default_font8.png > -share/teeworlds/data/fonts/default_font8.tfnt > -share/teeworlds/data/fonts/default_font8_b.png > -share/teeworlds/data/fonts/default_font9.png > -share/teeworlds/data/fonts/default_font9.tfnt > -share/teeworlds/data/fonts/default_font9_b.png > +share/teeworlds/data/file_icons.png > share/teeworlds/data/game.png > +share/teeworlds/data/gui_buttons.png > share/teeworlds/data/gui_cursor.png > +share/teeworlds/data/gui_icons.png > share/teeworlds/data/gui_logo.png > +share/teeworlds/data/languages/ > +share/teeworlds/data/languages/belarusian.txt > +share/teeworlds/data/languages/bosnian.txt > +share/teeworlds/data/languages/brazilian_portuguese.txt > +share/teeworlds/data/languages/bulgarian.txt > +share/teeworlds/data/languages/czech.txt > +share/teeworlds/data/languages/danish.txt > +share/teeworlds/data/languages/dutch.txt > +share/teeworlds/data/languages/finnish.txt > +share/teeworlds/data/languages/french.txt > +share/teeworlds/data/languages/german.txt > +share/teeworlds/data/languages/hungarian.txt > +share/teeworlds/data/languages/index.txt > +share/teeworlds/data/languages/italian.txt > +share/teeworlds/data/languages/kyrgyz.txt > +share/teeworlds/data/languages/norwegian.txt > +share/teeworlds/data/languages/polish.txt > +share/teeworlds/data/languages/portuguese.txt > +share/teeworlds/data/languages/romanian.txt > +share/teeworlds/data/languages/russian.txt > +share/teeworlds/data/languages/serbian.txt > +share/teeworlds/data/languages/slovak.txt > +share/teeworlds/data/languages/spanish.txt > +share/teeworlds/data/languages/swedish.txt > +share/teeworlds/data/languages/turkish.txt > +share/teeworlds/data/languages/ukrainian.txt > share/teeworlds/data/mapres/ > share/teeworlds/data/mapres/bg_cloud1.png > share/teeworlds/data/mapres/bg_cloud2.png > share/teeworlds/data/mapres/bg_cloud3.png > +share/teeworlds/data/mapres/desert_doodads.png > share/teeworlds/data/mapres/desert_main.png > share/teeworlds/data/mapres/desert_mountains.png > +share/teeworlds/data/mapres/desert_mountains2.png > share/teeworlds/data/mapres/desert_sun.png > +share/teeworlds/data/mapres/generic_deathtiles.png > share/teeworlds/data/mapres/generic_unhookable.png > share/teeworlds/data/mapres/grass_doodads.png > share/teeworlds/data/mapres/grass_main.png > +share/teeworlds/data/mapres/jungle_background.png > +share/teeworlds/data/mapres/jungle_deathtiles.png > share/teeworlds/data/mapres/jungle_doodads.png > share/teeworlds/data/mapres/jungle_main.png > -share/teeworlds/data/mapres/jungle_night.png > -share/teeworlds/data/mapres/jungle_night2.png > +share/teeworlds/data/mapres/jungle_midground.png > +share/teeworlds/data/mapres/jungle_unhookables.png > share/teeworlds/data/mapres/moon.png > share/teeworlds/data/mapres/mountains.png > share/teeworlds/data/mapres/snow.png > @@ -211,12 +457,17 @@ share/teeworlds/data/mapres/stars.png > share/teeworlds/data/mapres/sun.png > share/teeworlds/data/mapres/winter_doodads.png > share/teeworlds/data/mapres/winter_main.png > +share/teeworlds/data/mapres/winter_mountains.png > +share/teeworlds/data/mapres/winter_mountains2.png > +share/teeworlds/data/mapres/winter_mountains3.png > share/teeworlds/data/maps/ > share/teeworlds/data/maps/ctf1.map > share/teeworlds/data/maps/ctf2.map > share/teeworlds/data/maps/ctf3.map > share/teeworlds/data/maps/ctf4.map > share/teeworlds/data/maps/ctf5.map > +share/teeworlds/data/maps/ctf6.map > +share/teeworlds/data/maps/ctf7.map > share/teeworlds/data/maps/dm1.map > share/teeworlds/data/maps/dm2.map > share/teeworlds/data/maps/dm6.map >