Skip to content

Commit

Permalink
Added __PHYSFS_addToLinkedStringList().
Browse files Browse the repository at this point in the history
  • Loading branch information
icculus committed Jul 23, 2002
1 parent 5b55a52 commit 01567b3
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 1 deletion.
38 changes: 37 additions & 1 deletion physfs.c
Expand Up @@ -1210,7 +1210,7 @@ int PHYSFS_isDirectory(const char *fname)
DirHandle *h = i->dirHandle;
if (__PHYSFS_verifySecurity(h, fname))
{
if (!h->funcs->exists(h, fname))
if (!h->funcs->exists(h, fname)) /* !!! FIXME: Let archivers figure this out. */
__PHYSFS_setError(ERR_NO_SUCH_FILE);
else
{
Expand Down Expand Up @@ -1461,5 +1461,41 @@ PHYSFS_sint64 PHYSFS_fileLength(PHYSFS_file *handle)
return(h->funcs->fileLength(h));
} /* PHYSFS_filelength */


LinkedStringList *__PHYSFS_addToLinkedStringList(LinkedStringList *retval,
LinkedStringList **prev,
const char *str,
PHYSFS_sint32 len)
{
LinkedStringList *l;

l = (LinkedStringList *) malloc(sizeof (LinkedStringList));
BAIL_IF_MACRO(l == NULL, ERR_OUT_OF_MEMORY, retval);

if (len < 0)
len = strlen(str);

l->str = (char *) malloc(len + 1);
if (l->str == NULL)
{
free(l);
BAIL_MACRO(ERR_OUT_OF_MEMORY, retval);
} /* if */

strncpy(l->str, str, len);
l->str[len] = '\0';

if (retval == NULL)
retval = l;
else
(*prev)->next = l;

*prev = l;
l->next = NULL;
return(retval);
} /* __PHYSFS_addToLinkedStringList */



/* end of physfs.c ... */

13 changes: 13 additions & 0 deletions physfs_internal.h
Expand Up @@ -166,6 +166,8 @@ typedef struct __PHYSFS_DIRFUNCTIONS__
/*
* Returns non-zero if filename is really a directory.
* This filename is in platform-independent notation.
* Symlinks should be followed; if what the symlink points
* to is missing, or isn't a directory, then the retval is zero.
*/
int (*isDirectory)(DirHandle *r, const char *name);

Expand Down Expand Up @@ -317,6 +319,17 @@ char *__PHYSFS_convertToDependent(const char *prepend,
int __PHYSFS_verifySecurity(DirHandle *h, const char *fname);


/*
* Use this to build the list that your enumerate function should return.
* See zip.c for an example of proper use.
*/
LinkedStringList *__PHYSFS_addToLinkedStringList(LinkedStringList *retval,
LinkedStringList **prev,
const char *str,
PHYSFS_sint32 len);



/* These get used all over for lessening code clutter. */
#define BAIL_MACRO(e, r) { __PHYSFS_setError(e); return r; }
#define BAIL_IF_MACRO(c, e, r) if (c) { __PHYSFS_setError(e); return r; }
Expand Down

0 comments on commit 01567b3

Please sign in to comment.