physfs 3.0.2
physfs.h
Go to the documentation of this file.
1
219#ifndef _INCLUDE_PHYSFS_H_
220#define _INCLUDE_PHYSFS_H_
221
222#ifdef __cplusplus
223extern "C" {
224#endif
225
226#if defined(PHYSFS_DECL)
227/* do nothing. */
228#elif defined(_MSC_VER)
229#define PHYSFS_DECL __declspec(dllexport)
230#elif defined(__SUNPRO_C)
231#define PHYSFS_DECL __global
232#elif ((__GNUC__ >= 3) && (!defined(__EMX__)) && (!defined(sun)))
233#define PHYSFS_DECL __attribute__((visibility("default")))
234#else
235#define PHYSFS_DECL
236#endif
237
238#if defined(PHYSFS_DEPRECATED)
239/* do nothing. */
240#elif (__GNUC__ >= 4) /* technically, this arrived in gcc 3.1, but oh well. */
241#define PHYSFS_DEPRECATED __attribute__((deprecated))
242#else
243#define PHYSFS_DEPRECATED
244#endif
245
246#if 0 /* !!! FIXME: look into this later. */
247#if defined(PHYSFS_CALL)
248/* do nothing. */
249#elif defined(__WIN32__) && !defined(__GNUC__)
250#define PHYSFS_CALL __cdecl
251#elif defined(__OS2__) || defined(OS2) /* should work across all compilers. */
252#define PHYSFS_CALL _System
253#else
254#define PHYSFS_CALL
255#endif
256#endif
257
262typedef unsigned char PHYSFS_uint8;
263
268typedef signed char PHYSFS_sint8;
269
274typedef unsigned short PHYSFS_uint16;
275
280typedef signed short PHYSFS_sint16;
281
286typedef unsigned int PHYSFS_uint32;
287
292typedef signed int PHYSFS_sint32;
293
309#if (defined PHYSFS_NO_64BIT_SUPPORT) /* oh well. */
312#elif (defined _MSC_VER)
313typedef signed __int64 PHYSFS_sint64;
314typedef unsigned __int64 PHYSFS_uint64;
315#else
316typedef unsigned long long PHYSFS_uint64;
317typedef signed long long PHYSFS_sint64;
318#endif
319
320
321#ifndef DOXYGEN_SHOULD_IGNORE_THIS
322/* Make sure the types really have the right sizes */
323#define PHYSFS_COMPILE_TIME_ASSERT(name, x) \
324 typedef int PHYSFS_compile_time_assert_##name[(x) * 2 - 1]
325
326PHYSFS_COMPILE_TIME_ASSERT(uint8IsOneByte, sizeof(PHYSFS_uint8) == 1);
327PHYSFS_COMPILE_TIME_ASSERT(sint8IsOneByte, sizeof(PHYSFS_sint8) == 1);
328PHYSFS_COMPILE_TIME_ASSERT(uint16IsTwoBytes, sizeof(PHYSFS_uint16) == 2);
329PHYSFS_COMPILE_TIME_ASSERT(sint16IsTwoBytes, sizeof(PHYSFS_sint16) == 2);
330PHYSFS_COMPILE_TIME_ASSERT(uint32IsFourBytes, sizeof(PHYSFS_uint32) == 4);
331PHYSFS_COMPILE_TIME_ASSERT(sint32IsFourBytes, sizeof(PHYSFS_sint32) == 4);
332
333#ifndef PHYSFS_NO_64BIT_SUPPORT
334PHYSFS_COMPILE_TIME_ASSERT(uint64IsEightBytes, sizeof(PHYSFS_uint64) == 8);
335PHYSFS_COMPILE_TIME_ASSERT(sint64IsEightBytes, sizeof(PHYSFS_sint64) == 8);
336#endif
337
338#undef PHYSFS_COMPILE_TIME_ASSERT
339
340#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
341
342
366typedef struct PHYSFS_File
367{
368 void *opaque;
370
371
383#define PHYSFS_file PHYSFS_File
384
385
403typedef struct PHYSFS_ArchiveInfo
404{
405 const char *extension;
406 const char *description;
407 const char *author;
408 const char *url;
411
412
432
433
434#ifndef DOXYGEN_SHOULD_IGNORE_THIS
435#define PHYSFS_VER_MAJOR 3
436#define PHYSFS_VER_MINOR 0
437#define PHYSFS_VER_PATCH 2
438#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
439
440
441/* PhysicsFS state stuff ... */
442
459#define PHYSFS_VERSION(x) \
460{ \
461 (x)->major = PHYSFS_VER_MAJOR; \
462 (x)->minor = PHYSFS_VER_MINOR; \
463 (x)->patch = PHYSFS_VER_PATCH; \
464}
465
466
494
495
516PHYSFS_DECL int PHYSFS_init(const char *argv0);
517
518
545PHYSFS_DECL int PHYSFS_deinit(void);
546
547
582
583
601PHYSFS_DECL void PHYSFS_freeList(void *listVar);
602
603
654PHYSFS_DECL const char *PHYSFS_getLastError(void) PHYSFS_DEPRECATED;
655
656
670PHYSFS_DECL const char *PHYSFS_getDirSeparator(void);
671
672
708PHYSFS_DECL void PHYSFS_permitSymbolicLinks(int allow);
709
710
750PHYSFS_DECL char **PHYSFS_getCdRomDirs(void);
751
752
769PHYSFS_DECL const char *PHYSFS_getBaseDir(void);
770
771
792PHYSFS_DECL const char *PHYSFS_getUserDir(void) PHYSFS_DEPRECATED;
793
794
806PHYSFS_DECL const char *PHYSFS_getWriteDir(void);
807
808
828PHYSFS_DECL int PHYSFS_setWriteDir(const char *newDir);
829
830
851PHYSFS_DECL int PHYSFS_addToSearchPath(const char *newDir, int appendToPath)
852 PHYSFS_DEPRECATED;
853
878PHYSFS_DECL int PHYSFS_removeFromSearchPath(const char *oldDir)
879 PHYSFS_DEPRECATED;
880
881
908PHYSFS_DECL char **PHYSFS_getSearchPath(void);
909
910
969PHYSFS_DECL int PHYSFS_setSaneConfig(const char *organization,
970 const char *appName,
971 const char *archiveExt,
972 int includeCdRoms,
973 int archivesFirst);
974
975
976/* Directory management stuff ... */
977
999PHYSFS_DECL int PHYSFS_mkdir(const char *dirName);
1000
1001
1032PHYSFS_DECL int PHYSFS_delete(const char *filename);
1033
1034
1065PHYSFS_DECL const char *PHYSFS_getRealDir(const char *filename);
1066
1067
1119PHYSFS_DECL char **PHYSFS_enumerateFiles(const char *dir);
1120
1121
1136PHYSFS_DECL int PHYSFS_exists(const char *fname);
1137
1138
1159PHYSFS_DECL int PHYSFS_isDirectory(const char *fname) PHYSFS_DEPRECATED;
1160
1161
1182PHYSFS_DECL int PHYSFS_isSymbolicLink(const char *fname) PHYSFS_DEPRECATED;
1183
1184
1206PHYSFS_DECL PHYSFS_sint64 PHYSFS_getLastModTime(const char *filename)
1207 PHYSFS_DEPRECATED;
1208
1209
1210/* i/o stuff... */
1211
1234PHYSFS_DECL PHYSFS_File *PHYSFS_openWrite(const char *filename);
1235
1236
1260PHYSFS_DECL PHYSFS_File *PHYSFS_openAppend(const char *filename);
1261
1262
1285PHYSFS_DECL PHYSFS_File *PHYSFS_openRead(const char *filename);
1286
1287
1306PHYSFS_DECL int PHYSFS_close(PHYSFS_File *handle);
1307
1308
1334 void *buffer,
1335 PHYSFS_uint32 objSize,
1336 PHYSFS_uint32 objCount)
1337 PHYSFS_DEPRECATED;
1338
1363 const void *buffer,
1364 PHYSFS_uint32 objSize,
1365 PHYSFS_uint32 objCount)
1366 PHYSFS_DEPRECATED;
1367
1368
1369/* File position stuff... */
1370
1383PHYSFS_DECL int PHYSFS_eof(PHYSFS_File *handle);
1384
1385
1397
1398
1413PHYSFS_DECL int PHYSFS_seek(PHYSFS_File *handle, PHYSFS_uint64 pos);
1414
1415
1431
1432
1433/* Buffering stuff... */
1434
1475PHYSFS_DECL int PHYSFS_setBuffer(PHYSFS_File *handle, PHYSFS_uint64 bufsize);
1476
1477
1494PHYSFS_DECL int PHYSFS_flush(PHYSFS_File *handle);
1495
1496
1497/* Byteorder stuff... */
1498
1510
1511
1523
1535
1536
1548
1563
1564
1579
1580
1592
1593
1605
1617
1618
1630
1631
1646
1647
1662
1663
1677PHYSFS_DECL int PHYSFS_readSLE16(PHYSFS_File *file, PHYSFS_sint16 *val);
1678
1679
1694PHYSFS_DECL int PHYSFS_readULE16(PHYSFS_File *file, PHYSFS_uint16 *val);
1695
1696
1710PHYSFS_DECL int PHYSFS_readSBE16(PHYSFS_File *file, PHYSFS_sint16 *val);
1711
1712
1727PHYSFS_DECL int PHYSFS_readUBE16(PHYSFS_File *file, PHYSFS_uint16 *val);
1728
1729
1743PHYSFS_DECL int PHYSFS_readSLE32(PHYSFS_File *file, PHYSFS_sint32 *val);
1744
1745
1760PHYSFS_DECL int PHYSFS_readULE32(PHYSFS_File *file, PHYSFS_uint32 *val);
1761
1762
1776PHYSFS_DECL int PHYSFS_readSBE32(PHYSFS_File *file, PHYSFS_sint32 *val);
1777
1778
1793PHYSFS_DECL int PHYSFS_readUBE32(PHYSFS_File *file, PHYSFS_uint32 *val);
1794
1795
1812PHYSFS_DECL int PHYSFS_readSLE64(PHYSFS_File *file, PHYSFS_sint64 *val);
1813
1814
1831PHYSFS_DECL int PHYSFS_readULE64(PHYSFS_File *file, PHYSFS_uint64 *val);
1832
1833
1850PHYSFS_DECL int PHYSFS_readSBE64(PHYSFS_File *file, PHYSFS_sint64 *val);
1851
1852
1869PHYSFS_DECL int PHYSFS_readUBE64(PHYSFS_File *file, PHYSFS_uint64 *val);
1870
1871
1884PHYSFS_DECL int PHYSFS_writeSLE16(PHYSFS_File *file, PHYSFS_sint16 val);
1885
1886
1899PHYSFS_DECL int PHYSFS_writeULE16(PHYSFS_File *file, PHYSFS_uint16 val);
1900
1901
1914PHYSFS_DECL int PHYSFS_writeSBE16(PHYSFS_File *file, PHYSFS_sint16 val);
1915
1916
1929PHYSFS_DECL int PHYSFS_writeUBE16(PHYSFS_File *file, PHYSFS_uint16 val);
1930
1931
1944PHYSFS_DECL int PHYSFS_writeSLE32(PHYSFS_File *file, PHYSFS_sint32 val);
1945
1946
1959PHYSFS_DECL int PHYSFS_writeULE32(PHYSFS_File *file, PHYSFS_uint32 val);
1960
1961
1974PHYSFS_DECL int PHYSFS_writeSBE32(PHYSFS_File *file, PHYSFS_sint32 val);
1975
1976
1989PHYSFS_DECL int PHYSFS_writeUBE32(PHYSFS_File *file, PHYSFS_uint32 val);
1990
1991
2007PHYSFS_DECL int PHYSFS_writeSLE64(PHYSFS_File *file, PHYSFS_sint64 val);
2008
2009
2025PHYSFS_DECL int PHYSFS_writeULE64(PHYSFS_File *file, PHYSFS_uint64 val);
2026
2027
2043PHYSFS_DECL int PHYSFS_writeSBE64(PHYSFS_File *file, PHYSFS_sint64 val);
2044
2045
2061PHYSFS_DECL int PHYSFS_writeUBE64(PHYSFS_File *file, PHYSFS_uint64 val);
2062
2063
2064/* Everything above this line is part of the PhysicsFS 1.0 API. */
2065
2080PHYSFS_DECL int PHYSFS_isInit(void);
2081
2082
2095PHYSFS_DECL int PHYSFS_symbolicLinksPermitted(void);
2096
2097
2118typedef struct PHYSFS_Allocator
2119{
2120 int (*Init)(void);
2121 void (*Deinit)(void);
2122 void *(*Malloc)(PHYSFS_uint64);
2123 void *(*Realloc)(void *, PHYSFS_uint64);
2124 void (*Free)(void *);
2126
2127
2155PHYSFS_DECL int PHYSFS_setAllocator(const PHYSFS_Allocator *allocator);
2156
2157
2203PHYSFS_DECL int PHYSFS_mount(const char *newDir,
2204 const char *mountPoint,
2205 int appendToPath);
2206
2229PHYSFS_DECL const char *PHYSFS_getMountPoint(const char *dir);
2230
2231
2256typedef void (*PHYSFS_StringCallback)(void *data, const char *str);
2257
2258
2294typedef void (*PHYSFS_EnumFilesCallback)(void *data, const char *origdir,
2295 const char *fname);
2296
2297
2330
2331
2366
2367
2385PHYSFS_DECL void PHYSFS_enumerateFilesCallback(const char *dir,
2387 void *d) PHYSFS_DEPRECATED;
2388
2412PHYSFS_DECL void PHYSFS_utf8FromUcs4(const PHYSFS_uint32 *src, char *dst,
2413 PHYSFS_uint64 len);
2414
2438PHYSFS_DECL void PHYSFS_utf8ToUcs4(const char *src, PHYSFS_uint32 *dst,
2439 PHYSFS_uint64 len);
2440
2472PHYSFS_DECL void PHYSFS_utf8FromUcs2(const PHYSFS_uint16 *src, char *dst,
2473 PHYSFS_uint64 len);
2474
2507PHYSFS_DECL void PHYSFS_utf8ToUcs2(const char *src, PHYSFS_uint16 *dst,
2508 PHYSFS_uint64 len);
2509
2533PHYSFS_DECL void PHYSFS_utf8FromLatin1(const char *src, char *dst,
2534 PHYSFS_uint64 len);
2535
2536/* Everything above this line is part of the PhysicsFS 2.0 API. */
2537
2565PHYSFS_DECL int PHYSFS_caseFold(const PHYSFS_uint32 from, PHYSFS_uint32 *to);
2566
2567
2593PHYSFS_DECL int PHYSFS_utf8stricmp(const char *str1, const char *str2);
2594
2616PHYSFS_DECL int PHYSFS_utf16stricmp(const PHYSFS_uint16 *str1,
2617 const PHYSFS_uint16 *str2);
2618
2640PHYSFS_DECL int PHYSFS_ucs4stricmp(const PHYSFS_uint32 *str1,
2641 const PHYSFS_uint32 *str2);
2642
2643
2660
2689 const char *origdir, const char *fname);
2690
2750PHYSFS_DECL int PHYSFS_enumerate(const char *dir, PHYSFS_EnumerateCallback c,
2751 void *d);
2752
2753
2780PHYSFS_DECL int PHYSFS_unmount(const char *oldDir);
2781
2782
2816PHYSFS_DECL const PHYSFS_Allocator *PHYSFS_getAllocator(void);
2817
2818
2834
2861
2881PHYSFS_DECL int PHYSFS_stat(const char *fname, PHYSFS_Stat *stat);
2882
2883
2912PHYSFS_DECL void PHYSFS_utf8FromUtf16(const PHYSFS_uint16 *src, char *dst,
2913 PHYSFS_uint64 len);
2914
2948PHYSFS_DECL void PHYSFS_utf8ToUtf16(const char *src, PHYSFS_uint16 *dst,
2949 PHYSFS_uint64 len);
2950
2951
2968PHYSFS_DECL PHYSFS_sint64 PHYSFS_readBytes(PHYSFS_File *handle, void *buffer,
2969 PHYSFS_uint64 len);
2970
2995 const void *buffer,
2996 PHYSFS_uint64 len);
2997
2998
3040typedef struct PHYSFS_Io
3041{
3051
3060 void *opaque;
3061
3081 PHYSFS_sint64 (*read)(struct PHYSFS_Io *io, void *buf, PHYSFS_uint64 len);
3082
3106 PHYSFS_sint64 (*write)(struct PHYSFS_Io *io, const void *buffer,
3107 PHYSFS_uint64 len);
3108
3120 int (*seek)(struct PHYSFS_Io *io, PHYSFS_uint64 offset);
3121
3133
3145
3162 struct PHYSFS_Io *(*duplicate)(struct PHYSFS_Io *io);
3163
3177 int (*flush)(struct PHYSFS_Io *io);
3178
3196 void (*destroy)(struct PHYSFS_Io *io);
3197} PHYSFS_Io;
3198
3199
3240PHYSFS_DECL int PHYSFS_mountIo(PHYSFS_Io *io, const char *newDir,
3241 const char *mountPoint, int appendToPath);
3242
3243
3287PHYSFS_DECL int PHYSFS_mountMemory(const void *buf, PHYSFS_uint64 len,
3288 void (*del)(void *), const char *newDir,
3289 const char *mountPoint, int appendToPath);
3290
3291
3345PHYSFS_DECL int PHYSFS_mountHandle(PHYSFS_File *file, const char *newDir,
3346 const char *mountPoint, int appendToPath);
3347
3348
3400
3401
3431
3432
3461PHYSFS_DECL const char *PHYSFS_getErrorByCode(PHYSFS_ErrorCode code);
3462
3491
3492
3558PHYSFS_DECL const char *PHYSFS_getPrefDir(const char *org, const char *app);
3559
3560
3617typedef struct PHYSFS_Archiver
3618{
3628
3636
3662 void *(*openArchive)(PHYSFS_Io *io, const char *name,
3663 int forWrite, int *claimed);
3664
3691 const char *dirname, PHYSFS_EnumerateCallback cb,
3692 const char *origdir, void *callbackdata);
3693
3703 PHYSFS_Io *(*openRead)(void *opaque, const char *fnm);
3704
3717 PHYSFS_Io *(*openWrite)(void *opaque, const char *filename);
3718
3730 PHYSFS_Io *(*openAppend)(void *opaque, const char *filename);
3731
3744 int (*remove)(void *opaque, const char *filename);
3745
3757 int (*mkdir)(void *opaque, const char *filename);
3758
3769 int (*stat)(void *opaque, const char *fn, PHYSFS_Stat *stat);
3770
3779 void (*closeArchive)(void *opaque);
3781
3814PHYSFS_DECL int PHYSFS_registerArchiver(const PHYSFS_Archiver *archiver);
3815
3842PHYSFS_DECL int PHYSFS_deregisterArchiver(const char *ext);
3843
3844
3845/* Everything above this line is part of the PhysicsFS 2.1 API. */
3846
3847#ifdef __cplusplus
3848}
3849#endif
3850
3851#endif /* !defined _INCLUDE_PHYSFS_H_ */
3852
3853/* end of physfs.h ... */
3854
const char * PHYSFS_getBaseDir(void)
Get the path where the application resides.
int PHYSFS_writeUBE64(PHYSFS_File *file, PHYSFS_uint64 val)
Convert and write an unsigned 64-bit bigendian value.
int PHYSFS_readSBE64(PHYSFS_File *file, PHYSFS_sint64 *val)
Read and convert a signed 64-bit bigendian value.
int PHYSFS_mountHandle(PHYSFS_File *file, const char *newDir, const char *mountPoint, int appendToPath)
Add an archive, contained in a PHYSFS_File handle, to the search path.
PHYSFS_uint16 PHYSFS_swapUBE16(PHYSFS_uint16 val)
Swap bigendian unsigned 16 to platform's native byte order.
int PHYSFS_writeSBE32(PHYSFS_File *file, PHYSFS_sint32 val)
Convert and write a signed 32-bit bigendian value.
int PHYSFS_readUBE16(PHYSFS_File *file, PHYSFS_uint16 *val)
Read and convert an unsigned 16-bit bigendian value.
int PHYSFS_addToSearchPath(const char *newDir, int appendToPath)
Add an archive or directory to the search path.
int PHYSFS_readSLE16(PHYSFS_File *file, PHYSFS_sint16 *val)
Read and convert a signed 16-bit littleendian value.
int PHYSFS_mountMemory(const void *buf, PHYSFS_uint64 len, void(*del)(void *), const char *newDir, const char *mountPoint, int appendToPath)
Add an archive, contained in a memory buffer, to the search path.
PHYSFS_sint64 PHYSFS_tell(PHYSFS_File *handle)
Determine current position within a PhysicsFS filehandle.
char ** PHYSFS_enumerateFiles(const char *dir)
Get a file listing of a search path's directory.
int PHYSFS_utf16stricmp(const PHYSFS_uint16 *str1, const PHYSFS_uint16 *str2)
Case-insensitive compare of two UTF-16 strings.
PHYSFS_sint64 PHYSFS_writeBytes(PHYSFS_File *handle, const void *buffer, PHYSFS_uint64 len)
Write data to a PhysicsFS filehandle.
int PHYSFS_removeFromSearchPath(const char *oldDir)
Remove a directory or archive from the search path.
signed char PHYSFS_sint8
A signed, 8-bit integer type.
Definition physfs.h:268
int PHYSFS_delete(const char *filename)
Delete a file or directory.
void PHYSFS_utf8FromLatin1(const char *src, char *dst, PHYSFS_uint64 len)
Convert a UTF-8 string to a Latin1 string.
int PHYSFS_readSLE32(PHYSFS_File *file, PHYSFS_sint32 *val)
Read and convert a signed 32-bit littleendian value.
int PHYSFS_enumerate(const char *dir, PHYSFS_EnumerateCallback c, void *d)
Get a file listing of a search path's directory, using an application-defined callback,...
int PHYSFS_readUBE32(PHYSFS_File *file, PHYSFS_uint32 *val)
Read and convert an unsigned 32-bit bigendian value.
int PHYSFS_setWriteDir(const char *newDir)
Tell PhysicsFS where it may write files.
int PHYSFS_readUBE64(PHYSFS_File *file, PHYSFS_uint64 *val)
Read and convert an unsigned 64-bit bigendian value.
int PHYSFS_caseFold(const PHYSFS_uint32 from, PHYSFS_uint32 *to)
"Fold" a Unicode codepoint to a lowercase equivalent.
unsigned long long PHYSFS_uint64
An unsigned, 64-bit integer type.
Definition physfs.h:316
int PHYSFS_writeSLE32(PHYSFS_File *file, PHYSFS_sint32 val)
Convert and write a signed 32-bit littleendian value.
PHYSFS_sint64 PHYSFS_fileLength(PHYSFS_File *handle)
Get total length of a file in bytes.
int PHYSFS_flush(PHYSFS_File *handle)
Flush a buffered PhysicsFS file handle.
void PHYSFS_utf8ToUcs4(const char *src, PHYSFS_uint32 *dst, PHYSFS_uint64 len)
Convert a UTF-8 string to a UCS-4 string.
PHYSFS_uint32 PHYSFS_swapUBE32(PHYSFS_uint32 val)
Swap bigendian unsigned 32 to platform's native byte order.
PHYSFS_uint64 PHYSFS_swapULE64(PHYSFS_uint64 val)
Swap littleendian unsigned 64 to platform's native byte order.
const PHYSFS_ArchiveInfo ** PHYSFS_supportedArchiveTypes(void)
Get a list of supported archive types.
PHYSFS_ErrorCode
Values that represent specific causes of failure.
Definition physfs.h:3368
@ PHYSFS_ERR_READ_ONLY
Definition physfs.h:3386
@ PHYSFS_ERR_BAD_PASSWORD
Definition physfs.h:3397
@ PHYSFS_ERR_IO
Definition physfs.h:3389
@ PHYSFS_ERR_NOT_MOUNTED
Definition physfs.h:3379
@ PHYSFS_ERR_DIR_NOT_EMPTY
Definition physfs.h:3394
@ PHYSFS_ERR_OPEN_FOR_READING
Definition physfs.h:3383
@ PHYSFS_ERR_FILES_STILL_OPEN
Definition physfs.h:3377
@ PHYSFS_ERR_OK
Definition physfs.h:3369
@ PHYSFS_ERR_OUT_OF_MEMORY
Definition physfs.h:3371
@ PHYSFS_ERR_NOT_FOUND
Definition physfs.h:3380
@ PHYSFS_ERR_SYMLINK_FORBIDDEN
Definition physfs.h:3381
@ PHYSFS_ERR_OPEN_FOR_WRITING
Definition physfs.h:3384
@ PHYSFS_ERR_APP_CALLBACK
Definition physfs.h:3398
@ PHYSFS_ERR_PAST_EOF
Definition physfs.h:3376
@ PHYSFS_ERR_UNSUPPORTED
Definition physfs.h:3375
@ PHYSFS_ERR_NO_WRITE_DIR
Definition physfs.h:3382
@ PHYSFS_ERR_BUSY
Definition physfs.h:3393
@ PHYSFS_ERR_BAD_FILENAME
Definition physfs.h:3392
@ PHYSFS_ERR_OS_ERROR
Definition physfs.h:3395
@ PHYSFS_ERR_INVALID_ARGUMENT
Definition physfs.h:3378
@ PHYSFS_ERR_NO_SPACE
Definition physfs.h:3391
@ PHYSFS_ERR_NOT_A_FILE
Definition physfs.h:3385
@ PHYSFS_ERR_SYMLINK_LOOP
Definition physfs.h:3388
@ PHYSFS_ERR_PERMISSION
Definition physfs.h:3390
@ PHYSFS_ERR_ARGV0_IS_NULL
Definition physfs.h:3374
@ PHYSFS_ERR_CORRUPT
Definition physfs.h:3387
@ PHYSFS_ERR_IS_INITIALIZED
Definition physfs.h:3373
@ PHYSFS_ERR_DUPLICATE
Definition physfs.h:3396
@ PHYSFS_ERR_NOT_INITIALIZED
Definition physfs.h:3372
@ PHYSFS_ERR_OTHER_ERROR
Definition physfs.h:3370
int PHYSFS_symbolicLinksPermitted(void)
Determine if the symbolic links are permitted.
const char * PHYSFS_getRealDir(const char *filename)
Figure out where in the search path a file resides.
const char * PHYSFS_getErrorByCode(PHYSFS_ErrorCode code)
Get human-readable description string for a given error code.
int PHYSFS_isDirectory(const char *fname)
Determine if a file in the search path is really a directory.
PHYSFS_sint64 PHYSFS_getLastModTime(const char *filename)
Get the last modification time of a file.
unsigned char PHYSFS_uint8
An unsigned, 8-bit integer type.
Definition physfs.h:262
signed int PHYSFS_sint32
A signed, 32-bit integer type.
Definition physfs.h:292
PHYSFS_File * PHYSFS_openRead(const char *filename)
Open a file for reading.
PHYSFS_sint16 PHYSFS_swapSBE16(PHYSFS_sint16 val)
Swap bigendian signed 16 to platform's native byte order.
int PHYSFS_isInit(void)
Determine if the PhysicsFS library is initialized.
int PHYSFS_init(const char *argv0)
Initialize the PhysicsFS library.
int PHYSFS_writeSBE16(PHYSFS_File *file, PHYSFS_sint16 val)
Convert and write a signed 16-bit bigendian value.
PHYSFS_sint64 PHYSFS_readBytes(PHYSFS_File *handle, void *buffer, PHYSFS_uint64 len)
Read bytes from a PhysicsFS filehandle.
const char * PHYSFS_getWriteDir(void)
Get path where PhysicsFS will allow file writing.
int PHYSFS_writeUBE16(PHYSFS_File *file, PHYSFS_uint16 val)
Convert and write an unsigned 16-bit bigendian value.
signed short PHYSFS_sint16
A signed, 16-bit integer type.
Definition physfs.h:280
int PHYSFS_close(PHYSFS_File *handle)
Close a PhysicsFS filehandle.
PHYSFS_uint64 PHYSFS_swapUBE64(PHYSFS_uint64 val)
Swap bigendian unsigned 64 to platform's native byte order.
int PHYSFS_eof(PHYSFS_File *handle)
Check for end-of-file state on a PhysicsFS filehandle.
PHYSFS_uint32 PHYSFS_swapULE32(PHYSFS_uint32 val)
Swap littleendian unsigned 32 to platform's native byte order.
PHYSFS_sint16 PHYSFS_swapSLE16(PHYSFS_sint16 val)
Swap littleendian signed 16 to platform's native byte order.
void PHYSFS_utf8ToUtf16(const char *src, PHYSFS_uint16 *dst, PHYSFS_uint64 len)
Convert a UTF-8 string to a UTF-16 string.
int PHYSFS_mountIo(PHYSFS_Io *io, const char *newDir, const char *mountPoint, int appendToPath)
Add an archive, built on a PHYSFS_Io, to the search path.
int PHYSFS_stat(const char *fname, PHYSFS_Stat *stat)
Get various information about a directory or a file.
void(* PHYSFS_EnumFilesCallback)(void *data, const char *origdir, const char *fname)
Function signature for callbacks that enumerate files.
Definition physfs.h:2294
PHYSFS_sint32 PHYSFS_swapSBE32(PHYSFS_sint32 val)
Swap bigendian signed 32 to platform's native byte order.
void PHYSFS_getLinkedVersion(PHYSFS_Version *ver)
Get the version of PhysicsFS that is linked against your program.
int PHYSFS_mount(const char *newDir, const char *mountPoint, int appendToPath)
Add an archive or directory to the search path.
PHYSFS_sint64 PHYSFS_read(PHYSFS_File *handle, void *buffer, PHYSFS_uint32 objSize, PHYSFS_uint32 objCount)
Read data from a PhysicsFS filehandle.
int PHYSFS_writeULE32(PHYSFS_File *file, PHYSFS_uint32 val)
Convert and write an unsigned 32-bit littleendian value.
PHYSFS_sint64 PHYSFS_swapSBE64(PHYSFS_sint64 val)
Swap bigendian signed 64 to platform's native byte order.
int PHYSFS_writeUBE32(PHYSFS_File *file, PHYSFS_uint32 val)
Convert and write an unsigned 32-bit bigendian value.
PHYSFS_sint32 PHYSFS_swapSLE32(PHYSFS_sint32 val)
Swap littleendian signed 32 to platform's native byte order.
void PHYSFS_enumerateFilesCallback(const char *dir, PHYSFS_EnumFilesCallback c, void *d)
Get a file listing of a search path's directory, using an application-defined callback.
const char * PHYSFS_getUserDir(void)
Get the path where user's home directory resides.
const char * PHYSFS_getLastError(void)
Get human-readable error information.
PHYSFS_EnumerateCallbackResult
Definition physfs.h:2655
@ PHYSFS_ENUM_ERROR
Definition physfs.h:2656
@ PHYSFS_ENUM_STOP
Definition physfs.h:2657
@ PHYSFS_ENUM_OK
Definition physfs.h:2658
int PHYSFS_deinit(void)
Deinitialize the PhysicsFS library.
unsigned short PHYSFS_uint16
An unsigned, 16-bit integer type.
Definition physfs.h:274
int PHYSFS_utf8stricmp(const char *str1, const char *str2)
Case-insensitive compare of two UTF-8 strings.
const PHYSFS_Allocator * PHYSFS_getAllocator(void)
Discover the current allocator.
int PHYSFS_unmount(const char *oldDir)
Remove a directory or archive from the search path.
int PHYSFS_readSBE32(PHYSFS_File *file, PHYSFS_sint32 *val)
Read and convert a signed 32-bit bigendian value.
signed long long PHYSFS_sint64
A signed, 64-bit integer type.
Definition physfs.h:317
void PHYSFS_permitSymbolicLinks(int allow)
Enable or disable following of symbolic links.
int PHYSFS_writeULE64(PHYSFS_File *file, PHYSFS_uint64 val)
Convert and write an unsigned 64-bit littleendian value.
int PHYSFS_writeSLE64(PHYSFS_File *file, PHYSFS_sint64 val)
Convert and write a signed 64-bit littleendian value.
int PHYSFS_writeSBE64(PHYSFS_File *file, PHYSFS_sint64 val)
Convert and write a signed 64-bit bigending value.
void PHYSFS_utf8FromUtf16(const PHYSFS_uint16 *src, char *dst, PHYSFS_uint64 len)
Convert a UTF-16 string to a UTF-8 string.
int PHYSFS_deregisterArchiver(const char *ext)
Remove an archiver from the system.
PHYSFS_File * PHYSFS_openWrite(const char *filename)
Open a file for writing.
void PHYSFS_getSearchPathCallback(PHYSFS_StringCallback c, void *d)
Enumerate the search path, using an application-defined callback.
PHYSFS_File * PHYSFS_openAppend(const char *filename)
Open a file for appending.
void PHYSFS_utf8FromUcs4(const PHYSFS_uint32 *src, char *dst, PHYSFS_uint64 len)
Convert a UCS-4 string to a UTF-8 string.
void PHYSFS_utf8FromUcs2(const PHYSFS_uint16 *src, char *dst, PHYSFS_uint64 len)
Convert a UCS-2 string to a UTF-8 string.
char ** PHYSFS_getSearchPath(void)
Get the current search path.
PHYSFS_FileType
Type of a File.
Definition physfs.h:2828
@ PHYSFS_FILETYPE_DIRECTORY
Definition physfs.h:2830
@ PHYSFS_FILETYPE_OTHER
Definition physfs.h:2832
@ PHYSFS_FILETYPE_SYMLINK
Definition physfs.h:2831
@ PHYSFS_FILETYPE_REGULAR
Definition physfs.h:2829
PHYSFS_uint16 PHYSFS_swapULE16(PHYSFS_uint16 val)
Swap littleendian unsigned 16 to platform's native byte order.
int PHYSFS_exists(const char *fname)
Determine if a file exists in the search path.
const char * PHYSFS_getPrefDir(const char *org, const char *app)
Get the user-and-app-specific path where files can be written.
void PHYSFS_getCdRomDirsCallback(PHYSFS_StringCallback c, void *d)
Enumerate CD-ROM directories, using an application-defined callback.
int PHYSFS_registerArchiver(const PHYSFS_Archiver *archiver)
Add a new archiver to the system.
unsigned int PHYSFS_uint32
An unsigned, 32-bit integer type.
Definition physfs.h:286
const char * PHYSFS_getDirSeparator(void)
Get platform-dependent dir separator string.
int PHYSFS_ucs4stricmp(const PHYSFS_uint32 *str1, const PHYSFS_uint32 *str2)
Case-insensitive compare of two UCS-4 strings.
int PHYSFS_readSBE16(PHYSFS_File *file, PHYSFS_sint16 *val)
Read and convert a signed 16-bit bigendian value.
int PHYSFS_writeULE16(PHYSFS_File *file, PHYSFS_uint16 val)
Convert and write an unsigned 16-bit littleendian value.
void PHYSFS_setErrorCode(PHYSFS_ErrorCode code)
Set the current thread's error code.
int PHYSFS_readULE32(PHYSFS_File *file, PHYSFS_uint32 *val)
Read and convert an unsigned 32-bit littleendian value.
void PHYSFS_utf8ToUcs2(const char *src, PHYSFS_uint16 *dst, PHYSFS_uint64 len)
Convert a UTF-8 string to a UCS-2 string.
int PHYSFS_mkdir(const char *dirName)
Create a directory.
int PHYSFS_isSymbolicLink(const char *fname)
Determine if a file in the search path is really a symbolic link.
int PHYSFS_seek(PHYSFS_File *handle, PHYSFS_uint64 pos)
Seek to a new position within a PhysicsFS filehandle.
int PHYSFS_setAllocator(const PHYSFS_Allocator *allocator)
Hook your own allocation routines into PhysicsFS.
int PHYSFS_readULE64(PHYSFS_File *file, PHYSFS_uint64 *val)
Read and convert an unsigned 64-bit littleendian value.
const char * PHYSFS_getMountPoint(const char *dir)
Determine a mounted archive's mountpoint.
int PHYSFS_readSLE64(PHYSFS_File *file, PHYSFS_sint64 *val)
Read and convert a signed 64-bit littleendian value.
PHYSFS_ErrorCode PHYSFS_getLastErrorCode(void)
Get machine-readable error information.
int PHYSFS_writeSLE16(PHYSFS_File *file, PHYSFS_sint16 val)
Convert and write a signed 16-bit littleendian value.
void(* PHYSFS_StringCallback)(void *data, const char *str)
Function signature for callbacks that report strings.
Definition physfs.h:2256
int PHYSFS_setBuffer(PHYSFS_File *handle, PHYSFS_uint64 bufsize)
Set up buffering for a PhysicsFS file handle.
PHYSFS_sint64 PHYSFS_swapSLE64(PHYSFS_sint64 val)
Swap littleendian signed 64 to platform's native byte order.
PHYSFS_EnumerateCallbackResult(* PHYSFS_EnumerateCallback)(void *data, const char *origdir, const char *fname)
Possible return values from PHYSFS_EnumerateCallback.
Definition physfs.h:2688
int PHYSFS_readULE16(PHYSFS_File *file, PHYSFS_uint16 *val)
Read and convert an unsigned 16-bit littleendian value.
PHYSFS_sint64 PHYSFS_write(PHYSFS_File *handle, const void *buffer, PHYSFS_uint32 objSize, PHYSFS_uint32 objCount)
Write data to a PhysicsFS filehandle.
void PHYSFS_freeList(void *listVar)
Deallocate resources of lists returned by PhysicsFS.
char ** PHYSFS_getCdRomDirs(void)
Get an array of paths to available CD-ROM drives.
int PHYSFS_setSaneConfig(const char *organization, const char *appName, const char *archiveExt, int includeCdRoms, int archivesFirst)
Set up sane, default paths.
PhysicsFS allocation function pointers.
Definition physfs.h:2119
void(* Deinit)(void)
Definition physfs.h:2121
int(* Init)(void)
Definition physfs.h:2120
void(* Free)(void *)
Definition physfs.h:2124
Information on various PhysicsFS-supported archives.
Definition physfs.h:404
const char * url
Definition physfs.h:408
const char * author
Definition physfs.h:407
const char * description
Definition physfs.h:406
int supportsSymlinks
Definition physfs.h:409
const char * extension
Definition physfs.h:405
Abstract interface to provide support for user-defined archives.
Definition physfs.h:3618
void(* closeArchive)(void *opaque)
Destruct a previously-opened archive.
Definition physfs.h:3779
int(* stat)(void *opaque, const char *fn, PHYSFS_Stat *stat)
Obtain basic file metadata.
Definition physfs.h:3769
PHYSFS_EnumerateCallbackResult(* enumerate)(void *opaque, const char *dirname, PHYSFS_EnumerateCallback cb, const char *origdir, void *callbackdata)
List all files in (dirname).
Definition physfs.h:3690
PHYSFS_uint32 version
Binary compatibility information.
Definition physfs.h:3627
int(* mkdir)(void *opaque, const char *filename)
Create a directory in the archive.
Definition physfs.h:3757
PHYSFS_ArchiveInfo info
Basic info about this archiver.
Definition physfs.h:3635
int(* remove)(void *opaque, const char *filename)
Delete a file or directory in the archive.
Definition physfs.h:3744
A PhysicsFS file handle.
Definition physfs.h:367
void * opaque
Definition physfs.h:368
An abstract i/o interface.
Definition physfs.h:3041
PHYSFS_sint64(* length)(struct PHYSFS_Io *io)
Determine size of the i/o instance's dataset.
Definition physfs.h:3144
PHYSFS_sint64(* write)(struct PHYSFS_Io *io, const void *buffer, PHYSFS_uint64 len)
Write more data.
Definition physfs.h:3106
int(* seek)(struct PHYSFS_Io *io, PHYSFS_uint64 offset)
Move i/o position to a given byte offset from start.
Definition physfs.h:3120
PHYSFS_sint64(* tell)(struct PHYSFS_Io *io)
Report current i/o position.
Definition physfs.h:3132
void(* destroy)(struct PHYSFS_Io *io)
Cleanup and deallocate i/o instance.
Definition physfs.h:3196
PHYSFS_sint64(* read)(struct PHYSFS_Io *io, void *buf, PHYSFS_uint64 len)
Read more data.
Definition physfs.h:3081
void * opaque
Instance data for this struct.
Definition physfs.h:3060
int(* flush)(struct PHYSFS_Io *io)
Flush resources to media, or wherever.
Definition physfs.h:3177
PHYSFS_uint32 version
Binary compatibility information.
Definition physfs.h:3050
Meta data for a file or directory.
Definition physfs.h:2853
PHYSFS_sint64 accesstime
Definition physfs.h:2857
PHYSFS_sint64 filesize
Definition physfs.h:2854
int readonly
Definition physfs.h:2859
PHYSFS_sint64 modtime
Definition physfs.h:2855
PHYSFS_sint64 createtime
Definition physfs.h:2856
PHYSFS_FileType filetype
Definition physfs.h:2858
Information the version of PhysicsFS in use.
Definition physfs.h:427
PHYSFS_uint8 patch
Definition physfs.h:430
PHYSFS_uint8 minor
Definition physfs.h:429
PHYSFS_uint8 major
Definition physfs.h:428