physfs  3.0.1
physfs.h
Go to the documentation of this file.
1 
219 #ifndef _INCLUDE_PHYSFS_H_
220 #define _INCLUDE_PHYSFS_H_
221 
222 #ifdef __cplusplus
223 extern "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) && (!__EMX__) && (!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 
262 typedef unsigned char PHYSFS_uint8;
263 
268 typedef signed char PHYSFS_sint8;
269 
274 typedef unsigned short PHYSFS_uint16;
275 
280 typedef signed short PHYSFS_sint16;
281 
286 typedef unsigned int PHYSFS_uint32;
287 
292 typedef signed int PHYSFS_sint32;
293 
309 #if (defined PHYSFS_NO_64BIT_SUPPORT) /* oh well. */
310 typedef PHYSFS_uint32 PHYSFS_uint64;
311 typedef PHYSFS_sint32 PHYSFS_sint64;
312 #elif (defined _MSC_VER)
313 typedef signed __int64 PHYSFS_sint64;
314 typedef unsigned __int64 PHYSFS_uint64;
315 #else
316 typedef unsigned long long PHYSFS_uint64;
317 typedef 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 
326 PHYSFS_COMPILE_TIME_ASSERT(uint8IsOneByte, sizeof(PHYSFS_uint8) == 1);
327 PHYSFS_COMPILE_TIME_ASSERT(sint8IsOneByte, sizeof(PHYSFS_sint8) == 1);
328 PHYSFS_COMPILE_TIME_ASSERT(uint16IsTwoBytes, sizeof(PHYSFS_uint16) == 2);
329 PHYSFS_COMPILE_TIME_ASSERT(sint16IsTwoBytes, sizeof(PHYSFS_sint16) == 2);
330 PHYSFS_COMPILE_TIME_ASSERT(uint32IsFourBytes, sizeof(PHYSFS_uint32) == 4);
331 PHYSFS_COMPILE_TIME_ASSERT(sint32IsFourBytes, sizeof(PHYSFS_sint32) == 4);
332 
333 #ifndef PHYSFS_NO_64BIT_SUPPORT
334 PHYSFS_COMPILE_TIME_ASSERT(uint64IsEightBytes, sizeof(PHYSFS_uint64) == 8);
335 PHYSFS_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 
366 typedef struct PHYSFS_File
367 {
368  void *opaque;
369 } PHYSFS_File;
370 
371 
383 #define PHYSFS_file PHYSFS_File
384 
385 
403 typedef struct PHYSFS_ArchiveInfo
404 {
405  const char *extension;
406  const char *description;
407  const char *author;
408  const char *url;
411 
412 
426 typedef struct PHYSFS_Version
427 {
428  PHYSFS_uint8 major;
429  PHYSFS_uint8 minor;
430  PHYSFS_uint8 patch;
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 1
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 
493 PHYSFS_DECL void PHYSFS_getLinkedVersion(PHYSFS_Version *ver);
494 
495 
516 PHYSFS_DECL int PHYSFS_init(const char *argv0);
517 
518 
545 PHYSFS_DECL int PHYSFS_deinit(void);
546 
547 
581 PHYSFS_DECL const PHYSFS_ArchiveInfo **PHYSFS_supportedArchiveTypes(void);
582 
583 
601 PHYSFS_DECL void PHYSFS_freeList(void *listVar);
602 
603 
654 PHYSFS_DECL const char *PHYSFS_getLastError(void) PHYSFS_DEPRECATED;
655 
656 
670 PHYSFS_DECL const char *PHYSFS_getDirSeparator(void);
671 
672 
708 PHYSFS_DECL void PHYSFS_permitSymbolicLinks(int allow);
709 
710 
750 PHYSFS_DECL char **PHYSFS_getCdRomDirs(void);
751 
752 
769 PHYSFS_DECL const char *PHYSFS_getBaseDir(void);
770 
771 
792 PHYSFS_DECL const char *PHYSFS_getUserDir(void) PHYSFS_DEPRECATED;
793 
794 
806 PHYSFS_DECL const char *PHYSFS_getWriteDir(void);
807 
808 
828 PHYSFS_DECL int PHYSFS_setWriteDir(const char *newDir);
829 
830 
851 PHYSFS_DECL int PHYSFS_addToSearchPath(const char *newDir, int appendToPath)
852  PHYSFS_DEPRECATED;
853 
878 PHYSFS_DECL int PHYSFS_removeFromSearchPath(const char *oldDir)
879  PHYSFS_DEPRECATED;
880 
881 
908 PHYSFS_DECL char **PHYSFS_getSearchPath(void);
909 
910 
969 PHYSFS_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 
999 PHYSFS_DECL int PHYSFS_mkdir(const char *dirName);
1000 
1001 
1032 PHYSFS_DECL int PHYSFS_delete(const char *filename);
1033 
1034 
1065 PHYSFS_DECL const char *PHYSFS_getRealDir(const char *filename);
1066 
1067 
1119 PHYSFS_DECL char **PHYSFS_enumerateFiles(const char *dir);
1120 
1121 
1136 PHYSFS_DECL int PHYSFS_exists(const char *fname);
1137 
1138 
1159 PHYSFS_DECL int PHYSFS_isDirectory(const char *fname) PHYSFS_DEPRECATED;
1160 
1161 
1182 PHYSFS_DECL int PHYSFS_isSymbolicLink(const char *fname) PHYSFS_DEPRECATED;
1183 
1184 
1206 PHYSFS_DECL PHYSFS_sint64 PHYSFS_getLastModTime(const char *filename)
1207  PHYSFS_DEPRECATED;
1208 
1209 
1210 /* i/o stuff... */
1211 
1234 PHYSFS_DECL PHYSFS_File *PHYSFS_openWrite(const char *filename);
1235 
1236 
1260 PHYSFS_DECL PHYSFS_File *PHYSFS_openAppend(const char *filename);
1261 
1262 
1285 PHYSFS_DECL PHYSFS_File *PHYSFS_openRead(const char *filename);
1286 
1287 
1306 PHYSFS_DECL int PHYSFS_close(PHYSFS_File *handle);
1307 
1308 
1333 PHYSFS_DECL PHYSFS_sint64 PHYSFS_read(PHYSFS_File *handle,
1334  void *buffer,
1335  PHYSFS_uint32 objSize,
1336  PHYSFS_uint32 objCount)
1337  PHYSFS_DEPRECATED;
1338 
1362 PHYSFS_DECL PHYSFS_sint64 PHYSFS_write(PHYSFS_File *handle,
1363  const void *buffer,
1364  PHYSFS_uint32 objSize,
1365  PHYSFS_uint32 objCount)
1366  PHYSFS_DEPRECATED;
1367 
1368 
1369 /* File position stuff... */
1370 
1383 PHYSFS_DECL int PHYSFS_eof(PHYSFS_File *handle);
1384 
1385 
1396 PHYSFS_DECL PHYSFS_sint64 PHYSFS_tell(PHYSFS_File *handle);
1397 
1398 
1413 PHYSFS_DECL int PHYSFS_seek(PHYSFS_File *handle, PHYSFS_uint64 pos);
1414 
1415 
1430 PHYSFS_DECL PHYSFS_sint64 PHYSFS_fileLength(PHYSFS_File *handle);
1431 
1432 
1433 /* Buffering stuff... */
1434 
1475 PHYSFS_DECL int PHYSFS_setBuffer(PHYSFS_File *handle, PHYSFS_uint64 bufsize);
1476 
1477 
1494 PHYSFS_DECL int PHYSFS_flush(PHYSFS_File *handle);
1495 
1496 
1497 /* Byteorder stuff... */
1498 
1509 PHYSFS_DECL PHYSFS_sint16 PHYSFS_swapSLE16(PHYSFS_sint16 val);
1510 
1511 
1522 PHYSFS_DECL PHYSFS_uint16 PHYSFS_swapULE16(PHYSFS_uint16 val);
1523 
1534 PHYSFS_DECL PHYSFS_sint32 PHYSFS_swapSLE32(PHYSFS_sint32 val);
1535 
1536 
1547 PHYSFS_DECL PHYSFS_uint32 PHYSFS_swapULE32(PHYSFS_uint32 val);
1548 
1562 PHYSFS_DECL PHYSFS_sint64 PHYSFS_swapSLE64(PHYSFS_sint64 val);
1563 
1564 
1578 PHYSFS_DECL PHYSFS_uint64 PHYSFS_swapULE64(PHYSFS_uint64 val);
1579 
1580 
1591 PHYSFS_DECL PHYSFS_sint16 PHYSFS_swapSBE16(PHYSFS_sint16 val);
1592 
1593 
1604 PHYSFS_DECL PHYSFS_uint16 PHYSFS_swapUBE16(PHYSFS_uint16 val);
1605 
1616 PHYSFS_DECL PHYSFS_sint32 PHYSFS_swapSBE32(PHYSFS_sint32 val);
1617 
1618 
1629 PHYSFS_DECL PHYSFS_uint32 PHYSFS_swapUBE32(PHYSFS_uint32 val);
1630 
1631 
1645 PHYSFS_DECL PHYSFS_sint64 PHYSFS_swapSBE64(PHYSFS_sint64 val);
1646 
1647 
1661 PHYSFS_DECL PHYSFS_uint64 PHYSFS_swapUBE64(PHYSFS_uint64 val);
1662 
1663 
1677 PHYSFS_DECL int PHYSFS_readSLE16(PHYSFS_File *file, PHYSFS_sint16 *val);
1678 
1679 
1694 PHYSFS_DECL int PHYSFS_readULE16(PHYSFS_File *file, PHYSFS_uint16 *val);
1695 
1696 
1710 PHYSFS_DECL int PHYSFS_readSBE16(PHYSFS_File *file, PHYSFS_sint16 *val);
1711 
1712 
1727 PHYSFS_DECL int PHYSFS_readUBE16(PHYSFS_File *file, PHYSFS_uint16 *val);
1728 
1729 
1743 PHYSFS_DECL int PHYSFS_readSLE32(PHYSFS_File *file, PHYSFS_sint32 *val);
1744 
1745 
1760 PHYSFS_DECL int PHYSFS_readULE32(PHYSFS_File *file, PHYSFS_uint32 *val);
1761 
1762 
1776 PHYSFS_DECL int PHYSFS_readSBE32(PHYSFS_File *file, PHYSFS_sint32 *val);
1777 
1778 
1793 PHYSFS_DECL int PHYSFS_readUBE32(PHYSFS_File *file, PHYSFS_uint32 *val);
1794 
1795 
1812 PHYSFS_DECL int PHYSFS_readSLE64(PHYSFS_File *file, PHYSFS_sint64 *val);
1813 
1814 
1831 PHYSFS_DECL int PHYSFS_readULE64(PHYSFS_File *file, PHYSFS_uint64 *val);
1832 
1833 
1850 PHYSFS_DECL int PHYSFS_readSBE64(PHYSFS_File *file, PHYSFS_sint64 *val);
1851 
1852 
1869 PHYSFS_DECL int PHYSFS_readUBE64(PHYSFS_File *file, PHYSFS_uint64 *val);
1870 
1871 
1884 PHYSFS_DECL int PHYSFS_writeSLE16(PHYSFS_File *file, PHYSFS_sint16 val);
1885 
1886 
1899 PHYSFS_DECL int PHYSFS_writeULE16(PHYSFS_File *file, PHYSFS_uint16 val);
1900 
1901 
1914 PHYSFS_DECL int PHYSFS_writeSBE16(PHYSFS_File *file, PHYSFS_sint16 val);
1915 
1916 
1929 PHYSFS_DECL int PHYSFS_writeUBE16(PHYSFS_File *file, PHYSFS_uint16 val);
1930 
1931 
1944 PHYSFS_DECL int PHYSFS_writeSLE32(PHYSFS_File *file, PHYSFS_sint32 val);
1945 
1946 
1959 PHYSFS_DECL int PHYSFS_writeULE32(PHYSFS_File *file, PHYSFS_uint32 val);
1960 
1961 
1974 PHYSFS_DECL int PHYSFS_writeSBE32(PHYSFS_File *file, PHYSFS_sint32 val);
1975 
1976 
1989 PHYSFS_DECL int PHYSFS_writeUBE32(PHYSFS_File *file, PHYSFS_uint32 val);
1990 
1991 
2007 PHYSFS_DECL int PHYSFS_writeSLE64(PHYSFS_File *file, PHYSFS_sint64 val);
2008 
2009 
2025 PHYSFS_DECL int PHYSFS_writeULE64(PHYSFS_File *file, PHYSFS_uint64 val);
2026 
2027 
2043 PHYSFS_DECL int PHYSFS_writeSBE64(PHYSFS_File *file, PHYSFS_sint64 val);
2044 
2045 
2061 PHYSFS_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 
2080 PHYSFS_DECL int PHYSFS_isInit(void);
2081 
2082 
2095 PHYSFS_DECL int PHYSFS_symbolicLinksPermitted(void);
2096 
2097 
2118 typedef 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 
2155 PHYSFS_DECL int PHYSFS_setAllocator(const PHYSFS_Allocator *allocator);
2156 
2157 
2203 PHYSFS_DECL int PHYSFS_mount(const char *newDir,
2204  const char *mountPoint,
2205  int appendToPath);
2206 
2229 PHYSFS_DECL const char *PHYSFS_getMountPoint(const char *dir);
2230 
2231 
2256 typedef void (*PHYSFS_StringCallback)(void *data, const char *str);
2257 
2258 
2294 typedef void (*PHYSFS_EnumFilesCallback)(void *data, const char *origdir,
2295  const char *fname);
2296 
2297 
2329 PHYSFS_DECL void PHYSFS_getCdRomDirsCallback(PHYSFS_StringCallback c, void *d);
2330 
2331 
2365 PHYSFS_DECL void PHYSFS_getSearchPathCallback(PHYSFS_StringCallback c, void *d);
2366 
2367 
2385 PHYSFS_DECL void PHYSFS_enumerateFilesCallback(const char *dir,
2387  void *d) PHYSFS_DEPRECATED;
2388 
2412 PHYSFS_DECL void PHYSFS_utf8FromUcs4(const PHYSFS_uint32 *src, char *dst,
2413  PHYSFS_uint64 len);
2414 
2438 PHYSFS_DECL void PHYSFS_utf8ToUcs4(const char *src, PHYSFS_uint32 *dst,
2439  PHYSFS_uint64 len);
2440 
2472 PHYSFS_DECL void PHYSFS_utf8FromUcs2(const PHYSFS_uint16 *src, char *dst,
2473  PHYSFS_uint64 len);
2474 
2507 PHYSFS_DECL void PHYSFS_utf8ToUcs2(const char *src, PHYSFS_uint16 *dst,
2508  PHYSFS_uint64 len);
2509 
2533 PHYSFS_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 
2565 PHYSFS_DECL int PHYSFS_caseFold(const PHYSFS_uint32 from, PHYSFS_uint32 *to);
2566 
2567 
2593 PHYSFS_DECL int PHYSFS_utf8stricmp(const char *str1, const char *str2);
2594 
2616 PHYSFS_DECL int PHYSFS_utf16stricmp(const PHYSFS_uint16 *str1,
2617  const PHYSFS_uint16 *str2);
2618 
2640 PHYSFS_DECL int PHYSFS_ucs4stricmp(const PHYSFS_uint32 *str1,
2641  const PHYSFS_uint32 *str2);
2642 
2643 
2655 {
2660 
2689  const char *origdir, const char *fname);
2690 
2750 PHYSFS_DECL int PHYSFS_enumerate(const char *dir, PHYSFS_EnumerateCallback c,
2751  void *d);
2752 
2753 
2780 PHYSFS_DECL int PHYSFS_unmount(const char *oldDir);
2781 
2782 
2816 PHYSFS_DECL const PHYSFS_Allocator *PHYSFS_getAllocator(void);
2817 
2818 
2827 typedef enum PHYSFS_FileType
2828 {
2833 } PHYSFS_FileType;
2834 
2852 typedef struct PHYSFS_Stat
2853 {
2854  PHYSFS_sint64 filesize;
2855  PHYSFS_sint64 modtime;
2856  PHYSFS_sint64 createtime;
2857  PHYSFS_sint64 accesstime;
2858  PHYSFS_FileType filetype;
2859  int readonly;
2860 } PHYSFS_Stat;
2861 
2881 PHYSFS_DECL int PHYSFS_stat(const char *fname, PHYSFS_Stat *stat);
2882 
2883 
2912 PHYSFS_DECL void PHYSFS_utf8FromUtf16(const PHYSFS_uint16 *src, char *dst,
2913  PHYSFS_uint64 len);
2914 
2948 PHYSFS_DECL void PHYSFS_utf8ToUtf16(const char *src, PHYSFS_uint16 *dst,
2949  PHYSFS_uint64 len);
2950 
2951 
2968 PHYSFS_DECL PHYSFS_sint64 PHYSFS_readBytes(PHYSFS_File *handle, void *buffer,
2969  PHYSFS_uint64 len);
2970 
2994 PHYSFS_DECL PHYSFS_sint64 PHYSFS_writeBytes(PHYSFS_File *handle,
2995  const void *buffer,
2996  PHYSFS_uint64 len);
2997 
2998 
3040 typedef struct PHYSFS_Io
3041 {
3050  PHYSFS_uint32 version;
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 
3132  PHYSFS_sint64 (*tell)(struct PHYSFS_Io *io);
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 
3240 PHYSFS_DECL int PHYSFS_mountIo(PHYSFS_Io *io, const char *newDir,
3241  const char *mountPoint, int appendToPath);
3242 
3243 
3287 PHYSFS_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 
3345 PHYSFS_DECL int PHYSFS_mountHandle(PHYSFS_File *file, const char *newDir,
3346  const char *mountPoint, int appendToPath);
3347 
3348 
3367 typedef enum PHYSFS_ErrorCode
3368 {
3400 
3401 
3430 PHYSFS_DECL PHYSFS_ErrorCode PHYSFS_getLastErrorCode(void);
3431 
3432 
3461 PHYSFS_DECL const char *PHYSFS_getErrorByCode(PHYSFS_ErrorCode code);
3462 
3490 PHYSFS_DECL void PHYSFS_setErrorCode(PHYSFS_ErrorCode code);
3491 
3492 
3558 PHYSFS_DECL const char *PHYSFS_getPrefDir(const char *org, const char *app);
3559 
3560 
3617 typedef struct PHYSFS_Archiver
3618 {
3627  PHYSFS_uint32 version;
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);
3780 } PHYSFS_Archiver;
3781 
3814 PHYSFS_DECL int PHYSFS_registerArchiver(const PHYSFS_Archiver *archiver);
3815 
3842 PHYSFS_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 
Definition: physfs.h:3389
int PHYSFS_writeSLE16(PHYSFS_File *file, PHYSFS_sint16 val)
Convert and write a signed 16-bit littleendian value.
Definition: physfs.h:2830
void * opaque
Instance data for this struct.
Definition: physfs.h:3060
int PHYSFS_writeUBE64(PHYSFS_File *file, PHYSFS_uint64 val)
Convert and write an unsigned 64-bit bigendian value.
Abstract interface to provide support for user-defined archives.
Definition: physfs.h:3617
PHYSFS_sint64(* write)(struct PHYSFS_Io *io, const void *buffer, PHYSFS_uint64 len)
Write more data.
Definition: physfs.h:3106
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.
PHYSFS_sint64 PHYSFS_write(PHYSFS_File *handle, const void *buffer, PHYSFS_uint32 objSize, PHYSFS_uint32 objCount)
Write data to a PhysicsFS filehandle.
int PHYSFS_isInit(void)
Determine if the PhysicsFS library is initialized.
int PHYSFS_readSBE64(PHYSFS_File *file, PHYSFS_sint64 *val)
Read and convert a signed 64-bit bigendian value.
PHYSFS_sint64 PHYSFS_writeBytes(PHYSFS_File *handle, const void *buffer, PHYSFS_uint64 len)
Write data to a PhysicsFS filehandle.
PHYSFS_File * PHYSFS_openRead(const char *filename)
Open a file for reading.
PHYSFS_uint64 PHYSFS_swapULE64(PHYSFS_uint64 val)
Swap littleendian unsigned 64 to platform's native byte order.
int PHYSFS_mount(const char *newDir, const char *mountPoint, int appendToPath)
Add an archive or directory to the search path.
Definition: physfs.h:3387
const char * PHYSFS_getRealDir(const char *filename)
Figure out where in the search path a file resides.
const char * PHYSFS_getUserDir(void)
Get the path where user's home directory resides.
int PHYSFS_isDirectory(const char *fname)
Determine if a file in the search path is really a directory.
const char * url
Definition: physfs.h:408
int PHYSFS_readULE64(PHYSFS_File *file, PHYSFS_uint64 *val)
Read and convert an unsigned 64-bit littleendian value.
PHYSFS_uint32 version
Binary compatibility information.
Definition: physfs.h:3050
int(* stat)(void *opaque, const char *fn, PHYSFS_Stat *stat)
Obtain basic file metadata.
Definition: physfs.h:3769
Definition: physfs.h:3388
int PHYSFS_ucs4stricmp(const PHYSFS_uint32 *str1, const PHYSFS_uint32 *str2)
Case-insensitive compare of two UCS-4 strings.
Definition: physfs.h:3393
int readonly
Definition: physfs.h:2859
const char * PHYSFS_getLastError(void)
Get human-readable error information.
const PHYSFS_Allocator * PHYSFS_getAllocator(void)
Discover the current allocator.
const char * extension
Definition: physfs.h:405
PHYSFS_uint32 PHYSFS_swapULE32(PHYSFS_uint32 val)
Swap littleendian unsigned 32 to platform's native byte order.
PHYSFS_uint32 PHYSFS_swapUBE32(PHYSFS_uint32 val)
Swap bigendian unsigned 32 to platform's native byte order.
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.
Definition: physfs.h:3384
Definition: physfs.h:3394
PHYSFS_sint64 accesstime
Definition: physfs.h:2857
int PHYSFS_writeUBE16(PHYSFS_File *file, PHYSFS_uint16 val)
Convert and write an unsigned 16-bit bigendian value.
void(* PHYSFS_StringCallback)(void *data, const char *str)
Function signature for callbacks that report strings.
Definition: physfs.h:2256
Information the version of PhysicsFS in use.
Definition: physfs.h:426
int PHYSFS_writeULE16(PHYSFS_File *file, PHYSFS_uint16 val)
Convert and write an unsigned 16-bit littleendian value.
unsigned short PHYSFS_uint16
An unsigned, 16-bit integer type.
Definition: physfs.h:274
int PHYSFS_seek(PHYSFS_File *handle, PHYSFS_uint64 pos)
Seek to a new position within a PhysicsFS filehandle.
signed long long PHYSFS_sint64
A signed, 64-bit integer type.
Definition: physfs.h:317
int supportsSymlinks
Definition: physfs.h:409
PHYSFS_File * PHYSFS_openWrite(const char *filename)
Open a file for writing.
Definition: physfs.h:3380
PHYSFS_sint64 PHYSFS_swapSLE64(PHYSFS_sint64 val)
Swap littleendian signed 64 to platform's native byte order.
PHYSFS_sint32 PHYSFS_swapSBE32(PHYSFS_sint32 val)
Swap bigendian signed 32 to platform's native byte order.
int PHYSFS_deregisterArchiver(const char *ext)
Remove an archiver from the system.
Definition: physfs.h:2831
int PHYSFS_readUBE32(PHYSFS_File *file, PHYSFS_uint32 *val)
Read and convert an unsigned 32-bit bigendian value.
PHYSFS_sint64 PHYSFS_swapSBE64(PHYSFS_sint64 val)
Swap bigendian signed 64 to platform's native byte order.
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, with errors reported.
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
unsigned long long PHYSFS_uint64
An unsigned, 64-bit integer type.
Definition: physfs.h:316
int(* seek)(struct PHYSFS_Io *io, PHYSFS_uint64 offset)
Move i/o position to a given byte offset from start.
Definition: physfs.h:3120
Definition: physfs.h:3381
int PHYSFS_readULE16(PHYSFS_File *file, PHYSFS_uint16 *val)
Read and convert an unsigned 16-bit littleendian value.
Definition: physfs.h:2832
PHYSFS_uint8 major
Definition: physfs.h:428
Definition: physfs.h:3376
const char * PHYSFS_getErrorByCode(PHYSFS_ErrorCode code)
Get human-readable description string for a given error code.
void PHYSFS_utf8FromLatin1(const char *src, char *dst, PHYSFS_uint64 len)
Convert a UTF-8 string to a Latin1 string.
const char * PHYSFS_getDirSeparator(void)
Get platform-dependent dir separator string.
void PHYSFS_setErrorCode(PHYSFS_ErrorCode code)
Set the current thread's error code.
void PHYSFS_getLinkedVersion(PHYSFS_Version *ver)
Get the version of PhysicsFS that is linked against your program.
Definition: physfs.h:3391
int PHYSFS_writeSBE32(PHYSFS_File *file, PHYSFS_sint32 val)
Convert and write a signed 32-bit bigendian value.
int PHYSFS_readSBE32(PHYSFS_File *file, PHYSFS_sint32 *val)
Read and convert a signed 32-bit bigendian value.
Definition: physfs.h:3373
int PHYSFS_flush(PHYSFS_File *handle)
Flush a buffered PhysicsFS file handle.
PHYSFS_uint8 minor
Definition: physfs.h:429
Definition: physfs.h:3398
Definition: physfs.h:2658
int PHYSFS_removeFromSearchPath(const char *oldDir)
Remove a directory or archive from the search path.
int PHYSFS_exists(const char *fname)
Determine if a file exists in the search path.
PHYSFS_sint64 PHYSFS_fileLength(PHYSFS_File *handle)
Get total length of a file in bytes.
int PHYSFS_setAllocator(const PHYSFS_Allocator *allocator)
Hook your own allocation routines into PhysicsFS.
void PHYSFS_utf8ToUcs2(const char *src, PHYSFS_uint16 *dst, PHYSFS_uint64 len)
Convert a UTF-8 string to a UCS-2 string.
PHYSFS_uint64 PHYSFS_swapUBE64(PHYSFS_uint64 val)
Swap bigendian unsigned 64 to platform's native byte order.
PHYSFS_uint8 patch
Definition: physfs.h:430
PHYSFS_ArchiveInfo info
Basic info about this archiver.
Definition: physfs.h:3635
PHYSFS_sint32 PHYSFS_swapSLE32(PHYSFS_sint32 val)
Swap littleendian signed 32 to platform's native byte order.
PHYSFS_sint16 PHYSFS_swapSBE16(PHYSFS_sint16 val)
Swap bigendian signed 16 to platform's native byte order.
const char * PHYSFS_getPrefDir(const char *org, const char *app)
Get the user-and-app-specific path where files can be written.
Definition: physfs.h:2656
unsigned char PHYSFS_uint8
An unsigned, 8-bit integer type.
Definition: physfs.h:262
PhysicsFS allocation function pointers.
Definition: physfs.h:2118
A PhysicsFS file handle.
Definition: physfs.h:366
int PHYSFS_setBuffer(PHYSFS_File *handle, PHYSFS_uint64 bufsize)
Set up buffering for a PhysicsFS file handle.
char ** PHYSFS_enumerateFiles(const char *dir)
Get a file listing of a search path's directory.
PHYSFS_uint16 PHYSFS_swapUBE16(PHYSFS_uint16 val)
Swap bigendian unsigned 16 to platform's native byte order.
int PHYSFS_readSLE64(PHYSFS_File *file, PHYSFS_sint64 *val)
Read and convert a signed 64-bit littleendian value.
void PHYSFS_utf8ToUcs4(const char *src, PHYSFS_uint32 *dst, PHYSFS_uint64 len)
Convert a UTF-8 string to a UCS-4 string.
Definition: physfs.h:3371
int PHYSFS_readSLE32(PHYSFS_File *file, PHYSFS_sint32 *val)
Read and convert a signed 32-bit littleendian value.
Definition: physfs.h:2657
Definition: physfs.h:3383
PHYSFS_sint64 modtime
Definition: physfs.h:2855
int PHYSFS_stat(const char *fname, PHYSFS_Stat *stat)
Get various information about a directory or a file.
int PHYSFS_registerArchiver(const PHYSFS_Archiver *archiver)
Add a new archiver to the system.
int PHYSFS_setWriteDir(const char *newDir)
Tell PhysicsFS where it may write files.
signed int PHYSFS_sint32
A signed, 32-bit integer type.
Definition: physfs.h:292
int PHYSFS_writeSBE64(PHYSFS_File *file, PHYSFS_sint64 val)
Convert and write a signed 64-bit bigending value.
An abstract i/o interface.
Definition: physfs.h:3040
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.
PHYSFS_sint16 PHYSFS_swapSLE16(PHYSFS_sint16 val)
Swap littleendian signed 16 to platform's native byte order.
int PHYSFS_writeSLE32(PHYSFS_File *file, PHYSFS_sint32 val)
Convert and write a signed 32-bit littleendian value.
void PHYSFS_utf8FromUcs2(const PHYSFS_uint16 *src, char *dst, PHYSFS_uint64 len)
Convert a UCS-2 string to a UTF-8 string.
PHYSFS_sint64 createtime
Definition: physfs.h:2856
int PHYSFS_writeUBE32(PHYSFS_File *file, PHYSFS_uint32 val)
Convert and write an unsigned 32-bit bigendian value.
Definition: physfs.h:3392
signed short PHYSFS_sint16
A signed, 16-bit integer type.
Definition: physfs.h:280
Definition: physfs.h:3390
Definition: physfs.h:3372
char ** PHYSFS_getCdRomDirs(void)
Get an array of paths to available CD-ROM drives.
int PHYSFS_symbolicLinksPermitted(void)
Determine if the symbolic links are permitted.
PHYSFS_File * PHYSFS_openAppend(const char *filename)
Open a file for appending.
int PHYSFS_close(PHYSFS_File *handle)
Close a PhysicsFS filehandle.
Definition: physfs.h:3386
int PHYSFS_readSBE16(PHYSFS_File *file, PHYSFS_sint16 *val)
Read and convert a signed 16-bit bigendian value.
void PHYSFS_utf8FromUtf16(const PHYSFS_uint16 *src, char *dst, PHYSFS_uint64 len)
Convert a UTF-16 string to a UTF-8 string.
Definition: physfs.h:3377
PHYSFS_EnumerateCallbackResult
Definition: physfs.h:2654
PHYSFS_sint64 PHYSFS_read(PHYSFS_File *handle, void *buffer, PHYSFS_uint32 objSize, PHYSFS_uint32 objCount)
Read data from a PhysicsFS filehandle.
PHYSFS_uint32 version
Binary compatibility information.
Definition: physfs.h:3627
int PHYSFS_readUBE16(PHYSFS_File *file, PHYSFS_uint16 *val)
Read and convert an unsigned 16-bit bigendian value.
int PHYSFS_setSaneConfig(const char *organization, const char *appName, const char *archiveExt, int includeCdRoms, int archivesFirst)
Set up sane, default paths.
PHYSFS_sint64 PHYSFS_tell(PHYSFS_File *handle)
Determine current position within a PhysicsFS filehandle.
void PHYSFS_getSearchPathCallback(PHYSFS_StringCallback c, void *d)
Enumerate the search path, using an application-defined callback.
int PHYSFS_readULE32(PHYSFS_File *file, PHYSFS_uint32 *val)
Read and convert an unsigned 32-bit littleendian value.
int PHYSFS_deinit(void)
Deinitialize the PhysicsFS library.
int PHYSFS_writeSBE16(PHYSFS_File *file, PHYSFS_sint16 val)
Convert and write a signed 16-bit bigendian value.
int PHYSFS_writeULE64(PHYSFS_File *file, PHYSFS_uint64 val)
Convert and write an unsigned 64-bit littleendian 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.
const char * author
Definition: physfs.h:407
int PHYSFS_eof(PHYSFS_File *handle)
Check for end-of-file state on a PhysicsFS filehandle.
const char * PHYSFS_getWriteDir(void)
Get path where PhysicsFS will allow file writing.
Definition: physfs.h:3382
PHYSFS_sint64 filesize
Definition: physfs.h:2854
unsigned int PHYSFS_uint32
An unsigned, 32-bit integer type.
Definition: physfs.h:286
int PHYSFS_utf8stricmp(const char *str1, const char *str2)
Case-insensitive compare of two UTF-8 strings.
int PHYSFS_addToSearchPath(const char *newDir, int appendToPath)
Add an archive or directory to the search path.
Definition: physfs.h:2829
Definition: physfs.h:3395
int PHYSFS_mkdir(const char *dirName)
Create a directory.
PHYSFS_EnumerateCallbackResult(* PHYSFS_EnumerateCallback)(void *data, const char *origdir, const char *fname)
Possible return values from PHYSFS_EnumerateCallback.
Definition: physfs.h:2688
PHYSFS_sint64 PHYSFS_getLastModTime(const char *filename)
Get the last modification time of a file.
int PHYSFS_utf16stricmp(const PHYSFS_uint16 *str1, const PHYSFS_uint16 *str2)
Case-insensitive compare of two UTF-16 strings.
int PHYSFS_isSymbolicLink(const char *fname)
Determine if a file in the search path is really a symbolic link.
int PHYSFS_unmount(const char *oldDir)
Remove a directory or archive from the search path.
Definition: physfs.h:3370
PHYSFS_sint64(* length)(struct PHYSFS_Io *io)
Determine size of the i/o instance's dataset.
Definition: physfs.h:3144
Definition: physfs.h:3379
int PHYSFS_writeULE32(PHYSFS_File *file, PHYSFS_uint32 val)
Convert and write an unsigned 32-bit littleendian value.
const char * PHYSFS_getBaseDir(void)
Get the path where the application resides.
int PHYSFS_init(const char *argv0)
Initialize the PhysicsFS library.
Definition: physfs.h:3369
PHYSFS_sint64 PHYSFS_readBytes(PHYSFS_File *handle, void *buffer, PHYSFS_uint64 len)
Read bytes from a PhysicsFS filehandle.
char ** PHYSFS_getSearchPath(void)
Get the current search path.
PHYSFS_FileType
Type of a File.
Definition: physfs.h:2827
int PHYSFS_delete(const char *filename)
Delete a file or directory.
int PHYSFS_readSLE16(PHYSFS_File *file, PHYSFS_sint16 *val)
Read and convert a signed 16-bit littleendian value.
Information on various PhysicsFS-supported archives.
Definition: physfs.h:403
const char * PHYSFS_getMountPoint(const char *dir)
Determine a mounted archive's mountpoint.
void PHYSFS_getCdRomDirsCallback(PHYSFS_StringCallback c, void *d)
Enumerate CD-ROM directories, using an application-defined callback.
void PHYSFS_utf8ToUtf16(const char *src, PHYSFS_uint16 *dst, PHYSFS_uint64 len)
Convert a UTF-8 string to a UTF-16 string.
int PHYSFS_caseFold(const PHYSFS_uint32 from, PHYSFS_uint32 *to)
"Fold" a Unicode codepoint to a lowercase equivalent.
Definition: physfs.h:3374
void PHYSFS_permitSymbolicLinks(int allow)
Enable or disable following of symbolic links.
void PHYSFS_utf8FromUcs4(const PHYSFS_uint32 *src, char *dst, PHYSFS_uint64 len)
Convert a UCS-4 string to a UTF-8 string.
int PHYSFS_writeSLE64(PHYSFS_File *file, PHYSFS_sint64 val)
Convert and write a signed 64-bit littleendian value.
signed char PHYSFS_sint8
A signed, 8-bit integer type.
Definition: physfs.h:268
const PHYSFS_ArchiveInfo ** PHYSFS_supportedArchiveTypes(void)
Get a list of supported archive types.
PHYSFS_ErrorCode PHYSFS_getLastErrorCode(void)
Get machine-readable error information.
Meta data for a file or directory.
Definition: physfs.h:2852
Definition: physfs.h:3385
PHYSFS_ErrorCode
Values that represent specific causes of failure.
Definition: physfs.h:3367
Definition: physfs.h:3378
Definition: physfs.h:3375
Definition: physfs.h:3397
int(* flush)(struct PHYSFS_Io *io)
Flush resources to media, or wherever.
Definition: physfs.h:3177
Definition: physfs.h:3396
int PHYSFS_readUBE64(PHYSFS_File *file, PHYSFS_uint64 *val)
Read and convert an unsigned 64-bit bigendian value.
PHYSFS_uint16 PHYSFS_swapULE16(PHYSFS_uint16 val)
Swap littleendian unsigned 16 to platform's native byte order.
const char * description
Definition: physfs.h:406
void(* PHYSFS_EnumFilesCallback)(void *data, const char *origdir, const char *fname)
Function signature for callbacks that enumerate files.
Definition: physfs.h:2294
void * opaque
Definition: physfs.h:368
PHYSFS_FileType filetype
Definition: physfs.h:2858
void PHYSFS_freeList(void *listVar)
Deallocate resources of lists returned by PhysicsFS.