src/physfs_archiver_slb.c
author Ryan C. Gordon <icculus@icculus.org>
Sat, 12 Aug 2017 02:19:22 -0400
changeset 1559 aaee2b83291f
parent 1507 8953b8a171e7
child 1571 fbd9698219c1
permissions -rw-r--r--
Reworked enumeration to be more powerful. Now callbacks can stop further enumeration and report errors, if they had a catastrophic issue or just found what they needed and don't need to process any more items. Also, the actual enumerators can report errors instead of silently dropping items. This led to several other fixes as all these implementations got audited and reworked. The original, non-callback enumerator now returns NULL if it can't produce a complete list instead of dropping items and returning a partial list.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1315
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
     1
/*
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
     2
 * SLB support routines for PhysicsFS.
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
     3
 *
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
     4
 * This driver handles SLB archives ("slab files"). This uncompressed format
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
     5
 * is used in I-War / Independence War and Independence War: Defiance.
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
     6
 *
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
     7
 * The format begins with four zero bytes (version?), the file count and the
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
     8
 * location of the table of contents. Each ToC entry contains a 64-byte buffer
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
     9
 * containing a zero-terminated filename, the offset of the data, and its size.
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    10
 * All the filenames begin with the separator character '\'. 
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    11
 *
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    12
 * Please see the file LICENSE.txt in the source's root directory.
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    13
 *
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    14
 * This file written by Aleksi Nurmi, based on the GRP archiver by
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    15
 * Ryan C. Gordon.
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    16
 */
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    17
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    18
#define __PHYSICSFS_INTERNAL__
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    19
#include "physfs_internal.h"
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    20
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    21
#if PHYSFS_SUPPORTS_SLB
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    22
1463
c23e55bad32d Reworked the "unpacked" archivers to use DirTree.
Ryan C. Gordon <icculus@icculus.org>
parents: 1402
diff changeset
    23
