From 12976124d17bdc264bc811cad6433acb9af62d5b Mon Sep 17 00:00:00 2001 From: Stefan Strogin Date: Sun, 3 Mar 2019 17:19:47 +0200 Subject: [PATCH] dev-games/physfs: backport patch to fix PHYSFS_setWriteDir There was a bug in PHYSFS_setWriteDir() that caused creating an empty file "$HOME/.lincity-ng" instead of a directory on the first run of lincity-ng: https://github.com/lincity-ng/lincity-ng/issues/25 The upstream patch is added to branch but no release is made so far. Backport it. Package-Manager: Portage-2.3.62, Repoman-2.3.12 Signed-off-by: Stefan Strogin --- .../files/physfs-3.0.1-setwritedir.patch | 40 +++++++++++++++++++ dev-games/physfs/physfs-3.0.1-r1.ebuild | 4 +- 2 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 dev-games/physfs/files/physfs-3.0.1-setwritedir.patch diff --git a/dev-games/physfs/files/physfs-3.0.1-setwritedir.patch b/dev-games/physfs/files/physfs-3.0.1-setwritedir.patch new file mode 100644 index 0000000000000..9673e12a2b23c --- /dev/null +++ b/dev-games/physfs/files/physfs-3.0.1-setwritedir.patch @@ -0,0 +1,40 @@ +Upstream-Status: Backport +[https://hg.icculus.org/icculus/physfs/rev/a29fef4a20fd] + +# HG changeset patch +# User Ryan C. Gordon +# Date 1526514891 14400 +# Node ID a29fef4a20fd79ead82998c91dc4828ed5061cb5 +# Parent db8f944df5c56f0244229813203fb5b24e8d9968 +PHYSFS_setWriteDir() shouldn't create an empty file if the dir doesn't exist. +(transplanted from 2653b3bc19c9ba7d1e6bf53566719e4e30935382) + +diff -r db8f944df5c5 -r a29fef4a20fd src/physfs.c +--- a/src/physfs.c Thu Apr 19 10:06:38 2018 -0400 ++++ b/src/physfs.c Wed May 16 19:54:51 2018 -0400 +@@ -879,13 +879,20 @@ + + if (io == NULL) + { ++ /* file doesn't exist, etc? Just fail out. */ ++ PHYSFS_Stat statbuf; ++ BAIL_IF_ERRPASS(!__PHYSFS_platformStat(d, &statbuf, 1), NULL); ++ + /* DIR gets first shot (unlike the rest, it doesn't deal with files). */ +- retval = tryOpenDir(io, &__PHYSFS_Archiver_DIR, d, forWriting, &claimed); +- if (retval || claimed) +- return retval; ++ if (statbuf.filetype == PHYSFS_FILETYPE_DIRECTORY) ++ { ++ retval = tryOpenDir(io, &__PHYSFS_Archiver_DIR, d, forWriting, &claimed); ++ if (retval || claimed) ++ return retval; ++ } /* if */ + + io = __PHYSFS_createNativeIo(d, forWriting ? 'w' : 'r'); +- BAIL_IF_ERRPASS(!io, 0); ++ BAIL_IF_ERRPASS(!io, NULL); + created_io = 1; + } /* if */ + + diff --git a/dev-games/physfs/physfs-3.0.1-r1.ebuild b/dev-games/physfs/physfs-3.0.1-r1.ebuild index 237ccc126998b..79ee475a7b89d 100644 --- a/dev-games/physfs/physfs-3.0.1-r1.ebuild +++ b/dev-games/physfs/physfs-3.0.1-r1.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2018 Gentoo Foundation +# Copyright 1999-2019 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=6 @@ -17,6 +17,8 @@ DEPEND="doc? ( app-doc/doxygen )" DOCS=( docs/CHANGELOG.txt docs/CREDITS.txt docs/TODO.txt ) +PATCHES=( "${FILESDIR}/${P}-setwritedir.patch" ) + multilib_src_configure() { local mycmakeargs=( -DPHYSFS_BUILD_SHARED=ON