Commit graph

847 commits

Author SHA1 Message Date
Yamagi Burmeister
229e13e6f4 Redirect stdout and stderr into files 2012-06-20 13:39:18 +02:00
Yamagi Burmeister
c0e9a6f045 Make Quake II compatible with unicode directory names
This changes employs a horrible hack to connect the ASCII Quake II to
the UTF-16 WinAPI. The path to "My Documentes" is read in UTF-16, then
converted to a old "DOS style path" with 8.3 characters. This DOS path
has by convention no UTF-16 characters in it and can be converted into
a normal ASCII string. This ASCII string is the path used by Yamagi
Quake II. The conversion logic will fail if the "Windows to DOS
filename transistion" is deactivated in the registry (it's on by
default). In that case no homedir is used and the "Windows Roaming
Mechanism" kicks in.
2012-06-20 13:39:18 +02:00
Yamagi Burmeister
e1f338f59b Reformat the headers 2012-06-18 10:46:31 +02:00
Yamagi Burmeister
e3690bcaab Bump version number to 4.90
This is done to distinguish the upcoming "Yamagi Quake II - Windows Test I"
from the normal 4.21 version.
2012-06-18 09:51:59 +02:00
Yamagi Burmeister
63cdbff0e3 Merge branch 'windows' into cleanup 2012-06-14 12:30:52 +02:00
Yamagi Burmeister
7b54f3d668 Merge branch 'master' into windows
Conflicts:
	src/client/sound/snd_al.c
2012-06-14 12:27:09 +02:00
Yamagi Burmeister
61b10f12da Fix a crash when entering water with s_openal = 0 2012-06-14 12:24:29 +02:00
Yamagi Burmeister
341014eda0 Merge branch 'scanbuild' into windows 2012-06-14 12:18:15 +02:00
Yamagi Burmeister
73e6dc6307 Revert "Convert random() to randk() and crandom() to crandk()"
This reverts commit 12ce981d64.
2012-06-14 12:12:57 +02:00
Yamagi Burmeister
060235e7dd Merge branch 'windows' into cleanup
Conflicts:
	src/common/filesystem.c
	src/sdl/input.c
	src/sdl/refresh.c
	src/unix/system.c