static int slbLoadEntries(PHYSFS_Io *io, const PHYSFS_uint32 count, void *arc)
1315
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    24
{
1463
c23e55bad32d Reworked the "unpacked" archivers to use DirTree.
Ryan C. Gordon <icculus@icculus.org>
parents: 1402
diff changeset
    25
    PHYSFS_uint32 i;
c23e55bad32d Reworked the "unpacked" archivers to use DirTree.
Ryan C. Gordon <icculus@icculus.org>
parents: 1402
diff changeset
    26
    for (i = 0; i < count; i++)
1315
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    27
    {
1504
803282f78987 Minor code cleanups: whitespace fixes, 80-column overflows, wrong comments.
Ryan C. Gordon <icculus@icculus.org>
parents: 1498
diff changeset
    28
        PHYSFS_uint32 pos;
1463
c23e55bad32d Reworked the "unpacked" archivers to use DirTree.
Ryan C. Gordon <icculus@icculus.org>
parents: 1402
diff changeset
    29
        PHYSFS_uint32 size;
c23e55bad32d Reworked the "unpacked" archivers to use DirTree.
Ryan C. Gordon <icculus@icculus.org>
parents: 1402
diff changeset
    30
        char name[64];
c23e55bad32d Reworked the "unpacked" archivers to use DirTree.
Ryan C. Gordon <icculus@icculus.org>
parents: 1402
diff changeset
    31
        char backslash;
1315
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    32
        char *ptr;
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    33
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    34
        /* don't include the '\' in the beginning */
1463
c23e55bad32d Reworked the "unpacked" archivers to use DirTree.
Ryan C. Gordon <icculus@icculus.org>
parents: 1402
diff changeset
    35
        BAIL_IF_ERRPASS(!__PHYSFS_readAll(io, &backslash, 1), 0);
c23e55bad32d Reworked the "unpacked" archivers to use DirTree.
Ryan C. Gordon <icculus@icculus.org>
parents: 1402
diff changeset
    36
        BAIL_IF(backslash != '\\', PHYSFS_ERR_CORRUPT, 0);
1315
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    37
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    38
        /* read the rest of the buffer, 63 bytes */
1463
c23e55bad32d Reworked the "unpacked" archivers to use DirTree.
Ryan C. Gordon <icculus@icculus.org>
parents: 1402
diff changeset
    39
        BAIL_IF_ERRPASS(!__PHYSFS_readAll(io, &name, 63), 0);
c23e55bad32d Reworked the "unpacked" archivers to use DirTree.
Ryan C. Gordon <icculus@icculus.org>
parents: 1402
diff changeset
    40
        name[63] = '\0'; /* in case the name lacks the null terminator */
1315
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    41
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    42
        /* convert backslashes */
1463
c23e55bad32d Reworked the "unpacked" archivers to use DirTree.
Ryan C. Gordon <icculus@icculus.org>
parents: 1402
diff changeset
    43
        for (ptr = name; *ptr; ptr++)
1315
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    44
        {
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    45
            if (*ptr == '\\')
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    46
                *ptr = '/';
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    47
        } /* for */
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    48
1504
803282f78987 Minor code cleanups: whitespace fixes, 80-column overflows, wrong comments.
Ryan C. Gordon <icculus@icculus.org>
parents: 1498
diff changeset
    49
        BAIL_IF_ERRPASS(!__PHYSFS_readAll(io, &pos, 4), 0);
803282f78987 Minor code cleanups: whitespace fixes, 80-column overflows, wrong comments.
Ryan C. Gordon <icculus@icculus.org>
parents: 1498
diff changeset
    50
        pos = PHYSFS_swapULE32(pos);
1315
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    51
1463
c23e55bad32d Reworked the "unpacked" archivers to use DirTree.
Ryan C. Gordon <icculus@icculus.org>
parents: 1402
diff changeset
    52
        BAIL_IF_ERRPASS(!__PHYSFS_readAll(io, &size, 4), 0);
c23e55bad32d Reworked the "unpacked" archivers to use DirTree.
Ryan C. Gordon <icculus@icculus.org>
parents: 1402
diff changeset
    53
        size = PHYSFS_swapULE32(size);
c23e55bad32d Reworked the "unpacked" archivers to use DirTree.
Ryan C. Gordon <icculus@icculus.org>
parents: 1402
diff changeset
    54
1504
803282f78987 Minor code cleanups: whitespace fixes, 80-column overflows, wrong comments.
Ryan C. Gordon <icculus@icculus.org>
parents: 1498
diff changeset
    55
        BAIL_IF_ERRPASS(!UNPK_addEntry(arc, name, 0, -1, -1, pos, size), 0);
1315
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    56
    } /* for */
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    57
1463
c23e55bad32d Reworked the "unpacked" archivers to use DirTree.
Ryan C. Gordon <icculus@icculus.org>
parents: 1402
diff changeset
    58
    return 1;
1315
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    59
} /* slbLoadEntries */
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    60
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    61
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    62
static void *SLB_openArchive(PHYSFS_Io *io, const char *name, int forWriting)
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    63
{
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    64
    PHYSFS_uint32 version;
1463
c23e55bad32d Reworked the "unpacked" archivers to use DirTree.
Ryan C. Gordon <icculus@icculus.org>
parents: 1402
diff changeset
    65
    PHYSFS_uint32 count;
c23e55bad32d Reworked the "unpacked" archivers to use DirTree.
Ryan C. Gordon <icculus@icculus.org>
parents: 1402
diff changeset
    66
    PHYSFS_uint32 tocPos;
c23e55bad32d Reworked the "unpacked" archivers to use DirTree.
Ryan C. Gordon <icculus@icculus.org>
parents: 1402
diff changeset
    67
    void *unpkarc;
1315
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    68
1493
66357f286930 slb: be more aggressive about rejecting non-SLB files.
Ryan C. Gordon <icculus@icculus.org>
parents: 1463
diff changeset
    69
    /* There's no identifier on an SLB file, so we assume it's _not_ if the
66357f286930 slb: be more aggressive about rejecting non-SLB files.
Ryan C. Gordon <icculus@icculus.org>
parents: 1463
diff changeset
    70
       file count or tocPos is zero. Beyond that, we'll assume it's
66357f286930 slb: be more aggressive about rejecting non-SLB files.
Ryan C. Gordon <icculus@icculus.org>
parents: 1463
diff changeset
    71
       bogus/corrupt if the entries' filenames don't start with '\' or the
66357f286930 slb: be more aggressive about rejecting non-SLB files.
Ryan C. Gordon <icculus@icculus.org>
parents: 1463
diff changeset
    72
       tocPos is past the end of the file (seek will fail). This probably
66357f286930 slb: be more aggressive about rejecting non-SLB files.
Ryan C. Gordon <icculus@icculus.org>
parents: 1463
diff changeset
    73
       covers all meaningful cases where we would accidentally accept a non-SLB
66357f286930 slb: be more aggressive about rejecting non-SLB files.
Ryan C. Gordon <icculus@icculus.org>
parents: 1463
diff changeset
    74
       file with this archiver. */
66357f286930 slb: be more aggressive about rejecting non-SLB files.
Ryan C. Gordon <icculus@icculus.org>
parents: 1463
diff changeset
    75
1315
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    76
    assert(io != NULL);  /* shouldn't ever happen. */
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    77
1402
c5a5dadb901d Cleanup BAIL_* and GOTO_* macros to be less cluttered.
Ryan C. Gordon <icculus@icculus.org>
parents: 1373
diff changeset
    78
    BAIL_IF(forWriting, PHYSFS_ERR_READ_ONLY, NULL);
1315
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    79
1463
c23e55bad32d Reworked the "unpacked" archivers to use DirTree.
Ryan C. Gordon <icculus@icculus.org>
parents: 1402
diff changeset
    80
    BAIL_IF_ERRPASS(!__PHYSFS_readAll(io, &version, sizeof (version)), NULL);
1315
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    81
    version = PHYSFS_swapULE32(version);
1402
c5a5dadb901d Cleanup BAIL_* and GOTO_* macros to be less cluttered.
Ryan C. Gordon <icculus@icculus.org>
parents: 1373
diff changeset
    82
    BAIL_IF(version != 0, PHYSFS_ERR_UNSUPPORTED, NULL);
1315
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    83
1463
c23e55bad32d Reworked the "unpacked" archivers to use DirTree.
Ryan C. Gordon <icculus@icculus.org>
parents: 1402
diff changeset
    84
    BAIL_IF_ERRPASS(!__PHYSFS_readAll(io, &count, sizeof (count)), NULL);
1315
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    85
    count = PHYSFS_swapULE32(count);
1493
66357f286930 slb: be more aggressive about rejecting non-SLB files.
Ryan C. Gordon <icculus@icculus.org>
parents: 1463
diff changeset
    86
    BAIL_IF(!count, PHYSFS_ERR_UNSUPPORTED, NULL);
1315
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    87
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    88
    /* offset of the table of contents */
1463
c23e55bad32d Reworked the "unpacked" archivers to use DirTree.
Ryan C. Gordon <icculus@icculus.org>
parents: 1402
diff changeset
    89
    BAIL_IF_ERRPASS(!__PHYSFS_readAll(io, &tocPos, sizeof (tocPos)), NULL);
1315
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    90
    tocPos = PHYSFS_swapULE32(tocPos);
1493
66357f286930 slb: be more aggressive about rejecting non-SLB files.
Ryan C. Gordon <icculus@icculus.org>
parents: 1463
diff changeset
    91
    BAIL_IF(!tocPos, PHYSFS_ERR_UNSUPPORTED, NULL);
1315
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    92
    
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    93
    /* seek to the table of contents */
1402
c5a5dadb901d Cleanup BAIL_* and GOTO_* macros to be less cluttered.
Ryan C. Gordon <icculus@icculus.org>
parents: 1373
diff changeset
    94
    BAIL_IF_ERRPASS(!io->seek(io, tocPos), NULL);
1315
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    95
1494
4e2c7ce9bf11 DirTrees and unpacked archives shouldn't demand a count of entries for init.
Ryan C. Gordon <icculus@icculus.org>
parents: 1493
diff changeset
    96
    unpkarc = UNPK_openArchive(io);
1463
c23e55bad32d Reworked the "unpacked" archivers to use DirTree.
Ryan C. Gordon <icculus@icculus.org>
parents: 1402
diff changeset
    97
    BAIL_IF_ERRPASS(!unpkarc, NULL);
1315
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
    98
1463
c23e55bad32d Reworked the "unpacked" archivers to use DirTree.
Ryan C. Gordon <icculus@icculus.org>
parents: 1402
diff changeset
    99
    if (!slbLoadEntries(io, count, unpkarc))
c23e55bad32d Reworked the "unpacked" archivers to use DirTree.
Ryan C. Gordon <icculus@icculus.org>
parents: 1402
diff changeset
   100
    {
1497
b9d771d6805f unpacked: let archivers "abandon" the archive instead of closing it.
Ryan C. Gordon <icculus@icculus.org>
parents: 1494
diff changeset
   101
        UNPK_abandonArchive(unpkarc);
1463
c23e55bad32d Reworked the "unpacked" archivers to use DirTree.
Ryan C. Gordon <icculus@icculus.org>
parents: 1402
diff changeset
   102
        return NULL;
c23e55bad32d Reworked the "unpacked" archivers to use DirTree.
Ryan C. Gordon <icculus@icculus.org>
parents: 1402
diff changeset
   103
    } /* if */
c23e55bad32d Reworked the "unpacked" archivers to use DirTree.
Ryan C. Gordon <icculus@icculus.org>
parents: 1402
diff changeset
   104
c23e55bad32d Reworked the "unpacked" archivers to use DirTree.
Ryan C. Gordon <icculus@icculus.org>
parents: 1402
diff changeset
   105
    return unpkarc;
1315
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
   106
} /* SLB_openArchive */
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
   107
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
   108
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
   109
