1. Merge fixes for long known bugs from hackndev[1] version

3507529 64bit fix ... now works on amd64 as well ;-)
95d2af2 Replaced all those insecure sprintf's with snprintf's (partial)
33a1a8d Fix sigsegv on hero reaching topmost or leftmost border of the game area
436bbfc Push back network stack underflow bugfix
160e4d6 Prevent buffer overflow
ee911ba make the server invulnerable to long names
2. Add patch from gentoo linux[2] to use unmodified game data.
3. Support staging
4. Use options framework

[1] https://github.com/hackndev/0verkill
[2] http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/games-action/0verkill/files/0verkill-0.16-gentoo-paths.patch?revision=1.1&view=markup

PR:		ports/184252
Submitted by:	Vladimir Kondratiev <wulf@cicgroup.ru>
This commit is contained in:
mich
2013-12-23 16:32:05 +00:00
parent 6897cc4713
commit 636ca3fd95
8 changed files with 391 additions and 279 deletions
+19 -31
View File
@@ -3,7 +3,7 @@
PORTNAME= 0verkill
PORTVERSION= 0.16
PORTREVISION= 1
PORTREVISION= 2
CATEGORIES= games
MASTER_SITES= http://artax.karlin.mff.cuni.cz/~brain/0verkill/release/
EXTRACT_SUFX= .tgz
@@ -15,51 +15,39 @@ LICENSE= GPLv2
GNU_CONFIGURE= yes
.if defined(WITHOUT_X11)
PLIST_SUB= X11="@comment "
.else
USE_XORG= xpm
CONFIGURE_ARGS+= --with-x
PLIST_SUB= X11=""
.endif
OPTIONS_DEFINE= X11 DOCS
OPTIONS_DEFAULT=X11 DOCS
NO_STAGE= yes
pre-everything::
.if !defined(WITHOUT_X11)
@${ECHO_MSG}
@${ECHO_MSG} "If you want to compile without X11 support,"
@${ECHO_MSG} "hit Ctrl-C right now and use \"make WITHOUT_X11=yes\""
@${ECHO_MSG}
.endif
OPTIONS_SUB= yes
X11_USE= XORG=xpm
X11_CONFIGURE_WITH= x
.include <bsd.port.options.mk>
post-patch:
@${REINPLACE_CMD} -e 's|data/|${DATADIR}/data/|g' ${WRKSRC}/cfg.h
@${REINPLACE_CMD} -e 's|grx/|${DATADIR}/grx/|g' ${WRKSRC}/data/*
@${REINPLACE_CMD} -e 's|-O3 ||g ; \
s|gcc |\$$\(CC\) |g' ${WRKSRC}/Makefile.in
do-install:
${INSTALL_PROGRAM} ${WRKSRC}/0verkill ${PREFIX}/bin
${INSTALL_PROGRAM} ${WRKSRC}/0verkill ${STAGEDIR}${PREFIX}/bin
.for file in avi bot editor server test_server
${INSTALL_PROGRAM} ${WRKSRC}/${file} ${PREFIX}/bin/0verkill-${file}
${INSTALL_PROGRAM} ${WRKSRC}/${file} \
${STAGEDIR}${PREFIX}/bin/0verkill-${file}
.endfor
.if !defined(WITHOUT_X11)
${INSTALL_PROGRAM} ${WRKSRC}/x0verkill ${PREFIX}/bin
.if ${PORT_OPTIONS:MX11}
${INSTALL_PROGRAM} ${WRKSRC}/x0verkill ${STAGEDIR}${PREFIX}/bin
.for file in avi editor
${INSTALL_PROGRAM} ${WRKSRC}/x${file} ${PREFIX}/bin/x0verkill-${file}
${INSTALL_PROGRAM} ${WRKSRC}/x${file} \
${STAGEDIR}${PREFIX}/bin/x0verkill-${file}
.endfor
.endif
@${MKDIR} ${DATADIR}/data
.for file in banner.dat level.dat sprites.dat *.sp *.dn *.st
${INSTALL_DATA} ${WRKSRC}/data/${file} ${DATADIR}/data
.for dir in data grx
cd ${WRKSRC} && ${COPYTREE_SHARE} ${dir} ${STAGEDIR}${DATADIR}
.endfor
@${MKDIR} ${DATADIR}/grx
${INSTALL_DATA} ${WRKSRC}/grx/* ${DATADIR}/grx
.if !defined(NOPORTDOCS)
@${MKDIR} ${DOCSDIR}
@${MKDIR} ${STAGEDIR}${DOCSDIR}
.for file in AUTHORS README.html avi.txt bot.txt doc.html
${INSTALL_DATA} ${WRKSRC}/doc/${file} ${DOCSDIR}
${INSTALL_DATA} ${WRKSRC}/doc/${file} ${STAGEDIR}${DOCSDIR}
.endfor
.endif
.include <bsd.port.mk>
+26
View File
@@ -0,0 +1,26 @@
--- client.c.orig 2001-12-16 12:26:38.000000000 +0300
+++ client.c 2013-11-17 11:40:44.755218781 +0400
@@ -191,9 +191,9 @@
unsigned char txt[256];
#ifndef WIN32
- sprintf(txt,"%s/%s",getenv("HOME"),CFG_FILE);
+ snprintf(txt,sizeof(txt),"%s/%s",getenv("HOME"),CFG_FILE);
#else
- sprintf(txt,"./%s",CFG_FILE);
+ snprintf(txt,sizeof(txt),"./%s",CFG_FILE);
#endif
stream=fopen(txt,"r");
if (!stream)return;
@@ -223,9 +223,9 @@
unsigned char txt[256];
#ifndef WIN32
- sprintf(txt,"%s/%s",getenv("HOME"),CFG_FILE);
+ snprintf(txt,sizeof(txt),"%s/%s",getenv("HOME"),CFG_FILE);
#else
- sprintf(txt,"./%s",CFG_FILE);
+ snprintf(txt,sizeof(txt),"./%s",CFG_FILE);
#endif
stream=fopen(txt,"w");
if (!stream)return;
+20
View File
@@ -0,0 +1,20 @@
--- data.c.orig 2013-11-17 11:25:40.820307151 +0400
+++ data.c 2013-11-17 11:27:32.743383408 +0400
@@ -460,7 +460,7 @@
my_double can_go_x(my_double old_x,my_double new_x,int yh, int yl,unsigned char *flag)
{
int x,y;
-
+ if (yh<0) yh=0;
if (old_x==new_x+.5)
{
if(flag)*flag=0;
@@ -494,7 +494,7 @@
my_double can_go_y(my_double old_y, my_double new_y,int xl, int xr,unsigned char *flag,unsigned char down_ladder)
{
int x,y;
-
+ if (xl<0) xl=0;
if (old_y==new_y){if(flag)*flag=0;return new_y;}
if(flag)*flag=1;
if (old_y<new_y)
+20
View File
@@ -0,0 +1,20 @@
--- net.c.orig 2001-12-15 20:51:50.000000000 +0300
+++ net.c 2013-11-17 11:19:18.535476607 +0400
@@ -78,12 +78,16 @@
{
unsigned char *p;
int retval;
- unsigned long crc;
+ unsigned int crc;
int s,r;
p=mem_alloc(max_len+12);
if (!p)return -1; /* not enough memory */
retval=recvfrom(fd,p,max_len+12,0,addr,addr_len);
+ if (retval<12) {
+ mem_free(p);
+ return -1;
+ }
memcpy(packet,p+12,max_len);
crc=p[0]+(p[1]<<8)+(p[2]<<16)+(p[3]<<24);
s=p[4]+(p[5]<<8)+(p[6]<<16)+(p[7]<<24);
+33
View File
@@ -0,0 +1,33 @@
--- server.c.orig 2001-12-16 18:18:45.000000000 +0300
+++ server.c 2013-11-24 22:37:06.306435317 +0400
@@ -907,6 +907,8 @@
packet[0]=P_MESSAGE;
if (!name){snprintf(packet+1,256,"%s",msg);len=strlen(msg)+1+1;}
else {snprintf(packet+1,256,"%s> %s",name,msg);len=strlen(name)+strlen(msg)+1+3;}
+ if (len > 255)
+ len = 255;
send_chunk_packet_to_player(packet,len,player);
}
@@ -921,6 +923,8 @@
packet[0]=P_MESSAGE;
if (!name){snprintf(packet+1,255,"%s",msg);len=strlen(msg)+1+1;}
else {snprintf(packet+1,255,"%s> %s",name,msg);len=strlen(name)+strlen(msg)+1+3;}
+ if (len > 255)
+ len = 255;
for (p=&players;p->next;p=p->next)
if ((!not1||(&(p->next->member))!=not1)&&(!not2||(&(p->next->member))!=not2))
send_chunk_packet_to_player(packet,len,&(p->next->member));
@@ -1228,6 +1232,12 @@
send_packet(packet,2,(struct sockaddr*)(&client),0,last_player->member.id);
break;
}
+ if (strlen(packet+5) > MAX_NAME_LEN)
+ {
+ snprintf(txt,256,"Name too long, shortening it to %i characters\n",MAX_NAME_LEN);
+ message(txt,2);
+ packet[5+MAX_NAME_LEN]='\0';
+ }
find_birthplace(&x,&y);
if (add_player(packet[4],packet+5,&client,x,y)) /* failed to add player */
{
+25
View File
@@ -0,0 +1,25 @@
--- sprite.c.orig 2001-12-15 20:51:53.000000000 +0300
+++ sprite.c 2013-11-17 13:00:40.184048213 +0400
@@ -2,6 +2,7 @@
#include <ctype.h>
#include <stdlib.h>
#include <stdio.h>
+#include <unistd.h>
#ifndef WIN32
#include "config.h"
@@ -188,6 +189,14 @@
if (!(f=fopen(filename,"rb")))
{
+ chdir(DATA_PATH);
+ }
+ if (!(f=fopen(filename,"rb")))
+ {
+ chdir(DATA_PATH "/../");
+ }
+ if (!(f=fopen(filename,"rb")))
+ {
unsigned char msg[256];
snprintf(msg,256,"Error opening file \"%s\"!\n",filename);
ERROR(msg);
+1 -1
View File
@@ -8,4 +8,4 @@ of network-game action in such a massive manner.
No one ever connected gushing blood with those innocent ASCII letters that were
so utterly boring until recently, when 0verkill was released.
WWW: http://artax.karlin.mff.cuni.cz/~brain/0verkill/
WWW: http://artax.karlin.mff.cuni.cz/~brain/0verkill/
+247 -247
View File
@@ -7,250 +7,250 @@ bin/0verkill-test_server
%%X11%%bin/x0verkill
%%X11%%bin/x0verkill-avi
%%X11%%bin/x0verkill-editor
share/0verkill/data/banner.dat
share/0verkill/data/level.dat
share/0verkill/data/sprites.dat
share/0verkill/data/level1.dn
share/0verkill/data/level1.sp
share/0verkill/data/level1.st
share/0verkill/data/level2.dn
share/0verkill/data/level2.sp
share/0verkill/data/level2.st
share/0verkill/grx/0verkill.avi
share/0verkill/grx/ackermann.avi
share/0verkill/grx/altar.avi
share/0verkill/grx/ammo.avi
share/0verkill/grx/anthrax.avi
share/0verkill/grx/armor.avi
share/0verkill/grx/barrel.avi
share/0verkill/grx/barrel_fire.avi
share/0verkill/grx/bedna.avi
share/0verkill/grx/bedna_v.avi
share/0verkill/grx/bednarek.avi
share/0verkill/grx/beer.avi
share/0verkill/grx/beran.avi
share/0verkill/grx/bici.avi
share/0verkill/grx/biohazard.avi
share/0verkill/grx/blood.avi
share/0verkill/grx/bulge.avi
share/0verkill/grx/bullet.avi
share/0verkill/grx/bus.avi
share/0verkill/grx/camel.avi
share/0verkill/grx/cartridge.avi
share/0verkill/grx/chain1.avi
share/0verkill/grx/chain2.avi
share/0verkill/grx/chain3.avi
share/0verkill/grx/closed.avi
share/0verkill/grx/cloud.avi
share/0verkill/grx/corpse1.avi
share/0verkill/grx/corpse2.avi
share/0verkill/grx/corpse3.avi
share/0verkill/grx/corpse4.avi
share/0verkill/grx/corpse5.avi
share/0verkill/grx/corpse6.avi
share/0verkill/grx/corpse7.avi
share/0verkill/grx/corpse8.avi
share/0verkill/grx/corpse9.avi
share/0verkill/grx/corpseA.avi
share/0verkill/grx/corpseB.avi
share/0verkill/grx/corpseC.avi
share/0verkill/grx/corpseD.avi
share/0verkill/grx/corpseE.avi
share/0verkill/grx/corpseF.avi
share/0verkill/grx/corpse_girl_1.avi
share/0verkill/grx/corpse_girl_2.avi
share/0verkill/grx/corpse_girl_3.avi
share/0verkill/grx/corpse_girl_4.avi
share/0verkill/grx/corpse_girl_5.avi
share/0verkill/grx/corpse_girl_6.avi
share/0verkill/grx/corpse_girl_7.avi
share/0verkill/grx/corpse_girl_8.avi
share/0verkill/grx/corpse_girl_9.avi
share/0verkill/grx/corpse_girl_A.avi
share/0verkill/grx/corpse_girl_B.avi
share/0verkill/grx/corpse_girl_C.avi
share/0verkill/grx/corpse_girl_D.avi
share/0verkill/grx/corpse_girl_E.avi
share/0verkill/grx/corpse_girl_F.avi
share/0verkill/grx/corpse_girl_univ.avi
share/0verkill/grx/corpse_univ.avi
share/0verkill/grx/cowboys.avi
share/0verkill/grx/dekl.avi
share/0verkill/grx/domecek.avi
share/0verkill/grx/door.avi
share/0verkill/grx/dope.avi
share/0verkill/grx/dvirka.avi
share/0verkill/grx/erectus.avi
share/0verkill/grx/fan.avi
share/0verkill/grx/favo.avi
share/0verkill/grx/footboard.avi
share/0verkill/grx/forum.avi
share/0verkill/grx/gentlemen.avi
share/0verkill/grx/girl1.avi
share/0verkill/grx/girl2.avi
share/0verkill/grx/girl3.avi
share/0verkill/grx/girl4.avi
share/0verkill/grx/girl5.avi
share/0verkill/grx/girl6.avi
share/0verkill/grx/girl7.avi
share/0verkill/grx/girl8.avi
share/0verkill/grx/girl9.avi
share/0verkill/grx/girlA.avi
share/0verkill/grx/girlB.avi
share/0verkill/grx/girlC.avi
share/0verkill/grx/girlD.avi
share/0verkill/grx/girlE.avi
share/0verkill/grx/girlF.avi
share/0verkill/grx/girl_univ.avi
share/0verkill/grx/grave1.avi
share/0verkill/grx/grave2.avi
share/0verkill/grx/grave3.avi
share/0verkill/grx/grenade.avi
share/0verkill/grx/grenades.avi
share/0verkill/grx/guitarist1.avi
share/0verkill/grx/guitarist2.avi
share/0verkill/grx/guitarist3.avi
share/0verkill/grx/gun.avi
share/0verkill/grx/hajzl.avi
share/0verkill/grx/hajzlik.avi
share/0verkill/grx/hellslime.avi
share/0verkill/grx/hero1.avi
share/0verkill/grx/hero2.avi
share/0verkill/grx/hero3.avi
share/0verkill/grx/hero4.avi
share/0verkill/grx/hero5.avi
share/0verkill/grx/hero6.avi
share/0verkill/grx/hero7.avi
share/0verkill/grx/hero8.avi
share/0verkill/grx/hero9.avi
share/0verkill/grx/heroA.avi
share/0verkill/grx/heroB.avi
share/0verkill/grx/heroC.avi
share/0verkill/grx/heroD.avi
share/0verkill/grx/heroE.avi
share/0verkill/grx/heroF.avi
share/0verkill/grx/hero_univ.avi
share/0verkill/grx/heute.avi
share/0verkill/grx/hit.avi
share/0verkill/grx/hlina.avi
share/0verkill/grx/hook.avi
share/0verkill/grx/humpolec.avi
share/0verkill/grx/kamelky.avi
share/0verkill/grx/kanal.avi
share/0verkill/grx/klesani.avi
share/0verkill/grx/koleje.avi
share/0verkill/grx/kotel.avi
share/0verkill/grx/kotelna.avi
share/0verkill/grx/kotelnik.avi
share/0verkill/grx/koubek.avi
share/0verkill/grx/krovi.avi
share/0verkill/grx/ladder.avi
share/0verkill/grx/ladies.avi
share/0verkill/grx/lamp1.avi
share/0verkill/grx/lamp2.avi
share/0verkill/grx/lamp3.avi
share/0verkill/grx/lava.avi
share/0verkill/grx/lava1.avi
share/0verkill/grx/lava2.avi
share/0verkill/grx/lebzhnaty.avi
share/0verkill/grx/links.avi
share/0verkill/grx/liqory.avi
share/0verkill/grx/make_hero
share/0verkill/grx/mar.avi
share/0verkill/grx/medikit.avi
share/0verkill/grx/melasa.avi
share/0verkill/grx/mess.avi
share/0verkill/grx/mess1.avi
share/0verkill/grx/mess2.avi
share/0verkill/grx/mess3.avi
share/0verkill/grx/mess4.avi
share/0verkill/grx/metro.avi
share/0verkill/grx/noise.avi
share/0verkill/grx/nosmoking.avi
share/0verkill/grx/ohrada.avi
share/0verkill/grx/okno.avi
share/0verkill/grx/para.avi
share/0verkill/grx/perm.avi
share/0verkill/grx/petice.avi
share/0verkill/grx/pi.avi
share/0verkill/grx/pillar.avi
share/0verkill/grx/pipe.avi
share/0verkill/grx/pipe1.avi
share/0verkill/grx/pipe2.avi
share/0verkill/grx/pipe3.avi
share/0verkill/grx/pipe4.avi
share/0verkill/grx/pivrnec.avi
share/0verkill/grx/podium.avi
share/0verkill/grx/podlaha.avi
share/0verkill/grx/prkno.avi
share/0verkill/grx/pruhonice.avi
share/0verkill/grx/pub.avi
share/0verkill/grx/pumping.avi
share/0verkill/grx/pytlak.avi
share/0verkill/grx/radioactive.avi
share/0verkill/grx/raid.avi
share/0verkill/grx/raidrekl.avi
share/0verkill/grx/rampa.avi
share/0verkill/grx/reklama.avi
share/0verkill/grx/rg6.avi
share/0verkill/grx/rifle.avi
share/0verkill/grx/rocket.avi
share/0verkill/grx/rough.avi
share/0verkill/grx/schody1l.avi
share/0verkill/grx/schody1r.avi
share/0verkill/grx/schodyl.avi
share/0verkill/grx/schodyr.avi
share/0verkill/grx/shell.avi
share/0verkill/grx/shells.avi
share/0verkill/grx/shotgun.avi
share/0verkill/grx/shrapnel1.avi
share/0verkill/grx/shrapnel10.avi
share/0verkill/grx/shrapnel2.avi
share/0verkill/grx/shrapnel3.avi
share/0verkill/grx/shrapnel4.avi
share/0verkill/grx/shrapnel5.avi
share/0verkill/grx/shrapnel6.avi
share/0verkill/grx/shrapnel7.avi
share/0verkill/grx/shrapnel8.avi
share/0verkill/grx/shrapnel9.avi
share/0verkill/grx/skull.avi
share/0verkill/grx/slug.avi
share/0verkill/grx/smoker.avi
share/0verkill/grx/sshell.avi
share/0verkill/grx/stone.avi
share/0verkill/grx/stone1.avi
share/0verkill/grx/stone2.avi
share/0verkill/grx/stone3.avi
share/0verkill/grx/stone_steps_l.avi
share/0verkill/grx/stone_steps_r.avi
share/0verkill/grx/sugar.avi
share/0verkill/grx/svab.avi
share/0verkill/grx/swing_lamp.avi
share/0verkill/grx/tabule.avi
share/0verkill/grx/tnt.avi
share/0verkill/grx/toadstool.avi
share/0verkill/grx/traverza.avi
share/0verkill/grx/traverza1.avi
share/0verkill/grx/traverza2.avi
share/0verkill/grx/u_kuceru.avi
share/0verkill/grx/uhli.avi
share/0verkill/grx/uzi.avi
share/0verkill/grx/vetrak.avi
share/0verkill/grx/waltr.avi
share/0verkill/grx/water.avi
share/0verkill/grx/zabradli.avi
share/0verkill/grx/zarivka.avi
share/0verkill/grx/zebrik2.avi
share/0verkill/grx/zed.avi
share/0verkill/grx/zed2.avi
share/0verkill/grx/zed3.avi
share/0verkill/grx/zpevak.avi
%%PORTDOCS%%share/doc/0verkill/AUTHORS
%%PORTDOCS%%share/doc/0verkill/README.html
%%PORTDOCS%%share/doc/0verkill/avi.txt
%%PORTDOCS%%share/doc/0verkill/bot.txt
%%PORTDOCS%%share/doc/0verkill/doc.html
%%PORTDOCS%%@dirrm share/doc/0verkill
@dirrm share/0verkill/grx
@dirrm share/0verkill/data
@dirrm share/0verkill
%%DATADIR%%/data/banner.dat
%%DATADIR%%/data/level.dat
%%DATADIR%%/data/sprites.dat
%%DATADIR%%/data/level1.dn
%%DATADIR%%/data/level1.sp
%%DATADIR%%/data/level1.st
%%DATADIR%%/data/level2.dn
%%DATADIR%%/data/level2.sp
%%DATADIR%%/data/level2.st
%%DATADIR%%/grx/0verkill.avi
%%DATADIR%%/grx/ackermann.avi
%%DATADIR%%/grx/altar.avi
%%DATADIR%%/grx/ammo.avi
%%DATADIR%%/grx/anthrax.avi
%%DATADIR%%/grx/armor.avi
%%DATADIR%%/grx/barrel.avi
%%DATADIR%%/grx/barrel_fire.avi
%%DATADIR%%/grx/bedna.avi
%%DATADIR%%/grx/bedna_v.avi
%%DATADIR%%/grx/bednarek.avi
%%DATADIR%%/grx/beer.avi
%%DATADIR%%/grx/beran.avi
%%DATADIR%%/grx/bici.avi
%%DATADIR%%/grx/biohazard.avi
%%DATADIR%%/grx/blood.avi
%%DATADIR%%/grx/bulge.avi
%%DATADIR%%/grx/bullet.avi
%%DATADIR%%/grx/bus.avi
%%DATADIR%%/grx/camel.avi
%%DATADIR%%/grx/cartridge.avi
%%DATADIR%%/grx/chain1.avi
%%DATADIR%%/grx/chain2.avi
%%DATADIR%%/grx/chain3.avi
%%DATADIR%%/grx/closed.avi
%%DATADIR%%/grx/cloud.avi
%%DATADIR%%/grx/corpse1.avi
%%DATADIR%%/grx/corpse2.avi
%%DATADIR%%/grx/corpse3.avi
%%DATADIR%%/grx/corpse4.avi
%%DATADIR%%/grx/corpse5.avi
%%DATADIR%%/grx/corpse6.avi
%%DATADIR%%/grx/corpse7.avi
%%DATADIR%%/grx/corpse8.avi
%%DATADIR%%/grx/corpse9.avi
%%DATADIR%%/grx/corpseA.avi
%%DATADIR%%/grx/corpseB.avi
%%DATADIR%%/grx/corpseC.avi
%%DATADIR%%/grx/corpseD.avi
%%DATADIR%%/grx/corpseE.avi
%%DATADIR%%/grx/corpseF.avi
%%DATADIR%%/grx/corpse_girl_1.avi
%%DATADIR%%/grx/corpse_girl_2.avi
%%DATADIR%%/grx/corpse_girl_3.avi
%%DATADIR%%/grx/corpse_girl_4.avi
%%DATADIR%%/grx/corpse_girl_5.avi
%%DATADIR%%/grx/corpse_girl_6.avi
%%DATADIR%%/grx/corpse_girl_7.avi
%%DATADIR%%/grx/corpse_girl_8.avi
%%DATADIR%%/grx/corpse_girl_9.avi
%%DATADIR%%/grx/corpse_girl_A.avi
%%DATADIR%%/grx/corpse_girl_B.avi
%%DATADIR%%/grx/corpse_girl_C.avi
%%DATADIR%%/grx/corpse_girl_D.avi
%%DATADIR%%/grx/corpse_girl_E.avi
%%DATADIR%%/grx/corpse_girl_F.avi
%%DATADIR%%/grx/corpse_girl_univ.avi
%%DATADIR%%/grx/corpse_univ.avi
%%DATADIR%%/grx/cowboys.avi
%%DATADIR%%/grx/dekl.avi
%%DATADIR%%/grx/domecek.avi
%%DATADIR%%/grx/door.avi
%%DATADIR%%/grx/dope.avi
%%DATADIR%%/grx/dvirka.avi
%%DATADIR%%/grx/erectus.avi
%%DATADIR%%/grx/fan.avi
%%DATADIR%%/grx/favo.avi
%%DATADIR%%/grx/footboard.avi
%%DATADIR%%/grx/forum.avi
%%DATADIR%%/grx/gentlemen.avi
%%DATADIR%%/grx/girl1.avi
%%DATADIR%%/grx/girl2.avi
%%DATADIR%%/grx/girl3.avi
%%DATADIR%%/grx/girl4.avi
%%DATADIR%%/grx/girl5.avi
%%DATADIR%%/grx/girl6.avi
%%DATADIR%%/grx/girl7.avi
%%DATADIR%%/grx/girl8.avi
%%DATADIR%%/grx/girl9.avi
%%DATADIR%%/grx/girlA.avi
%%DATADIR%%/grx/girlB.avi
%%DATADIR%%/grx/girlC.avi
%%DATADIR%%/grx/girlD.avi
%%DATADIR%%/grx/girlE.avi
%%DATADIR%%/grx/girlF.avi
%%DATADIR%%/grx/girl_univ.avi
%%DATADIR%%/grx/grave1.avi
%%DATADIR%%/grx/grave2.avi
%%DATADIR%%/grx/grave3.avi
%%DATADIR%%/grx/grenade.avi
%%DATADIR%%/grx/grenades.avi
%%DATADIR%%/grx/guitarist1.avi
%%DATADIR%%/grx/guitarist2.avi
%%DATADIR%%/grx/guitarist3.avi
%%DATADIR%%/grx/gun.avi
%%DATADIR%%/grx/hajzl.avi
%%DATADIR%%/grx/hajzlik.avi
%%DATADIR%%/grx/hellslime.avi
%%DATADIR%%/grx/hero1.avi
%%DATADIR%%/grx/hero2.avi
%%DATADIR%%/grx/hero3.avi
%%DATADIR%%/grx/hero4.avi
%%DATADIR%%/grx/hero5.avi
%%DATADIR%%/grx/hero6.avi
%%DATADIR%%/grx/hero7.avi
%%DATADIR%%/grx/hero8.avi
%%DATADIR%%/grx/hero9.avi
%%DATADIR%%/grx/heroA.avi
%%DATADIR%%/grx/heroB.avi
%%DATADIR%%/grx/heroC.avi
%%DATADIR%%/grx/heroD.avi
%%DATADIR%%/grx/heroE.avi
%%DATADIR%%/grx/heroF.avi
%%DATADIR%%/grx/hero_univ.avi
%%DATADIR%%/grx/heute.avi
%%DATADIR%%/grx/hit.avi
%%DATADIR%%/grx/hlina.avi
%%DATADIR%%/grx/hook.avi
%%DATADIR%%/grx/humpolec.avi
%%DATADIR%%/grx/kamelky.avi
%%DATADIR%%/grx/kanal.avi
%%DATADIR%%/grx/klesani.avi
%%DATADIR%%/grx/koleje.avi
%%DATADIR%%/grx/kotel.avi
%%DATADIR%%/grx/kotelna.avi
%%DATADIR%%/grx/kotelnik.avi
%%DATADIR%%/grx/koubek.avi
%%DATADIR%%/grx/krovi.avi
%%DATADIR%%/grx/ladder.avi
%%DATADIR%%/grx/ladies.avi
%%DATADIR%%/grx/lamp1.avi
%%DATADIR%%/grx/lamp2.avi
%%DATADIR%%/grx/lamp3.avi
%%DATADIR%%/grx/lava.avi
%%DATADIR%%/grx/lava1.avi
%%DATADIR%%/grx/lava2.avi
%%DATADIR%%/grx/lebzhnaty.avi
%%DATADIR%%/grx/links.avi
%%DATADIR%%/grx/liqory.avi
%%DATADIR%%/grx/make_hero
%%DATADIR%%/grx/mar.avi
%%DATADIR%%/grx/medikit.avi
%%DATADIR%%/grx/melasa.avi
%%DATADIR%%/grx/mess.avi
%%DATADIR%%/grx/mess1.avi
%%DATADIR%%/grx/mess2.avi
%%DATADIR%%/grx/mess3.avi
%%DATADIR%%/grx/mess4.avi
%%DATADIR%%/grx/metro.avi
%%DATADIR%%/grx/noise.avi
%%DATADIR%%/grx/nosmoking.avi
%%DATADIR%%/grx/ohrada.avi
%%DATADIR%%/grx/okno.avi
%%DATADIR%%/grx/para.avi
%%DATADIR%%/grx/perm.avi
%%DATADIR%%/grx/petice.avi
%%DATADIR%%/grx/pi.avi
%%DATADIR%%/grx/pillar.avi
%%DATADIR%%/grx/pipe.avi
%%DATADIR%%/grx/pipe1.avi
%%DATADIR%%/grx/pipe2.avi
%%DATADIR%%/grx/pipe3.avi
%%DATADIR%%/grx/pipe4.avi
%%DATADIR%%/grx/pivrnec.avi
%%DATADIR%%/grx/podium.avi
%%DATADIR%%/grx/podlaha.avi
%%DATADIR%%/grx/prkno.avi
%%DATADIR%%/grx/pruhonice.avi
%%DATADIR%%/grx/pub.avi
%%DATADIR%%/grx/pumping.avi
%%DATADIR%%/grx/pytlak.avi
%%DATADIR%%/grx/radioactive.avi
%%DATADIR%%/grx/raid.avi
%%DATADIR%%/grx/raidrekl.avi
%%DATADIR%%/grx/rampa.avi
%%DATADIR%%/grx/reklama.avi
%%DATADIR%%/grx/rg6.avi
%%DATADIR%%/grx/rifle.avi
%%DATADIR%%/grx/rocket.avi
%%DATADIR%%/grx/rough.avi
%%DATADIR%%/grx/schody1l.avi
%%DATADIR%%/grx/schody1r.avi
%%DATADIR%%/grx/schodyl.avi
%%DATADIR%%/grx/schodyr.avi
%%DATADIR%%/grx/shell.avi
%%DATADIR%%/grx/shells.avi
%%DATADIR%%/grx/shotgun.avi
%%DATADIR%%/grx/shrapnel1.avi
%%DATADIR%%/grx/shrapnel10.avi
%%DATADIR%%/grx/shrapnel2.avi
%%DATADIR%%/grx/shrapnel3.avi
%%DATADIR%%/grx/shrapnel4.avi
%%DATADIR%%/grx/shrapnel5.avi
%%DATADIR%%/grx/shrapnel6.avi
%%DATADIR%%/grx/shrapnel7.avi
%%DATADIR%%/grx/shrapnel8.avi
%%DATADIR%%/grx/shrapnel9.avi
%%DATADIR%%/grx/skull.avi
%%DATADIR%%/grx/slug.avi
%%DATADIR%%/grx/smoker.avi
%%DATADIR%%/grx/sshell.avi
%%DATADIR%%/grx/stone.avi
%%DATADIR%%/grx/stone1.avi
%%DATADIR%%/grx/stone2.avi
%%DATADIR%%/grx/stone3.avi
%%DATADIR%%/grx/stone_steps_l.avi
%%DATADIR%%/grx/stone_steps_r.avi
%%DATADIR%%/grx/sugar.avi
%%DATADIR%%/grx/svab.avi
%%DATADIR%%/grx/swing_lamp.avi
%%DATADIR%%/grx/tabule.avi
%%DATADIR%%/grx/tnt.avi
%%DATADIR%%/grx/toadstool.avi
%%DATADIR%%/grx/traverza.avi
%%DATADIR%%/grx/traverza1.avi
%%DATADIR%%/grx/traverza2.avi
%%DATADIR%%/grx/u_kuceru.avi
%%DATADIR%%/grx/uhli.avi
%%DATADIR%%/grx/uzi.avi
%%DATADIR%%/grx/vetrak.avi
%%DATADIR%%/grx/waltr.avi
%%DATADIR%%/grx/water.avi
%%DATADIR%%/grx/zabradli.avi
%%DATADIR%%/grx/zarivka.avi
%%DATADIR%%/grx/zebrik2.avi
%%DATADIR%%/grx/zed.avi
%%DATADIR%%/grx/zed2.avi
%%DATADIR%%/grx/zed3.avi
%%DATADIR%%/grx/zpevak.avi
%%PORTDOCS%%%%DOCSDIR%%/AUTHORS
%%PORTDOCS%%%%DOCSDIR%%/README.html
%%PORTDOCS%%%%DOCSDIR%%/avi.txt
%%PORTDOCS%%%%DOCSDIR%%/bot.txt
%%PORTDOCS%%%%DOCSDIR%%/doc.html
%%PORTDOCS%%@dirrm %%DOCSDIR%%
@dirrm %%DATADIR%%/grx
@dirrm %%DATADIR%%/data
@dirrm %%DATADIR%%