summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'games-puzzle/icebreaker')
-rw-r--r--games-puzzle/icebreaker/Manifest1
-rw-r--r--games-puzzle/icebreaker/files/icebreaker-1.9.6-gentoo.patch247
-rw-r--r--games-puzzle/icebreaker/files/icebreaker-1.9.6-ldflags.patch28
-rw-r--r--games-puzzle/icebreaker/files/icebreaker-1.9.6-ovfl.patch20
-rw-r--r--games-puzzle/icebreaker/files/icebreaker-1.9.6-parallell-install.patch34
-rw-r--r--games-puzzle/icebreaker/icebreaker-1.9.6.ebuild48
-rw-r--r--games-puzzle/icebreaker/metadata.xml5
7 files changed, 383 insertions, 0 deletions
diff --git a/games-puzzle/icebreaker/Manifest b/games-puzzle/icebreaker/Manifest
new file mode 100644
index 000000000000..25437d2bd6bd
--- /dev/null
+++ b/games-puzzle/icebreaker/Manifest
@@ -0,0 +1 @@
+DIST icebreaker-1.9.6.tgz 137333 SHA256 e80f3a0c918beeff528ec7e61c04a17019c2afff85f018a04f715f2b401931dc SHA512 c3b085dc42d33757011d6d526016477312c5e1cbab4c5584c1e271a1e43b40d61ad1e7f0c96c8f41348550b2e198b3ee7bca65fbef90125dbfa32544cbdf357b WHIRLPOOL 3616e2cd757c6efc7831dfcbd36cbd1a0ec7b5b1f32022ad7c721e39adde41985c40b7a6529acc60de9b5d8f92d802fe579f5a395d9b1402f6c653929be65698
diff --git a/games-puzzle/icebreaker/files/icebreaker-1.9.6-gentoo.patch b/games-puzzle/icebreaker/files/icebreaker-1.9.6-gentoo.patch
new file mode 100644
index 000000000000..d6e16a6c39a6
--- /dev/null
+++ b/games-puzzle/icebreaker/files/icebreaker-1.9.6-gentoo.patch
@@ -0,0 +1,247 @@
+--- dialog.c
++++ dialog.c
+@@ -279,10 +279,10 @@ PopupReturnType popuphighscores()
+
+ for (i=0;i<HISCORENUM;i++)
+ {
+- snprintf(buf,4,"%d.",i+1);
++ snprintf(buf,sizeof(buf),"%d.",i+1);
+ puttext(scorelistrect.x+BLOCKWIDTH,scorelistrect.y+45+i*(CHARHEIGHT*2+5),2,color.normaltext,buf);
+ puttext(scorelistrect.x+BLOCKWIDTH*4,scorelistrect.y+45+i*(CHARHEIGHT*2+5),2,color.normaltext,hiscorename[i]);
+- snprintf(buf,30,"%ld",hiscoreval[i]);
++ snprintf(buf,sizeof(buf),"%ld",hiscoreval[i]);
+ puttext(scorelistrect.x+scorelistrect.w-(BLOCKWIDTH*5),scorelistrect.y+45+i*(CHARHEIGHT*2+5),2,color.normaltext,buf);
+ }
+
+@@ -364,7 +364,7 @@ PopupReturnType popuphelp()
+ {
+ puttext(helprect.x+BLOCKWIDTH/2,helprect.y+BLOCKHEIGHT/2+i*(CHARHEIGHT*2+4),2,color.normaltext,helptext[i]);
+ }
+- snprintf(buf,80,"v%d.%d.%d %s",VERMAJOR,VERMINOR,VERSUB,"Copyright (c) 2000-2002 Matthew Miller. Released under the GPL.");
++ snprintf(buf,sizeof(buf),"v%d.%d.%d %s",VERMAJOR,VERMINOR,VERSUB,"Copyright (c) 2000-2002 Matthew Miller. Released under the GPL.");
+ puttext(helprect.x+BLOCKWIDTH/2,helprect.y+helprect.h-CHARHEIGHT*3,1,color.copyrighttext,buf);
+ puttext(helprect.x+BLOCKWIDTH/2,helprect.y+helprect.h-CHARHEIGHT*1-3,1,color.copyrighttext,"Thanks to my wonderful wife Karen for inspiration (and for patience)!");
+
+--- menu.c
++++ menu.c
+@@ -193,12 +193,12 @@ PopupReturnType popupoptionsmenu()
+
+ if (strlen(commandline.theme)>0)
+ {
+- snprintf(originaltheme,MAXTHEMENAMELENGTH+1,"%s",commandline.theme);
++ snprintf(originaltheme,sizeof(originaltheme),"%s",commandline.theme);
+ originalthemecl=true;
+ }
+ else
+ {
+- snprintf(originaltheme,MAXTHEMENAMELENGTH+1,"%s",options.theme);
++ snprintf(originaltheme,sizeof(originaltheme),"%s",options.theme);
+ originalthemecl=false;
+ }
+
+@@ -521,7 +521,7 @@ PopupReturnType menuitem_theme(char * va
+ if (((mbutton==1 || mbutton==4) && t==themecount-1) || ((mbutton!=1 && mbutton!=4) && t==0))
+ { // "random", at the end/beginning of the list
+
+- strncpy(val,"random",MAXMENUVALUELENGTH);
++ strcpy(options.theme,"random");
+ snprintf(options.theme,MAXMENUVALUELENGTH,"random");
+
+ settheme("linux"); // just for pretty
+@@ -538,7 +538,7 @@ PopupReturnType menuitem_theme(char * va
+ if (mbutton==1 || mbutton==4) // left click or scroll forwards
+ {
+ strncpy(val,themelist[(t+1)%themecount],MAXMENUVALUELENGTH);
+- snprintf(options.theme,MAXMENUVALUELENGTH,themelist[(t+1)%themecount]);
++ snprintf(options.theme,sizeof(options.theme),"%s",themelist[(t+1)%themecount]);
+ }
+ else // right or middle or scroll back
+ {
+--- hiscore.c
++++ hiscore.c
+@@ -72,7 +72,7 @@
+ // make sure all entries are zeroed out to start.
+ for (i=0;i<HISCORENUM;i++)
+ {
+- snprintf(temphiscorename[i],7,"Nobody");
++ strcpy(temphiscorename[i],"Nobody");
+ temphiscoreval[i]=100; //100 is better than 0. :)
+ }
+
+@@ -103,7 +103,7 @@
+ // ok, so now, we can copy things over in the proper sorted order
+ for (i=0;i<HISCORENUM;i++)
+ {
+- snprintf(hiscorename[i],50,temphiscorename[arrayindex[i]]);
++ snprintf(hiscorename[i],50,"%s",temphiscorename[arrayindex[i]]);
+ hiscoreval[i]=temphiscoreval[arrayindex[i]];
+ }
+
+@@ -201,13 +201,13 @@
+ // make sure the temp array contains the right data
+ for (i=0;i<HISCORENUM;i++)
+ {
+- snprintf(temphiscorename[i],50,hiname[i]);
++ snprintf(temphiscorename[i],50,"%s",hiname[i]);
+ temphiscoreval[i]=hival[i];
+ }
+
+ // and toss in the new data
+ //(this is why these arrays are size HISCORENUM+1)
+- snprintf(temphiscorename[HISCORENUM],50,username);
++ snprintf(temphiscorename[HISCORENUM],50,"%s",username);
+ temphiscoreval[HISCORENUM]=score;
+
+ // fill the "helper" array.
+@@ -221,7 +221,7 @@
+ // and take the top ones back.
+ for (i=0;i<HISCORENUM;i++)
+ {
+- snprintf(hiname[i],50,temphiscorename[arrayindex[i]]);
++ snprintf(hiname[i],50,"%s",temphiscorename[arrayindex[i]]);
+ hival[i]=temphiscoreval[arrayindex[i]];
+ }
+ }
+--- line.c
++++ line.c
+@@ -30,8 +30,9 @@
+
+ Line createline(int linenum)
+ {
+- Line l;
++ static Line l;
+
++ memset(&l, 0, sizeof(l));
+ switch (linenum)
+ {
+ case 1:
+--- options.c
++++ options.c
+@@ -66,7 +66,7 @@
+ options.autopause=AUTOPAUSEOFF;
+ options.difficulty=NORMAL;
+ options.fullscreen=FULLSCREENOFF;
+- snprintf(options.theme,MAXTHEMENAMELENGTH+1,"linux");
++ strcpy(options.theme,"linux");
+ }
+
+ int readoptions(void)
+@@ -81,7 +81,7 @@
+
+ setdefaultoptions();
+
+- snprintf(filename,255,"%s/%s",homedir,OPTIONFILE);
++ snprintf(filename,sizeof(filename),"%s/%s",homedir,OPTIONFILE);
+
+ optionfile=fopen(filename,"r");
+ if (optionfile==NULL)
+@@ -135,7 +135,7 @@
+ }
+ else if (!strcmp(optbuf,"theme"))
+ {
+- snprintf(options.theme,MAXTHEMENAMELENGTH+1,"%s",valbuf);
++ snprintf(options.theme,sizeof(options.theme),"%s",valbuf);
+ }
+ // FIX: add username
+ }
+@@ -150,7 +150,7 @@
+ {
+ FILE * optionfile;
+ char filename[255];
+- snprintf(filename,255,"%s/%s",homedir,OPTIONFILE);
++ snprintf(filename,sizeof(filename),"%s/%s",homedir,OPTIONFILE);
+
+ optionfile=fopen(filename,"w");
+ if (optionfile==NULL)
+@@ -292,7 +292,7 @@
+ else
+ {
+ // fix -- we should probably search for malicious characters here.
+- snprintf(commandline.theme,MAXTHEMENAMELENGTH+1,"%s",argv[i]+strlen(FLAGTHEME));
++ snprintf(commandline.theme,sizeof(commandline.theme),"%s",argv[i]+strlen(FLAGTHEME));
+ }
+ }
+ else if (strncmp(argv[i],FLAGTHEMELONG "=" ,strlen(FLAGTHEMELONG "=")) == 0)
+@@ -312,7 +312,7 @@
+ else
+ {
+ // fix -- we should probably search for malicious characters here.
+- snprintf(commandline.theme,MAXTHEMENAMELENGTH+1,"%s",argv[i]+strlen(FLAGTHEMELONG "="));
++ snprintf(commandline.theme,sizeof(commandline.theme),"%s",argv[i]+strlen(FLAGTHEMELONG "="));
+ }
+ }
+ else if (strncmp(argv[i],FLAGTHEMELONG,strlen(FLAGTHEMELONG)) == 0)
+--- penguin.c
++++ penguin.c
+@@ -40,8 +40,9 @@
+
+ Penguin createpenguinxy(int x, int y)
+ {
+- Penguin p;
++ static Penguin p;
+
++ memset(&p, 0, sizeof(p));
+ switch (random() % 4)
+ {
+ case 0:
+--- themes.c
++++ themes.c
+@@ -183,7 +183,7 @@
+
+ foundcolor.spritetransparent = 0;
+
+- snprintf(themefilename, 256,"%s/%s%s",DATAPREFIX,themename,THEMEFILEEXTENSION);
++ snprintf(themefilename, sizeof(themefilename),"%s/%s%s",DATAPREFIX,themename,THEMEFILEEXTENSION);
+
+ themefile=fopen(themefilename,"r");
+ if (themefile==NULL)
+@@ -329,7 +329,7 @@
+ "We'll try to load it anyway, but don't be surpised if there's a problem.\n"
+ "(Filename is %s)\n",themename,valbuf);
+ }
+- snprintf(loadfilebuf, 256,"%s/%s",DATAPREFIX,valbuf);
++ snprintf(loadfilebuf, sizeof(loadfilebuf),"%s/%s",DATAPREFIX,valbuf);
+ spriteimage=loadsprite(themename,loadfilebuf);
+ }
+ else if (!strcmp(optbuf,"spritemirrorbitmap"))
+@@ -340,7 +340,7 @@
+ "We'll try to load it anyway, but don't be surpised if there's a problem.\n"
+ "(Filename is %s)\n",themename,valbuf);
+ }
+- snprintf(loadfilebuf, 256,"%s/%s",DATAPREFIX,valbuf);
++ snprintf(loadfilebuf, sizeof(loadfilebuf),"%s/%s",DATAPREFIX,valbuf);
+ spritemirrorimage=loadsprite(themename,loadfilebuf);
+ }
+ else if (!strcmp(optbuf,"soundouch"))
+@@ -351,7 +351,7 @@
+ "We'll try to load it anyway, but don't be surpised if there's a problem.\n"
+ "(Filename is %s)\n",themename,valbuf);
+ }
+- snprintf(loadfilebuf, 256,"%s/%s",DATAPREFIX,valbuf);
++ snprintf(loadfilebuf, sizeof(loadfilebuf),"%s/%s",DATAPREFIX,valbuf);
+ loadsounds(themename,loadfilebuf,NULL);
+ }
+ else if (!strcmp(optbuf,"soundcrash"))
+@@ -362,7 +362,7 @@
+ "We'll try to load it anyway, but don't be surpised if there's a problem.\n"
+ "(Filename is %s)\n",themename,valbuf);
+ }
+- snprintf(loadfilebuf, 256,"%s/%s",DATAPREFIX,valbuf);
++ snprintf(loadfilebuf, sizeof(loadfilebuf),"%s/%s",DATAPREFIX,valbuf);
+ loadsounds(themename,NULL,loadfilebuf);
+ }
+ }
+@@ -474,11 +474,11 @@
+ {
+ fprintf(stderr,"Hey! You can't have a theme named random! Please remove the random.ibt\n"
+ "file from your themes directory.\n");
+- snprintf(themename,MAXTHEMENAMELENGTH+1,"linux");
++ strcpy(themename,"linux");
+ }
+ else
+ {
+- snprintf(themename,MAXTHEMENAMELENGTH+1,themelist[random() %themecount]);
++ snprintf(themename,sizeof(themename),"%s",themelist[random() %themecount]);
+ }
+ freethemenames(&themelist,themecount);
+ return settheme(themename);
diff --git a/games-puzzle/icebreaker/files/icebreaker-1.9.6-ldflags.patch b/games-puzzle/icebreaker/files/icebreaker-1.9.6-ldflags.patch
new file mode 100644
index 000000000000..44ef9bdf8631
--- /dev/null
+++ b/games-puzzle/icebreaker/files/icebreaker-1.9.6-ldflags.patch
@@ -0,0 +1,28 @@
+--- Makefile.orig 2010-10-11 12:20:01.274684641 -0400
++++ Makefile 2010-10-11 12:22:02.256897083 -0400
+@@ -1,5 +1,3 @@
+-CC=gcc
+-
+ SDLCONFIG=sdl-config
+
+ ifndef prefix
+@@ -177,7 +175,7 @@
+ [ -d win32.build ] && rm -rf win32.build || true
+
+ icebreaker: $(SRC:.c=.o)
+- $(CC) $(CFLAGS) $^ -o icebreaker $(SDL_LIB)
++ $(CC) $(LDFLAGS) $(CFLAGS) $^ -o icebreaker $(SDL_LIB)
+
+ man: icebreaker.6
+
+@@ -202,8 +200,8 @@
+ install -m 644 *.wav *.bmp $(datadir)/icebreaker
+
+ install-bin: icebreaker
+- install -s -g games -m 2755 icebreaker $(bindir) || \
+- install -s -m 755 icebreaker $(bindir)
++ install -g games -m 2755 icebreaker $(bindir) || \
++ install -m 755 icebreaker $(bindir)
+ @test -g $(bindir)/icebreaker || \
+ echo -e '*** Note: icebreaker binary not installed set-group-ID "games" -- shared\n*** highscores may be impossible. (Try installing as root.)'
+
diff --git a/games-puzzle/icebreaker/files/icebreaker-1.9.6-ovfl.patch b/games-puzzle/icebreaker/files/icebreaker-1.9.6-ovfl.patch
new file mode 100644
index 000000000000..5a59b04f79af
--- /dev/null
+++ b/games-puzzle/icebreaker/files/icebreaker-1.9.6-ovfl.patch
@@ -0,0 +1,20 @@
+--- menu.c.old 2013-06-24 22:09:11.606750080 +0200
++++ menu.c 2013-06-24 22:25:51.635735351 +0200
+@@ -522,7 +522,7 @@
+ { // "random", at the end/beginning of the list
+
+ strcpy(options.theme,"random");
+- snprintf(options.theme,MAXMENUVALUELENGTH,"random");
++ snprintf(options.theme,MAXTHEMENAMELENGTH,"random");
+
+ settheme("linux"); // just for pretty
+
+@@ -544,7 +544,7 @@
+ {
+ if (t<0) t=themecount;
+ strncpy(val,themelist[(t-1)%themecount],MAXMENUVALUELENGTH);
+- snprintf(options.theme,MAXMENUVALUELENGTH,themelist[(t-1)%themecount]);
++ snprintf(options.theme,MAXTHEMENAMELENGTH,themelist[(t-1)%themecount]);
+ }
+
+ settheme(options.theme);
diff --git a/games-puzzle/icebreaker/files/icebreaker-1.9.6-parallell-install.patch b/games-puzzle/icebreaker/files/icebreaker-1.9.6-parallell-install.patch
new file mode 100644
index 000000000000..de388d9b5758
--- /dev/null
+++ b/games-puzzle/icebreaker/files/icebreaker-1.9.6-parallell-install.patch
@@ -0,0 +1,34 @@
+--- Makefile.old 2010-10-19 10:26:18.000000000 +0200
++++ Makefile 2010-10-19 10:38:28.000000000 +0200
+@@ -196,26 +196,30 @@
+ themes-install: install-themes
+
+ install-themes:
++ mkdir -p $(datadir)/icebreaker
+ install -m 644 *.ibt $(datadir)/icebreaker
+ install -m 644 *.wav *.bmp $(datadir)/icebreaker
+
+ install-bin: icebreaker
++ mkdir -p $(bindir)
+ install -g games -m 2755 icebreaker $(bindir) || \
+ install -m 755 icebreaker $(bindir)
+ @test -g $(bindir)/icebreaker || \
+ echo -e '*** Note: icebreaker binary not installed set-group-ID "games" -- shared\n*** highscores may be impossible. (Try installing as root.)'
+
+ install-man: icebreaker.6
++ mkdir -p $(mandir)/man6
+ install -m 644 icebreaker.6 $(mandir)/man6
+
+ install-scorefile:
++ mkdir -p $(highscoredir)
+ touch $(highscoredir)/icebreaker.scores
+ chown -f games:games $(highscoredir)/icebreaker.scores && \
+ chmod 664 $(highscoredir)/icebreaker.scores || \
+ chmod 644 $(highscoredir)/icebreaker.scores
+
+
+-install: all install-mkdirs install-themes install-bin install-man install-scorefile
++install: install-themes install-bin install-man install-scorefile
+
+ %.d: %.c
+ set -e; $(CC) -M $(CFLAGS) $< \
diff --git a/games-puzzle/icebreaker/icebreaker-1.9.6.ebuild b/games-puzzle/icebreaker/icebreaker-1.9.6.ebuild
new file mode 100644
index 000000000000..3f049ee3e6b8
--- /dev/null
+++ b/games-puzzle/icebreaker/icebreaker-1.9.6.ebuild
@@ -0,0 +1,48 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+inherit eutils games
+
+DESCRIPTION="Trap and capture penguins on Antarctica"
+HOMEPAGE="http://www.mattdm.org/icebreaker/"
+SRC_URI="http://www.mattdm.org/${PN}/1.9.x/${P}.tgz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 ppc x86"
+IUSE=""
+
+RDEPEND="media-libs/libsdl[video]
+ media-libs/sdl-mixer"
+DEPEND="${RDEPEND}"
+
+src_prepare() {
+ epatch \
+ "${FILESDIR}"/${P}-ldflags.patch \
+ "${FILESDIR}"/${P}-gentoo.patch \
+ "${FILESDIR}"/${P}-parallell-install.patch \
+ "${FILESDIR}"/${P}-ovfl.patch
+}
+
+src_compile() {
+ emake \
+ OPTIMIZE="${CFLAGS}" \
+ prefix=/usr \
+ bindir="${GAMES_BINDIR}" \
+ datadir="${GAMES_DATADIR}" \
+ highscoredir="${GAMES_STATEDIR}"
+}
+
+src_install() {
+ emake \
+ prefix="${D}/usr" \
+ bindir="${D}${GAMES_BINDIR}" \
+ datadir="${D}${GAMES_DATADIR}" \
+ highscoredir="${D}${GAMES_STATEDIR}" install
+ newicon ${PN}_48.bmp ${PN}.bmp
+ make_desktop_entry ${PN} IceBreaker /usr/share/pixmaps/${PN}.bmp
+ dodoc ChangeLog README* TODO
+ prepgamesdirs
+}
diff --git a/games-puzzle/icebreaker/metadata.xml b/games-puzzle/icebreaker/metadata.xml
new file mode 100644
index 000000000000..d3c2cc926f0b
--- /dev/null
+++ b/games-puzzle/icebreaker/metadata.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<herd>games</herd>
+</pkgmetadata>