diff options
Diffstat (limited to 'games-arcade')
-rw-r--r-- | games-arcade/xscavenger/Manifest | 1 | ||||
-rw-r--r-- | games-arcade/xscavenger/files/xscavenger-1.4.5-misc-fixes.patch | 130 | ||||
-rw-r--r-- | games-arcade/xscavenger/xscavenger-1.4.5.ebuild | 52 |
3 files changed, 183 insertions, 0 deletions
diff --git a/games-arcade/xscavenger/Manifest b/games-arcade/xscavenger/Manifest index 4767eec34c89..ca4a4be077e6 100644 --- a/games-arcade/xscavenger/Manifest +++ b/games-arcade/xscavenger/Manifest @@ -1 +1,2 @@ DIST xscavenger-1.4.4.tgz 193346 BLAKE2B eb86b97fad8a9d261935579d298f43e7063fbd0624e8fd654c72b4130e98db38541d54c59938375c8d6df4b50193436f86826c49b8bafe123b4be5c80d3f75d8 SHA512 5f200912b9114ea0c09f0bfcc3f06be2e7c2e1700a744319081f5f3a22c8b93663477076af27837326acf9830af6f597cf8f8fb44562db7d00128321487841ec +DIST xscavenger-1.4.5.tgz 192990 BLAKE2B 5df2ca8b7b331d9c17ef8f287a8967f4f95a8737660fb42e4f5012f00ab24698d555e3f76bd82f3ba7b55423244e9d0a4392ccce99c84bed6cf80dee15ab3bf6 SHA512 ebdde5c74409dc881503ee6eeecb7194218141c6e7c169c2febd1a4339625e1532a654fc1ac2ce7b3256e8a721f656dfb7bddc4394e0513a5130e3cc8795dfe7 diff --git a/games-arcade/xscavenger/files/xscavenger-1.4.5-misc-fixes.patch b/games-arcade/xscavenger/files/xscavenger-1.4.5-misc-fixes.patch new file mode 100644 index 000000000000..be45c6c4083b --- /dev/null +++ b/games-arcade/xscavenger/files/xscavenger-1.4.5-misc-fixes.patch @@ -0,0 +1,130 @@ +* Missing return value (needed by clang) +* Implicit declarations (string.h and doall) +* Datafile loading broken on architectures where sizeof(long)>4 + https://bugs.debian.org/56139 +* Scavenger leaks file descriptors + https://bugs.debian.org/175128 +* Font mapping with clang or gcc-7+ + https://svnweb.freebsd.org/ports?view=revision&revision=444423 +--- a/src/edit.c ++++ b/src/edit.c +@@ -3,2 +3,3 @@ + #include <stdio.h> ++#include <string.h> + #include <unistd.h> +--- a/src/scav.c ++++ b/src/scav.c +@@ -246,7 +246,9 @@ + +- val1=myci()<<24L; +- val1|=myci()<<16L; +- val1|=myci()<<8; +- val1|=myci(); ++ int i,j; + ++ for (i=0; i<4; i++) { ++ j = myci(); ++ if (j==-1) return -1L; ++ val1 = (val1<<8) + j; ++ } + return val1; +@@ -404,6 +406,6 @@ + got=read(input,buff,8); +- if(got!=8) return -2; +- if (strncmp(buff,"SCAV",4)) return -3; ++ if(got!=8) {close(input);return -2;} ++ if (strncmp(buff,"SCAV",4)) {close(input);return -3;} + max=(buff[4]<<24) | (buff[5]<<16) | (buff[6]<<8) | buff[7]; +- if(num>=max) return 0; ++ if(num>=max) {close(input);return 0;} + lseek(input,(num+1)<<3,SEEK_SET); +@@ -413,3 +415,3 @@ + if(len>length) len=length; +- if(!offset || !len) return 0; ++ if(!offset || !len) {close(input);return 0;} + lseek(input,offset,SEEK_SET); +@@ -450,4 +452,4 @@ + got=read(input,buff,8); +- if(got!=8) return -2; +- if(strncmp(buff,"SCAV",4)) return -3; ++ if(got!=8) {close(input);return -2;} ++ if(strncmp(buff,"SCAV",4)) {close(input);return -3;} + output=creat(bakname,00600); +@@ -475,4 +477,4 @@ + headers[i+i]+=delta; +- if (write(output,"SCAV",4) != 4) return -200; +- if (!rlout(output,max)) return -200; ++ if (write(output,"SCAV",4) != 4) {close(input);close(output);return -200;} ++ if (!rlout(output,max)) {close(input);close(output);return -200;} + headers[num+num]=0; +@@ -480,3 +482,3 @@ + for(i=0;i<max+max;i++) +- if (!rlout(output,headers[i])) return -200; ++ if (!rlout(output,headers[i])) {close(input);close(output);return -200;} + +@@ -489,4 +491,4 @@ + got=count>1024 ? 1024 : count; +- if (read(input,copybuff,got) != got) return -200; +- if (write(output,copybuff,got) != got) return -200; ++ if (read(input,copybuff,got) != got) {close(input);close(output);return -200;} ++ if (write(output,copybuff,got) != got) {close(input);close(output);return -200;} + count-=got; +@@ -500,3 +502,3 @@ + if (!got) break; +- if (write (output, copybuff, got) != got) return -200; ++ if (write (output, copybuff, got) != got) {close(input);close(output);return -200;} + offset += got; +@@ -505,8 +507,8 @@ + { +- if (write (output, take, len) != len) return -200; ++ if (write (output, take, len) != len) {close(input);close(output);return -200;} + lseek (output, (num+1) << 3, SEEK_SET); +- if (!rlout (output, offset)) return -200; ++ if (!rlout (output, offset)) {close(input);close(output);return -200;} + } + close (input); +- if (fsync(output)) return -200; ++ if (fsync(output)) {close(output);return -200;} + if (close(output)) return -200; +@@ -1384,2 +1386,3 @@ + } ++ close(file); + } +@@ -1418,2 +1421,4 @@ + } while(len); ++ close(input); ++ close(output); + return 0; +@@ -1450,3 +1455,3 @@ + } +- } ++ } else close(file); + +@@ -1487,3 +1492,3 @@ + } +- } ++ } else close(file); + } +@@ -1574,3 +1579,3 @@ + puts(err); +- return; ++ return 1; + } +--- a/src/sound.c ++++ b/src/sound.c +@@ -50,2 +50,3 @@ + ++void doall(); + void opendsp(int samplerate) +@@ -201,3 +202,3 @@ + +-doall() ++void doall() + { +--- a/src/x.c ++++ b/src/x.c +@@ -447,3 +447,3 @@ + { +- fmap[tolower(*p)]=fmap[*p++]=i++; ++ fmap[tolower(*p)]=fmap[*p]=i++; p++; + } diff --git a/games-arcade/xscavenger/xscavenger-1.4.5.ebuild b/games-arcade/xscavenger/xscavenger-1.4.5.ebuild new file mode 100644 index 000000000000..bb62ad68f021 --- /dev/null +++ b/games-arcade/xscavenger/xscavenger-1.4.5.ebuild @@ -0,0 +1,52 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit desktop flag-o-matic toolchain-funcs + +DESCRIPTION="Lode-Runner-like arcade game" +HOMEPAGE="https://www.linuxmotors.com/linux/scavenger/index.html" +SRC_URI="https://www.linuxmotors.com/linux/scavenger/downloads/${P}.tgz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~x86" + +RDEPEND=" + media-libs/alsa-lib + x11-libs/libX11" +DEPEND=" + ${RDEPEND} + x11-base/xorg-proto" +BDEPEND="virtual/pkgconfig" + +PATCHES=( + "${FILESDIR}"/${P}-misc-fixes.patch +) + +src_compile() { + tc-export CC + + # skip using imake for simplicity + local cppargs=( + -DLIBNAME="'\"${EPREFIX}/usr/share/${PN}\"'" + $($(tc-getPKG_CONFIG) --cflags alsa x11) + ) + append-cppflags "${cppargs[@]}" + + LDLIBS="$($(tc-getPKG_CONFIG) --libs alsa x11)" \ + emake -C src -E "scav: anim.o edit.o x.o sound.o" +} + +src_install() { + newbin src/scav scavenger + doman src/scavenger.6 + + dodoc CREDITS DOC README TODO changelog + + insinto /usr/share/${PN} + doins -r data/. + + make_desktop_entry scavenger XScavenger applications-games +} |