2012-06-11 11:21:16 +02:00
Yamagi Burmeister
2c0148bab5 Enlargen MAX_OSPATH to 256 on Windows
This is necessary due to the extrem long homedir-pathes in some Windows
localizations. While it would be nice to have the same value on all
platform it would break existing savegames and don't think that it's
worth that.
2012-06-11 10:25:12 +02:00
Yamagi Burmeister
47707a728e Use Windows headers on Windows 2012-06-11 10:18:44 +02:00
Yamagi Burmeister
e70067ceba Refactor the "home"-path finding logic into own functions
With this change the homedir is no longer selected in the filesystem,
but in platform dependend functions. This allows us to use WINABI calls
for selection, resulting using the apropriate diretory on localized
versions of Windows XP.
2012-06-11 09:55:54 +02:00
Yamagi Burmeister
e8eea857e4 Fix another buffer overflow, this time when writing the config.cfg
This overflow is a problem on all platforms but manifested itself
especially on a german Windows XP due to it's long profile path.
2012-06-10 18:45:14 +02:00
Yamagi Burmeister
6c2f97927e Add a missing brace twisting the logic of the Windows XP check 2012-06-09 11:42:35 +02:00
Yamagi Burmeister
87e62a3724 Reformat 2012-06-08 13:01:56 +02:00
Yamagi Burmeister
26b15dbe07 Reformat 2012-06-08 12:23:01 +02:00
Yamagi Burmeister
9ad40b2a17 Cleanup and reformat. 2012-06-07 15:40:58 +02:00
Yamagi Burmeister
ac6748e7d2 Merge the collision model back into one file 2012-06-07 15:04:45 +02:00
Yamagi Burmeister
d12f0c642f Recombine the message handling back into one file 2012-06-07 14:33:09 +02:00
Yamagi Burmeister
e0faf784a6 Move stuff from common/common/ to common/ 2012-06-07 13:54:08 +02:00
Yamagi Burmeister
56aff1dc89 Recombine the command parser in one file
Spliting it into several files seemed logical but in retrospect it was
a bad idea, unnecessary complicating the code.
2012-06-07 13:35:33 +02:00
Yamagi Burmeister
16e57ede33 Fix some indention issues 2012-06-06 18:06:08 +02:00
Yamagi Burmeister
39677c1b0f Fix a potential buffer overflow 2012-06-06 17:55:37 +02:00
Yamagi Burmeister
d8e35b82c7 Reformat the sound system code
caedes and some other people will probably kill me for this, but I'm the
idiot who has to maintain the code. And that's much easier if it's in a
readable und writeable state.
2012-06-06 11:13:07 +02:00
Yamagi Burmeister
51cc3369b1 Provide an optimized case for mixing 16 bit / 2 chan sound
With sound quality "high" nearly all sound is provided as 16 bit PCM
with 2 channels. Since most players use this setting, provide an optimed
case for it. This should also solve the cracking due to overshot
soundbuffers, which was especially noticeable on Windows. This changes
only effects the old SDL soundbackend and not OpenAL.
2012-06-06 10:34:36 +02:00
Yamagi Burmeister
15400b2133 Use memset() instead of array magic 2012-06-06 10:02:55 +02:00
Yamagi Burmeister
272b897919 Reformat snd_mix.c 2012-06-06 09:58:06 +02:00
Yamagi Burmeister
f5233db0b2 Add IPv6 support for Windows
This is essentially a port of unix/network.c to windows.
2012-06-06 09:48:48 +02:00
Yamagi Burmeister
0c74a1af75 Create profile in Documents instead of AppData 2012-06-05 14:28:34 +02:00
Yamagi Burmeister
d17d996dc5 Import Sys_Mkdir() into the refresher 2012-06-05 14:19:29 +02:00
Yamagi Burmeister
7715592aaa Write config data in AppData
Under Windows all config data is written to %USERPROFILE%\AppData\
Local\YamagiQ2. To archive this code was added that translates Windows
pathes with backslashes into Unix pathes with normal slashes.
2012-06-05 12:52:44 +02:00
Yamagi Burmeister
0b9ec45eb7 Remove leftovers from the softrenderer 2012-06-05 10:54:47 +02:00
Yamagi Burmeister
de3e53069f Remove Alt-Tab handling. It's done by SDL 2012-06-05 10:50:24 +02:00
Yamagi Burmeister
a55d717a80 Replace atoi() with strtol() in Windows code 2012-06-05 10:46:15 +02:00
Yamagi Burmeister
af83f80dff Add header guards to new headers 2012-06-05 10:42:30 +02:00
Yamagi Burmeister
28be8cda8e Work around the missing _controlfp prototypes in MinGW 2012-06-05 10:29:20 +02:00
Yamagi Burmeister
58c3b22c8a Add platform defines for Windows 2012-06-05 10:17:01 +02:00
Yamagi Burmeister
ca18af254e Remove Sys_AppActivate()
This code is unnecessary because SDL handles all activation events,
brings the Window into foreground, etc.
2012-06-05 10:11:29 +02:00
Yamagi Burmeister
21ab0de692 Remove support for the Windows clipboard
This was just broken and rewriting it is not worth the efford
2012-06-05 10:09:24 +02:00
Yamagi Burmeister
d1008a564d Port OpenAL to Windows and enable it by default 2012-06-05 09:57:30 +02:00
Yamagi Burmeister
4021087a38 Make the SDL sounddriver selectable via s_sdldriver
This is necessary since the default "waveout" driver on windows is
incompatible to Quake II (due to too big output buffers) and "dsound"
can't be forced since it's not available on some installations. The
default driver is choosen by platform:

