Skip to content

Commit

Permalink
Add binary compatibility to PHYSFS_Io.
Browse files Browse the repository at this point in the history
  • Loading branch information
icculus committed Mar 25, 2012
1 parent a7383c2 commit 6222a4a
Show file tree
Hide file tree
Showing 7 changed files with 37 additions and 24 deletions.
4 changes: 2 additions & 2 deletions src/archiver_iso9660.c
Expand Up @@ -526,15 +526,15 @@ static PHYSFS_sint64 ISO9660_length(PHYSFS_Io *io)

static const PHYSFS_Io ISO9660_Io =
{
CURRENT_PHYSFS_IO_API_VERSION, NULL,
ISO9660_read,
ISO9660_write,
ISO9660_seek,
ISO9660_tell,
ISO9660_length,
ISO9660_duplicate,
ISO9660_flush,
ISO9660_destroy,
NULL
ISO9660_destroy
};


Expand Down
4 changes: 2 additions & 2 deletions src/archiver_lzma.c
Expand Up @@ -427,15 +427,15 @@ static void LZMA_destroy(PHYSFS_Io *io)

static const PHYSFS_Io LZMA_Io =
{
CURRENT_PHYSFS_IO_API_VERSION, NULL,
LZMA_read,
LZMA_write,
LZMA_seek,
LZMA_tell,
LZMA_length,
LZMA_duplicate,
LZMA_flush,
LZMA_destroy,
NULL
LZMA_destroy
};


Expand Down
4 changes: 2 additions & 2 deletions src/archiver_unpacked.c
Expand Up @@ -133,15 +133,15 @@ static void UNPK_destroy(PHYSFS_Io *io)

static const PHYSFS_Io UNPK_Io =
{
CURRENT_PHYSFS_IO_API_VERSION, NULL,
UNPK_read,
UNPK_write,
UNPK_seek,
UNPK_tell,
UNPK_length,
UNPK_duplicate,
UNPK_flush,
UNPK_destroy,
NULL
UNPK_destroy
};


Expand Down
4 changes: 2 additions & 2 deletions src/archiver_zip.c
Expand Up @@ -394,15 +394,15 @@ static void ZIP_destroy(PHYSFS_Io *io)

static const PHYSFS_Io ZIP_Io =
{
CURRENT_PHYSFS_IO_API_VERSION, NULL,
ZIP_read,
ZIP_write,
ZIP_seek,
ZIP_tell,
ZIP_length,
ZIP_duplicate,
ZIP_flush,
ZIP_destroy,
NULL
ZIP_destroy
};


Expand Down
13 changes: 7 additions & 6 deletions src/physfs.c
Expand Up @@ -174,15 +174,15 @@ static void nativeIo_destroy(PHYSFS_Io *io)

static const PHYSFS_Io __PHYSFS_nativeIoInterface =
{
CURRENT_PHYSFS_IO_API_VERSION, NULL,
nativeIo_read,
nativeIo_write,
nativeIo_seek,
nativeIo_tell,
nativeIo_length,
nativeIo_duplicate,
nativeIo_flush,
nativeIo_destroy,
NULL
nativeIo_destroy
};

PHYSFS_Io *__PHYSFS_createNativeIo(const char *path, const int mode)
Expand Down Expand Up @@ -369,15 +369,15 @@ static void memoryIo_destroy(PHYSFS_Io *io)

static const PHYSFS_Io __PHYSFS_memoryIoInterface =
{
CURRENT_PHYSFS_IO_API_VERSION, NULL,
memoryIo_read,
memoryIo_write,
memoryIo_seek,
memoryIo_tell,
memoryIo_length,
memoryIo_duplicate,
memoryIo_flush,
memoryIo_destroy,
NULL
memoryIo_destroy
};

PHYSFS_Io *__PHYSFS_createMemoryIo(const void *buf, PHYSFS_uint64 len,
Expand Down Expand Up @@ -512,15 +512,15 @@ static void handleIo_destroy(PHYSFS_Io *io)

static const PHYSFS_Io __PHYSFS_handleIoInterface =
{
CURRENT_PHYSFS_IO_API_VERSION, NULL,
handleIo_read,
handleIo_write,
handleIo_seek,
handleIo_tell,
handleIo_length,
handleIo_duplicate,
handleIo_flush,
handleIo_destroy,
NULL
handleIo_destroy
};

static PHYSFS_Io *__PHYSFS_createHandleIo(PHYSFS_File *f)
Expand Down Expand Up @@ -1494,6 +1494,7 @@ int PHYSFS_mountIo(PHYSFS_Io *io, const char *fname,
const char *mountPoint, int appendToPath)
{
BAIL_IF_MACRO(!io, PHYSFS_ERR_INVALID_ARGUMENT, 0);
BAIL_IF_MACRO(io->version != 0, PHYSFS_ERR_UNSUPPORTED, 0);
return doMount(io, fname, mountPoint, appendToPath);
} /* PHYSFS_mountIo */

Expand Down
30 changes: 20 additions & 10 deletions src/physfs.h
Expand Up @@ -2809,6 +2809,26 @@ PHYSFS_DECL PHYSFS_sint64 PHYSFS_writeBytes(PHYSFS_File *handle,
*/
typedef struct PHYSFS_Io
{
/**
* \brief Binary compatibility information.
*
* This must be set to zero at this time. Future versions of this
* struct will increment this field, so we know what a given
* implementation supports. We'll presumably keep supporting older
* versions as we offer new features, though.
*/
PHYSFS_uint32 version;

/**
* \brief Instance data for this struct.
*
* Each instance has a pointer associated with it that can be used to
* store anything it likes. This pointer is per-instance of the stream,
* so presumably it will change when calling duplicate(). This can be
* deallocated during the destroy() method.
*/
void *opaque;

/**
* \brief Read more data.
*
Expand Down Expand Up @@ -2936,16 +2956,6 @@ typedef struct PHYSFS_Io
* \param s The i/o instance to destroy.
*/
void (*destroy)(struct PHYSFS_Io *io);

/**
* \brief Instance data for this struct.
*
* Each instance has a pointer associated with it that can be used to
* store anything it likes. This pointer is per-instance of the stream,
* so presumably it will change when calling duplicate(). This can be
* deallocated during the destroy() method.
*/
void *opaque;
} PHYSFS_Io;


Expand Down
2 changes: 2 additions & 0 deletions src/physfs_internal.h
Expand Up @@ -118,6 +118,8 @@ void __PHYSFS_smallFree(void *ptr);
#define PHYSFS_SUPPORTS_ISO9660 0
#endif

/* The latest supported PHYSFS_Io::version value. */
#define CURRENT_PHYSFS_IO_API_VERSION 0

/* Opaque data for file and dir handlers... */
typedef void PHYSFS_Dir;
Expand Down

0 comments on commit 6222a4a

Please sign in to comment.