Skip to content

Commit

Permalink
games-arcade/abe: Apply Fedora fixes and drop games.eclass usage
Browse files Browse the repository at this point in the history
Package-Manager: Portage-2.3.28, Repoman-2.3.9
  • Loading branch information
pacho2 committed Apr 15, 2018
1 parent bf2e309 commit 6dc125c
Show file tree
Hide file tree
Showing 4 changed files with 173 additions and 0 deletions.
64 changes: 64 additions & 0 deletions games-arcade/abe/abe-1.1-r1.ebuild
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# Copyright 1999-2018 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

EAPI=6
inherit desktop toolchain-funcs

DESCRIPTION="A scrolling, platform-jumping, key-collecting, ancient pyramid exploring game"
HOMEPAGE="http://abe.sourceforge.net/"
SRC_URI="mirror://sourceforge/abe/${P}.tar.gz"

LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64 ~x86 ~x86-fbsd"
IUSE=""

DEPEND="media-libs/libsdl[sound,video]
x11-libs/libXi
media-libs/sdl-mixer[vorbis]"
RDEPEND=${DEPEND}

src_unpack() {
unpack ${A}
cd "${S}"
unpack ./images/images.tar
}

PATCHES=(
# From Fedora:
# Enable changing the video settings. Sent upstream 2 Apr 2006:
# https://sourceforge.net/tracker/?func=detail&aid=1463202&group_id=70141&atid=526743
"${FILESDIR}"/${P}-settings.patch

# Fix a double free() bug. Sent upstream 15 Mar 2011:
# https://sourceforge.net/tracker/?func=detail&aid=3214269&group_id=70141&atid=526745
"${FILESDIR}"/${P}-doublefree.patch

# Fix an incorrect printf format specifier. Sent upstream 15 Mar 2011:
# https://sourceforge.net/tracker/?func=detail&aid=3214270&group_id=70141&atid=526745
"${FILESDIR}"/${P}-format.patch

# Fix build failure with -Werror=format-security
"${FILESDIR}"/${P}-format-security.patch
)

src_prepare() {
default
sed -i \
-e "/^TR_CFLAGS/d" \
-e "/^TR_CXXFLAGS/d" \
configure || die
}

src_configure() {
econf --with-data-dir=/usr/share/${PN}
}

src_install() {
dobin src/abe
insinto /usr/share/${PN}
doins -r images sounds maps
newicon tom1.bmp abe.bmp
make_desktop_entry abe "Abe's Amazing Adventure" /usr/share/pixmaps/abe.bmp
einstalldocs
}
11 changes: 11 additions & 0 deletions games-arcade/abe/files/abe-1.1-doublefree.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
--- a/src/Main.c.orig 2005-03-05 09:20:04.000000000 -0700
+++ b/src/Main.c 2011-03-14 10:08:31.846413904 -0600
@@ -35,8 +35,6 @@
for(i = 0; modes[i]; ++i)
printf("\t%d x %d\n", modes[i]->w, modes[i]->h);
}
-
- free(modes);
}

void
87 changes: 87 additions & 0 deletions games-arcade/abe/files/abe-1.1-format-security.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
--- ./src/Game.c.orig 2005-03-05 09:20:04.000000000 -0700
+++ ./src/Game.c 2013-11-20 12:30:00.000000000 -0700
@@ -6,21 +6,14 @@ Game game;

// path_sprintf should not be used by other .c files, as it does not fit for them.
static void
-path_sprintf(char *path, char *formatted_name, int version)
+path_sprintf(char *path, const char *name, int version)
{
-
- int len;
-
- printf("path_sprintf (%p, %s, %d)\n", path, formatted_name, version);
-
- strcpy(path, getSaveGameDir());
-
- len = strlen(path);
-
if(1 == version) {
- sprintf(path + len, formatted_name);
+ printf("path_sprintf (%p, %s.dat, %d)\n", path, name, version);
+ sprintf(path, "%s%s.dat", getSaveGameDir(), name);
} else {
- sprintf(path + len, formatted_name, version);
+ printf("path_sprintf (%p, %s%d.dat, %d)\n", path, name, version, version);
+ sprintf(path, "%s%s%d.dat", getSaveGameDir(), name, version);
}

}
@@ -30,14 +23,14 @@ deleteSavedGame()
{
char path[PATH_SIZE];
// version 2
- path_sprintf(path, "save%d.dat", GAME_VERSION);
+ path_sprintf(path, "save", GAME_VERSION);
remove(path);
- path_sprintf(path, "savedmap%d.dat", GAME_VERSION);
+ path_sprintf(path, "savedmap", GAME_VERSION);
remove(path);
// version 1
- path_sprintf(path, "save.dat", 1);
+ path_sprintf(path, "save", 1);
remove(path);
- path_sprintf(path, "savedmap.dat", 1);
+ path_sprintf(path, "savedmap", 1);
remove(path);
}

@@ -51,7 +44,7 @@ saveGame()

mkshuae();

- path_sprintf(path, "save%d.dat", GAME_VERSION);
+ path_sprintf(path, "save", GAME_VERSION);

if(!(fp = fopen(path, "wb"))) {
err = strerror(errno);
@@ -79,7 +72,7 @@ saveGame()
SDL_RWclose(rwop);

// save the map
- path_sprintf(path, "savedmap%d.dat", GAME_VERSION);
+ path_sprintf(path, "savedmap", GAME_VERSION);
saveMapPath(path);
}

@@ -96,7 +89,7 @@ loadGame()
version = (int) GAME_VERSION;

// load the map
- path_sprintf(path, "savedmap%d.dat", GAME_VERSION);
+ path_sprintf(path, "savedmap", GAME_VERSION);
if(!loadMapPath(path, 0)) {
// if can't find saved map load static map
fprintf(stderr,
@@ -112,9 +105,9 @@ loadGame()
// try to find a saved game of any version
while(version > 0) {
if(version > 1) {
- path_sprintf(path, "save%d.dat", version);
+ path_sprintf(path, "save", version);
} else { // By Pedro: version==1
- path_sprintf(path, "save.dat", version);
+ path_sprintf(path, "save", version);
}
fprintf(stderr, "Trying to load saved game: %s\n", path);
fflush(stderr);
11 changes: 11 additions & 0 deletions games-arcade/abe/files/abe-1.1-format.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
--- a/src/MapIO.c.orig 2005-03-05 09:20:04.000000000 -0700
+++ b/src/MapIO.c 2011-03-14 10:15:33.166949366 -0600
@@ -93,7 +93,7 @@
// compression step 1: read compressed data from disk
// FIXME: what would be nicer is to only allocate as much mem as used on disk.
size = LEVEL_COUNT * map.w * map.h;
- printf("size %u\n", size);
+ printf("size %zu\n", size);
fflush(stdout);
if(!(read_buff = (Uint16 *) malloc(sizeof(Uint16) * size))) {
fprintf(stderr, "Out of memory on map read.");

0 comments on commit 6dc125c

Please sign in to comment.