Skip to content

Commit

Permalink
dev-games/physfs: backport patch to fix PHYSFS_setWriteDir
Browse files Browse the repository at this point in the history
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:
lincity-ng/lincity-ng#25

The upstream patch is added to <stable-3.0> 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 <stefan.strogin@gmail.com>
Closes: #11231
Signed-off-by: James Le Cuirot <chewi@gentoo.org>
  • Loading branch information
steils authored and chewi committed Mar 4, 2019
1 parent be68fef commit 248251b
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 1 deletion.
40 changes: 40 additions & 0 deletions 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 <icculus@icculus.org>
# 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 */


@@ -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
Expand All @@ -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
Expand Down

0 comments on commit 248251b

Please sign in to comment.