Don't fail enumeration if a directory isn't available in a given archive.
That shouldn't be a fatal error, that's a normal case.
This commit is contained in:
parent
f425f051db
commit
660171f79f
14
src/physfs.c
14
src/physfs.c
|
@ -2433,7 +2433,17 @@ int PHYSFS_enumerate(const char *_fn, PHYSFS_EnumerateCallback cb, void *data)
|
|||
|
||||
else if (verifyPath(i, &arcfname, 0))
|
||||
{
|
||||
if ((!allowSymLinks) && (i->funcs->info.supportsSymlinks))
|
||||
PHYSFS_Stat statbuf;
|
||||
if (!i->funcs->stat(i->opaque, arcfname, &statbuf))
|
||||
{
|
||||
if (currentErrorCode() == PHYSFS_ERR_NOT_FOUND)
|
||||
continue; /* no such dir in this archive, skip it. */
|
||||
} /* if */
|
||||
|
||||
if (statbuf.filetype != PHYSFS_FILETYPE_DIRECTORY)
|
||||
continue; /* not a directory in this archive, skip it. */
|
||||
|
||||
else if ((!allowSymLinks) && (i->funcs->info.supportsSymlinks))
|
||||
{
|
||||
filterdata.dirhandle = i;
|
||||
filterdata.arcfname = arcfname;
|
||||
|
@ -2446,7 +2456,7 @@ int PHYSFS_enumerate(const char *_fn, PHYSFS_EnumerateCallback cb, void *data)
|
|||
if (currentErrorCode() == PHYSFS_ERR_APP_CALLBACK)
|
||||
PHYSFS_setErrorCode(filterdata.errcode);
|
||||
} /* if */
|
||||
} /* if */
|
||||
} /* else if */
|
||||
else
|
||||
{
|
||||
retval = i->funcs->enumerate(i->opaque, arcfname,
|
||||
|
|
Loading…
Reference in New Issue