Windows -> dsound
FreeBSD -> dsp
Linux   -> alsa
2012-06-05 09:03:46 +02:00
Yamagi Burmeister
2629f908ae Initialize randk() and startup 2012-06-04 16:24:37 +02:00
Yamagi Burmeister
ea02b14ca7 Poke the input subsystem at every frame to process events 2012-06-04 13:51:46 +02:00
Yamagi Burmeister
6b650e9ea7 Initialize the input backend 2012-06-04 13:40:23 +02:00
Yamagi Burmeister
6b7bc06074 opengl32.dll is the default gldriver on Windows 2012-06-04 13:13:14 +02:00
Yamagi Burmeister
27de5f3a6f Fall back to opengl32.dll if the gldriver couldn't be loaded 2012-06-04 13:10:12 +02:00
Yamagi Burmeister
5523cc8de2 Use correct name to query the refresher 2012-06-04 12:52:54 +02:00
Yamagi Burmeister
51869fbc9d Add qgl.c for Windows
This file was taken from ioQuake2 and altered for inclusion in Yamagi
Quake II.
2012-06-04 12:42:55 +02:00
Yamagi Burmeister
0d46fed529 Add Windows stuff
This code was taken from ioQuake2 and altered for inclusion in Yamagi
Quake II
2012-06-04 12:41:29 +02:00
Yamagi Burmeister
d0146dc4d5 Hide native JPEG and TGA loading functions behind RETEXTURE 2012-06-04 12:40:58 +02:00
Yamagi Burmeister
b42f208fd0 Include windows.h in refresh/header/local.h 2012-06-04 12:26:49 +02:00
Yamagi Burmeister
0365c93138 Add glwindow.h for Windows
This file was taken from ioQuake2 and altered to work with Yamagi Quake
II
2012-06-04 12:08:18 +02:00
Yamagi Burmeister
b8792c7fc0 Use correct SDL include path under Windows and hide X11 stuff 2012-06-04 11:52:07 +02:00
Yamagi Burmeister
51ca0ca673 Define missing OpenGL extensions for Windows
While this is not the 100% correct way, it's much cleaner than just
importing th whole header files.
2012-06-04 11:46:08 +02:00
Yamagi Burmeister
86f89fce22 Implement vid.c for Windows
This file was taken from ioQuake2 and modified to work with Yamagi Quake
II. It may not be perfect yet, but should be good enough to the client
up and running.
2012-06-04 11:09:43 +02:00
Yamagi Burmeister
5d272eeab8 strsep() is a FreeBSDism. Switch over to strtok(). 2012-06-04 10:53:55 +02:00
Yamagi Burmeister
a4609fc42b Use correct include pathes to SDL under Windows 2012-06-04 10:02:01 +02:00
Yamagi Burmeister
7d3b9a5c00 Ignore errors of AllocConsole()
This errors are harmless and thrown when the process is already attached
to a console. Since the dedicated server is a console application the
console is created by Windows at startup...
2012-06-04 09:13:30 +02:00
Yamagi Burmeister
4e37958b63 Stub Sys_Init() for Unix and call it while initializing 2012-06-04 09:13:30 +02:00
Yamagi Burmeister
32dc525124 Stub NET_Init() for Unix and call it while initializing 2012-06-04 09:13:30 +02:00
Yamagi Burmeister
d2177bb618 Open binary files in mode "rb" instead of "r"
This subtile bug didn't show on unixoid platforms, but led to problems
on Windows.
2012-06-04 09:13:30 +02:00
Yamagi Burmeister
991ff17f1b Implement Sys_GetCurrentDirectory() 2012-06-04 09:13:30 +02:00
Yamagi Burmeister
1a3b54b27e Move glob.c and glob.h to common
We need glob_match() for Windows
2012-06-04 09:13:30 +02:00
Yamagi Burmeister
280a432161 Comment Sys_AppActivate() since cl_hwnd will be ported later 2012-06-04 09:13:30 +02:00
Yamagi Burmeister
f3bead4f6b Add Windows network functions in network.c
This file was taken from ioQuake2 and refactored to match Yamagi Quake
II. It would be nice to have IPv6 support and to remove the old IPX
cruft, but that happen now.
2012-06-04 09:13:30 +02:00
Yamagi Burmeister
0b226ce838 Include ctype.h and silence some warnings 2012-06-04 09:13:30 +02:00
Yamagi Burmeister
263156bda7 Implement system depended file handling
Those functions were taken from ioQuake2 and refactored to match Yamagi
Quake II.
2012-06-04 09:13:30 +02:00
Yamagi Burmeister
bd1070eff2 Remove FS_DeletePath() and Sys_Rmdir()
Thise functions where added with the filesystem rewrite but never used.
Removing them saves us from implementing Sys_Rmdir() for Windows.
2012-06-04 09:13:30 +02:00
Yamagi Burmeister
a6f22f0f5a Implement Sys_Milliseconds
This function was taken from ioQuakeII and refactored to match Yamagi
Quake II
2012-06-04 09:13:30 +02:00
Yamagi Burmeister
05f7e37c77 Add memory handling functions in mem.c
This code was taken from ioQuake2, refactored into an own file and
altered for the inclusion in Yamagi Quake II.
2012-06-04 09:13:30 +02:00
Yamagi Burmeister
e8d44459a4 Use correct types and remove unused variables 2012-06-04 09:13:30 +02:00
Yamagi Burmeister
d9560b4020 Hide calls to CL_Shutdown() behind !DEDICATED_ONLY 2012-06-04 09:13:30 +02:00
Yamagi Burmeister
8ca30adf46 Do not set the FPU state
This is a workaround for a MinGW bug and should be resolved before the
first CFT is released. A TODO item was added in a preceding commit.
2012-06-04 09:13:30 +02:00
Yamagi Burmeister
39ae083340 Remove DirectX variables 2012-06-04 09:13:30 +02:00
Yamagi Burmeister
1782c5ab30 Add winquake.h
This header containts Windows specific stuff. It was taken from ioQuake2
and cleaned up for inclusion in Yamagi Quake II.
2012-06-04 09:13:30 +02:00
Yamagi Burmeister
f0e23f199d Add resource.h
This is the "Windows resource file", required by every Windows
application
2012-06-04 09:13:30 +02:00
Yamagi Burmeister
0eb042555b Add conproc.c and the coresponding header
conproc.c implements support functions for the console windows used by
the dedicated server. It was taken from ioQuake2 and cleaned up for the
inclusion in Yamagi Quake II.
2012-06-04 09:13:30 +02:00
Yamagi Burmeister
4adc6a2ca2 Add windows/system.c
This files contains most support functions for windows and the main
loop. It was taken from Icculus Quake II and cleaned up. This early
version may still have bugs.
2012-06-04 09:13:30 +02:00
Yamagi Burmeister
ce3d61ef61 Remove unused Sys_CopyProtect stup 2012-06-04 09:13:29 +02:00
Yamagi Burmeister
cac409b116 Remove old setuid() magic 2012-06-04 09:13:29 +02:00
Yamagi Burmeister
66c6122bbb Back out if Quake II is run as root or if eUID != rUID
This is a sanity check to prevent stupid users from running Quake II as
root or as a setuid binary. Quake II is such a mess that running it as
root or setuid is just reckless.
2012-06-04 09:13:29 +02:00
Yamagi Burmeister
83e069feb2 Abort if the clipplane is NULL. 2012-06-04 09:13:29 +02:00
Yamagi Burmeister
e11a15308b Use Com_Error instead of Sys_Error 2012-06-04 09:13:29 +02:00
Yamagi Burmeister
9823a23a91 Initialize sounds[] to avoid garbage branch conditions down below 2012-06-04 09:13:29 +02:00
Yamagi Burmeister
1deb069085 Remove dead assignments 2012-06-04 09:13:29 +02:00
Yamagi Burmeister
afd2f4538c Return in case of possible overflow 2012-06-04 09:13:29 +02:00
Yamagi Burmeister
41a704a13e Do not turn stack address into a global variable 2012-06-04 09:13:29 +02:00
Yamagi Burmeister
36a41f9746 Prevent a divion by zero 2012-06-04 09:13:29 +02:00
Yamagi Burmeister
b1dfcb7aff Convert random() to randk() and crandom() to crandk() 2012-06-04 09:13:29 +02:00
Yamagi Burmeister
9f45bd38f2 Ensure that pseudo random numbers are always >0 2012-06-04 09:13:29 +02:00
Yamagi Burmeister
35e5bbb48b Convert rand(), crand() and frand() to randk(), crandk() and frandk() 2012-06-04 09:13:29 +02:00
Yamagi Burmeister
99520d1331 Implemented the new random generator in shared.h instead of common.h 2012-06-04 09:13:29 +02:00
Yamagi Burmeister
28c200a2e8 Implement crandk() and frandk() and remove old functions 2012-06-04 09:13:29 +02:00
Yamagi Burmeister
253373dbda Seed the new PRNG at startup 2012-06-04 09:13:29 +02:00
Yamagi Burmeister
056f4d287b Add rand.c, an implementation of G. Marsaglia KISS PRNG 2012-06-04 09:13:29 +02:00
Yamagi Burmeister
edae2b0473 Change atof() to strtod() 2012-06-04 09:13:28 +02:00
Yamagi Burmeister
e9c90e16a9 Change atoi() to strtol() 2012-06-04 09:13:28 +02:00
Yamagi Burmeister
0aa75f8704 Explicit cast 2012-06-04 09:13:28 +02:00
Yamagi Burmeister
9ec98a79d2 Fix a potential buffer overflow 2012-06-04 09:12:59 +02:00
Yamagi Burmeister
60dfaee439 Remove old setuid() magic 2012-06-02 16:46:25 +02:00
Yamagi Burmeister
f28e005e1e Back out if Quake II is run as root or if eUID != rUID
This is a sanity check to prevent stupid users from running Quake II as
root or as a setuid binary. Quake II is such a mess that running it as
root or setuid is just reckless.
2012-06-02 16:33:12 +02:00
Yamagi Burmeister
deaeac42b7 Abort if the clipplane is NULL. 2012-06-02 13:40:49 +02:00
Yamagi Burmeister
6cafb22a9c Use Com_Error instead of Sys_Error 2012-06-02 13:31:20 +02:00
Yamagi Burmeister
42da811355 Initialize sounds[] to avoid garbage branch conditions down below 2012-06-02 13:29:08 +02:00
Yamagi Burmeister
6befae2ffd Remove dead assignments 2012-06-02 13:21:22 +02:00
Yamagi Burmeister
bf02575b1e Return in case of possible overflow 2012-06-02 13:18:33 +02:00
Yamagi Burmeister
ef3c9bf620 Do not turn stack address into a global variable 2012-06-02 13:06:12 +02:00
Yamagi Burmeister
4ece3714aa Prevent a divion by zero 2012-06-02 12:56:07 +02:00
Yamagi Burmeister
12ce981d64 Convert random() to randk() and crandom() to crandk() 2012-06-02 12:30:20 +02:00
Yamagi Burmeister
fc2d67bac1 Ensure that pseudo random numbers are always >0 2012-06-02 12:11:14 +02:00
Yamagi Burmeister
40ff7a6b09 Convert rand(), crand() and frand() to randk(), crandk() and frandk() 2012-06-02 11:55:12 +02:00
Yamagi Burmeister
a0ccf86660 Implemented the new random generator in shared.h instead of common.h 2012-06-02 11:32:45 +02:00
Yamagi Burmeister
effc7b3c35 Implement crandk() and frandk() and remove old functions 2012-06-02 11:22:54 +02:00
Yamagi Burmeister
7bd1392a5a Seed the new PRNG at startup 2012-06-02 10:59:43 +02:00
Yamagi Burmeister
97f7ba0610 Add rand.c, an implementation of G. Marsaglia KISS PRNG 2012-06-02 10:56:40 +02:00
Yamagi Burmeister
881b935b65 Change atof() to strtod() 2012-06-02 10:33:28 +02:00
Yamagi Burmeister
67dbe816c9 Change atoi() to strtol() 2012-06-02 10:24:52 +02:00
Yamagi Burmeister
fc679896f5 Explicit cast 2012-06-02 09:07:20 +02:00
Yamagi Burmeister
32fe0ba21f Prevent a buffer overflow. 2012-06-01 18:13:30 +02:00
Yamagi Burmeister
f9837b9130 Initialize variables (they may be used uninitialzed further down below) 2012-06-01 17:59:00 +02:00
Yamagi Burmeister
0d8f990d14 Ensure that variables that point to data on the stack are cleared 2012-06-01 17:20:05 +02:00
Yamagi Burmeister
0e1520d29a Remove dead code and assignments 2012-06-01 17:05:40 +02:00
Yamagi Burmeister
e9605e8a8b Use AL_BUFFERS_QUEUED at stream shutdown. 2012-05-26 12:03:01 +02:00
Yamagi Burmeister
492b7c1a2b Convert whitespace indentation to tabs 2012-05-26 12:00:48 +02:00
Yamagi Burmeister
28c4edfd69 Clear buffers before deleting the sources
This fixes a very long lasting shutdown procedure which made it look
like Quake II freezed. Especially on slow machines it was a problem.
2012-05-26 11:37:47 +02:00
Yamagi Burmeister
37132d8ac9 Bump version number to 4.21 2012-05-26 09:45:57 +02:00
Daniel Gibson
cf41d61d72 Add OpenAL to printed Client build options 2012-05-17 15:06:45 +02:00
Daniel Gibson
62d76b3d40 Fix segfault when s_openal=0 but USE_OPENAL=1
If the game was compiled with openal support (USE_OPENAL is defined),
but it's disabled via cvar (set s_openal 0) there could be segfaults
when calls to openal where done anyway, because the check
if(sound_started == SS_OAL) was forgotten.
This is fixed now.
2012-05-17 14:47:05 +02:00
Yamagi Burmeister
5bf1ee670d Fix s_show when OpenAL is used 2012-05-12 15:11:17 +02:00
Yamagi Burmeister
aff51633d0 Add a sanity check against buffer overflows to S_BuildSoundList 2012-05-12 14:46:13 +02:00
Yamagi Burmeister
4a414b588e Fix a buffer overflow in AL_AddLoopSounds
This fixes a crash in mine4.bsp and most likely some other problems.
The bug was reported by "mxmvasilyev0 [at] gmail [dot] com" and tracked
as Github issue #1.
2012-05-12 14:42:15 +02:00
Yamagi Burmeister
b6325d7858 Remove unused variables and dead code (patch submitted by Christoph
Mallon)
2012-04-30 10:02:58 +02:00
Christoph Mallon
ab034114b4 Whitespace fixes. 2012-04-30 08:25:59 +02:00
Daniel Gibson
ebccfc63df Remove need to link against libopenal
libopenal is loaded with dlopen() and for all used alBla and alcBla functions
there are function pointers (just like thee qgl stuff for OpenGL).
Thus there's no need to link against libopenal on compile-time.