const PHYSFS_Archiver __PHYSFS_Archiver_SLB =
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
   110
{
1322
5476917b8ddf Allow application-supplied archivers.
Ryan C. Gordon <icculus@icculus.org>
parents: 1320
diff changeset
   111
    CURRENT_PHYSFS_ARCHIVER_API_VERSION,
1315
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
   112
    {
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
   113
        "SLB",
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
   114
        "I-War / Independence War Slab file",
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
   115
        "Aleksi Nurmi <aleksi.nurmi@gmail.com>",
1373
527ef3c6a2d6 HTTPS all the things.
Ryan C. Gordon <icculus@icculus.org>
parents: 1331
diff changeset
   116
        "https://bitbucket.org/ahnurmi/",
1326
ac0fac4fe6d6 Moved supportsSymlinks into PHYSFS_ArchiveInfo.
Ryan C. Gordon <icculus@icculus.org>
parents: 1324
diff changeset
   117
        0,  /* supportsSymlinks */
1315
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
   118
    },
1330
ce6b4a66b3eb Removed comments added by Captain Obvious.
Ryan C. Gordon <icculus@icculus.org>
parents: 1326
diff changeset
   119
    SLB_openArchive,
1559
aaee2b83291f Reworked enumeration to be more powerful.
Ryan C. Gordon <icculus@icculus.org>
parents: 1507
diff changeset
   120
    UNPK_enumerate,
1330
ce6b4a66b3eb Removed comments added by Captain Obvious.
Ryan C. Gordon <icculus@icculus.org>
parents: 1326
diff changeset
   121
    UNPK_openRead,
ce6b4a66b3eb Removed comments added by Captain Obvious.
Ryan C. Gordon <icculus@icculus.org>
parents: 1326
diff changeset
   122
    UNPK_openWrite,
ce6b4a66b3eb Removed comments added by Captain Obvious.
Ryan C. Gordon <icculus@icculus.org>
parents: 1326
diff changeset
   123
    UNPK_openAppend,
ce6b4a66b3eb Removed comments added by Captain Obvious.
Ryan C. Gordon <icculus@icculus.org>
parents: 1326
diff changeset
   124
    UNPK_remove,
ce6b4a66b3eb Removed comments added by Captain Obvious.
Ryan C. Gordon <icculus@icculus.org>
parents: 1326
diff changeset
   125
    UNPK_mkdir,
1331
eb06a37afa7e Rearranged PHYSFS_Archiver struct.
Ryan C. Gordon <icculus@icculus.org>
parents: 1330
diff changeset
   126
    UNPK_stat,
eb06a37afa7e Rearranged PHYSFS_Archiver struct.
Ryan C. Gordon <icculus@icculus.org>
parents: 1330
diff changeset
   127
    UNPK_closeArchive
1315
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
   128
};
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
   129
c686e4f84ab5 SLB archiver
Aleksi Nurmi <aleksi.nurmi@gmail.com>
parents:
diff changeset
   130
#endif  /* defined PHYSFS_SUPPORTS_SLB */
1320
c1da17c10a41 Cleaned up some simple comments.
Ryan C. Gordon <icculus@icculus.org>
parents: 1315
diff changeset
   131
1507
8953b8a171e7 Update filename comments.
Ryan C. Gordon <icculus@icculus.org>
parents: 1506
diff changeset
   132
/* end of physfs_archiver_slb.c ... */