There were a few occurences of "normal" openal functions (al* instead of qal*)
- they are fixed now.

This allows to use a yquake2 version compield with WITH_OPENAL=yes to be used
on systems that have no libopenal installed (the standard SDL sound backend
will be used then).
2012-04-29 15:24:14 +02:00
Yamagi Burmeister
4203bed129 Bump version number to 4.20 2012-04-29 08:08:21 +00:00
Daniel Gibson
965fedf9ae It's X11GAMMA with 2 "m". 2012-04-28 20:04:24 +00:00
Daniel Gibson
2b7ef996ed Fall back to "libGL.so.1" if gl_driver set in (default) config fails 2012-04-28 20:02:15 +00:00
Daniel Gibson
632bd0a776 Enforce "C" lokale, this time correctly
Now when some braindead alsa/ladspa plugin calls setlocale(LC_ALL, "") the 
locale is (still) set to "C" and not some other locale that may fsck up printf
and scanf formats
2012-04-28 19:39:36 +00:00
Daniel Gibson
669a78de12 Compiletime options in Makefile overwritable from console
And a small fix that shuts up a compiler warning
2012-04-28 19:38:07 +00:00
Daniel Gibson
53d54b1f23 Merge OpenAL branch 2012-04-28 15:58:50 +00:00
Daniel Gibson
31f9af817f Last fixes and cleanups for OpenAL support
* New license header in snd_al.c
* README fixes
* Fix printing of used OpenAL device
* Cleanup in snd_al.c
2012-04-28 15:44:14 +00:00
Yamagi Burmeister
c62e5ac85b - Implement AL_UnqueueRawSamples() and use it to stop the Vorbis playback
imediatly
- Increase Vorbis buffers to 64. 24 were to few
2012-04-27 14:06:08 +00:00
Yamagi Burmeister
2b6389a471 Filter sound samples (not the music) when under water 2012-04-27 13:55:45 +00:00
Yamagi Burmeister
1a0b4ebad5 Do not set / enable / show the s_openal CVAR if the binary is build
without OpenAL support. OpenAL is enabled in the default Makefile and if
it's disabled, it's shown at startup.
2012-04-27 12:00:22 +00:00
Yamagi Burmeister
905b31a918 Integrate OpenAL into the options system 2012-04-25 10:09:30 +00:00
Yamagi Burmeister
a388254252 Fix a missmerge 2012-04-25 10:09:16 +00:00
Yamagi Burmeister
2c3c203097 Merge out new options framework from the trunk 2012-04-25 09:57:17 +00:00
Yamagi Burmeister
38943b3573 Print build options at startup 2012-04-25 09:50:06 +00:00
Yamagi Burmeister
048f680701 Hide ZIP support behind ZIP 2012-04-25 09:12:02 +00:00