diff options
Diffstat (limited to 'Frameworks/physfs.framework')
42 files changed, 0 insertions, 12955 deletions
diff --git a/Frameworks/physfs.framework/.svn/all-wcprops b/Frameworks/physfs.framework/.svn/all-wcprops deleted file mode 100644 index 2e316bff..00000000 --- a/Frameworks/physfs.framework/.svn/all-wcprops +++ /dev/null @@ -1,23 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 71 -/svnroot/lom/!svn/ver/408/client/proj/xcode/Frameworks/physfs.framework -END -Resources -K 25 -svn:wc:ra_dav:version-url -V 81 -/svnroot/lom/!svn/ver/408/client/proj/xcode/Frameworks/physfs.framework/Resources -END -Headers -K 25 -svn:wc:ra_dav:version-url -V 79 -/svnroot/lom/!svn/ver/408/client/proj/xcode/Frameworks/physfs.framework/Headers -END -physfs -K 25 -svn:wc:ra_dav:version-url -V 78 -/svnroot/lom/!svn/ver/408/client/proj/xcode/Frameworks/physfs.framework/physfs -END diff --git a/Frameworks/physfs.framework/.svn/entries b/Frameworks/physfs.framework/.svn/entries deleted file mode 100644 index 3e683b54..00000000 --- a/Frameworks/physfs.framework/.svn/entries +++ /dev/null @@ -1,79 +0,0 @@ -8 - -dir -425 -https://allenmoatallen@lom.svn.sourceforge.net/svnroot/lom/client/proj/xcode/Frameworks/physfs.framework -https://allenmoatallen@lom.svn.sourceforge.net/svnroot/lom - - - -2009-01-28T20:51:01.517662Z -408 -allenmoatallen - - -svn:special svn:externals svn:needs-lock - - - - - - - - - - - -526aae6b-ec45-0410-ad3e-d5d18bbc98bf - -Versions -dir - -Resources -file - - - - -2009-01-28T20:52:50.000000Z -8a6539acc25a583ce7a88f6573bf4687 -2009-01-28T20:51:01.517662Z -408 -allenmoatallen -has-props - - -svn:special - -Headers -file - - - - -2009-01-28T20:52:50.000000Z -574393f6f6e7d44c9dfa3c805bbefb99 -2009-01-28T20:51:01.517662Z -408 -allenmoatallen -has-props - - -svn:special - -physfs -file - - - - -2009-01-28T20:52:50.000000Z -2cd8b45ed3ad9de40ca1bf6e8ea99f30 -2009-01-28T20:51:01.517662Z -408 -allenmoatallen -has-props - - -svn:special - diff --git a/Frameworks/physfs.framework/.svn/format b/Frameworks/physfs.framework/.svn/format deleted file mode 100644 index 45a4fb75..00000000 --- a/Frameworks/physfs.framework/.svn/format +++ /dev/null @@ -1 +0,0 @@ -8 diff --git a/Frameworks/physfs.framework/.svn/prop-base/Headers.svn-base b/Frameworks/physfs.framework/.svn/prop-base/Headers.svn-base deleted file mode 100644 index d2224698..00000000 --- a/Frameworks/physfs.framework/.svn/prop-base/Headers.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 11 -svn:special -V 1 -* -END diff --git a/Frameworks/physfs.framework/.svn/prop-base/Resources.svn-base b/Frameworks/physfs.framework/.svn/prop-base/Resources.svn-base deleted file mode 100644 index d2224698..00000000 --- a/Frameworks/physfs.framework/.svn/prop-base/Resources.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 11 -svn:special -V 1 -* -END diff --git a/Frameworks/physfs.framework/.svn/prop-base/physfs.svn-base b/Frameworks/physfs.framework/.svn/prop-base/physfs.svn-base deleted file mode 100644 index d2224698..00000000 --- a/Frameworks/physfs.framework/.svn/prop-base/physfs.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 11 -svn:special -V 1 -* -END diff --git a/Frameworks/physfs.framework/.svn/text-base/Headers.svn-base b/Frameworks/physfs.framework/.svn/text-base/Headers.svn-base deleted file mode 100644 index 45bda20b..00000000 --- a/Frameworks/physfs.framework/.svn/text-base/Headers.svn-base +++ /dev/null @@ -1 +0,0 @@ -link Versions/Current/Headers
\ No newline at end of file diff --git a/Frameworks/physfs.framework/.svn/text-base/Resources.svn-base b/Frameworks/physfs.framework/.svn/text-base/Resources.svn-base deleted file mode 100644 index 0af1f07c..00000000 --- a/Frameworks/physfs.framework/.svn/text-base/Resources.svn-base +++ /dev/null @@ -1 +0,0 @@ -link Versions/Current/Resources
\ No newline at end of file diff --git a/Frameworks/physfs.framework/.svn/text-base/physfs.svn-base b/Frameworks/physfs.framework/.svn/text-base/physfs.svn-base deleted file mode 100644 index 8f765cb6..00000000 --- a/Frameworks/physfs.framework/.svn/text-base/physfs.svn-base +++ /dev/null @@ -1 +0,0 @@ -link Versions/Current/physfs
\ No newline at end of file diff --git a/Frameworks/physfs.framework/Versions/.svn/all-wcprops b/Frameworks/physfs.framework/Versions/.svn/all-wcprops deleted file mode 100644 index b1b6ee83..00000000 --- a/Frameworks/physfs.framework/Versions/.svn/all-wcprops +++ /dev/null @@ -1,11 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 80 -/svnroot/lom/!svn/ver/408/client/proj/xcode/Frameworks/physfs.framework/Versions -END -Current -K 25 -svn:wc:ra_dav:version-url -V 88 -/svnroot/lom/!svn/ver/408/client/proj/xcode/Frameworks/physfs.framework/Versions/Current -END diff --git a/Frameworks/physfs.framework/Versions/.svn/entries b/Frameworks/physfs.framework/Versions/.svn/entries deleted file mode 100644 index 02577d46..00000000 --- a/Frameworks/physfs.framework/Versions/.svn/entries +++ /dev/null @@ -1,47 +0,0 @@ -8 - -dir -425 -https://allenmoatallen@lom.svn.sourceforge.net/svnroot/lom/client/proj/xcode/Frameworks/physfs.framework/Versions -https://allenmoatallen@lom.svn.sourceforge.net/svnroot/lom - - - -2009-01-28T20:51:01.517662Z -408 -allenmoatallen - - -svn:special svn:externals svn:needs-lock - - - - - - - - - - - -526aae6b-ec45-0410-ad3e-d5d18bbc98bf - -A -dir - -Current -file - - - - -2009-01-28T20:52:50.000000Z -654580f41818cd6f51408c7cbd313728 -2009-01-28T20:51:01.517662Z -408 -allenmoatallen -has-props - - -svn:special - diff --git a/Frameworks/physfs.framework/Versions/.svn/format b/Frameworks/physfs.framework/Versions/.svn/format deleted file mode 100644 index 45a4fb75..00000000 --- a/Frameworks/physfs.framework/Versions/.svn/format +++ /dev/null @@ -1 +0,0 @@ -8 diff --git a/Frameworks/physfs.framework/Versions/.svn/prop-base/Current.svn-base b/Frameworks/physfs.framework/Versions/.svn/prop-base/Current.svn-base deleted file mode 100644 index d2224698..00000000 --- a/Frameworks/physfs.framework/Versions/.svn/prop-base/Current.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 11 -svn:special -V 1 -* -END diff --git a/Frameworks/physfs.framework/Versions/.svn/text-base/Current.svn-base b/Frameworks/physfs.framework/Versions/.svn/text-base/Current.svn-base deleted file mode 100644 index 613feee7..00000000 --- a/Frameworks/physfs.framework/Versions/.svn/text-base/Current.svn-base +++ /dev/null @@ -1 +0,0 @@ -link A
\ No newline at end of file diff --git a/Frameworks/physfs.framework/Versions/A/.svn/all-wcprops b/Frameworks/physfs.framework/Versions/A/.svn/all-wcprops deleted file mode 100644 index 6c9a6c5a..00000000 --- a/Frameworks/physfs.framework/Versions/A/.svn/all-wcprops +++ /dev/null @@ -1,11 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 82 -/svnroot/lom/!svn/ver/408/client/proj/xcode/Frameworks/physfs.framework/Versions/A -END -physfs -K 25 -svn:wc:ra_dav:version-url -V 89 -/svnroot/lom/!svn/ver/408/client/proj/xcode/Frameworks/physfs.framework/Versions/A/physfs -END diff --git a/Frameworks/physfs.framework/Versions/A/.svn/entries b/Frameworks/physfs.framework/Versions/A/.svn/entries deleted file mode 100644 index 3d672c54..00000000 --- a/Frameworks/physfs.framework/Versions/A/.svn/entries +++ /dev/null @@ -1,47 +0,0 @@ -8 - -dir -425 -https://allenmoatallen@lom.svn.sourceforge.net/svnroot/lom/client/proj/xcode/Frameworks/physfs.framework/Versions/A -https://allenmoatallen@lom.svn.sourceforge.net/svnroot/lom - - - -2009-01-28T20:51:01.517662Z -408 -allenmoatallen - - -svn:special svn:externals svn:needs-lock - - - - - - - - - - - -526aae6b-ec45-0410-ad3e-d5d18bbc98bf - -Resources -dir - -Headers -dir - -physfs -file - - - - -2009-01-28T20:52:50.000000Z -d49f59e3b4fe03aa2a06a020282b4892 -2009-01-28T20:51:01.517662Z -408 -allenmoatallen -has-props - diff --git a/Frameworks/physfs.framework/Versions/A/.svn/format b/Frameworks/physfs.framework/Versions/A/.svn/format deleted file mode 100644 index 45a4fb75..00000000 --- a/Frameworks/physfs.framework/Versions/A/.svn/format +++ /dev/null @@ -1 +0,0 @@ -8 diff --git a/Frameworks/physfs.framework/Versions/A/.svn/prop-base/physfs.svn-base b/Frameworks/physfs.framework/Versions/A/.svn/prop-base/physfs.svn-base deleted file mode 100644 index cd0e69f8..00000000 --- a/Frameworks/physfs.framework/Versions/A/.svn/prop-base/physfs.svn-base +++ /dev/null @@ -1,9 +0,0 @@ -K 14 -svn:executable -V 0 - -K 13 -svn:mime-type -V 24 -application/octet-stream -END diff --git a/Frameworks/physfs.framework/Versions/A/.svn/text-base/physfs.svn-base b/Frameworks/physfs.framework/Versions/A/.svn/text-base/physfs.svn-base Binary files differdeleted file mode 100644 index efea2d32..00000000 --- a/Frameworks/physfs.framework/Versions/A/.svn/text-base/physfs.svn-base +++ /dev/null diff --git a/Frameworks/physfs.framework/Versions/A/Headers/.svn/all-wcprops b/Frameworks/physfs.framework/Versions/A/Headers/.svn/all-wcprops deleted file mode 100644 index 18a170e4..00000000 --- a/Frameworks/physfs.framework/Versions/A/Headers/.svn/all-wcprops +++ /dev/null @@ -1,29 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 90 -/svnroot/lom/!svn/ver/408/client/proj/xcode/Frameworks/physfs.framework/Versions/A/Headers -END -physfs_casefolding.h -K 25 -svn:wc:ra_dav:version-url -V 111 -/svnroot/lom/!svn/ver/408/client/proj/xcode/Frameworks/physfs.framework/Versions/A/Headers/physfs_casefolding.h -END -physfs.h -K 25 -svn:wc:ra_dav:version-url -V 99 -/svnroot/lom/!svn/ver/408/client/proj/xcode/Frameworks/physfs.framework/Versions/A/Headers/physfs.h -END -physfs_platforms.h -K 25 -svn:wc:ra_dav:version-url -V 109 -/svnroot/lom/!svn/ver/408/client/proj/xcode/Frameworks/physfs.framework/Versions/A/Headers/physfs_platforms.h -END -physfs_internal.h -K 25 -svn:wc:ra_dav:version-url -V 108 -/svnroot/lom/!svn/ver/408/client/proj/xcode/Frameworks/physfs.framework/Versions/A/Headers/physfs_internal.h -END diff --git a/Frameworks/physfs.framework/Versions/A/Headers/.svn/entries b/Frameworks/physfs.framework/Versions/A/Headers/.svn/entries deleted file mode 100644 index 9a16792d..00000000 --- a/Frameworks/physfs.framework/Versions/A/Headers/.svn/entries +++ /dev/null @@ -1,76 +0,0 @@ -8 - -dir -425 -https://allenmoatallen@lom.svn.sourceforge.net/svnroot/lom/client/proj/xcode/Frameworks/physfs.framework/Versions/A/Headers -https://allenmoatallen@lom.svn.sourceforge.net/svnroot/lom - - - -2009-01-28T20:51:01.517662Z -408 -allenmoatallen - - -svn:special svn:externals svn:needs-lock - - - - - - - - - - - -526aae6b-ec45-0410-ad3e-d5d18bbc98bf - -physfs_casefolding.h -file - - - - -2009-01-28T20:52:50.000000Z -b730bc551e08d8d76d476f385918a610 -2009-01-28T20:51:01.517662Z -408 -allenmoatallen - -physfs.h -file - - - - -2009-01-28T20:52:50.000000Z -59f6f8a1ad43a538660d37166737337d -2009-01-28T20:51:01.517662Z -408 -allenmoatallen - -physfs_platforms.h -file - - - - -2009-01-28T20:52:50.000000Z -5fdceedee21fd58d1498346835a69880 -2009-01-28T20:51:01.517662Z -408 -allenmoatallen - -physfs_internal.h -file - - - - -2009-01-28T20:52:50.000000Z -6cb9e424f87c65daa41d9c20eff3a712 -2009-01-28T20:51:01.517662Z -408 -allenmoatallen - diff --git a/Frameworks/physfs.framework/Versions/A/Headers/.svn/format b/Frameworks/physfs.framework/Versions/A/Headers/.svn/format deleted file mode 100644 index 45a4fb75..00000000 --- a/Frameworks/physfs.framework/Versions/A/Headers/.svn/format +++ /dev/null @@ -1 +0,0 @@ -8 diff --git a/Frameworks/physfs.framework/Versions/A/Headers/.svn/text-base/physfs.h.svn-base b/Frameworks/physfs.framework/Versions/A/Headers/.svn/text-base/physfs.h.svn-base deleted file mode 100644 index 90386325..00000000 --- a/Frameworks/physfs.framework/Versions/A/Headers/.svn/text-base/physfs.h.svn-base +++ /dev/null @@ -1,2390 +0,0 @@ -/** \file physfs.h */ - -/** - * \mainpage PhysicsFS - * - * The latest version of PhysicsFS can be found at: - * http://icculus.org/physfs/ - * - * PhysicsFS; a portable, flexible file i/o abstraction. - * - * This API gives you access to a system file system in ways superior to the - * stdio or system i/o calls. The brief benefits: - * - * - It's portable. - * - It's safe. No file access is permitted outside the specified dirs. - * - It's flexible. Archives (.ZIP files) can be used transparently as - * directory structures. - * - * This system is largely inspired by Quake 3's PK3 files and the related - * fs_* cvars. If you've ever tinkered with these, then this API will be - * familiar to you. - * - * With PhysicsFS, you have a single writing directory and multiple - * directories (the "search path") for reading. You can think of this as a - * filesystem within a filesystem. If (on Windows) you were to set the - * writing directory to "C:\MyGame\MyWritingDirectory", then no PHYSFS calls - * could touch anything above this directory, including the "C:\MyGame" and - * "C:\" directories. This prevents an application's internal scripting - * language from piddling over c:\\config.sys, for example. If you'd rather - * give PHYSFS full access to the system's REAL file system, set the writing - * dir to "C:\", but that's generally A Bad Thing for several reasons. - * - * Drive letters are hidden in PhysicsFS once you set up your initial paths. - * The search path creates a single, hierarchical directory structure. - * Not only does this lend itself well to general abstraction with archives, - * it also gives better support to operating systems like MacOS and Unix. - * Generally speaking, you shouldn't ever hardcode a drive letter; not only - * does this hurt portability to non-Microsoft OSes, but it limits your win32 - * users to a single drive, too. Use the PhysicsFS abstraction functions and - * allow user-defined configuration options, too. When opening a file, you - * specify it like it was on a Unix filesystem: if you want to write to - * "C:\MyGame\MyConfigFiles\game.cfg", then you might set the write dir to - * "C:\MyGame" and then open "MyConfigFiles/game.cfg". This gives an - * abstraction across all platforms. Specifying a file in this way is termed - * "platform-independent notation" in this documentation. Specifying a - * a filename in a form such as "C:\mydir\myfile" or - * "MacOS hard drive:My Directory:My File" is termed "platform-dependent - * notation". The only time you use platform-dependent notation is when - * setting up your write directory and search path; after that, all file - * access into those directories are done with platform-independent notation. - * - * All files opened for writing are opened in relation to the write directory, - * which is the root of the writable filesystem. When opening a file for - * reading, PhysicsFS goes through the search path. This is NOT the - * same thing as the PATH environment variable. An application using - * PhysicsFS specifies directories to be searched which may be actual - * directories, or archive files that contain files and subdirectories of - * their own. See the end of these docs for currently supported archive - * formats. - * - * Once the search path is defined, you may open files for reading. If you've - * got the following search path defined (to use a win32 example again): - * - * - C:\\mygame - * - C:\\mygame\\myuserfiles - * - D:\\mygamescdromdatafiles - * - C:\\mygame\\installeddatafiles.zip - * - * Then a call to PHYSFS_openRead("textfiles/myfile.txt") (note the directory - * separator, lack of drive letter, and lack of dir separator at the start of - * the string; this is platform-independent notation) will check for - * C:\\mygame\\textfiles\\myfile.txt, then - * C:\\mygame\\myuserfiles\\textfiles\\myfile.txt, then - * D:\\mygamescdromdatafiles\\textfiles\\myfile.txt, then, finally, for - * textfiles\\myfile.txt inside of C:\\mygame\\installeddatafiles.zip. - * Remember that most archive types and platform filesystems store their - * filenames in a case-sensitive manner, so you should be careful to specify - * it correctly. - * - * Files opened through PhysicsFS may NOT contain "." or ".." or ":" as dir - * elements. Not only are these meaningless on MacOS Classic and/or Unix, - * they are a security hole. Also, symbolic links (which can be found in - * some archive types and directly in the filesystem on Unix platforms) are - * NOT followed until you call PHYSFS_permitSymbolicLinks(). That's left to - * your own discretion, as following a symlink can allow for access outside - * the write dir and search paths. For portability, there is no mechanism for - * creating new symlinks in PhysicsFS. - * - * The write dir is not included in the search path unless you specifically - * add it. While you CAN change the write dir as many times as you like, - * you should probably set it once and stick to it. Remember that your - * program will not have permission to write in every directory on Unix and - * NT systems. - * - * All files are opened in binary mode; there is no endline conversion for - * textfiles. Other than that, PhysicsFS has some convenience functions for - * platform-independence. There is a function to tell you the current - * platform's dir separator ("\\" on windows, "/" on Unix, ":" on MacOS), - * which is needed only to set up your search/write paths. There is a - * function to tell you what CD-ROM drives contain accessible discs, and a - * function to recommend a good search path, etc. - * - * A recommended order for the search path is the write dir, then the base dir, - * then the cdrom dir, then any archives discovered. Quake 3 does something - * like this, but moves the archives to the start of the search path. Build - * Engine games, like Duke Nukem 3D and Blood, place the archives last, and - * use the base dir for both searching and writing. There is a helper - * function (PHYSFS_setSaneConfig()) that puts together a basic configuration - * for you, based on a few parameters. Also see the comments on - * PHYSFS_getBaseDir(), and PHYSFS_getUserDir() for info on what those - * are and how they can help you determine an optimal search path. - * - * PhysicsFS 2.0 adds the concept of "mounting" archives to arbitrary points - * in the search path. If a zipfile contains "maps/level.map" and you mount - * that archive at "mods/mymod", then you would have to open - * "mods/mymod/maps/level.map" to access the file, even though "mods/mymod" - * isn't actually specified in the .zip file. Unlike the Unix mentality of - * mounting a filesystem, "mods/mymod" doesn't actually have to exist when - * mounting the zipfile. It's a "virtual" directory. The mounting mechanism - * allows the developer to seperate archives in the tree and avoid trampling - * over files when added new archives, such as including mod support in a - * game...keeping external content on a tight leash in this manner can be of - * utmost importance to some applications. - * - * PhysicsFS is mostly thread safe. The error messages returned by - * PHYSFS_getLastError are unique by thread, and library-state-setting - * functions are mutex'd. For efficiency, individual file accesses are - * not locked, so you can not safely read/write/seek/close/etc the same - * file from two threads at the same time. Other race conditions are bugs - * that should be reported/patched. - * - * While you CAN use stdio/syscall file access in a program that has PHYSFS_* - * calls, doing so is not recommended, and you can not use system - * filehandles with PhysicsFS and vice versa. - * - * Note that archives need not be named as such: if you have a ZIP file and - * rename it with a .PKG extension, the file will still be recognized as a - * ZIP archive by PhysicsFS; the file's contents are used to determine its - * type where possible. - * - * Currently supported archive types: - * - .ZIP (pkZip/WinZip/Info-ZIP compatible) - * - .GRP (Build Engine groupfile archives) - * - .PAK (Quake I/II archive format) - * - .HOG (Descent I/II HOG file archives) - * - .MVL (Descent II movielib archives) - * - .WAD (DOOM engine archives) - * - * - * String policy for PhysicsFS 2.0 and later: - * - * PhysicsFS 1.0 could only deal with null-terminated ASCII strings. All high - * ASCII chars resulted in undefined behaviour, and there was no Unicode - * support at all. PhysicsFS 2.0 supports Unicode without breaking binary - * compatibility with the 1.0 API by using UTF-8 encoding of all strings - * passed in and out of the library. - * - * All strings passed through PhysicsFS are in null-terminated UTF-8 format. - * This means that if all you care about is English (ASCII characters <= 127) - * then you just use regular C strings. If you care about Unicode (and you - * should!) then you need to figure out what your platform wants, needs, and - * offers. If you are on Windows and build with Unicode support, your TCHAR - * strings are two bytes per character (this is called "UCS-2 encoding"). You - * should convert them to UTF-8 before handing them to PhysicsFS with - * PHYSFS_utf8FromUcs2(). If you're using Unix or Mac OS X, your wchar_t - * strings are four bytes per character ("UCS-4 encoding"). Use - * PHYSFS_utf8FromUcs4(). Mac OS X can give you UTF-8 directly from a - * CFString, and many Unixes generally give you C strings in UTF-8 format - * everywhere. If you have a single-byte high ASCII charset, like so-many - * European "codepages" you may be out of luck. We'll convert from "Latin1" - * to UTF-8 only, and never back to Latin1. If you're above ASCII 127, all - * bets are off: move to Unicode or use your platform's facilities. Passing a - * C string with high-ASCII data that isn't UTF-8 encoded will NOT do what - * you expect! - * - * Naturally, there's also PHYSFS_utf8ToUcs2() and PHYSFS_utf8ToUcs4() to get - * data back into a format you like. Behind the scenes, PhysicsFS will use - * Unicode where possible: the UTF-8 strings on Windows will be converted - * and used with the multibyte Windows APIs, for example. - * - * PhysicsFS offers basic encoding conversion support, but not a whole string - * library. Get your stuff into whatever format you can work with. - * - * Some platforms and archivers don't offer full Unicode support behind the - * scenes. For example, OS/2 only offers "codepages" and the filesystem - * itself doesn't support multibyte encodings. We make an earnest effort to - * convert to/from the current locale here, but all bets are off if - * you want to hand an arbitrary Japanese character through to these systems. - * Modern OSes (Mac OS X, Linux, Windows, PocketPC, etc) should all be fine. - * Many game-specific archivers are seriously unprepared for Unicode (the - * Descent HOG/MVL and Build Engine GRP archivers, for example, only offer a - * DOS 8.3 filename, for example). Nothing can be done for these, but they - * tend to be legacy formats for existing content that was all ASCII (and - * thus, valid UTF-8) anyhow. Other formats, like .ZIP, don't explicitly - * offer Unicode support, but unofficially expect filenames to be UTF-8 - * encoded, and thus Just Work. Most everything does the right thing without - * bothering you, but it's good to be aware of these nuances in case they - * don't. - * - * - * Other stuff: - * - * Please see the file LICENSE.txt in the source's root directory for licensing - * and redistribution rights. - * - * Please see the file CREDITS.txt in the source's root directory for a more or - * less complete list of who's responsible for this. - * - * \author Ryan C. Gordon. - */ - -#ifndef _INCLUDE_PHYSFS_H_ -#define _INCLUDE_PHYSFS_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef DOXYGEN_SHOULD_IGNORE_THIS -#if (defined _MSC_VER) -#define __EXPORT__ __declspec(dllexport) -#elif (__GNUC__ >= 3) -#define __EXPORT__ __attribute__((visibility("default"))) -#else -#define __EXPORT__ -#endif -#endif /* DOXYGEN_SHOULD_IGNORE_THIS */ - -/** - * \typedef PHYSFS_uint8 - * \brief An unsigned, 8-bit integer type. - */ -typedef unsigned char PHYSFS_uint8; - -/** - * \typedef PHYSFS_sint8 - * \brief A signed, 8-bit integer type. - */ -typedef signed char PHYSFS_sint8; - -/** - * \typedef PHYSFS_uint16 - * \brief An unsigned, 16-bit integer type. - */ -typedef unsigned short PHYSFS_uint16; - -/** - * \typedef PHYSFS_sint16 - * \brief A signed, 16-bit integer type. - */ -typedef signed short PHYSFS_sint16; - -/** - * \typedef PHYSFS_uint32 - * \brief An unsigned, 32-bit integer type. - */ -typedef unsigned int PHYSFS_uint32; - -/** - * \typedef PHYSFS_sint32 - * \brief A signed, 32-bit integer type. - */ -typedef signed int PHYSFS_sint32; - -/** - * \typedef PHYSFS_uint64 - * \brief An unsigned, 64-bit integer type. - * \warning on platforms without any sort of 64-bit datatype, this is - * equivalent to PHYSFS_uint32! - */ - -/** - * \typedef PHYSFS_sint64 - * \brief A signed, 64-bit integer type. - * \warning on platforms without any sort of 64-bit datatype, this is - * equivalent to PHYSFS_sint32! - */ - - -#if (defined PHYSFS_NO_64BIT_SUPPORT) /* oh well. */ -typedef PHYSFS_uint32 PHYSFS_uint64; -typedef PHYSFS_sint32 PHYSFS_sint64; -#elif (defined _MSC_VER) -typedef signed __int64 PHYSFS_sint64; -typedef unsigned __int64 PHYSFS_uint64; -#else -typedef unsigned long long PHYSFS_uint64; -typedef signed long long PHYSFS_sint64; -#endif - - -#ifndef DOXYGEN_SHOULD_IGNORE_THIS -/* Make sure the types really have the right sizes */ -#define PHYSFS_COMPILE_TIME_ASSERT(name, x) \ - typedef int PHYSFS_dummy_ ## name[(x) * 2 - 1] - -PHYSFS_COMPILE_TIME_ASSERT(uint8, sizeof(PHYSFS_uint8) == 1); -PHYSFS_COMPILE_TIME_ASSERT(sint8, sizeof(PHYSFS_sint8) == 1); -PHYSFS_COMPILE_TIME_ASSERT(uint16, sizeof(PHYSFS_uint16) == 2); -PHYSFS_COMPILE_TIME_ASSERT(sint16, sizeof(PHYSFS_sint16) == 2); -PHYSFS_COMPILE_TIME_ASSERT(uint32, sizeof(PHYSFS_uint32) == 4); -PHYSFS_COMPILE_TIME_ASSERT(sint32, sizeof(PHYSFS_sint32) == 4); - -#ifndef PHYSFS_NO_64BIT_SUPPORT -PHYSFS_COMPILE_TIME_ASSERT(uint64, sizeof(PHYSFS_uint64) == 8); -PHYSFS_COMPILE_TIME_ASSERT(sint64, sizeof(PHYSFS_sint64) == 8); -#endif - -#undef PHYSFS_COMPILE_TIME_ASSERT - -#endif /* DOXYGEN_SHOULD_IGNORE_THIS */ - - -/** - * \struct PHYSFS_File - * \brief A PhysicsFS file handle. - * - * You get a pointer to one of these when you open a file for reading, - * writing, or appending via PhysicsFS. - * - * As you can see from the lack of meaningful fields, you should treat this - * as opaque data. Don't try to manipulate the file handle, just pass the - * pointer you got, unmolested, to various PhysicsFS APIs. - * - * \sa PHYSFS_openRead - * \sa PHYSFS_openWrite - * \sa PHYSFS_openAppend - * \sa PHYSFS_close - * \sa PHYSFS_read - * \sa PHYSFS_write - * \sa PHYSFS_seek - * \sa PHYSFS_tell - * \sa PHYSFS_eof - * \sa PHYSFS_setBuffer - * \sa PHYSFS_flush - */ -typedef struct -{ - void *opaque; /**< That's all you get. Don't touch. */ -} PHYSFS_File; - - -/** - * \def PHYSFS_file - * \brief 1.0 API compatibility define. - * - * PHYSFS_file is identical to PHYSFS_File. This #define is here for backwards - * compatibility with the 1.0 API, which had an inconsistent capitalization - * convention in this case. New code should use PHYSFS_File, as this #define - * may go away someday. - * - * \sa PHYSFS_File - */ -#define PHYSFS_file PHYSFS_File - - -/** - * \struct PHYSFS_ArchiveInfo - * \brief Information on various PhysicsFS-supported archives. - * - * This structure gives you details on what sort of archives are supported - * by this implementation of PhysicsFS. Archives tend to be things like - * ZIP files and such. - * - * \warning Not all binaries are created equal! PhysicsFS can be built with - * or without support for various archives. You can check with - * PHYSFS_supportedArchiveTypes() to see if your archive type is - * supported. - * - * \sa PHYSFS_supportedArchiveTypes - */ -typedef struct -{ - const char *extension; /**< Archive file extension: "ZIP", for example. */ - const char *description; /**< Human-readable archive description. */ - const char *author; /**< Person who did support for this archive. */ - const char *url; /**< URL related to this archive */ -} PHYSFS_ArchiveInfo; - - -/** - * \struct PHYSFS_Version - * \brief Information the version of PhysicsFS in use. - * - * Represents the library's version as three levels: major revision - * (increments with massive changes, additions, and enhancements), - * minor revision (increments with backwards-compatible changes to the - * major revision), and patchlevel (increments with fixes to the minor - * revision). - * - * \sa PHYSFS_VERSION - * \sa PHYSFS_getLinkedVersion - */ -typedef struct -{ - PHYSFS_uint8 major; /**< major revision */ - PHYSFS_uint8 minor; /**< minor revision */ - PHYSFS_uint8 patch; /**< patchlevel */ -} PHYSFS_Version; - -#ifndef DOXYGEN_SHOULD_IGNORE_THIS -#define PHYSFS_VER_MAJOR 1 -#define PHYSFS_VER_MINOR 1 -#define PHYSFS_VER_PATCH 1 -#endif /* DOXYGEN_SHOULD_IGNORE_THIS */ - - -/* PhysicsFS state stuff ... */ - -/** - * \def PHYSFS_VERSION(x) - * \brief Macro to determine PhysicsFS version program was compiled against. - * - * This macro fills in a PHYSFS_Version structure with the version of the - * library you compiled against. This is determined by what header the - * compiler uses. Note that if you dynamically linked the library, you might - * have a slightly newer or older version at runtime. That version can be - * determined with PHYSFS_getLinkedVersion(), which, unlike PHYSFS_VERSION, - * is not a macro. - * - * \param x A pointer to a PHYSFS_Version struct to initialize. - * - * \sa PHYSFS_Version - * \sa PHYSFS_getLinkedVersion - */ -#define PHYSFS_VERSION(x) \ -{ \ - (x)->major = PHYSFS_VER_MAJOR; \ - (x)->minor = PHYSFS_VER_MINOR; \ - (x)->patch = PHYSFS_VER_PATCH; \ -} - - -/** - * \fn void PHYSFS_getLinkedVersion(PHYSFS_Version *ver) - * \brief Get the version of PhysicsFS that is linked against your program. - * - * If you are using a shared library (DLL) version of PhysFS, then it is - * possible that it will be different than the version you compiled against. - * - * This is a real function; the macro PHYSFS_VERSION tells you what version - * of PhysFS you compiled against: - * - * \code - * PHYSFS_Version compiled; - * PHYSFS_Version linked; - * - * PHYSFS_VERSION(&compiled); - * PHYSFS_getLinkedVersion(&linked); - * printf("We compiled against PhysFS version %d.%d.%d ...\n", - * compiled.major, compiled.minor, compiled.patch); - * printf("But we linked against PhysFS version %d.%d.%d.\n", - * linked.major, linked.minor, linked.patch); - * \endcode - * - * This function may be called safely at any time, even before PHYSFS_init(). - * - * \sa PHYSFS_VERSION - */ -__EXPORT__ void PHYSFS_getLinkedVersion(PHYSFS_Version *ver); - - -/** - * \fn int PHYSFS_init(const char *argv0) - * \brief Initialize the PhysicsFS library. - * - * This must be called before any other PhysicsFS function. - * - * This should be called prior to any attempts to change your process's - * current working directory. - * - * \param argv0 the argv[0] string passed to your program's mainline. - * This may be NULL on most platforms (such as ones without a - * standard main() function), but you should always try to pass - * something in here. Unix-like systems such as Linux _need_ to - * pass argv[0] from main() in here. - * \return nonzero on success, zero on error. Specifics of the error can be - * gleaned from PHYSFS_getLastError(). - * - * \sa PHYSFS_deinit - * \sa PHYSFS_isInit - */ -__EXPORT__ int PHYSFS_init(const char *argv0); - - -/** - * \fn int PHYSFS_deinit(void) - * \brief Deinitialize the PhysicsFS library. - * - * This closes any files opened via PhysicsFS, blanks the search/write paths, - * frees memory, and invalidates all of your file handles. - * - * Note that this call can FAIL if there's a file open for writing that - * refuses to close (for example, the underlying operating system was - * buffering writes to network filesystem, and the fileserver has crashed, - * or a hard drive has failed, etc). It is usually best to close all write - * handles yourself before calling this function, so that you can gracefully - * handle a specific failure. - * - * Once successfully deinitialized, PHYSFS_init() can be called again to - * restart the subsystem. All defaults API states are restored at this - * point. - * - * \return nonzero on success, zero on error. Specifics of the error can be - * gleaned from PHYSFS_getLastError(). If failure, state of PhysFS is - * undefined, and probably badly screwed up. - * - * \sa PHYSFS_init - * \sa PHYSFS_isInit - */ -__EXPORT__ int PHYSFS_deinit(void); - - -/** - * \fn const PHYSFS_ArchiveInfo **PHYSFS_supportedArchiveTypes(void) - * \brief Get a list of supported archive types. - * - * Get a list of archive types supported by this implementation of PhysicFS. - * These are the file formats usable for search path entries. This is for - * informational purposes only. Note that the extension listed is merely - * convention: if we list "ZIP", you can open a PkZip-compatible archive - * with an extension of "XYZ", if you like. - * - * The returned value is an array of pointers to PHYSFS_ArchiveInfo structures, - * with a NULL entry to signify the end of the list: - * - * \code - * PHYSFS_ArchiveInfo **i; - * - * for (i = PHYSFS_supportedArchiveTypes(); *i != NULL; i++) - * { - * printf("Supported archive: [%s], which is [%s].\n", - * i->extension, i->description); - * } - * \endcode - * - * The return values are pointers to static internal memory, and should - * be considered READ ONLY, and never freed. - * - * \return READ ONLY Null-terminated array of READ ONLY structures. - */ -__EXPORT__ const PHYSFS_ArchiveInfo **PHYSFS_supportedArchiveTypes(void); - - -/** - * \fn void PHYSFS_freeList(void *listVar) - * \brief Deallocate resources of lists returned by PhysicsFS. - * - * Certain PhysicsFS functions return lists of information that are - * dynamically allocated. Use this function to free those resources. - * - * \param listVar List of information specified as freeable by this function. - * - * \sa PHYSFS_getCdRomDirs - * \sa PHYSFS_enumerateFiles - * \sa PHYSFS_getSearchPath - */ -__EXPORT__ void PHYSFS_freeList(void *listVar); - - -/** - * \fn const char *PHYSFS_getLastError(void) - * \brief Get human-readable error information. - * - * Get the last PhysicsFS error message as a human-readable, null-terminated - * string. This will be NULL if there's been no error since the last call to - * this function. The pointer returned by this call points to an internal - * buffer. Each thread has a unique error state associated with it, but each - * time a new error message is set, it will overwrite the previous one - * associated with that thread. It is safe to call this function at anytime, - * even before PHYSFS_init(). - * - * It is not wise to expect a specific string of characters here, since the - * error message may be localized into an unfamiliar language. These strings - * are meant to be passed on directly to the user. - * - * \return READ ONLY string of last error message. - */ -__EXPORT__ const char *PHYSFS_getLastError(void); - - -/** - * \fn const char *PHYSFS_getDirSeparator(void) - * \brief Get platform-dependent dir separator string. - * - * This returns "\\" on win32, "/" on Unix, and ":" on MacOS. It may be more - * than one character, depending on the platform, and your code should take - * that into account. Note that this is only useful for setting up the - * search/write paths, since access into those dirs always use '/' - * (platform-independent notation) to separate directories. This is also - * handy for getting platform-independent access when using stdio calls. - * - * \return READ ONLY null-terminated string of platform's dir separator. - */ -__EXPORT__ const char *PHYSFS_getDirSeparator(void); - - -/** - * \fn void PHYSFS_permitSymbolicLinks(int allow) - * \brief Enable or disable following of symbolic links. - * - * Some physical filesystems and archives contain files that are just pointers - * to other files. On the physical filesystem, opening such a link will - * (transparently) open the file that is pointed to. - * - * By default, PhysicsFS will check if a file is really a symlink during open - * calls and fail if it is. Otherwise, the link could take you outside the - * write and search paths, and compromise security. - * - * If you want to take that risk, call this function with a non-zero parameter. - * Note that this is more for sandboxing a program's scripting language, in - * case untrusted scripts try to compromise the system. Generally speaking, - * a user could very well have a legitimate reason to set up a symlink, so - * unless you feel there's a specific danger in allowing them, you should - * permit them. - * - * Symlinks are only explicitly checked when dealing with filenames - * in platform-independent notation. That is, when setting up your - * search and write paths, etc, symlinks are never checked for. - * - * Symbolic link permission can be enabled or disabled at any time after - * you've called PHYSFS_init(), and is disabled by default. - * - * \param allow nonzero to permit symlinks, zero to deny linking. - * - * \sa PHYSFS_symbolicLinksPermitted - */ -__EXPORT__ void PHYSFS_permitSymbolicLinks(int allow); - - -/* !!! FIXME: const this? */ -/** - * \fn char **PHYSFS_getCdRomDirs(void) - * \brief Get an array of paths to available CD-ROM drives. - * - * The dirs returned are platform-dependent ("D:\" on Win32, "/cdrom" or - * whatnot on Unix). Dirs are only returned if there is a disc ready and - * accessible in the drive. So if you've got two drives (D: and E:), and only - * E: has a disc in it, then that's all you get. If the user inserts a disc - * in D: and you call this function again, you get both drives. If, on a - * Unix box, the user unmounts a disc and remounts it elsewhere, the next - * call to this function will reflect that change. - * - * This function refers to "CD-ROM" media, but it really means "inserted disc - * media," such as DVD-ROM, HD-DVD, CDRW, and Blu-Ray discs. It looks for - * filesystems, and as such won't report an audio CD, unless there's a - * mounted filesystem track on it. - * - * The returned value is an array of strings, with a NULL entry to signify the - * end of the list: - * - * \code - * char **cds = PHYSFS_getCdRomDirs(); - * char **i; - * - * for (i = cds; *i != NULL; i++) - * printf("cdrom dir [%s] is available.\n", *i); - * - * PHYSFS_freeList(cds); - * \endcode - * - * This call may block while drives spin up. Be forewarned. - * - * When you are done with the returned information, you may dispose of the - * resources by calling PHYSFS_freeList() with the returned pointer. - * - * \return Null-terminated array of null-terminated strings. - * - * \sa PHYSFS_getCdRomDirsCallback - */ -__EXPORT__ char **PHYSFS_getCdRomDirs(void); - - -/** - * \fn const char *PHYSFS_getBaseDir(void) - * \brief Get the path where the application resides. - * - * Helper function. - * - * Get the "base dir". This is the directory where the application was run - * from, which is probably the installation directory, and may or may not - * be the process's current working directory. - * - * You should probably use the base dir in your search path. - * - * \return READ ONLY string of base dir in platform-dependent notation. - * - * \sa PHYSFS_getUserDir - */ -__EXPORT__ const char *PHYSFS_getBaseDir(void); - - -/** - * \fn const char *PHYSFS_getUserDir(void) - * \brief Get the path where user's home directory resides. - * - * Helper function. - * - * Get the "user dir". This is meant to be a suggestion of where a specific - * user of the system can store files. On Unix, this is her home directory. - * On systems with no concept of multiple home directories (MacOS, win95), - * this will default to something like "C:\mybasedir\users\username" - * where "username" will either be the login name, or "default" if the - * platform doesn't support multiple users, either. - * - * You should probably use the user dir as the basis for your write dir, and - * also put it near the beginning of your search path. - * - * \return READ ONLY string of user dir in platform-dependent notation. - * - * \sa PHYSFS_getBaseDir - */ -__EXPORT__ const char *PHYSFS_getUserDir(void); - - -/** - * \fn const char *PHYSFS_getWriteDir(void) - * \brief Get path where PhysicsFS will allow file writing. - * - * Get the current write dir. The default write dir is NULL. - * - * \return READ ONLY string of write dir in platform-dependent notation, - * OR NULL IF NO WRITE PATH IS CURRENTLY SET. - * - * \sa PHYSFS_setWriteDir - */ -__EXPORT__ const char *PHYSFS_getWriteDir(void); - - -/** - * \fn int PHYSFS_setWriteDir(const char *newDir) - * \brief Tell PhysicsFS where it may write files. - * - * Set a new write dir. This will override the previous setting. - * - * This call will fail (and fail to change the write dir) if the current - * write dir still has files open in it. - * - * \param newDir The new directory to be the root of the write dir, - * specified in platform-dependent notation. Setting to NULL - * disables the write dir, so no files can be opened for - * writing via PhysicsFS. - * \return non-zero on success, zero on failure. All attempts to open a file - * for writing via PhysicsFS will fail until this call succeeds. - * Specifics of the error can be gleaned from PHYSFS_getLastError(). - * - * \sa PHYSFS_getWriteDir - */ -__EXPORT__ int PHYSFS_setWriteDir(const char *newDir); - - -/** - * \fn int PHYSFS_addToSearchPath(const char *newDir, int appendToPath) - * \brief Add an archive or directory to the search path. - * - * This is a legacy call in PhysicsFS 2.0, equivalent to: - * PHYSFS_mount(newDir, NULL, appendToPath); - * - * You must use this and not PHYSFS_mount if binary compatibility with - * PhysicsFS 1.0 is important (which it may not be for many people). - * - * \sa PHYSFS_mount - * \sa PHYSFS_removeFromSearchPath - * \sa PHYSFS_getSearchPath - */ -__EXPORT__ int PHYSFS_addToSearchPath(const char *newDir, int appendToPath); - - -/** - * \fn int PHYSFS_removeFromSearchPath(const char *oldDir) - * \brief Remove a directory or archive from the search path. - * - * This must be a (case-sensitive) match to a dir or archive already in the - * search path, specified in platform-dependent notation. - * - * This call will fail (and fail to remove from the path) if the element still - * has files open in it. - * - * \param oldDir dir/archive to remove. - * \return nonzero on success, zero on failure. - * Specifics of the error can be gleaned from PHYSFS_getLastError(). - * - * \sa PHYSFS_addToSearchPath - * \sa PHYSFS_getSearchPath - */ -__EXPORT__ int PHYSFS_removeFromSearchPath(const char *oldDir); - - -/** - * \fn char **PHYSFS_getSearchPath(void) - * \brief Get the current search path. - * - * The default search path is an empty list. - * - * The returned value is an array of strings, with a NULL entry to signify the - * end of the list: - * - * \code - * char **i; - * - * for (i = PHYSFS_getSearchPath(); *i != NULL; i++) - * printf("[%s] is in the search path.\n", *i); - * \endcode - * - * When you are done with the returned information, you may dispose of the - * resources by calling PHYSFS_freeList() with the returned pointer. - * - * \return Null-terminated array of null-terminated strings. NULL if there - * was a problem (read: OUT OF MEMORY). - * - * \sa PHYSFS_getSearchPathCallback - * \sa PHYSFS_addToSearchPath - * \sa PHYSFS_removeFromSearchPath - */ -__EXPORT__ char **PHYSFS_getSearchPath(void); - - -/** - * \fn int PHYSFS_setSaneConfig(const char *organization, const char *appName, const char *archiveExt, int includeCdRoms, int archivesFirst) - * \brief Set up sane, default paths. - * - * Helper function. - * - * The write dir will be set to "userdir/.organization/appName", which is - * created if it doesn't exist. - * - * The above is sufficient to make sure your program's configuration directory - * is separated from other clutter, and platform-independent. The period - * before "mygame" even hides the directory on Unix systems. - * - * The search path will be: - * - * - The Write Dir (created if it doesn't exist) - * - The Base Dir (PHYSFS_getBaseDir()) - * - All found CD-ROM dirs (optionally) - * - * These directories are then searched for files ending with the extension - * (archiveExt), which, if they are valid and supported archives, will also - * be added to the search path. If you specified "PKG" for (archiveExt), and - * there's a file named data.PKG in the base dir, it'll be checked. Archives - * can either be appended or prepended to the search path in alphabetical - * order, regardless of which directories they were found in. - * - * All of this can be accomplished from the application, but this just does it - * all for you. Feel free to add more to the search path manually, too. - * - * \param organization Name of your company/group/etc to be used as a - * dirname, so keep it small, and no-frills. - * - * \param appName Program-specific name of your program, to separate it - * from other programs using PhysicsFS. - * - * \param archiveExt File extension used by your program to specify an - * archive. For example, Quake 3 uses "pk3", even though - * they are just zipfiles. Specify NULL to not dig out - * archives automatically. Do not specify the '.' char; - * If you want to look for ZIP files, specify "ZIP" and - * not ".ZIP" ... the archive search is case-insensitive. - * - * \param includeCdRoms Non-zero to include CD-ROMs in the search path, and - * (if (archiveExt) != NULL) search them for archives. - * This may cause a significant amount of blocking - * while discs are accessed, and if there are no discs - * in the drive (or even not mounted on Unix systems), - * then they may not be made available anyhow. You may - * want to specify zero and handle the disc setup - * yourself. - * - * \param archivesFirst Non-zero to prepend the archives to the search path. - * Zero to append them. Ignored if !(archiveExt). - * - * \return nonzero on success, zero on error. Specifics of the error can be - * gleaned from PHYSFS_getLastError(). - */ -__EXPORT__ int PHYSFS_setSaneConfig(const char *organization, - const char *appName, - const char *archiveExt, - int includeCdRoms, - int archivesFirst); - - -/* Directory management stuff ... */ - -/** - * \fn int PHYSFS_mkdir(const char *dirName) - * \brief Create a directory. - * - * This is specified in platform-independent notation in relation to the - * write dir. All missing parent directories are also created if they - * don't exist. - * - * So if you've got the write dir set to "C:\mygame\writedir" and call - * PHYSFS_mkdir("downloads/maps") then the directories - * "C:\mygame\writedir\downloads" and "C:\mygame\writedir\downloads\maps" - * will be created if possible. If the creation of "maps" fails after we - * have successfully created "downloads", then the function leaves the - * created directory behind and reports failure. - * - * \param dirName New dir to create. - * \return nonzero on success, zero on error. Specifics of the error can be - * gleaned from PHYSFS_getLastError(). - * - * \sa PHYSFS_delete - */ -__EXPORT__ int PHYSFS_mkdir(const char *dirName); - - -/** - * \fn int PHYSFS_delete(const char *filename) - * \brief Delete a file or directory. - * - * (filename) is specified in platform-independent notation in relation to the - * write dir. - * - * A directory must be empty before this call can delete it. - * - * Deleting a symlink will remove the link, not what it points to, regardless - * of whether you "permitSymLinks" or not. - * - * So if you've got the write dir set to "C:\mygame\writedir" and call - * PHYSFS_delete("downloads/maps/level1.map") then the file - * "C:\mygame\writedir\downloads\maps\level1.map" is removed from the - * physical filesystem, if it exists and the operating system permits the - * deletion. - * - * Note that on Unix systems, deleting a file may be successful, but the - * actual file won't be removed until all processes that have an open - * filehandle to it (including your program) close their handles. - * - * Chances are, the bits that make up the file still exist, they are just - * made available to be written over at a later point. Don't consider this - * a security method or anything. :) - * - * \param filename Filename to delete. - * \return nonzero on success, zero on error. Specifics of the error can be - * gleaned from PHYSFS_getLastError(). - */ -__EXPORT__ int PHYSFS_delete(const char *filename); - - -/** - * \fn const char *PHYSFS_getRealDir(const char *filename) - * \brief Figure out where in the search path a file resides. - * - * The file is specified in platform-independent notation. The returned - * filename will be the element of the search path where the file was found, - * which may be a directory, or an archive. Even if there are multiple - * matches in different parts of the search path, only the first one found - * is used, just like when opening a file. - * - * So, if you look for "maps/level1.map", and C:\\mygame is in your search - * path and C:\\mygame\\maps\\level1.map exists, then "C:\mygame" is returned. - * - * If a any part of a match is a symbolic link, and you've not explicitly - * permitted symlinks, then it will be ignored, and the search for a match - * will continue. - * - * If you specify a fake directory that only exists as a mount point, it'll - * be associated with the first archive mounted there, even though that - * directory isn't necessarily contained in a real archive. - * - * \param filename file to look for. - * \return READ ONLY string of element of search path containing the - * the file in question. NULL if not found. - */ -__EXPORT__ const char *PHYSFS_getRealDir(const char *filename); - - -/** - * \fn char **PHYSFS_enumerateFiles(const char *dir) - * \brief Get a file listing of a search path's directory. - * - * Matching directories are interpolated. That is, if "C:\mydir" is in the - * search path and contains a directory "savegames" that contains "x.sav", - * "y.sav", and "z.sav", and there is also a "C:\userdir" in the search path - * that has a "savegames" subdirectory with "w.sav", then the following code: - * - * \code - * char **rc = PHYSFS_enumerateFiles("savegames"); - * char **i; - * - * for (i = rc; *i != NULL; i++) - * printf(" * We've got [%s].\n", *i); - * - * PHYSFS_freeList(rc); - * \endcode - * - * ...will print: - * - * \verbatim - * We've got [x.sav]. - * We've got [y.sav]. - * We've got [z.sav]. - * We've got [w.sav].\endverbatim - * - * Feel free to sort the list however you like. We only promise there will - * be no duplicates, but not what order the final list will come back in. - * - * Don't forget to call PHYSFS_freeList() with the return value from this - * function when you are done with it. - * - * \param dir directory in platform-independent notation to enumerate. - * \return Null-terminated array of null-terminated strings. - * - * \sa PHYSFS_enumerateFilesCallback - */ -__EXPORT__ char **PHYSFS_enumerateFiles(const char *dir); - - -/** - * \fn int PHYSFS_exists(const char *fname) - * \brief Determine if a file exists in the search path. - * - * Reports true if there is an entry anywhere in the search path by the - * name of (fname). - * - * Note that entries that are symlinks are ignored if - * PHYSFS_permitSymbolicLinks(1) hasn't been called, so you - * might end up further down in the search path than expected. - * - * \param fname filename in platform-independent notation. - * \return non-zero if filename exists. zero otherwise. - * - * \sa PHYSFS_isDirectory - * \sa PHYSFS_isSymbolicLink - */ -__EXPORT__ int PHYSFS_exists(const char *fname); - - -/** - * \fn int PHYSFS_isDirectory(const char *fname) - * \brief Determine if a file in the search path is really a directory. - * - * Determine if the first occurence of (fname) in the search path is - * really a directory entry. - * - * Note that entries that are symlinks are ignored if - * PHYSFS_permitSymbolicLinks(1) hasn't been called, so you - * might end up further down in the search path than expected. - * - * \param fname filename in platform-independent notation. - * \return non-zero if filename exists and is a directory. zero otherwise. - * - * \sa PHYSFS_exists - * \sa PHYSFS_isSymbolicLink - */ -__EXPORT__ int PHYSFS_isDirectory(const char *fname); - - -/** - * \fn int PHYSFS_isSymbolicLink(const char *fname) - * \brief Determine if a file in the search path is really a symbolic link. - * - * Determine if the first occurence of (fname) in the search path is - * really a symbolic link. - * - * Note that entries that are symlinks are ignored if - * PHYSFS_permitSymbolicLinks(1) hasn't been called, and as such, - * this function will always return 0 in that case. - * - * \param fname filename in platform-independent notation. - * \return non-zero if filename exists and is a symlink. zero otherwise. - * - * \sa PHYSFS_exists - * \sa PHYSFS_isDirectory - */ -__EXPORT__ int PHYSFS_isSymbolicLink(const char *fname); - - -/** - * \fn PHYSFS_sint64 PHYSFS_getLastModTime(const char *filename) - * \brief Get the last modification time of a file. - * - * The modtime is returned as a number of seconds since the epoch - * (Jan 1, 1970). The exact derivation and accuracy of this time depends on - * the particular archiver. If there is no reasonable way to obtain this - * information for a particular archiver, or there was some sort of error, - * this function returns (-1). - * - * \param filename filename to check, in platform-independent notation. - * \return last modified time of the file. -1 if it can't be determined. - */ -__EXPORT__ PHYSFS_sint64 PHYSFS_getLastModTime(const char *filename); - - -/* i/o stuff... */ - -/** - * \fn PHYSFS_File *PHYSFS_openWrite(const char *filename) - * \brief Open a file for writing. - * - * Open a file for writing, in platform-independent notation and in relation - * to the write dir as the root of the writable filesystem. The specified - * file is created if it doesn't exist. If it does exist, it is truncated to - * zero bytes, and the writing offset is set to the start. - * - * Note that entries that are symlinks are ignored if - * PHYSFS_permitSymbolicLinks(1) hasn't been called, and opening a - * symlink with this function will fail in such a case. - * - * \param filename File to open. - * \return A valid PhysicsFS filehandle on success, NULL on error. Specifics - * of the error can be gleaned from PHYSFS_getLastError(). - * - * \sa PHYSFS_openRead - * \sa PHYSFS_openAppend - * \sa PHYSFS_write - * \sa PHYSFS_close - */ -__EXPORT__ PHYSFS_File *PHYSFS_openWrite(const char *filename); - - -/** - * \fn PHYSFS_File *PHYSFS_openAppend(const char *filename) - * \brief Open a file for appending. - * - * Open a file for writing, in platform-independent notation and in relation - * to the write dir as the root of the writable filesystem. The specified - * file is created if it doesn't exist. If it does exist, the writing offset - * is set to the end of the file, so the first write will be the byte after - * the end. - * - * Note that entries that are symlinks are ignored if - * PHYSFS_permitSymbolicLinks(1) hasn't been called, and opening a - * symlink with this function will fail in such a case. - * - * \param filename File to open. - * \return A valid PhysicsFS filehandle on success, NULL on error. Specifics - * of the error can be gleaned from PHYSFS_getLastError(). - * - * \sa PHYSFS_openRead - * \sa PHYSFS_openWrite - * \sa PHYSFS_write - * \sa PHYSFS_close - */ -__EXPORT__ PHYSFS_File *PHYSFS_openAppend(const char *filename); - - -/** - * \fn PHYSFS_File *PHYSFS_openRead(const char *filename) - * \brief Open a file for reading. - * - * Open a file for reading, in platform-independent notation. The search path - * is checked one at a time until a matching file is found, in which case an - * abstract filehandle is associated with it, and reading may be done. - * The reading offset is set to the first byte of the file. - * - * Note that entries that are symlinks are ignored if - * PHYSFS_permitSymbolicLinks(1) hasn't been called, and opening a - * symlink with this function will fail in such a case. - * - * \param filename File to open. - * \return A valid PhysicsFS filehandle on success, NULL on error. Specifics - * of the error can be gleaned from PHYSFS_getLastError(). - * - * \sa PHYSFS_openWrite - * \sa PHYSFS_openAppend - * \sa PHYSFS_read - * \sa PHYSFS_close - */ -__EXPORT__ PHYSFS_File *PHYSFS_openRead(const char *filename); - - -/** - * \fn int PHYSFS_close(PHYSFS_File *handle) - * \brief Close a PhysicsFS filehandle. - * - * This call is capable of failing if the operating system was buffering - * writes to the physical media, and, now forced to write those changes to - * physical media, can not store the data for some reason. In such a case, - * the filehandle stays open. A well-written program should ALWAYS check the - * return value from the close call in addition to every writing call! - * - * \param handle handle returned from PHYSFS_open*(). - * \return nonzero on success, zero on error. Specifics of the error can be - * gleaned from PHYSFS_getLastError(). - * - * \sa PHYSFS_openRead - * \sa PHYSFS_openWrite - * \sa PHYSFS_openAppend - */ -__EXPORT__ int PHYSFS_close(PHYSFS_File *handle); - - -/** - * \fn PHYSFS_sint64 PHYSFS_read(PHYSFS_File *handle, void *buffer, PHYSFS_uint32 objSize, PHYSFS_uint32 objCount) - * \brief Read data from a PhysicsFS filehandle - * - * The file must be opened for reading. - * - * \param handle handle returned from PHYSFS_openRead(). - * \param buffer buffer to store read data into. - * \param objSize size in bytes of objects being read from (handle). - * \param objCount number of (objSize) objects to read from (handle). - * \return number of objects read. PHYSFS_getLastError() can shed light on - * the reason this might be < (objCount), as can PHYSFS_eof(). - * -1 if complete failure. - * - * \sa PHYSFS_eof - */ -__EXPORT__ PHYSFS_sint64 PHYSFS_read(PHYSFS_File *handle, - void *buffer, - PHYSFS_uint32 objSize, - PHYSFS_uint32 objCount); - -/** - * \fn PHYSFS_sint64 PHYSFS_write(PHYSFS_File *handle, const void *buffer, PHYSFS_uint32 objSize, PHYSFS_uint32 objCount) - * \brief Write data to a PhysicsFS filehandle - * - * The file must be opened for writing. - * - * \param handle retval from PHYSFS_openWrite() or PHYSFS_openAppend(). - * \param buffer buffer to store read data into. - * \param objSize size in bytes of objects being read from (handle). - * \param objCount number of (objSize) objects to read from (handle). - * \return number of objects written. PHYSFS_getLastError() can shed light on - * the reason this might be < (objCount). -1 if complete failure. - */ -__EXPORT__ PHYSFS_sint64 PHYSFS_write(PHYSFS_File *handle, - const void *buffer, - PHYSFS_uint32 objSize, - PHYSFS_uint32 objCount); - - -/* File position stuff... */ - -/** - * \fn int PHYSFS_eof(PHYSFS_File *handle) - * \brief Check for end-of-file state on a PhysicsFS filehandle. - * - * Determine if the end of file has been reached in a PhysicsFS filehandle. - * - * \param handle handle returned from PHYSFS_openRead(). - * \return nonzero if EOF, zero if not. - * - * \sa PHYSFS_read - * \sa PHYSFS_tell - */ -__EXPORT__ int PHYSFS_eof(PHYSFS_File *handle); - - -/** - * \fn PHYSFS_sint64 PHYSFS_tell(PHYSFS_File *handle) - * \brief Determine current position within a PhysicsFS filehandle. - * - * \param handle handle returned from PHYSFS_open*(). - * \return offset in bytes from start of file. -1 if error occurred. - * Specifics of the error can be gleaned from PHYSFS_getLastError(). - * - * \sa PHYSFS_seek - */ -__EXPORT__ PHYSFS_sint64 PHYSFS_tell(PHYSFS_File *handle); - - -/** - * \fn int PHYSFS_seek(PHYSFS_File *handle, PHYSFS_uint64 pos) - * \brief Seek to a new position within a PhysicsFS filehandle. - * - * The next read or write will occur at that place. Seeking past the - * beginning or end of the file is not allowed, and causes an error. - * - * \param handle handle returned from PHYSFS_open*(). - * \param pos number of bytes from start of file to seek to. - * \return nonzero on success, zero on error. Specifics of the error can be - * gleaned from PHYSFS_getLastError(). - * - * \sa PHYSFS_tell - */ -__EXPORT__ int PHYSFS_seek(PHYSFS_File *handle, PHYSFS_uint64 pos); - - -/** - * \fn PHYSFS_sint64 PHYSFS_fileLength(PHYSFS_File *handle) - * \brief Get total length of a file in bytes. - * - * Note that if the file size can't be determined (since the archive is - * "streamed" or whatnot) than this will report (-1). Also note that if - * another process/thread is writing to this file at the same time, then - * the information this function supplies could be incorrect before you - * get it. Use with caution, or better yet, don't use at all. - * - * \param handle handle returned from PHYSFS_open*(). - * \return size in bytes of the file. -1 if can't be determined. - * - * \sa PHYSFS_tell - * \sa PHYSFS_seek - */ -__EXPORT__ PHYSFS_sint64 PHYSFS_fileLength(PHYSFS_File *handle); - - -/* Buffering stuff... */ - -/** - * \fn int PHYSFS_setBuffer(PHYSFS_File *handle, PHYSFS_uint64 bufsize) - * \brief Set up buffering for a PhysicsFS file handle. - * - * Define an i/o buffer for a file handle. A memory block of (bufsize) bytes - * will be allocated and associated with (handle). - * - * For files opened for reading, up to (bufsize) bytes are read from (handle) - * and stored in the internal buffer. Calls to PHYSFS_read() will pull - * from this buffer until it is empty, and then refill it for more reading. - * Note that compressed files, like ZIP archives, will decompress while - * buffering, so this can be handy for offsetting CPU-intensive operations. - * The buffer isn't filled until you do your next read. - * - * For files opened for writing, data will be buffered to memory until the - * buffer is full or the buffer is flushed. Closing a handle implicitly - * causes a flush...check your return values! - * - * Seeking, etc transparently accounts for buffering. - * - * You can resize an existing buffer by calling this function more than once - * on the same file. Setting the buffer size to zero will free an existing - * buffer. - * - * PhysicsFS file handles are unbuffered by default. - * - * Please check the return value of this function! Failures can include - * not being able to seek backwards in a read-only file when removing the - * buffer, not being able to allocate the buffer, and not being able to - * flush the buffer to disk, among other unexpected problems. - * - * \param handle handle returned from PHYSFS_open*(). - * \param bufsize size, in bytes, of buffer to allocate. - * \return nonzero if successful, zero on error. - * - * \sa PHYSFS_flush - * \sa PHYSFS_read - * \sa PHYSFS_write - * \sa PHYSFS_close - */ -__EXPORT__ int PHYSFS_setBuffer(PHYSFS_File *handle, PHYSFS_uint64 bufsize); - - -/** - * \fn int PHYSFS_flush(PHYSFS_File *handle) - * \brief Flush a buffered PhysicsFS file handle. - * - * For buffered files opened for writing, this will put the current contents - * of the buffer to disk and flag the buffer as empty if possible. - * - * For buffered files opened for reading or unbuffered files, this is a safe - * no-op, and will report success. - * - * \param handle handle returned from PHYSFS_open*(). - * \return nonzero if successful, zero on error. - * - * \sa PHYSFS_setBuffer - * \sa PHYSFS_close - */ -__EXPORT__ int PHYSFS_flush(PHYSFS_File *handle); - - -/* Byteorder stuff... */ - -/** - * \fn PHYSFS_sint16 PHYSFS_swapSLE16(PHYSFS_sint16 val) - * \brief Swap littleendian signed 16 to platform's native byte order. - * - * Take a 16-bit signed value in littleendian format and convert it to - * the platform's native byte order. - * - * \param val value to convert - * \return converted value. - */ -__EXPORT__ PHYSFS_sint16 PHYSFS_swapSLE16(PHYSFS_sint16 val); - - -/** - * \fn PHYSFS_uint16 PHYSFS_swapULE16(PHYSFS_uint16 val) - * \brief Swap littleendian unsigned 16 to platform's native byte order. - * - * Take a 16-bit unsigned value in littleendian format and convert it to - * the platform's native byte order. - * - * \param val value to convert - * \return converted value. - */ -__EXPORT__ PHYSFS_uint16 PHYSFS_swapULE16(PHYSFS_uint16 val); - -/** - * \fn PHYSFS_sint32 PHYSFS_swapSLE32(PHYSFS_sint32 val) - * \brief Swap littleendian signed 32 to platform's native byte order. - * - * Take a 32-bit signed value in littleendian format and convert it to - * the platform's native byte order. - * - * \param val value to convert - * \return converted value. - */ -__EXPORT__ PHYSFS_sint32 PHYSFS_swapSLE32(PHYSFS_sint32 val); - - -/** - * \fn PHYSFS_uint32 PHYSFS_swapULE32(PHYSFS_uint32 val) - * \brief Swap littleendian unsigned 32 to platform's native byte order. - * - * Take a 32-bit unsigned value in littleendian format and convert it to - * the platform's native byte order. - * - * \param val value to convert - * \return converted value. - */ -__EXPORT__ PHYSFS_uint32 PHYSFS_swapULE32(PHYSFS_uint32 val); - -/** - * \fn PHYSFS_sint64 PHYSFS_swapSLE64(PHYSFS_sint64 val) - * \brief Swap littleendian signed 64 to platform's native byte order. - * - * Take a 64-bit signed value in littleendian format and convert it to - * the platform's native byte order. - * - * \param val value to convert - * \return converted value. - * - * \warning Remember, PHYSFS_uint64 is only 32 bits on platforms without - * any sort of 64-bit support. - */ -__EXPORT__ PHYSFS_sint64 PHYSFS_swapSLE64(PHYSFS_sint64 val); - - -/** - * \fn PHYSFS_uint64 PHYSFS_swapULE64(PHYSFS_uint64 val) - * \brief Swap littleendian unsigned 64 to platform's native byte order. - * - * Take a 64-bit unsigned value in littleendian format and convert it to - * the platform's native byte order. - * - * \param val value to convert - * \return converted value. - * - * \warning Remember, PHYSFS_uint64 is only 32 bits on platforms without - * any sort of 64-bit support. - */ -__EXPORT__ PHYSFS_uint64 PHYSFS_swapULE64(PHYSFS_uint64 val); - - -/** - * \fn PHYSFS_sint16 PHYSFS_swapSBE16(PHYSFS_sint16 val) - * \brief Swap bigendian signed 16 to platform's native byte order. - * - * Take a 16-bit signed value in bigendian format and convert it to - * the platform's native byte order. - * - * \param val value to convert - * \return converted value. - */ -__EXPORT__ PHYSFS_sint16 PHYSFS_swapSBE16(PHYSFS_sint16 val); - - -/** - * \fn PHYSFS_uint16 PHYSFS_swapUBE16(PHYSFS_uint16 val) - * \brief Swap bigendian unsigned 16 to platform's native byte order. - * - * Take a 16-bit unsigned value in bigendian format and convert it to - * the platform's native byte order. - * - * \param val value to convert - * \return converted value. - */ -__EXPORT__ PHYSFS_uint16 PHYSFS_swapUBE16(PHYSFS_uint16 val); - -/** - * \fn PHYSFS_sint32 PHYSFS_swapSBE32(PHYSFS_sint32 val) - * \brief Swap bigendian signed 32 to platform's native byte order. - * - * Take a 32-bit signed value in bigendian format and convert it to - * the platform's native byte order. - * - * \param val value to convert - * \return converted value. - */ -__EXPORT__ PHYSFS_sint32 PHYSFS_swapSBE32(PHYSFS_sint32 val); - - -/** - * \fn PHYSFS_uint32 PHYSFS_swapUBE32(PHYSFS_uint32 val) - * \brief Swap bigendian unsigned 32 to platform's native byte order. - * - * Take a 32-bit unsigned value in bigendian format and convert it to - * the platform's native byte order. - * - * \param val value to convert - * \return converted value. - */ -__EXPORT__ PHYSFS_uint32 PHYSFS_swapUBE32(PHYSFS_uint32 val); - - -/** - * \fn PHYSFS_sint64 PHYSFS_swapSBE64(PHYSFS_sint64 val) - * \brief Swap bigendian signed 64 to platform's native byte order. - * - * Take a 64-bit signed value in bigendian format and convert it to - * the platform's native byte order. - * - * \param val value to convert - * \return converted value. - * - * \warning Remember, PHYSFS_uint64 is only 32 bits on platforms without - * any sort of 64-bit support. - */ -__EXPORT__ PHYSFS_sint64 PHYSFS_swapSBE64(PHYSFS_sint64 val); - - -/** - * \fn PHYSFS_uint64 PHYSFS_swapUBE64(PHYSFS_uint64 val) - * \brief Swap bigendian unsigned 64 to platform's native byte order. - * - * Take a 64-bit unsigned value in bigendian format and convert it to - * the platform's native byte order. - * - * \param val value to convert - * \return converted value. - * - * \warning Remember, PHYSFS_uint64 is only 32 bits on platforms without - * any sort of 64-bit support. - */ -__EXPORT__ PHYSFS_uint64 PHYSFS_swapUBE64(PHYSFS_uint64 val); - - -/** - * \fn int PHYSFS_readSLE16(PHYSFS_File *file, PHYSFS_sint16 *val) - * \brief Read and convert a signed 16-bit littleendian value. - * - * Convenience function. Read a signed 16-bit littleendian value from a - * file and convert it to the platform's native byte order. - * - * \param file PhysicsFS file handle from which to read. - * \param val pointer to where value should be stored. - * \return zero on failure, non-zero on success. If successful, (*val) will - * store the result. On failure, you can find out what went wrong - * from PHYSFS_getLastError(). - */ -__EXPORT__ int PHYSFS_readSLE16(PHYSFS_File *file, PHYSFS_sint16 *val); - - -/** - * \fn int PHYSFS_readULE16(PHYSFS_File *file, PHYSFS_uint16 *val) - * \brief Read and convert an unsigned 16-bit littleendian value. - * - * Convenience function. Read an unsigned 16-bit littleendian value from a - * file and convert it to the platform's native byte order. - * - * \param file PhysicsFS file handle from which to read. - * \param val pointer to where value should be stored. - * \return zero on failure, non-zero on success. If successful, (*val) will - * store the result. On failure, you can find out what went wrong - * from PHYSFS_getLastError(). - * - */ -__EXPORT__ int PHYSFS_readULE16(PHYSFS_File *file, PHYSFS_uint16 *val); - - -/** - * \fn int PHYSFS_readSBE16(PHYSFS_File *file, PHYSFS_sint16 *val) - * \brief Read and convert a signed 16-bit bigendian value. - * - * Convenience function. Read a signed 16-bit bigendian value from a - * file and convert it to the platform's native byte order. - * - * \param file PhysicsFS file handle from which to read. - * \param val pointer to where value should be stored. - * \return zero on failure, non-zero on success. If successful, (*val) will - * store the result. On failure, you can find out what went wrong - * from PHYSFS_getLastError(). - */ -__EXPORT__ int PHYSFS_readSBE16(PHYSFS_File *file, PHYSFS_sint16 *val); - - -/** - * \fn int PHYSFS_readUBE16(PHYSFS_File *file, PHYSFS_uint16 *val) - * \brief Read and convert an unsigned 16-bit bigendian value. - * - * Convenience function. Read an unsigned 16-bit bigendian value from a - * file and convert it to the platform's native byte order. - * - * \param file PhysicsFS file handle from which to read. - * \param val pointer to where value should be stored. - * \return zero on failure, non-zero on success. If successful, (*val) will - * store the result. On failure, you can find out what went wrong - * from PHYSFS_getLastError(). - * - */ -__EXPORT__ int PHYSFS_readUBE16(PHYSFS_File *file, PHYSFS_uint16 *val); - - -/** - * \fn int PHYSFS_readSLE32(PHYSFS_File *file, PHYSFS_sint32 *val) - * \brief Read and convert a signed 32-bit littleendian value. - * - * Convenience function. Read a signed 32-bit littleendian value from a - * file and convert it to the platform's native byte order. - * - * \param file PhysicsFS file handle from which to read. - * \param val pointer to where value should be stored. - * \return zero on failure, non-zero on success. If successful, (*val) will - * store the result. On failure, you can find out what went wrong - * from PHYSFS_getLastError(). - */ -__EXPORT__ int PHYSFS_readSLE32(PHYSFS_File *file, PHYSFS_sint32 *val); - - -/** - * \fn int PHYSFS_readULE32(PHYSFS_File *file, PHYSFS_uint32 *val) - * \brief Read and convert an unsigned 32-bit littleendian value. - * - * Convenience function. Read an unsigned 32-bit littleendian value from a - * file and convert it to the platform's native byte order. - * - * \param file PhysicsFS file handle from which to read. - * \param val pointer to where value should be stored. - * \return zero on failure, non-zero on success. If successful, (*val) will - * store the result. On failure, you can find out what went wrong - * from PHYSFS_getLastError(). - * - */ -__EXPORT__ int PHYSFS_readULE32(PHYSFS_File *file, PHYSFS_uint32 *val); - - -/** - * \fn int PHYSFS_readSBE32(PHYSFS_File *file, PHYSFS_sint32 *val) - * \brief Read and convert a signed 32-bit bigendian value. - * - * Convenience function. Read a signed 32-bit bigendian value from a - * file and convert it to the platform's native byte order. - * - * \param file PhysicsFS file handle from which to read. - * \param val pointer to where value should be stored. - * \return zero on failure, non-zero on success. If successful, (*val) will - * store the result. On failure, you can find out what went wrong - * from PHYSFS_getLastError(). - */ -__EXPORT__ int PHYSFS_readSBE32(PHYSFS_File *file, PHYSFS_sint32 *val); - - -/** - * \fn int PHYSFS_readUBE32(PHYSFS_File *file, PHYSFS_uint32 *val) - * \brief Read and convert an unsigned 32-bit bigendian value. - * - * Convenience function. Read an unsigned 32-bit bigendian value from a - * file and convert it to the platform's native byte order. - * - * \param file PhysicsFS file handle from which to read. - * \param val pointer to where value should be stored. - * \return zero on failure, non-zero on success. If successful, (*val) will - * store the result. On failure, you can find out what went wrong - * from PHYSFS_getLastError(). - * - */ -__EXPORT__ int PHYSFS_readUBE32(PHYSFS_File *file, PHYSFS_uint32 *val); - - -/** - * \fn int PHYSFS_readSLE64(PHYSFS_File *file, PHYSFS_sint64 *val) - * \brief Read and convert a signed 64-bit littleendian value. - * - * Convenience function. Read a signed 64-bit littleendian value from a - * file and convert it to the platform's native byte order. - * - * \param file PhysicsFS file handle from which to read. - * \param val pointer to where value should be stored. - * \return zero on failure, non-zero on success. If successful, (*val) will - * store the result. On failure, you can find out what went wrong - * from PHYSFS_getLastError(). - * - * \warning Remember, PHYSFS_sint64 is only 32 bits on platforms without - * any sort of 64-bit support. - */ -__EXPORT__ int PHYSFS_readSLE64(PHYSFS_File *file, PHYSFS_sint64 *val); - - -/** - * \fn int PHYSFS_readULE64(PHYSFS_File *file, PHYSFS_uint64 *val) - * \brief Read and convert an unsigned 64-bit littleendian value. - * - * Convenience function. Read an unsigned 64-bit littleendian value from a - * file and convert it to the platform's native byte order. - * - * \param file PhysicsFS file handle from which to read. - * \param val pointer to where value should be stored. - * \return zero on failure, non-zero on success. If successful, (*val) will - * store the result. On failure, you can find out what went wrong - * from PHYSFS_getLastError(). - * - * \warning Remember, PHYSFS_uint64 is only 32 bits on platforms without - * any sort of 64-bit support. - */ -__EXPORT__ int PHYSFS_readULE64(PHYSFS_File *file, PHYSFS_uint64 *val); - - -/** - * \fn int PHYSFS_readSBE64(PHYSFS_File *file, PHYSFS_sint64 *val) - * \brief Read and convert a signed 64-bit bigendian value. - * - * Convenience function. Read a signed 64-bit bigendian value from a - * file and convert it to the platform's native byte order. - * - * \param file PhysicsFS file handle from which to read. - * \param val pointer to where value should be stored. - * \return zero on failure, non-zero on success. If successful, (*val) will - * store the result. On failure, you can find out what went wrong - * from PHYSFS_getLastError(). - * - * \warning Remember, PHYSFS_sint64 is only 32 bits on platforms without - * any sort of 64-bit support. - */ -__EXPORT__ int PHYSFS_readSBE64(PHYSFS_File *file, PHYSFS_sint64 *val); - - -/** - * \fn int PHYSFS_readUBE64(PHYSFS_File *file, PHYSFS_uint64 *val) - * \brief Read and convert an unsigned 64-bit bigendian value. - * - * Convenience function. Read an unsigned 64-bit bigendian value from a - * file and convert it to the platform's native byte order. - * - * \param file PhysicsFS file handle from which to read. - * \param val pointer to where value should be stored. - * \return zero on failure, non-zero on success. If successful, (*val) will - * store the result. On failure, you can find out what went wrong - * from PHYSFS_getLastError(). - * - * \warning Remember, PHYSFS_uint64 is only 32 bits on platforms without - * any sort of 64-bit support. - */ -__EXPORT__ int PHYSFS_readUBE64(PHYSFS_File *file, PHYSFS_uint64 *val); - - -/** - * \fn int PHYSFS_writeSLE16(PHYSFS_File *file, PHYSFS_sint16 val) - * \brief Convert and write a signed 16-bit littleendian value. - * - * Convenience function. Convert a signed 16-bit value from the platform's - * native byte order to littleendian and write it to a file. - * - * \param file PhysicsFS file handle to which to write. - * \param val Value to convert and write. - * \return zero on failure, non-zero on success. On failure, you can - * find out what went wrong from PHYSFS_getLastError(). - */ -__EXPORT__ int PHYSFS_writeSLE16(PHYSFS_File *file, PHYSFS_sint16 val); - - -/** - * \fn int PHYSFS_writeULE16(PHYSFS_File *file, PHYSFS_uint16 val) - * \brief Convert and write an unsigned 16-bit littleendian value. - * - * Convenience function. Convert an unsigned 16-bit value from the platform's - * native byte order to littleendian and write it to a file. - * - * \param file PhysicsFS file handle to which to write. - * \param val Value to convert and write. - * \return zero on failure, non-zero on success. On failure, you can - * find out what went wrong from PHYSFS_getLastError(). - */ -__EXPORT__ int PHYSFS_writeULE16(PHYSFS_File *file, PHYSFS_uint16 val); - - -/** - * \fn int PHYSFS_writeSBE16(PHYSFS_File *file, PHYSFS_sint16 val) - * \brief Convert and write a signed 16-bit bigendian value. - * - * Convenience function. Convert a signed 16-bit value from the platform's - * native byte order to bigendian and write it to a file. - * - * \param file PhysicsFS file handle to which to write. - * \param val Value to convert and write. - * \return zero on failure, non-zero on success. On failure, you can - * find out what went wrong from PHYSFS_getLastError(). - */ -__EXPORT__ int PHYSFS_writeSBE16(PHYSFS_File *file, PHYSFS_sint16 val); - - -/** - * \fn int PHYSFS_writeUBE16(PHYSFS_File *file, PHYSFS_uint16 val) - * \brief Convert and write an unsigned 16-bit bigendian value. - * - * Convenience function. Convert an unsigned 16-bit value from the platform's - * native byte order to bigendian and write it to a file. - * - * \param file PhysicsFS file handle to which to write. - * \param val Value to convert and write. - * \return zero on failure, non-zero on success. On failure, you can - * find out what went wrong from PHYSFS_getLastError(). - */ -__EXPORT__ int PHYSFS_writeUBE16(PHYSFS_File *file, PHYSFS_uint16 val); - - -/** - * \fn int PHYSFS_writeSLE32(PHYSFS_File *file, PHYSFS_sint32 val) - * \brief Convert and write a signed 32-bit littleendian value. - * - * Convenience function. Convert a signed 32-bit value from the platform's - * native byte order to littleendian and write it to a file. - * - * \param file PhysicsFS file handle to which to write. - * \param val Value to convert and write. - * \return zero on failure, non-zero on success. On failure, you can - * find out what went wrong from PHYSFS_getLastError(). - */ -__EXPORT__ int PHYSFS_writeSLE32(PHYSFS_File *file, PHYSFS_sint32 val); - - -/** - * \fn int PHYSFS_writeULE32(PHYSFS_File *file, PHYSFS_uint32 val) - * \brief Convert and write an unsigned 32-bit littleendian value. - * - * Convenience function. Convert an unsigned 32-bit value from the platform's - * native byte order to littleendian and write it to a file. - * - * \param file PhysicsFS file handle to which to write. - * \param val Value to convert and write. - * \return zero on failure, non-zero on success. On failure, you can - * find out what went wrong from PHYSFS_getLastError(). - */ -__EXPORT__ int PHYSFS_writeULE32(PHYSFS_File *file, PHYSFS_uint32 val); - - -/** - * \fn int PHYSFS_writeSBE32(PHYSFS_File *file, PHYSFS_sint32 val) - * \brief Convert and write a signed 32-bit bigendian value. - * - * Convenience function. Convert a signed 32-bit value from the platform's - * native byte order to bigendian and write it to a file. - * - * \param file PhysicsFS file handle to which to write. - * \param val Value to convert and write. - * \return zero on failure, non-zero on success. On failure, you can - * find out what went wrong from PHYSFS_getLastError(). - */ -__EXPORT__ int PHYSFS_writeSBE32(PHYSFS_File *file, PHYSFS_sint32 val); - - -/** - * \fn int PHYSFS_writeUBE32(PHYSFS_File *file, PHYSFS_uint32 val) - * \brief Convert and write an unsigned 32-bit bigendian value. - * - * Convenience function. Convert an unsigned 32-bit value from the platform's - * native byte order to bigendian and write it to a file. - * - * \param file PhysicsFS file handle to which to write. - * \param val Value to convert and write. - * \return zero on failure, non-zero on success. On failure, you can - * find out what went wrong from PHYSFS_getLastError(). - */ -__EXPORT__ int PHYSFS_writeUBE32(PHYSFS_File *file, PHYSFS_uint32 val); - - -/** - * \fn int PHYSFS_writeSLE64(PHYSFS_File *file, PHYSFS_sint64 val) - * \brief Convert and write a signed 64-bit littleendian value. - * - * Convenience function. Convert a signed 64-bit value from the platform's - * native byte order to littleendian and write it to a file. - * - * \param file PhysicsFS file handle to which to write. - * \param val Value to convert and write. - * \return zero on failure, non-zero on success. On failure, you can - * find out what went wrong from PHYSFS_getLastError(). - * - * \warning Remember, PHYSFS_uint64 is only 32 bits on platforms without - * any sort of 64-bit support. - */ -__EXPORT__ int PHYSFS_writeSLE64(PHYSFS_File *file, PHYSFS_sint64 val); - - -/** - * \fn int PHYSFS_writeULE64(PHYSFS_File *file, PHYSFS_uint64 val) - * \brief Convert and write an unsigned 64-bit littleendian value. - * - * Convenience function. Convert an unsigned 64-bit value from the platform's - * native byte order to littleendian and write it to a file. - * - * \param file PhysicsFS file handle to which to write. - * \param val Value to convert and write. - * \return zero on failure, non-zero on success. On failure, you can - * find out what went wrong from PHYSFS_getLastError(). - * - * \warning Remember, PHYSFS_uint64 is only 32 bits on platforms without - * any sort of 64-bit support. - */ -__EXPORT__ int PHYSFS_writeULE64(PHYSFS_File *file, PHYSFS_uint64 val); - - -/** - * \fn int PHYSFS_writeSBE64(PHYSFS_File *file, PHYSFS_sint64 val) - * \brief Convert and write a signed 64-bit bigending value. - * - * Convenience function. Convert a signed 64-bit value from the platform's - * native byte order to bigendian and write it to a file. - * - * \param file PhysicsFS file handle to which to write. - * \param val Value to convert and write. - * \return zero on failure, non-zero on success. On failure, you can - * find out what went wrong from PHYSFS_getLastError(). - * - * \warning Remember, PHYSFS_uint64 is only 32 bits on platforms without - * any sort of 64-bit support. - */ -__EXPORT__ int PHYSFS_writeSBE64(PHYSFS_File *file, PHYSFS_sint64 val); - - -/** - * \fn int PHYSFS_writeUBE64(PHYSFS_File *file, PHYSFS_uint64 val) - * \brief Convert and write an unsigned 64-bit bigendian value. - * - * Convenience function. Convert an unsigned 64-bit value from the platform's - * native byte order to bigendian and write it to a file. - * - * \param file PhysicsFS file handle to which to write. - * \param val Value to convert and write. - * \return zero on failure, non-zero on success. On failure, you can - * find out what went wrong from PHYSFS_getLastError(). - * - * \warning Remember, PHYSFS_uint64 is only 32 bits on platforms without - * any sort of 64-bit support. - */ -__EXPORT__ int PHYSFS_writeUBE64(PHYSFS_File *file, PHYSFS_uint64 val); - - -/* Everything above this line is part of the PhysicsFS 1.0 API. */ - -/** - * \fn int PHYSFS_isInit(void) - * \brief Determine if the PhysicsFS library is initialized. - * - * Once PHYSFS_init() returns successfully, this will return non-zero. - * Before a successful PHYSFS_init() and after PHYSFS_deinit() returns - * successfully, this will return zero. This function is safe to call at - * any time. - * - * \return non-zero if library is initialized, zero if library is not. - * - * \sa PHYSFS_init - * \sa PHYSFS_deinit - */ -__EXPORT__ int PHYSFS_isInit(void); - - -/** - * \fn int PHYSFS_symbolicLinksPermitted(void) - * \brief Determine if the symbolic links are permitted. - * - * This reports the setting from the last call to PHYSFS_permitSymbolicLinks(). - * If PHYSFS_permitSymbolicLinks() hasn't been called since the library was - * last initialized, symbolic links are implicitly disabled. - * - * \return non-zero if symlinks are permitted, zero if not. - * - * \sa PHYSFS_permitSymbolicLinks - */ -__EXPORT__ int PHYSFS_symbolicLinksPermitted(void); - - -/** - * \struct PHYSFS_Allocator - * \brief PhysicsFS allocation function pointers. - * - * (This is for limited, hardcore use. If you don't immediately see a need - * for it, you can probably ignore this forever.) - * - * You create one of these structures for use with PHYSFS_setAllocator. - * Allocators are assumed to be reentrant by the caller; please mutex - * accordingly. - * - * Allocations are always discussed in 64-bits, for future expansion...we're - * on the cusp of a 64-bit transition, and we'll probably be allocating 6 - * gigabytes like it's nothing sooner or later, and I don't want to change - * this again at that point. If you're on a 32-bit platform and have to - * downcast, it's okay to return NULL if the allocation is greater than - * 4 gigabytes, since you'd have to do so anyhow. - * - * \sa PHYSFS_setAllocator - */ -typedef struct -{ - int (*Init)(void); /**< Initialize. Can be NULL. Zero on failure. */ - void (*Deinit)(void); /**< Deinitialize your allocator. Can be NULL. */ - void *(*Malloc)(PHYSFS_uint64); /**< Allocate like malloc(). */ - void *(*Realloc)(void *, PHYSFS_uint64); /**< Reallocate like realloc(). */ - void (*Free)(void *); /**< Free memory from Malloc or Realloc. */ -} PHYSFS_Allocator; - - -/** - * \fn int PHYSFS_setAllocator(const PHYSFS_Allocator *allocator) - * \brief Hook your own allocation routines into PhysicsFS. - * - * (This is for limited, hardcore use. If you don't immediately see a need - * for it, you can probably ignore this forever.) - * - * By default, PhysicsFS will use whatever is reasonable for a platform - * to manage dynamic memory (usually ANSI C malloc/realloc/calloc/free, but - * some platforms might use something else), but in some uncommon cases, the - * app might want more control over the library's memory management. This - * lets you redirect PhysicsFS to use your own allocation routines instead. - * You can only call this function before PHYSFS_init(); if the library is - * initialized, it'll reject your efforts to change the allocator mid-stream. - * You may call this function after PHYSFS_deinit() if you are willing to - * shut down the library and restart it with a new allocator; this is a safe - * and supported operation. The allocator remains intact between deinit/init - * calls. If you want to return to the platform's default allocator, pass a - * NULL in here. - * - * If you aren't immediately sure what to do with this function, you can - * safely ignore it altogether. - * - * \param allocator Structure containing your allocator's entry points. - * \return zero on failure, non-zero on success. This call only fails - * when used between PHYSFS_init() and PHYSFS_deinit() calls. - */ -__EXPORT__ int PHYSFS_setAllocator(const PHYSFS_Allocator *allocator); - - -/** - * \fn int PHYSFS_mount(const char *newDir, const char *mountPoint, int appendToPath) - * \brief Add an archive or directory to the search path. - * - * If this is a duplicate, the entry is not added again, even though the - * function succeeds. You may not add the same archive to two different - * mountpoints: duplicate checking is done against the archive and not the - * mountpoint. - * - * When you mount an archive, it is added to a virtual file system...all files - * in all of the archives are interpolated into a single hierachical file - * tree. Two archives mounted at the same place (or an archive with files - * overlapping another mountpoint) may have overlapping files: in such a case, - * the file earliest in the search path is selected, and the other files are - * inaccessible to the application. This allows archives to be used to - * override previous revisions; you can use the mounting mechanism to place - * archives at a specific point in the file tree and prevent overlap; this - * is useful for downloadable mods that might trample over application data - * or each other, for example. - * - * The mountpoint does not need to exist prior to mounting, which is different - * than those familiar with the Unix concept of "mounting" may not expect. - * As well, more than one archive can be mounted to the same mountpoint, or - * mountpoints and archive contents can overlap...the interpolation mechanism - * still functions as usual. - * - * \param newDir directory or archive to add to the path, in - * platform-dependent notation. - * \param mountPoint Location in the interpolated tree that this archive - * will be "mounted", in platform-independent notation. - * NULL or "" is equivalent to "/". - * \param appendToPath nonzero to append to search path, zero to prepend. - * \return nonzero if added to path, zero on failure (bogus archive, dir - * missing, etc). Specifics of the error can be - * gleaned from PHYSFS_getLastError(). - * - * \sa PHYSFS_removeFromSearchPath - * \sa PHYSFS_getSearchPath - * \sa PHYSFS_getMountPoint - */ -__EXPORT__ int PHYSFS_mount(const char *newDir, const char *mountPoint, int appendToPath); - -/** - * \fn int PHYSFS_getMountPoint(const char *dir) - * \brief Determine a mounted archive's mountpoint. - * - * You give this function the name of an archive or dir you successfully - * added to the search path, and it reports the location in the interpolated - * tree where it is mounted. Files mounted with a NULL mountpoint or through - * PHYSFS_addToSearchPath() will report "/". The return value is READ ONLY - * and valid until the archive is removed from the search path. - * - * \param dir directory or archive previously added to the path, in - * platform-dependent notation. This must match the string - * used when adding, even if your string would also reference - * the same file with a different string of characters. - * \return READ-ONLY string of mount point if added to path, NULL on failure - * (bogus archive, etc) Specifics of the error can be gleaned from - * PHYSFS_getLastError(). - * - * \sa PHYSFS_removeFromSearchPath - * \sa PHYSFS_getSearchPath - * \sa PHYSFS_getMountPoint - */ -__EXPORT__ const char *PHYSFS_getMountPoint(const char *dir); - - -/** - * \typedef PHYSFS_StringCallback - * \brief Function signature for callbacks that report strings. - * - * These are used to report a list of strings to an original caller, one - * string per callback. All strings are UTF-8 encoded. Functions should not - * try to modify or free the string's memory. - * - * These callbacks are used, starting in PhysicsFS 1.1, as an alternative to - * functions that would return lists that need to be cleaned up with - * PHYSFS_freeList(). The callback means that the library doesn't need to - * allocate an entire list and all the strings up front. - * - * Be aware that promises data ordering in the list versions are not - * necessarily so in the callback versions. Check the documentation on - * specific APIs, but strings may not be sorted as you expect. - * - * \param data User-defined data pointer, passed through from the API - * that eventually called the callback. - * \param str The string data about which the callback is meant to inform. - * - * \sa PHYSFS_getCdRomDirsCallback - * \sa PHYSFS_getSearchPathCallback - */ -typedef void (*PHYSFS_StringCallback)(void *data, const char *str); - - -/** - * \typedef PHYSFS_EnumFilesCallback - * \brief Function signature for callbacks that enumerate files. - * - * These are used to report a list of directory entries to an original caller, - * one file/dir/symlink per callback. All strings are UTF-8 encoded. - * Functions should not try to modify or free any string's memory. - * - * These callbacks are used, starting in PhysicsFS 1.1, as an alternative to - * functions that would return lists that need to be cleaned up with - * PHYSFS_freeList(). The callback means that the library doesn't need to - * allocate an entire list and all the strings up front. - * - * Be aware that promises data ordering in the list versions are not - * necessarily so in the callback versions. Check the documentation on - * specific APIs, but strings may not be sorted as you expect. - * - * \param data User-defined data pointer, passed through from the API - * that eventually called the callback. - * \param origdir A string containing the full path, in platform-independent - * notation, of the directory containing this file. In most - * cases, this is the directory on which you requested - * enumeration, passed in the callback for your convenience. - * \param fname The filename that is being enumerated. It may not be in - * alphabetical order compared to other callbacks that have - * fired, and it will not contain the full path. You can - * recreate the fullpath with $origdir/$fname ... The file - * can be a subdirectory, a file, a symlink, etc. - * - * \sa PHYSFS_enumerateFilesCallback - */ -typedef void (*PHYSFS_EnumFilesCallback)(void *data, const char *origdir, - const char *fname); - - -/** - * \fn void PHYSFS_getCdRomDirsCallback(PHYSFS_StringCallback c, void *d) - * \brief Enumerate CD-ROM directories, using an application-defined callback. - * - * Internally, PHYSFS_getCdRomDirs() just calls this function and then builds - * a list before returning to the application, so functionality is identical - * except for how the information is represented to the application. - * - * Unlike PHYSFS_getCdRomDirs(), this function does not return an array. - * Rather, it calls a function specified by the application once per - * detected disc: - * - * \code - * - * static void foundDisc(void *data, const char *cddir) - * { - * printf("cdrom dir [%s] is available.\n", cddir); - * } - * - * // ... - * PHYSFS_getCdRomDirsCallback(foundDisc, NULL); - * \endcode - * - * This call may block while drives spin up. Be forewarned. - * - * \param c Callback function to notify about detected drives. - * \param d Application-defined data passed to callback. Can be NULL. - * - * \sa PHYSFS_StringCallback - * \sa PHYSFS_getCdRomDirs - */ -__EXPORT__ void PHYSFS_getCdRomDirsCallback(PHYSFS_StringCallback c, void *d); - - -/** - * \fn void PHYSFS_getSearchPathCallback(PHYSFS_StringCallback c, void *d) - * \brief Enumerate the search path, using an application-defined callback. - * - * Internally, PHYSFS_getSearchPath() just calls this function and then builds - * a list before returning to the application, so functionality is identical - * except for how the information is represented to the application. - * - * Unlike PHYSFS_getSearchPath(), this function does not return an array. - * Rather, it calls a function specified by the application once per - * element of the search path: - * - * \code - * - * static void printSearchPath(void *data, const char *pathItem) - * { - * printf("[%s] is in the search path.\n", pathItem); - * } - * - * // ... - * PHYSFS_getSearchPathCallback(printSearchPath, NULL); - * \endcode - * - * Elements of the search path are reported in order search priority, so the - * first archive/dir that would be examined when looking for a file is the - * first element passed through the callback. - * - * \param c Callback function to notify about search path elements. - * \param d Application-defined data passed to callback. Can be NULL. - * - * \sa PHYSFS_StringCallback - * \sa PHYSFS_getSearchPath - */ -__EXPORT__ void PHYSFS_getSearchPathCallback(PHYSFS_StringCallback c, void *d); - - -/** - * \fn void PHYSFS_enumerateFilesCallback(const char *dir, PHYSFS_EnumFilesCallback c, void *d) - * \brief Get a file listing of a search path's directory, using an application-defined callback. - * - * Internally, PHYSFS_enumerateFiles() just calls this function and then builds - * a list before returning to the application, so functionality is identical - * except for how the information is represented to the application. - * - * Unlike PHYSFS_enumerateFiles(), this function does not return an array. - * Rather, it calls a function specified by the application once per - * element of the search path: - * - * \code - * - * static void printDir(void *data, const char *origdir, const char *fname) - * { - * printf(" * We've got [%s] in [%s].\n", fname, origdir); - * } - * - * // ... - * PHYSFS_enumerateFilesCallback("/some/path", printDir, NULL); - * \endcode - * - * Items sent to the callback are not guaranteed to be in any order whatsoever. - * There is no sorting done at this level, and if you need that, you should - * probably use PHYSFS_enumerateFiles() instead, which guarantees - * alphabetical sorting. This form reports whatever is discovered in each - * archive before moving on to the next. Even within one archive, we can't - * guarantee what order it will discover data. <em>Any sorting you find in - * these callbacks is just pure luck. Do not rely on it.</em> - * - * \param dir Directory, in platform-independent notation, to enumerate. - * \param c Callback function to notify about search path elements. - * \param d Application-defined data passed to callback. Can be NULL. - * - * \sa PHYSFS_EnumFilesCallback - * \sa PHYSFS_enumerateFiles - */ -__EXPORT__ void PHYSFS_enumerateFilesCallback(const char *dir, - PHYSFS_EnumFilesCallback c, - void *d); - -/** - * \fn void PHYSFS_utf8FromUcs4(const PHYSFS_uint32 *src, char *dst, PHYSFS_uint64 len) - * \brief Convert a UCS-4 string to a UTF-8 string. - * - * UCS-4 strings are 32-bits per character: \c wchar_t on Unix. - * - * To ensure that the destination buffer is large enough for the conversion, - * please allocate a buffer that is the same size as the source buffer. UTF-8 - * never uses more than 32-bits per character, so while it may shrink a UCS-4 - * string, it will never expand it. - * - * Strings that don't fit in the destination buffer will be truncated, but - * will always be null-terminated and never have an incomplete UTF-8 - * sequence at the end. - * - * \param src Null-terminated source string in UCS-4 format. - * \param dst Buffer to store converted UTF-8 string. - * \param len Size, in bytes, of destination buffer. - */ -__EXPORT__ void PHYSFS_utf8FromUcs4(const PHYSFS_uint32 *src, char *dst, - PHYSFS_uint64 len); - -/** - * \fn void PHYSFS_utf8ToUcs4(const char *src, PHYSFS_uint32 *dst, PHYSFS_uint64 len) - * \brief Convert a UTF-8 string to a UCS-4 string. - * - * UCS-4 strings are 32-bits per character: \c wchar_t on Unix. - * - * To ensure that the destination buffer is large enough for the conversion, - * please allocate a buffer that is four times the size of the source buffer. - * UTF-8 uses from one to four bytes per character, but UCS-4 always uses - * four, so an entirely low-ASCII string will quadruple in size! - * - * Strings that don't fit in the destination buffer will be truncated, but - * will always be null-terminated and never have an incomplete UCS-4 - * sequence at the end. - * - * \param src Null-terminated source string in UTF-8 format. - * \param dst Buffer to store converted UCS-4 string. - * \param len Size, in bytes, of destination buffer. - */ -__EXPORT__ void PHYSFS_utf8ToUcs4(const char *src, PHYSFS_uint32 *dst, - PHYSFS_uint64 len); - -/** - * \fn void PHYSFS_utf8FromUcs2(const PHYSFS_uint16 *src, char *dst, PHYSFS_uint64 len) - * \brief Convert a UCS-2 string to a UTF-8 string. - * - * UCS-2 strings are 16-bits per character: \c TCHAR on Windows, when building - * with Unicode support. - * - * To ensure that the destination buffer is large enough for the conversion, - * please allocate a buffer that is double the size of the source buffer. - * UTF-8 never uses more than 32-bits per character, so while it may shrink - * a UCS-2 string, it may also expand it. - * - * Strings that don't fit in the destination buffer will be truncated, but - * will always be null-terminated and never have an incomplete UTF-8 - * sequence at the end. - * - * Please note that UCS-2 is not UTF-16; we do not support the "surrogate" - * values at this time. - * - * \param src Null-terminated source string in UCS-2 format. - * \param dst Buffer to store converted UTF-8 string. - * \param len Size, in bytes, of destination buffer. - */ -__EXPORT__ void PHYSFS_utf8FromUcs2(const PHYSFS_uint16 *src, char *dst, - PHYSFS_uint64 len); - -/** - * \fn PHYSFS_utf8ToUcs2(const char *src, PHYSFS_uint16 *dst, PHYSFS_uint64 len) - * \brief Convert a UTF-8 string to a UCS-2 string. - * - * UCS-2 strings are 16-bits per character: \c TCHAR on Windows, when building - * with Unicode support. - * - * To ensure that the destination buffer is large enough for the conversion, - * please allocate a buffer that is double the size of the source buffer. - * UTF-8 uses from one to four bytes per character, but UCS-2 always uses - * two, so an entirely low-ASCII string will double in size! - * - * Strings that don't fit in the destination buffer will be truncated, but - * will always be null-terminated and never have an incomplete UCS-2 - * sequence at the end. - * - * Please note that UCS-2 is not UTF-16; we do not support the "surrogate" - * values at this time. - * - * \param src Null-terminated source string in UTF-8 format. - * \param dst Buffer to store converted UCS-2 string. - * \param len Size, in bytes, of destination buffer. - */ -__EXPORT__ void PHYSFS_utf8ToUcs2(const char *src, PHYSFS_uint16 *dst, - PHYSFS_uint64 len); - -/** - * \fn void PHYSFS_utf8FromLatin1(const char *src, char *dst, PHYSFS_uint64 len) - * \brief Convert a UTF-8 string to a Latin1 string. - * - * Latin1 strings are 8-bits per character: a popular "high ASCII" - * encoding. - * - * To ensure that the destination buffer is large enough for the conversion, - * please allocate a buffer that is double the size of the source buffer. - * UTF-8 expands latin1 codepoints over 127 from 1 to 2 bytes, so the string - * may grow in some cases. - * - * Strings that don't fit in the destination buffer will be truncated, but - * will always be null-terminated and never have an incomplete UTF-8 - * sequence at the end. - * - * Please note that we do not supply a UTF-8 to Latin1 converter, since Latin1 - * can't express most Unicode codepoints. It's a legacy encoding; you should - * be converting away from it at all times. - * - * \param src Null-terminated source string in Latin1 format. - * \param dst Buffer to store converted UTF-8 string. - * \param len Size, in bytes, of destination buffer. - */ -__EXPORT__ void PHYSFS_utf8FromLatin1(const char *src, char *dst, - PHYSFS_uint64 len); - -/* Everything above this line is part of the PhysicsFS 2.0 API. */ - - -#ifdef __cplusplus -} -#endif - -#endif /* !defined _INCLUDE_PHYSFS_H_ */ - -/* end of physfs.h ... */ - diff --git a/Frameworks/physfs.framework/Versions/A/Headers/.svn/text-base/physfs_casefolding.h.svn-base b/Frameworks/physfs.framework/Versions/A/Headers/.svn/text-base/physfs_casefolding.h.svn-base deleted file mode 100644 index 0e50f1e7..00000000 --- a/Frameworks/physfs.framework/Versions/A/Headers/.svn/text-base/physfs_casefolding.h.svn-base +++ /dev/null @@ -1,2013 +0,0 @@ -/* - * This file is part of PhysicsFS (http://icculus.org/physfs/) - * - * This data generated by physfs/extras/makecasefoldhashtable.pl ... - * Do not manually edit this file! - * - * Please see the file LICENSE.txt in the source's root directory. - */ - -#ifndef __PHYSICSFS_INTERNAL__ -#error Do not include this header from your applications. -#endif - -static const CaseFoldMapping case_fold_000[] = { - { 0x0202, 0x0203, 0x0000, 0x0000 }, - { 0x0404, 0x0454, 0x0000, 0x0000 }, - { 0x1E1E, 0x1E1F, 0x0000, 0x0000 }, - { 0x2C2C, 0x2C5C, 0x0000, 0x0000 }, - { 0x10404, 0x1042C, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_001[] = { - { 0x0100, 0x0101, 0x0000, 0x0000 }, - { 0x0405, 0x0455, 0x0000, 0x0000 }, - { 0x0504, 0x0505, 0x0000, 0x0000 }, - { 0x2C2D, 0x2C5D, 0x0000, 0x0000 }, - { 0x10405, 0x1042D, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_002[] = { - { 0x0200, 0x0201, 0x0000, 0x0000 }, - { 0x0406, 0x0456, 0x0000, 0x0000 }, - { 0x1E1C, 0x1E1D, 0x0000, 0x0000 }, - { 0x1F1D, 0x1F15, 0x0000, 0x0000 }, - { 0x2C2E, 0x2C5E, 0x0000, 0x0000 }, - { 0x10406, 0x1042E, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_003[] = { - { 0x0102, 0x0103, 0x0000, 0x0000 }, - { 0x0407, 0x0457, 0x0000, 0x0000 }, - { 0x0506, 0x0507, 0x0000, 0x0000 }, - { 0x1F1C, 0x1F14, 0x0000, 0x0000 }, - { 0x10407, 0x1042F, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_004[] = { - { 0x0206, 0x0207, 0x0000, 0x0000 }, - { 0x0400, 0x0450, 0x0000, 0x0000 }, - { 0x1E1A, 0x1E1B, 0x0000, 0x0000 }, - { 0x1F1B, 0x1F13, 0x0000, 0x0000 }, - { 0x2C28, 0x2C58, 0x0000, 0x0000 }, - { 0x10400, 0x10428, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_005[] = { - { 0x0104, 0x0105, 0x0000, 0x0000 }, - { 0x0401, 0x0451, 0x0000, 0x0000 }, - { 0x0500, 0x0501, 0x0000, 0x0000 }, - { 0x1F1A, 0x1F12, 0x0000, 0x0000 }, - { 0x2C29, 0x2C59, 0x0000, 0x0000 }, - { 0x10401, 0x10429, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_006[] = { - { 0x0204, 0x0205, 0x0000, 0x0000 }, - { 0x0402, 0x0452, 0x0000, 0x0000 }, - { 0x1E18, 0x1E19, 0x0000, 0x0000 }, - { 0x1F19, 0x1F11, 0x0000, 0x0000 }, - { 0x2C2A, 0x2C5A, 0x0000, 0x0000 }, - { 0x10402, 0x1042A, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_007[] = { - { 0x0106, 0x0107, 0x0000, 0x0000 }, - { 0x0403, 0x0453, 0x0000, 0x0000 }, - { 0x0502, 0x0503, 0x0000, 0x0000 }, - { 0x1F18, 0x1F10, 0x0000, 0x0000 }, - { 0x2126, 0x03C9, 0x0000, 0x0000 }, - { 0x2C2B, 0x2C5B, 0x0000, 0x0000 }, - { 0x10403, 0x1042B, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_008[] = { - { 0x020A, 0x020B, 0x0000, 0x0000 }, - { 0x040C, 0x045C, 0x0000, 0x0000 }, - { 0x1E16, 0x1E17, 0x0000, 0x0000 }, - { 0x2C24, 0x2C54, 0x0000, 0x0000 }, - { 0x1040C, 0x10434, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_009[] = { - { 0x0108, 0x0109, 0x0000, 0x0000 }, - { 0x040D, 0x045D, 0x0000, 0x0000 }, - { 0x050C, 0x050D, 0x0000, 0x0000 }, - { 0x2C25, 0x2C55, 0x0000, 0x0000 }, - { 0x1040D, 0x10435, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_010[] = { - { 0x0208, 0x0209, 0x0000, 0x0000 }, - { 0x040E, 0x045E, 0x0000, 0x0000 }, - { 0x1E14, 0x1E15, 0x0000, 0x0000 }, - { 0x212B, 0x00E5, 0x0000, 0x0000 }, - { 0x2C26, 0x2C56, 0x0000, 0x0000 }, - { 0x1040E, 0x10436, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_011[] = { - { 0x010A, 0x010B, 0x0000, 0x0000 }, - { 0x040F, 0x045F, 0x0000, 0x0000 }, - { 0x050E, 0x050F, 0x0000, 0x0000 }, - { 0x212A, 0x006B, 0x0000, 0x0000 }, - { 0x2C27, 0x2C57, 0x0000, 0x0000 }, - { 0x1040F, 0x10437, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_012[] = { - { 0x020E, 0x020F, 0x0000, 0x0000 }, - { 0x0408, 0x0458, 0x0000, 0x0000 }, - { 0x1E12, 0x1E13, 0x0000, 0x0000 }, - { 0x2C20, 0x2C50, 0x0000, 0x0000 }, - { 0x10408, 0x10430, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_013[] = { - { 0x010C, 0x010D, 0x0000, 0x0000 }, - { 0x0409, 0x0459, 0x0000, 0x0000 }, - { 0x0508, 0x0509, 0x0000, 0x0000 }, - { 0x2C21, 0x2C51, 0x0000, 0x0000 }, - { 0x10409, 0x10431, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_014[] = { - { 0x020C, 0x020D, 0x0000, 0x0000 }, - { 0x040A, 0x045A, 0x0000, 0x0000 }, - { 0x1E10, 0x1E11, 0x0000, 0x0000 }, - { 0x2C22, 0x2C52, 0x0000, 0x0000 }, - { 0x1040A, 0x10432, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_015[] = { - { 0x010E, 0x010F, 0x0000, 0x0000 }, - { 0x040B, 0x045B, 0x0000, 0x0000 }, - { 0x050A, 0x050B, 0x0000, 0x0000 }, - { 0x2C23, 0x2C53, 0x0000, 0x0000 }, - { 0x1040B, 0x10433, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_016[] = { - { 0x0212, 0x0213, 0x0000, 0x0000 }, - { 0x0414, 0x0434, 0x0000, 0x0000 }, - { 0x1E0E, 0x1E0F, 0x0000, 0x0000 }, - { 0x1F0F, 0x1F07, 0x0000, 0x0000 }, - { 0x10414, 0x1043C, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_017[] = { - { 0x0110, 0x0111, 0x0000, 0x0000 }, - { 0x0415, 0x0435, 0x0000, 0x0000 }, - { 0x1F0E, 0x1F06, 0x0000, 0x0000 }, - { 0x10415, 0x1043D, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_018[] = { - { 0x0210, 0x0211, 0x0000, 0x0000 }, - { 0x0416, 0x0436, 0x0000, 0x0000 }, - { 0x1E0C, 0x1E0D, 0x0000, 0x0000 }, - { 0x1F0D, 0x1F05, 0x0000, 0x0000 }, - { 0x10416, 0x1043E, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_019[] = { - { 0x0112, 0x0113, 0x0000, 0x0000 }, - { 0x0417, 0x0437, 0x0000, 0x0000 }, - { 0x1F0C, 0x1F04, 0x0000, 0x0000 }, - { 0x10417, 0x1043F, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_020[] = { - { 0x0216, 0x0217, 0x0000, 0x0000 }, - { 0x0410, 0x0430, 0x0000, 0x0000 }, - { 0x1E0A, 0x1E0B, 0x0000, 0x0000 }, - { 0x1F0B, 0x1F03, 0x0000, 0x0000 }, - { 0x10410, 0x10438, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_021[] = { - { 0x0114, 0x0115, 0x0000, 0x0000 }, - { 0x0411, 0x0431, 0x0000, 0x0000 }, - { 0x1F0A, 0x1F02, 0x0000, 0x0000 }, - { 0x10411, 0x10439, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_022[] = { - { 0x0214, 0x0215, 0x0000, 0x0000 }, - { 0x0412, 0x0432, 0x0000, 0x0000 }, - { 0x1E08, 0x1E09, 0x0000, 0x0000 }, - { 0x1F09, 0x1F01, 0x0000, 0x0000 }, - { 0x10412, 0x1043A, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_023[] = { - { 0x0116, 0x0117, 0x0000, 0x0000 }, - { 0x0413, 0x0433, 0x0000, 0x0000 }, - { 0x1F08, 0x1F00, 0x0000, 0x0000 }, - { 0x10413, 0x1043B, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_024[] = { - { 0x021A, 0x021B, 0x0000, 0x0000 }, - { 0x041C, 0x043C, 0x0000, 0x0000 }, - { 0x1E06, 0x1E07, 0x0000, 0x0000 }, - { 0x1041C, 0x10444, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_025[] = { - { 0x0118, 0x0119, 0x0000, 0x0000 }, - { 0x041D, 0x043D, 0x0000, 0x0000 }, - { 0x1041D, 0x10445, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_026[] = { - { 0x0218, 0x0219, 0x0000, 0x0000 }, - { 0x041E, 0x043E, 0x0000, 0x0000 }, - { 0x1E04, 0x1E05, 0x0000, 0x0000 }, - { 0x1041E, 0x10446, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_027[] = { - { 0x011A, 0x011B, 0x0000, 0x0000 }, - { 0x041F, 0x043F, 0x0000, 0x0000 }, - { 0x1041F, 0x10447, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_028[] = { - { 0x021E, 0x021F, 0x0000, 0x0000 }, - { 0x0418, 0x0438, 0x0000, 0x0000 }, - { 0x1E02, 0x1E03, 0x0000, 0x0000 }, - { 0x10418, 0x10440, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_029[] = { - { 0x011C, 0x011D, 0x0000, 0x0000 }, - { 0x0419, 0x0439, 0x0000, 0x0000 }, - { 0x10419, 0x10441, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_030[] = { - { 0x021C, 0x021D, 0x0000, 0x0000 }, - { 0x041A, 0x043A, 0x0000, 0x0000 }, - { 0x1E00, 0x1E01, 0x0000, 0x0000 }, - { 0x1041A, 0x10442, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_031[] = { - { 0x011E, 0x011F, 0x0000, 0x0000 }, - { 0x041B, 0x043B, 0x0000, 0x0000 }, - { 0x1041B, 0x10443, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_032[] = { - { 0x0222, 0x0223, 0x0000, 0x0000 }, - { 0x0424, 0x0444, 0x0000, 0x0000 }, - { 0x1E3E, 0x1E3F, 0x0000, 0x0000 }, - { 0x1F3F, 0x1F37, 0x0000, 0x0000 }, - { 0x2C0C, 0x2C3C, 0x0000, 0x0000 }, - { 0x10424, 0x1044C, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_033[] = { - { 0x0120, 0x0121, 0x0000, 0x0000 }, - { 0x0425, 0x0445, 0x0000, 0x0000 }, - { 0x1F3E, 0x1F36, 0x0000, 0x0000 }, - { 0x2C0D, 0x2C3D, 0x0000, 0x0000 }, - { 0x10425, 0x1044D, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_034[] = { - { 0x0220, 0x019E, 0x0000, 0x0000 }, - { 0x0426, 0x0446, 0x0000, 0x0000 }, - { 0x1E3C, 0x1E3D, 0x0000, 0x0000 }, - { 0x1F3D, 0x1F35, 0x0000, 0x0000 }, - { 0x2C0E, 0x2C3E, 0x0000, 0x0000 }, - { 0x10426, 0x1044E, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_035[] = { - { 0x0122, 0x0123, 0x0000, 0x0000 }, - { 0x0427, 0x0447, 0x0000, 0x0000 }, - { 0x1F3C, 0x1F34, 0x0000, 0x0000 }, - { 0x2C0F, 0x2C3F, 0x0000, 0x0000 }, - { 0x10427, 0x1044F, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_036[] = { - { 0x0226, 0x0227, 0x0000, 0x0000 }, - { 0x0420, 0x0440, 0x0000, 0x0000 }, - { 0x1E3A, 0x1E3B, 0x0000, 0x0000 }, - { 0x1F3B, 0x1F33, 0x0000, 0x0000 }, - { 0x2C08, 0x2C38, 0x0000, 0x0000 }, - { 0x10420, 0x10448, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_037[] = { - { 0x0124, 0x0125, 0x0000, 0x0000 }, - { 0x0421, 0x0441, 0x0000, 0x0000 }, - { 0x1F3A, 0x1F32, 0x0000, 0x0000 }, - { 0x2C09, 0x2C39, 0x0000, 0x0000 }, - { 0x10421, 0x10449, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_038[] = { - { 0x0224, 0x0225, 0x0000, 0x0000 }, - { 0x0422, 0x0442, 0x0000, 0x0000 }, - { 0x1E38, 0x1E39, 0x0000, 0x0000 }, - { 0x1F39, 0x1F31, 0x0000, 0x0000 }, - { 0x2C0A, 0x2C3A, 0x0000, 0x0000 }, - { 0x10422, 0x1044A, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_039[] = { - { 0x0126, 0x0127, 0x0000, 0x0000 }, - { 0x0423, 0x0443, 0x0000, 0x0000 }, - { 0x1F38, 0x1F30, 0x0000, 0x0000 }, - { 0x2C0B, 0x2C3B, 0x0000, 0x0000 }, - { 0x10423, 0x1044B, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_040[] = { - { 0x022A, 0x022B, 0x0000, 0x0000 }, - { 0x042C, 0x044C, 0x0000, 0x0000 }, - { 0x1E36, 0x1E37, 0x0000, 0x0000 }, - { 0x2C04, 0x2C34, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_041[] = { - { 0x0128, 0x0129, 0x0000, 0x0000 }, - { 0x042D, 0x044D, 0x0000, 0x0000 }, - { 0x2C05, 0x2C35, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_042[] = { - { 0x0228, 0x0229, 0x0000, 0x0000 }, - { 0x042E, 0x044E, 0x0000, 0x0000 }, - { 0x1E34, 0x1E35, 0x0000, 0x0000 }, - { 0x2C06, 0x2C36, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_043[] = { - { 0x012A, 0x012B, 0x0000, 0x0000 }, - { 0x042F, 0x044F, 0x0000, 0x0000 }, - { 0x2C07, 0x2C37, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_044[] = { - { 0x022E, 0x022F, 0x0000, 0x0000 }, - { 0x0428, 0x0448, 0x0000, 0x0000 }, - { 0x1E32, 0x1E33, 0x0000, 0x0000 }, - { 0x2C00, 0x2C30, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_045[] = { - { 0x012C, 0x012D, 0x0000, 0x0000 }, - { 0x0429, 0x0449, 0x0000, 0x0000 }, - { 0x2C01, 0x2C31, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_046[] = { - { 0x022C, 0x022D, 0x0000, 0x0000 }, - { 0x042A, 0x044A, 0x0000, 0x0000 }, - { 0x1E30, 0x1E31, 0x0000, 0x0000 }, - { 0x2C02, 0x2C32, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_047[] = { - { 0x012E, 0x012F, 0x0000, 0x0000 }, - { 0x042B, 0x044B, 0x0000, 0x0000 }, - { 0x2C03, 0x2C33, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_048[] = { - { 0x0232, 0x0233, 0x0000, 0x0000 }, - { 0x0535, 0x0565, 0x0000, 0x0000 }, - { 0x1E2E, 0x1E2F, 0x0000, 0x0000 }, - { 0x1F2F, 0x1F27, 0x0000, 0x0000 }, - { 0x2C1C, 0x2C4C, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_049[] = { - { 0x0130, 0x0069, 0x0307, 0x0000 }, - { 0x0534, 0x0564, 0x0000, 0x0000 }, - { 0x1F2E, 0x1F26, 0x0000, 0x0000 }, - { 0x2C1D, 0x2C4D, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_050[] = { - { 0x0230, 0x0231, 0x0000, 0x0000 }, - { 0x0537, 0x0567, 0x0000, 0x0000 }, - { 0x1E2C, 0x1E2D, 0x0000, 0x0000 }, - { 0x1F2D, 0x1F25, 0x0000, 0x0000 }, - { 0x2C1E, 0x2C4E, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_051[] = { - { 0x0132, 0x0133, 0x0000, 0x0000 }, - { 0x0536, 0x0566, 0x0000, 0x0000 }, - { 0x1F2C, 0x1F24, 0x0000, 0x0000 }, - { 0x2C1F, 0x2C4F, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_052[] = { - { 0x0531, 0x0561, 0x0000, 0x0000 }, - { 0x1E2A, 0x1E2B, 0x0000, 0x0000 }, - { 0x1F2B, 0x1F23, 0x0000, 0x0000 }, - { 0x2C18, 0x2C48, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_053[] = { - { 0x0134, 0x0135, 0x0000, 0x0000 }, - { 0x1F2A, 0x1F22, 0x0000, 0x0000 }, - { 0x2C19, 0x2C49, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_054[] = { - { 0x0533, 0x0563, 0x0000, 0x0000 }, - { 0x1E28, 0x1E29, 0x0000, 0x0000 }, - { 0x1F29, 0x1F21, 0x0000, 0x0000 }, - { 0x2C1A, 0x2C4A, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_055[] = { - { 0x0136, 0x0137, 0x0000, 0x0000 }, - { 0x0532, 0x0562, 0x0000, 0x0000 }, - { 0x1F28, 0x1F20, 0x0000, 0x0000 }, - { 0x2C1B, 0x2C4B, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_056[] = { - { 0x0139, 0x013A, 0x0000, 0x0000 }, - { 0x053D, 0x056D, 0x0000, 0x0000 }, - { 0x1E26, 0x1E27, 0x0000, 0x0000 }, - { 0x2C14, 0x2C44, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_057[] = { - { 0x023B, 0x023C, 0x0000, 0x0000 }, - { 0x053C, 0x056C, 0x0000, 0x0000 }, - { 0x2C15, 0x2C45, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_058[] = { - { 0x013B, 0x013C, 0x0000, 0x0000 }, - { 0x053F, 0x056F, 0x0000, 0x0000 }, - { 0x1E24, 0x1E25, 0x0000, 0x0000 }, - { 0x2C16, 0x2C46, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_059[] = { - { 0x053E, 0x056E, 0x0000, 0x0000 }, - { 0x2C17, 0x2C47, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_060[] = { - { 0x013D, 0x013E, 0x0000, 0x0000 }, - { 0x0539, 0x0569, 0x0000, 0x0000 }, - { 0x1E22, 0x1E23, 0x0000, 0x0000 }, - { 0x2C10, 0x2C40, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_061[] = { - { 0x0538, 0x0568, 0x0000, 0x0000 }, - { 0x2C11, 0x2C41, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_062[] = { - { 0x013F, 0x0140, 0x0000, 0x0000 }, - { 0x053B, 0x056B, 0x0000, 0x0000 }, - { 0x1E20, 0x1E21, 0x0000, 0x0000 }, - { 0x2C12, 0x2C42, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_063[] = { - { 0x023D, 0x019A, 0x0000, 0x0000 }, - { 0x053A, 0x056A, 0x0000, 0x0000 }, - { 0x2C13, 0x2C43, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_064[] = { - { 0x0141, 0x0142, 0x0000, 0x0000 }, - { 0x0545, 0x0575, 0x0000, 0x0000 }, - { 0x1E5E, 0x1E5F, 0x0000, 0x0000 }, - { 0x1F5F, 0x1F57, 0x0000, 0x0000 }, - { 0x2161, 0x2171, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_065[] = { - { 0x0041, 0x0061, 0x0000, 0x0000 }, - { 0x0544, 0x0574, 0x0000, 0x0000 }, - { 0x2160, 0x2170, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_066[] = { - { 0x0042, 0x0062, 0x0000, 0x0000 }, - { 0x0143, 0x0144, 0x0000, 0x0000 }, - { 0x0547, 0x0577, 0x0000, 0x0000 }, - { 0x1E5C, 0x1E5D, 0x0000, 0x0000 }, - { 0x1F5D, 0x1F55, 0x0000, 0x0000 }, - { 0x2163, 0x2173, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_067[] = { - { 0x0043, 0x0063, 0x0000, 0x0000 }, - { 0x0241, 0x0294, 0x0000, 0x0000 }, - { 0x0546, 0x0576, 0x0000, 0x0000 }, - { 0x2162, 0x2172, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_068[] = { - { 0x0044, 0x0064, 0x0000, 0x0000 }, - { 0x0145, 0x0146, 0x0000, 0x0000 }, - { 0x0541, 0x0571, 0x0000, 0x0000 }, - { 0x1E5A, 0x1E5B, 0x0000, 0x0000 }, - { 0x1F5B, 0x1F53, 0x0000, 0x0000 }, - { 0x2165, 0x2175, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_069[] = { - { 0x0045, 0x0065, 0x0000, 0x0000 }, - { 0x0540, 0x0570, 0x0000, 0x0000 }, - { 0x2164, 0x2174, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_070[] = { - { 0x0046, 0x0066, 0x0000, 0x0000 }, - { 0x0147, 0x0148, 0x0000, 0x0000 }, - { 0x0345, 0x03B9, 0x0000, 0x0000 }, - { 0x0543, 0x0573, 0x0000, 0x0000 }, - { 0x1E58, 0x1E59, 0x0000, 0x0000 }, - { 0x1F59, 0x1F51, 0x0000, 0x0000 }, - { 0x2167, 0x2177, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_071[] = { - { 0x0047, 0x0067, 0x0000, 0x0000 }, - { 0x0542, 0x0572, 0x0000, 0x0000 }, - { 0x2166, 0x2176, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_072[] = { - { 0x0048, 0x0068, 0x0000, 0x0000 }, - { 0x0149, 0x02BC, 0x006E, 0x0000 }, - { 0x054D, 0x057D, 0x0000, 0x0000 }, - { 0x1E56, 0x1E57, 0x0000, 0x0000 }, - { 0x2169, 0x2179, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_073[] = { - { 0x0049, 0x0069, 0x0000, 0x0000 }, - { 0x054C, 0x057C, 0x0000, 0x0000 }, - { 0x1F56, 0x03C5, 0x0313, 0x0342 }, - { 0x2168, 0x2178, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_074[] = { - { 0x004A, 0x006A, 0x0000, 0x0000 }, - { 0x054F, 0x057F, 0x0000, 0x0000 }, - { 0x1E54, 0x1E55, 0x0000, 0x0000 }, - { 0x216B, 0x217B, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_075[] = { - { 0x004B, 0x006B, 0x0000, 0x0000 }, - { 0x014A, 0x014B, 0x0000, 0x0000 }, - { 0x054E, 0x057E, 0x0000, 0x0000 }, - { 0x1F54, 0x03C5, 0x0313, 0x0301 }, - { 0x216A, 0x217A, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_076[] = { - { 0x004C, 0x006C, 0x0000, 0x0000 }, - { 0x0549, 0x0579, 0x0000, 0x0000 }, - { 0x1E52, 0x1E53, 0x0000, 0x0000 }, - { 0x216D, 0x217D, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_077[] = { - { 0x004D, 0x006D, 0x0000, 0x0000 }, - { 0x014C, 0x014D, 0x0000, 0x0000 }, - { 0x0548, 0x0578, 0x0000, 0x0000 }, - { 0x1F52, 0x03C5, 0x0313, 0x0300 }, - { 0x216C, 0x217C, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_078[] = { - { 0x004E, 0x006E, 0x0000, 0x0000 }, - { 0x054B, 0x057B, 0x0000, 0x0000 }, - { 0x1E50, 0x1E51, 0x0000, 0x0000 }, - { 0x216F, 0x217F, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_079[] = { - { 0x004F, 0x006F, 0x0000, 0x0000 }, - { 0x014E, 0x014F, 0x0000, 0x0000 }, - { 0x054A, 0x057A, 0x0000, 0x0000 }, - { 0x1F50, 0x03C5, 0x0313, 0x0000 }, - { 0x216E, 0x217E, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_080[] = { - { 0x0050, 0x0070, 0x0000, 0x0000 }, - { 0x0555, 0x0585, 0x0000, 0x0000 }, - { 0x1E4E, 0x1E4F, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_081[] = { - { 0x0051, 0x0071, 0x0000, 0x0000 }, - { 0x0150, 0x0151, 0x0000, 0x0000 }, - { 0x0554, 0x0584, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_082[] = { - { 0x0052, 0x0072, 0x0000, 0x0000 }, - { 0x1E4C, 0x1E4D, 0x0000, 0x0000 }, - { 0x1F4D, 0x1F45, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_083[] = { - { 0x0053, 0x0073, 0x0000, 0x0000 }, - { 0x0152, 0x0153, 0x0000, 0x0000 }, - { 0x0556, 0x0586, 0x0000, 0x0000 }, - { 0x1F4C, 0x1F44, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_084[] = { - { 0x0054, 0x0074, 0x0000, 0x0000 }, - { 0x0551, 0x0581, 0x0000, 0x0000 }, - { 0x1E4A, 0x1E4B, 0x0000, 0x0000 }, - { 0x1F4B, 0x1F43, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_085[] = { - { 0x0055, 0x0075, 0x0000, 0x0000 }, - { 0x0154, 0x0155, 0x0000, 0x0000 }, - { 0x0550, 0x0580, 0x0000, 0x0000 }, - { 0x1F4A, 0x1F42, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_086[] = { - { 0x0056, 0x0076, 0x0000, 0x0000 }, - { 0x0553, 0x0583, 0x0000, 0x0000 }, - { 0x1E48, 0x1E49, 0x0000, 0x0000 }, - { 0x1F49, 0x1F41, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_087[] = { - { 0x0057, 0x0077, 0x0000, 0x0000 }, - { 0x0156, 0x0157, 0x0000, 0x0000 }, - { 0x0552, 0x0582, 0x0000, 0x0000 }, - { 0x1F48, 0x1F40, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_088[] = { - { 0x0058, 0x0078, 0x0000, 0x0000 }, - { 0x1E46, 0x1E47, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_089[] = { - { 0x0059, 0x0079, 0x0000, 0x0000 }, - { 0x0158, 0x0159, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_090[] = { - { 0x005A, 0x007A, 0x0000, 0x0000 }, - { 0x1E44, 0x1E45, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_091[] = { - { 0x015A, 0x015B, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_092[] = { - { 0x1E42, 0x1E43, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_093[] = { - { 0x015C, 0x015D, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_094[] = { - { 0x1E40, 0x1E41, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_095[] = { - { 0x015E, 0x015F, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_096[] = { - { 0x0464, 0x0465, 0x0000, 0x0000 }, - { 0x1E7E, 0x1E7F, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_097[] = { - { 0x0160, 0x0161, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_098[] = { - { 0x0466, 0x0467, 0x0000, 0x0000 }, - { 0x1E7C, 0x1E7D, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_099[] = { - { 0x0162, 0x0163, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_100[] = { - { 0x0460, 0x0461, 0x0000, 0x0000 }, - { 0x1E7A, 0x1E7B, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_101[] = { - { 0x0164, 0x0165, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_102[] = { - { 0x0462, 0x0463, 0x0000, 0x0000 }, - { 0x1E78, 0x1E79, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_103[] = { - { 0x0166, 0x0167, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_104[] = { - { 0x046C, 0x046D, 0x0000, 0x0000 }, - { 0x1E76, 0x1E77, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_105[] = { - { 0x0168, 0x0169, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_106[] = { - { 0x046E, 0x046F, 0x0000, 0x0000 }, - { 0x1E74, 0x1E75, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_107[] = { - { 0x016A, 0x016B, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_108[] = { - { 0x0468, 0x0469, 0x0000, 0x0000 }, - { 0x1E72, 0x1E73, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_109[] = { - { 0x016C, 0x016D, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_110[] = { - { 0x046A, 0x046B, 0x0000, 0x0000 }, - { 0x1E70, 0x1E71, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_111[] = { - { 0x016E, 0x016F, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_112[] = { - { 0x0474, 0x0475, 0x0000, 0x0000 }, - { 0x1E6E, 0x1E6F, 0x0000, 0x0000 }, - { 0x1F6F, 0x1F67, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_113[] = { - { 0x0170, 0x0171, 0x0000, 0x0000 }, - { 0x1F6E, 0x1F66, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_114[] = { - { 0x0476, 0x0477, 0x0000, 0x0000 }, - { 0x1E6C, 0x1E6D, 0x0000, 0x0000 }, - { 0x1F6D, 0x1F65, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_115[] = { - { 0x0172, 0x0173, 0x0000, 0x0000 }, - { 0x1F6C, 0x1F64, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_116[] = { - { 0x0470, 0x0471, 0x0000, 0x0000 }, - { 0x1E6A, 0x1E6B, 0x0000, 0x0000 }, - { 0x1F6B, 0x1F63, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_117[] = { - { 0x0174, 0x0175, 0x0000, 0x0000 }, - { 0x1F6A, 0x1F62, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_118[] = { - { 0x0472, 0x0473, 0x0000, 0x0000 }, - { 0x1E68, 0x1E69, 0x0000, 0x0000 }, - { 0x1F69, 0x1F61, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_119[] = { - { 0x0176, 0x0177, 0x0000, 0x0000 }, - { 0x1F68, 0x1F60, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_120[] = { - { 0x0179, 0x017A, 0x0000, 0x0000 }, - { 0x047C, 0x047D, 0x0000, 0x0000 }, - { 0x1E66, 0x1E67, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_121[] = { - { 0x0178, 0x00FF, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_122[] = { - { 0x017B, 0x017C, 0x0000, 0x0000 }, - { 0x047E, 0x047F, 0x0000, 0x0000 }, - { 0x1E64, 0x1E65, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_124[] = { - { 0x017D, 0x017E, 0x0000, 0x0000 }, - { 0x0478, 0x0479, 0x0000, 0x0000 }, - { 0x1E62, 0x1E63, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_126[] = { - { 0x017F, 0x0073, 0x0000, 0x0000 }, - { 0x047A, 0x047B, 0x0000, 0x0000 }, - { 0x1E60, 0x1E61, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_128[] = { - { 0x0181, 0x0253, 0x0000, 0x0000 }, - { 0x1F9F, 0x1F27, 0x03B9, 0x0000 }, - { 0x2CAC, 0x2CAD, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_129[] = { - { 0x1F9E, 0x1F26, 0x03B9, 0x0000 } -}; - -static const CaseFoldMapping case_fold_130[] = { - { 0x0587, 0x0565, 0x0582, 0x0000 }, - { 0x1F9D, 0x1F25, 0x03B9, 0x0000 }, - { 0x2CAE, 0x2CAF, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_131[] = { - { 0x0182, 0x0183, 0x0000, 0x0000 }, - { 0x1F9C, 0x1F24, 0x03B9, 0x0000 } -}; - -static const CaseFoldMapping case_fold_132[] = { - { 0x0480, 0x0481, 0x0000, 0x0000 }, - { 0x1E9A, 0x0061, 0x02BE, 0x0000 }, - { 0x1F9B, 0x1F23, 0x03B9, 0x0000 }, - { 0x2CA8, 0x2CA9, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_133[] = { - { 0x0184, 0x0185, 0x0000, 0x0000 }, - { 0x0386, 0x03AC, 0x0000, 0x0000 }, - { 0x1E9B, 0x1E61, 0x0000, 0x0000 }, - { 0x1F9A, 0x1F22, 0x03B9, 0x0000 } -}; - -static const CaseFoldMapping case_fold_134[] = { - { 0x0187, 0x0188, 0x0000, 0x0000 }, - { 0x1E98, 0x0077, 0x030A, 0x0000 }, - { 0x1F99, 0x1F21, 0x03B9, 0x0000 }, - { 0x2CAA, 0x2CAB, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_135[] = { - { 0x0186, 0x0254, 0x0000, 0x0000 }, - { 0x1E99, 0x0079, 0x030A, 0x0000 }, - { 0x1F98, 0x1F20, 0x03B9, 0x0000 } -}; - -static const CaseFoldMapping case_fold_136[] = { - { 0x0189, 0x0256, 0x0000, 0x0000 }, - { 0x048C, 0x048D, 0x0000, 0x0000 }, - { 0x1E96, 0x0068, 0x0331, 0x0000 }, - { 0x1F97, 0x1F27, 0x03B9, 0x0000 }, - { 0x2CA4, 0x2CA5, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_137[] = { - { 0x038A, 0x03AF, 0x0000, 0x0000 }, - { 0x1E97, 0x0074, 0x0308, 0x0000 }, - { 0x1F96, 0x1F26, 0x03B9, 0x0000 } -}; - -static const CaseFoldMapping case_fold_138[] = { - { 0x018B, 0x018C, 0x0000, 0x0000 }, - { 0x0389, 0x03AE, 0x0000, 0x0000 }, - { 0x048E, 0x048F, 0x0000, 0x0000 }, - { 0x1E94, 0x1E95, 0x0000, 0x0000 }, - { 0x1F95, 0x1F25, 0x03B9, 0x0000 }, - { 0x2CA6, 0x2CA7, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_139[] = { - { 0x018A, 0x0257, 0x0000, 0x0000 }, - { 0x0388, 0x03AD, 0x0000, 0x0000 }, - { 0x1F94, 0x1F24, 0x03B9, 0x0000 } -}; - -static const CaseFoldMapping case_fold_140[] = { - { 0x038F, 0x03CE, 0x0000, 0x0000 }, - { 0x1E92, 0x1E93, 0x0000, 0x0000 }, - { 0x1F93, 0x1F23, 0x03B9, 0x0000 }, - { 0x2CA0, 0x2CA1, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_141[] = { - { 0x038E, 0x03CD, 0x0000, 0x0000 }, - { 0x1F92, 0x1F22, 0x03B9, 0x0000 } -}; - -static const CaseFoldMapping case_fold_142[] = { - { 0x018F, 0x0259, 0x0000, 0x0000 }, - { 0x048A, 0x048B, 0x0000, 0x0000 }, - { 0x1E90, 0x1E91, 0x0000, 0x0000 }, - { 0x1F91, 0x1F21, 0x03B9, 0x0000 }, - { 0x2CA2, 0x2CA3, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_143[] = { - { 0x018E, 0x01DD, 0x0000, 0x0000 }, - { 0x038C, 0x03CC, 0x0000, 0x0000 }, - { 0x1F90, 0x1F20, 0x03B9, 0x0000 } -}; - -static const CaseFoldMapping case_fold_144[] = { - { 0x0191, 0x0192, 0x0000, 0x0000 }, - { 0x0393, 0x03B3, 0x0000, 0x0000 }, - { 0x0494, 0x0495, 0x0000, 0x0000 }, - { 0x1E8E, 0x1E8F, 0x0000, 0x0000 }, - { 0x1F8F, 0x1F07, 0x03B9, 0x0000 }, - { 0x2CBC, 0x2CBD, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_145[] = { - { 0x0190, 0x025B, 0x0000, 0x0000 }, - { 0x0392, 0x03B2, 0x0000, 0x0000 }, - { 0x1F8E, 0x1F06, 0x03B9, 0x0000 } -}; - -static const CaseFoldMapping case_fold_146[] = { - { 0x0193, 0x0260, 0x0000, 0x0000 }, - { 0x0391, 0x03B1, 0x0000, 0x0000 }, - { 0x0496, 0x0497, 0x0000, 0x0000 }, - { 0x1E8C, 0x1E8D, 0x0000, 0x0000 }, - { 0x1F8D, 0x1F05, 0x03B9, 0x0000 }, - { 0x24B6, 0x24D0, 0x0000, 0x0000 }, - { 0x2CBE, 0x2CBF, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_147[] = { - { 0x0390, 0x03B9, 0x0308, 0x0301 }, - { 0x1F8C, 0x1F04, 0x03B9, 0x0000 }, - { 0x24B7, 0x24D1, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_148[] = { - { 0x0397, 0x03B7, 0x0000, 0x0000 }, - { 0x0490, 0x0491, 0x0000, 0x0000 }, - { 0x1E8A, 0x1E8B, 0x0000, 0x0000 }, - { 0x1F8B, 0x1F03, 0x03B9, 0x0000 }, - { 0x2CB8, 0x2CB9, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_149[] = { - { 0x0194, 0x0263, 0x0000, 0x0000 }, - { 0x0396, 0x03B6, 0x0000, 0x0000 }, - { 0x1F8A, 0x1F02, 0x03B9, 0x0000 } -}; - -static const CaseFoldMapping case_fold_150[] = { - { 0x0197, 0x0268, 0x0000, 0x0000 }, - { 0x0395, 0x03B5, 0x0000, 0x0000 }, - { 0x0492, 0x0493, 0x0000, 0x0000 }, - { 0x1E88, 0x1E89, 0x0000, 0x0000 }, - { 0x1F89, 0x1F01, 0x03B9, 0x0000 }, - { 0x2CBA, 0x2CBB, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_151[] = { - { 0x0196, 0x0269, 0x0000, 0x0000 }, - { 0x0394, 0x03B4, 0x0000, 0x0000 }, - { 0x1F88, 0x1F00, 0x03B9, 0x0000 } -}; - -static const CaseFoldMapping case_fold_152[] = { - { 0x039B, 0x03BB, 0x0000, 0x0000 }, - { 0x049C, 0x049D, 0x0000, 0x0000 }, - { 0x1E86, 0x1E87, 0x0000, 0x0000 }, - { 0x1F87, 0x1F07, 0x03B9, 0x0000 }, - { 0x24BC, 0x24D6, 0x0000, 0x0000 }, - { 0x2CB4, 0x2CB5, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_153[] = { - { 0x0198, 0x0199, 0x0000, 0x0000 }, - { 0x039A, 0x03BA, 0x0000, 0x0000 }, - { 0x1F86, 0x1F06, 0x03B9, 0x0000 }, - { 0x24BD, 0x24D7, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_154[] = { - { 0x0399, 0x03B9, 0x0000, 0x0000 }, - { 0x049E, 0x049F, 0x0000, 0x0000 }, - { 0x1E84, 0x1E85, 0x0000, 0x0000 }, - { 0x1F85, 0x1F05, 0x03B9, 0x0000 }, - { 0x24BE, 0x24D8, 0x0000, 0x0000 }, - { 0x2CB6, 0x2CB7, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_155[] = { - { 0x0398, 0x03B8, 0x0000, 0x0000 }, - { 0x1F84, 0x1F04, 0x03B9, 0x0000 }, - { 0x24BF, 0x24D9, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_156[] = { - { 0x019D, 0x0272, 0x0000, 0x0000 }, - { 0x039F, 0x03BF, 0x0000, 0x0000 }, - { 0x0498, 0x0499, 0x0000, 0x0000 }, - { 0x1E82, 0x1E83, 0x0000, 0x0000 }, - { 0x1F83, 0x1F03, 0x03B9, 0x0000 }, - { 0x24B8, 0x24D2, 0x0000, 0x0000 }, - { 0x2CB0, 0x2CB1, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_157[] = { - { 0x019C, 0x026F, 0x0000, 0x0000 }, - { 0x039E, 0x03BE, 0x0000, 0x0000 }, - { 0x1F82, 0x1F02, 0x03B9, 0x0000 }, - { 0x24B9, 0x24D3, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_158[] = { - { 0x019F, 0x0275, 0x0000, 0x0000 }, - { 0x039D, 0x03BD, 0x0000, 0x0000 }, - { 0x049A, 0x049B, 0x0000, 0x0000 }, - { 0x1E80, 0x1E81, 0x0000, 0x0000 }, - { 0x1F81, 0x1F01, 0x03B9, 0x0000 }, - { 0x24BA, 0x24D4, 0x0000, 0x0000 }, - { 0x2CB2, 0x2CB3, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_159[] = { - { 0x039C, 0x03BC, 0x0000, 0x0000 }, - { 0x1F80, 0x1F00, 0x03B9, 0x0000 }, - { 0x24BB, 0x24D5, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_160[] = { - { 0x03A3, 0x03C3, 0x0000, 0x0000 }, - { 0x04A4, 0x04A5, 0x0000, 0x0000 }, - { 0x10B0, 0x2D10, 0x0000, 0x0000 }, - { 0x1EBE, 0x1EBF, 0x0000, 0x0000 }, - { 0x2C8C, 0x2C8D, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_161[] = { - { 0x01A0, 0x01A1, 0x0000, 0x0000 }, - { 0x10B1, 0x2D11, 0x0000, 0x0000 }, - { 0x1FBE, 0x03B9, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_162[] = { - { 0x03A1, 0x03C1, 0x0000, 0x0000 }, - { 0x04A6, 0x04A7, 0x0000, 0x0000 }, - { 0x10B2, 0x2D12, 0x0000, 0x0000 }, - { 0x1EBC, 0x1EBD, 0x0000, 0x0000 }, - { 0x2C8E, 0x2C8F, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_163[] = { - { 0x01A2, 0x01A3, 0x0000, 0x0000 }, - { 0x03A0, 0x03C0, 0x0000, 0x0000 }, - { 0x10B3, 0x2D13, 0x0000, 0x0000 }, - { 0x1FBC, 0x03B1, 0x03B9, 0x0000 } -}; - -static const CaseFoldMapping case_fold_164[] = { - { 0x03A7, 0x03C7, 0x0000, 0x0000 }, - { 0x04A0, 0x04A1, 0x0000, 0x0000 }, - { 0x10B4, 0x2D14, 0x0000, 0x0000 }, - { 0x1EBA, 0x1EBB, 0x0000, 0x0000 }, - { 0x1FBB, 0x1F71, 0x0000, 0x0000 }, - { 0x2C88, 0x2C89, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_165[] = { - { 0x01A4, 0x01A5, 0x0000, 0x0000 }, - { 0x03A6, 0x03C6, 0x0000, 0x0000 }, - { 0x10B5, 0x2D15, 0x0000, 0x0000 }, - { 0x1FBA, 0x1F70, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_166[] = { - { 0x01A7, 0x01A8, 0x0000, 0x0000 }, - { 0x03A5, 0x03C5, 0x0000, 0x0000 }, - { 0x04A2, 0x04A3, 0x0000, 0x0000 }, - { 0x10B6, 0x2D16, 0x0000, 0x0000 }, - { 0x1EB8, 0x1EB9, 0x0000, 0x0000 }, - { 0x1FB9, 0x1FB1, 0x0000, 0x0000 }, - { 0x2C8A, 0x2C8B, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_167[] = { - { 0x01A6, 0x0280, 0x0000, 0x0000 }, - { 0x03A4, 0x03C4, 0x0000, 0x0000 }, - { 0x10B7, 0x2D17, 0x0000, 0x0000 }, - { 0x1FB8, 0x1FB0, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_168[] = { - { 0x01A9, 0x0283, 0x0000, 0x0000 }, - { 0x03AB, 0x03CB, 0x0000, 0x0000 }, - { 0x04AC, 0x04AD, 0x0000, 0x0000 }, - { 0x10B8, 0x2D18, 0x0000, 0x0000 }, - { 0x1EB6, 0x1EB7, 0x0000, 0x0000 }, - { 0x1FB7, 0x03B1, 0x0342, 0x03B9 }, - { 0x2C84, 0x2C85, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_169[] = { - { 0x03AA, 0x03CA, 0x0000, 0x0000 }, - { 0x10B9, 0x2D19, 0x0000, 0x0000 }, - { 0x1FB6, 0x03B1, 0x0342, 0x0000 } -}; - -static const CaseFoldMapping case_fold_170[] = { - { 0x03A9, 0x03C9, 0x0000, 0x0000 }, - { 0x04AE, 0x04AF, 0x0000, 0x0000 }, - { 0x10BA, 0x2D1A, 0x0000, 0x0000 }, - { 0x1EB4, 0x1EB5, 0x0000, 0x0000 }, - { 0x2C86, 0x2C87, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_171[] = { - { 0x03A8, 0x03C8, 0x0000, 0x0000 }, - { 0x10BB, 0x2D1B, 0x0000, 0x0000 }, - { 0x1FB4, 0x03AC, 0x03B9, 0x0000 } -}; - -static const CaseFoldMapping case_fold_172[] = { - { 0x04A8, 0x04A9, 0x0000, 0x0000 }, - { 0x10BC, 0x2D1C, 0x0000, 0x0000 }, - { 0x1EB2, 0x1EB3, 0x0000, 0x0000 }, - { 0x1FB3, 0x03B1, 0x03B9, 0x0000 }, - { 0x2C80, 0x2C81, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_173[] = { - { 0x01AC, 0x01AD, 0x0000, 0x0000 }, - { 0x10BD, 0x2D1D, 0x0000, 0x0000 }, - { 0x1FB2, 0x1F70, 0x03B9, 0x0000 } -}; - -static const CaseFoldMapping case_fold_174[] = { - { 0x01AF, 0x01B0, 0x0000, 0x0000 }, - { 0x04AA, 0x04AB, 0x0000, 0x0000 }, - { 0x10BE, 0x2D1E, 0x0000, 0x0000 }, - { 0x1EB0, 0x1EB1, 0x0000, 0x0000 }, - { 0x2C82, 0x2C83, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_175[] = { - { 0x01AE, 0x0288, 0x0000, 0x0000 }, - { 0x10BF, 0x2D1F, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_176[] = { - { 0x01B1, 0x028A, 0x0000, 0x0000 }, - { 0x04B4, 0x04B5, 0x0000, 0x0000 }, - { 0x10A0, 0x2D00, 0x0000, 0x0000 }, - { 0x1EAE, 0x1EAF, 0x0000, 0x0000 }, - { 0x1FAF, 0x1F67, 0x03B9, 0x0000 }, - { 0x2C9C, 0x2C9D, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_177[] = { - { 0x10A1, 0x2D01, 0x0000, 0x0000 }, - { 0x1FAE, 0x1F66, 0x03B9, 0x0000 } -}; - -static const CaseFoldMapping case_fold_178[] = { - { 0x01B3, 0x01B4, 0x0000, 0x0000 }, - { 0x04B6, 0x04B7, 0x0000, 0x0000 }, - { 0x10A2, 0x2D02, 0x0000, 0x0000 }, - { 0x1EAC, 0x1EAD, 0x0000, 0x0000 }, - { 0x1FAD, 0x1F65, 0x03B9, 0x0000 }, - { 0x2C9E, 0x2C9F, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_179[] = { - { 0x01B2, 0x028B, 0x0000, 0x0000 }, - { 0x03B0, 0x03C5, 0x0308, 0x0301 }, - { 0x10A3, 0x2D03, 0x0000, 0x0000 }, - { 0x1FAC, 0x1F64, 0x03B9, 0x0000 } -}; - -static const CaseFoldMapping case_fold_180[] = { - { 0x01B5, 0x01B6, 0x0000, 0x0000 }, - { 0x04B0, 0x04B1, 0x0000, 0x0000 }, - { 0x10A4, 0x2D04, 0x0000, 0x0000 }, - { 0x1EAA, 0x1EAB, 0x0000, 0x0000 }, - { 0x1FAB, 0x1F63, 0x03B9, 0x0000 }, - { 0x2C98, 0x2C99, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_181[] = { - { 0x00B5, 0x03BC, 0x0000, 0x0000 }, - { 0x10A5, 0x2D05, 0x0000, 0x0000 }, - { 0x1FAA, 0x1F62, 0x03B9, 0x0000 } -}; - -static const CaseFoldMapping case_fold_182[] = { - { 0x01B7, 0x0292, 0x0000, 0x0000 }, - { 0x04B2, 0x04B3, 0x0000, 0x0000 }, - { 0x10A6, 0x2D06, 0x0000, 0x0000 }, - { 0x1EA8, 0x1EA9, 0x0000, 0x0000 }, - { 0x1FA9, 0x1F61, 0x03B9, 0x0000 }, - { 0x2C9A, 0x2C9B, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_183[] = { - { 0x10A7, 0x2D07, 0x0000, 0x0000 }, - { 0x1FA8, 0x1F60, 0x03B9, 0x0000 } -}; - -static const CaseFoldMapping case_fold_184[] = { - { 0x04BC, 0x04BD, 0x0000, 0x0000 }, - { 0x10A8, 0x2D08, 0x0000, 0x0000 }, - { 0x1EA6, 0x1EA7, 0x0000, 0x0000 }, - { 0x1FA7, 0x1F67, 0x03B9, 0x0000 }, - { 0x2C94, 0x2C95, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_185[] = { - { 0x01B8, 0x01B9, 0x0000, 0x0000 }, - { 0x10A9, 0x2D09, 0x0000, 0x0000 }, - { 0x1FA6, 0x1F66, 0x03B9, 0x0000 } -}; - -static const CaseFoldMapping case_fold_186[] = { - { 0x04BE, 0x04BF, 0x0000, 0x0000 }, - { 0x10AA, 0x2D0A, 0x0000, 0x0000 }, - { 0x1EA4, 0x1EA5, 0x0000, 0x0000 }, - { 0x1FA5, 0x1F65, 0x03B9, 0x0000 }, - { 0x2C96, 0x2C97, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_187[] = { - { 0x10AB, 0x2D0B, 0x0000, 0x0000 }, - { 0x1FA4, 0x1F64, 0x03B9, 0x0000 } -}; - -static const CaseFoldMapping case_fold_188[] = { - { 0x04B8, 0x04B9, 0x0000, 0x0000 }, - { 0x10AC, 0x2D0C, 0x0000, 0x0000 }, - { 0x1EA2, 0x1EA3, 0x0000, 0x0000 }, - { 0x1FA3, 0x1F63, 0x03B9, 0x0000 }, - { 0x2C90, 0x2C91, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_189[] = { - { 0x01BC, 0x01BD, 0x0000, 0x0000 }, - { 0x10AD, 0x2D0D, 0x0000, 0x0000 }, - { 0x1FA2, 0x1F62, 0x03B9, 0x0000 } -}; - -static const CaseFoldMapping case_fold_190[] = { - { 0x04BA, 0x04BB, 0x0000, 0x0000 }, - { 0x10AE, 0x2D0E, 0x0000, 0x0000 }, - { 0x1EA0, 0x1EA1, 0x0000, 0x0000 }, - { 0x1FA1, 0x1F61, 0x03B9, 0x0000 }, - { 0x2C92, 0x2C93, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_191[] = { - { 0x10AF, 0x2D0F, 0x0000, 0x0000 }, - { 0x1FA0, 0x1F60, 0x03B9, 0x0000 } -}; - -static const CaseFoldMapping case_fold_192[] = { - { 0x00C0, 0x00E0, 0x0000, 0x0000 }, - { 0x1EDE, 0x1EDF, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_193[] = { - { 0x00C1, 0x00E1, 0x0000, 0x0000 }, - { 0x03C2, 0x03C3, 0x0000, 0x0000 }, - { 0x04C5, 0x04C6, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_194[] = { - { 0x00C2, 0x00E2, 0x0000, 0x0000 }, - { 0x1EDC, 0x1EDD, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_195[] = { - { 0x00C3, 0x00E3, 0x0000, 0x0000 }, - { 0x04C7, 0x04C8, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_196[] = { - { 0x00C4, 0x00E4, 0x0000, 0x0000 }, - { 0x01C5, 0x01C6, 0x0000, 0x0000 }, - { 0x1EDA, 0x1EDB, 0x0000, 0x0000 }, - { 0x1FDB, 0x1F77, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_197[] = { - { 0x00C5, 0x00E5, 0x0000, 0x0000 }, - { 0x01C4, 0x01C6, 0x0000, 0x0000 }, - { 0x04C1, 0x04C2, 0x0000, 0x0000 }, - { 0x1FDA, 0x1F76, 0x0000, 0x0000 }, - { 0xFF3A, 0xFF5A, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_198[] = { - { 0x00C6, 0x00E6, 0x0000, 0x0000 }, - { 0x01C7, 0x01C9, 0x0000, 0x0000 }, - { 0x1ED8, 0x1ED9, 0x0000, 0x0000 }, - { 0x1FD9, 0x1FD1, 0x0000, 0x0000 }, - { 0xFF39, 0xFF59, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_199[] = { - { 0x00C7, 0x00E7, 0x0000, 0x0000 }, - { 0x04C3, 0x04C4, 0x0000, 0x0000 }, - { 0x1FD8, 0x1FD0, 0x0000, 0x0000 }, - { 0xFF38, 0xFF58, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_200[] = { - { 0x00C8, 0x00E8, 0x0000, 0x0000 }, - { 0x1ED6, 0x1ED7, 0x0000, 0x0000 }, - { 0x1FD7, 0x03B9, 0x0308, 0x0342 }, - { 0xFF37, 0xFF57, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_201[] = { - { 0x00C9, 0x00E9, 0x0000, 0x0000 }, - { 0x01C8, 0x01C9, 0x0000, 0x0000 }, - { 0x04CD, 0x04CE, 0x0000, 0x0000 }, - { 0x1FD6, 0x03B9, 0x0342, 0x0000 }, - { 0xFF36, 0xFF56, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_202[] = { - { 0x00CA, 0x00EA, 0x0000, 0x0000 }, - { 0x01CB, 0x01CC, 0x0000, 0x0000 }, - { 0x1ED4, 0x1ED5, 0x0000, 0x0000 }, - { 0xFF35, 0xFF55, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_203[] = { - { 0x00CB, 0x00EB, 0x0000, 0x0000 }, - { 0x01CA, 0x01CC, 0x0000, 0x0000 }, - { 0xFF34, 0xFF54, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_204[] = { - { 0x00CC, 0x00EC, 0x0000, 0x0000 }, - { 0x01CD, 0x01CE, 0x0000, 0x0000 }, - { 0x1ED2, 0x1ED3, 0x0000, 0x0000 }, - { 0x1FD3, 0x03B9, 0x0308, 0x0301 }, - { 0x2CE0, 0x2CE1, 0x0000, 0x0000 }, - { 0xFF33, 0xFF53, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_205[] = { - { 0x00CD, 0x00ED, 0x0000, 0x0000 }, - { 0x04C9, 0x04CA, 0x0000, 0x0000 }, - { 0x1FD2, 0x03B9, 0x0308, 0x0300 }, - { 0xFF32, 0xFF52, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_206[] = { - { 0x00CE, 0x00EE, 0x0000, 0x0000 }, - { 0x01CF, 0x01D0, 0x0000, 0x0000 }, - { 0x1ED0, 0x1ED1, 0x0000, 0x0000 }, - { 0x2CE2, 0x2CE3, 0x0000, 0x0000 }, - { 0xFF31, 0xFF51, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_207[] = { - { 0x00CF, 0x00EF, 0x0000, 0x0000 }, - { 0x04CB, 0x04CC, 0x0000, 0x0000 }, - { 0xFF30, 0xFF50, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_208[] = { - { 0x00D0, 0x00F0, 0x0000, 0x0000 }, - { 0x01D1, 0x01D2, 0x0000, 0x0000 }, - { 0x04D4, 0x04D5, 0x0000, 0x0000 }, - { 0x10C0, 0x2D20, 0x0000, 0x0000 }, - { 0x1ECE, 0x1ECF, 0x0000, 0x0000 }, - { 0xFF2F, 0xFF4F, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_209[] = { - { 0x00D1, 0x00F1, 0x0000, 0x0000 }, - { 0x10C1, 0x2D21, 0x0000, 0x0000 }, - { 0xFF2E, 0xFF4E, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_210[] = { - { 0x00D2, 0x00F2, 0x0000, 0x0000 }, - { 0x01D3, 0x01D4, 0x0000, 0x0000 }, - { 0x03D1, 0x03B8, 0x0000, 0x0000 }, - { 0x04D6, 0x04D7, 0x0000, 0x0000 }, - { 0x10C2, 0x2D22, 0x0000, 0x0000 }, - { 0x1ECC, 0x1ECD, 0x0000, 0x0000 }, - { 0xFF2D, 0xFF4D, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_211[] = { - { 0x00D3, 0x00F3, 0x0000, 0x0000 }, - { 0x03D0, 0x03B2, 0x0000, 0x0000 }, - { 0x10C3, 0x2D23, 0x0000, 0x0000 }, - { 0x1FCC, 0x03B7, 0x03B9, 0x0000 }, - { 0xFF2C, 0xFF4C, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_212[] = { - { 0x00D4, 0x00F4, 0x0000, 0x0000 }, - { 0x01D5, 0x01D6, 0x0000, 0x0000 }, - { 0x04D0, 0x04D1, 0x0000, 0x0000 }, - { 0x10C4, 0x2D24, 0x0000, 0x0000 }, - { 0x1ECA, 0x1ECB, 0x0000, 0x0000 }, - { 0x1FCB, 0x1F75, 0x0000, 0x0000 }, - { 0xFF2B, 0xFF4B, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_213[] = { - { 0x00D5, 0x00F5, 0x0000, 0x0000 }, - { 0x03D6, 0x03C0, 0x0000, 0x0000 }, - { 0x10C5, 0x2D25, 0x0000, 0x0000 }, - { 0x1FCA, 0x1F74, 0x0000, 0x0000 }, - { 0xFF2A, 0xFF4A, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_214[] = { - { 0x00D6, 0x00F6, 0x0000, 0x0000 }, - { 0x01D7, 0x01D8, 0x0000, 0x0000 }, - { 0x03D5, 0x03C6, 0x0000, 0x0000 }, - { 0x04D2, 0x04D3, 0x0000, 0x0000 }, - { 0x1EC8, 0x1EC9, 0x0000, 0x0000 }, - { 0x1FC9, 0x1F73, 0x0000, 0x0000 }, - { 0xFF29, 0xFF49, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_215[] = { - { 0x1FC8, 0x1F72, 0x0000, 0x0000 }, - { 0xFF28, 0xFF48, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_216[] = { - { 0x00D8, 0x00F8, 0x0000, 0x0000 }, - { 0x01D9, 0x01DA, 0x0000, 0x0000 }, - { 0x04DC, 0x04DD, 0x0000, 0x0000 }, - { 0x1EC6, 0x1EC7, 0x0000, 0x0000 }, - { 0x1FC7, 0x03B7, 0x0342, 0x03B9 }, - { 0xFF27, 0xFF47, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_217[] = { - { 0x00D9, 0x00F9, 0x0000, 0x0000 }, - { 0x03DA, 0x03DB, 0x0000, 0x0000 }, - { 0x1FC6, 0x03B7, 0x0342, 0x0000 }, - { 0xFF26, 0xFF46, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_218[] = { - { 0x00DA, 0x00FA, 0x0000, 0x0000 }, - { 0x01DB, 0x01DC, 0x0000, 0x0000 }, - { 0x04DE, 0x04DF, 0x0000, 0x0000 }, - { 0x1EC4, 0x1EC5, 0x0000, 0x0000 }, - { 0xFF25, 0xFF45, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_219[] = { - { 0x00DB, 0x00FB, 0x0000, 0x0000 }, - { 0x03D8, 0x03D9, 0x0000, 0x0000 }, - { 0x1FC4, 0x03AE, 0x03B9, 0x0000 }, - { 0xFF24, 0xFF44, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_220[] = { - { 0x00DC, 0x00FC, 0x0000, 0x0000 }, - { 0x04D8, 0x04D9, 0x0000, 0x0000 }, - { 0x1EC2, 0x1EC3, 0x0000, 0x0000 }, - { 0x1FC3, 0x03B7, 0x03B9, 0x0000 }, - { 0xFF23, 0xFF43, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_221[] = { - { 0x00DD, 0x00FD, 0x0000, 0x0000 }, - { 0x03DE, 0x03DF, 0x0000, 0x0000 }, - { 0x1FC2, 0x1F74, 0x03B9, 0x0000 }, - { 0xFF22, 0xFF42, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_222[] = { - { 0x00DE, 0x00FE, 0x0000, 0x0000 }, - { 0x04DA, 0x04DB, 0x0000, 0x0000 }, - { 0x1EC0, 0x1EC1, 0x0000, 0x0000 }, - { 0xFF21, 0xFF41, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_223[] = { - { 0x00DF, 0x0073, 0x0073, 0x0000 }, - { 0x01DE, 0x01DF, 0x0000, 0x0000 }, - { 0x03DC, 0x03DD, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_224[] = { - { 0x04E4, 0x04E5, 0x0000, 0x0000 }, - { 0x24C4, 0x24DE, 0x0000, 0x0000 }, - { 0x2CCC, 0x2CCD, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_225[] = { - { 0x01E0, 0x01E1, 0x0000, 0x0000 }, - { 0x03E2, 0x03E3, 0x0000, 0x0000 }, - { 0x24C5, 0x24DF, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_226[] = { - { 0x04E6, 0x04E7, 0x0000, 0x0000 }, - { 0x24C6, 0x24E0, 0x0000, 0x0000 }, - { 0x2CCE, 0x2CCF, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_227[] = { - { 0x01E2, 0x01E3, 0x0000, 0x0000 }, - { 0x03E0, 0x03E1, 0x0000, 0x0000 }, - { 0x1FFC, 0x03C9, 0x03B9, 0x0000 }, - { 0x24C7, 0x24E1, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_228[] = { - { 0x04E0, 0x04E1, 0x0000, 0x0000 }, - { 0x1FFB, 0x1F7D, 0x0000, 0x0000 }, - { 0x24C0, 0x24DA, 0x0000, 0x0000 }, - { 0x2CC8, 0x2CC9, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_229[] = { - { 0x01E4, 0x01E5, 0x0000, 0x0000 }, - { 0x03E6, 0x03E7, 0x0000, 0x0000 }, - { 0x1FFA, 0x1F7C, 0x0000, 0x0000 }, - { 0x24C1, 0x24DB, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_230[] = { - { 0x04E2, 0x04E3, 0x0000, 0x0000 }, - { 0x1EF8, 0x1EF9, 0x0000, 0x0000 }, - { 0x1FF9, 0x1F79, 0x0000, 0x0000 }, - { 0x24C2, 0x24DC, 0x0000, 0x0000 }, - { 0x2CCA, 0x2CCB, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_231[] = { - { 0x01E6, 0x01E7, 0x0000, 0x0000 }, - { 0x03E4, 0x03E5, 0x0000, 0x0000 }, - { 0x1FF8, 0x1F78, 0x0000, 0x0000 }, - { 0x24C3, 0x24DD, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_232[] = { - { 0x04EC, 0x04ED, 0x0000, 0x0000 }, - { 0x1EF6, 0x1EF7, 0x0000, 0x0000 }, - { 0x1FF7, 0x03C9, 0x0342, 0x03B9 }, - { 0x24CC, 0x24E6, 0x0000, 0x0000 }, - { 0x2CC4, 0x2CC5, 0x0000, 0x0000 }, - { 0xFB13, 0x0574, 0x0576, 0x0000 } -}; - -static const CaseFoldMapping case_fold_233[] = { - { 0x01E8, 0x01E9, 0x0000, 0x0000 }, - { 0x03EA, 0x03EB, 0x0000, 0x0000 }, - { 0x1FF6, 0x03C9, 0x0342, 0x0000 }, - { 0x24CD, 0x24E7, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_234[] = { - { 0x04EE, 0x04EF, 0x0000, 0x0000 }, - { 0x1EF4, 0x1EF5, 0x0000, 0x0000 }, - { 0x24CE, 0x24E8, 0x0000, 0x0000 }, - { 0x2CC6, 0x2CC7, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_235[] = { - { 0x01EA, 0x01EB, 0x0000, 0x0000 }, - { 0x03E8, 0x03E9, 0x0000, 0x0000 }, - { 0x1FF4, 0x03CE, 0x03B9, 0x0000 }, - { 0x24CF, 0x24E9, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_236[] = { - { 0x04E8, 0x04E9, 0x0000, 0x0000 }, - { 0x1EF2, 0x1EF3, 0x0000, 0x0000 }, - { 0x1FF3, 0x03C9, 0x03B9, 0x0000 }, - { 0x24C8, 0x24E2, 0x0000, 0x0000 }, - { 0x2CC0, 0x2CC1, 0x0000, 0x0000 }, - { 0xFB17, 0x0574, 0x056D, 0x0000 } -}; - -static const CaseFoldMapping case_fold_237[] = { - { 0x01EC, 0x01ED, 0x0000, 0x0000 }, - { 0x03EE, 0x03EF, 0x0000, 0x0000 }, - { 0x1FF2, 0x1F7C, 0x03B9, 0x0000 }, - { 0x24C9, 0x24E3, 0x0000, 0x0000 }, - { 0xFB16, 0x057E, 0x0576, 0x0000 } -}; - -static const CaseFoldMapping case_fold_238[] = { - { 0x04EA, 0x04EB, 0x0000, 0x0000 }, - { 0x1EF0, 0x1EF1, 0x0000, 0x0000 }, - { 0x24CA, 0x24E4, 0x0000, 0x0000 }, - { 0x2CC2, 0x2CC3, 0x0000, 0x0000 }, - { 0xFB15, 0x0574, 0x056B, 0x0000 } -}; - -static const CaseFoldMapping case_fold_239[] = { - { 0x01EE, 0x01EF, 0x0000, 0x0000 }, - { 0x03EC, 0x03ED, 0x0000, 0x0000 }, - { 0x24CB, 0x24E5, 0x0000, 0x0000 }, - { 0xFB14, 0x0574, 0x0565, 0x0000 } -}; - -static const CaseFoldMapping case_fold_240[] = { - { 0x01F1, 0x01F3, 0x0000, 0x0000 }, - { 0x04F4, 0x04F5, 0x0000, 0x0000 }, - { 0x1EEE, 0x1EEF, 0x0000, 0x0000 }, - { 0x2CDC, 0x2CDD, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_241[] = { - { 0x01F0, 0x006A, 0x030C, 0x0000 } -}; - -static const CaseFoldMapping case_fold_242[] = { - { 0x03F1, 0x03C1, 0x0000, 0x0000 }, - { 0x04F6, 0x04F7, 0x0000, 0x0000 }, - { 0x1EEC, 0x1EED, 0x0000, 0x0000 }, - { 0x2CDE, 0x2CDF, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_243[] = { - { 0x01F2, 0x01F3, 0x0000, 0x0000 }, - { 0x03F0, 0x03BA, 0x0000, 0x0000 }, - { 0x1FEC, 0x1FE5, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_244[] = { - { 0x03F7, 0x03F8, 0x0000, 0x0000 }, - { 0x04F0, 0x04F1, 0x0000, 0x0000 }, - { 0x1EEA, 0x1EEB, 0x0000, 0x0000 }, - { 0x1FEB, 0x1F7B, 0x0000, 0x0000 }, - { 0x2CD8, 0x2CD9, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_245[] = { - { 0x01F4, 0x01F5, 0x0000, 0x0000 }, - { 0x1FEA, 0x1F7A, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_246[] = { - { 0x01F7, 0x01BF, 0x0000, 0x0000 }, - { 0x03F5, 0x03B5, 0x0000, 0x0000 }, - { 0x04F2, 0x04F3, 0x0000, 0x0000 }, - { 0x1EE8, 0x1EE9, 0x0000, 0x0000 }, - { 0x1FE9, 0x1FE1, 0x0000, 0x0000 }, - { 0x2CDA, 0x2CDB, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_247[] = { - { 0x01F6, 0x0195, 0x0000, 0x0000 }, - { 0x03F4, 0x03B8, 0x0000, 0x0000 }, - { 0x1FE8, 0x1FE0, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_248[] = { - { 0x1EE6, 0x1EE7, 0x0000, 0x0000 }, - { 0x1FE7, 0x03C5, 0x0308, 0x0342 }, - { 0x2CD4, 0x2CD5, 0x0000, 0x0000 }, - { 0xFB03, 0x0066, 0x0066, 0x0069 } -}; - -static const CaseFoldMapping case_fold_249[] = { - { 0x01F8, 0x01F9, 0x0000, 0x0000 }, - { 0x03FA, 0x03FB, 0x0000, 0x0000 }, - { 0x1FE6, 0x03C5, 0x0342, 0x0000 }, - { 0xFB02, 0x0066, 0x006C, 0x0000 } -}; - -static const CaseFoldMapping case_fold_250[] = { - { 0x03F9, 0x03F2, 0x0000, 0x0000 }, - { 0x1EE4, 0x1EE5, 0x0000, 0x0000 }, - { 0x2CD6, 0x2CD7, 0x0000, 0x0000 }, - { 0xFB01, 0x0066, 0x0069, 0x0000 } -}; - -static const CaseFoldMapping case_fold_251[] = { - { 0x01FA, 0x01FB, 0x0000, 0x0000 }, - { 0x1FE4, 0x03C1, 0x0313, 0x0000 }, - { 0xFB00, 0x0066, 0x0066, 0x0000 } -}; - -static const CaseFoldMapping case_fold_252[] = { - { 0x04F8, 0x04F9, 0x0000, 0x0000 }, - { 0x1EE2, 0x1EE3, 0x0000, 0x0000 }, - { 0x1FE3, 0x03C5, 0x0308, 0x0301 }, - { 0x2CD0, 0x2CD1, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_253[] = { - { 0x01FC, 0x01FD, 0x0000, 0x0000 }, - { 0x1FE2, 0x03C5, 0x0308, 0x0300 }, - { 0xFB06, 0x0073, 0x0074, 0x0000 } -}; - -static const CaseFoldMapping case_fold_254[] = { - { 0x1EE0, 0x1EE1, 0x0000, 0x0000 }, - { 0x2CD2, 0x2CD3, 0x0000, 0x0000 }, - { 0xFB05, 0x0073, 0x0074, 0x0000 } -}; - -static const CaseFoldMapping case_fold_255[] = { - { 0x01FE, 0x01FF, 0x0000, 0x0000 }, - { 0xFB04, 0x0066, 0x0066, 0x006C } -}; - - -static const CaseFoldHashBucket case_fold_hash[256] = { - { __PHYSFS_ARRAYLEN(case_fold_000), case_fold_000 }, - { __PHYSFS_ARRAYLEN(case_fold_001), case_fold_001 }, - { __PHYSFS_ARRAYLEN(case_fold_002), case_fold_002 }, - { __PHYSFS_ARRAYLEN(case_fold_003), case_fold_003 }, - { __PHYSFS_ARRAYLEN(case_fold_004), case_fold_004 }, - { __PHYSFS_ARRAYLEN(case_fold_005), case_fold_005 }, - { __PHYSFS_ARRAYLEN(case_fold_006), case_fold_006 }, - { __PHYSFS_ARRAYLEN(case_fold_007), case_fold_007 }, - { __PHYSFS_ARRAYLEN(case_fold_008), case_fold_008 }, - { __PHYSFS_ARRAYLEN(case_fold_009), case_fold_009 }, - { __PHYSFS_ARRAYLEN(case_fold_010), case_fold_010 }, - { __PHYSFS_ARRAYLEN(case_fold_011), case_fold_011 }, - { __PHYSFS_ARRAYLEN(case_fold_012), case_fold_012 }, - { __PHYSFS_ARRAYLEN(case_fold_013), case_fold_013 }, - { __PHYSFS_ARRAYLEN(case_fold_014), case_fold_014 }, - { __PHYSFS_ARRAYLEN(case_fold_015), case_fold_015 }, - { __PHYSFS_ARRAYLEN(case_fold_016), case_fold_016 }, - { __PHYSFS_ARRAYLEN(case_fold_017), case_fold_017 }, - { __PHYSFS_ARRAYLEN(case_fold_018), case_fold_018 }, - { __PHYSFS_ARRAYLEN(case_fold_019), case_fold_019 }, - { __PHYSFS_ARRAYLEN(case_fold_020), case_fold_020 }, - { __PHYSFS_ARRAYLEN(case_fold_021), case_fold_021 }, - { __PHYSFS_ARRAYLEN(case_fold_022), case_fold_022 }, - { __PHYSFS_ARRAYLEN(case_fold_023), case_fold_023 }, - { __PHYSFS_ARRAYLEN(case_fold_024), case_fold_024 }, - { __PHYSFS_ARRAYLEN(case_fold_025), case_fold_025 }, - { __PHYSFS_ARRAYLEN(case_fold_026), case_fold_026 }, - { __PHYSFS_ARRAYLEN(case_fold_027), case_fold_027 }, - { __PHYSFS_ARRAYLEN(case_fold_028), case_fold_028 }, - { __PHYSFS_ARRAYLEN(case_fold_029), case_fold_029 }, - { __PHYSFS_ARRAYLEN(case_fold_030), case_fold_030 }, - { __PHYSFS_ARRAYLEN(case_fold_031), case_fold_031 }, - { __PHYSFS_ARRAYLEN(case_fold_032), case_fold_032 }, - { __PHYSFS_ARRAYLEN(case_fold_033), case_fold_033 }, - { __PHYSFS_ARRAYLEN(case_fold_034), case_fold_034 }, - { __PHYSFS_ARRAYLEN(case_fold_035), case_fold_035 }, - { __PHYSFS_ARRAYLEN(case_fold_036), case_fold_036 }, - { __PHYSFS_ARRAYLEN(case_fold_037), case_fold_037 }, - { __PHYSFS_ARRAYLEN(case_fold_038), case_fold_038 }, - { __PHYSFS_ARRAYLEN(case_fold_039), case_fold_039 }, - { __PHYSFS_ARRAYLEN(case_fold_040), case_fold_040 }, - { __PHYSFS_ARRAYLEN(case_fold_041), case_fold_041 }, - { __PHYSFS_ARRAYLEN(case_fold_042), case_fold_042 }, - { __PHYSFS_ARRAYLEN(case_fold_043), case_fold_043 }, - { __PHYSFS_ARRAYLEN(case_fold_044), case_fold_044 }, - { __PHYSFS_ARRAYLEN(case_fold_045), case_fold_045 }, - { __PHYSFS_ARRAYLEN(case_fold_046), case_fold_046 }, - { __PHYSFS_ARRAYLEN(case_fold_047), case_fold_047 }, - { __PHYSFS_ARRAYLEN(case_fold_048), case_fold_048 }, - { __PHYSFS_ARRAYLEN(case_fold_049), case_fold_049 }, - { __PHYSFS_ARRAYLEN(case_fold_050), case_fold_050 }, - { __PHYSFS_ARRAYLEN(case_fold_051), case_fold_051 }, - { __PHYSFS_ARRAYLEN(case_fold_052), case_fold_052 }, - { __PHYSFS_ARRAYLEN(case_fold_053), case_fold_053 }, - { __PHYSFS_ARRAYLEN(case_fold_054), case_fold_054 }, - { __PHYSFS_ARRAYLEN(case_fold_055), case_fold_055 }, - { __PHYSFS_ARRAYLEN(case_fold_056), case_fold_056 }, - { __PHYSFS_ARRAYLEN(case_fold_057), case_fold_057 }, - { __PHYSFS_ARRAYLEN(case_fold_058), case_fold_058 }, - { __PHYSFS_ARRAYLEN(case_fold_059), case_fold_059 }, - { __PHYSFS_ARRAYLEN(case_fold_060), case_fold_060 }, - { __PHYSFS_ARRAYLEN(case_fold_061), case_fold_061 }, - { __PHYSFS_ARRAYLEN(case_fold_062), case_fold_062 }, - { __PHYSFS_ARRAYLEN(case_fold_063), case_fold_063 }, - { __PHYSFS_ARRAYLEN(case_fold_064), case_fold_064 }, - { __PHYSFS_ARRAYLEN(case_fold_065), case_fold_065 }, - { __PHYSFS_ARRAYLEN(case_fold_066), case_fold_066 }, - { __PHYSFS_ARRAYLEN(case_fold_067), case_fold_067 }, - { __PHYSFS_ARRAYLEN(case_fold_068), case_fold_068 }, - { __PHYSFS_ARRAYLEN(case_fold_069), case_fold_069 }, - { __PHYSFS_ARRAYLEN(case_fold_070), case_fold_070 }, - { __PHYSFS_ARRAYLEN(case_fold_071), case_fold_071 }, - { __PHYSFS_ARRAYLEN(case_fold_072), case_fold_072 }, - { __PHYSFS_ARRAYLEN(case_fold_073), case_fold_073 }, - { __PHYSFS_ARRAYLEN(case_fold_074), case_fold_074 }, - { __PHYSFS_ARRAYLEN(case_fold_075), case_fold_075 }, - { __PHYSFS_ARRAYLEN(case_fold_076), case_fold_076 }, - { __PHYSFS_ARRAYLEN(case_fold_077), case_fold_077 }, - { __PHYSFS_ARRAYLEN(case_fold_078), case_fold_078 }, - { __PHYSFS_ARRAYLEN(case_fold_079), case_fold_079 }, - { __PHYSFS_ARRAYLEN(case_fold_080), case_fold_080 }, - { __PHYSFS_ARRAYLEN(case_fold_081), case_fold_081 }, - { __PHYSFS_ARRAYLEN(case_fold_082), case_fold_082 }, - { __PHYSFS_ARRAYLEN(case_fold_083), case_fold_083 }, - { __PHYSFS_ARRAYLEN(case_fold_084), case_fold_084 }, - { __PHYSFS_ARRAYLEN(case_fold_085), case_fold_085 }, - { __PHYSFS_ARRAYLEN(case_fold_086), case_fold_086 }, - { __PHYSFS_ARRAYLEN(case_fold_087), case_fold_087 }, - { __PHYSFS_ARRAYLEN(case_fold_088), case_fold_088 }, - { __PHYSFS_ARRAYLEN(case_fold_089), case_fold_089 }, - { __PHYSFS_ARRAYLEN(case_fold_090), case_fold_090 }, - { __PHYSFS_ARRAYLEN(case_fold_091), case_fold_091 }, - { __PHYSFS_ARRAYLEN(case_fold_092), case_fold_092 }, - { __PHYSFS_ARRAYLEN(case_fold_093), case_fold_093 }, - { __PHYSFS_ARRAYLEN(case_fold_094), case_fold_094 }, - { __PHYSFS_ARRAYLEN(case_fold_095), case_fold_095 }, - { __PHYSFS_ARRAYLEN(case_fold_096), case_fold_096 }, - { __PHYSFS_ARRAYLEN(case_fold_097), case_fold_097 }, - { __PHYSFS_ARRAYLEN(case_fold_098), case_fold_098 }, - { __PHYSFS_ARRAYLEN(case_fold_099), case_fold_099 }, - { __PHYSFS_ARRAYLEN(case_fold_100), case_fold_100 }, - { __PHYSFS_ARRAYLEN(case_fold_101), case_fold_101 }, - { __PHYSFS_ARRAYLEN(case_fold_102), case_fold_102 }, - { __PHYSFS_ARRAYLEN(case_fold_103), case_fold_103 }, - { __PHYSFS_ARRAYLEN(case_fold_104), case_fold_104 }, - { __PHYSFS_ARRAYLEN(case_fold_105), case_fold_105 }, - { __PHYSFS_ARRAYLEN(case_fold_106), case_fold_106 }, - { __PHYSFS_ARRAYLEN(case_fold_107), case_fold_107 }, - { __PHYSFS_ARRAYLEN(case_fold_108), case_fold_108 }, - { __PHYSFS_ARRAYLEN(case_fold_109), case_fold_109 }, - { __PHYSFS_ARRAYLEN(case_fold_110), case_fold_110 }, - { __PHYSFS_ARRAYLEN(case_fold_111), case_fold_111 }, - { __PHYSFS_ARRAYLEN(case_fold_112), case_fold_112 }, - { __PHYSFS_ARRAYLEN(case_fold_113), case_fold_113 }, - { __PHYSFS_ARRAYLEN(case_fold_114), case_fold_114 }, - { __PHYSFS_ARRAYLEN(case_fold_115), case_fold_115 }, - { __PHYSFS_ARRAYLEN(case_fold_116), case_fold_116 }, - { __PHYSFS_ARRAYLEN(case_fold_117), case_fold_117 }, - { __PHYSFS_ARRAYLEN(case_fold_118), case_fold_118 }, - { __PHYSFS_ARRAYLEN(case_fold_119), case_fold_119 }, - { __PHYSFS_ARRAYLEN(case_fold_120), case_fold_120 }, - { __PHYSFS_ARRAYLEN(case_fold_121), case_fold_121 }, - { __PHYSFS_ARRAYLEN(case_fold_122), case_fold_122 }, - { 0, NULL }, - { __PHYSFS_ARRAYLEN(case_fold_124), case_fold_124 }, - { 0, NULL }, - { __PHYSFS_ARRAYLEN(case_fold_126), case_fold_126 }, - { 0, NULL }, - { __PHYSFS_ARRAYLEN(case_fold_128), case_fold_128 }, - { __PHYSFS_ARRAYLEN(case_fold_129), case_fold_129 }, - { __PHYSFS_ARRAYLEN(case_fold_130), case_fold_130 }, - { __PHYSFS_ARRAYLEN(case_fold_131), case_fold_131 }, - { __PHYSFS_ARRAYLEN(case_fold_132), case_fold_132 }, - { __PHYSFS_ARRAYLEN(case_fold_133), case_fold_133 }, - { __PHYSFS_ARRAYLEN(case_fold_134), case_fold_134 }, - { __PHYSFS_ARRAYLEN(case_fold_135), case_fold_135 }, - { __PHYSFS_ARRAYLEN(case_fold_136), case_fold_136 }, - { __PHYSFS_ARRAYLEN(case_fold_137), case_fold_137 }, - { __PHYSFS_ARRAYLEN(case_fold_138), case_fold_138 }, - { __PHYSFS_ARRAYLEN(case_fold_139), case_fold_139 }, - { __PHYSFS_ARRAYLEN(case_fold_140), case_fold_140 }, - { __PHYSFS_ARRAYLEN(case_fold_141), case_fold_141 }, - { __PHYSFS_ARRAYLEN(case_fold_142), case_fold_142 }, - { __PHYSFS_ARRAYLEN(case_fold_143), case_fold_143 }, - { __PHYSFS_ARRAYLEN(case_fold_144), case_fold_144 }, - { __PHYSFS_ARRAYLEN(case_fold_145), case_fold_145 }, - { __PHYSFS_ARRAYLEN(case_fold_146), case_fold_146 }, - { __PHYSFS_ARRAYLEN(case_fold_147), case_fold_147 }, - { __PHYSFS_ARRAYLEN(case_fold_148), case_fold_148 }, - { __PHYSFS_ARRAYLEN(case_fold_149), case_fold_149 }, - { __PHYSFS_ARRAYLEN(case_fold_150), case_fold_150 }, - { __PHYSFS_ARRAYLEN(case_fold_151), case_fold_151 }, - { __PHYSFS_ARRAYLEN(case_fold_152), case_fold_152 }, - { __PHYSFS_ARRAYLEN(case_fold_153), case_fold_153 }, - { __PHYSFS_ARRAYLEN(case_fold_154), case_fold_154 }, - { __PHYSFS_ARRAYLEN(case_fold_155), case_fold_155 }, - { __PHYSFS_ARRAYLEN(case_fold_156), case_fold_156 }, - { __PHYSFS_ARRAYLEN(case_fold_157), case_fold_157 }, - { __PHYSFS_ARRAYLEN(case_fold_158), case_fold_158 }, - { __PHYSFS_ARRAYLEN(case_fold_159), case_fold_159 }, - { __PHYSFS_ARRAYLEN(case_fold_160), case_fold_160 }, - { __PHYSFS_ARRAYLEN(case_fold_161), case_fold_161 }, - { __PHYSFS_ARRAYLEN(case_fold_162), case_fold_162 }, - { __PHYSFS_ARRAYLEN(case_fold_163), case_fold_163 }, - { __PHYSFS_ARRAYLEN(case_fold_164), case_fold_164 }, - { __PHYSFS_ARRAYLEN(case_fold_165), case_fold_165 }, - { __PHYSFS_ARRAYLEN(case_fold_166), case_fold_166 }, - { __PHYSFS_ARRAYLEN(case_fold_167), case_fold_167 }, - { __PHYSFS_ARRAYLEN(case_fold_168), case_fold_168 }, - { __PHYSFS_ARRAYLEN(case_fold_169), case_fold_169 }, - { __PHYSFS_ARRAYLEN(case_fold_170), case_fold_170 }, - { __PHYSFS_ARRAYLEN(case_fold_171), case_fold_171 }, - { __PHYSFS_ARRAYLEN(case_fold_172), case_fold_172 }, - { __PHYSFS_ARRAYLEN(case_fold_173), case_fold_173 }, - { __PHYSFS_ARRAYLEN(case_fold_174), case_fold_174 }, - { __PHYSFS_ARRAYLEN(case_fold_175), case_fold_175 }, - { __PHYSFS_ARRAYLEN(case_fold_176), case_fold_176 }, - { __PHYSFS_ARRAYLEN(case_fold_177), case_fold_177 }, - { __PHYSFS_ARRAYLEN(case_fold_178), case_fold_178 }, - { __PHYSFS_ARRAYLEN(case_fold_179), case_fold_179 }, - { __PHYSFS_ARRAYLEN(case_fold_180), case_fold_180 }, - { __PHYSFS_ARRAYLEN(case_fold_181), case_fold_181 }, - { __PHYSFS_ARRAYLEN(case_fold_182), case_fold_182 }, - { __PHYSFS_ARRAYLEN(case_fold_183), case_fold_183 }, - { __PHYSFS_ARRAYLEN(case_fold_184), case_fold_184 }, - { __PHYSFS_ARRAYLEN(case_fold_185), case_fold_185 }, - { __PHYSFS_ARRAYLEN(case_fold_186), case_fold_186 }, - { __PHYSFS_ARRAYLEN(case_fold_187), case_fold_187 }, - { __PHYSFS_ARRAYLEN(case_fold_188), case_fold_188 }, - { __PHYSFS_ARRAYLEN(case_fold_189), case_fold_189 }, - { __PHYSFS_ARRAYLEN(case_fold_190), case_fold_190 }, - { __PHYSFS_ARRAYLEN(case_fold_191), case_fold_191 }, - { __PHYSFS_ARRAYLEN(case_fold_192), case_fold_192 }, - { __PHYSFS_ARRAYLEN(case_fold_193), case_fold_193 }, - { __PHYSFS_ARRAYLEN(case_fold_194), case_fold_194 }, - { __PHYSFS_ARRAYLEN(case_fold_195), case_fold_195 }, - { __PHYSFS_ARRAYLEN(case_fold_196), case_fold_196 }, - { __PHYSFS_ARRAYLEN(case_fold_197), case_fold_197 }, - { __PHYSFS_ARRAYLEN(case_fold_198), case_fold_198 }, - { __PHYSFS_ARRAYLEN(case_fold_199), case_fold_199 }, - { __PHYSFS_ARRAYLEN(case_fold_200), case_fold_200 }, - { __PHYSFS_ARRAYLEN(case_fold_201), case_fold_201 }, - { __PHYSFS_ARRAYLEN(case_fold_202), case_fold_202 }, - { __PHYSFS_ARRAYLEN(case_fold_203), case_fold_203 }, - { __PHYSFS_ARRAYLEN(case_fold_204), case_fold_204 }, - { __PHYSFS_ARRAYLEN(case_fold_205), case_fold_205 }, - { __PHYSFS_ARRAYLEN(case_fold_206), case_fold_206 }, - { __PHYSFS_ARRAYLEN(case_fold_207), case_fold_207 }, - { __PHYSFS_ARRAYLEN(case_fold_208), case_fold_208 }, - { __PHYSFS_ARRAYLEN(case_fold_209), case_fold_209 }, - { __PHYSFS_ARRAYLEN(case_fold_210), case_fold_210 }, - { __PHYSFS_ARRAYLEN(case_fold_211), case_fold_211 }, - { __PHYSFS_ARRAYLEN(case_fold_212), case_fold_212 }, - { __PHYSFS_ARRAYLEN(case_fold_213), case_fold_213 }, - { __PHYSFS_ARRAYLEN(case_fold_214), case_fold_214 }, - { __PHYSFS_ARRAYLEN(case_fold_215), case_fold_215 }, - { __PHYSFS_ARRAYLEN(case_fold_216), case_fold_216 }, - { __PHYSFS_ARRAYLEN(case_fold_217), case_fold_217 }, - { __PHYSFS_ARRAYLEN(case_fold_218), case_fold_218 }, - { __PHYSFS_ARRAYLEN(case_fold_219), case_fold_219 }, - { __PHYSFS_ARRAYLEN(case_fold_220), case_fold_220 }, - { __PHYSFS_ARRAYLEN(case_fold_221), case_fold_221 }, - { __PHYSFS_ARRAYLEN(case_fold_222), case_fold_222 }, - { __PHYSFS_ARRAYLEN(case_fold_223), case_fold_223 }, - { __PHYSFS_ARRAYLEN(case_fold_224), case_fold_224 }, - { __PHYSFS_ARRAYLEN(case_fold_225), case_fold_225 }, - { __PHYSFS_ARRAYLEN(case_fold_226), case_fold_226 }, - { __PHYSFS_ARRAYLEN(case_fold_227), case_fold_227 }, - { __PHYSFS_ARRAYLEN(case_fold_228), case_fold_228 }, - { __PHYSFS_ARRAYLEN(case_fold_229), case_fold_229 }, - { __PHYSFS_ARRAYLEN(case_fold_230), case_fold_230 }, - { __PHYSFS_ARRAYLEN(case_fold_231), case_fold_231 }, - { __PHYSFS_ARRAYLEN(case_fold_232), case_fold_232 }, - { __PHYSFS_ARRAYLEN(case_fold_233), case_fold_233 }, - { __PHYSFS_ARRAYLEN(case_fold_234), case_fold_234 }, - { __PHYSFS_ARRAYLEN(case_fold_235), case_fold_235 }, - { __PHYSFS_ARRAYLEN(case_fold_236), case_fold_236 }, - { __PHYSFS_ARRAYLEN(case_fold_237), case_fold_237 }, - { __PHYSFS_ARRAYLEN(case_fold_238), case_fold_238 }, - { __PHYSFS_ARRAYLEN(case_fold_239), case_fold_239 }, - { __PHYSFS_ARRAYLEN(case_fold_240), case_fold_240 }, - { __PHYSFS_ARRAYLEN(case_fold_241), case_fold_241 }, - { __PHYSFS_ARRAYLEN(case_fold_242), case_fold_242 }, - { __PHYSFS_ARRAYLEN(case_fold_243), case_fold_243 }, - { __PHYSFS_ARRAYLEN(case_fold_244), case_fold_244 }, - { __PHYSFS_ARRAYLEN(case_fold_245), case_fold_245 }, - { __PHYSFS_ARRAYLEN(case_fold_246), case_fold_246 }, - { __PHYSFS_ARRAYLEN(case_fold_247), case_fold_247 }, - { __PHYSFS_ARRAYLEN(case_fold_248), case_fold_248 }, - { __PHYSFS_ARRAYLEN(case_fold_249), case_fold_249 }, - { __PHYSFS_ARRAYLEN(case_fold_250), case_fold_250 }, - { __PHYSFS_ARRAYLEN(case_fold_251), case_fold_251 }, - { __PHYSFS_ARRAYLEN(case_fold_252), case_fold_252 }, - { __PHYSFS_ARRAYLEN(case_fold_253), case_fold_253 }, - { __PHYSFS_ARRAYLEN(case_fold_254), case_fold_254 }, - { __PHYSFS_ARRAYLEN(case_fold_255), case_fold_255 }, -}; - diff --git a/Frameworks/physfs.framework/Versions/A/Headers/.svn/text-base/physfs_internal.h.svn-base b/Frameworks/physfs.framework/Versions/A/Headers/.svn/text-base/physfs_internal.h.svn-base deleted file mode 100644 index f9da66e1..00000000 --- a/Frameworks/physfs.framework/Versions/A/Headers/.svn/text-base/physfs_internal.h.svn-base +++ /dev/null @@ -1,1779 +0,0 @@ -/* - * Internal function/structure declaration. Do NOT include in your - * application. - * - * Please see the file LICENSE.txt in the source's root directory. - * - * This file written by Ryan C. Gordon. - */ - -#ifndef _INCLUDE_PHYSFS_INTERNAL_H_ -#define _INCLUDE_PHYSFS_INTERNAL_H_ - -#ifndef __PHYSICSFS_INTERNAL__ -#error Do not include this header from your applications. -#endif - -#include "physfs.h" - -#include <stdlib.h> /* make sure NULL is defined... */ - -#ifdef HAVE_ASSERT_H -#include <assert.h> -#elif (!defined assert) -#define assert(x) -#endif - -/* !!! FIXME: remove this when revamping stack allocation code... */ -#ifdef _MSC_VER -#include <malloc.h> -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Interface for small allocations. If you need a little scratch space for - * a throwaway buffer or string, use this. It will make small allocations - * on the stack if possible, and use allocator.Malloc() if they are too - * large. This helps reduce malloc pressure. - * There are some rules, though: - * NEVER return a pointer from this, as stack-allocated buffers go away - * when your function returns. - * NEVER allocate in a loop, as stack-allocated pointers will pile up. Call - * a function that uses smallAlloc from your loop, so the allocation can - * free each time. - * NEVER call smallAlloc with any complex expression (it's a macro that WILL - * have side effects...it references the argument multiple times). Use a - * variable or a literal. - * NEVER free a pointer from this with anything but smallFree. It will not - * be a valid pointer to the allocator, regardless of where the memory came - * from. - * NEVER realloc a pointer from this. - * NEVER forget to use smallFree: it may not be a pointer from the stack. - * NEVER forget to check for NULL...allocation can fail here, of course! - */ -#define __PHYSFS_SMALLALLOCTHRESHOLD 128 -void *__PHYSFS_initSmallAlloc(void *ptr, PHYSFS_uint64 len); - -#define __PHYSFS_smallAlloc(bytes) ( \ - __PHYSFS_initSmallAlloc((((bytes) < __PHYSFS_SMALLALLOCTHRESHOLD) ? \ - alloca((size_t)((bytes)+1)) : NULL), (bytes)) \ -) - -void __PHYSFS_smallFree(void *ptr); - - -/* Use the allocation hooks. */ -#define malloc(x) Do not use malloc() directly. -#define realloc(x, y) Do not use realloc() directly. -#define free(x) Do not use free() directly. -/* !!! FIXME: add alloca check here. */ - -/* The LANG section. */ -/* please send questions/translations to Ryan: icculus@icculus.org. */ - -#if (!defined PHYSFS_LANG) -# define PHYSFS_LANG PHYSFS_LANG_ENGLISH -#endif - -#define PHYSFS_LANG_ENGLISH 1 /* English by Ryan C. Gordon */ -#define PHYSFS_LANG_RUSSIAN_KOI8_R 2 /* Russian by Ed Sinjiashvili */ -#define PHYSFS_LANG_RUSSIAN_CP1251 3 /* Russian by Ed Sinjiashvili */ -#define PHYSFS_LANG_RUSSIAN_CP866 4 /* Russian by Ed Sinjiashvili */ -#define PHYSFS_LANG_RUSSIAN_ISO_8859_5 5 /* Russian by Ed Sinjiashvili */ -#define PHYSFS_LANG_SPANISH 6 /* Spanish by Pedro J. Pérez */ -#define PHYSFS_LANG_FRENCH 7 /* French by Stéphane Peter */ -#define PHYSFS_LANG_GERMAN 8 /* German by Michael Renner */ -#define PHYSFS_LANG_PORTUGUESE_BR 9 /* pt-br by Danny Angelo Carminati Grein */ - -#if (PHYSFS_LANG == PHYSFS_LANG_ENGLISH) - #define DIR_ARCHIVE_DESCRIPTION "Non-archive, direct filesystem I/O" - #define GRP_ARCHIVE_DESCRIPTION "Build engine Groupfile format" - #define HOG_ARCHIVE_DESCRIPTION "Descent I/II HOG file format" - #define MVL_ARCHIVE_DESCRIPTION "Descent II Movielib format" - #define QPAK_ARCHIVE_DESCRIPTION "Quake I/II format" - #define ZIP_ARCHIVE_DESCRIPTION "PkZip/WinZip/Info-Zip compatible" - #define WAD_ARCHIVE_DESCRIPTION "DOOM engine format" - #define LZMA_ARCHIVE_DESCRIPTION "LZMA (7zip) format" - - #define ERR_IS_INITIALIZED "Already initialized" - #define ERR_NOT_INITIALIZED "Not initialized" - #define ERR_INVALID_ARGUMENT "Invalid argument" - #define ERR_FILES_STILL_OPEN "Files still open" - #define ERR_NO_DIR_CREATE "Failed to create directories" - #define ERR_OUT_OF_MEMORY "Out of memory" - #define ERR_NOT_IN_SEARCH_PATH "No such entry in search path" - #define ERR_NOT_SUPPORTED "Operation not supported" - #define ERR_UNSUPPORTED_ARCHIVE "Archive type unsupported" - #define ERR_NOT_A_HANDLE "Not a file handle" - #define ERR_INSECURE_FNAME "Insecure filename" - #define ERR_SYMLINK_DISALLOWED "Symbolic links are disabled" - #define ERR_NO_WRITE_DIR "Write directory is not set" - #define ERR_NO_SUCH_FILE "File not found" - #define ERR_NO_SUCH_PATH "Path not found" - #define ERR_NO_SUCH_VOLUME "Volume not found" - #define ERR_PAST_EOF "Past end of file" - #define ERR_ARC_IS_READ_ONLY "Archive is read-only" - #define ERR_IO_ERROR "I/O error" - #define ERR_CANT_SET_WRITE_DIR "Can't set write directory" - #define ERR_SYMLINK_LOOP "Infinite symbolic link loop" - #define ERR_COMPRESSION "(De)compression error" - #define ERR_NOT_IMPLEMENTED "Not implemented" - #define ERR_OS_ERROR "Operating system reported error" - #define ERR_FILE_EXISTS "File already exists" - #define ERR_NOT_A_FILE "Not a file" - #define ERR_NOT_A_DIR "Not a directory" - #define ERR_NOT_AN_ARCHIVE "Not an archive" - #define ERR_CORRUPTED "Corrupted archive" - #define ERR_SEEK_OUT_OF_RANGE "Seek out of range" - #define ERR_BAD_FILENAME "Bad filename" - #define ERR_PHYSFS_BAD_OS_CALL "(BUG) PhysicsFS made a bad system call" - #define ERR_ARGV0_IS_NULL "argv0 is NULL" - #define ERR_NEED_DICT "need dictionary" - #define ERR_DATA_ERROR "data error" - #define ERR_MEMORY_ERROR "memory error" - #define ERR_BUFFER_ERROR "buffer error" - #define ERR_VERSION_ERROR "version error" - #define ERR_UNKNOWN_ERROR "unknown error" - #define ERR_SEARCHPATH_TRUNC "Search path was truncated" - #define ERR_GETMODFN_TRUNC "GetModuleFileName() was truncated" - #define ERR_GETMODFN_NO_DIR "GetModuleFileName() had no dir" - #define ERR_DISK_FULL "Disk is full" - #define ERR_DIRECTORY_FULL "Directory full" - #define ERR_MACOS_GENERIC "MacOS reported error (%d)" - #define ERR_OS2_GENERIC "OS/2 reported error (%d)" - #define ERR_VOL_LOCKED_HW "Volume is locked through hardware" - #define ERR_VOL_LOCKED_SW "Volume is locked through software" - #define ERR_FILE_LOCKED "File is locked" - #define ERR_FILE_OR_DIR_BUSY "File/directory is busy" - #define ERR_FILE_ALREADY_OPEN_W "File already open for writing" - #define ERR_FILE_ALREADY_OPEN_R "File already open for reading" - #define ERR_INVALID_REFNUM "Invalid reference number" - #define ERR_GETTING_FILE_POS "Error getting file position" - #define ERR_VOLUME_OFFLINE "Volume is offline" - #define ERR_PERMISSION_DENIED "Permission denied" - #define ERR_VOL_ALREADY_ONLINE "Volume already online" - #define ERR_NO_SUCH_DRIVE "No such drive" - #define ERR_NOT_MAC_DISK "Not a Macintosh disk" - #define ERR_VOL_EXTERNAL_FS "Volume belongs to an external filesystem" - #define ERR_PROBLEM_RENAME "Problem during rename" - #define ERR_BAD_MASTER_BLOCK "Bad master directory block" - #define ERR_CANT_MOVE_FORBIDDEN "Attempt to move forbidden" - #define ERR_WRONG_VOL_TYPE "Wrong volume type" - #define ERR_SERVER_VOL_LOST "Server volume has been disconnected" - #define ERR_FILE_ID_NOT_FOUND "File ID not found" - #define ERR_FILE_ID_EXISTS "File ID already exists" - #define ERR_SERVER_NO_RESPOND "Server not responding" - #define ERR_USER_AUTH_FAILED "User authentication failed" - #define ERR_PWORD_EXPIRED "Password has expired on server" - #define ERR_ACCESS_DENIED "Access denied" - #define ERR_NOT_A_DOS_DISK "Not a DOS disk" - #define ERR_SHARING_VIOLATION "Sharing violation" - #define ERR_CANNOT_MAKE "Cannot make" - #define ERR_DEV_IN_USE "Device already in use" - #define ERR_OPEN_FAILED "Open failed" - #define ERR_PIPE_BUSY "Pipe is busy" - #define ERR_SHARING_BUF_EXCEEDED "Sharing buffer exceeded" - #define ERR_TOO_MANY_HANDLES "Too many open handles" - #define ERR_SEEK_ERROR "Seek error" - #define ERR_DEL_CWD "Trying to delete current working directory" - #define ERR_WRITE_PROTECT_ERROR "Write protect error" - #define ERR_WRITE_FAULT "Write fault" - #define ERR_LOCK_VIOLATION "Lock violation" - #define ERR_GEN_FAILURE "General failure" - #define ERR_UNCERTAIN_MEDIA "Uncertain media" - #define ERR_PROT_VIOLATION "Protection violation" - #define ERR_BROKEN_PIPE "Broken pipe" - -#elif (PHYSFS_LANG == PHYSFS_LANG_GERMAN) - #define DIR_ARCHIVE_DESCRIPTION "Kein Archiv, direkte Ein/Ausgabe in das Dateisystem" - #define GRP_ARCHIVE_DESCRIPTION "Build engine Groupfile format" - #define HOG_ARCHIVE_DESCRIPTION "Descent I/II HOG file format" - #define MVL_ARCHIVE_DESCRIPTION "Descent II Movielib format" - #define QPAK_ARCHIVE_DESCRIPTION "Quake I/II format" - #define ZIP_ARCHIVE_DESCRIPTION "PkZip/WinZip/Info-Zip kompatibel" - #define WAD_ARCHIVE_DESCRIPTION "DOOM engine format" /* !!! FIXME: translate this line if needed */ - #define LZMA_ARCHIVE_DESCRIPTION "LZMA (7zip) format" /* !!! FIXME: translate this line if needed */ - - #define ERR_IS_INITIALIZED "Bereits initialisiert" - #define ERR_NOT_INITIALIZED "Nicht initialisiert" - #define ERR_INVALID_ARGUMENT "Ungültiges Argument" - #define ERR_FILES_STILL_OPEN "Dateien noch immer geöffnet" - #define ERR_NO_DIR_CREATE "Fehler beim Erzeugen der Verzeichnisse" - #define ERR_OUT_OF_MEMORY "Kein Speicher mehr frei" - #define ERR_NOT_IN_SEARCH_PATH "Eintrag nicht im Suchpfad enthalten" - #define ERR_NOT_SUPPORTED "Befehl nicht unterstützt" - #define ERR_UNSUPPORTED_ARCHIVE "Archiv-Typ nicht unterstützt" - #define ERR_NOT_A_HANDLE "Ist kein Dateideskriptor" - #define ERR_INSECURE_FNAME "Unsicherer Dateiname" - #define ERR_SYMLINK_DISALLOWED "Symbolische Verweise deaktiviert" - #define ERR_NO_WRITE_DIR "Schreibverzeichnis ist nicht gesetzt" - #define ERR_NO_SUCH_FILE "Datei nicht gefunden" - #define ERR_NO_SUCH_PATH "Pfad nicht gefunden" - #define ERR_NO_SUCH_VOLUME "Datencontainer nicht gefunden" - #define ERR_PAST_EOF "Hinter dem Ende der Datei" - #define ERR_ARC_IS_READ_ONLY "Archiv ist schreibgeschützt" - #define ERR_IO_ERROR "Ein/Ausgabe Fehler" - #define ERR_CANT_SET_WRITE_DIR "Kann Schreibverzeichnis nicht setzen" - #define ERR_SYMLINK_LOOP "Endlosschleife durch symbolische Verweise" - #define ERR_COMPRESSION "(De)Kompressionsfehler" - #define ERR_NOT_IMPLEMENTED "Nicht implementiert" - #define ERR_OS_ERROR "Betriebssystem meldete Fehler" - #define ERR_FILE_EXISTS "Datei existiert bereits" - #define ERR_NOT_A_FILE "Ist keine Datei" - #define ERR_NOT_A_DIR "Ist kein Verzeichnis" - #define ERR_NOT_AN_ARCHIVE "Ist kein Archiv" - #define ERR_CORRUPTED "Beschädigtes Archiv" - #define ERR_SEEK_OUT_OF_RANGE "Suche war ausserhalb der Reichweite" - #define ERR_BAD_FILENAME "Unzulässiger Dateiname" - #define ERR_PHYSFS_BAD_OS_CALL "(BUG) PhysicsFS verursachte einen ungültigen Systemaufruf" - #define ERR_ARGV0_IS_NULL "argv0 ist NULL" - #define ERR_NEED_DICT "brauche Wörterbuch" - #define ERR_DATA_ERROR "Datenfehler" - #define ERR_MEMORY_ERROR "Speicherfehler" - #define ERR_BUFFER_ERROR "Bufferfehler" - #define ERR_VERSION_ERROR "Versionskonflikt" - #define ERR_UNKNOWN_ERROR "Unbekannter Fehler" - #define ERR_SEARCHPATH_TRUNC "Suchpfad war abgeschnitten" - #define ERR_GETMODFN_TRUNC "GetModuleFileName() war abgeschnitten" - #define ERR_GETMODFN_NO_DIR "GetModuleFileName() bekam kein Verzeichnis" - #define ERR_DISK_FULL "Laufwerk ist voll" - #define ERR_DIRECTORY_FULL "Verzeichnis ist voll" - #define ERR_MACOS_GENERIC "MacOS meldete Fehler (%d)" - #define ERR_OS2_GENERIC "OS/2 meldete Fehler (%d)" - #define ERR_VOL_LOCKED_HW "Datencontainer ist durch Hardware gesperrt" - #define ERR_VOL_LOCKED_SW "Datencontainer ist durch Software gesperrt" - #define ERR_FILE_LOCKED "Datei ist gesperrt" - #define ERR_FILE_OR_DIR_BUSY "Datei/Verzeichnis ist beschäftigt" - #define ERR_FILE_ALREADY_OPEN_W "Datei schon im Schreibmodus geöffnet" - #define ERR_FILE_ALREADY_OPEN_R "Datei schon im Lesemodus geöffnet" - #define ERR_INVALID_REFNUM "Ungültige Referenznummer" - #define ERR_GETTING_FILE_POS "Fehler beim Finden der Dateiposition" - #define ERR_VOLUME_OFFLINE "Datencontainer ist offline" - #define ERR_PERMISSION_DENIED "Zugriff verweigert" - #define ERR_VOL_ALREADY_ONLINE "Datencontainer ist bereits online" - #define ERR_NO_SUCH_DRIVE "Laufwerk nicht vorhanden" - #define ERR_NOT_MAC_DISK "Ist kein Macintosh Laufwerk" - #define ERR_VOL_EXTERNAL_FS "Datencontainer liegt auf einem externen Dateisystem" - #define ERR_PROBLEM_RENAME "Fehler beim Umbenennen" - #define ERR_BAD_MASTER_BLOCK "Beschädigter Hauptverzeichnisblock" - #define ERR_CANT_MOVE_FORBIDDEN "Verschieben nicht erlaubt" - #define ERR_WRONG_VOL_TYPE "Falscher Datencontainer-Typ" - #define ERR_SERVER_VOL_LOST "Datencontainer am Server wurde getrennt" - #define ERR_FILE_ID_NOT_FOUND "Dateikennung nicht gefunden" - #define ERR_FILE_ID_EXISTS "Dateikennung existiert bereits" - #define ERR_SERVER_NO_RESPOND "Server antwortet nicht" - #define ERR_USER_AUTH_FAILED "Benutzerauthentifizierung fehlgeschlagen" - #define ERR_PWORD_EXPIRED "Passwort am Server ist abgelaufen" - #define ERR_ACCESS_DENIED "Zugriff verweigert" - #define ERR_NOT_A_DOS_DISK "Ist kein DOS-Laufwerk" - #define ERR_SHARING_VIOLATION "Zugriffsverletzung" - #define ERR_CANNOT_MAKE "Kann nicht erzeugen" - #define ERR_DEV_IN_USE "Gerät wird bereits benutzt" - #define ERR_OPEN_FAILED "Öffnen fehlgeschlagen" - #define ERR_PIPE_BUSY "Pipeverbindung ist belegt" - #define ERR_SHARING_BUF_EXCEEDED "Zugriffsbuffer überschritten" - #define ERR_TOO_MANY_HANDLES "Zu viele offene Dateien" - #define ERR_SEEK_ERROR "Fehler beim Suchen" - #define ERR_DEL_CWD "Aktuelles Arbeitsverzeichnis darf nicht gelöscht werden" - #define ERR_WRITE_PROTECT_ERROR "Schreibschutzfehler" - #define ERR_WRITE_FAULT "Schreibfehler" - #define ERR_LOCK_VIOLATION "Sperrverletzung" - #define ERR_GEN_FAILURE "Allgemeiner Fehler" - #define ERR_UNCERTAIN_MEDIA "Unsicheres Medium" - #define ERR_PROT_VIOLATION "Schutzverletzung" - #define ERR_BROKEN_PIPE "Pipeverbindung unterbrochen" - -#elif (PHYSFS_LANG == PHYSFS_LANG_RUSSIAN_KOI8_R) - #define DIR_ARCHIVE_DESCRIPTION "îÅ ÁÒÈÉ×, ÎÅÐÏÓÒÅÄÓÔ×ÅÎÎÙÊ ××ÏÄ/×Ù×ÏÄ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÙ" - #define GRP_ARCHIVE_DESCRIPTION "æÏÒÍÁÔ ÇÒÕÐÐÏ×ÏÇÏ ÆÁÊÌÁ Build engine" - #define HOG_ARCHIVE_DESCRIPTION "Descent I/II HOG file format" - #define MVL_ARCHIVE_DESCRIPTION "Descent II Movielib format" - #define ZIP_ARCHIVE_DESCRIPTION "PkZip/WinZip/Info-Zip ÓÏ×ÍÅÓÔÉÍÙÊ" - #define WAD_ARCHIVE_DESCRIPTION "DOOM engine format" /* !!! FIXME: translate this line if needed */ - #define LZMA_ARCHIVE_DESCRIPTION "LZMA (7zip) format" /* !!! FIXME: translate this line if needed */ - - #define ERR_IS_INITIALIZED "õÖÅ ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÎ" - #define ERR_NOT_INITIALIZED "îÅ ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÎ" - #define ERR_INVALID_ARGUMENT "îÅ×ÅÒÎÙÊ ÁÒÇÕÍÅÎÔ" - #define ERR_FILES_STILL_OPEN "æÁÊÌÙ ÅÝÅ ÏÔËÒÙÔÙ" - #define ERR_NO_DIR_CREATE "îÅ ÍÏÇÕ ÓÏÚÄÁÔØ ËÁÔÁÌÏÇÉ" - #define ERR_OUT_OF_MEMORY "ëÏÎÞÉÌÁÓØ ÐÁÍÑÔØ" - #define ERR_NOT_IN_SEARCH_PATH "îÅÔ ÔÁËÏÇÏ ÜÌÅÍÅÎÔÁ × ÐÕÔÉ ÐÏÉÓËÁ" - #define ERR_NOT_SUPPORTED "ïÐÅÒÁÃÉÑ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ" - #define ERR_UNSUPPORTED_ARCHIVE "áÒÈÉ×Ù ÔÁËÏÇÏ ÔÉÐÁ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÀÔÓÑ" - #define ERR_NOT_A_HANDLE "îÅ ÆÁÊÌÏ×ÙÊ ÄÅÓËÒÉÐÔÏÒ" - #define ERR_INSECURE_FNAME "îÅÂÅÚÏÐÁÓÎÏÅ ÉÍÑ ÆÁÊÌÁ" - #define ERR_SYMLINK_DISALLOWED "óÉÍ×ÏÌØÎÙÅ ÓÓÙÌËÉ ÏÔËÌÀÞÅÎÙ" - #define ERR_NO_WRITE_DIR "ëÁÔÁÌÏÇ ÄÌÑ ÚÁÐÉÓÉ ÎÅ ÕÓÔÁÎÏ×ÌÅÎ" - #define ERR_NO_SUCH_FILE "æÁÊÌ ÎÅ ÎÁÊÄÅÎ" - #define ERR_NO_SUCH_PATH "ðÕÔØ ÎÅ ÎÁÊÄÅÎ" - #define ERR_NO_SUCH_VOLUME "ôÏÍ ÎÅ ÎÁÊÄÅÎ" - #define ERR_PAST_EOF "úÁ ËÏÎÃÏÍ ÆÁÊÌÁ" - #define ERR_ARC_IS_READ_ONLY "áÒÈÉ× ÔÏÌØËÏ ÄÌÑ ÞÔÅÎÉÑ" - #define ERR_IO_ERROR "ïÛÉÂËÁ ××ÏÄÁ/×Ù×ÏÄÁ" - #define ERR_CANT_SET_WRITE_DIR "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ËÁÔÁÌÏÇ ÄÌÑ ÚÁÐÉÓÉ" - #define ERR_SYMLINK_LOOP "âÅÓËÏÎÅÞÎÙÊ ÃÉËÌ ÓÉÍ×ÏÌØÎÏÊ ÓÓÙÌËÉ" - #define ERR_COMPRESSION "ïÛÉÂËÁ (òÁÓ)ÐÁËÏ×ËÉ" - #define ERR_NOT_IMPLEMENTED "îÅ ÒÅÁÌÉÚÏ×ÁÎÏ" - #define ERR_OS_ERROR "ïÐÅÒÁÃÉÏÎÎÁÑ ÓÉÓÔÅÍÁ ÓÏÏÂÝÉÌÁ ÏÛÉÂËÕ" - #define ERR_FILE_EXISTS "æÁÊÌ ÕÖÅ ÓÕÝÅÓÔ×ÕÅÔ" - #define ERR_NOT_A_FILE "îÅ ÆÁÊÌ" - #define ERR_NOT_A_DIR "îÅ ËÁÔÁÌÏÇ" - #define ERR_NOT_AN_ARCHIVE "îÅ ÁÒÈÉ×" - #define ERR_CORRUPTED "ðÏ×ÒÅÖÄÅÎÎÙÊ ÁÒÈÉ×" - #define ERR_SEEK_OUT_OF_RANGE "ðÏÚÉÃÉÏÎÉÒÏ×ÁÎÉÅ ÚÁ ÐÒÅÄÅÌÙ" - #define ERR_BAD_FILENAME "îÅ×ÅÒÎÏÅ ÉÍÑ ÆÁÊÌÁ" - #define ERR_PHYSFS_BAD_OS_CALL "(BUG) PhysicsFS ×ÙÐÏÌÎÉÌÁ ÎÅ×ÅÒÎÙÊ ÓÉÓÔÅÍÎÙÊ ×ÙÚÏ×" - #define ERR_ARGV0_IS_NULL "argv0 is NULL" - #define ERR_NEED_DICT "ÎÕÖÅÎ ÓÌÏ×ÁÒØ" - #define ERR_DATA_ERROR "ÏÛÉÂËÁ ÄÁÎÎÙÈ" - #define ERR_MEMORY_ERROR "ÏÛÉÂËÁ ÐÁÍÑÔÉ" - #define ERR_BUFFER_ERROR "ÏÛÉÂËÁ ÂÕÆÅÒÁ" - #define ERR_VERSION_ERROR "ÏÛÉÂËÁ ×ÅÒÓÉÉ" - #define ERR_UNKNOWN_ERROR "ÎÅÉÚ×ÅÓÔÎÁÑ ÏÛÉÂËÁ" - #define ERR_SEARCHPATH_TRUNC "ðÕÔØ ÐÏÉÓËÁ ÏÂÒÅÚÁÎ" - #define ERR_GETMODFN_TRUNC "GetModuleFileName() ÏÂÒÅÚÁÎ" - #define ERR_GETMODFN_NO_DIR "GetModuleFileName() ÎÅ ÐÏÌÕÞÉÌ ËÁÔÁÌÏÇ" - #define ERR_DISK_FULL "äÉÓË ÐÏÌÏÎ" - #define ERR_DIRECTORY_FULL "ëÁÔÁÌÏÇ ÐÏÌÏÎ" - #define ERR_MACOS_GENERIC "MacOS ÓÏÏÂÝÉÌÁ ÏÛÉÂËÕ (%d)" - #define ERR_OS2_GENERIC "OS/2 ÓÏÏÂÝÉÌÁ ÏÛÉÂËÕ (%d)" - #define ERR_VOL_LOCKED_HW "ôÏÍ ÂÌÏËÉÒÏ×ÁÎ ÁÐÐÁÒÁÔÎÏ" - #define ERR_VOL_LOCKED_SW "ôÏÍ ÂÌÏËÉÒÏ×ÁÎ ÐÒÏÇÒÁÍÍÎÏ" - #define ERR_FILE_LOCKED "æÁÊÌ ÚÁÂÌÏËÉÒÏ×ÁÎ" - #define ERR_FILE_OR_DIR_BUSY "æÁÊÌ/ËÁÔÁÌÏÇ ÚÁÎÑÔ" - #define ERR_FILE_ALREADY_OPEN_W "æÁÊÌ ÕÖÅ ÏÔËÒÙÔ ÎÁ ÚÁÐÉÓØ" - #define ERR_FILE_ALREADY_OPEN_R "æÁÊÌ ÕÖÅ ÏÔËÒÙÔ ÎÁ ÞÔÅÎÉÅ" - #define ERR_INVALID_REFNUM "îÅ×ÅÒÎÏÅ ËÏÌÉÞÅÓÔ×Ï ÓÓÙÌÏË" - #define ERR_GETTING_FILE_POS "ïÛÉÂËÁ ÐÒÉ ÐÏÌÕÞÅÎÉÉ ÐÏÚÉÃÉÉ ÆÁÊÌÁ" - #define ERR_VOLUME_OFFLINE "ôÏÍ ÏÔÓÏÅÄÉÎÅÎ" - #define ERR_PERMISSION_DENIED "ïÔËÁÚÁÎÏ × ÒÁÚÒÅÛÅÎÉÉ" - #define ERR_VOL_ALREADY_ONLINE "ôÏÍ ÕÖÅ ÐÏÄÓÏÅÄÉÎÅÎ" - #define ERR_NO_SUCH_DRIVE "îÅÔ ÔÁËÏÇÏ ÄÉÓËÁ" - #define ERR_NOT_MAC_DISK "îÅ ÄÉÓË Macintosh" - #define ERR_VOL_EXTERNAL_FS "ôÏÍ ÐÒÉÎÁÄÌÅÖÉÔ ×ÎÅÛÎÅÊ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÅ" - #define ERR_PROBLEM_RENAME "ðÒÏÂÌÅÍÁ ÐÒÉ ÐÅÒÅÉÍÅÎÏ×ÁÎÉÉ" - #define ERR_BAD_MASTER_BLOCK "ðÌÏÈÏÊ ÇÌÁ×ÎÙÊ ÂÌÏË ËÁÔÁÌÏÇÁ" - #define ERR_CANT_MOVE_FORBIDDEN "ðÏÐÙÔËÁ ÐÅÒÅÍÅÓÔÉÔØ ÚÁÐÒÅÝÅÎÁ" - #define ERR_WRONG_VOL_TYPE "îÅ×ÅÒÎÙÊ ÔÉÐ ÔÏÍÁ" - #define ERR_SERVER_VOL_LOST "óÅÒ×ÅÒÎÙÊ ÔÏÍ ÂÙÌ ÏÔÓÏÅÄÉÎÅÎ" - #define ERR_FILE_ID_NOT_FOUND "éÄÅÎÔÉÆÉËÁÔÏÒ ÆÁÊÌÁ ÎÅ ÎÁÊÄÅÎ" - #define ERR_FILE_ID_EXISTS "éÄÅÎÔÉÆÉËÁÔÏÒ ÆÁÊÌÁ ÕÖÅ ÓÕÝÅÓÔ×ÕÅÔ" - #define ERR_SERVER_NO_RESPOND "óÅÒ×ÅÒ ÎÅ ÏÔ×ÅÞÁÅÔ" - #define ERR_USER_AUTH_FAILED "éÄÅÎÔÉÆÉËÁÃÉÑ ÐÏÌØÚÏ×ÁÔÅÌÑ ÎÅ ÕÄÁÌÁÓØ" - #define ERR_PWORD_EXPIRED "ðÁÒÏÌØ ÎÁ ÓÅÒ×ÅÒÅ ÕÓÔÁÒÅÌ" - #define ERR_ACCESS_DENIED "ïÔËÁÚÁÎÏ × ÄÏÓÔÕÐÅ" - #define ERR_NOT_A_DOS_DISK "îÅ ÄÉÓË DOS" - #define ERR_SHARING_VIOLATION "îÁÒÕÛÅÎÉÅ ÓÏ×ÍÅÓÔÎÏÇÏ ÄÏÓÔÕÐÁ" - #define ERR_CANNOT_MAKE "îÅ ÍÏÇÕ ÓÏÂÒÁÔØ" - #define ERR_DEV_IN_USE "õÓÔÒÏÊÓÔ×Ï ÕÖÅ ÉÓÐÏÌØÚÕÅÔÓÑ" - #define ERR_OPEN_FAILED "ïÔËÒÙÔÉÅ ÎÅ ÕÄÁÌÏÓØ" - #define ERR_PIPE_BUSY "ëÏÎ×ÅÊÅÒ ÚÁÎÑÔ" - #define ERR_SHARING_BUF_EXCEEDED "òÁÚÄÅÌÑÅÍÙÊ ÂÕÆÅÒ ÐÅÒÅÐÏÌÎÅÎ" - #define ERR_TOO_MANY_HANDLES "óÌÉÛËÏÍ ÍÎÏÇÏ ÏÔËÒÙÔÙÈ ÄÅÓËÒÉÐÔÏÒÏ×" - #define ERR_SEEK_ERROR "ïÛÉÂËÁ ÐÏÚÉÃÉÏÎÉÒÏ×ÁÎÉÑ" - #define ERR_DEL_CWD "ðÏÐÙÔËÁ ÕÄÁÌÉÔØ ÔÅËÕÝÉÊ ÒÁÂÏÞÉÊ ËÁÔÁÌÏÇ" - #define ERR_WRITE_PROTECT_ERROR "ïÛÉÂËÁ ÚÁÝÉÔÙ ÚÁÐÉÓÉ" - #define ERR_WRITE_FAULT "ïÛÉÂËÁ ÚÁÐÉÓÉ" - #define ERR_LOCK_VIOLATION "îÁÒÕÛÅÎÉÅ ÂÌÏËÉÒÏ×ËÉ" - #define ERR_GEN_FAILURE "ïÂÝÉÊ ÓÂÏÊ" - #define ERR_UNCERTAIN_MEDIA "îÅÏÐÒÅÄÅÌÅÎÎÙÊ ÎÏÓÉÔÅÌØ" - #define ERR_PROT_VIOLATION "îÁÒÕÛÅÎÉÅ ÚÁÝÉÔÙ" - #define ERR_BROKEN_PIPE "óÌÏÍÁÎÎÙÊ ËÏÎ×ÅÊÅÒ" - -#elif (PHYSFS_LANG == PHYSFS_LANG_RUSSIAN_CP1251) - #define DIR_ARCHIVE_DESCRIPTION "Íå àðõèâ, íåïîñðåäñòâåííûé ââîä/âûâîä ôàéëîâîé ñèñòåìû" - #define GRP_ARCHIVE_DESCRIPTION "Ôîðìàò ãðóïïîâîãî ôàéëà Build engine" - #define HOG_ARCHIVE_DESCRIPTION "Descent I/II HOG file format" - #define MVL_ARCHIVE_DESCRIPTION "Descent II Movielib format" - #define ZIP_ARCHIVE_DESCRIPTION "PkZip/WinZip/Info-Zip ñîâìåñòèìûé" - #define WAD_ARCHIVE_DESCRIPTION "DOOM engine format" /* !!! FIXME: translate this line if needed */ - #define LZMA_ARCHIVE_DESCRIPTION "LZMA (7zip) format" /* !!! FIXME: translate this line if needed */ - - #define ERR_IS_INITIALIZED "Óæå èíèöèàëèçèðîâàí" - #define ERR_NOT_INITIALIZED "Íå èíèöèàëèçèðîâàí" - #define ERR_INVALID_ARGUMENT "Íåâåðíûé àðãóìåíò" - #define ERR_FILES_STILL_OPEN "Ôàéëû åùå îòêðûòû" - #define ERR_NO_DIR_CREATE "Íå ìîãó ñîçäàòü êàòàëîãè" - #define ERR_OUT_OF_MEMORY "Êîí÷èëàñü ïàìÿòü" - #define ERR_NOT_IN_SEARCH_PATH "Íåò òàêîãî ýëåìåíòà â ïóòè ïîèñêà" - #define ERR_NOT_SUPPORTED "Îïåðàöèÿ íå ïîääåðæèâàåòñÿ" - #define ERR_UNSUPPORTED_ARCHIVE "Àðõèâû òàêîãî òèïà íå ïîääåðæèâàþòñÿ" - #define ERR_NOT_A_HANDLE "Íå ôàéëîâûé äåñêðèïòîð" - #define ERR_INSECURE_FNAME "Íåáåçîïàñíîå èìÿ ôàéëà" - #define ERR_SYMLINK_DISALLOWED "Ñèìâîëüíûå ññûëêè îòêëþ÷åíû" - #define ERR_NO_WRITE_DIR "Êàòàëîã äëÿ çàïèñè íå óñòàíîâëåí" - #define ERR_NO_SUCH_FILE "Ôàéë íå íàéäåí" - #define ERR_NO_SUCH_PATH "Ïóòü íå íàéäåí" - #define ERR_NO_SUCH_VOLUME "Òîì íå íàéäåí" - #define ERR_PAST_EOF "Çà êîíöîì ôàéëà" - #define ERR_ARC_IS_READ_ONLY "Àðõèâ òîëüêî äëÿ ÷òåíèÿ" - #define ERR_IO_ERROR "Îøèáêà ââîäà/âûâîäà" - #define ERR_CANT_SET_WRITE_DIR "Íå ìîãó óñòàíîâèòü êàòàëîã äëÿ çàïèñè" - #define ERR_SYMLINK_LOOP "Áåñêîíå÷íûé öèêë ñèìâîëüíîé ññûëêè" - #define ERR_COMPRESSION "Îøèáêà (Ðàñ)ïàêîâêè" - #define ERR_NOT_IMPLEMENTED "Íå ðåàëèçîâàíî" - #define ERR_OS_ERROR "Îïåðàöèîííàÿ ñèñòåìà ñîîáùèëà îøèáêó" - #define ERR_FILE_EXISTS "Ôàéë óæå ñóùåñòâóåò" - #define ERR_NOT_A_FILE "Íå ôàéë" - #define ERR_NOT_A_DIR "Íå êàòàëîã" - #define ERR_NOT_AN_ARCHIVE "Íå àðõèâ" - #define ERR_CORRUPTED "Ïîâðåæäåííûé àðõèâ" - #define ERR_SEEK_OUT_OF_RANGE "Ïîçèöèîíèðîâàíèå çà ïðåäåëû" - #define ERR_BAD_FILENAME "Íåâåðíîå èìÿ ôàéëà" - #define ERR_PHYSFS_BAD_OS_CALL "(BUG) PhysicsFS âûïîëíèëà íåâåðíûé ñèñòåìíûé âûçîâ" - #define ERR_ARGV0_IS_NULL "argv0 is NULL" - #define ERR_NEED_DICT "íóæåí ñëîâàðü" - #define ERR_DATA_ERROR "îøèáêà äàííûõ" - #define ERR_MEMORY_ERROR "îøèáêà ïàìÿòè" - #define ERR_BUFFER_ERROR "îøèáêà áóôåðà" - #define ERR_VERSION_ERROR "îøèáêà âåðñèè" - #define ERR_UNKNOWN_ERROR "íåèçâåñòíàÿ îøèáêà" - #define ERR_SEARCHPATH_TRUNC "Ïóòü ïîèñêà îáðåçàí" - #define ERR_GETMODFN_TRUNC "GetModuleFileName() îáðåçàí" - #define ERR_GETMODFN_NO_DIR "GetModuleFileName() íå ïîëó÷èë êàòàëîã" - #define ERR_DISK_FULL "Äèñê ïîëîí" - #define ERR_DIRECTORY_FULL "Êàòàëîã ïîëîí" - #define ERR_MACOS_GENERIC "MacOS ñîîáùèëà îøèáêó (%d)" - #define ERR_OS2_GENERIC "OS/2 ñîîáùèëà îøèáêó (%d)" - #define ERR_VOL_LOCKED_HW "Òîì áëîêèðîâàí àïïàðàòíî" - #define ERR_VOL_LOCKED_SW "Òîì áëîêèðîâàí ïðîãðàììíî" - #define ERR_FILE_LOCKED "Ôàéë çàáëîêèðîâàí" - #define ERR_FILE_OR_DIR_BUSY "Ôàéë/êàòàëîã çàíÿò" - #define ERR_FILE_ALREADY_OPEN_W "Ôàéë óæå îòêðûò íà çàïèñü" - #define ERR_FILE_ALREADY_OPEN_R "Ôàéë óæå îòêðûò íà ÷òåíèå" - #define ERR_INVALID_REFNUM "Íåâåðíîå êîëè÷åñòâî ññûëîê" - #define ERR_GETTING_FILE_POS "Îøèáêà ïðè ïîëó÷åíèè ïîçèöèè ôàéëà" - #define ERR_VOLUME_OFFLINE "Òîì îòñîåäèíåí" - #define ERR_PERMISSION_DENIED "Îòêàçàíî â ðàçðåøåíèè" - #define ERR_VOL_ALREADY_ONLINE "Òîì óæå ïîäñîåäèíåí" - #define ERR_NO_SUCH_DRIVE "Íåò òàêîãî äèñêà" - #define ERR_NOT_MAC_DISK "Íå äèñê Macintosh" - #define ERR_VOL_EXTERNAL_FS "Òîì ïðèíàäëåæèò âíåøíåé ôàéëîâîé ñèñòåìå" - #define ERR_PROBLEM_RENAME "Ïðîáëåìà ïðè ïåðåèìåíîâàíèè" - #define ERR_BAD_MASTER_BLOCK "Ïëîõîé ãëàâíûé áëîê êàòàëîãà" - #define ERR_CANT_MOVE_FORBIDDEN "Ïîïûòêà ïåðåìåñòèòü çàïðåùåíà" - #define ERR_WRONG_VOL_TYPE "Íåâåðíûé òèï òîìà" - #define ERR_SERVER_VOL_LOST "Ñåðâåðíûé òîì áûë îòñîåäèíåí" - #define ERR_FILE_ID_NOT_FOUND "Èäåíòèôèêàòîð ôàéëà íå íàéäåí" - #define ERR_FILE_ID_EXISTS "Èäåíòèôèêàòîð ôàéëà óæå ñóùåñòâóåò" - #define ERR_SERVER_NO_RESPOND "Ñåðâåð íå îòâå÷àåò" - #define ERR_USER_AUTH_FAILED "Èäåíòèôèêàöèÿ ïîëüçîâàòåëÿ íå óäàëàñü" - #define ERR_PWORD_EXPIRED "Ïàðîëü íà ñåðâåðå óñòàðåë" - #define ERR_ACCESS_DENIED "Îòêàçàíî â äîñòóïå" - #define ERR_NOT_A_DOS_DISK "Íå äèñê DOS" - #define ERR_SHARING_VIOLATION "Íàðóøåíèå ñîâìåñòíîãî äîñòóïà" - #define ERR_CANNOT_MAKE "Íå ìîãó ñîáðàòü" - #define ERR_DEV_IN_USE "Óñòðîéñòâî óæå èñïîëüçóåòñÿ" - #define ERR_OPEN_FAILED "Îòêðûòèå íå óäàëîñü" - #define ERR_PIPE_BUSY "Êîíâåéåð çàíÿò" - #define ERR_SHARING_BUF_EXCEEDED "Ðàçäåëÿåìûé áóôåð ïåðåïîëíåí" - #define ERR_TOO_MANY_HANDLES "Ñëèøêîì ìíîãî îòêðûòûõ äåñêðèïòîðîâ" - #define ERR_SEEK_ERROR "Îøèáêà ïîçèöèîíèðîâàíèÿ" - #define ERR_DEL_CWD "Ïîïûòêà óäàëèòü òåêóùèé ðàáî÷èé êàòàëîã" - #define ERR_WRITE_PROTECT_ERROR "Îøèáêà çàùèòû çàïèñè" - #define ERR_WRITE_FAULT "Îøèáêà çàïèñè" - #define ERR_LOCK_VIOLATION "Íàðóøåíèå áëîêèðîâêè" - #define ERR_GEN_FAILURE "Îáùèé ñáîé" - #define ERR_UNCERTAIN_MEDIA "Íåîïðåäåëåííûé íîñèòåëü" - #define ERR_PROT_VIOLATION "Íàðóøåíèå çàùèòû" - #define ERR_BROKEN_PIPE "Ñëîìàííûé êîíâåéåð" - -#elif (PHYSFS_LANG == PHYSFS_LANG_RUSSIAN_CP866) - #define DIR_ARCHIVE_DESCRIPTION "¥ à娢, ¥¯®á।áâ¢¥ë© ¢¢®¤/¢ë¢®¤ ä ©«®¢®© á¨á⥬ë" - #define GRP_ARCHIVE_DESCRIPTION "”®à¬ â £à㯯®¢®£® ä ©« Build engine" - #define HOG_ARCHIVE_DESCRIPTION "Descent I/II HOG file format" - #define MVL_ARCHIVE_DESCRIPTION "Descent II Movielib format" - #define ZIP_ARCHIVE_DESCRIPTION "PkZip/WinZip/Info-Zip ᮢ¬¥á⨬ë©" - #define WAD_ARCHIVE_DESCRIPTION "DOOM engine format" /* !!! FIXME: translate this line if needed */ - #define LZMA_ARCHIVE_DESCRIPTION "LZMA (7zip) format" /* !!! FIXME: translate this line if needed */ - - #define ERR_IS_INITIALIZED "“¦¥ ¨¨æ¨ «¨§¨à®¢ " - #define ERR_NOT_INITIALIZED "¥ ¨¨æ¨ «¨§¨à®¢ " - #define ERR_INVALID_ARGUMENT "¥¢¥àë© à£ã¬¥â" - #define ERR_FILES_STILL_OPEN "” ©«ë ¥é¥ ®âªàëâë" - #define ERR_NO_DIR_CREATE "¥ ¬®£ã ᮧ¤ âì ª â «®£¨" - #define ERR_OUT_OF_MEMORY "Š®ç¨« áì ¯ ¬ïâì" - #define ERR_NOT_IN_SEARCH_PATH "¥â â ª®£® í«¥¬¥â ¢ ¯ã⨠¯®¨áª " - #define ERR_NOT_SUPPORTED "Ž¯¥à æ¨ï ¥ ¯®¤¤¥à¦¨¢ ¥âáï" - #define ERR_UNSUPPORTED_ARCHIVE "€à娢ë â ª®£® ⨯ ¥ ¯®¤¤¥à¦¨¢ îâáï" - #define ERR_NOT_A_HANDLE "¥ ä ©«®¢ë© ¤¥áªà¨¯â®à" - #define ERR_INSECURE_FNAME "¥¡¥§®¯ ᮥ ¨¬ï ä ©« " - #define ERR_SYMLINK_DISALLOWED "‘¨¬¢®«ìë¥ áá뫪¨ ®âª«îç¥ë" - #define ERR_NO_WRITE_DIR "Š â «®£ ¤«ï § ¯¨á¨ ¥ ãáâ ®¢«¥" - #define ERR_NO_SUCH_FILE "” ©« ¥ ©¤¥" - #define ERR_NO_SUCH_PATH "ãâì ¥ ©¤¥" - #define ERR_NO_SUCH_VOLUME "’®¬ ¥ ©¤¥" - #define ERR_PAST_EOF "‡ ª®æ®¬ ä ©« " - #define ERR_ARC_IS_READ_ONLY "€à娢 ⮫쪮 ¤«ï ç⥨ï" - #define ERR_IO_ERROR "Žè¨¡ª ¢¢®¤ /¢ë¢®¤ " - #define ERR_CANT_SET_WRITE_DIR "¥ ¬®£ã ãáâ ®¢¨âì ª â «®£ ¤«ï § ¯¨á¨" - #define ERR_SYMLINK_LOOP "¥áª®¥çë© æ¨ª« ᨬ¢®«ì®© áá뫪¨" - #define ERR_COMPRESSION "Žè¨¡ª ( á)¯ ª®¢ª¨" - #define ERR_NOT_IMPLEMENTED "¥ ॠ«¨§®¢ ®" - #define ERR_OS_ERROR "Ž¯¥à 樮 ï á¨á⥬ á®®¡é¨« ®è¨¡ªã" - #define ERR_FILE_EXISTS "” ©« 㦥 áãé¥áâ¢ã¥â" - #define ERR_NOT_A_FILE "¥ ä ©«" - #define ERR_NOT_A_DIR "¥ ª â «®£" - #define ERR_NOT_AN_ARCHIVE "¥ à娢" - #define ERR_CORRUPTED "®¢à¥¦¤¥ë© à娢" - #define ERR_SEEK_OUT_OF_RANGE "®§¨æ¨®¨à®¢ ¨¥ § ¯à¥¤¥«ë" - #define ERR_BAD_FILENAME "¥¢¥à®¥ ¨¬ï ä ©« " - #define ERR_PHYSFS_BAD_OS_CALL "(BUG) PhysicsFS ¢ë¯®«¨« ¥¢¥àë© á¨áâ¥¬ë© ¢ë§®¢" - #define ERR_ARGV0_IS_NULL "argv0 is NULL" - #define ERR_NEED_DICT "㦥 á«®¢ àì" - #define ERR_DATA_ERROR "®è¨¡ª ¤ ëå" - #define ERR_MEMORY_ERROR "®è¨¡ª ¯ ¬ïâ¨" - #define ERR_BUFFER_ERROR "®è¨¡ª ¡ãä¥à " - #define ERR_VERSION_ERROR "®è¨¡ª ¢¥àᨨ" - #define ERR_UNKNOWN_ERROR "¥¨§¢¥áâ ï ®è¨¡ª " - #define ERR_SEARCHPATH_TRUNC "ãâì ¯®¨áª ®¡à¥§ " - #define ERR_GETMODFN_TRUNC "GetModuleFileName() ®¡à¥§ " - #define ERR_GETMODFN_NO_DIR "GetModuleFileName() ¥ ¯®«ã稫 ª â «®£" - #define ERR_DISK_FULL "„¨áª ¯®«®" - #define ERR_DIRECTORY_FULL "Š â «®£ ¯®«®" - #define ERR_MACOS_GENERIC "MacOS á®®¡é¨« ®è¨¡ªã (%d)" - #define ERR_OS2_GENERIC "OS/2 á®®¡é¨« ®è¨¡ªã (%d)" - #define ERR_VOL_LOCKED_HW "’®¬ ¡«®ª¨à®¢ ¯¯ à â®" - #define ERR_VOL_LOCKED_SW "’®¬ ¡«®ª¨à®¢ ¯à®£à ¬¬®" - #define ERR_FILE_LOCKED "” ©« § ¡«®ª¨à®¢ " - #define ERR_FILE_OR_DIR_BUSY "” ©«/ª â «®£ § ïâ" - #define ERR_FILE_ALREADY_OPEN_W "” ©« 㦥 ®âªàëâ § ¯¨áì" - #define ERR_FILE_ALREADY_OPEN_R "” ©« 㦥 ®âªàëâ ç⥨¥" - #define ERR_INVALID_REFNUM "¥¢¥à®¥ ª®«¨ç¥á⢮ ááë«®ª" - #define ERR_GETTING_FILE_POS "Žè¨¡ª ¯à¨ ¯®«ã票¨ ¯®§¨æ¨¨ ä ©« " - #define ERR_VOLUME_OFFLINE "’®¬ ®âᮥ¤¨¥" - #define ERR_PERMISSION_DENIED "Žâª § ® ¢ à §à¥è¥¨¨" - #define ERR_VOL_ALREADY_ONLINE "’®¬ 㦥 ¯®¤á®¥¤¨¥" - #define ERR_NO_SUCH_DRIVE "¥â â ª®£® ¤¨áª " - #define ERR_NOT_MAC_DISK "¥ ¤¨áª Macintosh" - #define ERR_VOL_EXTERNAL_FS "’®¬ ¯à¨ ¤«¥¦¨â ¢¥è¥© ä ©«®¢®© á¨á⥬¥" - #define ERR_PROBLEM_RENAME "஡«¥¬ ¯à¨ ¯¥à¥¨¬¥®¢ ¨¨" - #define ERR_BAD_MASTER_BLOCK "«®å®© £« ¢ë© ¡«®ª ª â «®£ " - #define ERR_CANT_MOVE_FORBIDDEN "®¯ë⪠¯¥à¥¬¥áâ¨âì § ¯à¥é¥ " - #define ERR_WRONG_VOL_TYPE "¥¢¥àë© â¨¯ ⮬ " - #define ERR_SERVER_VOL_LOST "‘¥à¢¥àë© â®¬ ¡ë« ®âᮥ¤¨¥" - #define ERR_FILE_ID_NOT_FOUND "ˆ¤¥â¨ä¨ª â®à ä ©« ¥ ©¤¥" - #define ERR_FILE_ID_EXISTS "ˆ¤¥â¨ä¨ª â®à ä ©« 㦥 áãé¥áâ¢ã¥â" - #define ERR_SERVER_NO_RESPOND "‘¥à¢¥à ¥ ®â¢¥ç ¥â" - #define ERR_USER_AUTH_FAILED "ˆ¤¥â¨ä¨ª æ¨ï ¯®«ì§®¢ â¥«ï ¥ 㤠« áì" - #define ERR_PWORD_EXPIRED " ஫ì á¥à¢¥à¥ ãáâ ५" - #define ERR_ACCESS_DENIED "Žâª § ® ¢ ¤®áâ㯥" - #define ERR_NOT_A_DOS_DISK "¥ ¤¨áª DOS" - #define ERR_SHARING_VIOLATION " àã襨¥ ᮢ¬¥á⮣® ¤®áâ㯠" - #define ERR_CANNOT_MAKE "¥ ¬®£ã ᮡà âì" - #define ERR_DEV_IN_USE "“áâனá⢮ 㦥 ¨á¯®«ì§ã¥âáï" - #define ERR_OPEN_FAILED "Žâªàë⨥ ¥ 㤠«®áì" - #define ERR_PIPE_BUSY "Š®¢¥©¥à § ïâ" - #define ERR_SHARING_BUF_EXCEEDED " §¤¥«ï¥¬ë© ¡ãä¥à ¯¥à¥¯®«¥" - #define ERR_TOO_MANY_HANDLES "‘«¨èª®¬ ¬®£® ®âªàëâëå ¤¥áªà¨¯â®à®¢" - #define ERR_SEEK_ERROR "Žè¨¡ª ¯®§¨æ¨®¨à®¢ ¨ï" - #define ERR_DEL_CWD "®¯ë⪠㤠«¨âì ⥪ã騩 à ¡®ç¨© ª â «®£" - #define ERR_WRITE_PROTECT_ERROR "Žè¨¡ª § é¨âë § ¯¨á¨" - #define ERR_WRITE_FAULT "Žè¨¡ª § ¯¨á¨" - #define ERR_LOCK_VIOLATION " àã襨¥ ¡«®ª¨à®¢ª¨" - #define ERR_GEN_FAILURE "Ž¡é¨© á¡®©" - #define ERR_UNCERTAIN_MEDIA "¥®¯à¥¤¥«¥ë© ®á¨â¥«ì" - #define ERR_PROT_VIOLATION " àã襨¥ § é¨âë" - #define ERR_BROKEN_PIPE "‘«®¬ ë© ª®¢¥©¥à" - -#elif (PHYSFS_LANG == PHYSFS_LANG_RUSSIAN_ISO_8859_5) - #define DIR_ARCHIVE_DESCRIPTION "½Õ ÐàåØÒ, ÝÕßÞáàÕÔáâÒÕÝÝëÙ ÒÒÞÔ/ÒëÒÞÔ äÐÙÛÞÒÞÙ áØáâÕÜë" - #define GRP_ARCHIVE_DESCRIPTION "ÄÞàÜÐâ ÓàãßßÞÒÞÓÞ äÐÙÛÐ Build engine" - #define HOG_ARCHIVE_DESCRIPTION "Descent I/II HOG file format" - #define MVL_ARCHIVE_DESCRIPTION "Descent II Movielib format" - #define ZIP_ARCHIVE_DESCRIPTION "PkZip/WinZip/Info-Zip áÞÒÜÕáâØÜëÙ" - #define WAD_ARCHIVE_DESCRIPTION "DOOM engine format" /* !!! FIXME: translate this line if needed */ - #define LZMA_ARCHIVE_DESCRIPTION "LZMA (7zip) format" /* !!! FIXME: translate this line if needed */ - - #define ERR_IS_INITIALIZED "ÃÖÕ ØÝØæØÐÛØ×ØàÞÒÐÝ" - #define ERR_NOT_INITIALIZED "½Õ ØÝØæØÐÛØ×ØàÞÒÐÝ" - #define ERR_INVALID_ARGUMENT "½ÕÒÕàÝëÙ ÐàÓãÜÕÝâ" - #define ERR_FILES_STILL_OPEN "ÄÐÙÛë ÕéÕ ÞâÚàëâë" - #define ERR_NO_DIR_CREATE "½Õ ÜÞÓã áÞ×ÔÐâì ÚÐâÐÛÞÓØ" - #define ERR_OUT_OF_MEMORY "ºÞÝçØÛÐáì ßÐÜïâì" - #define ERR_NOT_IN_SEARCH_PATH "½Õâ âÐÚÞÓÞ íÛÕÜÕÝâÐ Ò ßãâØ ßÞØáÚÐ" - #define ERR_NOT_SUPPORTED "¾ßÕàÐæØï ÝÕ ßÞÔÔÕàÖØÒÐÕâáï" - #define ERR_UNSUPPORTED_ARCHIVE "°àåØÒë âÐÚÞÓÞ âØßÐ ÝÕ ßÞÔÔÕàÖØÒÐîâáï" - #define ERR_NOT_A_HANDLE "½Õ äÐÙÛÞÒëÙ ÔÕáÚàØßâÞà" - #define ERR_INSECURE_FNAME "½ÕÑÕ×ÞßÐáÝÞÕ ØÜï äÐÙÛÐ" - #define ERR_SYMLINK_DISALLOWED "ÁØÜÒÞÛìÝëÕ ááëÛÚØ ÞâÚÛîçÕÝë" - #define ERR_NO_WRITE_DIR "ºÐâÐÛÞÓ ÔÛï ×ÐßØáØ ÝÕ ãáâÐÝÞÒÛÕÝ" - #define ERR_NO_SUCH_FILE "ÄÐÙÛ ÝÕ ÝÐÙÔÕÝ" - #define ERR_NO_SUCH_PATH "¿ãâì ÝÕ ÝÐÙÔÕÝ" - #define ERR_NO_SUCH_VOLUME "ÂÞÜ ÝÕ ÝÐÙÔÕÝ" - #define ERR_PAST_EOF "·Ð ÚÞÝæÞÜ äÐÙÛÐ" - #define ERR_ARC_IS_READ_ONLY "°àåØÒ âÞÛìÚÞ ÔÛï çâÕÝØï" - #define ERR_IO_ERROR "¾èØÑÚÐ ÒÒÞÔÐ/ÒëÒÞÔÐ" - #define ERR_CANT_SET_WRITE_DIR "½Õ ÜÞÓã ãáâÐÝÞÒØâì ÚÐâÐÛÞÓ ÔÛï ×ÐßØáØ" - #define ERR_SYMLINK_LOOP "±ÕáÚÞÝÕçÝëÙ æØÚÛ áØÜÒÞÛìÝÞÙ ááëÛÚØ" - #define ERR_COMPRESSION "¾èØÑÚÐ (ÀÐá)ßÐÚÞÒÚØ" - #define ERR_NOT_IMPLEMENTED "½Õ àÕÐÛØ×ÞÒÐÝÞ" - #define ERR_OS_ERROR "¾ßÕàÐæØÞÝÝÐï áØáâÕÜÐ áÞÞÑéØÛÐ ÞèØÑÚã" - #define ERR_FILE_EXISTS "ÄÐÙÛ ãÖÕ áãéÕáâÒãÕâ" - #define ERR_NOT_A_FILE "½Õ äÐÙÛ" - #define ERR_NOT_A_DIR "½Õ ÚÐâÐÛÞÓ" - #define ERR_NOT_AN_ARCHIVE "½Õ ÐàåØÒ" - #define ERR_CORRUPTED "¿ÞÒàÕÖÔÕÝÝëÙ ÐàåØÒ" - #define ERR_SEEK_OUT_OF_RANGE "¿Þ×ØæØÞÝØàÞÒÐÝØÕ ×Ð ßàÕÔÕÛë" - #define ERR_BAD_FILENAME "½ÕÒÕàÝÞÕ ØÜï äÐÙÛÐ" - #define ERR_PHYSFS_BAD_OS_CALL "(BUG) PhysicsFS ÒëßÞÛÝØÛÐ ÝÕÒÕàÝëÙ áØáâÕÜÝëÙ Òë×ÞÒ" - #define ERR_ARGV0_IS_NULL "argv0 is NULL" - #define ERR_NEED_DICT "ÝãÖÕÝ áÛÞÒÐàì" - #define ERR_DATA_ERROR "ÞèØÑÚÐ ÔÐÝÝëå" - #define ERR_MEMORY_ERROR "ÞèØÑÚÐ ßÐÜïâØ" - #define ERR_BUFFER_ERROR "ÞèØÑÚÐ ÑãäÕàÐ" - #define ERR_VERSION_ERROR "ÞèØÑÚÐ ÒÕàáØØ" - #define ERR_UNKNOWN_ERROR "ÝÕØ×ÒÕáâÝÐï ÞèØÑÚÐ" - #define ERR_SEARCHPATH_TRUNC "¿ãâì ßÞØáÚÐ ÞÑàÕ×ÐÝ" - #define ERR_GETMODFN_TRUNC "GetModuleFileName() ÞÑàÕ×ÐÝ" - #define ERR_GETMODFN_NO_DIR "GetModuleFileName() ÝÕ ßÞÛãçØÛ ÚÐâÐÛÞÓ" - #define ERR_DISK_FULL "´ØáÚ ßÞÛÞÝ" - #define ERR_DIRECTORY_FULL "ºÐâÐÛÞÓ ßÞÛÞÝ" - #define ERR_MACOS_GENERIC "MacOS áÞÞÑéØÛÐ ÞèØÑÚã (%d)" - #define ERR_OS2_GENERIC "OS/2 áÞÞÑéØÛÐ ÞèØÑÚã (%d)" - #define ERR_VOL_LOCKED_HW "ÂÞÜ ÑÛÞÚØàÞÒÐÝ ÐßßÐàÐâÝÞ" - #define ERR_VOL_LOCKED_SW "ÂÞÜ ÑÛÞÚØàÞÒÐÝ ßàÞÓàÐÜÜÝÞ" - #define ERR_FILE_LOCKED "ÄÐÙÛ ×ÐÑÛÞÚØàÞÒÐÝ" - #define ERR_FILE_OR_DIR_BUSY "ÄÐÙÛ/ÚÐâÐÛÞÓ ×ÐÝïâ" - #define ERR_FILE_ALREADY_OPEN_W "ÄÐÙÛ ãÖÕ ÞâÚàëâ ÝÐ ×ÐßØáì" - #define ERR_FILE_ALREADY_OPEN_R "ÄÐÙÛ ãÖÕ ÞâÚàëâ ÝÐ çâÕÝØÕ" - #define ERR_INVALID_REFNUM "½ÕÒÕàÝÞÕ ÚÞÛØçÕáâÒÞ ááëÛÞÚ" - #define ERR_GETTING_FILE_POS "¾èØÑÚÐ ßàØ ßÞÛãçÕÝØØ ßÞ×ØæØØ äÐÙÛÐ" - #define ERR_VOLUME_OFFLINE "ÂÞÜ ÞâáÞÕÔØÝÕÝ" - #define ERR_PERMISSION_DENIED "¾âÚÐ×ÐÝÞ Ò àÐ×àÕèÕÝØØ" - #define ERR_VOL_ALREADY_ONLINE "ÂÞÜ ãÖÕ ßÞÔáÞÕÔØÝÕÝ" - #define ERR_NO_SUCH_DRIVE "½Õâ âÐÚÞÓÞ ÔØáÚÐ" - #define ERR_NOT_MAC_DISK "½Õ ÔØáÚ Macintosh" - #define ERR_VOL_EXTERNAL_FS "ÂÞÜ ßàØÝÐÔÛÕÖØâ ÒÝÕèÝÕÙ äÐÙÛÞÒÞÙ áØáâÕÜÕ" - #define ERR_PROBLEM_RENAME "¿àÞÑÛÕÜÐ ßàØ ßÕàÕØÜÕÝÞÒÐÝØØ" - #define ERR_BAD_MASTER_BLOCK "¿ÛÞåÞÙ ÓÛÐÒÝëÙ ÑÛÞÚ ÚÐâÐÛÞÓÐ" - #define ERR_CANT_MOVE_FORBIDDEN "¿ÞßëâÚÐ ßÕàÕÜÕáâØâì ×ÐßàÕéÕÝÐ" - #define ERR_WRONG_VOL_TYPE "½ÕÒÕàÝëÙ âØß âÞÜÐ" - #define ERR_SERVER_VOL_LOST "ÁÕàÒÕàÝëÙ âÞÜ ÑëÛ ÞâáÞÕÔØÝÕÝ" - #define ERR_FILE_ID_NOT_FOUND "¸ÔÕÝâØäØÚÐâÞà äÐÙÛÐ ÝÕ ÝÐÙÔÕÝ" - #define ERR_FILE_ID_EXISTS "¸ÔÕÝâØäØÚÐâÞà äÐÙÛÐ ãÖÕ áãéÕáâÒãÕâ" - #define ERR_SERVER_NO_RESPOND "ÁÕàÒÕà ÝÕ ÞâÒÕçÐÕâ" - #define ERR_USER_AUTH_FAILED "¸ÔÕÝâØäØÚÐæØï ßÞÛì×ÞÒÐâÕÛï ÝÕ ãÔÐÛÐáì" - #define ERR_PWORD_EXPIRED "¿ÐàÞÛì ÝÐ áÕàÒÕàÕ ãáâÐàÕÛ" - #define ERR_ACCESS_DENIED "¾âÚÐ×ÐÝÞ Ò ÔÞáâãßÕ" - #define ERR_NOT_A_DOS_DISK "½Õ ÔØáÚ DOS" - #define ERR_SHARING_VIOLATION "½ÐàãèÕÝØÕ áÞÒÜÕáâÝÞÓÞ ÔÞáâãßÐ" - #define ERR_CANNOT_MAKE "½Õ ÜÞÓã áÞÑàÐâì" - #define ERR_DEV_IN_USE "ÃáâàÞÙáâÒÞ ãÖÕ ØáßÞÛì×ãÕâáï" - #define ERR_OPEN_FAILED "¾âÚàëâØÕ ÝÕ ãÔÐÛÞáì" - #define ERR_PIPE_BUSY "ºÞÝÒÕÙÕà ×ÐÝïâ" - #define ERR_SHARING_BUF_EXCEEDED "ÀÐ×ÔÕÛïÕÜëÙ ÑãäÕà ßÕàÕßÞÛÝÕÝ" - #define ERR_TOO_MANY_HANDLES "ÁÛØèÚÞÜ ÜÝÞÓÞ ÞâÚàëâëå ÔÕáÚàØßâÞàÞÒ" - #define ERR_SEEK_ERROR "¾èØÑÚÐ ßÞ×ØæØÞÝØàÞÒÐÝØï" - #define ERR_DEL_CWD "¿ÞßëâÚÐ ãÔÐÛØâì âÕÚãéØÙ àÐÑÞçØÙ ÚÐâÐÛÞÓ" - #define ERR_WRITE_PROTECT_ERROR "¾èØÑÚÐ ×ÐéØâë ×ÐßØáØ" - #define ERR_WRITE_FAULT "¾èØÑÚÐ ×ÐßØáØ" - #define ERR_LOCK_VIOLATION "½ÐàãèÕÝØÕ ÑÛÞÚØàÞÒÚØ" - #define ERR_GEN_FAILURE "¾ÑéØÙ áÑÞÙ" - #define ERR_UNCERTAIN_MEDIA "½ÕÞßàÕÔÕÛÕÝÝëÙ ÝÞáØâÕÛì" - #define ERR_PROT_VIOLATION "½ÐàãèÕÝØÕ ×ÐéØâë" - #define ERR_BROKEN_PIPE "ÁÛÞÜÐÝÝëÙ ÚÞÝÒÕÙÕà" - - -#elif (PHYSFS_LANG == PHYSFS_LANG_FRENCH) - #define DIR_ARCHIVE_DESCRIPTION "Pas d'archive, E/S directes sur système de fichiers" - #define GRP_ARCHIVE_DESCRIPTION "Format Groupfile du moteur Build" - #define HOG_ARCHIVE_DESCRIPTION "Descent I/II HOG file format" - #define MVL_ARCHIVE_DESCRIPTION "Descent II Movielib format" - #define QPAK_ARCHIVE_DESCRIPTION "Quake I/II format" - #define ZIP_ARCHIVE_DESCRIPTION "Compatible PkZip/WinZip/Info-Zip" - #define WAD_ARCHIVE_DESCRIPTION "Format WAD du moteur DOOM" - #define LZMA_ARCHIVE_DESCRIPTION "LZMA (7zip) format" /* !!! FIXME: translate this line if needed */ - - #define ERR_IS_INITIALIZED "Déjà initialisé" - #define ERR_NOT_INITIALIZED "Non initialisé" - #define ERR_INVALID_ARGUMENT "Argument invalide" - #define ERR_FILES_STILL_OPEN "Fichiers encore ouverts" - #define ERR_NO_DIR_CREATE "Echec de la création de répertoires" - #define ERR_OUT_OF_MEMORY "A court de mémoire" - #define ERR_NOT_IN_SEARCH_PATH "Aucune entrée dans le chemin de recherche" - #define ERR_NOT_SUPPORTED "Opération non supportée" - #define ERR_UNSUPPORTED_ARCHIVE "Type d'archive non supportée" - #define ERR_NOT_A_HANDLE "Pas un descripteur de fichier" - #define ERR_INSECURE_FNAME "Nom de fichier dangereux" - #define ERR_SYMLINK_DISALLOWED "Les liens symboliques sont désactivés" - #define ERR_NO_WRITE_DIR "Le répertoire d'écriture n'est pas spécifié" - #define ERR_NO_SUCH_FILE "Fichier non trouvé" - #define ERR_NO_SUCH_PATH "Chemin non trouvé" - #define ERR_NO_SUCH_VOLUME "Volume non trouvé" - #define ERR_PAST_EOF "Au-delà de la fin du fichier" - #define ERR_ARC_IS_READ_ONLY "L'archive est en lecture seule" - #define ERR_IO_ERROR "Erreur E/S" - #define ERR_CANT_SET_WRITE_DIR "Ne peut utiliser le répertoire d'écriture" - #define ERR_SYMLINK_LOOP "Boucle infinie dans les liens symboliques" - #define ERR_COMPRESSION "Erreur de (dé)compression" - #define ERR_NOT_IMPLEMENTED "Non implémenté" - #define ERR_OS_ERROR "Erreur rapportée par le système d'exploitation" - #define ERR_FILE_EXISTS "Le fichier existe déjà" - #define ERR_NOT_A_FILE "Pas un fichier" - #define ERR_NOT_A_DIR "Pas un répertoire" - #define ERR_NOT_AN_ARCHIVE "Pas une archive" - #define ERR_CORRUPTED "Archive corrompue" - #define ERR_SEEK_OUT_OF_RANGE "Pointeur de fichier hors de portée" - #define ERR_BAD_FILENAME "Mauvais nom de fichier" - #define ERR_PHYSFS_BAD_OS_CALL "(BOGUE) PhysicsFS a fait un mauvais appel système, le salaud" - #define ERR_ARGV0_IS_NULL "argv0 est NULL" - #define ERR_NEED_DICT "a besoin du dico" - #define ERR_DATA_ERROR "erreur de données" - #define ERR_MEMORY_ERROR "erreur mémoire" - #define ERR_BUFFER_ERROR "erreur tampon" - #define ERR_VERSION_ERROR "erreur de version" - #define ERR_UNKNOWN_ERROR "erreur inconnue" - #define ERR_SEARCHPATH_TRUNC "Le chemin de recherche a été tronqué" - #define ERR_GETMODFN_TRUNC "GetModuleFileName() a été tronqué" - #define ERR_GETMODFN_NO_DIR "GetModuleFileName() n'a pas de répertoire" - #define ERR_DISK_FULL "Disque plein" - #define ERR_DIRECTORY_FULL "Répertoire plein" - #define ERR_MACOS_GENERIC "Erreur rapportée par MacOS (%d)" - #define ERR_OS2_GENERIC "Erreur rapportée par OS/2 (%d)" - #define ERR_VOL_LOCKED_HW "Le volume est verrouillé matériellement" - #define ERR_VOL_LOCKED_SW "Le volume est verrouillé par logiciel" - #define ERR_FILE_LOCKED "Fichier verrouillé" - #define ERR_FILE_OR_DIR_BUSY "Fichier/répertoire occupé" - #define ERR_FILE_ALREADY_OPEN_W "Fichier déjà ouvert en écriture" - #define ERR_FILE_ALREADY_OPEN_R "Fichier déjà ouvert en lecture" - #define ERR_INVALID_REFNUM "Numéro de référence invalide" - #define ERR_GETTING_FILE_POS "Erreur lors de l'obtention de la position du pointeur de fichier" - #define ERR_VOLUME_OFFLINE "Le volume n'est pas en ligne" - #define ERR_PERMISSION_DENIED "Permission refusée" - #define ERR_VOL_ALREADY_ONLINE "Volumé déjà en ligne" - #define ERR_NO_SUCH_DRIVE "Lecteur inexistant" - #define ERR_NOT_MAC_DISK "Pas un disque Macintosh" - #define ERR_VOL_EXTERNAL_FS "Le volume appartient à un système de fichiers externe" - #define ERR_PROBLEM_RENAME "Problème lors du renommage" - #define ERR_BAD_MASTER_BLOCK "Mauvais block maitre de répertoire" - #define ERR_CANT_MOVE_FORBIDDEN "Essai de déplacement interdit" - #define ERR_WRONG_VOL_TYPE "Mauvais type de volume" - #define ERR_SERVER_VOL_LOST "Le volume serveur a été déconnecté" - #define ERR_FILE_ID_NOT_FOUND "Identificateur de fichier non trouvé" - #define ERR_FILE_ID_EXISTS "Identificateur de fichier existe déjà" - #define ERR_SERVER_NO_RESPOND "Le serveur ne répond pas" - #define ERR_USER_AUTH_FAILED "Authentification de l'utilisateur échouée" - #define ERR_PWORD_EXPIRED "Le mot de passe a expiré sur le serveur" - #define ERR_ACCESS_DENIED "Accès refusé" - #define ERR_NOT_A_DOS_DISK "Pas un disque DOS" - #define ERR_SHARING_VIOLATION "Violation de partage" - #define ERR_CANNOT_MAKE "Ne peut faire" - #define ERR_DEV_IN_USE "Périphérique déjà en utilisation" - #define ERR_OPEN_FAILED "Ouverture échouée" - #define ERR_PIPE_BUSY "Le tube est occupé" - #define ERR_SHARING_BUF_EXCEEDED "Tampon de partage dépassé" - #define ERR_TOO_MANY_HANDLES "Trop de descripteurs ouverts" - #define ERR_SEEK_ERROR "Erreur de positionement" - #define ERR_DEL_CWD "Essai de supprimer le répertoire courant" - #define ERR_WRITE_PROTECT_ERROR "Erreur de protection en écriture" - #define ERR_WRITE_FAULT "Erreur d'écriture" - #define ERR_LOCK_VIOLATION "Violation de verrou" - #define ERR_GEN_FAILURE "Echec général" - #define ERR_UNCERTAIN_MEDIA "Média incertain" - #define ERR_PROT_VIOLATION "Violation de protection" - #define ERR_BROKEN_PIPE "Tube cassé" - -#elif (PHYSFS_LANG == PHYSFS_LANG_PORTUGUESE_BR) - #define DIR_ARCHIVE_DESCRIPTION "Não arquivo, E/S sistema de arquivos direto" - #define GRP_ARCHIVE_DESCRIPTION "Formato Groupfile do engine Build" - #define HOG_ARCHIVE_DESCRIPTION "Formato Descent I/II HOG file" - #define MVL_ARCHIVE_DESCRIPTION "Formato Descent II Movielib" - #define QPAK_ARCHIVE_DESCRIPTION "Formato Quake I/II" - #define ZIP_ARCHIVE_DESCRIPTION "Formato compatível PkZip/WinZip/Info-Zip" - #define WAD_ARCHIVE_DESCRIPTION "Formato WAD do engine DOOM" - #define WAD_ARCHIVE_DESCRIPTION "DOOM engine format" /* !!! FIXME: translate this line if needed */ - #define LZMA_ARCHIVE_DESCRIPTION "LZMA (7zip) format" /* !!! FIXME: translate this line if needed */ - - #define ERR_IS_INITIALIZED "Já inicializado" - #define ERR_NOT_INITIALIZED "Não inicializado" - #define ERR_INVALID_ARGUMENT "Argumento inválido" - #define ERR_FILES_STILL_OPEN "Arquivos ainda abertos" - #define ERR_NO_DIR_CREATE "Falha na criação de diretórios" - #define ERR_OUT_OF_MEMORY "Memória insuficiente" - #define ERR_NOT_IN_SEARCH_PATH "Entrada não encontrada no caminho de busca" - #define ERR_NOT_SUPPORTED "Operação não suportada" - #define ERR_UNSUPPORTED_ARCHIVE "Tipo de arquivo não suportado" - #define ERR_NOT_A_HANDLE "Não é um handler de arquivo" - #define ERR_INSECURE_FNAME "Nome de arquivo inseguro" - #define ERR_SYMLINK_DISALLOWED "Links simbólicos desabilitados" - #define ERR_NO_WRITE_DIR "Diretório de escrita não definido" - #define ERR_NO_SUCH_FILE "Arquivo não encontrado" - #define ERR_NO_SUCH_PATH "Caminho não encontrado" - #define ERR_NO_SUCH_VOLUME "Volume não encontrado" - #define ERR_PAST_EOF "Passou o fim do arquivo" - #define ERR_ARC_IS_READ_ONLY "Arquivo é somente de leitura" - #define ERR_IO_ERROR "Erro de E/S" - #define ERR_CANT_SET_WRITE_DIR "Não foi possível definir diretório de escrita" - #define ERR_SYMLINK_LOOP "Loop infinito de link simbólico" - #define ERR_COMPRESSION "Erro de (Des)compressão" - #define ERR_NOT_IMPLEMENTED "Não implementado" - #define ERR_OS_ERROR "Erro reportado pelo Sistema Operacional" - #define ERR_FILE_EXISTS "Arquivo já existente" - #define ERR_NOT_A_FILE "Não é um arquivo" - #define ERR_NOT_A_DIR "Não é um diretório" - #define ERR_NOT_AN_ARCHIVE "Não é um pacote" - #define ERR_CORRUPTED "Pacote corrompido" - #define ERR_SEEK_OUT_OF_RANGE "Posicionamento além do tamanho" - #define ERR_BAD_FILENAME "Nome de arquivo inválido" - #define ERR_PHYSFS_BAD_OS_CALL "(BUG) PhysicsFS realizou uma chamada de sistema inválida" - #define ERR_ARGV0_IS_NULL "argv0 é NULL" - #define ERR_NEED_DICT "precisa de diretório" - #define ERR_DATA_ERROR "erro nos dados" - #define ERR_MEMORY_ERROR "erro de memória" - #define ERR_BUFFER_ERROR "erro de buffer" - #define ERR_VERSION_ERROR "erro na version" - #define ERR_UNKNOWN_ERROR "erro desconhecido" - #define ERR_SEARCHPATH_TRUNC "Caminho de procura quebrado" - #define ERR_GETMODFN_TRUNC "GetModuleFileName() foi quebrado" - #define ERR_GETMODFN_NO_DIR "GetModuleFileName() nao teve diretório" - #define ERR_DISK_FULL "Disco cheio" - #define ERR_DIRECTORY_FULL "Diretório cheio" - #define ERR_MACOS_GENERIC "MacOS reportou um erro (%d)" - #define ERR_OS2_GENERIC "OS/2 reportou um erro (%d)" - #define ERR_VOL_LOCKED_HW "Volume travado por hardware" - #define ERR_VOL_LOCKED_SW "Volume travado por software" - #define ERR_FILE_LOCKED "Arquivo travado" - #define ERR_FILE_OR_DIR_BUSY "Arquivo/Diretório está em uso" - #define ERR_FILE_ALREADY_OPEN_W "Arquivo já aberto para escrita" - #define ERR_FILE_ALREADY_OPEN_R "Arquivo já aberto para leitura" - #define ERR_INVALID_REFNUM "Número de referência" - #define ERR_GETTING_FILE_POS "Erro ao tentar obter posição do arquivo" - #define ERR_VOLUME_OFFLINE "Volume está indisponível" - #define ERR_PERMISSION_DENIED "Permissão negada" - #define ERR_VOL_ALREADY_ONLINE "Volume disponível" - #define ERR_NO_SUCH_DRIVE "Drive inexistente" - #define ERR_NOT_MAC_DISK "Não é um disco Macintosh" - #define ERR_VOL_EXTERNAL_FS "Volume pertence a um sistema de arquivos externo" - #define ERR_PROBLEM_RENAME "Problema durante renomeação" - #define ERR_BAD_MASTER_BLOCK "Bloco master do diretório inválido" - #define ERR_CANT_MOVE_FORBIDDEN "Tentativa de mover proibida" - #define ERR_WRONG_VOL_TYPE "Tipo inválido de volume" - #define ERR_SERVER_VOL_LOST "Volume servidor desconectado" - #define ERR_FILE_ID_NOT_FOUND "ID de Arquivo não encontrado" - #define ERR_FILE_ID_EXISTS "ID de Arquivo já existente" - #define ERR_SERVER_NO_RESPOND "Servidor não respondendo" - #define ERR_USER_AUTH_FAILED "Autenticação de usuário falhada" - #define ERR_PWORD_EXPIRED "Password foi expirada no servidor" - #define ERR_ACCESS_DENIED "Accesso negado" - #define ERR_NOT_A_DOS_DISK "Não é um disco DOS" - #define ERR_SHARING_VIOLATION "Violação de compartilhamento" - #define ERR_CANNOT_MAKE "Não pode ser feito" - #define ERR_DEV_IN_USE "Device já em uso" - #define ERR_OPEN_FAILED "Falaha na abertura" - #define ERR_PIPE_BUSY "Fila ocupada" - #define ERR_SHARING_BUF_EXCEEDED "Buffer de compartilhamento excedeu" - #define ERR_TOO_MANY_HANDLES "Muitos handles abertos" - #define ERR_SEEK_ERROR "Erro de posicionamento" - #define ERR_DEL_CWD "Tentando remover diretório de trabalho atual" - #define ERR_WRITE_PROTECT_ERROR "Erro de proteção de escrita" - #define ERR_WRITE_FAULT "Erro de escrita" - #define ERR_LOCK_VIOLATION "Violação de trava" - #define ERR_GEN_FAILURE "Falha geral" - #define ERR_UNCERTAIN_MEDIA "Media incerta" - #define ERR_PROT_VIOLATION "Violação de proteção" - #define ERR_BROKEN_PIPE "Fila quebrada" - -#elif (PHYSFS_LANG == PHYSFS_LANG_SPANISH) - #define DIR_ARCHIVE_DESCRIPTION "No es un archivo, E/S directa al sistema de ficheros" - #define GRP_ARCHIVE_DESCRIPTION "Formato Build engine Groupfile" - #define HOG_ARCHIVE_DESCRIPTION "Formato Descent I/II HOG file" - #define MVL_ARCHIVE_DESCRIPTION "Formato Descent II Movielib" - #define QPAK_ARCHIVE_DESCRIPTION "Formato Quake I/II" - #define ZIP_ARCHIVE_DESCRIPTION "Compatible con PkZip/WinZip/Info-Zip" - #define WAD_ARCHIVE_DESCRIPTION "DOOM engine format" /* !!! FIXME: translate this line if needed */ - #define LZMA_ARCHIVE_DESCRIPTION "LZMA (7zip) format" /* !!! FIXME: translate this line if needed */ - - #define ERR_IS_INITIALIZED "Ya estaba inicializado" - #define ERR_NOT_INITIALIZED "No está inicializado" - #define ERR_INVALID_ARGUMENT "Argumento inválido" - #define ERR_FILES_STILL_OPEN "Archivos aún abiertos" - #define ERR_NO_DIR_CREATE "Fallo al crear los directorios" - #define ERR_OUT_OF_MEMORY "Memoria agotada" - #define ERR_NOT_IN_SEARCH_PATH "No existe tal entrada en la ruta de búsqueda" - #define ERR_NOT_SUPPORTED "Operación no soportada" - #define ERR_UNSUPPORTED_ARCHIVE "Tipo de archivo no soportado" - #define ERR_NOT_A_HANDLE "No es un manejador de ficheo (file handle)" - #define ERR_INSECURE_FNAME "Nombre de archivo inseguro" - #define ERR_SYMLINK_DISALLOWED "Los enlaces simbólicos están desactivados" - #define ERR_NO_WRITE_DIR "No has configurado un directorio de escritura" - #define ERR_NO_SUCH_FILE "Archivo no encontrado" - #define ERR_NO_SUCH_PATH "Ruta no encontrada" - #define ERR_NO_SUCH_VOLUME "Volumen no encontrado" - #define ERR_PAST_EOF "Te pasaste del final del archivo" - #define ERR_ARC_IS_READ_ONLY "El archivo es de sólo lectura" - #define ERR_IO_ERROR "Error E/S" - #define ERR_CANT_SET_WRITE_DIR "No puedo configurar el directorio de escritura" - #define ERR_SYMLINK_LOOP "Bucle infnito de enlaces simbólicos" - #define ERR_COMPRESSION "Error de (des)compresión" - #define ERR_NOT_IMPLEMENTED "No implementado" - #define ERR_OS_ERROR "El sistema operativo ha devuelto un error" - #define ERR_FILE_EXISTS "El archivo ya existe" - #define ERR_NOT_A_FILE "No es un archivo" - #define ERR_NOT_A_DIR "No es un directorio" - #define ERR_NOT_AN_ARCHIVE "No es un archivo" - #define ERR_CORRUPTED "Archivo corrupto" - #define ERR_SEEK_OUT_OF_RANGE "Búsqueda fuera de rango" - #define ERR_BAD_FILENAME "Nombre de archivo incorrecto" - #define ERR_PHYSFS_BAD_OS_CALL "(BUG) PhysicsFS ha hecho una llamada incorrecta al sistema" - #define ERR_ARGV0_IS_NULL "argv0 es NULL" - #define ERR_NEED_DICT "necesito diccionario" - #define ERR_DATA_ERROR "error de datos" - #define ERR_MEMORY_ERROR "error de memoria" - #define ERR_BUFFER_ERROR "error de buffer" - #define ERR_VERSION_ERROR "error de versión" - #define ERR_UNKNOWN_ERROR "error desconocido" - #define ERR_SEARCHPATH_TRUNC "La ruta de búsqueda ha sido truncada" - #define ERR_GETMODFN_TRUNC "GetModuleFileName() ha sido truncado" - #define ERR_GETMODFN_NO_DIR "GetModuleFileName() no tenia directorio" - #define ERR_DISK_FULL "El disco está lleno" - #define ERR_DIRECTORY_FULL "El directorio está lleno" - #define ERR_MACOS_GENERIC "MacOS ha devuelto un error (%d)" - #define ERR_OS2_GENERIC "OS/2 ha devuelto un error (%d)" - #define ERR_VOL_LOCKED_HW "El volumen está bloqueado por el hardware" - #define ERR_VOL_LOCKED_SW "El volumen está bloqueado por el software" - #define ERR_FILE_LOCKED "El archivo está bloqueado" - #define ERR_FILE_OR_DIR_BUSY "Fichero o directorio ocupados" - #define ERR_FILE_ALREADY_OPEN_W "Fichero ya abierto para escritura" - #define ERR_FILE_ALREADY_OPEN_R "Fichero ya abierto para lectura" - #define ERR_INVALID_REFNUM "El número de referencia no es válido" - #define ERR_GETTING_FILE_POS "Error al tomar la posición del fichero" - #define ERR_VOLUME_OFFLINE "El volumen está desconectado" - #define ERR_PERMISSION_DENIED "Permiso denegado" - #define ERR_VOL_ALREADY_ONLINE "El volumen ya estaba conectado" - #define ERR_NO_SUCH_DRIVE "No existe tal unidad" - #define ERR_NOT_MAC_DISK "No es un disco Macintosh" - #define ERR_VOL_EXTERNAL_FS "El volumen pertence a un sistema de ficheros externo" - #define ERR_PROBLEM_RENAME "Problemas al renombrar" - #define ERR_BAD_MASTER_BLOCK "Bloque maestro de directorios incorrecto" - #define ERR_CANT_MOVE_FORBIDDEN "Intento de mover forbidden" - #define ERR_WRONG_VOL_TYPE "Tipo de volumen incorrecto" - #define ERR_SERVER_VOL_LOST "El servidor de volúmenes ha sido desconectado" - #define ERR_FILE_ID_NOT_FOUND "Identificador de archivo no encontrado" - #define ERR_FILE_ID_EXISTS "El identificador de archivo ya existe" - #define ERR_SERVER_NO_RESPOND "El servidor no responde" - #define ERR_USER_AUTH_FAILED "Fallo al autentificar el usuario" - #define ERR_PWORD_EXPIRED "La Password en el servidor ha caducado" - #define ERR_ACCESS_DENIED "Acceso denegado" - #define ERR_NOT_A_DOS_DISK "No es un disco de DOS" - #define ERR_SHARING_VIOLATION "Violación al compartir" - #define ERR_CANNOT_MAKE "No puedo hacer make" - #define ERR_DEV_IN_USE "El dispositivo ya estaba en uso" - #define ERR_OPEN_FAILED "Fallo al abrir" - #define ERR_PIPE_BUSY "Tubería ocupada" - #define ERR_SHARING_BUF_EXCEEDED "Buffer de compartición sobrepasado" - #define ERR_TOO_MANY_HANDLES "Demasiados manejadores (handles)" - #define ERR_SEEK_ERROR "Error de búsqueda" - #define ERR_DEL_CWD "Intentando borrar el directorio de trabajo actual" - #define ERR_WRITE_PROTECT_ERROR "Error de protección contra escritura" - #define ERR_WRITE_FAULT "Fallo al escribir" - #define ERR_LOCK_VIOLATION "Violación del bloqueo" - #define ERR_GEN_FAILURE "Fallo general" - #define ERR_UNCERTAIN_MEDIA "Medio incierto" - #define ERR_PROT_VIOLATION "Violación de la protección" - #define ERR_BROKEN_PIPE "Tubería rota" - -#else - #error Please define PHYSFS_LANG. -#endif - -/* end LANG section. */ - -struct __PHYSFS_DIRHANDLE__; -struct __PHYSFS_FILEFUNCTIONS__; - - -/* !!! FIXME: find something better than "dvoid" and "fvoid" ... */ -/* Opaque data for file and dir handlers... */ -typedef void dvoid; -typedef void fvoid; - - -typedef struct -{ - /* - * Basic info about this archiver... - */ - const PHYSFS_ArchiveInfo *info; - - - /* - * DIRECTORY ROUTINES: - * These functions are for dir handles. Generate a handle with the - * openArchive() method, then pass it as the "opaque" dvoid to the - * others. - * - * Symlinks should always be followed; PhysicsFS will use the - * isSymLink() method and make a judgement on whether to - * continue to call other methods based on that. - */ - - - /* - * Returns non-zero if (filename) is a valid archive that this - * driver can handle. This filename is in platform-dependent - * notation. forWriting is non-zero if this is to be used for - * the write directory, and zero if this is to be used for an - * element of the search path. - */ - int (*isArchive)(const char *filename, int forWriting); - - /* - * Open a dirhandle for dir/archive (name). - * This filename is in platform-dependent notation. - * forWriting is non-zero if this is to be used for - * the write directory, and zero if this is to be used for an - * element of the search path. - * Returns NULL on failure, and calls __PHYSFS_setError(). - * Returns non-NULL on success. The pointer returned will be - * passed as the "opaque" parameter for later calls. - */ - void *(*openArchive)(const char *name, int forWriting); - - /* - * List all files in (dirname). Each file is passed to (callback), - * where a copy is made if appropriate, so you should dispose of - * it properly upon return from the callback. - * You should omit symlinks if (omitSymLinks) is non-zero. - * If you have a failure, report as much as you can. - * (dirname) is in platform-independent notation. - */ - void (*enumerateFiles)(dvoid *opaque, - const char *dirname, - int omitSymLinks, - PHYSFS_EnumFilesCallback callback, - const char *origdir, - void *callbackdata); - - /* - * Returns non-zero if filename can be opened for reading. - * This filename is in platform-independent notation. - * You should not follow symlinks. - */ - int (*exists)(dvoid *opaque, const char *name); - - /* - * 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. - * - * Regardless of success or failure, please set *fileExists to - * non-zero if the file existed (even if it's a broken symlink!), - * zero if it did not. - */ - int (*isDirectory)(dvoid *opaque, const char *name, int *fileExists); - - /* - * Returns non-zero if filename is really a symlink. - * This filename is in platform-independent notation. - * - * Regardless of success or failure, please set *fileExists to - * non-zero if the file existed (even if it's a broken symlink!), - * zero if it did not. - */ - int (*isSymLink)(dvoid *opaque, const char *name, int *fileExists); - - /* - * Retrieve the last modification time (mtime) of a file. - * Returns -1 on failure, or the file's mtime in seconds since - * the epoch (Jan 1, 1970) on success. - * This filename is in platform-independent notation. - * - * Regardless of success or failure, please set *exists to - * non-zero if the file existed (even if it's a broken symlink!), - * zero if it did not. - */ - PHYSFS_sint64 (*getLastModTime)(dvoid *opaque, const char *fnm, int *exist); - - /* - * Open file for reading. - * This filename is in platform-independent notation. - * If you can't handle multiple opens of the same file, - * you can opt to fail for the second call. - * Fail if the file does not exist. - * Returns NULL on failure, and calls __PHYSFS_setError(). - * Returns non-NULL on success. The pointer returned will be - * passed as the "opaque" parameter for later file calls. - * - * Regardless of success or failure, please set *fileExists to - * non-zero if the file existed (even if it's a broken symlink!), - * zero if it did not. - */ - fvoid *(*openRead)(dvoid *opaque, const char *fname, int *fileExists); - - /* - * Open file for writing. - * If the file does not exist, it should be created. If it exists, - * it should be truncated to zero bytes. The writing - * offset should be the start of the file. - * This filename is in platform-independent notation. - * If you can't handle multiple opens of the same file, - * you can opt to fail for the second call. - * Returns NULL on failure, and calls __PHYSFS_setError(). - * Returns non-NULL on success. The pointer returned will be - * passed as the "opaque" parameter for later file calls. - */ - fvoid *(*openWrite)(dvoid *opaque, const char *filename); - - /* - * Open file for appending. - * If the file does not exist, it should be created. The writing - * offset should be the end of the file. - * This filename is in platform-independent notation. - * If you can't handle multiple opens of the same file, - * you can opt to fail for the second call. - * Returns NULL on failure, and calls __PHYSFS_setError(). - * Returns non-NULL on success. The pointer returned will be - * passed as the "opaque" parameter for later file calls. - */ - fvoid *(*openAppend)(dvoid *opaque, const char *filename); - - /* - * Delete a file in the archive/directory. - * Return non-zero on success, zero on failure. - * This filename is in platform-independent notation. - * This method may be NULL. - * On failure, call __PHYSFS_setError(). - */ - int (*remove)(dvoid *opaque, const char *filename); - - /* - * Create a directory in the archive/directory. - * If the application is trying to make multiple dirs, PhysicsFS - * will split them up into multiple calls before passing them to - * your driver. - * Return non-zero on success, zero on failure. - * This filename is in platform-independent notation. - * This method may be NULL. - * On failure, call __PHYSFS_setError(). - */ - int (*mkdir)(dvoid *opaque, const char *filename); - - /* - * Close directories/archives, and free any associated memory, - * including (opaque) itself if applicable. Implementation can assume - * that it won't be called if there are still files open from - * this archive. - */ - void (*dirClose)(dvoid *opaque); - - - - /* - * FILE ROUTINES: - * These functions are for file handles generated by the open*() methods. - * They are distinguished by taking a "fvoid" instead of a "dvoid" for - * the opaque handle. - */ - - /* - * Read more from the file. - * Returns number of objects of (objSize) bytes read from file, -1 - * if complete failure. - * On failure, call __PHYSFS_setError(). - */ - PHYSFS_sint64 (*read)(fvoid *opaque, void *buffer, - PHYSFS_uint32 objSize, PHYSFS_uint32 objCount); - - /* - * Write more to the file. Archives don't have to implement this. - * (Set it to NULL if not implemented). - * Returns number of objects of (objSize) bytes written to file, -1 - * if complete failure. - * On failure, call __PHYSFS_setError(). - */ - PHYSFS_sint64 (*write)(fvoid *opaque, const void *buffer, - PHYSFS_uint32 objSize, PHYSFS_uint32 objCount); - - /* - * Returns non-zero if at end of file. - */ - int (*eof)(fvoid *opaque); - - /* - * Returns byte offset from start of file. - */ - PHYSFS_sint64 (*tell)(fvoid *opaque); - - /* - * Move read/write pointer to byte offset from start of file. - * Returns non-zero on success, zero on error. - * On failure, call __PHYSFS_setError(). - */ - int (*seek)(fvoid *opaque, PHYSFS_uint64 offset); - - /* - * Return number of bytes available in the file, or -1 if you - * aren't able to determine. - * On failure, call __PHYSFS_setError(). - */ - PHYSFS_sint64 (*fileLength)(fvoid *opaque); - - /* - * Close the file, and free associated resources, including (opaque) - * if applicable. Returns non-zero on success, zero if can't close - * file. On failure, call __PHYSFS_setError(). - */ - int (*fileClose)(fvoid *opaque); -} PHYSFS_Archiver; - - -/* - * Call this to set the message returned by PHYSFS_getLastError(). - * Please only use the ERR_* constants above, or add new constants to the - * above group, but I want these all in one place. - * - * Calling this with a NULL argument is a safe no-op. - */ -void __PHYSFS_setError(const char *err); - - -/* - * Convert (dirName) to platform-dependent notation, then prepend (prepend) - * and append (append) to the converted string. - * - * So, on Win32, calling: - * __PHYSFS_convertToDependent("C:\", "my/files", NULL); - * ...will return the string "C:\my\files". - * - * This is a convenience function; you might want to hack something out that - * is less generic (and therefore more efficient). - * - * Be sure to free() the return value when done with it. - */ -char *__PHYSFS_convertToDependent(const char *prepend, - const char *dirName, - const char *append); - - -/* This byteorder stuff was lifted from SDL. http://www.libsdl.org/ */ -#define PHYSFS_LIL_ENDIAN 1234 -#define PHYSFS_BIG_ENDIAN 4321 - -#if defined(__i386__) || defined(__ia64__) || defined(WIN32) || \ - (defined(__alpha__) || defined(__alpha)) || \ - defined(__arm__) || defined(ARM) || \ - (defined(__mips__) && defined(__MIPSEL__)) || \ - defined(__SYMBIAN32__) || \ - defined(__x86_64__) || \ - defined(__LITTLE_ENDIAN__) -#define PHYSFS_BYTEORDER PHYSFS_LIL_ENDIAN -#else -#define PHYSFS_BYTEORDER PHYSFS_BIG_ENDIAN -#endif - - -/* - * When sorting the entries in an archive, we use a modified QuickSort. - * When there are less then PHYSFS_QUICKSORT_THRESHOLD entries left to sort, - * we switch over to a BubbleSort for the remainder. Tweak to taste. - * - * You can override this setting by defining PHYSFS_QUICKSORT_THRESHOLD - * before #including "physfs_internal.h". - */ -#ifndef PHYSFS_QUICKSORT_THRESHOLD -#define PHYSFS_QUICKSORT_THRESHOLD 4 -#endif - -/* - * Sort an array (or whatever) of (max) elements. This uses a mixture of - * a QuickSort and BubbleSort internally. - * (cmpfn) is used to determine ordering, and (swapfn) does the actual - * swapping of elements in the list. - * - * See zip.c for an example. - */ -void __PHYSFS_sort(void *entries, PHYSFS_uint32 max, - int (*cmpfn)(void *, PHYSFS_uint32, PHYSFS_uint32), - void (*swapfn)(void *, PHYSFS_uint32, PHYSFS_uint32)); - - -/* 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; } -#define BAIL_MACRO_MUTEX(e, m, r) { __PHYSFS_setError(e); __PHYSFS_platformReleaseMutex(m); return r; } -#define BAIL_IF_MACRO_MUTEX(c, e, m, r) if (c) { __PHYSFS_setError(e); __PHYSFS_platformReleaseMutex(m); return r; } -#define GOTO_MACRO(e, g) { __PHYSFS_setError(e); goto g; } -#define GOTO_IF_MACRO(c, e, g) if (c) { __PHYSFS_setError(e); goto g; } -#define GOTO_MACRO_MUTEX(e, m, g) { __PHYSFS_setError(e); __PHYSFS_platformReleaseMutex(m); goto g; } -#define GOTO_IF_MACRO_MUTEX(c, e, m, g) if (c) { __PHYSFS_setError(e); __PHYSFS_platformReleaseMutex(m); goto g; } - -#define __PHYSFS_ARRAYLEN(x) ( (sizeof (x)) / (sizeof (x[0])) ) - -#if (defined __GNUC__) -#define __PHYSFS_SI64(x) x##LL -#define __PHYSFS_UI64(x) x##ULL -#elif (defined _MSC_VER) -#define __PHYSFS_SI64(x) x##i64 -#define __PHYSFS_UI64(x) x##ui64 -#else -#define __PHYSFS_SI64(x) x -#define __PHYSFS_UI64(x) x -#endif - -/* - * Check if a ui64 will fit in the platform's address space. - * The initial sizeof check will optimize this macro out entirely on - * 64-bit (and larger?!) platforms, and the other condition will - * return zero or non-zero if the variable will fit in the platform's - * size_t, suitable to pass to malloc. This is kinda messy, but effective. - */ -#define __PHYSFS_ui64FitsAddressSpace(s) ( \ - (sizeof (PHYSFS_uint64) > sizeof (size_t)) && \ - ((s) > (__PHYSFS_UI64(0xFFFFFFFFFFFFFFFF) >> (64-(sizeof(size_t)*8)))) \ -) - -/* - * This is a strcasecmp() or stricmp() replacement that expects both strings - * to be in UTF-8 encoding. It will do "case folding" to decide if the - * Unicode codepoints in the strings match. - * - * It will report which string is "greater than" the other, but be aware that - * this doesn't necessarily mean anything: 'a' may be "less than" 'b', but - * a random Kanji codepoint has no meaningful alphabetically relationship to - * a Greek Lambda, but being able to assign a reliable "value" makes sorting - * algorithms possible, if not entirely sane. Most cases should treat the - * return value as "equal" or "not equal". - */ -int __PHYSFS_utf8strcasecmp(const char *s1, const char *s2); - -/* - * This works like __PHYSFS_utf8strcasecmp(), but takes a character (NOT BYTE - * COUNT) argument, like strcasencmp(). - */ -int __PHYSFS_utf8strnicmp(const char *s1, const char *s2, PHYSFS_uint32 l); - -/* - * stricmp() that guarantees to only work with low ASCII. The C runtime - * stricmp() might try to apply a locale/codepage/etc, which we don't want. - */ -int __PHYSFS_stricmpASCII(const char *s1, const char *s2); - -/* - * strnicmp() that guarantees to only work with low ASCII. The C runtime - * strnicmp() might try to apply a locale/codepage/etc, which we don't want. - */ -int __PHYSFS_strnicmpASCII(const char *s1, const char *s2, PHYSFS_uint32 l); - - -/* - * The current allocator. Not valid before PHYSFS_init is called! - */ -extern PHYSFS_Allocator __PHYSFS_AllocatorHooks; - -/* convenience macro to make this less cumbersome internally... */ -#define allocator __PHYSFS_AllocatorHooks - -/*--------------------------------------------------------------------------*/ -/*--------------------------------------------------------------------------*/ -/*------------ ----------------*/ -/*------------ You MUST implement the following functions ----------------*/ -/*------------ if porting to a new platform. ----------------*/ -/*------------ (see platform/unix.c for an example) ----------------*/ -/*------------ ----------------*/ -/*--------------------------------------------------------------------------*/ -/*--------------------------------------------------------------------------*/ - - -/* - * The dir separator; "/" on unix, "\\" on win32, ":" on MacOS, etc... - * Obviously, this isn't a function, but it IS a null-terminated string. - */ -extern const char *__PHYSFS_platformDirSeparator; - - -/* - * Initialize the platform. This is called when PHYSFS_init() is called from - * the application. You can use this to (for example) determine what version - * of Windows you're running. - * - * Return zero if there was a catastrophic failure (which prevents you from - * functioning at all), and non-zero otherwise. - */ -int __PHYSFS_platformInit(void); - - -/* - * Deinitialize the platform. This is called when PHYSFS_deinit() is called - * from the application. You can use this to clean up anything you've - * allocated in your platform driver. - * - * Return zero if there was a catastrophic failure (which prevents you from - * functioning at all), and non-zero otherwise. - */ -int __PHYSFS_platformDeinit(void); - - -/* - * Open a file for reading. (filename) is in platform-dependent notation. The - * file pointer should be positioned on the first byte of the file. - * - * The return value will be some platform-specific datatype that is opaque to - * the caller; it could be a (FILE *) under Unix, or a (HANDLE *) under win32. - * - * The same file can be opened for read multiple times, and each should have - * a unique file handle; this is frequently employed to prevent race - * conditions in the archivers. - * - * Call __PHYSFS_setError() and return (NULL) if the file can't be opened. - */ -void *__PHYSFS_platformOpenRead(const char *filename); - - -/* - * Open a file for writing. (filename) is in platform-dependent notation. If - * the file exists, it should be truncated to zero bytes, and if it doesn't - * exist, it should be created as a zero-byte file. The file pointer should - * be positioned on the first byte of the file. - * - * The return value will be some platform-specific datatype that is opaque to - * the caller; it could be a (FILE *) under Unix, or a (HANDLE *) under win32, - * etc. - * - * Opening a file for write multiple times has undefined results. - * - * Call __PHYSFS_setError() and return (NULL) if the file can't be opened. - */ -void *__PHYSFS_platformOpenWrite(const char *filename); - - -/* - * Open a file for appending. (filename) is in platform-dependent notation. If - * the file exists, the file pointer should be place just past the end of the - * file, so that the first write will be one byte after the current end of - * the file. If the file doesn't exist, it should be created as a zero-byte - * file. The file pointer should be positioned on the first byte of the file. - * - * The return value will be some platform-specific datatype that is opaque to - * the caller; it could be a (FILE *) under Unix, or a (HANDLE *) under win32, - * etc. - * - * Opening a file for append multiple times has undefined results. - * - * Call __PHYSFS_setError() and return (NULL) if the file can't be opened. - */ -void *__PHYSFS_platformOpenAppend(const char *filename); - - -/* - * Read more data from a platform-specific file handle. (opaque) should be - * cast to whatever data type your platform uses. Read a maximum of (count) - * objects of (size) 8-bit bytes to the area pointed to by (buffer). If there - * isn't enough data available, return the number of full objects read, and - * position the file pointer at the start of the first incomplete object. - * On success, return (count) and position the file pointer one byte past - * the end of the last read object. Return (-1) if there is a catastrophic - * error, and call __PHYSFS_setError() to describe the problem; the file - * pointer should not move in such a case. - */ -PHYSFS_sint64 __PHYSFS_platformRead(void *opaque, void *buffer, - PHYSFS_uint32 size, PHYSFS_uint32 count); - -/* - * Write more data to a platform-specific file handle. (opaque) should be - * cast to whatever data type your platform uses. Write a maximum of (count) - * objects of (size) 8-bit bytes from the area pointed to by (buffer). If - * there isn't enough data available, return the number of full objects - * written, and position the file pointer at the start of the first - * incomplete object. Return (-1) if there is a catastrophic error, and call - * __PHYSFS_setError() to describe the problem; the file pointer should not - * move in such a case. - */ -PHYSFS_sint64 __PHYSFS_platformWrite(void *opaque, const void *buffer, - PHYSFS_uint32 size, PHYSFS_uint32 count); - -/* - * Set the file pointer to a new position. (opaque) should be cast to - * whatever data type your platform uses. (pos) specifies the number - * of 8-bit bytes to seek to from the start of the file. Seeking past the - * end of the file is an error condition, and you should check for it. - * - * Not all file types can seek; this is to be expected by the caller. - * - * On error, call __PHYSFS_setError() and return zero. On success, return - * a non-zero value. - */ -int __PHYSFS_platformSeek(void *opaque, PHYSFS_uint64 pos); - - -/* - * Get the file pointer's position, in an 8-bit byte offset from the start of - * the file. (opaque) should be cast to whatever data type your platform - * uses. - * - * Not all file types can "tell"; this is to be expected by the caller. - * - * On error, call __PHYSFS_setError() and return zero. On success, return - * a non-zero value. - */ -PHYSFS_sint64 __PHYSFS_platformTell(void *opaque); - - -/* - * Determine the current size of a file, in 8-bit bytes, from an open file. - * - * The caller expects that this information may not be available for all - * file types on all platforms. - * - * Return -1 if you can't do it, and call __PHYSFS_setError(). Otherwise, - * return the file length in 8-bit bytes. - */ -PHYSFS_sint64 __PHYSFS_platformFileLength(void *handle); - -/* - * Determine if a file is at EOF. (opaque) should be cast to whatever data - * type your platform uses. - * - * The caller expects that there was a short read before calling this. - * - * Return non-zero if EOF, zero if it is _not_ EOF. - */ -int __PHYSFS_platformEOF(void *opaque); - -/* - * Flush any pending writes to disk. (opaque) should be cast to whatever data - * type your platform uses. Be sure to check for errors; the caller expects - * that this function can fail if there was a flushing error, etc. - * - * Return zero on failure, non-zero on success. - */ -int __PHYSFS_platformFlush(void *opaque); - -/* - * Flush and close a file. (opaque) should be cast to whatever data type - * your platform uses. Be sure to check for errors when closing; the - * caller expects that this function can fail if there was a flushing - * error, etc. - * - * You should clean up all resources associated with (opaque). - * - * Return zero on failure, non-zero on success. - */ -int __PHYSFS_platformClose(void *opaque); - -/* - * Platform implementation of PHYSFS_getCdRomDirsCallback()... - * CD directories are discovered and reported to the callback one at a time. - * Pointers passed to the callback are assumed to be invalid to the - * application after the callback returns, so you can free them or whatever. - * Callback does not assume results will be sorted in any meaningful way. - */ -void __PHYSFS_platformDetectAvailableCDs(PHYSFS_StringCallback cb, void *data); - -/* - * Calculate the base dir, if your platform needs special consideration. - * Just return NULL if the standard routines will suffice. (see - * calculateBaseDir() in physfs.c ...) - * Caller will free() the retval if it's not NULL. - */ -char *__PHYSFS_platformCalcBaseDir(const char *argv0); - -/* - * Get the platform-specific user name. - * Caller will free() the retval if it's not NULL. If it's NULL, the username - * will default to "default". - */ -char *__PHYSFS_platformGetUserName(void); - -/* - * Get the platform-specific user dir. - * Caller will free() the retval if it's not NULL. If it's NULL, the userdir - * will default to basedir/username. - */ -char *__PHYSFS_platformGetUserDir(void); - -/* - * Return a number that uniquely identifies the current thread. - * On a platform without threading, (1) will suffice. These numbers are - * arbitrary; the only requirement is that no two threads have the same - * number. - */ -PHYSFS_uint64 __PHYSFS_platformGetThreadID(void); - -/* - * Return non-zero if filename (in platform-dependent notation) exists. - * Symlinks should NOT be followed; at this stage, we do not care what the - * symlink points to. Please call __PHYSFS_SetError() with the details of - * why the file does not exist, if it doesn't; you are in a better position - * to know (path not found, bogus filename, file itself is missing, etc). - */ -int __PHYSFS_platformExists(const char *fname); - -/* - * Return the last modified time (in seconds since the epoch) of a file. - * Returns -1 on failure. (fname) is in platform-dependent notation. - * Symlinks should be followed; if what the symlink points to is missing, - * then the retval is -1. - */ -PHYSFS_sint64 __PHYSFS_platformGetLastModTime(const char *fname); - -/* - * Return non-zero if filename (in platform-dependent notation) is a symlink. - */ -int __PHYSFS_platformIsSymLink(const char *fname); - - -/* - * Return non-zero if filename (in platform-dependent notation) is a symlink. - * Symlinks should be followed; if what the symlink points to is missing, - * or isn't a directory, then the retval is false. - */ -int __PHYSFS_platformIsDirectory(const char *fname); - - -/* - * Convert (dirName) to platform-dependent notation, then prepend (prepend) - * and append (append) to the converted string. - * - * So, on Win32, calling: - * __PHYSFS_platformCvtToDependent("C:\", "my/files", NULL); - * ...will return the string "C:\my\files". - * - * This can be implemented in a platform-specific manner, so you can get - * get a speed boost that the default implementation can't, since - * you can make assumptions about the size of strings, etc.. - * - * Platforms that choose not to implement this may just call - * __PHYSFS_convertToDependent() as a passthrough, which may fit the bill - * already. - * - * Be sure to free() the return value when done with it. - */ -char *__PHYSFS_platformCvtToDependent(const char *prepend, - const char *dirName, - const char *append); - - -/* - * Enumerate a directory of files. This follows the rules for the - * PHYSFS_Archiver->enumerateFiles() method (see above), except that the - * (dirName) that is passed to this function is converted to - * platform-DEPENDENT notation by the caller. The PHYSFS_Archiver version - * uses platform-independent notation. Note that ".", "..", and other - * metaentries should always be ignored. - */ -void __PHYSFS_platformEnumerateFiles(const char *dirname, - int omitSymLinks, - PHYSFS_EnumFilesCallback callback, - const char *origdir, - void *callbackdata); - - -/* - * Get the current working directory. The return value should be an - * absolute path in platform-dependent notation. The caller will deallocate - * the return value with the standard C runtime free() function when it - * is done with it. - * On error, return NULL and set the error message. - */ -char *__PHYSFS_platformCurrentDir(void); - - -/* - * Get the real physical path to a file. (path) is specified in - * platform-dependent notation, as should your return value be. - * All relative paths should be removed, leaving you with an absolute - * path. Symlinks should be resolved, too, so that the returned value is - * the most direct path to a file. - * The return value will be deallocated with the standard C runtime free() - * function when the caller is done with it. - * On error, return NULL and set the error message. - */ -char *__PHYSFS_platformRealPath(const char *path); - - -/* - * Make a directory in the actual filesystem. (path) is specified in - * platform-dependent notation. On error, return zero and set the error - * message. Return non-zero on success. - */ -int __PHYSFS_platformMkDir(const char *path); - - -/* - * Remove a file or directory entry in the actual filesystem. (path) is - * specified in platform-dependent notation. Note that this deletes files - * _and_ directories, so you might need to do some determination. - * Non-empty directories should report an error and not delete themselves - * or their contents. - * - * Deleting a symlink should remove the link, not what it points to. - * - * On error, return zero and set the error message. Return non-zero on success. - */ -int __PHYSFS_platformDelete(const char *path); - - -/* - * Create a platform-specific mutex. This can be whatever datatype your - * platform uses for mutexes, but it is cast to a (void *) for abstractness. - * - * Return (NULL) if you couldn't create one. Systems without threads can - * return any arbitrary non-NULL value. - */ -void *__PHYSFS_platformCreateMutex(void); - -/* - * Destroy a platform-specific mutex, and clean up any resources associated - * with it. (mutex) is a value previously returned by - * __PHYSFS_platformCreateMutex(). This can be a no-op on single-threaded - * platforms. - */ -void __PHYSFS_platformDestroyMutex(void *mutex); - -/* - * Grab possession of a platform-specific mutex. Mutexes should be recursive; - * that is, the same thread should be able to call this function multiple - * times in a row without causing a deadlock. This function should block - * until a thread can gain possession of the mutex. - * - * Return non-zero if the mutex was grabbed, zero if there was an - * unrecoverable problem grabbing it (this should not be a matter of - * timing out! We're talking major system errors; block until the mutex - * is available otherwise.) - * - * _DO NOT_ call __PHYSFS_setError() in here! Since setError calls this - * function, you'll cause an infinite recursion. This means you can't - * use the BAIL_*MACRO* macros, either. - */ -int __PHYSFS_platformGrabMutex(void *mutex); - -/* - * Relinquish possession of the mutex when this method has been called - * once for each time that platformGrabMutex was called. Once possession has - * been released, the next thread in line to grab the mutex (if any) may - * proceed. - * - * _DO NOT_ call __PHYSFS_setError() in here! Since setError calls this - * function, you'll cause an infinite recursion. This means you can't - * use the BAIL_*MACRO* macros, either. - */ -void __PHYSFS_platformReleaseMutex(void *mutex); - -/* - * Called at the start of PHYSFS_init() to prepare the allocator, if the user - * hasn't selected their own allocator via PHYSFS_setAllocator(). - * If the platform has a custom allocator, it should fill in the fields of - * (a) with the proper function pointers and return non-zero. - * If the platform just wants to use malloc()/free()/etc, return zero - * immediately and the higher level will handle it. The Init and Deinit - * fields of (a) are optional...set them to NULL if you don't need them. - * Everything else must be implemented. All rules follow those for - * PHYSFS_setAllocator(). If Init isn't NULL, it will be called shortly - * after this function returns non-zero. - */ -int __PHYSFS_platformSetDefaultAllocator(PHYSFS_Allocator *a); - -#ifdef __cplusplus -} -#endif - -#endif - -/* end of physfs_internal.h ... */ - diff --git a/Frameworks/physfs.framework/Versions/A/Headers/.svn/text-base/physfs_platforms.h.svn-base b/Frameworks/physfs.framework/Versions/A/Headers/.svn/text-base/physfs_platforms.h.svn-base deleted file mode 100644 index 9f95a890..00000000 --- a/Frameworks/physfs.framework/Versions/A/Headers/.svn/text-base/physfs_platforms.h.svn-base +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef _INCL_PHYSFS_PLATFORMS -#define _INCL_PHYSFS_PLATFORMS - -#ifndef __PHYSICSFS_INTERNAL__ -#error Do not include this header from your applications. -#endif - -/* - * These only define the platforms to determine which files in the platforms - * directory should be compiled. For example, technically BeOS can be called - * a "unix" system, but since it doesn't use unix.c, we don't define - * PHYSFS_PLATFORM_UNIX on that system. - */ - -#if ((defined __BEOS__) || (defined __beos__)) -# define PHYSFS_PLATFORM_BEOS -# define PHYSFS_PLATFORM_POSIX -#elif (defined _WIN32_WCE) || (defined _WIN64_WCE) -# define PHYSFS_PLATFORM_POCKETPC -#elif (((defined _WIN32) || (defined _WIN64)) && (!defined __CYGWIN__)) -# define PHYSFS_PLATFORM_WINDOWS -#elif (defined OS2) -# define PHYSFS_PLATFORM_OS2 -#elif ((defined __MACH__) && (defined __APPLE__)) -# define PHYSFS_PLATFORM_MACOSX -# define PHYSFS_PLATFORM_POSIX -#elif defined(macintosh) -# error Classic Mac OS support was dropped from PhysicsFS 2.0. Move to OS X. -#elif defined(unix) -# define PHYSFS_PLATFORM_UNIX -# define PHYSFS_PLATFORM_POSIX -#else -# error Unknown platform. -#endif - -#endif /* include-once blocker. */ - diff --git a/Frameworks/physfs.framework/Versions/A/Headers/physfs.h b/Frameworks/physfs.framework/Versions/A/Headers/physfs.h deleted file mode 100644 index 90386325..00000000 --- a/Frameworks/physfs.framework/Versions/A/Headers/physfs.h +++ /dev/null @@ -1,2390 +0,0 @@ -/** \file physfs.h */ - -/** - * \mainpage PhysicsFS - * - * The latest version of PhysicsFS can be found at: - * http://icculus.org/physfs/ - * - * PhysicsFS; a portable, flexible file i/o abstraction. - * - * This API gives you access to a system file system in ways superior to the - * stdio or system i/o calls. The brief benefits: - * - * - It's portable. - * - It's safe. No file access is permitted outside the specified dirs. - * - It's flexible. Archives (.ZIP files) can be used transparently as - * directory structures. - * - * This system is largely inspired by Quake 3's PK3 files and the related - * fs_* cvars. If you've ever tinkered with these, then this API will be - * familiar to you. - * - * With PhysicsFS, you have a single writing directory and multiple - * directories (the "search path") for reading. You can think of this as a - * filesystem within a filesystem. If (on Windows) you were to set the - * writing directory to "C:\MyGame\MyWritingDirectory", then no PHYSFS calls - * could touch anything above this directory, including the "C:\MyGame" and - * "C:\" directories. This prevents an application's internal scripting - * language from piddling over c:\\config.sys, for example. If you'd rather - * give PHYSFS full access to the system's REAL file system, set the writing - * dir to "C:\", but that's generally A Bad Thing for several reasons. - * - * Drive letters are hidden in PhysicsFS once you set up your initial paths. - * The search path creates a single, hierarchical directory structure. - * Not only does this lend itself well to general abstraction with archives, - * it also gives better support to operating systems like MacOS and Unix. - * Generally speaking, you shouldn't ever hardcode a drive letter; not only - * does this hurt portability to non-Microsoft OSes, but it limits your win32 - * users to a single drive, too. Use the PhysicsFS abstraction functions and - * allow user-defined configuration options, too. When opening a file, you - * specify it like it was on a Unix filesystem: if you want to write to - * "C:\MyGame\MyConfigFiles\game.cfg", then you might set the write dir to - * "C:\MyGame" and then open "MyConfigFiles/game.cfg". This gives an - * abstraction across all platforms. Specifying a file in this way is termed - * "platform-independent notation" in this documentation. Specifying a - * a filename in a form such as "C:\mydir\myfile" or - * "MacOS hard drive:My Directory:My File" is termed "platform-dependent - * notation". The only time you use platform-dependent notation is when - * setting up your write directory and search path; after that, all file - * access into those directories are done with platform-independent notation. - * - * All files opened for writing are opened in relation to the write directory, - * which is the root of the writable filesystem. When opening a file for - * reading, PhysicsFS goes through the search path. This is NOT the - * same thing as the PATH environment variable. An application using - * PhysicsFS specifies directories to be searched which may be actual - * directories, or archive files that contain files and subdirectories of - * their own. See the end of these docs for currently supported archive - * formats. - * - * Once the search path is defined, you may open files for reading. If you've - * got the following search path defined (to use a win32 example again): - * - * - C:\\mygame - * - C:\\mygame\\myuserfiles - * - D:\\mygamescdromdatafiles - * - C:\\mygame\\installeddatafiles.zip - * - * Then a call to PHYSFS_openRead("textfiles/myfile.txt") (note the directory - * separator, lack of drive letter, and lack of dir separator at the start of - * the string; this is platform-independent notation) will check for - * C:\\mygame\\textfiles\\myfile.txt, then - * C:\\mygame\\myuserfiles\\textfiles\\myfile.txt, then - * D:\\mygamescdromdatafiles\\textfiles\\myfile.txt, then, finally, for - * textfiles\\myfile.txt inside of C:\\mygame\\installeddatafiles.zip. - * Remember that most archive types and platform filesystems store their - * filenames in a case-sensitive manner, so you should be careful to specify - * it correctly. - * - * Files opened through PhysicsFS may NOT contain "." or ".." or ":" as dir - * elements. Not only are these meaningless on MacOS Classic and/or Unix, - * they are a security hole. Also, symbolic links (which can be found in - * some archive types and directly in the filesystem on Unix platforms) are - * NOT followed until you call PHYSFS_permitSymbolicLinks(). That's left to - * your own discretion, as following a symlink can allow for access outside - * the write dir and search paths. For portability, there is no mechanism for - * creating new symlinks in PhysicsFS. - * - * The write dir is not included in the search path unless you specifically - * add it. While you CAN change the write dir as many times as you like, - * you should probably set it once and stick to it. Remember that your - * program will not have permission to write in every directory on Unix and - * NT systems. - * - * All files are opened in binary mode; there is no endline conversion for - * textfiles. Other than that, PhysicsFS has some convenience functions for - * platform-independence. There is a function to tell you the current - * platform's dir separator ("\\" on windows, "/" on Unix, ":" on MacOS), - * which is needed only to set up your search/write paths. There is a - * function to tell you what CD-ROM drives contain accessible discs, and a - * function to recommend a good search path, etc. - * - * A recommended order for the search path is the write dir, then the base dir, - * then the cdrom dir, then any archives discovered. Quake 3 does something - * like this, but moves the archives to the start of the search path. Build - * Engine games, like Duke Nukem 3D and Blood, place the archives last, and - * use the base dir for both searching and writing. There is a helper - * function (PHYSFS_setSaneConfig()) that puts together a basic configuration - * for you, based on a few parameters. Also see the comments on - * PHYSFS_getBaseDir(), and PHYSFS_getUserDir() for info on what those - * are and how they can help you determine an optimal search path. - * - * PhysicsFS 2.0 adds the concept of "mounting" archives to arbitrary points - * in the search path. If a zipfile contains "maps/level.map" and you mount - * that archive at "mods/mymod", then you would have to open - * "mods/mymod/maps/level.map" to access the file, even though "mods/mymod" - * isn't actually specified in the .zip file. Unlike the Unix mentality of - * mounting a filesystem, "mods/mymod" doesn't actually have to exist when - * mounting the zipfile. It's a "virtual" directory. The mounting mechanism - * allows the developer to seperate archives in the tree and avoid trampling - * over files when added new archives, such as including mod support in a - * game...keeping external content on a tight leash in this manner can be of - * utmost importance to some applications. - * - * PhysicsFS is mostly thread safe. The error messages returned by - * PHYSFS_getLastError are unique by thread, and library-state-setting - * functions are mutex'd. For efficiency, individual file accesses are - * not locked, so you can not safely read/write/seek/close/etc the same - * file from two threads at the same time. Other race conditions are bugs - * that should be reported/patched. - * - * While you CAN use stdio/syscall file access in a program that has PHYSFS_* - * calls, doing so is not recommended, and you can not use system - * filehandles with PhysicsFS and vice versa. - * - * Note that archives need not be named as such: if you have a ZIP file and - * rename it with a .PKG extension, the file will still be recognized as a - * ZIP archive by PhysicsFS; the file's contents are used to determine its - * type where possible. - * - * Currently supported archive types: - * - .ZIP (pkZip/WinZip/Info-ZIP compatible) - * - .GRP (Build Engine groupfile archives) - * - .PAK (Quake I/II archive format) - * - .HOG (Descent I/II HOG file archives) - * - .MVL (Descent II movielib archives) - * - .WAD (DOOM engine archives) - * - * - * String policy for PhysicsFS 2.0 and later: - * - * PhysicsFS 1.0 could only deal with null-terminated ASCII strings. All high - * ASCII chars resulted in undefined behaviour, and there was no Unicode - * support at all. PhysicsFS 2.0 supports Unicode without breaking binary - * compatibility with the 1.0 API by using UTF-8 encoding of all strings - * passed in and out of the library. - * - * All strings passed through PhysicsFS are in null-terminated UTF-8 format. - * This means that if all you care about is English (ASCII characters <= 127) - * then you just use regular C strings. If you care about Unicode (and you - * should!) then you need to figure out what your platform wants, needs, and - * offers. If you are on Windows and build with Unicode support, your TCHAR - * strings are two bytes per character (this is called "UCS-2 encoding"). You - * should convert them to UTF-8 before handing them to PhysicsFS with - * PHYSFS_utf8FromUcs2(). If you're using Unix or Mac OS X, your wchar_t - * strings are four bytes per character ("UCS-4 encoding"). Use - * PHYSFS_utf8FromUcs4(). Mac OS X can give you UTF-8 directly from a - * CFString, and many Unixes generally give you C strings in UTF-8 format - * everywhere. If you have a single-byte high ASCII charset, like so-many - * European "codepages" you may be out of luck. We'll convert from "Latin1" - * to UTF-8 only, and never back to Latin1. If you're above ASCII 127, all - * bets are off: move to Unicode or use your platform's facilities. Passing a - * C string with high-ASCII data that isn't UTF-8 encoded will NOT do what - * you expect! - * - * Naturally, there's also PHYSFS_utf8ToUcs2() and PHYSFS_utf8ToUcs4() to get - * data back into a format you like. Behind the scenes, PhysicsFS will use - * Unicode where possible: the UTF-8 strings on Windows will be converted - * and used with the multibyte Windows APIs, for example. - * - * PhysicsFS offers basic encoding conversion support, but not a whole string - * library. Get your stuff into whatever format you can work with. - * - * Some platforms and archivers don't offer full Unicode support behind the - * scenes. For example, OS/2 only offers "codepages" and the filesystem - * itself doesn't support multibyte encodings. We make an earnest effort to - * convert to/from the current locale here, but all bets are off if - * you want to hand an arbitrary Japanese character through to these systems. - * Modern OSes (Mac OS X, Linux, Windows, PocketPC, etc) should all be fine. - * Many game-specific archivers are seriously unprepared for Unicode (the - * Descent HOG/MVL and Build Engine GRP archivers, for example, only offer a - * DOS 8.3 filename, for example). Nothing can be done for these, but they - * tend to be legacy formats for existing content that was all ASCII (and - * thus, valid UTF-8) anyhow. Other formats, like .ZIP, don't explicitly - * offer Unicode support, but unofficially expect filenames to be UTF-8 - * encoded, and thus Just Work. Most everything does the right thing without - * bothering you, but it's good to be aware of these nuances in case they - * don't. - * - * - * Other stuff: - * - * Please see the file LICENSE.txt in the source's root directory for licensing - * and redistribution rights. - * - * Please see the file CREDITS.txt in the source's root directory for a more or - * less complete list of who's responsible for this. - * - * \author Ryan C. Gordon. - */ - -#ifndef _INCLUDE_PHYSFS_H_ -#define _INCLUDE_PHYSFS_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef DOXYGEN_SHOULD_IGNORE_THIS -#if (defined _MSC_VER) -#define __EXPORT__ __declspec(dllexport) -#elif (__GNUC__ >= 3) -#define __EXPORT__ __attribute__((visibility("default"))) -#else -#define __EXPORT__ -#endif -#endif /* DOXYGEN_SHOULD_IGNORE_THIS */ - -/** - * \typedef PHYSFS_uint8 - * \brief An unsigned, 8-bit integer type. - */ -typedef unsigned char PHYSFS_uint8; - -/** - * \typedef PHYSFS_sint8 - * \brief A signed, 8-bit integer type. - */ -typedef signed char PHYSFS_sint8; - -/** - * \typedef PHYSFS_uint16 - * \brief An unsigned, 16-bit integer type. - */ -typedef unsigned short PHYSFS_uint16; - -/** - * \typedef PHYSFS_sint16 - * \brief A signed, 16-bit integer type. - */ -typedef signed short PHYSFS_sint16; - -/** - * \typedef PHYSFS_uint32 - * \brief An unsigned, 32-bit integer type. - */ -typedef unsigned int PHYSFS_uint32; - -/** - * \typedef PHYSFS_sint32 - * \brief A signed, 32-bit integer type. - */ -typedef signed int PHYSFS_sint32; - -/** - * \typedef PHYSFS_uint64 - * \brief An unsigned, 64-bit integer type. - * \warning on platforms without any sort of 64-bit datatype, this is - * equivalent to PHYSFS_uint32! - */ - -/** - * \typedef PHYSFS_sint64 - * \brief A signed, 64-bit integer type. - * \warning on platforms without any sort of 64-bit datatype, this is - * equivalent to PHYSFS_sint32! - */ - - -#if (defined PHYSFS_NO_64BIT_SUPPORT) /* oh well. */ -typedef PHYSFS_uint32 PHYSFS_uint64; -typedef PHYSFS_sint32 PHYSFS_sint64; -#elif (defined _MSC_VER) -typedef signed __int64 PHYSFS_sint64; -typedef unsigned __int64 PHYSFS_uint64; -#else -typedef unsigned long long PHYSFS_uint64; -typedef signed long long PHYSFS_sint64; -#endif - - -#ifndef DOXYGEN_SHOULD_IGNORE_THIS -/* Make sure the types really have the right sizes */ -#define PHYSFS_COMPILE_TIME_ASSERT(name, x) \ - typedef int PHYSFS_dummy_ ## name[(x) * 2 - 1] - -PHYSFS_COMPILE_TIME_ASSERT(uint8, sizeof(PHYSFS_uint8) == 1); -PHYSFS_COMPILE_TIME_ASSERT(sint8, sizeof(PHYSFS_sint8) == 1); -PHYSFS_COMPILE_TIME_ASSERT(uint16, sizeof(PHYSFS_uint16) == 2); -PHYSFS_COMPILE_TIME_ASSERT(sint16, sizeof(PHYSFS_sint16) == 2); -PHYSFS_COMPILE_TIME_ASSERT(uint32, sizeof(PHYSFS_uint32) == 4); -PHYSFS_COMPILE_TIME_ASSERT(sint32, sizeof(PHYSFS_sint32) == 4); - -#ifndef PHYSFS_NO_64BIT_SUPPORT -PHYSFS_COMPILE_TIME_ASSERT(uint64, sizeof(PHYSFS_uint64) == 8); -PHYSFS_COMPILE_TIME_ASSERT(sint64, sizeof(PHYSFS_sint64) == 8); -#endif - -#undef PHYSFS_COMPILE_TIME_ASSERT - -#endif /* DOXYGEN_SHOULD_IGNORE_THIS */ - - -/** - * \struct PHYSFS_File - * \brief A PhysicsFS file handle. - * - * You get a pointer to one of these when you open a file for reading, - * writing, or appending via PhysicsFS. - * - * As you can see from the lack of meaningful fields, you should treat this - * as opaque data. Don't try to manipulate the file handle, just pass the - * pointer you got, unmolested, to various PhysicsFS APIs. - * - * \sa PHYSFS_openRead - * \sa PHYSFS_openWrite - * \sa PHYSFS_openAppend - * \sa PHYSFS_close - * \sa PHYSFS_read - * \sa PHYSFS_write - * \sa PHYSFS_seek - * \sa PHYSFS_tell - * \sa PHYSFS_eof - * \sa PHYSFS_setBuffer - * \sa PHYSFS_flush - */ -typedef struct -{ - void *opaque; /**< That's all you get. Don't touch. */ -} PHYSFS_File; - - -/** - * \def PHYSFS_file - * \brief 1.0 API compatibility define. - * - * PHYSFS_file is identical to PHYSFS_File. This #define is here for backwards - * compatibility with the 1.0 API, which had an inconsistent capitalization - * convention in this case. New code should use PHYSFS_File, as this #define - * may go away someday. - * - * \sa PHYSFS_File - */ -#define PHYSFS_file PHYSFS_File - - -/** - * \struct PHYSFS_ArchiveInfo - * \brief Information on various PhysicsFS-supported archives. - * - * This structure gives you details on what sort of archives are supported - * by this implementation of PhysicsFS. Archives tend to be things like - * ZIP files and such. - * - * \warning Not all binaries are created equal! PhysicsFS can be built with - * or without support for various archives. You can check with - * PHYSFS_supportedArchiveTypes() to see if your archive type is - * supported. - * - * \sa PHYSFS_supportedArchiveTypes - */ -typedef struct -{ - const char *extension; /**< Archive file extension: "ZIP", for example. */ - const char *description; /**< Human-readable archive description. */ - const char *author; /**< Person who did support for this archive. */ - const char *url; /**< URL related to this archive */ -} PHYSFS_ArchiveInfo; - - -/** - * \struct PHYSFS_Version - * \brief Information the version of PhysicsFS in use. - * - * Represents the library's version as three levels: major revision - * (increments with massive changes, additions, and enhancements), - * minor revision (increments with backwards-compatible changes to the - * major revision), and patchlevel (increments with fixes to the minor - * revision). - * - * \sa PHYSFS_VERSION - * \sa PHYSFS_getLinkedVersion - */ -typedef struct -{ - PHYSFS_uint8 major; /**< major revision */ - PHYSFS_uint8 minor; /**< minor revision */ - PHYSFS_uint8 patch; /**< patchlevel */ -} PHYSFS_Version; - -#ifndef DOXYGEN_SHOULD_IGNORE_THIS -#define PHYSFS_VER_MAJOR 1 -#define PHYSFS_VER_MINOR 1 -#define PHYSFS_VER_PATCH 1 -#endif /* DOXYGEN_SHOULD_IGNORE_THIS */ - - -/* PhysicsFS state stuff ... */ - -/** - * \def PHYSFS_VERSION(x) - * \brief Macro to determine PhysicsFS version program was compiled against. - * - * This macro fills in a PHYSFS_Version structure with the version of the - * library you compiled against. This is determined by what header the - * compiler uses. Note that if you dynamically linked the library, you might - * have a slightly newer or older version at runtime. That version can be - * determined with PHYSFS_getLinkedVersion(), which, unlike PHYSFS_VERSION, - * is not a macro. - * - * \param x A pointer to a PHYSFS_Version struct to initialize. - * - * \sa PHYSFS_Version - * \sa PHYSFS_getLinkedVersion - */ -#define PHYSFS_VERSION(x) \ -{ \ - (x)->major = PHYSFS_VER_MAJOR; \ - (x)->minor = PHYSFS_VER_MINOR; \ - (x)->patch = PHYSFS_VER_PATCH; \ -} - - -/** - * \fn void PHYSFS_getLinkedVersion(PHYSFS_Version *ver) - * \brief Get the version of PhysicsFS that is linked against your program. - * - * If you are using a shared library (DLL) version of PhysFS, then it is - * possible that it will be different than the version you compiled against. - * - * This is a real function; the macro PHYSFS_VERSION tells you what version - * of PhysFS you compiled against: - * - * \code - * PHYSFS_Version compiled; - * PHYSFS_Version linked; - * - * PHYSFS_VERSION(&compiled); - * PHYSFS_getLinkedVersion(&linked); - * printf("We compiled against PhysFS version %d.%d.%d ...\n", - * compiled.major, compiled.minor, compiled.patch); - * printf("But we linked against PhysFS version %d.%d.%d.\n", - * linked.major, linked.minor, linked.patch); - * \endcode - * - * This function may be called safely at any time, even before PHYSFS_init(). - * - * \sa PHYSFS_VERSION - */ -__EXPORT__ void PHYSFS_getLinkedVersion(PHYSFS_Version *ver); - - -/** - * \fn int PHYSFS_init(const char *argv0) - * \brief Initialize the PhysicsFS library. - * - * This must be called before any other PhysicsFS function. - * - * This should be called prior to any attempts to change your process's - * current working directory. - * - * \param argv0 the argv[0] string passed to your program's mainline. - * This may be NULL on most platforms (such as ones without a - * standard main() function), but you should always try to pass - * something in here. Unix-like systems such as Linux _need_ to - * pass argv[0] from main() in here. - * \return nonzero on success, zero on error. Specifics of the error can be - * gleaned from PHYSFS_getLastError(). - * - * \sa PHYSFS_deinit - * \sa PHYSFS_isInit - */ -__EXPORT__ int PHYSFS_init(const char *argv0); - - -/** - * \fn int PHYSFS_deinit(void) - * \brief Deinitialize the PhysicsFS library. - * - * This closes any files opened via PhysicsFS, blanks the search/write paths, - * frees memory, and invalidates all of your file handles. - * - * Note that this call can FAIL if there's a file open for writing that - * refuses to close (for example, the underlying operating system was - * buffering writes to network filesystem, and the fileserver has crashed, - * or a hard drive has failed, etc). It is usually best to close all write - * handles yourself before calling this function, so that you can gracefully - * handle a specific failure. - * - * Once successfully deinitialized, PHYSFS_init() can be called again to - * restart the subsystem. All defaults API states are restored at this - * point. - * - * \return nonzero on success, zero on error. Specifics of the error can be - * gleaned from PHYSFS_getLastError(). If failure, state of PhysFS is - * undefined, and probably badly screwed up. - * - * \sa PHYSFS_init - * \sa PHYSFS_isInit - */ -__EXPORT__ int PHYSFS_deinit(void); - - -/** - * \fn const PHYSFS_ArchiveInfo **PHYSFS_supportedArchiveTypes(void) - * \brief Get a list of supported archive types. - * - * Get a list of archive types supported by this implementation of PhysicFS. - * These are the file formats usable for search path entries. This is for - * informational purposes only. Note that the extension listed is merely - * convention: if we list "ZIP", you can open a PkZip-compatible archive - * with an extension of "XYZ", if you like. - * - * The returned value is an array of pointers to PHYSFS_ArchiveInfo structures, - * with a NULL entry to signify the end of the list: - * - * \code - * PHYSFS_ArchiveInfo **i; - * - * for (i = PHYSFS_supportedArchiveTypes(); *i != NULL; i++) - * { - * printf("Supported archive: [%s], which is [%s].\n", - * i->extension, i->description); - * } - * \endcode - * - * The return values are pointers to static internal memory, and should - * be considered READ ONLY, and never freed. - * - * \return READ ONLY Null-terminated array of READ ONLY structures. - */ -__EXPORT__ const PHYSFS_ArchiveInfo **PHYSFS_supportedArchiveTypes(void); - - -/** - * \fn void PHYSFS_freeList(void *listVar) - * \brief Deallocate resources of lists returned by PhysicsFS. - * - * Certain PhysicsFS functions return lists of information that are - * dynamically allocated. Use this function to free those resources. - * - * \param listVar List of information specified as freeable by this function. - * - * \sa PHYSFS_getCdRomDirs - * \sa PHYSFS_enumerateFiles - * \sa PHYSFS_getSearchPath - */ -__EXPORT__ void PHYSFS_freeList(void *listVar); - - -/** - * \fn const char *PHYSFS_getLastError(void) - * \brief Get human-readable error information. - * - * Get the last PhysicsFS error message as a human-readable, null-terminated - * string. This will be NULL if there's been no error since the last call to - * this function. The pointer returned by this call points to an internal - * buffer. Each thread has a unique error state associated with it, but each - * time a new error message is set, it will overwrite the previous one - * associated with that thread. It is safe to call this function at anytime, - * even before PHYSFS_init(). - * - * It is not wise to expect a specific string of characters here, since the - * error message may be localized into an unfamiliar language. These strings - * are meant to be passed on directly to the user. - * - * \return READ ONLY string of last error message. - */ -__EXPORT__ const char *PHYSFS_getLastError(void); - - -/** - * \fn const char *PHYSFS_getDirSeparator(void) - * \brief Get platform-dependent dir separator string. - * - * This returns "\\" on win32, "/" on Unix, and ":" on MacOS. It may be more - * than one character, depending on the platform, and your code should take - * that into account. Note that this is only useful for setting up the - * search/write paths, since access into those dirs always use '/' - * (platform-independent notation) to separate directories. This is also - * handy for getting platform-independent access when using stdio calls. - * - * \return READ ONLY null-terminated string of platform's dir separator. - */ -__EXPORT__ const char *PHYSFS_getDirSeparator(void); - - -/** - * \fn void PHYSFS_permitSymbolicLinks(int allow) - * \brief Enable or disable following of symbolic links. - * - * Some physical filesystems and archives contain files that are just pointers - * to other files. On the physical filesystem, opening such a link will - * (transparently) open the file that is pointed to. - * - * By default, PhysicsFS will check if a file is really a symlink during open - * calls and fail if it is. Otherwise, the link could take you outside the - * write and search paths, and compromise security. - * - * If you want to take that risk, call this function with a non-zero parameter. - * Note that this is more for sandboxing a program's scripting language, in - * case untrusted scripts try to compromise the system. Generally speaking, - * a user could very well have a legitimate reason to set up a symlink, so - * unless you feel there's a specific danger in allowing them, you should - * permit them. - * - * Symlinks are only explicitly checked when dealing with filenames - * in platform-independent notation. That is, when setting up your - * search and write paths, etc, symlinks are never checked for. - * - * Symbolic link permission can be enabled or disabled at any time after - * you've called PHYSFS_init(), and is disabled by default. - * - * \param allow nonzero to permit symlinks, zero to deny linking. - * - * \sa PHYSFS_symbolicLinksPermitted - */ -__EXPORT__ void PHYSFS_permitSymbolicLinks(int allow); - - -/* !!! FIXME: const this? */ -/** - * \fn char **PHYSFS_getCdRomDirs(void) - * \brief Get an array of paths to available CD-ROM drives. - * - * The dirs returned are platform-dependent ("D:\" on Win32, "/cdrom" or - * whatnot on Unix). Dirs are only returned if there is a disc ready and - * accessible in the drive. So if you've got two drives (D: and E:), and only - * E: has a disc in it, then that's all you get. If the user inserts a disc - * in D: and you call this function again, you get both drives. If, on a - * Unix box, the user unmounts a disc and remounts it elsewhere, the next - * call to this function will reflect that change. - * - * This function refers to "CD-ROM" media, but it really means "inserted disc - * media," such as DVD-ROM, HD-DVD, CDRW, and Blu-Ray discs. It looks for - * filesystems, and as such won't report an audio CD, unless there's a - * mounted filesystem track on it. - * - * The returned value is an array of strings, with a NULL entry to signify the - * end of the list: - * - * \code - * char **cds = PHYSFS_getCdRomDirs(); - * char **i; - * - * for (i = cds; *i != NULL; i++) - * printf("cdrom dir [%s] is available.\n", *i); - * - * PHYSFS_freeList(cds); - * \endcode - * - * This call may block while drives spin up. Be forewarned. - * - * When you are done with the returned information, you may dispose of the - * resources by calling PHYSFS_freeList() with the returned pointer. - * - * \return Null-terminated array of null-terminated strings. - * - * \sa PHYSFS_getCdRomDirsCallback - */ -__EXPORT__ char **PHYSFS_getCdRomDirs(void); - - -/** - * \fn const char *PHYSFS_getBaseDir(void) - * \brief Get the path where the application resides. - * - * Helper function. - * - * Get the "base dir". This is the directory where the application was run - * from, which is probably the installation directory, and may or may not - * be the process's current working directory. - * - * You should probably use the base dir in your search path. - * - * \return READ ONLY string of base dir in platform-dependent notation. - * - * \sa PHYSFS_getUserDir - */ -__EXPORT__ const char *PHYSFS_getBaseDir(void); - - -/** - * \fn const char *PHYSFS_getUserDir(void) - * \brief Get the path where user's home directory resides. - * - * Helper function. - * - * Get the "user dir". This is meant to be a suggestion of where a specific - * user of the system can store files. On Unix, this is her home directory. - * On systems with no concept of multiple home directories (MacOS, win95), - * this will default to something like "C:\mybasedir\users\username" - * where "username" will either be the login name, or "default" if the - * platform doesn't support multiple users, either. - * - * You should probably use the user dir as the basis for your write dir, and - * also put it near the beginning of your search path. - * - * \return READ ONLY string of user dir in platform-dependent notation. - * - * \sa PHYSFS_getBaseDir - */ -__EXPORT__ const char *PHYSFS_getUserDir(void); - - -/** - * \fn const char *PHYSFS_getWriteDir(void) - * \brief Get path where PhysicsFS will allow file writing. - * - * Get the current write dir. The default write dir is NULL. - * - * \return READ ONLY string of write dir in platform-dependent notation, - * OR NULL IF NO WRITE PATH IS CURRENTLY SET. - * - * \sa PHYSFS_setWriteDir - */ -__EXPORT__ const char *PHYSFS_getWriteDir(void); - - -/** - * \fn int PHYSFS_setWriteDir(const char *newDir) - * \brief Tell PhysicsFS where it may write files. - * - * Set a new write dir. This will override the previous setting. - * - * This call will fail (and fail to change the write dir) if the current - * write dir still has files open in it. - * - * \param newDir The new directory to be the root of the write dir, - * specified in platform-dependent notation. Setting to NULL - * disables the write dir, so no files can be opened for - * writing via PhysicsFS. - * \return non-zero on success, zero on failure. All attempts to open a file - * for writing via PhysicsFS will fail until this call succeeds. - * Specifics of the error can be gleaned from PHYSFS_getLastError(). - * - * \sa PHYSFS_getWriteDir - */ -__EXPORT__ int PHYSFS_setWriteDir(const char *newDir); - - -/** - * \fn int PHYSFS_addToSearchPath(const char *newDir, int appendToPath) - * \brief Add an archive or directory to the search path. - * - * This is a legacy call in PhysicsFS 2.0, equivalent to: - * PHYSFS_mount(newDir, NULL, appendToPath); - * - * You must use this and not PHYSFS_mount if binary compatibility with - * PhysicsFS 1.0 is important (which it may not be for many people). - * - * \sa PHYSFS_mount - * \sa PHYSFS_removeFromSearchPath - * \sa PHYSFS_getSearchPath - */ -__EXPORT__ int PHYSFS_addToSearchPath(const char *newDir, int appendToPath); - - -/** - * \fn int PHYSFS_removeFromSearchPath(const char *oldDir) - * \brief Remove a directory or archive from the search path. - * - * This must be a (case-sensitive) match to a dir or archive already in the - * search path, specified in platform-dependent notation. - * - * This call will fail (and fail to remove from the path) if the element still - * has files open in it. - * - * \param oldDir dir/archive to remove. - * \return nonzero on success, zero on failure. - * Specifics of the error can be gleaned from PHYSFS_getLastError(). - * - * \sa PHYSFS_addToSearchPath - * \sa PHYSFS_getSearchPath - */ -__EXPORT__ int PHYSFS_removeFromSearchPath(const char *oldDir); - - -/** - * \fn char **PHYSFS_getSearchPath(void) - * \brief Get the current search path. - * - * The default search path is an empty list. - * - * The returned value is an array of strings, with a NULL entry to signify the - * end of the list: - * - * \code - * char **i; - * - * for (i = PHYSFS_getSearchPath(); *i != NULL; i++) - * printf("[%s] is in the search path.\n", *i); - * \endcode - * - * When you are done with the returned information, you may dispose of the - * resources by calling PHYSFS_freeList() with the returned pointer. - * - * \return Null-terminated array of null-terminated strings. NULL if there - * was a problem (read: OUT OF MEMORY). - * - * \sa PHYSFS_getSearchPathCallback - * \sa PHYSFS_addToSearchPath - * \sa PHYSFS_removeFromSearchPath - */ -__EXPORT__ char **PHYSFS_getSearchPath(void); - - -/** - * \fn int PHYSFS_setSaneConfig(const char *organization, const char *appName, const char *archiveExt, int includeCdRoms, int archivesFirst) - * \brief Set up sane, default paths. - * - * Helper function. - * - * The write dir will be set to "userdir/.organization/appName", which is - * created if it doesn't exist. - * - * The above is sufficient to make sure your program's configuration directory - * is separated from other clutter, and platform-independent. The period - * before "mygame" even hides the directory on Unix systems. - * - * The search path will be: - * - * - The Write Dir (created if it doesn't exist) - * - The Base Dir (PHYSFS_getBaseDir()) - * - All found CD-ROM dirs (optionally) - * - * These directories are then searched for files ending with the extension - * (archiveExt), which, if they are valid and supported archives, will also - * be added to the search path. If you specified "PKG" for (archiveExt), and - * there's a file named data.PKG in the base dir, it'll be checked. Archives - * can either be appended or prepended to the search path in alphabetical - * order, regardless of which directories they were found in. - * - * All of this can be accomplished from the application, but this just does it - * all for you. Feel free to add more to the search path manually, too. - * - * \param organization Name of your company/group/etc to be used as a - * dirname, so keep it small, and no-frills. - * - * \param appName Program-specific name of your program, to separate it - * from other programs using PhysicsFS. - * - * \param archiveExt File extension used by your program to specify an - * archive. For example, Quake 3 uses "pk3", even though - * they are just zipfiles. Specify NULL to not dig out - * archives automatically. Do not specify the '.' char; - * If you want to look for ZIP files, specify "ZIP" and - * not ".ZIP" ... the archive search is case-insensitive. - * - * \param includeCdRoms Non-zero to include CD-ROMs in the search path, and - * (if (archiveExt) != NULL) search them for archives. - * This may cause a significant amount of blocking - * while discs are accessed, and if there are no discs - * in the drive (or even not mounted on Unix systems), - * then they may not be made available anyhow. You may - * want to specify zero and handle the disc setup - * yourself. - * - * \param archivesFirst Non-zero to prepend the archives to the search path. - * Zero to append them. Ignored if !(archiveExt). - * - * \return nonzero on success, zero on error. Specifics of the error can be - * gleaned from PHYSFS_getLastError(). - */ -__EXPORT__ int PHYSFS_setSaneConfig(const char *organization, - const char *appName, - const char *archiveExt, - int includeCdRoms, - int archivesFirst); - - -/* Directory management stuff ... */ - -/** - * \fn int PHYSFS_mkdir(const char *dirName) - * \brief Create a directory. - * - * This is specified in platform-independent notation in relation to the - * write dir. All missing parent directories are also created if they - * don't exist. - * - * So if you've got the write dir set to "C:\mygame\writedir" and call - * PHYSFS_mkdir("downloads/maps") then the directories - * "C:\mygame\writedir\downloads" and "C:\mygame\writedir\downloads\maps" - * will be created if possible. If the creation of "maps" fails after we - * have successfully created "downloads", then the function leaves the - * created directory behind and reports failure. - * - * \param dirName New dir to create. - * \return nonzero on success, zero on error. Specifics of the error can be - * gleaned from PHYSFS_getLastError(). - * - * \sa PHYSFS_delete - */ -__EXPORT__ int PHYSFS_mkdir(const char *dirName); - - -/** - * \fn int PHYSFS_delete(const char *filename) - * \brief Delete a file or directory. - * - * (filename) is specified in platform-independent notation in relation to the - * write dir. - * - * A directory must be empty before this call can delete it. - * - * Deleting a symlink will remove the link, not what it points to, regardless - * of whether you "permitSymLinks" or not. - * - * So if you've got the write dir set to "C:\mygame\writedir" and call - * PHYSFS_delete("downloads/maps/level1.map") then the file - * "C:\mygame\writedir\downloads\maps\level1.map" is removed from the - * physical filesystem, if it exists and the operating system permits the - * deletion. - * - * Note that on Unix systems, deleting a file may be successful, but the - * actual file won't be removed until all processes that have an open - * filehandle to it (including your program) close their handles. - * - * Chances are, the bits that make up the file still exist, they are just - * made available to be written over at a later point. Don't consider this - * a security method or anything. :) - * - * \param filename Filename to delete. - * \return nonzero on success, zero on error. Specifics of the error can be - * gleaned from PHYSFS_getLastError(). - */ -__EXPORT__ int PHYSFS_delete(const char *filename); - - -/** - * \fn const char *PHYSFS_getRealDir(const char *filename) - * \brief Figure out where in the search path a file resides. - * - * The file is specified in platform-independent notation. The returned - * filename will be the element of the search path where the file was found, - * which may be a directory, or an archive. Even if there are multiple - * matches in different parts of the search path, only the first one found - * is used, just like when opening a file. - * - * So, if you look for "maps/level1.map", and C:\\mygame is in your search - * path and C:\\mygame\\maps\\level1.map exists, then "C:\mygame" is returned. - * - * If a any part of a match is a symbolic link, and you've not explicitly - * permitted symlinks, then it will be ignored, and the search for a match - * will continue. - * - * If you specify a fake directory that only exists as a mount point, it'll - * be associated with the first archive mounted there, even though that - * directory isn't necessarily contained in a real archive. - * - * \param filename file to look for. - * \return READ ONLY string of element of search path containing the - * the file in question. NULL if not found. - */ -__EXPORT__ const char *PHYSFS_getRealDir(const char *filename); - - -/** - * \fn char **PHYSFS_enumerateFiles(const char *dir) - * \brief Get a file listing of a search path's directory. - * - * Matching directories are interpolated. That is, if "C:\mydir" is in the - * search path and contains a directory "savegames" that contains "x.sav", - * "y.sav", and "z.sav", and there is also a "C:\userdir" in the search path - * that has a "savegames" subdirectory with "w.sav", then the following code: - * - * \code - * char **rc = PHYSFS_enumerateFiles("savegames"); - * char **i; - * - * for (i = rc; *i != NULL; i++) - * printf(" * We've got [%s].\n", *i); - * - * PHYSFS_freeList(rc); - * \endcode - * - * ...will print: - * - * \verbatim - * We've got [x.sav]. - * We've got [y.sav]. - * We've got [z.sav]. - * We've got [w.sav].\endverbatim - * - * Feel free to sort the list however you like. We only promise there will - * be no duplicates, but not what order the final list will come back in. - * - * Don't forget to call PHYSFS_freeList() with the return value from this - * function when you are done with it. - * - * \param dir directory in platform-independent notation to enumerate. - * \return Null-terminated array of null-terminated strings. - * - * \sa PHYSFS_enumerateFilesCallback - */ -__EXPORT__ char **PHYSFS_enumerateFiles(const char *dir); - - -/** - * \fn int PHYSFS_exists(const char *fname) - * \brief Determine if a file exists in the search path. - * - * Reports true if there is an entry anywhere in the search path by the - * name of (fname). - * - * Note that entries that are symlinks are ignored if - * PHYSFS_permitSymbolicLinks(1) hasn't been called, so you - * might end up further down in the search path than expected. - * - * \param fname filename in platform-independent notation. - * \return non-zero if filename exists. zero otherwise. - * - * \sa PHYSFS_isDirectory - * \sa PHYSFS_isSymbolicLink - */ -__EXPORT__ int PHYSFS_exists(const char *fname); - - -/** - * \fn int PHYSFS_isDirectory(const char *fname) - * \brief Determine if a file in the search path is really a directory. - * - * Determine if the first occurence of (fname) in the search path is - * really a directory entry. - * - * Note that entries that are symlinks are ignored if - * PHYSFS_permitSymbolicLinks(1) hasn't been called, so you - * might end up further down in the search path than expected. - * - * \param fname filename in platform-independent notation. - * \return non-zero if filename exists and is a directory. zero otherwise. - * - * \sa PHYSFS_exists - * \sa PHYSFS_isSymbolicLink - */ -__EXPORT__ int PHYSFS_isDirectory(const char *fname); - - -/** - * \fn int PHYSFS_isSymbolicLink(const char *fname) - * \brief Determine if a file in the search path is really a symbolic link. - * - * Determine if the first occurence of (fname) in the search path is - * really a symbolic link. - * - * Note that entries that are symlinks are ignored if - * PHYSFS_permitSymbolicLinks(1) hasn't been called, and as such, - * this function will always return 0 in that case. - * - * \param fname filename in platform-independent notation. - * \return non-zero if filename exists and is a symlink. zero otherwise. - * - * \sa PHYSFS_exists - * \sa PHYSFS_isDirectory - */ -__EXPORT__ int PHYSFS_isSymbolicLink(const char *fname); - - -/** - * \fn PHYSFS_sint64 PHYSFS_getLastModTime(const char *filename) - * \brief Get the last modification time of a file. - * - * The modtime is returned as a number of seconds since the epoch - * (Jan 1, 1970). The exact derivation and accuracy of this time depends on - * the particular archiver. If there is no reasonable way to obtain this - * information for a particular archiver, or there was some sort of error, - * this function returns (-1). - * - * \param filename filename to check, in platform-independent notation. - * \return last modified time of the file. -1 if it can't be determined. - */ -__EXPORT__ PHYSFS_sint64 PHYSFS_getLastModTime(const char *filename); - - -/* i/o stuff... */ - -/** - * \fn PHYSFS_File *PHYSFS_openWrite(const char *filename) - * \brief Open a file for writing. - * - * Open a file for writing, in platform-independent notation and in relation - * to the write dir as the root of the writable filesystem. The specified - * file is created if it doesn't exist. If it does exist, it is truncated to - * zero bytes, and the writing offset is set to the start. - * - * Note that entries that are symlinks are ignored if - * PHYSFS_permitSymbolicLinks(1) hasn't been called, and opening a - * symlink with this function will fail in such a case. - * - * \param filename File to open. - * \return A valid PhysicsFS filehandle on success, NULL on error. Specifics - * of the error can be gleaned from PHYSFS_getLastError(). - * - * \sa PHYSFS_openRead - * \sa PHYSFS_openAppend - * \sa PHYSFS_write - * \sa PHYSFS_close - */ -__EXPORT__ PHYSFS_File *PHYSFS_openWrite(const char *filename); - - -/** - * \fn PHYSFS_File *PHYSFS_openAppend(const char *filename) - * \brief Open a file for appending. - * - * Open a file for writing, in platform-independent notation and in relation - * to the write dir as the root of the writable filesystem. The specified - * file is created if it doesn't exist. If it does exist, the writing offset - * is set to the end of the file, so the first write will be the byte after - * the end. - * - * Note that entries that are symlinks are ignored if - * PHYSFS_permitSymbolicLinks(1) hasn't been called, and opening a - * symlink with this function will fail in such a case. - * - * \param filename File to open. - * \return A valid PhysicsFS filehandle on success, NULL on error. Specifics - * of the error can be gleaned from PHYSFS_getLastError(). - * - * \sa PHYSFS_openRead - * \sa PHYSFS_openWrite - * \sa PHYSFS_write - * \sa PHYSFS_close - */ -__EXPORT__ PHYSFS_File *PHYSFS_openAppend(const char *filename); - - -/** - * \fn PHYSFS_File *PHYSFS_openRead(const char *filename) - * \brief Open a file for reading. - * - * Open a file for reading, in platform-independent notation. The search path - * is checked one at a time until a matching file is found, in which case an - * abstract filehandle is associated with it, and reading may be done. - * The reading offset is set to the first byte of the file. - * - * Note that entries that are symlinks are ignored if - * PHYSFS_permitSymbolicLinks(1) hasn't been called, and opening a - * symlink with this function will fail in such a case. - * - * \param filename File to open. - * \return A valid PhysicsFS filehandle on success, NULL on error. Specifics - * of the error can be gleaned from PHYSFS_getLastError(). - * - * \sa PHYSFS_openWrite - * \sa PHYSFS_openAppend - * \sa PHYSFS_read - * \sa PHYSFS_close - */ -__EXPORT__ PHYSFS_File *PHYSFS_openRead(const char *filename); - - -/** - * \fn int PHYSFS_close(PHYSFS_File *handle) - * \brief Close a PhysicsFS filehandle. - * - * This call is capable of failing if the operating system was buffering - * writes to the physical media, and, now forced to write those changes to - * physical media, can not store the data for some reason. In such a case, - * the filehandle stays open. A well-written program should ALWAYS check the - * return value from the close call in addition to every writing call! - * - * \param handle handle returned from PHYSFS_open*(). - * \return nonzero on success, zero on error. Specifics of the error can be - * gleaned from PHYSFS_getLastError(). - * - * \sa PHYSFS_openRead - * \sa PHYSFS_openWrite - * \sa PHYSFS_openAppend - */ -__EXPORT__ int PHYSFS_close(PHYSFS_File *handle); - - -/** - * \fn PHYSFS_sint64 PHYSFS_read(PHYSFS_File *handle, void *buffer, PHYSFS_uint32 objSize, PHYSFS_uint32 objCount) - * \brief Read data from a PhysicsFS filehandle - * - * The file must be opened for reading. - * - * \param handle handle returned from PHYSFS_openRead(). - * \param buffer buffer to store read data into. - * \param objSize size in bytes of objects being read from (handle). - * \param objCount number of (objSize) objects to read from (handle). - * \return number of objects read. PHYSFS_getLastError() can shed light on - * the reason this might be < (objCount), as can PHYSFS_eof(). - * -1 if complete failure. - * - * \sa PHYSFS_eof - */ -__EXPORT__ PHYSFS_sint64 PHYSFS_read(PHYSFS_File *handle, - void *buffer, - PHYSFS_uint32 objSize, - PHYSFS_uint32 objCount); - -/** - * \fn PHYSFS_sint64 PHYSFS_write(PHYSFS_File *handle, const void *buffer, PHYSFS_uint32 objSize, PHYSFS_uint32 objCount) - * \brief Write data to a PhysicsFS filehandle - * - * The file must be opened for writing. - * - * \param handle retval from PHYSFS_openWrite() or PHYSFS_openAppend(). - * \param buffer buffer to store read data into. - * \param objSize size in bytes of objects being read from (handle). - * \param objCount number of (objSize) objects to read from (handle). - * \return number of objects written. PHYSFS_getLastError() can shed light on - * the reason this might be < (objCount). -1 if complete failure. - */ -__EXPORT__ PHYSFS_sint64 PHYSFS_write(PHYSFS_File *handle, - const void *buffer, - PHYSFS_uint32 objSize, - PHYSFS_uint32 objCount); - - -/* File position stuff... */ - -/** - * \fn int PHYSFS_eof(PHYSFS_File *handle) - * \brief Check for end-of-file state on a PhysicsFS filehandle. - * - * Determine if the end of file has been reached in a PhysicsFS filehandle. - * - * \param handle handle returned from PHYSFS_openRead(). - * \return nonzero if EOF, zero if not. - * - * \sa PHYSFS_read - * \sa PHYSFS_tell - */ -__EXPORT__ int PHYSFS_eof(PHYSFS_File *handle); - - -/** - * \fn PHYSFS_sint64 PHYSFS_tell(PHYSFS_File *handle) - * \brief Determine current position within a PhysicsFS filehandle. - * - * \param handle handle returned from PHYSFS_open*(). - * \return offset in bytes from start of file. -1 if error occurred. - * Specifics of the error can be gleaned from PHYSFS_getLastError(). - * - * \sa PHYSFS_seek - */ -__EXPORT__ PHYSFS_sint64 PHYSFS_tell(PHYSFS_File *handle); - - -/** - * \fn int PHYSFS_seek(PHYSFS_File *handle, PHYSFS_uint64 pos) - * \brief Seek to a new position within a PhysicsFS filehandle. - * - * The next read or write will occur at that place. Seeking past the - * beginning or end of the file is not allowed, and causes an error. - * - * \param handle handle returned from PHYSFS_open*(). - * \param pos number of bytes from start of file to seek to. - * \return nonzero on success, zero on error. Specifics of the error can be - * gleaned from PHYSFS_getLastError(). - * - * \sa PHYSFS_tell - */ -__EXPORT__ int PHYSFS_seek(PHYSFS_File *handle, PHYSFS_uint64 pos); - - -/** - * \fn PHYSFS_sint64 PHYSFS_fileLength(PHYSFS_File *handle) - * \brief Get total length of a file in bytes. - * - * Note that if the file size can't be determined (since the archive is - * "streamed" or whatnot) than this will report (-1). Also note that if - * another process/thread is writing to this file at the same time, then - * the information this function supplies could be incorrect before you - * get it. Use with caution, or better yet, don't use at all. - * - * \param handle handle returned from PHYSFS_open*(). - * \return size in bytes of the file. -1 if can't be determined. - * - * \sa PHYSFS_tell - * \sa PHYSFS_seek - */ -__EXPORT__ PHYSFS_sint64 PHYSFS_fileLength(PHYSFS_File *handle); - - -/* Buffering stuff... */ - -/** - * \fn int PHYSFS_setBuffer(PHYSFS_File *handle, PHYSFS_uint64 bufsize) - * \brief Set up buffering for a PhysicsFS file handle. - * - * Define an i/o buffer for a file handle. A memory block of (bufsize) bytes - * will be allocated and associated with (handle). - * - * For files opened for reading, up to (bufsize) bytes are read from (handle) - * and stored in the internal buffer. Calls to PHYSFS_read() will pull - * from this buffer until it is empty, and then refill it for more reading. - * Note that compressed files, like ZIP archives, will decompress while - * buffering, so this can be handy for offsetting CPU-intensive operations. - * The buffer isn't filled until you do your next read. - * - * For files opened for writing, data will be buffered to memory until the - * buffer is full or the buffer is flushed. Closing a handle implicitly - * causes a flush...check your return values! - * - * Seeking, etc transparently accounts for buffering. - * - * You can resize an existing buffer by calling this function more than once - * on the same file. Setting the buffer size to zero will free an existing - * buffer. - * - * PhysicsFS file handles are unbuffered by default. - * - * Please check the return value of this function! Failures can include - * not being able to seek backwards in a read-only file when removing the - * buffer, not being able to allocate the buffer, and not being able to - * flush the buffer to disk, among other unexpected problems. - * - * \param handle handle returned from PHYSFS_open*(). - * \param bufsize size, in bytes, of buffer to allocate. - * \return nonzero if successful, zero on error. - * - * \sa PHYSFS_flush - * \sa PHYSFS_read - * \sa PHYSFS_write - * \sa PHYSFS_close - */ -__EXPORT__ int PHYSFS_setBuffer(PHYSFS_File *handle, PHYSFS_uint64 bufsize); - - -/** - * \fn int PHYSFS_flush(PHYSFS_File *handle) - * \brief Flush a buffered PhysicsFS file handle. - * - * For buffered files opened for writing, this will put the current contents - * of the buffer to disk and flag the buffer as empty if possible. - * - * For buffered files opened for reading or unbuffered files, this is a safe - * no-op, and will report success. - * - * \param handle handle returned from PHYSFS_open*(). - * \return nonzero if successful, zero on error. - * - * \sa PHYSFS_setBuffer - * \sa PHYSFS_close - */ -__EXPORT__ int PHYSFS_flush(PHYSFS_File *handle); - - -/* Byteorder stuff... */ - -/** - * \fn PHYSFS_sint16 PHYSFS_swapSLE16(PHYSFS_sint16 val) - * \brief Swap littleendian signed 16 to platform's native byte order. - * - * Take a 16-bit signed value in littleendian format and convert it to - * the platform's native byte order. - * - * \param val value to convert - * \return converted value. - */ -__EXPORT__ PHYSFS_sint16 PHYSFS_swapSLE16(PHYSFS_sint16 val); - - -/** - * \fn PHYSFS_uint16 PHYSFS_swapULE16(PHYSFS_uint16 val) - * \brief Swap littleendian unsigned 16 to platform's native byte order. - * - * Take a 16-bit unsigned value in littleendian format and convert it to - * the platform's native byte order. - * - * \param val value to convert - * \return converted value. - */ -__EXPORT__ PHYSFS_uint16 PHYSFS_swapULE16(PHYSFS_uint16 val); - -/** - * \fn PHYSFS_sint32 PHYSFS_swapSLE32(PHYSFS_sint32 val) - * \brief Swap littleendian signed 32 to platform's native byte order. - * - * Take a 32-bit signed value in littleendian format and convert it to - * the platform's native byte order. - * - * \param val value to convert - * \return converted value. - */ -__EXPORT__ PHYSFS_sint32 PHYSFS_swapSLE32(PHYSFS_sint32 val); - - -/** - * \fn PHYSFS_uint32 PHYSFS_swapULE32(PHYSFS_uint32 val) - * \brief Swap littleendian unsigned 32 to platform's native byte order. - * - * Take a 32-bit unsigned value in littleendian format and convert it to - * the platform's native byte order. - * - * \param val value to convert - * \return converted value. - */ -__EXPORT__ PHYSFS_uint32 PHYSFS_swapULE32(PHYSFS_uint32 val); - -/** - * \fn PHYSFS_sint64 PHYSFS_swapSLE64(PHYSFS_sint64 val) - * \brief Swap littleendian signed 64 to platform's native byte order. - * - * Take a 64-bit signed value in littleendian format and convert it to - * the platform's native byte order. - * - * \param val value to convert - * \return converted value. - * - * \warning Remember, PHYSFS_uint64 is only 32 bits on platforms without - * any sort of 64-bit support. - */ -__EXPORT__ PHYSFS_sint64 PHYSFS_swapSLE64(PHYSFS_sint64 val); - - -/** - * \fn PHYSFS_uint64 PHYSFS_swapULE64(PHYSFS_uint64 val) - * \brief Swap littleendian unsigned 64 to platform's native byte order. - * - * Take a 64-bit unsigned value in littleendian format and convert it to - * the platform's native byte order. - * - * \param val value to convert - * \return converted value. - * - * \warning Remember, PHYSFS_uint64 is only 32 bits on platforms without - * any sort of 64-bit support. - */ -__EXPORT__ PHYSFS_uint64 PHYSFS_swapULE64(PHYSFS_uint64 val); - - -/** - * \fn PHYSFS_sint16 PHYSFS_swapSBE16(PHYSFS_sint16 val) - * \brief Swap bigendian signed 16 to platform's native byte order. - * - * Take a 16-bit signed value in bigendian format and convert it to - * the platform's native byte order. - * - * \param val value to convert - * \return converted value. - */ -__EXPORT__ PHYSFS_sint16 PHYSFS_swapSBE16(PHYSFS_sint16 val); - - -/** - * \fn PHYSFS_uint16 PHYSFS_swapUBE16(PHYSFS_uint16 val) - * \brief Swap bigendian unsigned 16 to platform's native byte order. - * - * Take a 16-bit unsigned value in bigendian format and convert it to - * the platform's native byte order. - * - * \param val value to convert - * \return converted value. - */ -__EXPORT__ PHYSFS_uint16 PHYSFS_swapUBE16(PHYSFS_uint16 val); - -/** - * \fn PHYSFS_sint32 PHYSFS_swapSBE32(PHYSFS_sint32 val) - * \brief Swap bigendian signed 32 to platform's native byte order. - * - * Take a 32-bit signed value in bigendian format and convert it to - * the platform's native byte order. - * - * \param val value to convert - * \return converted value. - */ -__EXPORT__ PHYSFS_sint32 PHYSFS_swapSBE32(PHYSFS_sint32 val); - - -/** - * \fn PHYSFS_uint32 PHYSFS_swapUBE32(PHYSFS_uint32 val) - * \brief Swap bigendian unsigned 32 to platform's native byte order. - * - * Take a 32-bit unsigned value in bigendian format and convert it to - * the platform's native byte order. - * - * \param val value to convert - * \return converted value. - */ -__EXPORT__ PHYSFS_uint32 PHYSFS_swapUBE32(PHYSFS_uint32 val); - - -/** - * \fn PHYSFS_sint64 PHYSFS_swapSBE64(PHYSFS_sint64 val) - * \brief Swap bigendian signed 64 to platform's native byte order. - * - * Take a 64-bit signed value in bigendian format and convert it to - * the platform's native byte order. - * - * \param val value to convert - * \return converted value. - * - * \warning Remember, PHYSFS_uint64 is only 32 bits on platforms without - * any sort of 64-bit support. - */ -__EXPORT__ PHYSFS_sint64 PHYSFS_swapSBE64(PHYSFS_sint64 val); - - -/** - * \fn PHYSFS_uint64 PHYSFS_swapUBE64(PHYSFS_uint64 val) - * \brief Swap bigendian unsigned 64 to platform's native byte order. - * - * Take a 64-bit unsigned value in bigendian format and convert it to - * the platform's native byte order. - * - * \param val value to convert - * \return converted value. - * - * \warning Remember, PHYSFS_uint64 is only 32 bits on platforms without - * any sort of 64-bit support. - */ -__EXPORT__ PHYSFS_uint64 PHYSFS_swapUBE64(PHYSFS_uint64 val); - - -/** - * \fn int PHYSFS_readSLE16(PHYSFS_File *file, PHYSFS_sint16 *val) - * \brief Read and convert a signed 16-bit littleendian value. - * - * Convenience function. Read a signed 16-bit littleendian value from a - * file and convert it to the platform's native byte order. - * - * \param file PhysicsFS file handle from which to read. - * \param val pointer to where value should be stored. - * \return zero on failure, non-zero on success. If successful, (*val) will - * store the result. On failure, you can find out what went wrong - * from PHYSFS_getLastError(). - */ -__EXPORT__ int PHYSFS_readSLE16(PHYSFS_File *file, PHYSFS_sint16 *val); - - -/** - * \fn int PHYSFS_readULE16(PHYSFS_File *file, PHYSFS_uint16 *val) - * \brief Read and convert an unsigned 16-bit littleendian value. - * - * Convenience function. Read an unsigned 16-bit littleendian value from a - * file and convert it to the platform's native byte order. - * - * \param file PhysicsFS file handle from which to read. - * \param val pointer to where value should be stored. - * \return zero on failure, non-zero on success. If successful, (*val) will - * store the result. On failure, you can find out what went wrong - * from PHYSFS_getLastError(). - * - */ -__EXPORT__ int PHYSFS_readULE16(PHYSFS_File *file, PHYSFS_uint16 *val); - - -/** - * \fn int PHYSFS_readSBE16(PHYSFS_File *file, PHYSFS_sint16 *val) - * \brief Read and convert a signed 16-bit bigendian value. - * - * Convenience function. Read a signed 16-bit bigendian value from a - * file and convert it to the platform's native byte order. - * - * \param file PhysicsFS file handle from which to read. - * \param val pointer to where value should be stored. - * \return zero on failure, non-zero on success. If successful, (*val) will - * store the result. On failure, you can find out what went wrong - * from PHYSFS_getLastError(). - */ -__EXPORT__ int PHYSFS_readSBE16(PHYSFS_File *file, PHYSFS_sint16 *val); - - -/** - * \fn int PHYSFS_readUBE16(PHYSFS_File *file, PHYSFS_uint16 *val) - * \brief Read and convert an unsigned 16-bit bigendian value. - * - * Convenience function. Read an unsigned 16-bit bigendian value from a - * file and convert it to the platform's native byte order. - * - * \param file PhysicsFS file handle from which to read. - * \param val pointer to where value should be stored. - * \return zero on failure, non-zero on success. If successful, (*val) will - * store the result. On failure, you can find out what went wrong - * from PHYSFS_getLastError(). - * - */ -__EXPORT__ int PHYSFS_readUBE16(PHYSFS_File *file, PHYSFS_uint16 *val); - - -/** - * \fn int PHYSFS_readSLE32(PHYSFS_File *file, PHYSFS_sint32 *val) - * \brief Read and convert a signed 32-bit littleendian value. - * - * Convenience function. Read a signed 32-bit littleendian value from a - * file and convert it to the platform's native byte order. - * - * \param file PhysicsFS file handle from which to read. - * \param val pointer to where value should be stored. - * \return zero on failure, non-zero on success. If successful, (*val) will - * store the result. On failure, you can find out what went wrong - * from PHYSFS_getLastError(). - */ -__EXPORT__ int PHYSFS_readSLE32(PHYSFS_File *file, PHYSFS_sint32 *val); - - -/** - * \fn int PHYSFS_readULE32(PHYSFS_File *file, PHYSFS_uint32 *val) - * \brief Read and convert an unsigned 32-bit littleendian value. - * - * Convenience function. Read an unsigned 32-bit littleendian value from a - * file and convert it to the platform's native byte order. - * - * \param file PhysicsFS file handle from which to read. - * \param val pointer to where value should be stored. - * \return zero on failure, non-zero on success. If successful, (*val) will - * store the result. On failure, you can find out what went wrong - * from PHYSFS_getLastError(). - * - */ -__EXPORT__ int PHYSFS_readULE32(PHYSFS_File *file, PHYSFS_uint32 *val); - - -/** - * \fn int PHYSFS_readSBE32(PHYSFS_File *file, PHYSFS_sint32 *val) - * \brief Read and convert a signed 32-bit bigendian value. - * - * Convenience function. Read a signed 32-bit bigendian value from a - * file and convert it to the platform's native byte order. - * - * \param file PhysicsFS file handle from which to read. - * \param val pointer to where value should be stored. - * \return zero on failure, non-zero on success. If successful, (*val) will - * store the result. On failure, you can find out what went wrong - * from PHYSFS_getLastError(). - */ -__EXPORT__ int PHYSFS_readSBE32(PHYSFS_File *file, PHYSFS_sint32 *val); - - -/** - * \fn int PHYSFS_readUBE32(PHYSFS_File *file, PHYSFS_uint32 *val) - * \brief Read and convert an unsigned 32-bit bigendian value. - * - * Convenience function. Read an unsigned 32-bit bigendian value from a - * file and convert it to the platform's native byte order. - * - * \param file PhysicsFS file handle from which to read. - * \param val pointer to where value should be stored. - * \return zero on failure, non-zero on success. If successful, (*val) will - * store the result. On failure, you can find out what went wrong - * from PHYSFS_getLastError(). - * - */ -__EXPORT__ int PHYSFS_readUBE32(PHYSFS_File *file, PHYSFS_uint32 *val); - - -/** - * \fn int PHYSFS_readSLE64(PHYSFS_File *file, PHYSFS_sint64 *val) - * \brief Read and convert a signed 64-bit littleendian value. - * - * Convenience function. Read a signed 64-bit littleendian value from a - * file and convert it to the platform's native byte order. - * - * \param file PhysicsFS file handle from which to read. - * \param val pointer to where value should be stored. - * \return zero on failure, non-zero on success. If successful, (*val) will - * store the result. On failure, you can find out what went wrong - * from PHYSFS_getLastError(). - * - * \warning Remember, PHYSFS_sint64 is only 32 bits on platforms without - * any sort of 64-bit support. - */ -__EXPORT__ int PHYSFS_readSLE64(PHYSFS_File *file, PHYSFS_sint64 *val); - - -/** - * \fn int PHYSFS_readULE64(PHYSFS_File *file, PHYSFS_uint64 *val) - * \brief Read and convert an unsigned 64-bit littleendian value. - * - * Convenience function. Read an unsigned 64-bit littleendian value from a - * file and convert it to the platform's native byte order. - * - * \param file PhysicsFS file handle from which to read. - * \param val pointer to where value should be stored. - * \return zero on failure, non-zero on success. If successful, (*val) will - * store the result. On failure, you can find out what went wrong - * from PHYSFS_getLastError(). - * - * \warning Remember, PHYSFS_uint64 is only 32 bits on platforms without - * any sort of 64-bit support. - */ -__EXPORT__ int PHYSFS_readULE64(PHYSFS_File *file, PHYSFS_uint64 *val); - - -/** - * \fn int PHYSFS_readSBE64(PHYSFS_File *file, PHYSFS_sint64 *val) - * \brief Read and convert a signed 64-bit bigendian value. - * - * Convenience function. Read a signed 64-bit bigendian value from a - * file and convert it to the platform's native byte order. - * - * \param file PhysicsFS file handle from which to read. - * \param val pointer to where value should be stored. - * \return zero on failure, non-zero on success. If successful, (*val) will - * store the result. On failure, you can find out what went wrong - * from PHYSFS_getLastError(). - * - * \warning Remember, PHYSFS_sint64 is only 32 bits on platforms without - * any sort of 64-bit support. - */ -__EXPORT__ int PHYSFS_readSBE64(PHYSFS_File *file, PHYSFS_sint64 *val); - - -/** - * \fn int PHYSFS_readUBE64(PHYSFS_File *file, PHYSFS_uint64 *val) - * \brief Read and convert an unsigned 64-bit bigendian value. - * - * Convenience function. Read an unsigned 64-bit bigendian value from a - * file and convert it to the platform's native byte order. - * - * \param file PhysicsFS file handle from which to read. - * \param val pointer to where value should be stored. - * \return zero on failure, non-zero on success. If successful, (*val) will - * store the result. On failure, you can find out what went wrong - * from PHYSFS_getLastError(). - * - * \warning Remember, PHYSFS_uint64 is only 32 bits on platforms without - * any sort of 64-bit support. - */ -__EXPORT__ int PHYSFS_readUBE64(PHYSFS_File *file, PHYSFS_uint64 *val); - - -/** - * \fn int PHYSFS_writeSLE16(PHYSFS_File *file, PHYSFS_sint16 val) - * \brief Convert and write a signed 16-bit littleendian value. - * - * Convenience function. Convert a signed 16-bit value from the platform's - * native byte order to littleendian and write it to a file. - * - * \param file PhysicsFS file handle to which to write. - * \param val Value to convert and write. - * \return zero on failure, non-zero on success. On failure, you can - * find out what went wrong from PHYSFS_getLastError(). - */ -__EXPORT__ int PHYSFS_writeSLE16(PHYSFS_File *file, PHYSFS_sint16 val); - - -/** - * \fn int PHYSFS_writeULE16(PHYSFS_File *file, PHYSFS_uint16 val) - * \brief Convert and write an unsigned 16-bit littleendian value. - * - * Convenience function. Convert an unsigned 16-bit value from the platform's - * native byte order to littleendian and write it to a file. - * - * \param file PhysicsFS file handle to which to write. - * \param val Value to convert and write. - * \return zero on failure, non-zero on success. On failure, you can - * find out what went wrong from PHYSFS_getLastError(). - */ -__EXPORT__ int PHYSFS_writeULE16(PHYSFS_File *file, PHYSFS_uint16 val); - - -/** - * \fn int PHYSFS_writeSBE16(PHYSFS_File *file, PHYSFS_sint16 val) - * \brief Convert and write a signed 16-bit bigendian value. - * - * Convenience function. Convert a signed 16-bit value from the platform's - * native byte order to bigendian and write it to a file. - * - * \param file PhysicsFS file handle to which to write. - * \param val Value to convert and write. - * \return zero on failure, non-zero on success. On failure, you can - * find out what went wrong from PHYSFS_getLastError(). - */ -__EXPORT__ int PHYSFS_writeSBE16(PHYSFS_File *file, PHYSFS_sint16 val); - - -/** - * \fn int PHYSFS_writeUBE16(PHYSFS_File *file, PHYSFS_uint16 val) - * \brief Convert and write an unsigned 16-bit bigendian value. - * - * Convenience function. Convert an unsigned 16-bit value from the platform's - * native byte order to bigendian and write it to a file. - * - * \param file PhysicsFS file handle to which to write. - * \param val Value to convert and write. - * \return zero on failure, non-zero on success. On failure, you can - * find out what went wrong from PHYSFS_getLastError(). - */ -__EXPORT__ int PHYSFS_writeUBE16(PHYSFS_File *file, PHYSFS_uint16 val); - - -/** - * \fn int PHYSFS_writeSLE32(PHYSFS_File *file, PHYSFS_sint32 val) - * \brief Convert and write a signed 32-bit littleendian value. - * - * Convenience function. Convert a signed 32-bit value from the platform's - * native byte order to littleendian and write it to a file. - * - * \param file PhysicsFS file handle to which to write. - * \param val Value to convert and write. - * \return zero on failure, non-zero on success. On failure, you can - * find out what went wrong from PHYSFS_getLastError(). - */ -__EXPORT__ int PHYSFS_writeSLE32(PHYSFS_File *file, PHYSFS_sint32 val); - - -/** - * \fn int PHYSFS_writeULE32(PHYSFS_File *file, PHYSFS_uint32 val) - * \brief Convert and write an unsigned 32-bit littleendian value. - * - * Convenience function. Convert an unsigned 32-bit value from the platform's - * native byte order to littleendian and write it to a file. - * - * \param file PhysicsFS file handle to which to write. - * \param val Value to convert and write. - * \return zero on failure, non-zero on success. On failure, you can - * find out what went wrong from PHYSFS_getLastError(). - */ -__EXPORT__ int PHYSFS_writeULE32(PHYSFS_File *file, PHYSFS_uint32 val); - - -/** - * \fn int PHYSFS_writeSBE32(PHYSFS_File *file, PHYSFS_sint32 val) - * \brief Convert and write a signed 32-bit bigendian value. - * - * Convenience function. Convert a signed 32-bit value from the platform's - * native byte order to bigendian and write it to a file. - * - * \param file PhysicsFS file handle to which to write. - * \param val Value to convert and write. - * \return zero on failure, non-zero on success. On failure, you can - * find out what went wrong from PHYSFS_getLastError(). - */ -__EXPORT__ int PHYSFS_writeSBE32(PHYSFS_File *file, PHYSFS_sint32 val); - - -/** - * \fn int PHYSFS_writeUBE32(PHYSFS_File *file, PHYSFS_uint32 val) - * \brief Convert and write an unsigned 32-bit bigendian value. - * - * Convenience function. Convert an unsigned 32-bit value from the platform's - * native byte order to bigendian and write it to a file. - * - * \param file PhysicsFS file handle to which to write. - * \param val Value to convert and write. - * \return zero on failure, non-zero on success. On failure, you can - * find out what went wrong from PHYSFS_getLastError(). - */ -__EXPORT__ int PHYSFS_writeUBE32(PHYSFS_File *file, PHYSFS_uint32 val); - - -/** - * \fn int PHYSFS_writeSLE64(PHYSFS_File *file, PHYSFS_sint64 val) - * \brief Convert and write a signed 64-bit littleendian value. - * - * Convenience function. Convert a signed 64-bit value from the platform's - * native byte order to littleendian and write it to a file. - * - * \param file PhysicsFS file handle to which to write. - * \param val Value to convert and write. - * \return zero on failure, non-zero on success. On failure, you can - * find out what went wrong from PHYSFS_getLastError(). - * - * \warning Remember, PHYSFS_uint64 is only 32 bits on platforms without - * any sort of 64-bit support. - */ -__EXPORT__ int PHYSFS_writeSLE64(PHYSFS_File *file, PHYSFS_sint64 val); - - -/** - * \fn int PHYSFS_writeULE64(PHYSFS_File *file, PHYSFS_uint64 val) - * \brief Convert and write an unsigned 64-bit littleendian value. - * - * Convenience function. Convert an unsigned 64-bit value from the platform's - * native byte order to littleendian and write it to a file. - * - * \param file PhysicsFS file handle to which to write. - * \param val Value to convert and write. - * \return zero on failure, non-zero on success. On failure, you can - * find out what went wrong from PHYSFS_getLastError(). - * - * \warning Remember, PHYSFS_uint64 is only 32 bits on platforms without - * any sort of 64-bit support. - */ -__EXPORT__ int PHYSFS_writeULE64(PHYSFS_File *file, PHYSFS_uint64 val); - - -/** - * \fn int PHYSFS_writeSBE64(PHYSFS_File *file, PHYSFS_sint64 val) - * \brief Convert and write a signed 64-bit bigending value. - * - * Convenience function. Convert a signed 64-bit value from the platform's - * native byte order to bigendian and write it to a file. - * - * \param file PhysicsFS file handle to which to write. - * \param val Value to convert and write. - * \return zero on failure, non-zero on success. On failure, you can - * find out what went wrong from PHYSFS_getLastError(). - * - * \warning Remember, PHYSFS_uint64 is only 32 bits on platforms without - * any sort of 64-bit support. - */ -__EXPORT__ int PHYSFS_writeSBE64(PHYSFS_File *file, PHYSFS_sint64 val); - - -/** - * \fn int PHYSFS_writeUBE64(PHYSFS_File *file, PHYSFS_uint64 val) - * \brief Convert and write an unsigned 64-bit bigendian value. - * - * Convenience function. Convert an unsigned 64-bit value from the platform's - * native byte order to bigendian and write it to a file. - * - * \param file PhysicsFS file handle to which to write. - * \param val Value to convert and write. - * \return zero on failure, non-zero on success. On failure, you can - * find out what went wrong from PHYSFS_getLastError(). - * - * \warning Remember, PHYSFS_uint64 is only 32 bits on platforms without - * any sort of 64-bit support. - */ -__EXPORT__ int PHYSFS_writeUBE64(PHYSFS_File *file, PHYSFS_uint64 val); - - -/* Everything above this line is part of the PhysicsFS 1.0 API. */ - -/** - * \fn int PHYSFS_isInit(void) - * \brief Determine if the PhysicsFS library is initialized. - * - * Once PHYSFS_init() returns successfully, this will return non-zero. - * Before a successful PHYSFS_init() and after PHYSFS_deinit() returns - * successfully, this will return zero. This function is safe to call at - * any time. - * - * \return non-zero if library is initialized, zero if library is not. - * - * \sa PHYSFS_init - * \sa PHYSFS_deinit - */ -__EXPORT__ int PHYSFS_isInit(void); - - -/** - * \fn int PHYSFS_symbolicLinksPermitted(void) - * \brief Determine if the symbolic links are permitted. - * - * This reports the setting from the last call to PHYSFS_permitSymbolicLinks(). - * If PHYSFS_permitSymbolicLinks() hasn't been called since the library was - * last initialized, symbolic links are implicitly disabled. - * - * \return non-zero if symlinks are permitted, zero if not. - * - * \sa PHYSFS_permitSymbolicLinks - */ -__EXPORT__ int PHYSFS_symbolicLinksPermitted(void); - - -/** - * \struct PHYSFS_Allocator - * \brief PhysicsFS allocation function pointers. - * - * (This is for limited, hardcore use. If you don't immediately see a need - * for it, you can probably ignore this forever.) - * - * You create one of these structures for use with PHYSFS_setAllocator. - * Allocators are assumed to be reentrant by the caller; please mutex - * accordingly. - * - * Allocations are always discussed in 64-bits, for future expansion...we're - * on the cusp of a 64-bit transition, and we'll probably be allocating 6 - * gigabytes like it's nothing sooner or later, and I don't want to change - * this again at that point. If you're on a 32-bit platform and have to - * downcast, it's okay to return NULL if the allocation is greater than - * 4 gigabytes, since you'd have to do so anyhow. - * - * \sa PHYSFS_setAllocator - */ -typedef struct -{ - int (*Init)(void); /**< Initialize. Can be NULL. Zero on failure. */ - void (*Deinit)(void); /**< Deinitialize your allocator. Can be NULL. */ - void *(*Malloc)(PHYSFS_uint64); /**< Allocate like malloc(). */ - void *(*Realloc)(void *, PHYSFS_uint64); /**< Reallocate like realloc(). */ - void (*Free)(void *); /**< Free memory from Malloc or Realloc. */ -} PHYSFS_Allocator; - - -/** - * \fn int PHYSFS_setAllocator(const PHYSFS_Allocator *allocator) - * \brief Hook your own allocation routines into PhysicsFS. - * - * (This is for limited, hardcore use. If you don't immediately see a need - * for it, you can probably ignore this forever.) - * - * By default, PhysicsFS will use whatever is reasonable for a platform - * to manage dynamic memory (usually ANSI C malloc/realloc/calloc/free, but - * some platforms might use something else), but in some uncommon cases, the - * app might want more control over the library's memory management. This - * lets you redirect PhysicsFS to use your own allocation routines instead. - * You can only call this function before PHYSFS_init(); if the library is - * initialized, it'll reject your efforts to change the allocator mid-stream. - * You may call this function after PHYSFS_deinit() if you are willing to - * shut down the library and restart it with a new allocator; this is a safe - * and supported operation. The allocator remains intact between deinit/init - * calls. If you want to return to the platform's default allocator, pass a - * NULL in here. - * - * If you aren't immediately sure what to do with this function, you can - * safely ignore it altogether. - * - * \param allocator Structure containing your allocator's entry points. - * \return zero on failure, non-zero on success. This call only fails - * when used between PHYSFS_init() and PHYSFS_deinit() calls. - */ -__EXPORT__ int PHYSFS_setAllocator(const PHYSFS_Allocator *allocator); - - -/** - * \fn int PHYSFS_mount(const char *newDir, const char *mountPoint, int appendToPath) - * \brief Add an archive or directory to the search path. - * - * If this is a duplicate, the entry is not added again, even though the - * function succeeds. You may not add the same archive to two different - * mountpoints: duplicate checking is done against the archive and not the - * mountpoint. - * - * When you mount an archive, it is added to a virtual file system...all files - * in all of the archives are interpolated into a single hierachical file - * tree. Two archives mounted at the same place (or an archive with files - * overlapping another mountpoint) may have overlapping files: in such a case, - * the file earliest in the search path is selected, and the other files are - * inaccessible to the application. This allows archives to be used to - * override previous revisions; you can use the mounting mechanism to place - * archives at a specific point in the file tree and prevent overlap; this - * is useful for downloadable mods that might trample over application data - * or each other, for example. - * - * The mountpoint does not need to exist prior to mounting, which is different - * than those familiar with the Unix concept of "mounting" may not expect. - * As well, more than one archive can be mounted to the same mountpoint, or - * mountpoints and archive contents can overlap...the interpolation mechanism - * still functions as usual. - * - * \param newDir directory or archive to add to the path, in - * platform-dependent notation. - * \param mountPoint Location in the interpolated tree that this archive - * will be "mounted", in platform-independent notation. - * NULL or "" is equivalent to "/". - * \param appendToPath nonzero to append to search path, zero to prepend. - * \return nonzero if added to path, zero on failure (bogus archive, dir - * missing, etc). Specifics of the error can be - * gleaned from PHYSFS_getLastError(). - * - * \sa PHYSFS_removeFromSearchPath - * \sa PHYSFS_getSearchPath - * \sa PHYSFS_getMountPoint - */ -__EXPORT__ int PHYSFS_mount(const char *newDir, const char *mountPoint, int appendToPath); - -/** - * \fn int PHYSFS_getMountPoint(const char *dir) - * \brief Determine a mounted archive's mountpoint. - * - * You give this function the name of an archive or dir you successfully - * added to the search path, and it reports the location in the interpolated - * tree where it is mounted. Files mounted with a NULL mountpoint or through - * PHYSFS_addToSearchPath() will report "/". The return value is READ ONLY - * and valid until the archive is removed from the search path. - * - * \param dir directory or archive previously added to the path, in - * platform-dependent notation. This must match the string - * used when adding, even if your string would also reference - * the same file with a different string of characters. - * \return READ-ONLY string of mount point if added to path, NULL on failure - * (bogus archive, etc) Specifics of the error can be gleaned from - * PHYSFS_getLastError(). - * - * \sa PHYSFS_removeFromSearchPath - * \sa PHYSFS_getSearchPath - * \sa PHYSFS_getMountPoint - */ -__EXPORT__ const char *PHYSFS_getMountPoint(const char *dir); - - -/** - * \typedef PHYSFS_StringCallback - * \brief Function signature for callbacks that report strings. - * - * These are used to report a list of strings to an original caller, one - * string per callback. All strings are UTF-8 encoded. Functions should not - * try to modify or free the string's memory. - * - * These callbacks are used, starting in PhysicsFS 1.1, as an alternative to - * functions that would return lists that need to be cleaned up with - * PHYSFS_freeList(). The callback means that the library doesn't need to - * allocate an entire list and all the strings up front. - * - * Be aware that promises data ordering in the list versions are not - * necessarily so in the callback versions. Check the documentation on - * specific APIs, but strings may not be sorted as you expect. - * - * \param data User-defined data pointer, passed through from the API - * that eventually called the callback. - * \param str The string data about which the callback is meant to inform. - * - * \sa PHYSFS_getCdRomDirsCallback - * \sa PHYSFS_getSearchPathCallback - */ -typedef void (*PHYSFS_StringCallback)(void *data, const char *str); - - -/** - * \typedef PHYSFS_EnumFilesCallback - * \brief Function signature for callbacks that enumerate files. - * - * These are used to report a list of directory entries to an original caller, - * one file/dir/symlink per callback. All strings are UTF-8 encoded. - * Functions should not try to modify or free any string's memory. - * - * These callbacks are used, starting in PhysicsFS 1.1, as an alternative to - * functions that would return lists that need to be cleaned up with - * PHYSFS_freeList(). The callback means that the library doesn't need to - * allocate an entire list and all the strings up front. - * - * Be aware that promises data ordering in the list versions are not - * necessarily so in the callback versions. Check the documentation on - * specific APIs, but strings may not be sorted as you expect. - * - * \param data User-defined data pointer, passed through from the API - * that eventually called the callback. - * \param origdir A string containing the full path, in platform-independent - * notation, of the directory containing this file. In most - * cases, this is the directory on which you requested - * enumeration, passed in the callback for your convenience. - * \param fname The filename that is being enumerated. It may not be in - * alphabetical order compared to other callbacks that have - * fired, and it will not contain the full path. You can - * recreate the fullpath with $origdir/$fname ... The file - * can be a subdirectory, a file, a symlink, etc. - * - * \sa PHYSFS_enumerateFilesCallback - */ -typedef void (*PHYSFS_EnumFilesCallback)(void *data, const char *origdir, - const char *fname); - - -/** - * \fn void PHYSFS_getCdRomDirsCallback(PHYSFS_StringCallback c, void *d) - * \brief Enumerate CD-ROM directories, using an application-defined callback. - * - * Internally, PHYSFS_getCdRomDirs() just calls this function and then builds - * a list before returning to the application, so functionality is identical - * except for how the information is represented to the application. - * - * Unlike PHYSFS_getCdRomDirs(), this function does not return an array. - * Rather, it calls a function specified by the application once per - * detected disc: - * - * \code - * - * static void foundDisc(void *data, const char *cddir) - * { - * printf("cdrom dir [%s] is available.\n", cddir); - * } - * - * // ... - * PHYSFS_getCdRomDirsCallback(foundDisc, NULL); - * \endcode - * - * This call may block while drives spin up. Be forewarned. - * - * \param c Callback function to notify about detected drives. - * \param d Application-defined data passed to callback. Can be NULL. - * - * \sa PHYSFS_StringCallback - * \sa PHYSFS_getCdRomDirs - */ -__EXPORT__ void PHYSFS_getCdRomDirsCallback(PHYSFS_StringCallback c, void *d); - - -/** - * \fn void PHYSFS_getSearchPathCallback(PHYSFS_StringCallback c, void *d) - * \brief Enumerate the search path, using an application-defined callback. - * - * Internally, PHYSFS_getSearchPath() just calls this function and then builds - * a list before returning to the application, so functionality is identical - * except for how the information is represented to the application. - * - * Unlike PHYSFS_getSearchPath(), this function does not return an array. - * Rather, it calls a function specified by the application once per - * element of the search path: - * - * \code - * - * static void printSearchPath(void *data, const char *pathItem) - * { - * printf("[%s] is in the search path.\n", pathItem); - * } - * - * // ... - * PHYSFS_getSearchPathCallback(printSearchPath, NULL); - * \endcode - * - * Elements of the search path are reported in order search priority, so the - * first archive/dir that would be examined when looking for a file is the - * first element passed through the callback. - * - * \param c Callback function to notify about search path elements. - * \param d Application-defined data passed to callback. Can be NULL. - * - * \sa PHYSFS_StringCallback - * \sa PHYSFS_getSearchPath - */ -__EXPORT__ void PHYSFS_getSearchPathCallback(PHYSFS_StringCallback c, void *d); - - -/** - * \fn void PHYSFS_enumerateFilesCallback(const char *dir, PHYSFS_EnumFilesCallback c, void *d) - * \brief Get a file listing of a search path's directory, using an application-defined callback. - * - * Internally, PHYSFS_enumerateFiles() just calls this function and then builds - * a list before returning to the application, so functionality is identical - * except for how the information is represented to the application. - * - * Unlike PHYSFS_enumerateFiles(), this function does not return an array. - * Rather, it calls a function specified by the application once per - * element of the search path: - * - * \code - * - * static void printDir(void *data, const char *origdir, const char *fname) - * { - * printf(" * We've got [%s] in [%s].\n", fname, origdir); - * } - * - * // ... - * PHYSFS_enumerateFilesCallback("/some/path", printDir, NULL); - * \endcode - * - * Items sent to the callback are not guaranteed to be in any order whatsoever. - * There is no sorting done at this level, and if you need that, you should - * probably use PHYSFS_enumerateFiles() instead, which guarantees - * alphabetical sorting. This form reports whatever is discovered in each - * archive before moving on to the next. Even within one archive, we can't - * guarantee what order it will discover data. <em>Any sorting you find in - * these callbacks is just pure luck. Do not rely on it.</em> - * - * \param dir Directory, in platform-independent notation, to enumerate. - * \param c Callback function to notify about search path elements. - * \param d Application-defined data passed to callback. Can be NULL. - * - * \sa PHYSFS_EnumFilesCallback - * \sa PHYSFS_enumerateFiles - */ -__EXPORT__ void PHYSFS_enumerateFilesCallback(const char *dir, - PHYSFS_EnumFilesCallback c, - void *d); - -/** - * \fn void PHYSFS_utf8FromUcs4(const PHYSFS_uint32 *src, char *dst, PHYSFS_uint64 len) - * \brief Convert a UCS-4 string to a UTF-8 string. - * - * UCS-4 strings are 32-bits per character: \c wchar_t on Unix. - * - * To ensure that the destination buffer is large enough for the conversion, - * please allocate a buffer that is the same size as the source buffer. UTF-8 - * never uses more than 32-bits per character, so while it may shrink a UCS-4 - * string, it will never expand it. - * - * Strings that don't fit in the destination buffer will be truncated, but - * will always be null-terminated and never have an incomplete UTF-8 - * sequence at the end. - * - * \param src Null-terminated source string in UCS-4 format. - * \param dst Buffer to store converted UTF-8 string. - * \param len Size, in bytes, of destination buffer. - */ -__EXPORT__ void PHYSFS_utf8FromUcs4(const PHYSFS_uint32 *src, char *dst, - PHYSFS_uint64 len); - -/** - * \fn void PHYSFS_utf8ToUcs4(const char *src, PHYSFS_uint32 *dst, PHYSFS_uint64 len) - * \brief Convert a UTF-8 string to a UCS-4 string. - * - * UCS-4 strings are 32-bits per character: \c wchar_t on Unix. - * - * To ensure that the destination buffer is large enough for the conversion, - * please allocate a buffer that is four times the size of the source buffer. - * UTF-8 uses from one to four bytes per character, but UCS-4 always uses - * four, so an entirely low-ASCII string will quadruple in size! - * - * Strings that don't fit in the destination buffer will be truncated, but - * will always be null-terminated and never have an incomplete UCS-4 - * sequence at the end. - * - * \param src Null-terminated source string in UTF-8 format. - * \param dst Buffer to store converted UCS-4 string. - * \param len Size, in bytes, of destination buffer. - */ -__EXPORT__ void PHYSFS_utf8ToUcs4(const char *src, PHYSFS_uint32 *dst, - PHYSFS_uint64 len); - -/** - * \fn void PHYSFS_utf8FromUcs2(const PHYSFS_uint16 *src, char *dst, PHYSFS_uint64 len) - * \brief Convert a UCS-2 string to a UTF-8 string. - * - * UCS-2 strings are 16-bits per character: \c TCHAR on Windows, when building - * with Unicode support. - * - * To ensure that the destination buffer is large enough for the conversion, - * please allocate a buffer that is double the size of the source buffer. - * UTF-8 never uses more than 32-bits per character, so while it may shrink - * a UCS-2 string, it may also expand it. - * - * Strings that don't fit in the destination buffer will be truncated, but - * will always be null-terminated and never have an incomplete UTF-8 - * sequence at the end. - * - * Please note that UCS-2 is not UTF-16; we do not support the "surrogate" - * values at this time. - * - * \param src Null-terminated source string in UCS-2 format. - * \param dst Buffer to store converted UTF-8 string. - * \param len Size, in bytes, of destination buffer. - */ -__EXPORT__ void PHYSFS_utf8FromUcs2(const PHYSFS_uint16 *src, char *dst, - PHYSFS_uint64 len); - -/** - * \fn PHYSFS_utf8ToUcs2(const char *src, PHYSFS_uint16 *dst, PHYSFS_uint64 len) - * \brief Convert a UTF-8 string to a UCS-2 string. - * - * UCS-2 strings are 16-bits per character: \c TCHAR on Windows, when building - * with Unicode support. - * - * To ensure that the destination buffer is large enough for the conversion, - * please allocate a buffer that is double the size of the source buffer. - * UTF-8 uses from one to four bytes per character, but UCS-2 always uses - * two, so an entirely low-ASCII string will double in size! - * - * Strings that don't fit in the destination buffer will be truncated, but - * will always be null-terminated and never have an incomplete UCS-2 - * sequence at the end. - * - * Please note that UCS-2 is not UTF-16; we do not support the "surrogate" - * values at this time. - * - * \param src Null-terminated source string in UTF-8 format. - * \param dst Buffer to store converted UCS-2 string. - * \param len Size, in bytes, of destination buffer. - */ -__EXPORT__ void PHYSFS_utf8ToUcs2(const char *src, PHYSFS_uint16 *dst, - PHYSFS_uint64 len); - -/** - * \fn void PHYSFS_utf8FromLatin1(const char *src, char *dst, PHYSFS_uint64 len) - * \brief Convert a UTF-8 string to a Latin1 string. - * - * Latin1 strings are 8-bits per character: a popular "high ASCII" - * encoding. - * - * To ensure that the destination buffer is large enough for the conversion, - * please allocate a buffer that is double the size of the source buffer. - * UTF-8 expands latin1 codepoints over 127 from 1 to 2 bytes, so the string - * may grow in some cases. - * - * Strings that don't fit in the destination buffer will be truncated, but - * will always be null-terminated and never have an incomplete UTF-8 - * sequence at the end. - * - * Please note that we do not supply a UTF-8 to Latin1 converter, since Latin1 - * can't express most Unicode codepoints. It's a legacy encoding; you should - * be converting away from it at all times. - * - * \param src Null-terminated source string in Latin1 format. - * \param dst Buffer to store converted UTF-8 string. - * \param len Size, in bytes, of destination buffer. - */ -__EXPORT__ void PHYSFS_utf8FromLatin1(const char *src, char *dst, - PHYSFS_uint64 len); - -/* Everything above this line is part of the PhysicsFS 2.0 API. */ - - -#ifdef __cplusplus -} -#endif - -#endif /* !defined _INCLUDE_PHYSFS_H_ */ - -/* end of physfs.h ... */ - diff --git a/Frameworks/physfs.framework/Versions/A/Headers/physfs_casefolding.h b/Frameworks/physfs.framework/Versions/A/Headers/physfs_casefolding.h deleted file mode 100644 index 0e50f1e7..00000000 --- a/Frameworks/physfs.framework/Versions/A/Headers/physfs_casefolding.h +++ /dev/null @@ -1,2013 +0,0 @@ -/* - * This file is part of PhysicsFS (http://icculus.org/physfs/) - * - * This data generated by physfs/extras/makecasefoldhashtable.pl ... - * Do not manually edit this file! - * - * Please see the file LICENSE.txt in the source's root directory. - */ - -#ifndef __PHYSICSFS_INTERNAL__ -#error Do not include this header from your applications. -#endif - -static const CaseFoldMapping case_fold_000[] = { - { 0x0202, 0x0203, 0x0000, 0x0000 }, - { 0x0404, 0x0454, 0x0000, 0x0000 }, - { 0x1E1E, 0x1E1F, 0x0000, 0x0000 }, - { 0x2C2C, 0x2C5C, 0x0000, 0x0000 }, - { 0x10404, 0x1042C, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_001[] = { - { 0x0100, 0x0101, 0x0000, 0x0000 }, - { 0x0405, 0x0455, 0x0000, 0x0000 }, - { 0x0504, 0x0505, 0x0000, 0x0000 }, - { 0x2C2D, 0x2C5D, 0x0000, 0x0000 }, - { 0x10405, 0x1042D, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_002[] = { - { 0x0200, 0x0201, 0x0000, 0x0000 }, - { 0x0406, 0x0456, 0x0000, 0x0000 }, - { 0x1E1C, 0x1E1D, 0x0000, 0x0000 }, - { 0x1F1D, 0x1F15, 0x0000, 0x0000 }, - { 0x2C2E, 0x2C5E, 0x0000, 0x0000 }, - { 0x10406, 0x1042E, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_003[] = { - { 0x0102, 0x0103, 0x0000, 0x0000 }, - { 0x0407, 0x0457, 0x0000, 0x0000 }, - { 0x0506, 0x0507, 0x0000, 0x0000 }, - { 0x1F1C, 0x1F14, 0x0000, 0x0000 }, - { 0x10407, 0x1042F, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_004[] = { - { 0x0206, 0x0207, 0x0000, 0x0000 }, - { 0x0400, 0x0450, 0x0000, 0x0000 }, - { 0x1E1A, 0x1E1B, 0x0000, 0x0000 }, - { 0x1F1B, 0x1F13, 0x0000, 0x0000 }, - { 0x2C28, 0x2C58, 0x0000, 0x0000 }, - { 0x10400, 0x10428, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_005[] = { - { 0x0104, 0x0105, 0x0000, 0x0000 }, - { 0x0401, 0x0451, 0x0000, 0x0000 }, - { 0x0500, 0x0501, 0x0000, 0x0000 }, - { 0x1F1A, 0x1F12, 0x0000, 0x0000 }, - { 0x2C29, 0x2C59, 0x0000, 0x0000 }, - { 0x10401, 0x10429, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_006[] = { - { 0x0204, 0x0205, 0x0000, 0x0000 }, - { 0x0402, 0x0452, 0x0000, 0x0000 }, - { 0x1E18, 0x1E19, 0x0000, 0x0000 }, - { 0x1F19, 0x1F11, 0x0000, 0x0000 }, - { 0x2C2A, 0x2C5A, 0x0000, 0x0000 }, - { 0x10402, 0x1042A, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_007[] = { - { 0x0106, 0x0107, 0x0000, 0x0000 }, - { 0x0403, 0x0453, 0x0000, 0x0000 }, - { 0x0502, 0x0503, 0x0000, 0x0000 }, - { 0x1F18, 0x1F10, 0x0000, 0x0000 }, - { 0x2126, 0x03C9, 0x0000, 0x0000 }, - { 0x2C2B, 0x2C5B, 0x0000, 0x0000 }, - { 0x10403, 0x1042B, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_008[] = { - { 0x020A, 0x020B, 0x0000, 0x0000 }, - { 0x040C, 0x045C, 0x0000, 0x0000 }, - { 0x1E16, 0x1E17, 0x0000, 0x0000 }, - { 0x2C24, 0x2C54, 0x0000, 0x0000 }, - { 0x1040C, 0x10434, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_009[] = { - { 0x0108, 0x0109, 0x0000, 0x0000 }, - { 0x040D, 0x045D, 0x0000, 0x0000 }, - { 0x050C, 0x050D, 0x0000, 0x0000 }, - { 0x2C25, 0x2C55, 0x0000, 0x0000 }, - { 0x1040D, 0x10435, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_010[] = { - { 0x0208, 0x0209, 0x0000, 0x0000 }, - { 0x040E, 0x045E, 0x0000, 0x0000 }, - { 0x1E14, 0x1E15, 0x0000, 0x0000 }, - { 0x212B, 0x00E5, 0x0000, 0x0000 }, - { 0x2C26, 0x2C56, 0x0000, 0x0000 }, - { 0x1040E, 0x10436, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_011[] = { - { 0x010A, 0x010B, 0x0000, 0x0000 }, - { 0x040F, 0x045F, 0x0000, 0x0000 }, - { 0x050E, 0x050F, 0x0000, 0x0000 }, - { 0x212A, 0x006B, 0x0000, 0x0000 }, - { 0x2C27, 0x2C57, 0x0000, 0x0000 }, - { 0x1040F, 0x10437, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_012[] = { - { 0x020E, 0x020F, 0x0000, 0x0000 }, - { 0x0408, 0x0458, 0x0000, 0x0000 }, - { 0x1E12, 0x1E13, 0x0000, 0x0000 }, - { 0x2C20, 0x2C50, 0x0000, 0x0000 }, - { 0x10408, 0x10430, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_013[] = { - { 0x010C, 0x010D, 0x0000, 0x0000 }, - { 0x0409, 0x0459, 0x0000, 0x0000 }, - { 0x0508, 0x0509, 0x0000, 0x0000 }, - { 0x2C21, 0x2C51, 0x0000, 0x0000 }, - { 0x10409, 0x10431, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_014[] = { - { 0x020C, 0x020D, 0x0000, 0x0000 }, - { 0x040A, 0x045A, 0x0000, 0x0000 }, - { 0x1E10, 0x1E11, 0x0000, 0x0000 }, - { 0x2C22, 0x2C52, 0x0000, 0x0000 }, - { 0x1040A, 0x10432, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_015[] = { - { 0x010E, 0x010F, 0x0000, 0x0000 }, - { 0x040B, 0x045B, 0x0000, 0x0000 }, - { 0x050A, 0x050B, 0x0000, 0x0000 }, - { 0x2C23, 0x2C53, 0x0000, 0x0000 }, - { 0x1040B, 0x10433, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_016[] = { - { 0x0212, 0x0213, 0x0000, 0x0000 }, - { 0x0414, 0x0434, 0x0000, 0x0000 }, - { 0x1E0E, 0x1E0F, 0x0000, 0x0000 }, - { 0x1F0F, 0x1F07, 0x0000, 0x0000 }, - { 0x10414, 0x1043C, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_017[] = { - { 0x0110, 0x0111, 0x0000, 0x0000 }, - { 0x0415, 0x0435, 0x0000, 0x0000 }, - { 0x1F0E, 0x1F06, 0x0000, 0x0000 }, - { 0x10415, 0x1043D, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_018[] = { - { 0x0210, 0x0211, 0x0000, 0x0000 }, - { 0x0416, 0x0436, 0x0000, 0x0000 }, - { 0x1E0C, 0x1E0D, 0x0000, 0x0000 }, - { 0x1F0D, 0x1F05, 0x0000, 0x0000 }, - { 0x10416, 0x1043E, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_019[] = { - { 0x0112, 0x0113, 0x0000, 0x0000 }, - { 0x0417, 0x0437, 0x0000, 0x0000 }, - { 0x1F0C, 0x1F04, 0x0000, 0x0000 }, - { 0x10417, 0x1043F, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_020[] = { - { 0x0216, 0x0217, 0x0000, 0x0000 }, - { 0x0410, 0x0430, 0x0000, 0x0000 }, - { 0x1E0A, 0x1E0B, 0x0000, 0x0000 }, - { 0x1F0B, 0x1F03, 0x0000, 0x0000 }, - { 0x10410, 0x10438, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_021[] = { - { 0x0114, 0x0115, 0x0000, 0x0000 }, - { 0x0411, 0x0431, 0x0000, 0x0000 }, - { 0x1F0A, 0x1F02, 0x0000, 0x0000 }, - { 0x10411, 0x10439, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_022[] = { - { 0x0214, 0x0215, 0x0000, 0x0000 }, - { 0x0412, 0x0432, 0x0000, 0x0000 }, - { 0x1E08, 0x1E09, 0x0000, 0x0000 }, - { 0x1F09, 0x1F01, 0x0000, 0x0000 }, - { 0x10412, 0x1043A, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_023[] = { - { 0x0116, 0x0117, 0x0000, 0x0000 }, - { 0x0413, 0x0433, 0x0000, 0x0000 }, - { 0x1F08, 0x1F00, 0x0000, 0x0000 }, - { 0x10413, 0x1043B, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_024[] = { - { 0x021A, 0x021B, 0x0000, 0x0000 }, - { 0x041C, 0x043C, 0x0000, 0x0000 }, - { 0x1E06, 0x1E07, 0x0000, 0x0000 }, - { 0x1041C, 0x10444, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_025[] = { - { 0x0118, 0x0119, 0x0000, 0x0000 }, - { 0x041D, 0x043D, 0x0000, 0x0000 }, - { 0x1041D, 0x10445, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_026[] = { - { 0x0218, 0x0219, 0x0000, 0x0000 }, - { 0x041E, 0x043E, 0x0000, 0x0000 }, - { 0x1E04, 0x1E05, 0x0000, 0x0000 }, - { 0x1041E, 0x10446, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_027[] = { - { 0x011A, 0x011B, 0x0000, 0x0000 }, - { 0x041F, 0x043F, 0x0000, 0x0000 }, - { 0x1041F, 0x10447, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_028[] = { - { 0x021E, 0x021F, 0x0000, 0x0000 }, - { 0x0418, 0x0438, 0x0000, 0x0000 }, - { 0x1E02, 0x1E03, 0x0000, 0x0000 }, - { 0x10418, 0x10440, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_029[] = { - { 0x011C, 0x011D, 0x0000, 0x0000 }, - { 0x0419, 0x0439, 0x0000, 0x0000 }, - { 0x10419, 0x10441, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_030[] = { - { 0x021C, 0x021D, 0x0000, 0x0000 }, - { 0x041A, 0x043A, 0x0000, 0x0000 }, - { 0x1E00, 0x1E01, 0x0000, 0x0000 }, - { 0x1041A, 0x10442, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_031[] = { - { 0x011E, 0x011F, 0x0000, 0x0000 }, - { 0x041B, 0x043B, 0x0000, 0x0000 }, - { 0x1041B, 0x10443, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_032[] = { - { 0x0222, 0x0223, 0x0000, 0x0000 }, - { 0x0424, 0x0444, 0x0000, 0x0000 }, - { 0x1E3E, 0x1E3F, 0x0000, 0x0000 }, - { 0x1F3F, 0x1F37, 0x0000, 0x0000 }, - { 0x2C0C, 0x2C3C, 0x0000, 0x0000 }, - { 0x10424, 0x1044C, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_033[] = { - { 0x0120, 0x0121, 0x0000, 0x0000 }, - { 0x0425, 0x0445, 0x0000, 0x0000 }, - { 0x1F3E, 0x1F36, 0x0000, 0x0000 }, - { 0x2C0D, 0x2C3D, 0x0000, 0x0000 }, - { 0x10425, 0x1044D, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_034[] = { - { 0x0220, 0x019E, 0x0000, 0x0000 }, - { 0x0426, 0x0446, 0x0000, 0x0000 }, - { 0x1E3C, 0x1E3D, 0x0000, 0x0000 }, - { 0x1F3D, 0x1F35, 0x0000, 0x0000 }, - { 0x2C0E, 0x2C3E, 0x0000, 0x0000 }, - { 0x10426, 0x1044E, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_035[] = { - { 0x0122, 0x0123, 0x0000, 0x0000 }, - { 0x0427, 0x0447, 0x0000, 0x0000 }, - { 0x1F3C, 0x1F34, 0x0000, 0x0000 }, - { 0x2C0F, 0x2C3F, 0x0000, 0x0000 }, - { 0x10427, 0x1044F, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_036[] = { - { 0x0226, 0x0227, 0x0000, 0x0000 }, - { 0x0420, 0x0440, 0x0000, 0x0000 }, - { 0x1E3A, 0x1E3B, 0x0000, 0x0000 }, - { 0x1F3B, 0x1F33, 0x0000, 0x0000 }, - { 0x2C08, 0x2C38, 0x0000, 0x0000 }, - { 0x10420, 0x10448, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_037[] = { - { 0x0124, 0x0125, 0x0000, 0x0000 }, - { 0x0421, 0x0441, 0x0000, 0x0000 }, - { 0x1F3A, 0x1F32, 0x0000, 0x0000 }, - { 0x2C09, 0x2C39, 0x0000, 0x0000 }, - { 0x10421, 0x10449, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_038[] = { - { 0x0224, 0x0225, 0x0000, 0x0000 }, - { 0x0422, 0x0442, 0x0000, 0x0000 }, - { 0x1E38, 0x1E39, 0x0000, 0x0000 }, - { 0x1F39, 0x1F31, 0x0000, 0x0000 }, - { 0x2C0A, 0x2C3A, 0x0000, 0x0000 }, - { 0x10422, 0x1044A, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_039[] = { - { 0x0126, 0x0127, 0x0000, 0x0000 }, - { 0x0423, 0x0443, 0x0000, 0x0000 }, - { 0x1F38, 0x1F30, 0x0000, 0x0000 }, - { 0x2C0B, 0x2C3B, 0x0000, 0x0000 }, - { 0x10423, 0x1044B, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_040[] = { - { 0x022A, 0x022B, 0x0000, 0x0000 }, - { 0x042C, 0x044C, 0x0000, 0x0000 }, - { 0x1E36, 0x1E37, 0x0000, 0x0000 }, - { 0x2C04, 0x2C34, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_041[] = { - { 0x0128, 0x0129, 0x0000, 0x0000 }, - { 0x042D, 0x044D, 0x0000, 0x0000 }, - { 0x2C05, 0x2C35, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_042[] = { - { 0x0228, 0x0229, 0x0000, 0x0000 }, - { 0x042E, 0x044E, 0x0000, 0x0000 }, - { 0x1E34, 0x1E35, 0x0000, 0x0000 }, - { 0x2C06, 0x2C36, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_043[] = { - { 0x012A, 0x012B, 0x0000, 0x0000 }, - { 0x042F, 0x044F, 0x0000, 0x0000 }, - { 0x2C07, 0x2C37, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_044[] = { - { 0x022E, 0x022F, 0x0000, 0x0000 }, - { 0x0428, 0x0448, 0x0000, 0x0000 }, - { 0x1E32, 0x1E33, 0x0000, 0x0000 }, - { 0x2C00, 0x2C30, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_045[] = { - { 0x012C, 0x012D, 0x0000, 0x0000 }, - { 0x0429, 0x0449, 0x0000, 0x0000 }, - { 0x2C01, 0x2C31, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_046[] = { - { 0x022C, 0x022D, 0x0000, 0x0000 }, - { 0x042A, 0x044A, 0x0000, 0x0000 }, - { 0x1E30, 0x1E31, 0x0000, 0x0000 }, - { 0x2C02, 0x2C32, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_047[] = { - { 0x012E, 0x012F, 0x0000, 0x0000 }, - { 0x042B, 0x044B, 0x0000, 0x0000 }, - { 0x2C03, 0x2C33, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_048[] = { - { 0x0232, 0x0233, 0x0000, 0x0000 }, - { 0x0535, 0x0565, 0x0000, 0x0000 }, - { 0x1E2E, 0x1E2F, 0x0000, 0x0000 }, - { 0x1F2F, 0x1F27, 0x0000, 0x0000 }, - { 0x2C1C, 0x2C4C, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_049[] = { - { 0x0130, 0x0069, 0x0307, 0x0000 }, - { 0x0534, 0x0564, 0x0000, 0x0000 }, - { 0x1F2E, 0x1F26, 0x0000, 0x0000 }, - { 0x2C1D, 0x2C4D, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_050[] = { - { 0x0230, 0x0231, 0x0000, 0x0000 }, - { 0x0537, 0x0567, 0x0000, 0x0000 }, - { 0x1E2C, 0x1E2D, 0x0000, 0x0000 }, - { 0x1F2D, 0x1F25, 0x0000, 0x0000 }, - { 0x2C1E, 0x2C4E, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_051[] = { - { 0x0132, 0x0133, 0x0000, 0x0000 }, - { 0x0536, 0x0566, 0x0000, 0x0000 }, - { 0x1F2C, 0x1F24, 0x0000, 0x0000 }, - { 0x2C1F, 0x2C4F, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_052[] = { - { 0x0531, 0x0561, 0x0000, 0x0000 }, - { 0x1E2A, 0x1E2B, 0x0000, 0x0000 }, - { 0x1F2B, 0x1F23, 0x0000, 0x0000 }, - { 0x2C18, 0x2C48, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_053[] = { - { 0x0134, 0x0135, 0x0000, 0x0000 }, - { 0x1F2A, 0x1F22, 0x0000, 0x0000 }, - { 0x2C19, 0x2C49, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_054[] = { - { 0x0533, 0x0563, 0x0000, 0x0000 }, - { 0x1E28, 0x1E29, 0x0000, 0x0000 }, - { 0x1F29, 0x1F21, 0x0000, 0x0000 }, - { 0x2C1A, 0x2C4A, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_055[] = { - { 0x0136, 0x0137, 0x0000, 0x0000 }, - { 0x0532, 0x0562, 0x0000, 0x0000 }, - { 0x1F28, 0x1F20, 0x0000, 0x0000 }, - { 0x2C1B, 0x2C4B, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_056[] = { - { 0x0139, 0x013A, 0x0000, 0x0000 }, - { 0x053D, 0x056D, 0x0000, 0x0000 }, - { 0x1E26, 0x1E27, 0x0000, 0x0000 }, - { 0x2C14, 0x2C44, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_057[] = { - { 0x023B, 0x023C, 0x0000, 0x0000 }, - { 0x053C, 0x056C, 0x0000, 0x0000 }, - { 0x2C15, 0x2C45, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_058[] = { - { 0x013B, 0x013C, 0x0000, 0x0000 }, - { 0x053F, 0x056F, 0x0000, 0x0000 }, - { 0x1E24, 0x1E25, 0x0000, 0x0000 }, - { 0x2C16, 0x2C46, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_059[] = { - { 0x053E, 0x056E, 0x0000, 0x0000 }, - { 0x2C17, 0x2C47, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_060[] = { - { 0x013D, 0x013E, 0x0000, 0x0000 }, - { 0x0539, 0x0569, 0x0000, 0x0000 }, - { 0x1E22, 0x1E23, 0x0000, 0x0000 }, - { 0x2C10, 0x2C40, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_061[] = { - { 0x0538, 0x0568, 0x0000, 0x0000 }, - { 0x2C11, 0x2C41, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_062[] = { - { 0x013F, 0x0140, 0x0000, 0x0000 }, - { 0x053B, 0x056B, 0x0000, 0x0000 }, - { 0x1E20, 0x1E21, 0x0000, 0x0000 }, - { 0x2C12, 0x2C42, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_063[] = { - { 0x023D, 0x019A, 0x0000, 0x0000 }, - { 0x053A, 0x056A, 0x0000, 0x0000 }, - { 0x2C13, 0x2C43, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_064[] = { - { 0x0141, 0x0142, 0x0000, 0x0000 }, - { 0x0545, 0x0575, 0x0000, 0x0000 }, - { 0x1E5E, 0x1E5F, 0x0000, 0x0000 }, - { 0x1F5F, 0x1F57, 0x0000, 0x0000 }, - { 0x2161, 0x2171, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_065[] = { - { 0x0041, 0x0061, 0x0000, 0x0000 }, - { 0x0544, 0x0574, 0x0000, 0x0000 }, - { 0x2160, 0x2170, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_066[] = { - { 0x0042, 0x0062, 0x0000, 0x0000 }, - { 0x0143, 0x0144, 0x0000, 0x0000 }, - { 0x0547, 0x0577, 0x0000, 0x0000 }, - { 0x1E5C, 0x1E5D, 0x0000, 0x0000 }, - { 0x1F5D, 0x1F55, 0x0000, 0x0000 }, - { 0x2163, 0x2173, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_067[] = { - { 0x0043, 0x0063, 0x0000, 0x0000 }, - { 0x0241, 0x0294, 0x0000, 0x0000 }, - { 0x0546, 0x0576, 0x0000, 0x0000 }, - { 0x2162, 0x2172, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_068[] = { - { 0x0044, 0x0064, 0x0000, 0x0000 }, - { 0x0145, 0x0146, 0x0000, 0x0000 }, - { 0x0541, 0x0571, 0x0000, 0x0000 }, - { 0x1E5A, 0x1E5B, 0x0000, 0x0000 }, - { 0x1F5B, 0x1F53, 0x0000, 0x0000 }, - { 0x2165, 0x2175, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_069[] = { - { 0x0045, 0x0065, 0x0000, 0x0000 }, - { 0x0540, 0x0570, 0x0000, 0x0000 }, - { 0x2164, 0x2174, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_070[] = { - { 0x0046, 0x0066, 0x0000, 0x0000 }, - { 0x0147, 0x0148, 0x0000, 0x0000 }, - { 0x0345, 0x03B9, 0x0000, 0x0000 }, - { 0x0543, 0x0573, 0x0000, 0x0000 }, - { 0x1E58, 0x1E59, 0x0000, 0x0000 }, - { 0x1F59, 0x1F51, 0x0000, 0x0000 }, - { 0x2167, 0x2177, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_071[] = { - { 0x0047, 0x0067, 0x0000, 0x0000 }, - { 0x0542, 0x0572, 0x0000, 0x0000 }, - { 0x2166, 0x2176, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_072[] = { - { 0x0048, 0x0068, 0x0000, 0x0000 }, - { 0x0149, 0x02BC, 0x006E, 0x0000 }, - { 0x054D, 0x057D, 0x0000, 0x0000 }, - { 0x1E56, 0x1E57, 0x0000, 0x0000 }, - { 0x2169, 0x2179, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_073[] = { - { 0x0049, 0x0069, 0x0000, 0x0000 }, - { 0x054C, 0x057C, 0x0000, 0x0000 }, - { 0x1F56, 0x03C5, 0x0313, 0x0342 }, - { 0x2168, 0x2178, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_074[] = { - { 0x004A, 0x006A, 0x0000, 0x0000 }, - { 0x054F, 0x057F, 0x0000, 0x0000 }, - { 0x1E54, 0x1E55, 0x0000, 0x0000 }, - { 0x216B, 0x217B, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_075[] = { - { 0x004B, 0x006B, 0x0000, 0x0000 }, - { 0x014A, 0x014B, 0x0000, 0x0000 }, - { 0x054E, 0x057E, 0x0000, 0x0000 }, - { 0x1F54, 0x03C5, 0x0313, 0x0301 }, - { 0x216A, 0x217A, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_076[] = { - { 0x004C, 0x006C, 0x0000, 0x0000 }, - { 0x0549, 0x0579, 0x0000, 0x0000 }, - { 0x1E52, 0x1E53, 0x0000, 0x0000 }, - { 0x216D, 0x217D, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_077[] = { - { 0x004D, 0x006D, 0x0000, 0x0000 }, - { 0x014C, 0x014D, 0x0000, 0x0000 }, - { 0x0548, 0x0578, 0x0000, 0x0000 }, - { 0x1F52, 0x03C5, 0x0313, 0x0300 }, - { 0x216C, 0x217C, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_078[] = { - { 0x004E, 0x006E, 0x0000, 0x0000 }, - { 0x054B, 0x057B, 0x0000, 0x0000 }, - { 0x1E50, 0x1E51, 0x0000, 0x0000 }, - { 0x216F, 0x217F, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_079[] = { - { 0x004F, 0x006F, 0x0000, 0x0000 }, - { 0x014E, 0x014F, 0x0000, 0x0000 }, - { 0x054A, 0x057A, 0x0000, 0x0000 }, - { 0x1F50, 0x03C5, 0x0313, 0x0000 }, - { 0x216E, 0x217E, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_080[] = { - { 0x0050, 0x0070, 0x0000, 0x0000 }, - { 0x0555, 0x0585, 0x0000, 0x0000 }, - { 0x1E4E, 0x1E4F, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_081[] = { - { 0x0051, 0x0071, 0x0000, 0x0000 }, - { 0x0150, 0x0151, 0x0000, 0x0000 }, - { 0x0554, 0x0584, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_082[] = { - { 0x0052, 0x0072, 0x0000, 0x0000 }, - { 0x1E4C, 0x1E4D, 0x0000, 0x0000 }, - { 0x1F4D, 0x1F45, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_083[] = { - { 0x0053, 0x0073, 0x0000, 0x0000 }, - { 0x0152, 0x0153, 0x0000, 0x0000 }, - { 0x0556, 0x0586, 0x0000, 0x0000 }, - { 0x1F4C, 0x1F44, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_084[] = { - { 0x0054, 0x0074, 0x0000, 0x0000 }, - { 0x0551, 0x0581, 0x0000, 0x0000 }, - { 0x1E4A, 0x1E4B, 0x0000, 0x0000 }, - { 0x1F4B, 0x1F43, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_085[] = { - { 0x0055, 0x0075, 0x0000, 0x0000 }, - { 0x0154, 0x0155, 0x0000, 0x0000 }, - { 0x0550, 0x0580, 0x0000, 0x0000 }, - { 0x1F4A, 0x1F42, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_086[] = { - { 0x0056, 0x0076, 0x0000, 0x0000 }, - { 0x0553, 0x0583, 0x0000, 0x0000 }, - { 0x1E48, 0x1E49, 0x0000, 0x0000 }, - { 0x1F49, 0x1F41, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_087[] = { - { 0x0057, 0x0077, 0x0000, 0x0000 }, - { 0x0156, 0x0157, 0x0000, 0x0000 }, - { 0x0552, 0x0582, 0x0000, 0x0000 }, - { 0x1F48, 0x1F40, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_088[] = { - { 0x0058, 0x0078, 0x0000, 0x0000 }, - { 0x1E46, 0x1E47, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_089[] = { - { 0x0059, 0x0079, 0x0000, 0x0000 }, - { 0x0158, 0x0159, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_090[] = { - { 0x005A, 0x007A, 0x0000, 0x0000 }, - { 0x1E44, 0x1E45, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_091[] = { - { 0x015A, 0x015B, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_092[] = { - { 0x1E42, 0x1E43, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_093[] = { - { 0x015C, 0x015D, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_094[] = { - { 0x1E40, 0x1E41, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_095[] = { - { 0x015E, 0x015F, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_096[] = { - { 0x0464, 0x0465, 0x0000, 0x0000 }, - { 0x1E7E, 0x1E7F, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_097[] = { - { 0x0160, 0x0161, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_098[] = { - { 0x0466, 0x0467, 0x0000, 0x0000 }, - { 0x1E7C, 0x1E7D, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_099[] = { - { 0x0162, 0x0163, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_100[] = { - { 0x0460, 0x0461, 0x0000, 0x0000 }, - { 0x1E7A, 0x1E7B, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_101[] = { - { 0x0164, 0x0165, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_102[] = { - { 0x0462, 0x0463, 0x0000, 0x0000 }, - { 0x1E78, 0x1E79, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_103[] = { - { 0x0166, 0x0167, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_104[] = { - { 0x046C, 0x046D, 0x0000, 0x0000 }, - { 0x1E76, 0x1E77, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_105[] = { - { 0x0168, 0x0169, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_106[] = { - { 0x046E, 0x046F, 0x0000, 0x0000 }, - { 0x1E74, 0x1E75, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_107[] = { - { 0x016A, 0x016B, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_108[] = { - { 0x0468, 0x0469, 0x0000, 0x0000 }, - { 0x1E72, 0x1E73, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_109[] = { - { 0x016C, 0x016D, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_110[] = { - { 0x046A, 0x046B, 0x0000, 0x0000 }, - { 0x1E70, 0x1E71, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_111[] = { - { 0x016E, 0x016F, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_112[] = { - { 0x0474, 0x0475, 0x0000, 0x0000 }, - { 0x1E6E, 0x1E6F, 0x0000, 0x0000 }, - { 0x1F6F, 0x1F67, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_113[] = { - { 0x0170, 0x0171, 0x0000, 0x0000 }, - { 0x1F6E, 0x1F66, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_114[] = { - { 0x0476, 0x0477, 0x0000, 0x0000 }, - { 0x1E6C, 0x1E6D, 0x0000, 0x0000 }, - { 0x1F6D, 0x1F65, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_115[] = { - { 0x0172, 0x0173, 0x0000, 0x0000 }, - { 0x1F6C, 0x1F64, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_116[] = { - { 0x0470, 0x0471, 0x0000, 0x0000 }, - { 0x1E6A, 0x1E6B, 0x0000, 0x0000 }, - { 0x1F6B, 0x1F63, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_117[] = { - { 0x0174, 0x0175, 0x0000, 0x0000 }, - { 0x1F6A, 0x1F62, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_118[] = { - { 0x0472, 0x0473, 0x0000, 0x0000 }, - { 0x1E68, 0x1E69, 0x0000, 0x0000 }, - { 0x1F69, 0x1F61, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_119[] = { - { 0x0176, 0x0177, 0x0000, 0x0000 }, - { 0x1F68, 0x1F60, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_120[] = { - { 0x0179, 0x017A, 0x0000, 0x0000 }, - { 0x047C, 0x047D, 0x0000, 0x0000 }, - { 0x1E66, 0x1E67, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_121[] = { - { 0x0178, 0x00FF, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_122[] = { - { 0x017B, 0x017C, 0x0000, 0x0000 }, - { 0x047E, 0x047F, 0x0000, 0x0000 }, - { 0x1E64, 0x1E65, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_124[] = { - { 0x017D, 0x017E, 0x0000, 0x0000 }, - { 0x0478, 0x0479, 0x0000, 0x0000 }, - { 0x1E62, 0x1E63, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_126[] = { - { 0x017F, 0x0073, 0x0000, 0x0000 }, - { 0x047A, 0x047B, 0x0000, 0x0000 }, - { 0x1E60, 0x1E61, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_128[] = { - { 0x0181, 0x0253, 0x0000, 0x0000 }, - { 0x1F9F, 0x1F27, 0x03B9, 0x0000 }, - { 0x2CAC, 0x2CAD, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_129[] = { - { 0x1F9E, 0x1F26, 0x03B9, 0x0000 } -}; - -static const CaseFoldMapping case_fold_130[] = { - { 0x0587, 0x0565, 0x0582, 0x0000 }, - { 0x1F9D, 0x1F25, 0x03B9, 0x0000 }, - { 0x2CAE, 0x2CAF, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_131[] = { - { 0x0182, 0x0183, 0x0000, 0x0000 }, - { 0x1F9C, 0x1F24, 0x03B9, 0x0000 } -}; - -static const CaseFoldMapping case_fold_132[] = { - { 0x0480, 0x0481, 0x0000, 0x0000 }, - { 0x1E9A, 0x0061, 0x02BE, 0x0000 }, - { 0x1F9B, 0x1F23, 0x03B9, 0x0000 }, - { 0x2CA8, 0x2CA9, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_133[] = { - { 0x0184, 0x0185, 0x0000, 0x0000 }, - { 0x0386, 0x03AC, 0x0000, 0x0000 }, - { 0x1E9B, 0x1E61, 0x0000, 0x0000 }, - { 0x1F9A, 0x1F22, 0x03B9, 0x0000 } -}; - -static const CaseFoldMapping case_fold_134[] = { - { 0x0187, 0x0188, 0x0000, 0x0000 }, - { 0x1E98, 0x0077, 0x030A, 0x0000 }, - { 0x1F99, 0x1F21, 0x03B9, 0x0000 }, - { 0x2CAA, 0x2CAB, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_135[] = { - { 0x0186, 0x0254, 0x0000, 0x0000 }, - { 0x1E99, 0x0079, 0x030A, 0x0000 }, - { 0x1F98, 0x1F20, 0x03B9, 0x0000 } -}; - -static const CaseFoldMapping case_fold_136[] = { - { 0x0189, 0x0256, 0x0000, 0x0000 }, - { 0x048C, 0x048D, 0x0000, 0x0000 }, - { 0x1E96, 0x0068, 0x0331, 0x0000 }, - { 0x1F97, 0x1F27, 0x03B9, 0x0000 }, - { 0x2CA4, 0x2CA5, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_137[] = { - { 0x038A, 0x03AF, 0x0000, 0x0000 }, - { 0x1E97, 0x0074, 0x0308, 0x0000 }, - { 0x1F96, 0x1F26, 0x03B9, 0x0000 } -}; - -static const CaseFoldMapping case_fold_138[] = { - { 0x018B, 0x018C, 0x0000, 0x0000 }, - { 0x0389, 0x03AE, 0x0000, 0x0000 }, - { 0x048E, 0x048F, 0x0000, 0x0000 }, - { 0x1E94, 0x1E95, 0x0000, 0x0000 }, - { 0x1F95, 0x1F25, 0x03B9, 0x0000 }, - { 0x2CA6, 0x2CA7, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_139[] = { - { 0x018A, 0x0257, 0x0000, 0x0000 }, - { 0x0388, 0x03AD, 0x0000, 0x0000 }, - { 0x1F94, 0x1F24, 0x03B9, 0x0000 } -}; - -static const CaseFoldMapping case_fold_140[] = { - { 0x038F, 0x03CE, 0x0000, 0x0000 }, - { 0x1E92, 0x1E93, 0x0000, 0x0000 }, - { 0x1F93, 0x1F23, 0x03B9, 0x0000 }, - { 0x2CA0, 0x2CA1, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_141[] = { - { 0x038E, 0x03CD, 0x0000, 0x0000 }, - { 0x1F92, 0x1F22, 0x03B9, 0x0000 } -}; - -static const CaseFoldMapping case_fold_142[] = { - { 0x018F, 0x0259, 0x0000, 0x0000 }, - { 0x048A, 0x048B, 0x0000, 0x0000 }, - { 0x1E90, 0x1E91, 0x0000, 0x0000 }, - { 0x1F91, 0x1F21, 0x03B9, 0x0000 }, - { 0x2CA2, 0x2CA3, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_143[] = { - { 0x018E, 0x01DD, 0x0000, 0x0000 }, - { 0x038C, 0x03CC, 0x0000, 0x0000 }, - { 0x1F90, 0x1F20, 0x03B9, 0x0000 } -}; - -static const CaseFoldMapping case_fold_144[] = { - { 0x0191, 0x0192, 0x0000, 0x0000 }, - { 0x0393, 0x03B3, 0x0000, 0x0000 }, - { 0x0494, 0x0495, 0x0000, 0x0000 }, - { 0x1E8E, 0x1E8F, 0x0000, 0x0000 }, - { 0x1F8F, 0x1F07, 0x03B9, 0x0000 }, - { 0x2CBC, 0x2CBD, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_145[] = { - { 0x0190, 0x025B, 0x0000, 0x0000 }, - { 0x0392, 0x03B2, 0x0000, 0x0000 }, - { 0x1F8E, 0x1F06, 0x03B9, 0x0000 } -}; - -static const CaseFoldMapping case_fold_146[] = { - { 0x0193, 0x0260, 0x0000, 0x0000 }, - { 0x0391, 0x03B1, 0x0000, 0x0000 }, - { 0x0496, 0x0497, 0x0000, 0x0000 }, - { 0x1E8C, 0x1E8D, 0x0000, 0x0000 }, - { 0x1F8D, 0x1F05, 0x03B9, 0x0000 }, - { 0x24B6, 0x24D0, 0x0000, 0x0000 }, - { 0x2CBE, 0x2CBF, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_147[] = { - { 0x0390, 0x03B9, 0x0308, 0x0301 }, - { 0x1F8C, 0x1F04, 0x03B9, 0x0000 }, - { 0x24B7, 0x24D1, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_148[] = { - { 0x0397, 0x03B7, 0x0000, 0x0000 }, - { 0x0490, 0x0491, 0x0000, 0x0000 }, - { 0x1E8A, 0x1E8B, 0x0000, 0x0000 }, - { 0x1F8B, 0x1F03, 0x03B9, 0x0000 }, - { 0x2CB8, 0x2CB9, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_149[] = { - { 0x0194, 0x0263, 0x0000, 0x0000 }, - { 0x0396, 0x03B6, 0x0000, 0x0000 }, - { 0x1F8A, 0x1F02, 0x03B9, 0x0000 } -}; - -static const CaseFoldMapping case_fold_150[] = { - { 0x0197, 0x0268, 0x0000, 0x0000 }, - { 0x0395, 0x03B5, 0x0000, 0x0000 }, - { 0x0492, 0x0493, 0x0000, 0x0000 }, - { 0x1E88, 0x1E89, 0x0000, 0x0000 }, - { 0x1F89, 0x1F01, 0x03B9, 0x0000 }, - { 0x2CBA, 0x2CBB, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_151[] = { - { 0x0196, 0x0269, 0x0000, 0x0000 }, - { 0x0394, 0x03B4, 0x0000, 0x0000 }, - { 0x1F88, 0x1F00, 0x03B9, 0x0000 } -}; - -static const CaseFoldMapping case_fold_152[] = { - { 0x039B, 0x03BB, 0x0000, 0x0000 }, - { 0x049C, 0x049D, 0x0000, 0x0000 }, - { 0x1E86, 0x1E87, 0x0000, 0x0000 }, - { 0x1F87, 0x1F07, 0x03B9, 0x0000 }, - { 0x24BC, 0x24D6, 0x0000, 0x0000 }, - { 0x2CB4, 0x2CB5, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_153[] = { - { 0x0198, 0x0199, 0x0000, 0x0000 }, - { 0x039A, 0x03BA, 0x0000, 0x0000 }, - { 0x1F86, 0x1F06, 0x03B9, 0x0000 }, - { 0x24BD, 0x24D7, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_154[] = { - { 0x0399, 0x03B9, 0x0000, 0x0000 }, - { 0x049E, 0x049F, 0x0000, 0x0000 }, - { 0x1E84, 0x1E85, 0x0000, 0x0000 }, - { 0x1F85, 0x1F05, 0x03B9, 0x0000 }, - { 0x24BE, 0x24D8, 0x0000, 0x0000 }, - { 0x2CB6, 0x2CB7, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_155[] = { - { 0x0398, 0x03B8, 0x0000, 0x0000 }, - { 0x1F84, 0x1F04, 0x03B9, 0x0000 }, - { 0x24BF, 0x24D9, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_156[] = { - { 0x019D, 0x0272, 0x0000, 0x0000 }, - { 0x039F, 0x03BF, 0x0000, 0x0000 }, - { 0x0498, 0x0499, 0x0000, 0x0000 }, - { 0x1E82, 0x1E83, 0x0000, 0x0000 }, - { 0x1F83, 0x1F03, 0x03B9, 0x0000 }, - { 0x24B8, 0x24D2, 0x0000, 0x0000 }, - { 0x2CB0, 0x2CB1, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_157[] = { - { 0x019C, 0x026F, 0x0000, 0x0000 }, - { 0x039E, 0x03BE, 0x0000, 0x0000 }, - { 0x1F82, 0x1F02, 0x03B9, 0x0000 }, - { 0x24B9, 0x24D3, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_158[] = { - { 0x019F, 0x0275, 0x0000, 0x0000 }, - { 0x039D, 0x03BD, 0x0000, 0x0000 }, - { 0x049A, 0x049B, 0x0000, 0x0000 }, - { 0x1E80, 0x1E81, 0x0000, 0x0000 }, - { 0x1F81, 0x1F01, 0x03B9, 0x0000 }, - { 0x24BA, 0x24D4, 0x0000, 0x0000 }, - { 0x2CB2, 0x2CB3, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_159[] = { - { 0x039C, 0x03BC, 0x0000, 0x0000 }, - { 0x1F80, 0x1F00, 0x03B9, 0x0000 }, - { 0x24BB, 0x24D5, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_160[] = { - { 0x03A3, 0x03C3, 0x0000, 0x0000 }, - { 0x04A4, 0x04A5, 0x0000, 0x0000 }, - { 0x10B0, 0x2D10, 0x0000, 0x0000 }, - { 0x1EBE, 0x1EBF, 0x0000, 0x0000 }, - { 0x2C8C, 0x2C8D, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_161[] = { - { 0x01A0, 0x01A1, 0x0000, 0x0000 }, - { 0x10B1, 0x2D11, 0x0000, 0x0000 }, - { 0x1FBE, 0x03B9, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_162[] = { - { 0x03A1, 0x03C1, 0x0000, 0x0000 }, - { 0x04A6, 0x04A7, 0x0000, 0x0000 }, - { 0x10B2, 0x2D12, 0x0000, 0x0000 }, - { 0x1EBC, 0x1EBD, 0x0000, 0x0000 }, - { 0x2C8E, 0x2C8F, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_163[] = { - { 0x01A2, 0x01A3, 0x0000, 0x0000 }, - { 0x03A0, 0x03C0, 0x0000, 0x0000 }, - { 0x10B3, 0x2D13, 0x0000, 0x0000 }, - { 0x1FBC, 0x03B1, 0x03B9, 0x0000 } -}; - -static const CaseFoldMapping case_fold_164[] = { - { 0x03A7, 0x03C7, 0x0000, 0x0000 }, - { 0x04A0, 0x04A1, 0x0000, 0x0000 }, - { 0x10B4, 0x2D14, 0x0000, 0x0000 }, - { 0x1EBA, 0x1EBB, 0x0000, 0x0000 }, - { 0x1FBB, 0x1F71, 0x0000, 0x0000 }, - { 0x2C88, 0x2C89, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_165[] = { - { 0x01A4, 0x01A5, 0x0000, 0x0000 }, - { 0x03A6, 0x03C6, 0x0000, 0x0000 }, - { 0x10B5, 0x2D15, 0x0000, 0x0000 }, - { 0x1FBA, 0x1F70, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_166[] = { - { 0x01A7, 0x01A8, 0x0000, 0x0000 }, - { 0x03A5, 0x03C5, 0x0000, 0x0000 }, - { 0x04A2, 0x04A3, 0x0000, 0x0000 }, - { 0x10B6, 0x2D16, 0x0000, 0x0000 }, - { 0x1EB8, 0x1EB9, 0x0000, 0x0000 }, - { 0x1FB9, 0x1FB1, 0x0000, 0x0000 }, - { 0x2C8A, 0x2C8B, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_167[] = { - { 0x01A6, 0x0280, 0x0000, 0x0000 }, - { 0x03A4, 0x03C4, 0x0000, 0x0000 }, - { 0x10B7, 0x2D17, 0x0000, 0x0000 }, - { 0x1FB8, 0x1FB0, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_168[] = { - { 0x01A9, 0x0283, 0x0000, 0x0000 }, - { 0x03AB, 0x03CB, 0x0000, 0x0000 }, - { 0x04AC, 0x04AD, 0x0000, 0x0000 }, - { 0x10B8, 0x2D18, 0x0000, 0x0000 }, - { 0x1EB6, 0x1EB7, 0x0000, 0x0000 }, - { 0x1FB7, 0x03B1, 0x0342, 0x03B9 }, - { 0x2C84, 0x2C85, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_169[] = { - { 0x03AA, 0x03CA, 0x0000, 0x0000 }, - { 0x10B9, 0x2D19, 0x0000, 0x0000 }, - { 0x1FB6, 0x03B1, 0x0342, 0x0000 } -}; - -static const CaseFoldMapping case_fold_170[] = { - { 0x03A9, 0x03C9, 0x0000, 0x0000 }, - { 0x04AE, 0x04AF, 0x0000, 0x0000 }, - { 0x10BA, 0x2D1A, 0x0000, 0x0000 }, - { 0x1EB4, 0x1EB5, 0x0000, 0x0000 }, - { 0x2C86, 0x2C87, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_171[] = { - { 0x03A8, 0x03C8, 0x0000, 0x0000 }, - { 0x10BB, 0x2D1B, 0x0000, 0x0000 }, - { 0x1FB4, 0x03AC, 0x03B9, 0x0000 } -}; - -static const CaseFoldMapping case_fold_172[] = { - { 0x04A8, 0x04A9, 0x0000, 0x0000 }, - { 0x10BC, 0x2D1C, 0x0000, 0x0000 }, - { 0x1EB2, 0x1EB3, 0x0000, 0x0000 }, - { 0x1FB3, 0x03B1, 0x03B9, 0x0000 }, - { 0x2C80, 0x2C81, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_173[] = { - { 0x01AC, 0x01AD, 0x0000, 0x0000 }, - { 0x10BD, 0x2D1D, 0x0000, 0x0000 }, - { 0x1FB2, 0x1F70, 0x03B9, 0x0000 } -}; - -static const CaseFoldMapping case_fold_174[] = { - { 0x01AF, 0x01B0, 0x0000, 0x0000 }, - { 0x04AA, 0x04AB, 0x0000, 0x0000 }, - { 0x10BE, 0x2D1E, 0x0000, 0x0000 }, - { 0x1EB0, 0x1EB1, 0x0000, 0x0000 }, - { 0x2C82, 0x2C83, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_175[] = { - { 0x01AE, 0x0288, 0x0000, 0x0000 }, - { 0x10BF, 0x2D1F, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_176[] = { - { 0x01B1, 0x028A, 0x0000, 0x0000 }, - { 0x04B4, 0x04B5, 0x0000, 0x0000 }, - { 0x10A0, 0x2D00, 0x0000, 0x0000 }, - { 0x1EAE, 0x1EAF, 0x0000, 0x0000 }, - { 0x1FAF, 0x1F67, 0x03B9, 0x0000 }, - { 0x2C9C, 0x2C9D, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_177[] = { - { 0x10A1, 0x2D01, 0x0000, 0x0000 }, - { 0x1FAE, 0x1F66, 0x03B9, 0x0000 } -}; - -static const CaseFoldMapping case_fold_178[] = { - { 0x01B3, 0x01B4, 0x0000, 0x0000 }, - { 0x04B6, 0x04B7, 0x0000, 0x0000 }, - { 0x10A2, 0x2D02, 0x0000, 0x0000 }, - { 0x1EAC, 0x1EAD, 0x0000, 0x0000 }, - { 0x1FAD, 0x1F65, 0x03B9, 0x0000 }, - { 0x2C9E, 0x2C9F, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_179[] = { - { 0x01B2, 0x028B, 0x0000, 0x0000 }, - { 0x03B0, 0x03C5, 0x0308, 0x0301 }, - { 0x10A3, 0x2D03, 0x0000, 0x0000 }, - { 0x1FAC, 0x1F64, 0x03B9, 0x0000 } -}; - -static const CaseFoldMapping case_fold_180[] = { - { 0x01B5, 0x01B6, 0x0000, 0x0000 }, - { 0x04B0, 0x04B1, 0x0000, 0x0000 }, - { 0x10A4, 0x2D04, 0x0000, 0x0000 }, - { 0x1EAA, 0x1EAB, 0x0000, 0x0000 }, - { 0x1FAB, 0x1F63, 0x03B9, 0x0000 }, - { 0x2C98, 0x2C99, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_181[] = { - { 0x00B5, 0x03BC, 0x0000, 0x0000 }, - { 0x10A5, 0x2D05, 0x0000, 0x0000 }, - { 0x1FAA, 0x1F62, 0x03B9, 0x0000 } -}; - -static const CaseFoldMapping case_fold_182[] = { - { 0x01B7, 0x0292, 0x0000, 0x0000 }, - { 0x04B2, 0x04B3, 0x0000, 0x0000 }, - { 0x10A6, 0x2D06, 0x0000, 0x0000 }, - { 0x1EA8, 0x1EA9, 0x0000, 0x0000 }, - { 0x1FA9, 0x1F61, 0x03B9, 0x0000 }, - { 0x2C9A, 0x2C9B, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_183[] = { - { 0x10A7, 0x2D07, 0x0000, 0x0000 }, - { 0x1FA8, 0x1F60, 0x03B9, 0x0000 } -}; - -static const CaseFoldMapping case_fold_184[] = { - { 0x04BC, 0x04BD, 0x0000, 0x0000 }, - { 0x10A8, 0x2D08, 0x0000, 0x0000 }, - { 0x1EA6, 0x1EA7, 0x0000, 0x0000 }, - { 0x1FA7, 0x1F67, 0x03B9, 0x0000 }, - { 0x2C94, 0x2C95, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_185[] = { - { 0x01B8, 0x01B9, 0x0000, 0x0000 }, - { 0x10A9, 0x2D09, 0x0000, 0x0000 }, - { 0x1FA6, 0x1F66, 0x03B9, 0x0000 } -}; - -static const CaseFoldMapping case_fold_186[] = { - { 0x04BE, 0x04BF, 0x0000, 0x0000 }, - { 0x10AA, 0x2D0A, 0x0000, 0x0000 }, - { 0x1EA4, 0x1EA5, 0x0000, 0x0000 }, - { 0x1FA5, 0x1F65, 0x03B9, 0x0000 }, - { 0x2C96, 0x2C97, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_187[] = { - { 0x10AB, 0x2D0B, 0x0000, 0x0000 }, - { 0x1FA4, 0x1F64, 0x03B9, 0x0000 } -}; - -static const CaseFoldMapping case_fold_188[] = { - { 0x04B8, 0x04B9, 0x0000, 0x0000 }, - { 0x10AC, 0x2D0C, 0x0000, 0x0000 }, - { 0x1EA2, 0x1EA3, 0x0000, 0x0000 }, - { 0x1FA3, 0x1F63, 0x03B9, 0x0000 }, - { 0x2C90, 0x2C91, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_189[] = { - { 0x01BC, 0x01BD, 0x0000, 0x0000 }, - { 0x10AD, 0x2D0D, 0x0000, 0x0000 }, - { 0x1FA2, 0x1F62, 0x03B9, 0x0000 } -}; - -static const CaseFoldMapping case_fold_190[] = { - { 0x04BA, 0x04BB, 0x0000, 0x0000 }, - { 0x10AE, 0x2D0E, 0x0000, 0x0000 }, - { 0x1EA0, 0x1EA1, 0x0000, 0x0000 }, - { 0x1FA1, 0x1F61, 0x03B9, 0x0000 }, - { 0x2C92, 0x2C93, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_191[] = { - { 0x10AF, 0x2D0F, 0x0000, 0x0000 }, - { 0x1FA0, 0x1F60, 0x03B9, 0x0000 } -}; - -static const CaseFoldMapping case_fold_192[] = { - { 0x00C0, 0x00E0, 0x0000, 0x0000 }, - { 0x1EDE, 0x1EDF, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_193[] = { - { 0x00C1, 0x00E1, 0x0000, 0x0000 }, - { 0x03C2, 0x03C3, 0x0000, 0x0000 }, - { 0x04C5, 0x04C6, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_194[] = { - { 0x00C2, 0x00E2, 0x0000, 0x0000 }, - { 0x1EDC, 0x1EDD, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_195[] = { - { 0x00C3, 0x00E3, 0x0000, 0x0000 }, - { 0x04C7, 0x04C8, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_196[] = { - { 0x00C4, 0x00E4, 0x0000, 0x0000 }, - { 0x01C5, 0x01C6, 0x0000, 0x0000 }, - { 0x1EDA, 0x1EDB, 0x0000, 0x0000 }, - { 0x1FDB, 0x1F77, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_197[] = { - { 0x00C5, 0x00E5, 0x0000, 0x0000 }, - { 0x01C4, 0x01C6, 0x0000, 0x0000 }, - { 0x04C1, 0x04C2, 0x0000, 0x0000 }, - { 0x1FDA, 0x1F76, 0x0000, 0x0000 }, - { 0xFF3A, 0xFF5A, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_198[] = { - { 0x00C6, 0x00E6, 0x0000, 0x0000 }, - { 0x01C7, 0x01C9, 0x0000, 0x0000 }, - { 0x1ED8, 0x1ED9, 0x0000, 0x0000 }, - { 0x1FD9, 0x1FD1, 0x0000, 0x0000 }, - { 0xFF39, 0xFF59, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_199[] = { - { 0x00C7, 0x00E7, 0x0000, 0x0000 }, - { 0x04C3, 0x04C4, 0x0000, 0x0000 }, - { 0x1FD8, 0x1FD0, 0x0000, 0x0000 }, - { 0xFF38, 0xFF58, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_200[] = { - { 0x00C8, 0x00E8, 0x0000, 0x0000 }, - { 0x1ED6, 0x1ED7, 0x0000, 0x0000 }, - { 0x1FD7, 0x03B9, 0x0308, 0x0342 }, - { 0xFF37, 0xFF57, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_201[] = { - { 0x00C9, 0x00E9, 0x0000, 0x0000 }, - { 0x01C8, 0x01C9, 0x0000, 0x0000 }, - { 0x04CD, 0x04CE, 0x0000, 0x0000 }, - { 0x1FD6, 0x03B9, 0x0342, 0x0000 }, - { 0xFF36, 0xFF56, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_202[] = { - { 0x00CA, 0x00EA, 0x0000, 0x0000 }, - { 0x01CB, 0x01CC, 0x0000, 0x0000 }, - { 0x1ED4, 0x1ED5, 0x0000, 0x0000 }, - { 0xFF35, 0xFF55, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_203[] = { - { 0x00CB, 0x00EB, 0x0000, 0x0000 }, - { 0x01CA, 0x01CC, 0x0000, 0x0000 }, - { 0xFF34, 0xFF54, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_204[] = { - { 0x00CC, 0x00EC, 0x0000, 0x0000 }, - { 0x01CD, 0x01CE, 0x0000, 0x0000 }, - { 0x1ED2, 0x1ED3, 0x0000, 0x0000 }, - { 0x1FD3, 0x03B9, 0x0308, 0x0301 }, - { 0x2CE0, 0x2CE1, 0x0000, 0x0000 }, - { 0xFF33, 0xFF53, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_205[] = { - { 0x00CD, 0x00ED, 0x0000, 0x0000 }, - { 0x04C9, 0x04CA, 0x0000, 0x0000 }, - { 0x1FD2, 0x03B9, 0x0308, 0x0300 }, - { 0xFF32, 0xFF52, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_206[] = { - { 0x00CE, 0x00EE, 0x0000, 0x0000 }, - { 0x01CF, 0x01D0, 0x0000, 0x0000 }, - { 0x1ED0, 0x1ED1, 0x0000, 0x0000 }, - { 0x2CE2, 0x2CE3, 0x0000, 0x0000 }, - { 0xFF31, 0xFF51, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_207[] = { - { 0x00CF, 0x00EF, 0x0000, 0x0000 }, - { 0x04CB, 0x04CC, 0x0000, 0x0000 }, - { 0xFF30, 0xFF50, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_208[] = { - { 0x00D0, 0x00F0, 0x0000, 0x0000 }, - { 0x01D1, 0x01D2, 0x0000, 0x0000 }, - { 0x04D4, 0x04D5, 0x0000, 0x0000 }, - { 0x10C0, 0x2D20, 0x0000, 0x0000 }, - { 0x1ECE, 0x1ECF, 0x0000, 0x0000 }, - { 0xFF2F, 0xFF4F, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_209[] = { - { 0x00D1, 0x00F1, 0x0000, 0x0000 }, - { 0x10C1, 0x2D21, 0x0000, 0x0000 }, - { 0xFF2E, 0xFF4E, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_210[] = { - { 0x00D2, 0x00F2, 0x0000, 0x0000 }, - { 0x01D3, 0x01D4, 0x0000, 0x0000 }, - { 0x03D1, 0x03B8, 0x0000, 0x0000 }, - { 0x04D6, 0x04D7, 0x0000, 0x0000 }, - { 0x10C2, 0x2D22, 0x0000, 0x0000 }, - { 0x1ECC, 0x1ECD, 0x0000, 0x0000 }, - { 0xFF2D, 0xFF4D, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_211[] = { - { 0x00D3, 0x00F3, 0x0000, 0x0000 }, - { 0x03D0, 0x03B2, 0x0000, 0x0000 }, - { 0x10C3, 0x2D23, 0x0000, 0x0000 }, - { 0x1FCC, 0x03B7, 0x03B9, 0x0000 }, - { 0xFF2C, 0xFF4C, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_212[] = { - { 0x00D4, 0x00F4, 0x0000, 0x0000 }, - { 0x01D5, 0x01D6, 0x0000, 0x0000 }, - { 0x04D0, 0x04D1, 0x0000, 0x0000 }, - { 0x10C4, 0x2D24, 0x0000, 0x0000 }, - { 0x1ECA, 0x1ECB, 0x0000, 0x0000 }, - { 0x1FCB, 0x1F75, 0x0000, 0x0000 }, - { 0xFF2B, 0xFF4B, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_213[] = { - { 0x00D5, 0x00F5, 0x0000, 0x0000 }, - { 0x03D6, 0x03C0, 0x0000, 0x0000 }, - { 0x10C5, 0x2D25, 0x0000, 0x0000 }, - { 0x1FCA, 0x1F74, 0x0000, 0x0000 }, - { 0xFF2A, 0xFF4A, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_214[] = { - { 0x00D6, 0x00F6, 0x0000, 0x0000 }, - { 0x01D7, 0x01D8, 0x0000, 0x0000 }, - { 0x03D5, 0x03C6, 0x0000, 0x0000 }, - { 0x04D2, 0x04D3, 0x0000, 0x0000 }, - { 0x1EC8, 0x1EC9, 0x0000, 0x0000 }, - { 0x1FC9, 0x1F73, 0x0000, 0x0000 }, - { 0xFF29, 0xFF49, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_215[] = { - { 0x1FC8, 0x1F72, 0x0000, 0x0000 }, - { 0xFF28, 0xFF48, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_216[] = { - { 0x00D8, 0x00F8, 0x0000, 0x0000 }, - { 0x01D9, 0x01DA, 0x0000, 0x0000 }, - { 0x04DC, 0x04DD, 0x0000, 0x0000 }, - { 0x1EC6, 0x1EC7, 0x0000, 0x0000 }, - { 0x1FC7, 0x03B7, 0x0342, 0x03B9 }, - { 0xFF27, 0xFF47, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_217[] = { - { 0x00D9, 0x00F9, 0x0000, 0x0000 }, - { 0x03DA, 0x03DB, 0x0000, 0x0000 }, - { 0x1FC6, 0x03B7, 0x0342, 0x0000 }, - { 0xFF26, 0xFF46, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_218[] = { - { 0x00DA, 0x00FA, 0x0000, 0x0000 }, - { 0x01DB, 0x01DC, 0x0000, 0x0000 }, - { 0x04DE, 0x04DF, 0x0000, 0x0000 }, - { 0x1EC4, 0x1EC5, 0x0000, 0x0000 }, - { 0xFF25, 0xFF45, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_219[] = { - { 0x00DB, 0x00FB, 0x0000, 0x0000 }, - { 0x03D8, 0x03D9, 0x0000, 0x0000 }, - { 0x1FC4, 0x03AE, 0x03B9, 0x0000 }, - { 0xFF24, 0xFF44, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_220[] = { - { 0x00DC, 0x00FC, 0x0000, 0x0000 }, - { 0x04D8, 0x04D9, 0x0000, 0x0000 }, - { 0x1EC2, 0x1EC3, 0x0000, 0x0000 }, - { 0x1FC3, 0x03B7, 0x03B9, 0x0000 }, - { 0xFF23, 0xFF43, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_221[] = { - { 0x00DD, 0x00FD, 0x0000, 0x0000 }, - { 0x03DE, 0x03DF, 0x0000, 0x0000 }, - { 0x1FC2, 0x1F74, 0x03B9, 0x0000 }, - { 0xFF22, 0xFF42, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_222[] = { - { 0x00DE, 0x00FE, 0x0000, 0x0000 }, - { 0x04DA, 0x04DB, 0x0000, 0x0000 }, - { 0x1EC0, 0x1EC1, 0x0000, 0x0000 }, - { 0xFF21, 0xFF41, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_223[] = { - { 0x00DF, 0x0073, 0x0073, 0x0000 }, - { 0x01DE, 0x01DF, 0x0000, 0x0000 }, - { 0x03DC, 0x03DD, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_224[] = { - { 0x04E4, 0x04E5, 0x0000, 0x0000 }, - { 0x24C4, 0x24DE, 0x0000, 0x0000 }, - { 0x2CCC, 0x2CCD, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_225[] = { - { 0x01E0, 0x01E1, 0x0000, 0x0000 }, - { 0x03E2, 0x03E3, 0x0000, 0x0000 }, - { 0x24C5, 0x24DF, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_226[] = { - { 0x04E6, 0x04E7, 0x0000, 0x0000 }, - { 0x24C6, 0x24E0, 0x0000, 0x0000 }, - { 0x2CCE, 0x2CCF, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_227[] = { - { 0x01E2, 0x01E3, 0x0000, 0x0000 }, - { 0x03E0, 0x03E1, 0x0000, 0x0000 }, - { 0x1FFC, 0x03C9, 0x03B9, 0x0000 }, - { 0x24C7, 0x24E1, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_228[] = { - { 0x04E0, 0x04E1, 0x0000, 0x0000 }, - { 0x1FFB, 0x1F7D, 0x0000, 0x0000 }, - { 0x24C0, 0x24DA, 0x0000, 0x0000 }, - { 0x2CC8, 0x2CC9, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_229[] = { - { 0x01E4, 0x01E5, 0x0000, 0x0000 }, - { 0x03E6, 0x03E7, 0x0000, 0x0000 }, - { 0x1FFA, 0x1F7C, 0x0000, 0x0000 }, - { 0x24C1, 0x24DB, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_230[] = { - { 0x04E2, 0x04E3, 0x0000, 0x0000 }, - { 0x1EF8, 0x1EF9, 0x0000, 0x0000 }, - { 0x1FF9, 0x1F79, 0x0000, 0x0000 }, - { 0x24C2, 0x24DC, 0x0000, 0x0000 }, - { 0x2CCA, 0x2CCB, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_231[] = { - { 0x01E6, 0x01E7, 0x0000, 0x0000 }, - { 0x03E4, 0x03E5, 0x0000, 0x0000 }, - { 0x1FF8, 0x1F78, 0x0000, 0x0000 }, - { 0x24C3, 0x24DD, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_232[] = { - { 0x04EC, 0x04ED, 0x0000, 0x0000 }, - { 0x1EF6, 0x1EF7, 0x0000, 0x0000 }, - { 0x1FF7, 0x03C9, 0x0342, 0x03B9 }, - { 0x24CC, 0x24E6, 0x0000, 0x0000 }, - { 0x2CC4, 0x2CC5, 0x0000, 0x0000 }, - { 0xFB13, 0x0574, 0x0576, 0x0000 } -}; - -static const CaseFoldMapping case_fold_233[] = { - { 0x01E8, 0x01E9, 0x0000, 0x0000 }, - { 0x03EA, 0x03EB, 0x0000, 0x0000 }, - { 0x1FF6, 0x03C9, 0x0342, 0x0000 }, - { 0x24CD, 0x24E7, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_234[] = { - { 0x04EE, 0x04EF, 0x0000, 0x0000 }, - { 0x1EF4, 0x1EF5, 0x0000, 0x0000 }, - { 0x24CE, 0x24E8, 0x0000, 0x0000 }, - { 0x2CC6, 0x2CC7, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_235[] = { - { 0x01EA, 0x01EB, 0x0000, 0x0000 }, - { 0x03E8, 0x03E9, 0x0000, 0x0000 }, - { 0x1FF4, 0x03CE, 0x03B9, 0x0000 }, - { 0x24CF, 0x24E9, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_236[] = { - { 0x04E8, 0x04E9, 0x0000, 0x0000 }, - { 0x1EF2, 0x1EF3, 0x0000, 0x0000 }, - { 0x1FF3, 0x03C9, 0x03B9, 0x0000 }, - { 0x24C8, 0x24E2, 0x0000, 0x0000 }, - { 0x2CC0, 0x2CC1, 0x0000, 0x0000 }, - { 0xFB17, 0x0574, 0x056D, 0x0000 } -}; - -static const CaseFoldMapping case_fold_237[] = { - { 0x01EC, 0x01ED, 0x0000, 0x0000 }, - { 0x03EE, 0x03EF, 0x0000, 0x0000 }, - { 0x1FF2, 0x1F7C, 0x03B9, 0x0000 }, - { 0x24C9, 0x24E3, 0x0000, 0x0000 }, - { 0xFB16, 0x057E, 0x0576, 0x0000 } -}; - -static const CaseFoldMapping case_fold_238[] = { - { 0x04EA, 0x04EB, 0x0000, 0x0000 }, - { 0x1EF0, 0x1EF1, 0x0000, 0x0000 }, - { 0x24CA, 0x24E4, 0x0000, 0x0000 }, - { 0x2CC2, 0x2CC3, 0x0000, 0x0000 }, - { 0xFB15, 0x0574, 0x056B, 0x0000 } -}; - -static const CaseFoldMapping case_fold_239[] = { - { 0x01EE, 0x01EF, 0x0000, 0x0000 }, - { 0x03EC, 0x03ED, 0x0000, 0x0000 }, - { 0x24CB, 0x24E5, 0x0000, 0x0000 }, - { 0xFB14, 0x0574, 0x0565, 0x0000 } -}; - -static const CaseFoldMapping case_fold_240[] = { - { 0x01F1, 0x01F3, 0x0000, 0x0000 }, - { 0x04F4, 0x04F5, 0x0000, 0x0000 }, - { 0x1EEE, 0x1EEF, 0x0000, 0x0000 }, - { 0x2CDC, 0x2CDD, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_241[] = { - { 0x01F0, 0x006A, 0x030C, 0x0000 } -}; - -static const CaseFoldMapping case_fold_242[] = { - { 0x03F1, 0x03C1, 0x0000, 0x0000 }, - { 0x04F6, 0x04F7, 0x0000, 0x0000 }, - { 0x1EEC, 0x1EED, 0x0000, 0x0000 }, - { 0x2CDE, 0x2CDF, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_243[] = { - { 0x01F2, 0x01F3, 0x0000, 0x0000 }, - { 0x03F0, 0x03BA, 0x0000, 0x0000 }, - { 0x1FEC, 0x1FE5, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_244[] = { - { 0x03F7, 0x03F8, 0x0000, 0x0000 }, - { 0x04F0, 0x04F1, 0x0000, 0x0000 }, - { 0x1EEA, 0x1EEB, 0x0000, 0x0000 }, - { 0x1FEB, 0x1F7B, 0x0000, 0x0000 }, - { 0x2CD8, 0x2CD9, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_245[] = { - { 0x01F4, 0x01F5, 0x0000, 0x0000 }, - { 0x1FEA, 0x1F7A, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_246[] = { - { 0x01F7, 0x01BF, 0x0000, 0x0000 }, - { 0x03F5, 0x03B5, 0x0000, 0x0000 }, - { 0x04F2, 0x04F3, 0x0000, 0x0000 }, - { 0x1EE8, 0x1EE9, 0x0000, 0x0000 }, - { 0x1FE9, 0x1FE1, 0x0000, 0x0000 }, - { 0x2CDA, 0x2CDB, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_247[] = { - { 0x01F6, 0x0195, 0x0000, 0x0000 }, - { 0x03F4, 0x03B8, 0x0000, 0x0000 }, - { 0x1FE8, 0x1FE0, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_248[] = { - { 0x1EE6, 0x1EE7, 0x0000, 0x0000 }, - { 0x1FE7, 0x03C5, 0x0308, 0x0342 }, - { 0x2CD4, 0x2CD5, 0x0000, 0x0000 }, - { 0xFB03, 0x0066, 0x0066, 0x0069 } -}; - -static const CaseFoldMapping case_fold_249[] = { - { 0x01F8, 0x01F9, 0x0000, 0x0000 }, - { 0x03FA, 0x03FB, 0x0000, 0x0000 }, - { 0x1FE6, 0x03C5, 0x0342, 0x0000 }, - { 0xFB02, 0x0066, 0x006C, 0x0000 } -}; - -static const CaseFoldMapping case_fold_250[] = { - { 0x03F9, 0x03F2, 0x0000, 0x0000 }, - { 0x1EE4, 0x1EE5, 0x0000, 0x0000 }, - { 0x2CD6, 0x2CD7, 0x0000, 0x0000 }, - { 0xFB01, 0x0066, 0x0069, 0x0000 } -}; - -static const CaseFoldMapping case_fold_251[] = { - { 0x01FA, 0x01FB, 0x0000, 0x0000 }, - { 0x1FE4, 0x03C1, 0x0313, 0x0000 }, - { 0xFB00, 0x0066, 0x0066, 0x0000 } -}; - -static const CaseFoldMapping case_fold_252[] = { - { 0x04F8, 0x04F9, 0x0000, 0x0000 }, - { 0x1EE2, 0x1EE3, 0x0000, 0x0000 }, - { 0x1FE3, 0x03C5, 0x0308, 0x0301 }, - { 0x2CD0, 0x2CD1, 0x0000, 0x0000 } -}; - -static const CaseFoldMapping case_fold_253[] = { - { 0x01FC, 0x01FD, 0x0000, 0x0000 }, - { 0x1FE2, 0x03C5, 0x0308, 0x0300 }, - { 0xFB06, 0x0073, 0x0074, 0x0000 } -}; - -static const CaseFoldMapping case_fold_254[] = { - { 0x1EE0, 0x1EE1, 0x0000, 0x0000 }, - { 0x2CD2, 0x2CD3, 0x0000, 0x0000 }, - { 0xFB05, 0x0073, 0x0074, 0x0000 } -}; - -static const CaseFoldMapping case_fold_255[] = { - { 0x01FE, 0x01FF, 0x0000, 0x0000 }, - { 0xFB04, 0x0066, 0x0066, 0x006C } -}; - - -static const CaseFoldHashBucket case_fold_hash[256] = { - { __PHYSFS_ARRAYLEN(case_fold_000), case_fold_000 }, - { __PHYSFS_ARRAYLEN(case_fold_001), case_fold_001 }, - { __PHYSFS_ARRAYLEN(case_fold_002), case_fold_002 }, - { __PHYSFS_ARRAYLEN(case_fold_003), case_fold_003 }, - { __PHYSFS_ARRAYLEN(case_fold_004), case_fold_004 }, - { __PHYSFS_ARRAYLEN(case_fold_005), case_fold_005 }, - { __PHYSFS_ARRAYLEN(case_fold_006), case_fold_006 }, - { __PHYSFS_ARRAYLEN(case_fold_007), case_fold_007 }, - { __PHYSFS_ARRAYLEN(case_fold_008), case_fold_008 }, - { __PHYSFS_ARRAYLEN(case_fold_009), case_fold_009 }, - { __PHYSFS_ARRAYLEN(case_fold_010), case_fold_010 }, - { __PHYSFS_ARRAYLEN(case_fold_011), case_fold_011 }, - { __PHYSFS_ARRAYLEN(case_fold_012), case_fold_012 }, - { __PHYSFS_ARRAYLEN(case_fold_013), case_fold_013 }, - { __PHYSFS_ARRAYLEN(case_fold_014), case_fold_014 }, - { __PHYSFS_ARRAYLEN(case_fold_015), case_fold_015 }, - { __PHYSFS_ARRAYLEN(case_fold_016), case_fold_016 }, - { __PHYSFS_ARRAYLEN(case_fold_017), case_fold_017 }, - { __PHYSFS_ARRAYLEN(case_fold_018), case_fold_018 }, - { __PHYSFS_ARRAYLEN(case_fold_019), case_fold_019 }, - { __PHYSFS_ARRAYLEN(case_fold_020), case_fold_020 }, - { __PHYSFS_ARRAYLEN(case_fold_021), case_fold_021 }, - { __PHYSFS_ARRAYLEN(case_fold_022), case_fold_022 }, - { __PHYSFS_ARRAYLEN(case_fold_023), case_fold_023 }, - { __PHYSFS_ARRAYLEN(case_fold_024), case_fold_024 }, - { __PHYSFS_ARRAYLEN(case_fold_025), case_fold_025 }, - { __PHYSFS_ARRAYLEN(case_fold_026), case_fold_026 }, - { __PHYSFS_ARRAYLEN(case_fold_027), case_fold_027 }, - { __PHYSFS_ARRAYLEN(case_fold_028), case_fold_028 }, - { __PHYSFS_ARRAYLEN(case_fold_029), case_fold_029 }, - { __PHYSFS_ARRAYLEN(case_fold_030), case_fold_030 }, - { __PHYSFS_ARRAYLEN(case_fold_031), case_fold_031 }, - { __PHYSFS_ARRAYLEN(case_fold_032), case_fold_032 }, - { __PHYSFS_ARRAYLEN(case_fold_033), case_fold_033 }, - { __PHYSFS_ARRAYLEN(case_fold_034), case_fold_034 }, - { __PHYSFS_ARRAYLEN(case_fold_035), case_fold_035 }, - { __PHYSFS_ARRAYLEN(case_fold_036), case_fold_036 }, - { __PHYSFS_ARRAYLEN(case_fold_037), case_fold_037 }, - { __PHYSFS_ARRAYLEN(case_fold_038), case_fold_038 }, - { __PHYSFS_ARRAYLEN(case_fold_039), case_fold_039 }, - { __PHYSFS_ARRAYLEN(case_fold_040), case_fold_040 }, - { __PHYSFS_ARRAYLEN(case_fold_041), case_fold_041 }, - { __PHYSFS_ARRAYLEN(case_fold_042), case_fold_042 }, - { __PHYSFS_ARRAYLEN(case_fold_043), case_fold_043 }, - { __PHYSFS_ARRAYLEN(case_fold_044), case_fold_044 }, - { __PHYSFS_ARRAYLEN(case_fold_045), case_fold_045 }, - { __PHYSFS_ARRAYLEN(case_fold_046), case_fold_046 }, - { __PHYSFS_ARRAYLEN(case_fold_047), case_fold_047 }, - { __PHYSFS_ARRAYLEN(case_fold_048), case_fold_048 }, - { __PHYSFS_ARRAYLEN(case_fold_049), case_fold_049 }, - { __PHYSFS_ARRAYLEN(case_fold_050), case_fold_050 }, - { __PHYSFS_ARRAYLEN(case_fold_051), case_fold_051 }, - { __PHYSFS_ARRAYLEN(case_fold_052), case_fold_052 }, - { __PHYSFS_ARRAYLEN(case_fold_053), case_fold_053 }, - { __PHYSFS_ARRAYLEN(case_fold_054), case_fold_054 }, - { __PHYSFS_ARRAYLEN(case_fold_055), case_fold_055 }, - { __PHYSFS_ARRAYLEN(case_fold_056), case_fold_056 }, - { __PHYSFS_ARRAYLEN(case_fold_057), case_fold_057 }, - { __PHYSFS_ARRAYLEN(case_fold_058), case_fold_058 }, - { __PHYSFS_ARRAYLEN(case_fold_059), case_fold_059 }, - { __PHYSFS_ARRAYLEN(case_fold_060), case_fold_060 }, - { __PHYSFS_ARRAYLEN(case_fold_061), case_fold_061 }, - { __PHYSFS_ARRAYLEN(case_fold_062), case_fold_062 }, - { __PHYSFS_ARRAYLEN(case_fold_063), case_fold_063 }, - { __PHYSFS_ARRAYLEN(case_fold_064), case_fold_064 }, - { __PHYSFS_ARRAYLEN(case_fold_065), case_fold_065 }, - { __PHYSFS_ARRAYLEN(case_fold_066), case_fold_066 }, - { __PHYSFS_ARRAYLEN(case_fold_067), case_fold_067 }, - { __PHYSFS_ARRAYLEN(case_fold_068), case_fold_068 }, - { __PHYSFS_ARRAYLEN(case_fold_069), case_fold_069 }, - { __PHYSFS_ARRAYLEN(case_fold_070), case_fold_070 }, - { __PHYSFS_ARRAYLEN(case_fold_071), case_fold_071 }, - { __PHYSFS_ARRAYLEN(case_fold_072), case_fold_072 }, - { __PHYSFS_ARRAYLEN(case_fold_073), case_fold_073 }, - { __PHYSFS_ARRAYLEN(case_fold_074), case_fold_074 }, - { __PHYSFS_ARRAYLEN(case_fold_075), case_fold_075 }, - { __PHYSFS_ARRAYLEN(case_fold_076), case_fold_076 }, - { __PHYSFS_ARRAYLEN(case_fold_077), case_fold_077 }, - { __PHYSFS_ARRAYLEN(case_fold_078), case_fold_078 }, - { __PHYSFS_ARRAYLEN(case_fold_079), case_fold_079 }, - { __PHYSFS_ARRAYLEN(case_fold_080), case_fold_080 }, - { __PHYSFS_ARRAYLEN(case_fold_081), case_fold_081 }, - { __PHYSFS_ARRAYLEN(case_fold_082), case_fold_082 }, - { __PHYSFS_ARRAYLEN(case_fold_083), case_fold_083 }, - { __PHYSFS_ARRAYLEN(case_fold_084), case_fold_084 }, - { __PHYSFS_ARRAYLEN(case_fold_085), case_fold_085 }, - { __PHYSFS_ARRAYLEN(case_fold_086), case_fold_086 }, - { __PHYSFS_ARRAYLEN(case_fold_087), case_fold_087 }, - { __PHYSFS_ARRAYLEN(case_fold_088), case_fold_088 }, - { __PHYSFS_ARRAYLEN(case_fold_089), case_fold_089 }, - { __PHYSFS_ARRAYLEN(case_fold_090), case_fold_090 }, - { __PHYSFS_ARRAYLEN(case_fold_091), case_fold_091 }, - { __PHYSFS_ARRAYLEN(case_fold_092), case_fold_092 }, - { __PHYSFS_ARRAYLEN(case_fold_093), case_fold_093 }, - { __PHYSFS_ARRAYLEN(case_fold_094), case_fold_094 }, - { __PHYSFS_ARRAYLEN(case_fold_095), case_fold_095 }, - { __PHYSFS_ARRAYLEN(case_fold_096), case_fold_096 }, - { __PHYSFS_ARRAYLEN(case_fold_097), case_fold_097 }, - { __PHYSFS_ARRAYLEN(case_fold_098), case_fold_098 }, - { __PHYSFS_ARRAYLEN(case_fold_099), case_fold_099 }, - { __PHYSFS_ARRAYLEN(case_fold_100), case_fold_100 }, - { __PHYSFS_ARRAYLEN(case_fold_101), case_fold_101 }, - { __PHYSFS_ARRAYLEN(case_fold_102), case_fold_102 }, - { __PHYSFS_ARRAYLEN(case_fold_103), case_fold_103 }, - { __PHYSFS_ARRAYLEN(case_fold_104), case_fold_104 }, - { __PHYSFS_ARRAYLEN(case_fold_105), case_fold_105 }, - { __PHYSFS_ARRAYLEN(case_fold_106), case_fold_106 }, - { __PHYSFS_ARRAYLEN(case_fold_107), case_fold_107 }, - { __PHYSFS_ARRAYLEN(case_fold_108), case_fold_108 }, - { __PHYSFS_ARRAYLEN(case_fold_109), case_fold_109 }, - { __PHYSFS_ARRAYLEN(case_fold_110), case_fold_110 }, - { __PHYSFS_ARRAYLEN(case_fold_111), case_fold_111 }, - { __PHYSFS_ARRAYLEN(case_fold_112), case_fold_112 }, - { __PHYSFS_ARRAYLEN(case_fold_113), case_fold_113 }, - { __PHYSFS_ARRAYLEN(case_fold_114), case_fold_114 }, - { __PHYSFS_ARRAYLEN(case_fold_115), case_fold_115 }, - { __PHYSFS_ARRAYLEN(case_fold_116), case_fold_116 }, - { __PHYSFS_ARRAYLEN(case_fold_117), case_fold_117 }, - { __PHYSFS_ARRAYLEN(case_fold_118), case_fold_118 }, - { __PHYSFS_ARRAYLEN(case_fold_119), case_fold_119 }, - { __PHYSFS_ARRAYLEN(case_fold_120), case_fold_120 }, - { __PHYSFS_ARRAYLEN(case_fold_121), case_fold_121 }, - { __PHYSFS_ARRAYLEN(case_fold_122), case_fold_122 }, - { 0, NULL }, - { __PHYSFS_ARRAYLEN(case_fold_124), case_fold_124 }, - { 0, NULL }, - { __PHYSFS_ARRAYLEN(case_fold_126), case_fold_126 }, - { 0, NULL }, - { __PHYSFS_ARRAYLEN(case_fold_128), case_fold_128 }, - { __PHYSFS_ARRAYLEN(case_fold_129), case_fold_129 }, - { __PHYSFS_ARRAYLEN(case_fold_130), case_fold_130 }, - { __PHYSFS_ARRAYLEN(case_fold_131), case_fold_131 }, - { __PHYSFS_ARRAYLEN(case_fold_132), case_fold_132 }, - { __PHYSFS_ARRAYLEN(case_fold_133), case_fold_133 }, - { __PHYSFS_ARRAYLEN(case_fold_134), case_fold_134 }, - { __PHYSFS_ARRAYLEN(case_fold_135), case_fold_135 }, - { __PHYSFS_ARRAYLEN(case_fold_136), case_fold_136 }, - { __PHYSFS_ARRAYLEN(case_fold_137), case_fold_137 }, - { __PHYSFS_ARRAYLEN(case_fold_138), case_fold_138 }, - { __PHYSFS_ARRAYLEN(case_fold_139), case_fold_139 }, - { __PHYSFS_ARRAYLEN(case_fold_140), case_fold_140 }, - { __PHYSFS_ARRAYLEN(case_fold_141), case_fold_141 }, - { __PHYSFS_ARRAYLEN(case_fold_142), case_fold_142 }, - { __PHYSFS_ARRAYLEN(case_fold_143), case_fold_143 }, - { __PHYSFS_ARRAYLEN(case_fold_144), case_fold_144 }, - { __PHYSFS_ARRAYLEN(case_fold_145), case_fold_145 }, - { __PHYSFS_ARRAYLEN(case_fold_146), case_fold_146 }, - { __PHYSFS_ARRAYLEN(case_fold_147), case_fold_147 }, - { __PHYSFS_ARRAYLEN(case_fold_148), case_fold_148 }, - { __PHYSFS_ARRAYLEN(case_fold_149), case_fold_149 }, - { __PHYSFS_ARRAYLEN(case_fold_150), case_fold_150 }, - { __PHYSFS_ARRAYLEN(case_fold_151), case_fold_151 }, - { __PHYSFS_ARRAYLEN(case_fold_152), case_fold_152 }, - { __PHYSFS_ARRAYLEN(case_fold_153), case_fold_153 }, - { __PHYSFS_ARRAYLEN(case_fold_154), case_fold_154 }, - { __PHYSFS_ARRAYLEN(case_fold_155), case_fold_155 }, - { __PHYSFS_ARRAYLEN(case_fold_156), case_fold_156 }, - { __PHYSFS_ARRAYLEN(case_fold_157), case_fold_157 }, - { __PHYSFS_ARRAYLEN(case_fold_158), case_fold_158 }, - { __PHYSFS_ARRAYLEN(case_fold_159), case_fold_159 }, - { __PHYSFS_ARRAYLEN(case_fold_160), case_fold_160 }, - { __PHYSFS_ARRAYLEN(case_fold_161), case_fold_161 }, - { __PHYSFS_ARRAYLEN(case_fold_162), case_fold_162 }, - { __PHYSFS_ARRAYLEN(case_fold_163), case_fold_163 }, - { __PHYSFS_ARRAYLEN(case_fold_164), case_fold_164 }, - { __PHYSFS_ARRAYLEN(case_fold_165), case_fold_165 }, - { __PHYSFS_ARRAYLEN(case_fold_166), case_fold_166 }, - { __PHYSFS_ARRAYLEN(case_fold_167), case_fold_167 }, - { __PHYSFS_ARRAYLEN(case_fold_168), case_fold_168 }, - { __PHYSFS_ARRAYLEN(case_fold_169), case_fold_169 }, - { __PHYSFS_ARRAYLEN(case_fold_170), case_fold_170 }, - { __PHYSFS_ARRAYLEN(case_fold_171), case_fold_171 }, - { __PHYSFS_ARRAYLEN(case_fold_172), case_fold_172 }, - { __PHYSFS_ARRAYLEN(case_fold_173), case_fold_173 }, - { __PHYSFS_ARRAYLEN(case_fold_174), case_fold_174 }, - { __PHYSFS_ARRAYLEN(case_fold_175), case_fold_175 }, - { __PHYSFS_ARRAYLEN(case_fold_176), case_fold_176 }, - { __PHYSFS_ARRAYLEN(case_fold_177), case_fold_177 }, - { __PHYSFS_ARRAYLEN(case_fold_178), case_fold_178 }, - { __PHYSFS_ARRAYLEN(case_fold_179), case_fold_179 }, - { __PHYSFS_ARRAYLEN(case_fold_180), case_fold_180 }, - { __PHYSFS_ARRAYLEN(case_fold_181), case_fold_181 }, - { __PHYSFS_ARRAYLEN(case_fold_182), case_fold_182 }, - { __PHYSFS_ARRAYLEN(case_fold_183), case_fold_183 }, - { __PHYSFS_ARRAYLEN(case_fold_184), case_fold_184 }, - { __PHYSFS_ARRAYLEN(case_fold_185), case_fold_185 }, - { __PHYSFS_ARRAYLEN(case_fold_186), case_fold_186 }, - { __PHYSFS_ARRAYLEN(case_fold_187), case_fold_187 }, - { __PHYSFS_ARRAYLEN(case_fold_188), case_fold_188 }, - { __PHYSFS_ARRAYLEN(case_fold_189), case_fold_189 }, - { __PHYSFS_ARRAYLEN(case_fold_190), case_fold_190 }, - { __PHYSFS_ARRAYLEN(case_fold_191), case_fold_191 }, - { __PHYSFS_ARRAYLEN(case_fold_192), case_fold_192 }, - { __PHYSFS_ARRAYLEN(case_fold_193), case_fold_193 }, - { __PHYSFS_ARRAYLEN(case_fold_194), case_fold_194 }, - { __PHYSFS_ARRAYLEN(case_fold_195), case_fold_195 }, - { __PHYSFS_ARRAYLEN(case_fold_196), case_fold_196 }, - { __PHYSFS_ARRAYLEN(case_fold_197), case_fold_197 }, - { __PHYSFS_ARRAYLEN(case_fold_198), case_fold_198 }, - { __PHYSFS_ARRAYLEN(case_fold_199), case_fold_199 }, - { __PHYSFS_ARRAYLEN(case_fold_200), case_fold_200 }, - { __PHYSFS_ARRAYLEN(case_fold_201), case_fold_201 }, - { __PHYSFS_ARRAYLEN(case_fold_202), case_fold_202 }, - { __PHYSFS_ARRAYLEN(case_fold_203), case_fold_203 }, - { __PHYSFS_ARRAYLEN(case_fold_204), case_fold_204 }, - { __PHYSFS_ARRAYLEN(case_fold_205), case_fold_205 }, - { __PHYSFS_ARRAYLEN(case_fold_206), case_fold_206 }, - { __PHYSFS_ARRAYLEN(case_fold_207), case_fold_207 }, - { __PHYSFS_ARRAYLEN(case_fold_208), case_fold_208 }, - { __PHYSFS_ARRAYLEN(case_fold_209), case_fold_209 }, - { __PHYSFS_ARRAYLEN(case_fold_210), case_fold_210 }, - { __PHYSFS_ARRAYLEN(case_fold_211), case_fold_211 }, - { __PHYSFS_ARRAYLEN(case_fold_212), case_fold_212 }, - { __PHYSFS_ARRAYLEN(case_fold_213), case_fold_213 }, - { __PHYSFS_ARRAYLEN(case_fold_214), case_fold_214 }, - { __PHYSFS_ARRAYLEN(case_fold_215), case_fold_215 }, - { __PHYSFS_ARRAYLEN(case_fold_216), case_fold_216 }, - { __PHYSFS_ARRAYLEN(case_fold_217), case_fold_217 }, - { __PHYSFS_ARRAYLEN(case_fold_218), case_fold_218 }, - { __PHYSFS_ARRAYLEN(case_fold_219), case_fold_219 }, - { __PHYSFS_ARRAYLEN(case_fold_220), case_fold_220 }, - { __PHYSFS_ARRAYLEN(case_fold_221), case_fold_221 }, - { __PHYSFS_ARRAYLEN(case_fold_222), case_fold_222 }, - { __PHYSFS_ARRAYLEN(case_fold_223), case_fold_223 }, - { __PHYSFS_ARRAYLEN(case_fold_224), case_fold_224 }, - { __PHYSFS_ARRAYLEN(case_fold_225), case_fold_225 }, - { __PHYSFS_ARRAYLEN(case_fold_226), case_fold_226 }, - { __PHYSFS_ARRAYLEN(case_fold_227), case_fold_227 }, - { __PHYSFS_ARRAYLEN(case_fold_228), case_fold_228 }, - { __PHYSFS_ARRAYLEN(case_fold_229), case_fold_229 }, - { __PHYSFS_ARRAYLEN(case_fold_230), case_fold_230 }, - { __PHYSFS_ARRAYLEN(case_fold_231), case_fold_231 }, - { __PHYSFS_ARRAYLEN(case_fold_232), case_fold_232 }, - { __PHYSFS_ARRAYLEN(case_fold_233), case_fold_233 }, - { __PHYSFS_ARRAYLEN(case_fold_234), case_fold_234 }, - { __PHYSFS_ARRAYLEN(case_fold_235), case_fold_235 }, - { __PHYSFS_ARRAYLEN(case_fold_236), case_fold_236 }, - { __PHYSFS_ARRAYLEN(case_fold_237), case_fold_237 }, - { __PHYSFS_ARRAYLEN(case_fold_238), case_fold_238 }, - { __PHYSFS_ARRAYLEN(case_fold_239), case_fold_239 }, - { __PHYSFS_ARRAYLEN(case_fold_240), case_fold_240 }, - { __PHYSFS_ARRAYLEN(case_fold_241), case_fold_241 }, - { __PHYSFS_ARRAYLEN(case_fold_242), case_fold_242 }, - { __PHYSFS_ARRAYLEN(case_fold_243), case_fold_243 }, - { __PHYSFS_ARRAYLEN(case_fold_244), case_fold_244 }, - { __PHYSFS_ARRAYLEN(case_fold_245), case_fold_245 }, - { __PHYSFS_ARRAYLEN(case_fold_246), case_fold_246 }, - { __PHYSFS_ARRAYLEN(case_fold_247), case_fold_247 }, - { __PHYSFS_ARRAYLEN(case_fold_248), case_fold_248 }, - { __PHYSFS_ARRAYLEN(case_fold_249), case_fold_249 }, - { __PHYSFS_ARRAYLEN(case_fold_250), case_fold_250 }, - { __PHYSFS_ARRAYLEN(case_fold_251), case_fold_251 }, - { __PHYSFS_ARRAYLEN(case_fold_252), case_fold_252 }, - { __PHYSFS_ARRAYLEN(case_fold_253), case_fold_253 }, - { __PHYSFS_ARRAYLEN(case_fold_254), case_fold_254 }, - { __PHYSFS_ARRAYLEN(case_fold_255), case_fold_255 }, -}; - diff --git a/Frameworks/physfs.framework/Versions/A/Headers/physfs_internal.h b/Frameworks/physfs.framework/Versions/A/Headers/physfs_internal.h deleted file mode 100644 index f9da66e1..00000000 --- a/Frameworks/physfs.framework/Versions/A/Headers/physfs_internal.h +++ /dev/null @@ -1,1779 +0,0 @@ -/* - * Internal function/structure declaration. Do NOT include in your - * application. - * - * Please see the file LICENSE.txt in the source's root directory. - * - * This file written by Ryan C. Gordon. - */ - -#ifndef _INCLUDE_PHYSFS_INTERNAL_H_ -#define _INCLUDE_PHYSFS_INTERNAL_H_ - -#ifndef __PHYSICSFS_INTERNAL__ -#error Do not include this header from your applications. -#endif - -#include "physfs.h" - -#include <stdlib.h> /* make sure NULL is defined... */ - -#ifdef HAVE_ASSERT_H -#include <assert.h> -#elif (!defined assert) -#define assert(x) -#endif - -/* !!! FIXME: remove this when revamping stack allocation code... */ -#ifdef _MSC_VER -#include <malloc.h> -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Interface for small allocations. If you need a little scratch space for - * a throwaway buffer or string, use this. It will make small allocations - * on the stack if possible, and use allocator.Malloc() if they are too - * large. This helps reduce malloc pressure. - * There are some rules, though: - * NEVER return a pointer from this, as stack-allocated buffers go away - * when your function returns. - * NEVER allocate in a loop, as stack-allocated pointers will pile up. Call - * a function that uses smallAlloc from your loop, so the allocation can - * free each time. - * NEVER call smallAlloc with any complex expression (it's a macro that WILL - * have side effects...it references the argument multiple times). Use a - * variable or a literal. - * NEVER free a pointer from this with anything but smallFree. It will not - * be a valid pointer to the allocator, regardless of where the memory came - * from. - * NEVER realloc a pointer from this. - * NEVER forget to use smallFree: it may not be a pointer from the stack. - * NEVER forget to check for NULL...allocation can fail here, of course! - */ -#define __PHYSFS_SMALLALLOCTHRESHOLD 128 -void *__PHYSFS_initSmallAlloc(void *ptr, PHYSFS_uint64 len); - -#define __PHYSFS_smallAlloc(bytes) ( \ - __PHYSFS_initSmallAlloc((((bytes) < __PHYSFS_SMALLALLOCTHRESHOLD) ? \ - alloca((size_t)((bytes)+1)) : NULL), (bytes)) \ -) - -void __PHYSFS_smallFree(void *ptr); - - -/* Use the allocation hooks. */ -#define malloc(x) Do not use malloc() directly. -#define realloc(x, y) Do not use realloc() directly. -#define free(x) Do not use free() directly. -/* !!! FIXME: add alloca check here. */ - -/* The LANG section. */ -/* please send questions/translations to Ryan: icculus@icculus.org. */ - -#if (!defined PHYSFS_LANG) -# define PHYSFS_LANG PHYSFS_LANG_ENGLISH -#endif - -#define PHYSFS_LANG_ENGLISH 1 /* English by Ryan C. Gordon */ -#define PHYSFS_LANG_RUSSIAN_KOI8_R 2 /* Russian by Ed Sinjiashvili */ -#define PHYSFS_LANG_RUSSIAN_CP1251 3 /* Russian by Ed Sinjiashvili */ -#define PHYSFS_LANG_RUSSIAN_CP866 4 /* Russian by Ed Sinjiashvili */ -#define PHYSFS_LANG_RUSSIAN_ISO_8859_5 5 /* Russian by Ed Sinjiashvili */ -#define PHYSFS_LANG_SPANISH 6 /* Spanish by Pedro J. Pérez */ -#define PHYSFS_LANG_FRENCH 7 /* French by Stéphane Peter */ -#define PHYSFS_LANG_GERMAN 8 /* German by Michael Renner */ -#define PHYSFS_LANG_PORTUGUESE_BR 9 /* pt-br by Danny Angelo Carminati Grein */ - -#if (PHYSFS_LANG == PHYSFS_LANG_ENGLISH) - #define DIR_ARCHIVE_DESCRIPTION "Non-archive, direct filesystem I/O" - #define GRP_ARCHIVE_DESCRIPTION "Build engine Groupfile format" - #define HOG_ARCHIVE_DESCRIPTION "Descent I/II HOG file format" - #define MVL_ARCHIVE_DESCRIPTION "Descent II Movielib format" - #define QPAK_ARCHIVE_DESCRIPTION "Quake I/II format" - #define ZIP_ARCHIVE_DESCRIPTION "PkZip/WinZip/Info-Zip compatible" - #define WAD_ARCHIVE_DESCRIPTION "DOOM engine format" - #define LZMA_ARCHIVE_DESCRIPTION "LZMA (7zip) format" - - #define ERR_IS_INITIALIZED "Already initialized" - #define ERR_NOT_INITIALIZED "Not initialized" - #define ERR_INVALID_ARGUMENT "Invalid argument" - #define ERR_FILES_STILL_OPEN "Files still open" - #define ERR_NO_DIR_CREATE "Failed to create directories" - #define ERR_OUT_OF_MEMORY "Out of memory" - #define ERR_NOT_IN_SEARCH_PATH "No such entry in search path" - #define ERR_NOT_SUPPORTED "Operation not supported" - #define ERR_UNSUPPORTED_ARCHIVE "Archive type unsupported" - #define ERR_NOT_A_HANDLE "Not a file handle" - #define ERR_INSECURE_FNAME "Insecure filename" - #define ERR_SYMLINK_DISALLOWED "Symbolic links are disabled" - #define ERR_NO_WRITE_DIR "Write directory is not set" - #define ERR_NO_SUCH_FILE "File not found" - #define ERR_NO_SUCH_PATH "Path not found" - #define ERR_NO_SUCH_VOLUME "Volume not found" - #define ERR_PAST_EOF "Past end of file" - #define ERR_ARC_IS_READ_ONLY "Archive is read-only" - #define ERR_IO_ERROR "I/O error" - #define ERR_CANT_SET_WRITE_DIR "Can't set write directory" - #define ERR_SYMLINK_LOOP "Infinite symbolic link loop" - #define ERR_COMPRESSION "(De)compression error" - #define ERR_NOT_IMPLEMENTED "Not implemented" - #define ERR_OS_ERROR "Operating system reported error" - #define ERR_FILE_EXISTS "File already exists" - #define ERR_NOT_A_FILE "Not a file" - #define ERR_NOT_A_DIR "Not a directory" - #define ERR_NOT_AN_ARCHIVE "Not an archive" - #define ERR_CORRUPTED "Corrupted archive" - #define ERR_SEEK_OUT_OF_RANGE "Seek out of range" - #define ERR_BAD_FILENAME "Bad filename" - #define ERR_PHYSFS_BAD_OS_CALL "(BUG) PhysicsFS made a bad system call" - #define ERR_ARGV0_IS_NULL "argv0 is NULL" - #define ERR_NEED_DICT "need dictionary" - #define ERR_DATA_ERROR "data error" - #define ERR_MEMORY_ERROR "memory error" - #define ERR_BUFFER_ERROR "buffer error" - #define ERR_VERSION_ERROR "version error" - #define ERR_UNKNOWN_ERROR "unknown error" - #define ERR_SEARCHPATH_TRUNC "Search path was truncated" - #define ERR_GETMODFN_TRUNC "GetModuleFileName() was truncated" - #define ERR_GETMODFN_NO_DIR "GetModuleFileName() had no dir" - #define ERR_DISK_FULL "Disk is full" - #define ERR_DIRECTORY_FULL "Directory full" - #define ERR_MACOS_GENERIC "MacOS reported error (%d)" - #define ERR_OS2_GENERIC "OS/2 reported error (%d)" - #define ERR_VOL_LOCKED_HW "Volume is locked through hardware" - #define ERR_VOL_LOCKED_SW "Volume is locked through software" - #define ERR_FILE_LOCKED "File is locked" - #define ERR_FILE_OR_DIR_BUSY "File/directory is busy" - #define ERR_FILE_ALREADY_OPEN_W "File already open for writing" - #define ERR_FILE_ALREADY_OPEN_R "File already open for reading" - #define ERR_INVALID_REFNUM "Invalid reference number" - #define ERR_GETTING_FILE_POS "Error getting file position" - #define ERR_VOLUME_OFFLINE "Volume is offline" - #define ERR_PERMISSION_DENIED "Permission denied" - #define ERR_VOL_ALREADY_ONLINE "Volume already online" - #define ERR_NO_SUCH_DRIVE "No such drive" - #define ERR_NOT_MAC_DISK "Not a Macintosh disk" - #define ERR_VOL_EXTERNAL_FS "Volume belongs to an external filesystem" - #define ERR_PROBLEM_RENAME "Problem during rename" - #define ERR_BAD_MASTER_BLOCK "Bad master directory block" - #define ERR_CANT_MOVE_FORBIDDEN "Attempt to move forbidden" - #define ERR_WRONG_VOL_TYPE "Wrong volume type" - #define ERR_SERVER_VOL_LOST "Server volume has been disconnected" - #define ERR_FILE_ID_NOT_FOUND "File ID not found" - #define ERR_FILE_ID_EXISTS "File ID already exists" - #define ERR_SERVER_NO_RESPOND "Server not responding" - #define ERR_USER_AUTH_FAILED "User authentication failed" - #define ERR_PWORD_EXPIRED "Password has expired on server" - #define ERR_ACCESS_DENIED "Access denied" - #define ERR_NOT_A_DOS_DISK "Not a DOS disk" - #define ERR_SHARING_VIOLATION "Sharing violation" - #define ERR_CANNOT_MAKE "Cannot make" - #define ERR_DEV_IN_USE "Device already in use" - #define ERR_OPEN_FAILED "Open failed" - #define ERR_PIPE_BUSY "Pipe is busy" - #define ERR_SHARING_BUF_EXCEEDED "Sharing buffer exceeded" - #define ERR_TOO_MANY_HANDLES "Too many open handles" - #define ERR_SEEK_ERROR "Seek error" - #define ERR_DEL_CWD "Trying to delete current working directory" - #define ERR_WRITE_PROTECT_ERROR "Write protect error" - #define ERR_WRITE_FAULT "Write fault" - #define ERR_LOCK_VIOLATION "Lock violation" - #define ERR_GEN_FAILURE "General failure" - #define ERR_UNCERTAIN_MEDIA "Uncertain media" - #define ERR_PROT_VIOLATION "Protection violation" - #define ERR_BROKEN_PIPE "Broken pipe" - -#elif (PHYSFS_LANG == PHYSFS_LANG_GERMAN) - #define DIR_ARCHIVE_DESCRIPTION "Kein Archiv, direkte Ein/Ausgabe in das Dateisystem" - #define GRP_ARCHIVE_DESCRIPTION "Build engine Groupfile format" - #define HOG_ARCHIVE_DESCRIPTION "Descent I/II HOG file format" - #define MVL_ARCHIVE_DESCRIPTION "Descent II Movielib format" - #define QPAK_ARCHIVE_DESCRIPTION "Quake I/II format" - #define ZIP_ARCHIVE_DESCRIPTION "PkZip/WinZip/Info-Zip kompatibel" - #define WAD_ARCHIVE_DESCRIPTION "DOOM engine format" /* !!! FIXME: translate this line if needed */ - #define LZMA_ARCHIVE_DESCRIPTION "LZMA (7zip) format" /* !!! FIXME: translate this line if needed */ - - #define ERR_IS_INITIALIZED "Bereits initialisiert" - #define ERR_NOT_INITIALIZED "Nicht initialisiert" - #define ERR_INVALID_ARGUMENT "Ungültiges Argument" - #define ERR_FILES_STILL_OPEN "Dateien noch immer geöffnet" - #define ERR_NO_DIR_CREATE "Fehler beim Erzeugen der Verzeichnisse" - #define ERR_OUT_OF_MEMORY "Kein Speicher mehr frei" - #define ERR_NOT_IN_SEARCH_PATH "Eintrag nicht im Suchpfad enthalten" - #define ERR_NOT_SUPPORTED "Befehl nicht unterstützt" - #define ERR_UNSUPPORTED_ARCHIVE "Archiv-Typ nicht unterstützt" - #define ERR_NOT_A_HANDLE "Ist kein Dateideskriptor" - #define ERR_INSECURE_FNAME "Unsicherer Dateiname" - #define ERR_SYMLINK_DISALLOWED "Symbolische Verweise deaktiviert" - #define ERR_NO_WRITE_DIR "Schreibverzeichnis ist nicht gesetzt" - #define ERR_NO_SUCH_FILE "Datei nicht gefunden" - #define ERR_NO_SUCH_PATH "Pfad nicht gefunden" - #define ERR_NO_SUCH_VOLUME "Datencontainer nicht gefunden" - #define ERR_PAST_EOF "Hinter dem Ende der Datei" - #define ERR_ARC_IS_READ_ONLY "Archiv ist schreibgeschützt" - #define ERR_IO_ERROR "Ein/Ausgabe Fehler" - #define ERR_CANT_SET_WRITE_DIR "Kann Schreibverzeichnis nicht setzen" - #define ERR_SYMLINK_LOOP "Endlosschleife durch symbolische Verweise" - #define ERR_COMPRESSION "(De)Kompressionsfehler" - #define ERR_NOT_IMPLEMENTED "Nicht implementiert" - #define ERR_OS_ERROR "Betriebssystem meldete Fehler" - #define ERR_FILE_EXISTS "Datei existiert bereits" - #define ERR_NOT_A_FILE "Ist keine Datei" - #define ERR_NOT_A_DIR "Ist kein Verzeichnis" - #define ERR_NOT_AN_ARCHIVE "Ist kein Archiv" - #define ERR_CORRUPTED "Beschädigtes Archiv" - #define ERR_SEEK_OUT_OF_RANGE "Suche war ausserhalb der Reichweite" - #define ERR_BAD_FILENAME "Unzulässiger Dateiname" - #define ERR_PHYSFS_BAD_OS_CALL "(BUG) PhysicsFS verursachte einen ungültigen Systemaufruf" - #define ERR_ARGV0_IS_NULL "argv0 ist NULL" - #define ERR_NEED_DICT "brauche Wörterbuch" - #define ERR_DATA_ERROR "Datenfehler" - #define ERR_MEMORY_ERROR "Speicherfehler" - #define ERR_BUFFER_ERROR "Bufferfehler" - #define ERR_VERSION_ERROR "Versionskonflikt" - #define ERR_UNKNOWN_ERROR "Unbekannter Fehler" - #define ERR_SEARCHPATH_TRUNC "Suchpfad war abgeschnitten" - #define ERR_GETMODFN_TRUNC "GetModuleFileName() war abgeschnitten" - #define ERR_GETMODFN_NO_DIR "GetModuleFileName() bekam kein Verzeichnis" - #define ERR_DISK_FULL "Laufwerk ist voll" - #define ERR_DIRECTORY_FULL "Verzeichnis ist voll" - #define ERR_MACOS_GENERIC "MacOS meldete Fehler (%d)" - #define ERR_OS2_GENERIC "OS/2 meldete Fehler (%d)" - #define ERR_VOL_LOCKED_HW "Datencontainer ist durch Hardware gesperrt" - #define ERR_VOL_LOCKED_SW "Datencontainer ist durch Software gesperrt" - #define ERR_FILE_LOCKED "Datei ist gesperrt" - #define ERR_FILE_OR_DIR_BUSY "Datei/Verzeichnis ist beschäftigt" - #define ERR_FILE_ALREADY_OPEN_W "Datei schon im Schreibmodus geöffnet" - #define ERR_FILE_ALREADY_OPEN_R "Datei schon im Lesemodus geöffnet" - #define ERR_INVALID_REFNUM "Ungültige Referenznummer" - #define ERR_GETTING_FILE_POS "Fehler beim Finden der Dateiposition" - #define ERR_VOLUME_OFFLINE "Datencontainer ist offline" - #define ERR_PERMISSION_DENIED "Zugriff verweigert" - #define ERR_VOL_ALREADY_ONLINE "Datencontainer ist bereits online" - #define ERR_NO_SUCH_DRIVE "Laufwerk nicht vorhanden" - #define ERR_NOT_MAC_DISK "Ist kein Macintosh Laufwerk" - #define ERR_VOL_EXTERNAL_FS "Datencontainer liegt auf einem externen Dateisystem" - #define ERR_PROBLEM_RENAME "Fehler beim Umbenennen" - #define ERR_BAD_MASTER_BLOCK "Beschädigter Hauptverzeichnisblock" - #define ERR_CANT_MOVE_FORBIDDEN "Verschieben nicht erlaubt" - #define ERR_WRONG_VOL_TYPE "Falscher Datencontainer-Typ" - #define ERR_SERVER_VOL_LOST "Datencontainer am Server wurde getrennt" - #define ERR_FILE_ID_NOT_FOUND "Dateikennung nicht gefunden" - #define ERR_FILE_ID_EXISTS "Dateikennung existiert bereits" - #define ERR_SERVER_NO_RESPOND "Server antwortet nicht" - #define ERR_USER_AUTH_FAILED "Benutzerauthentifizierung fehlgeschlagen" - #define ERR_PWORD_EXPIRED "Passwort am Server ist abgelaufen" - #define ERR_ACCESS_DENIED "Zugriff verweigert" - #define ERR_NOT_A_DOS_DISK "Ist kein DOS-Laufwerk" - #define ERR_SHARING_VIOLATION "Zugriffsverletzung" - #define ERR_CANNOT_MAKE "Kann nicht erzeugen" - #define ERR_DEV_IN_USE "Gerät wird bereits benutzt" - #define ERR_OPEN_FAILED "Öffnen fehlgeschlagen" - #define ERR_PIPE_BUSY "Pipeverbindung ist belegt" - #define ERR_SHARING_BUF_EXCEEDED "Zugriffsbuffer überschritten" - #define ERR_TOO_MANY_HANDLES "Zu viele offene Dateien" - #define ERR_SEEK_ERROR "Fehler beim Suchen" - #define ERR_DEL_CWD "Aktuelles Arbeitsverzeichnis darf nicht gelöscht werden" - #define ERR_WRITE_PROTECT_ERROR "Schreibschutzfehler" - #define ERR_WRITE_FAULT "Schreibfehler" - #define ERR_LOCK_VIOLATION "Sperrverletzung" - #define ERR_GEN_FAILURE "Allgemeiner Fehler" - #define ERR_UNCERTAIN_MEDIA "Unsicheres Medium" - #define ERR_PROT_VIOLATION "Schutzverletzung" - #define ERR_BROKEN_PIPE "Pipeverbindung unterbrochen" - -#elif (PHYSFS_LANG == PHYSFS_LANG_RUSSIAN_KOI8_R) - #define DIR_ARCHIVE_DESCRIPTION "îÅ ÁÒÈÉ×, ÎÅÐÏÓÒÅÄÓÔ×ÅÎÎÙÊ ××ÏÄ/×Ù×ÏÄ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÙ" - #define GRP_ARCHIVE_DESCRIPTION "æÏÒÍÁÔ ÇÒÕÐÐÏ×ÏÇÏ ÆÁÊÌÁ Build engine" - #define HOG_ARCHIVE_DESCRIPTION "Descent I/II HOG file format" - #define MVL_ARCHIVE_DESCRIPTION "Descent II Movielib format" - #define ZIP_ARCHIVE_DESCRIPTION "PkZip/WinZip/Info-Zip ÓÏ×ÍÅÓÔÉÍÙÊ" - #define WAD_ARCHIVE_DESCRIPTION "DOOM engine format" /* !!! FIXME: translate this line if needed */ - #define LZMA_ARCHIVE_DESCRIPTION "LZMA (7zip) format" /* !!! FIXME: translate this line if needed */ - - #define ERR_IS_INITIALIZED "õÖÅ ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÎ" - #define ERR_NOT_INITIALIZED "îÅ ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÎ" - #define ERR_INVALID_ARGUMENT "îÅ×ÅÒÎÙÊ ÁÒÇÕÍÅÎÔ" - #define ERR_FILES_STILL_OPEN "æÁÊÌÙ ÅÝÅ ÏÔËÒÙÔÙ" - #define ERR_NO_DIR_CREATE "îÅ ÍÏÇÕ ÓÏÚÄÁÔØ ËÁÔÁÌÏÇÉ" - #define ERR_OUT_OF_MEMORY "ëÏÎÞÉÌÁÓØ ÐÁÍÑÔØ" - #define ERR_NOT_IN_SEARCH_PATH "îÅÔ ÔÁËÏÇÏ ÜÌÅÍÅÎÔÁ × ÐÕÔÉ ÐÏÉÓËÁ" - #define ERR_NOT_SUPPORTED "ïÐÅÒÁÃÉÑ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ" - #define ERR_UNSUPPORTED_ARCHIVE "áÒÈÉ×Ù ÔÁËÏÇÏ ÔÉÐÁ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÀÔÓÑ" - #define ERR_NOT_A_HANDLE "îÅ ÆÁÊÌÏ×ÙÊ ÄÅÓËÒÉÐÔÏÒ" - #define ERR_INSECURE_FNAME "îÅÂÅÚÏÐÁÓÎÏÅ ÉÍÑ ÆÁÊÌÁ" - #define ERR_SYMLINK_DISALLOWED "óÉÍ×ÏÌØÎÙÅ ÓÓÙÌËÉ ÏÔËÌÀÞÅÎÙ" - #define ERR_NO_WRITE_DIR "ëÁÔÁÌÏÇ ÄÌÑ ÚÁÐÉÓÉ ÎÅ ÕÓÔÁÎÏ×ÌÅÎ" - #define ERR_NO_SUCH_FILE "æÁÊÌ ÎÅ ÎÁÊÄÅÎ" - #define ERR_NO_SUCH_PATH "ðÕÔØ ÎÅ ÎÁÊÄÅÎ" - #define ERR_NO_SUCH_VOLUME "ôÏÍ ÎÅ ÎÁÊÄÅÎ" - #define ERR_PAST_EOF "úÁ ËÏÎÃÏÍ ÆÁÊÌÁ" - #define ERR_ARC_IS_READ_ONLY "áÒÈÉ× ÔÏÌØËÏ ÄÌÑ ÞÔÅÎÉÑ" - #define ERR_IO_ERROR "ïÛÉÂËÁ ××ÏÄÁ/×Ù×ÏÄÁ" - #define ERR_CANT_SET_WRITE_DIR "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ËÁÔÁÌÏÇ ÄÌÑ ÚÁÐÉÓÉ" - #define ERR_SYMLINK_LOOP "âÅÓËÏÎÅÞÎÙÊ ÃÉËÌ ÓÉÍ×ÏÌØÎÏÊ ÓÓÙÌËÉ" - #define ERR_COMPRESSION "ïÛÉÂËÁ (òÁÓ)ÐÁËÏ×ËÉ" - #define ERR_NOT_IMPLEMENTED "îÅ ÒÅÁÌÉÚÏ×ÁÎÏ" - #define ERR_OS_ERROR "ïÐÅÒÁÃÉÏÎÎÁÑ ÓÉÓÔÅÍÁ ÓÏÏÂÝÉÌÁ ÏÛÉÂËÕ" - #define ERR_FILE_EXISTS "æÁÊÌ ÕÖÅ ÓÕÝÅÓÔ×ÕÅÔ" - #define ERR_NOT_A_FILE "îÅ ÆÁÊÌ" - #define ERR_NOT_A_DIR "îÅ ËÁÔÁÌÏÇ" - #define ERR_NOT_AN_ARCHIVE "îÅ ÁÒÈÉ×" - #define ERR_CORRUPTED "ðÏ×ÒÅÖÄÅÎÎÙÊ ÁÒÈÉ×" - #define ERR_SEEK_OUT_OF_RANGE "ðÏÚÉÃÉÏÎÉÒÏ×ÁÎÉÅ ÚÁ ÐÒÅÄÅÌÙ" - #define ERR_BAD_FILENAME "îÅ×ÅÒÎÏÅ ÉÍÑ ÆÁÊÌÁ" - #define ERR_PHYSFS_BAD_OS_CALL "(BUG) PhysicsFS ×ÙÐÏÌÎÉÌÁ ÎÅ×ÅÒÎÙÊ ÓÉÓÔÅÍÎÙÊ ×ÙÚÏ×" - #define ERR_ARGV0_IS_NULL "argv0 is NULL" - #define ERR_NEED_DICT "ÎÕÖÅÎ ÓÌÏ×ÁÒØ" - #define ERR_DATA_ERROR "ÏÛÉÂËÁ ÄÁÎÎÙÈ" - #define ERR_MEMORY_ERROR "ÏÛÉÂËÁ ÐÁÍÑÔÉ" - #define ERR_BUFFER_ERROR "ÏÛÉÂËÁ ÂÕÆÅÒÁ" - #define ERR_VERSION_ERROR "ÏÛÉÂËÁ ×ÅÒÓÉÉ" - #define ERR_UNKNOWN_ERROR "ÎÅÉÚ×ÅÓÔÎÁÑ ÏÛÉÂËÁ" - #define ERR_SEARCHPATH_TRUNC "ðÕÔØ ÐÏÉÓËÁ ÏÂÒÅÚÁÎ" - #define ERR_GETMODFN_TRUNC "GetModuleFileName() ÏÂÒÅÚÁÎ" - #define ERR_GETMODFN_NO_DIR "GetModuleFileName() ÎÅ ÐÏÌÕÞÉÌ ËÁÔÁÌÏÇ" - #define ERR_DISK_FULL "äÉÓË ÐÏÌÏÎ" - #define ERR_DIRECTORY_FULL "ëÁÔÁÌÏÇ ÐÏÌÏÎ" - #define ERR_MACOS_GENERIC "MacOS ÓÏÏÂÝÉÌÁ ÏÛÉÂËÕ (%d)" - #define ERR_OS2_GENERIC "OS/2 ÓÏÏÂÝÉÌÁ ÏÛÉÂËÕ (%d)" - #define ERR_VOL_LOCKED_HW "ôÏÍ ÂÌÏËÉÒÏ×ÁÎ ÁÐÐÁÒÁÔÎÏ" - #define ERR_VOL_LOCKED_SW "ôÏÍ ÂÌÏËÉÒÏ×ÁÎ ÐÒÏÇÒÁÍÍÎÏ" - #define ERR_FILE_LOCKED "æÁÊÌ ÚÁÂÌÏËÉÒÏ×ÁÎ" - #define ERR_FILE_OR_DIR_BUSY "æÁÊÌ/ËÁÔÁÌÏÇ ÚÁÎÑÔ" - #define ERR_FILE_ALREADY_OPEN_W "æÁÊÌ ÕÖÅ ÏÔËÒÙÔ ÎÁ ÚÁÐÉÓØ" - #define ERR_FILE_ALREADY_OPEN_R "æÁÊÌ ÕÖÅ ÏÔËÒÙÔ ÎÁ ÞÔÅÎÉÅ" - #define ERR_INVALID_REFNUM "îÅ×ÅÒÎÏÅ ËÏÌÉÞÅÓÔ×Ï ÓÓÙÌÏË" - #define ERR_GETTING_FILE_POS "ïÛÉÂËÁ ÐÒÉ ÐÏÌÕÞÅÎÉÉ ÐÏÚÉÃÉÉ ÆÁÊÌÁ" - #define ERR_VOLUME_OFFLINE "ôÏÍ ÏÔÓÏÅÄÉÎÅÎ" - #define ERR_PERMISSION_DENIED "ïÔËÁÚÁÎÏ × ÒÁÚÒÅÛÅÎÉÉ" - #define ERR_VOL_ALREADY_ONLINE "ôÏÍ ÕÖÅ ÐÏÄÓÏÅÄÉÎÅÎ" - #define ERR_NO_SUCH_DRIVE "îÅÔ ÔÁËÏÇÏ ÄÉÓËÁ" - #define ERR_NOT_MAC_DISK "îÅ ÄÉÓË Macintosh" - #define ERR_VOL_EXTERNAL_FS "ôÏÍ ÐÒÉÎÁÄÌÅÖÉÔ ×ÎÅÛÎÅÊ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÅ" - #define ERR_PROBLEM_RENAME "ðÒÏÂÌÅÍÁ ÐÒÉ ÐÅÒÅÉÍÅÎÏ×ÁÎÉÉ" - #define ERR_BAD_MASTER_BLOCK "ðÌÏÈÏÊ ÇÌÁ×ÎÙÊ ÂÌÏË ËÁÔÁÌÏÇÁ" - #define ERR_CANT_MOVE_FORBIDDEN "ðÏÐÙÔËÁ ÐÅÒÅÍÅÓÔÉÔØ ÚÁÐÒÅÝÅÎÁ" - #define ERR_WRONG_VOL_TYPE "îÅ×ÅÒÎÙÊ ÔÉÐ ÔÏÍÁ" - #define ERR_SERVER_VOL_LOST "óÅÒ×ÅÒÎÙÊ ÔÏÍ ÂÙÌ ÏÔÓÏÅÄÉÎÅÎ" - #define ERR_FILE_ID_NOT_FOUND "éÄÅÎÔÉÆÉËÁÔÏÒ ÆÁÊÌÁ ÎÅ ÎÁÊÄÅÎ" - #define ERR_FILE_ID_EXISTS "éÄÅÎÔÉÆÉËÁÔÏÒ ÆÁÊÌÁ ÕÖÅ ÓÕÝÅÓÔ×ÕÅÔ" - #define ERR_SERVER_NO_RESPOND "óÅÒ×ÅÒ ÎÅ ÏÔ×ÅÞÁÅÔ" - #define ERR_USER_AUTH_FAILED "éÄÅÎÔÉÆÉËÁÃÉÑ ÐÏÌØÚÏ×ÁÔÅÌÑ ÎÅ ÕÄÁÌÁÓØ" - #define ERR_PWORD_EXPIRED "ðÁÒÏÌØ ÎÁ ÓÅÒ×ÅÒÅ ÕÓÔÁÒÅÌ" - #define ERR_ACCESS_DENIED "ïÔËÁÚÁÎÏ × ÄÏÓÔÕÐÅ" - #define ERR_NOT_A_DOS_DISK "îÅ ÄÉÓË DOS" - #define ERR_SHARING_VIOLATION "îÁÒÕÛÅÎÉÅ ÓÏ×ÍÅÓÔÎÏÇÏ ÄÏÓÔÕÐÁ" - #define ERR_CANNOT_MAKE "îÅ ÍÏÇÕ ÓÏÂÒÁÔØ" - #define ERR_DEV_IN_USE "õÓÔÒÏÊÓÔ×Ï ÕÖÅ ÉÓÐÏÌØÚÕÅÔÓÑ" - #define ERR_OPEN_FAILED "ïÔËÒÙÔÉÅ ÎÅ ÕÄÁÌÏÓØ" - #define ERR_PIPE_BUSY "ëÏÎ×ÅÊÅÒ ÚÁÎÑÔ" - #define ERR_SHARING_BUF_EXCEEDED "òÁÚÄÅÌÑÅÍÙÊ ÂÕÆÅÒ ÐÅÒÅÐÏÌÎÅÎ" - #define ERR_TOO_MANY_HANDLES "óÌÉÛËÏÍ ÍÎÏÇÏ ÏÔËÒÙÔÙÈ ÄÅÓËÒÉÐÔÏÒÏ×" - #define ERR_SEEK_ERROR "ïÛÉÂËÁ ÐÏÚÉÃÉÏÎÉÒÏ×ÁÎÉÑ" - #define ERR_DEL_CWD "ðÏÐÙÔËÁ ÕÄÁÌÉÔØ ÔÅËÕÝÉÊ ÒÁÂÏÞÉÊ ËÁÔÁÌÏÇ" - #define ERR_WRITE_PROTECT_ERROR "ïÛÉÂËÁ ÚÁÝÉÔÙ ÚÁÐÉÓÉ" - #define ERR_WRITE_FAULT "ïÛÉÂËÁ ÚÁÐÉÓÉ" - #define ERR_LOCK_VIOLATION "îÁÒÕÛÅÎÉÅ ÂÌÏËÉÒÏ×ËÉ" - #define ERR_GEN_FAILURE "ïÂÝÉÊ ÓÂÏÊ" - #define ERR_UNCERTAIN_MEDIA "îÅÏÐÒÅÄÅÌÅÎÎÙÊ ÎÏÓÉÔÅÌØ" - #define ERR_PROT_VIOLATION "îÁÒÕÛÅÎÉÅ ÚÁÝÉÔÙ" - #define ERR_BROKEN_PIPE "óÌÏÍÁÎÎÙÊ ËÏÎ×ÅÊÅÒ" - -#elif (PHYSFS_LANG == PHYSFS_LANG_RUSSIAN_CP1251) - #define DIR_ARCHIVE_DESCRIPTION "Íå àðõèâ, íåïîñðåäñòâåííûé ââîä/âûâîä ôàéëîâîé ñèñòåìû" - #define GRP_ARCHIVE_DESCRIPTION "Ôîðìàò ãðóïïîâîãî ôàéëà Build engine" - #define HOG_ARCHIVE_DESCRIPTION "Descent I/II HOG file format" - #define MVL_ARCHIVE_DESCRIPTION "Descent II Movielib format" - #define ZIP_ARCHIVE_DESCRIPTION "PkZip/WinZip/Info-Zip ñîâìåñòèìûé" - #define WAD_ARCHIVE_DESCRIPTION "DOOM engine format" /* !!! FIXME: translate this line if needed */ - #define LZMA_ARCHIVE_DESCRIPTION "LZMA (7zip) format" /* !!! FIXME: translate this line if needed */ - - #define ERR_IS_INITIALIZED "Óæå èíèöèàëèçèðîâàí" - #define ERR_NOT_INITIALIZED "Íå èíèöèàëèçèðîâàí" - #define ERR_INVALID_ARGUMENT "Íåâåðíûé àðãóìåíò" - #define ERR_FILES_STILL_OPEN "Ôàéëû åùå îòêðûòû" - #define ERR_NO_DIR_CREATE "Íå ìîãó ñîçäàòü êàòàëîãè" - #define ERR_OUT_OF_MEMORY "Êîí÷èëàñü ïàìÿòü" - #define ERR_NOT_IN_SEARCH_PATH "Íåò òàêîãî ýëåìåíòà â ïóòè ïîèñêà" - #define ERR_NOT_SUPPORTED "Îïåðàöèÿ íå ïîääåðæèâàåòñÿ" - #define ERR_UNSUPPORTED_ARCHIVE "Àðõèâû òàêîãî òèïà íå ïîääåðæèâàþòñÿ" - #define ERR_NOT_A_HANDLE "Íå ôàéëîâûé äåñêðèïòîð" - #define ERR_INSECURE_FNAME "Íåáåçîïàñíîå èìÿ ôàéëà" - #define ERR_SYMLINK_DISALLOWED "Ñèìâîëüíûå ññûëêè îòêëþ÷åíû" - #define ERR_NO_WRITE_DIR "Êàòàëîã äëÿ çàïèñè íå óñòàíîâëåí" - #define ERR_NO_SUCH_FILE "Ôàéë íå íàéäåí" - #define ERR_NO_SUCH_PATH "Ïóòü íå íàéäåí" - #define ERR_NO_SUCH_VOLUME "Òîì íå íàéäåí" - #define ERR_PAST_EOF "Çà êîíöîì ôàéëà" - #define ERR_ARC_IS_READ_ONLY "Àðõèâ òîëüêî äëÿ ÷òåíèÿ" - #define ERR_IO_ERROR "Îøèáêà ââîäà/âûâîäà" - #define ERR_CANT_SET_WRITE_DIR "Íå ìîãó óñòàíîâèòü êàòàëîã äëÿ çàïèñè" - #define ERR_SYMLINK_LOOP "Áåñêîíå÷íûé öèêë ñèìâîëüíîé ññûëêè" - #define ERR_COMPRESSION "Îøèáêà (Ðàñ)ïàêîâêè" - #define ERR_NOT_IMPLEMENTED "Íå ðåàëèçîâàíî" - #define ERR_OS_ERROR "Îïåðàöèîííàÿ ñèñòåìà ñîîáùèëà îøèáêó" - #define ERR_FILE_EXISTS "Ôàéë óæå ñóùåñòâóåò" - #define ERR_NOT_A_FILE "Íå ôàéë" - #define ERR_NOT_A_DIR "Íå êàòàëîã" - #define ERR_NOT_AN_ARCHIVE "Íå àðõèâ" - #define ERR_CORRUPTED "Ïîâðåæäåííûé àðõèâ" - #define ERR_SEEK_OUT_OF_RANGE "Ïîçèöèîíèðîâàíèå çà ïðåäåëû" - #define ERR_BAD_FILENAME "Íåâåðíîå èìÿ ôàéëà" - #define ERR_PHYSFS_BAD_OS_CALL "(BUG) PhysicsFS âûïîëíèëà íåâåðíûé ñèñòåìíûé âûçîâ" - #define ERR_ARGV0_IS_NULL "argv0 is NULL" - #define ERR_NEED_DICT "íóæåí ñëîâàðü" - #define ERR_DATA_ERROR "îøèáêà äàííûõ" - #define ERR_MEMORY_ERROR "îøèáêà ïàìÿòè" - #define ERR_BUFFER_ERROR "îøèáêà áóôåðà" - #define ERR_VERSION_ERROR "îøèáêà âåðñèè" - #define ERR_UNKNOWN_ERROR "íåèçâåñòíàÿ îøèáêà" - #define ERR_SEARCHPATH_TRUNC "Ïóòü ïîèñêà îáðåçàí" - #define ERR_GETMODFN_TRUNC "GetModuleFileName() îáðåçàí" - #define ERR_GETMODFN_NO_DIR "GetModuleFileName() íå ïîëó÷èë êàòàëîã" - #define ERR_DISK_FULL "Äèñê ïîëîí" - #define ERR_DIRECTORY_FULL "Êàòàëîã ïîëîí" - #define ERR_MACOS_GENERIC "MacOS ñîîáùèëà îøèáêó (%d)" - #define ERR_OS2_GENERIC "OS/2 ñîîáùèëà îøèáêó (%d)" - #define ERR_VOL_LOCKED_HW "Òîì áëîêèðîâàí àïïàðàòíî" - #define ERR_VOL_LOCKED_SW "Òîì áëîêèðîâàí ïðîãðàììíî" - #define ERR_FILE_LOCKED "Ôàéë çàáëîêèðîâàí" - #define ERR_FILE_OR_DIR_BUSY "Ôàéë/êàòàëîã çàíÿò" - #define ERR_FILE_ALREADY_OPEN_W "Ôàéë óæå îòêðûò íà çàïèñü" - #define ERR_FILE_ALREADY_OPEN_R "Ôàéë óæå îòêðûò íà ÷òåíèå" - #define ERR_INVALID_REFNUM "Íåâåðíîå êîëè÷åñòâî ññûëîê" - #define ERR_GETTING_FILE_POS "Îøèáêà ïðè ïîëó÷åíèè ïîçèöèè ôàéëà" - #define ERR_VOLUME_OFFLINE "Òîì îòñîåäèíåí" - #define ERR_PERMISSION_DENIED "Îòêàçàíî â ðàçðåøåíèè" - #define ERR_VOL_ALREADY_ONLINE "Òîì óæå ïîäñîåäèíåí" - #define ERR_NO_SUCH_DRIVE "Íåò òàêîãî äèñêà" - #define ERR_NOT_MAC_DISK "Íå äèñê Macintosh" - #define ERR_VOL_EXTERNAL_FS "Òîì ïðèíàäëåæèò âíåøíåé ôàéëîâîé ñèñòåìå" - #define ERR_PROBLEM_RENAME "Ïðîáëåìà ïðè ïåðåèìåíîâàíèè" - #define ERR_BAD_MASTER_BLOCK "Ïëîõîé ãëàâíûé áëîê êàòàëîãà" - #define ERR_CANT_MOVE_FORBIDDEN "Ïîïûòêà ïåðåìåñòèòü çàïðåùåíà" - #define ERR_WRONG_VOL_TYPE "Íåâåðíûé òèï òîìà" - #define ERR_SERVER_VOL_LOST "Ñåðâåðíûé òîì áûë îòñîåäèíåí" - #define ERR_FILE_ID_NOT_FOUND "Èäåíòèôèêàòîð ôàéëà íå íàéäåí" - #define ERR_FILE_ID_EXISTS "Èäåíòèôèêàòîð ôàéëà óæå ñóùåñòâóåò" - #define ERR_SERVER_NO_RESPOND "Ñåðâåð íå îòâå÷àåò" - #define ERR_USER_AUTH_FAILED "Èäåíòèôèêàöèÿ ïîëüçîâàòåëÿ íå óäàëàñü" - #define ERR_PWORD_EXPIRED "Ïàðîëü íà ñåðâåðå óñòàðåë" - #define ERR_ACCESS_DENIED "Îòêàçàíî â äîñòóïå" - #define ERR_NOT_A_DOS_DISK "Íå äèñê DOS" - #define ERR_SHARING_VIOLATION "Íàðóøåíèå ñîâìåñòíîãî äîñòóïà" - #define ERR_CANNOT_MAKE "Íå ìîãó ñîáðàòü" - #define ERR_DEV_IN_USE "Óñòðîéñòâî óæå èñïîëüçóåòñÿ" - #define ERR_OPEN_FAILED "Îòêðûòèå íå óäàëîñü" - #define ERR_PIPE_BUSY "Êîíâåéåð çàíÿò" - #define ERR_SHARING_BUF_EXCEEDED "Ðàçäåëÿåìûé áóôåð ïåðåïîëíåí" - #define ERR_TOO_MANY_HANDLES "Ñëèøêîì ìíîãî îòêðûòûõ äåñêðèïòîðîâ" - #define ERR_SEEK_ERROR "Îøèáêà ïîçèöèîíèðîâàíèÿ" - #define ERR_DEL_CWD "Ïîïûòêà óäàëèòü òåêóùèé ðàáî÷èé êàòàëîã" - #define ERR_WRITE_PROTECT_ERROR "Îøèáêà çàùèòû çàïèñè" - #define ERR_WRITE_FAULT "Îøèáêà çàïèñè" - #define ERR_LOCK_VIOLATION "Íàðóøåíèå áëîêèðîâêè" - #define ERR_GEN_FAILURE "Îáùèé ñáîé" - #define ERR_UNCERTAIN_MEDIA "Íåîïðåäåëåííûé íîñèòåëü" - #define ERR_PROT_VIOLATION "Íàðóøåíèå çàùèòû" - #define ERR_BROKEN_PIPE "Ñëîìàííûé êîíâåéåð" - -#elif (PHYSFS_LANG == PHYSFS_LANG_RUSSIAN_CP866) - #define DIR_ARCHIVE_DESCRIPTION "¥ à娢, ¥¯®á।áâ¢¥ë© ¢¢®¤/¢ë¢®¤ ä ©«®¢®© á¨á⥬ë" - #define GRP_ARCHIVE_DESCRIPTION "”®à¬ â £à㯯®¢®£® ä ©« Build engine" - #define HOG_ARCHIVE_DESCRIPTION "Descent I/II HOG file format" - #define MVL_ARCHIVE_DESCRIPTION "Descent II Movielib format" - #define ZIP_ARCHIVE_DESCRIPTION "PkZip/WinZip/Info-Zip ᮢ¬¥á⨬ë©" - #define WAD_ARCHIVE_DESCRIPTION "DOOM engine format" /* !!! FIXME: translate this line if needed */ - #define LZMA_ARCHIVE_DESCRIPTION "LZMA (7zip) format" /* !!! FIXME: translate this line if needed */ - - #define ERR_IS_INITIALIZED "“¦¥ ¨¨æ¨ «¨§¨à®¢ " - #define ERR_NOT_INITIALIZED "¥ ¨¨æ¨ «¨§¨à®¢ " - #define ERR_INVALID_ARGUMENT "¥¢¥àë© à£ã¬¥â" - #define ERR_FILES_STILL_OPEN "” ©«ë ¥é¥ ®âªàëâë" - #define ERR_NO_DIR_CREATE "¥ ¬®£ã ᮧ¤ âì ª â «®£¨" - #define ERR_OUT_OF_MEMORY "Š®ç¨« áì ¯ ¬ïâì" - #define ERR_NOT_IN_SEARCH_PATH "¥â â ª®£® í«¥¬¥â ¢ ¯ã⨠¯®¨áª " - #define ERR_NOT_SUPPORTED "Ž¯¥à æ¨ï ¥ ¯®¤¤¥à¦¨¢ ¥âáï" - #define ERR_UNSUPPORTED_ARCHIVE "€à娢ë â ª®£® ⨯ ¥ ¯®¤¤¥à¦¨¢ îâáï" - #define ERR_NOT_A_HANDLE "¥ ä ©«®¢ë© ¤¥áªà¨¯â®à" - #define ERR_INSECURE_FNAME "¥¡¥§®¯ ᮥ ¨¬ï ä ©« " - #define ERR_SYMLINK_DISALLOWED "‘¨¬¢®«ìë¥ áá뫪¨ ®âª«îç¥ë" - #define ERR_NO_WRITE_DIR "Š â «®£ ¤«ï § ¯¨á¨ ¥ ãáâ ®¢«¥" - #define ERR_NO_SUCH_FILE "” ©« ¥ ©¤¥" - #define ERR_NO_SUCH_PATH "ãâì ¥ ©¤¥" - #define ERR_NO_SUCH_VOLUME "’®¬ ¥ ©¤¥" - #define ERR_PAST_EOF "‡ ª®æ®¬ ä ©« " - #define ERR_ARC_IS_READ_ONLY "€à娢 ⮫쪮 ¤«ï ç⥨ï" - #define ERR_IO_ERROR "Žè¨¡ª ¢¢®¤ /¢ë¢®¤ " - #define ERR_CANT_SET_WRITE_DIR "¥ ¬®£ã ãáâ ®¢¨âì ª â «®£ ¤«ï § ¯¨á¨" - #define ERR_SYMLINK_LOOP "¥áª®¥çë© æ¨ª« ᨬ¢®«ì®© áá뫪¨" - #define ERR_COMPRESSION "Žè¨¡ª ( á)¯ ª®¢ª¨" - #define ERR_NOT_IMPLEMENTED "¥ ॠ«¨§®¢ ®" - #define ERR_OS_ERROR "Ž¯¥à 樮 ï á¨á⥬ á®®¡é¨« ®è¨¡ªã" - #define ERR_FILE_EXISTS "” ©« 㦥 áãé¥áâ¢ã¥â" - #define ERR_NOT_A_FILE "¥ ä ©«" - #define ERR_NOT_A_DIR "¥ ª â «®£" - #define ERR_NOT_AN_ARCHIVE "¥ à娢" - #define ERR_CORRUPTED "®¢à¥¦¤¥ë© à娢" - #define ERR_SEEK_OUT_OF_RANGE "®§¨æ¨®¨à®¢ ¨¥ § ¯à¥¤¥«ë" - #define ERR_BAD_FILENAME "¥¢¥à®¥ ¨¬ï ä ©« " - #define ERR_PHYSFS_BAD_OS_CALL "(BUG) PhysicsFS ¢ë¯®«¨« ¥¢¥àë© á¨áâ¥¬ë© ¢ë§®¢" - #define ERR_ARGV0_IS_NULL "argv0 is NULL" - #define ERR_NEED_DICT "㦥 á«®¢ àì" - #define ERR_DATA_ERROR "®è¨¡ª ¤ ëå" - #define ERR_MEMORY_ERROR "®è¨¡ª ¯ ¬ïâ¨" - #define ERR_BUFFER_ERROR "®è¨¡ª ¡ãä¥à " - #define ERR_VERSION_ERROR "®è¨¡ª ¢¥àᨨ" - #define ERR_UNKNOWN_ERROR "¥¨§¢¥áâ ï ®è¨¡ª " - #define ERR_SEARCHPATH_TRUNC "ãâì ¯®¨áª ®¡à¥§ " - #define ERR_GETMODFN_TRUNC "GetModuleFileName() ®¡à¥§ " - #define ERR_GETMODFN_NO_DIR "GetModuleFileName() ¥ ¯®«ã稫 ª â «®£" - #define ERR_DISK_FULL "„¨áª ¯®«®" - #define ERR_DIRECTORY_FULL "Š â «®£ ¯®«®" - #define ERR_MACOS_GENERIC "MacOS á®®¡é¨« ®è¨¡ªã (%d)" - #define ERR_OS2_GENERIC "OS/2 á®®¡é¨« ®è¨¡ªã (%d)" - #define ERR_VOL_LOCKED_HW "’®¬ ¡«®ª¨à®¢ ¯¯ à â®" - #define ERR_VOL_LOCKED_SW "’®¬ ¡«®ª¨à®¢ ¯à®£à ¬¬®" - #define ERR_FILE_LOCKED "” ©« § ¡«®ª¨à®¢ " - #define ERR_FILE_OR_DIR_BUSY "” ©«/ª â «®£ § ïâ" - #define ERR_FILE_ALREADY_OPEN_W "” ©« 㦥 ®âªàëâ § ¯¨áì" - #define ERR_FILE_ALREADY_OPEN_R "” ©« 㦥 ®âªàëâ ç⥨¥" - #define ERR_INVALID_REFNUM "¥¢¥à®¥ ª®«¨ç¥á⢮ ááë«®ª" - #define ERR_GETTING_FILE_POS "Žè¨¡ª ¯à¨ ¯®«ã票¨ ¯®§¨æ¨¨ ä ©« " - #define ERR_VOLUME_OFFLINE "’®¬ ®âᮥ¤¨¥" - #define ERR_PERMISSION_DENIED "Žâª § ® ¢ à §à¥è¥¨¨" - #define ERR_VOL_ALREADY_ONLINE "’®¬ 㦥 ¯®¤á®¥¤¨¥" - #define ERR_NO_SUCH_DRIVE "¥â â ª®£® ¤¨áª " - #define ERR_NOT_MAC_DISK "¥ ¤¨áª Macintosh" - #define ERR_VOL_EXTERNAL_FS "’®¬ ¯à¨ ¤«¥¦¨â ¢¥è¥© ä ©«®¢®© á¨á⥬¥" - #define ERR_PROBLEM_RENAME "஡«¥¬ ¯à¨ ¯¥à¥¨¬¥®¢ ¨¨" - #define ERR_BAD_MASTER_BLOCK "«®å®© £« ¢ë© ¡«®ª ª â «®£ " - #define ERR_CANT_MOVE_FORBIDDEN "®¯ë⪠¯¥à¥¬¥áâ¨âì § ¯à¥é¥ " - #define ERR_WRONG_VOL_TYPE "¥¢¥àë© â¨¯ ⮬ " - #define ERR_SERVER_VOL_LOST "‘¥à¢¥àë© â®¬ ¡ë« ®âᮥ¤¨¥" - #define ERR_FILE_ID_NOT_FOUND "ˆ¤¥â¨ä¨ª â®à ä ©« ¥ ©¤¥" - #define ERR_FILE_ID_EXISTS "ˆ¤¥â¨ä¨ª â®à ä ©« 㦥 áãé¥áâ¢ã¥â" - #define ERR_SERVER_NO_RESPOND "‘¥à¢¥à ¥ ®â¢¥ç ¥â" - #define ERR_USER_AUTH_FAILED "ˆ¤¥â¨ä¨ª æ¨ï ¯®«ì§®¢ â¥«ï ¥ 㤠« áì" - #define ERR_PWORD_EXPIRED " ஫ì á¥à¢¥à¥ ãáâ ५" - #define ERR_ACCESS_DENIED "Žâª § ® ¢ ¤®áâ㯥" - #define ERR_NOT_A_DOS_DISK "¥ ¤¨áª DOS" - #define ERR_SHARING_VIOLATION " àã襨¥ ᮢ¬¥á⮣® ¤®áâ㯠" - #define ERR_CANNOT_MAKE "¥ ¬®£ã ᮡà âì" - #define ERR_DEV_IN_USE "“áâனá⢮ 㦥 ¨á¯®«ì§ã¥âáï" - #define ERR_OPEN_FAILED "Žâªàë⨥ ¥ 㤠«®áì" - #define ERR_PIPE_BUSY "Š®¢¥©¥à § ïâ" - #define ERR_SHARING_BUF_EXCEEDED " §¤¥«ï¥¬ë© ¡ãä¥à ¯¥à¥¯®«¥" - #define ERR_TOO_MANY_HANDLES "‘«¨èª®¬ ¬®£® ®âªàëâëå ¤¥áªà¨¯â®à®¢" - #define ERR_SEEK_ERROR "Žè¨¡ª ¯®§¨æ¨®¨à®¢ ¨ï" - #define ERR_DEL_CWD "®¯ë⪠㤠«¨âì ⥪ã騩 à ¡®ç¨© ª â «®£" - #define ERR_WRITE_PROTECT_ERROR "Žè¨¡ª § é¨âë § ¯¨á¨" - #define ERR_WRITE_FAULT "Žè¨¡ª § ¯¨á¨" - #define ERR_LOCK_VIOLATION " àã襨¥ ¡«®ª¨à®¢ª¨" - #define ERR_GEN_FAILURE "Ž¡é¨© á¡®©" - #define ERR_UNCERTAIN_MEDIA "¥®¯à¥¤¥«¥ë© ®á¨â¥«ì" - #define ERR_PROT_VIOLATION " àã襨¥ § é¨âë" - #define ERR_BROKEN_PIPE "‘«®¬ ë© ª®¢¥©¥à" - -#elif (PHYSFS_LANG == PHYSFS_LANG_RUSSIAN_ISO_8859_5) - #define DIR_ARCHIVE_DESCRIPTION "½Õ ÐàåØÒ, ÝÕßÞáàÕÔáâÒÕÝÝëÙ ÒÒÞÔ/ÒëÒÞÔ äÐÙÛÞÒÞÙ áØáâÕÜë" - #define GRP_ARCHIVE_DESCRIPTION "ÄÞàÜÐâ ÓàãßßÞÒÞÓÞ äÐÙÛÐ Build engine" - #define HOG_ARCHIVE_DESCRIPTION "Descent I/II HOG file format" - #define MVL_ARCHIVE_DESCRIPTION "Descent II Movielib format" - #define ZIP_ARCHIVE_DESCRIPTION "PkZip/WinZip/Info-Zip áÞÒÜÕáâØÜëÙ" - #define WAD_ARCHIVE_DESCRIPTION "DOOM engine format" /* !!! FIXME: translate this line if needed */ - #define LZMA_ARCHIVE_DESCRIPTION "LZMA (7zip) format" /* !!! FIXME: translate this line if needed */ - - #define ERR_IS_INITIALIZED "ÃÖÕ ØÝØæØÐÛØ×ØàÞÒÐÝ" - #define ERR_NOT_INITIALIZED "½Õ ØÝØæØÐÛØ×ØàÞÒÐÝ" - #define ERR_INVALID_ARGUMENT "½ÕÒÕàÝëÙ ÐàÓãÜÕÝâ" - #define ERR_FILES_STILL_OPEN "ÄÐÙÛë ÕéÕ ÞâÚàëâë" - #define ERR_NO_DIR_CREATE "½Õ ÜÞÓã áÞ×ÔÐâì ÚÐâÐÛÞÓØ" - #define ERR_OUT_OF_MEMORY "ºÞÝçØÛÐáì ßÐÜïâì" - #define ERR_NOT_IN_SEARCH_PATH "½Õâ âÐÚÞÓÞ íÛÕÜÕÝâÐ Ò ßãâØ ßÞØáÚÐ" - #define ERR_NOT_SUPPORTED "¾ßÕàÐæØï ÝÕ ßÞÔÔÕàÖØÒÐÕâáï" - #define ERR_UNSUPPORTED_ARCHIVE "°àåØÒë âÐÚÞÓÞ âØßÐ ÝÕ ßÞÔÔÕàÖØÒÐîâáï" - #define ERR_NOT_A_HANDLE "½Õ äÐÙÛÞÒëÙ ÔÕáÚàØßâÞà" - #define ERR_INSECURE_FNAME "½ÕÑÕ×ÞßÐáÝÞÕ ØÜï äÐÙÛÐ" - #define ERR_SYMLINK_DISALLOWED "ÁØÜÒÞÛìÝëÕ ááëÛÚØ ÞâÚÛîçÕÝë" - #define ERR_NO_WRITE_DIR "ºÐâÐÛÞÓ ÔÛï ×ÐßØáØ ÝÕ ãáâÐÝÞÒÛÕÝ" - #define ERR_NO_SUCH_FILE "ÄÐÙÛ ÝÕ ÝÐÙÔÕÝ" - #define ERR_NO_SUCH_PATH "¿ãâì ÝÕ ÝÐÙÔÕÝ" - #define ERR_NO_SUCH_VOLUME "ÂÞÜ ÝÕ ÝÐÙÔÕÝ" - #define ERR_PAST_EOF "·Ð ÚÞÝæÞÜ äÐÙÛÐ" - #define ERR_ARC_IS_READ_ONLY "°àåØÒ âÞÛìÚÞ ÔÛï çâÕÝØï" - #define ERR_IO_ERROR "¾èØÑÚÐ ÒÒÞÔÐ/ÒëÒÞÔÐ" - #define ERR_CANT_SET_WRITE_DIR "½Õ ÜÞÓã ãáâÐÝÞÒØâì ÚÐâÐÛÞÓ ÔÛï ×ÐßØáØ" - #define ERR_SYMLINK_LOOP "±ÕáÚÞÝÕçÝëÙ æØÚÛ áØÜÒÞÛìÝÞÙ ááëÛÚØ" - #define ERR_COMPRESSION "¾èØÑÚÐ (ÀÐá)ßÐÚÞÒÚØ" - #define ERR_NOT_IMPLEMENTED "½Õ àÕÐÛØ×ÞÒÐÝÞ" - #define ERR_OS_ERROR "¾ßÕàÐæØÞÝÝÐï áØáâÕÜÐ áÞÞÑéØÛÐ ÞèØÑÚã" - #define ERR_FILE_EXISTS "ÄÐÙÛ ãÖÕ áãéÕáâÒãÕâ" - #define ERR_NOT_A_FILE "½Õ äÐÙÛ" - #define ERR_NOT_A_DIR "½Õ ÚÐâÐÛÞÓ" - #define ERR_NOT_AN_ARCHIVE "½Õ ÐàåØÒ" - #define ERR_CORRUPTED "¿ÞÒàÕÖÔÕÝÝëÙ ÐàåØÒ" - #define ERR_SEEK_OUT_OF_RANGE "¿Þ×ØæØÞÝØàÞÒÐÝØÕ ×Ð ßàÕÔÕÛë" - #define ERR_BAD_FILENAME "½ÕÒÕàÝÞÕ ØÜï äÐÙÛÐ" - #define ERR_PHYSFS_BAD_OS_CALL "(BUG) PhysicsFS ÒëßÞÛÝØÛÐ ÝÕÒÕàÝëÙ áØáâÕÜÝëÙ Òë×ÞÒ" - #define ERR_ARGV0_IS_NULL "argv0 is NULL" - #define ERR_NEED_DICT "ÝãÖÕÝ áÛÞÒÐàì" - #define ERR_DATA_ERROR "ÞèØÑÚÐ ÔÐÝÝëå" - #define ERR_MEMORY_ERROR "ÞèØÑÚÐ ßÐÜïâØ" - #define ERR_BUFFER_ERROR "ÞèØÑÚÐ ÑãäÕàÐ" - #define ERR_VERSION_ERROR "ÞèØÑÚÐ ÒÕàáØØ" - #define ERR_UNKNOWN_ERROR "ÝÕØ×ÒÕáâÝÐï ÞèØÑÚÐ" - #define ERR_SEARCHPATH_TRUNC "¿ãâì ßÞØáÚÐ ÞÑàÕ×ÐÝ" - #define ERR_GETMODFN_TRUNC "GetModuleFileName() ÞÑàÕ×ÐÝ" - #define ERR_GETMODFN_NO_DIR "GetModuleFileName() ÝÕ ßÞÛãçØÛ ÚÐâÐÛÞÓ" - #define ERR_DISK_FULL "´ØáÚ ßÞÛÞÝ" - #define ERR_DIRECTORY_FULL "ºÐâÐÛÞÓ ßÞÛÞÝ" - #define ERR_MACOS_GENERIC "MacOS áÞÞÑéØÛÐ ÞèØÑÚã (%d)" - #define ERR_OS2_GENERIC "OS/2 áÞÞÑéØÛÐ ÞèØÑÚã (%d)" - #define ERR_VOL_LOCKED_HW "ÂÞÜ ÑÛÞÚØàÞÒÐÝ ÐßßÐàÐâÝÞ" - #define ERR_VOL_LOCKED_SW "ÂÞÜ ÑÛÞÚØàÞÒÐÝ ßàÞÓàÐÜÜÝÞ" - #define ERR_FILE_LOCKED "ÄÐÙÛ ×ÐÑÛÞÚØàÞÒÐÝ" - #define ERR_FILE_OR_DIR_BUSY "ÄÐÙÛ/ÚÐâÐÛÞÓ ×ÐÝïâ" - #define ERR_FILE_ALREADY_OPEN_W "ÄÐÙÛ ãÖÕ ÞâÚàëâ ÝÐ ×ÐßØáì" - #define ERR_FILE_ALREADY_OPEN_R "ÄÐÙÛ ãÖÕ ÞâÚàëâ ÝÐ çâÕÝØÕ" - #define ERR_INVALID_REFNUM "½ÕÒÕàÝÞÕ ÚÞÛØçÕáâÒÞ ááëÛÞÚ" - #define ERR_GETTING_FILE_POS "¾èØÑÚÐ ßàØ ßÞÛãçÕÝØØ ßÞ×ØæØØ äÐÙÛÐ" - #define ERR_VOLUME_OFFLINE "ÂÞÜ ÞâáÞÕÔØÝÕÝ" - #define ERR_PERMISSION_DENIED "¾âÚÐ×ÐÝÞ Ò àÐ×àÕèÕÝØØ" - #define ERR_VOL_ALREADY_ONLINE "ÂÞÜ ãÖÕ ßÞÔáÞÕÔØÝÕÝ" - #define ERR_NO_SUCH_DRIVE "½Õâ âÐÚÞÓÞ ÔØáÚÐ" - #define ERR_NOT_MAC_DISK "½Õ ÔØáÚ Macintosh" - #define ERR_VOL_EXTERNAL_FS "ÂÞÜ ßàØÝÐÔÛÕÖØâ ÒÝÕèÝÕÙ äÐÙÛÞÒÞÙ áØáâÕÜÕ" - #define ERR_PROBLEM_RENAME "¿àÞÑÛÕÜÐ ßàØ ßÕàÕØÜÕÝÞÒÐÝØØ" - #define ERR_BAD_MASTER_BLOCK "¿ÛÞåÞÙ ÓÛÐÒÝëÙ ÑÛÞÚ ÚÐâÐÛÞÓÐ" - #define ERR_CANT_MOVE_FORBIDDEN "¿ÞßëâÚÐ ßÕàÕÜÕáâØâì ×ÐßàÕéÕÝÐ" - #define ERR_WRONG_VOL_TYPE "½ÕÒÕàÝëÙ âØß âÞÜÐ" - #define ERR_SERVER_VOL_LOST "ÁÕàÒÕàÝëÙ âÞÜ ÑëÛ ÞâáÞÕÔØÝÕÝ" - #define ERR_FILE_ID_NOT_FOUND "¸ÔÕÝâØäØÚÐâÞà äÐÙÛÐ ÝÕ ÝÐÙÔÕÝ" - #define ERR_FILE_ID_EXISTS "¸ÔÕÝâØäØÚÐâÞà äÐÙÛÐ ãÖÕ áãéÕáâÒãÕâ" - #define ERR_SERVER_NO_RESPOND "ÁÕàÒÕà ÝÕ ÞâÒÕçÐÕâ" - #define ERR_USER_AUTH_FAILED "¸ÔÕÝâØäØÚÐæØï ßÞÛì×ÞÒÐâÕÛï ÝÕ ãÔÐÛÐáì" - #define ERR_PWORD_EXPIRED "¿ÐàÞÛì ÝÐ áÕàÒÕàÕ ãáâÐàÕÛ" - #define ERR_ACCESS_DENIED "¾âÚÐ×ÐÝÞ Ò ÔÞáâãßÕ" - #define ERR_NOT_A_DOS_DISK "½Õ ÔØáÚ DOS" - #define ERR_SHARING_VIOLATION "½ÐàãèÕÝØÕ áÞÒÜÕáâÝÞÓÞ ÔÞáâãßÐ" - #define ERR_CANNOT_MAKE "½Õ ÜÞÓã áÞÑàÐâì" - #define ERR_DEV_IN_USE "ÃáâàÞÙáâÒÞ ãÖÕ ØáßÞÛì×ãÕâáï" - #define ERR_OPEN_FAILED "¾âÚàëâØÕ ÝÕ ãÔÐÛÞáì" - #define ERR_PIPE_BUSY "ºÞÝÒÕÙÕà ×ÐÝïâ" - #define ERR_SHARING_BUF_EXCEEDED "ÀÐ×ÔÕÛïÕÜëÙ ÑãäÕà ßÕàÕßÞÛÝÕÝ" - #define ERR_TOO_MANY_HANDLES "ÁÛØèÚÞÜ ÜÝÞÓÞ ÞâÚàëâëå ÔÕáÚàØßâÞàÞÒ" - #define ERR_SEEK_ERROR "¾èØÑÚÐ ßÞ×ØæØÞÝØàÞÒÐÝØï" - #define ERR_DEL_CWD "¿ÞßëâÚÐ ãÔÐÛØâì âÕÚãéØÙ àÐÑÞçØÙ ÚÐâÐÛÞÓ" - #define ERR_WRITE_PROTECT_ERROR "¾èØÑÚÐ ×ÐéØâë ×ÐßØáØ" - #define ERR_WRITE_FAULT "¾èØÑÚÐ ×ÐßØáØ" - #define ERR_LOCK_VIOLATION "½ÐàãèÕÝØÕ ÑÛÞÚØàÞÒÚØ" - #define ERR_GEN_FAILURE "¾ÑéØÙ áÑÞÙ" - #define ERR_UNCERTAIN_MEDIA "½ÕÞßàÕÔÕÛÕÝÝëÙ ÝÞáØâÕÛì" - #define ERR_PROT_VIOLATION "½ÐàãèÕÝØÕ ×ÐéØâë" - #define ERR_BROKEN_PIPE "ÁÛÞÜÐÝÝëÙ ÚÞÝÒÕÙÕà" - - -#elif (PHYSFS_LANG == PHYSFS_LANG_FRENCH) - #define DIR_ARCHIVE_DESCRIPTION "Pas d'archive, E/S directes sur système de fichiers" - #define GRP_ARCHIVE_DESCRIPTION "Format Groupfile du moteur Build" - #define HOG_ARCHIVE_DESCRIPTION "Descent I/II HOG file format" - #define MVL_ARCHIVE_DESCRIPTION "Descent II Movielib format" - #define QPAK_ARCHIVE_DESCRIPTION "Quake I/II format" - #define ZIP_ARCHIVE_DESCRIPTION "Compatible PkZip/WinZip/Info-Zip" - #define WAD_ARCHIVE_DESCRIPTION "Format WAD du moteur DOOM" - #define LZMA_ARCHIVE_DESCRIPTION "LZMA (7zip) format" /* !!! FIXME: translate this line if needed */ - - #define ERR_IS_INITIALIZED "Déjà initialisé" - #define ERR_NOT_INITIALIZED "Non initialisé" - #define ERR_INVALID_ARGUMENT "Argument invalide" - #define ERR_FILES_STILL_OPEN "Fichiers encore ouverts" - #define ERR_NO_DIR_CREATE "Echec de la création de répertoires" - #define ERR_OUT_OF_MEMORY "A court de mémoire" - #define ERR_NOT_IN_SEARCH_PATH "Aucune entrée dans le chemin de recherche" - #define ERR_NOT_SUPPORTED "Opération non supportée" - #define ERR_UNSUPPORTED_ARCHIVE "Type d'archive non supportée" - #define ERR_NOT_A_HANDLE "Pas un descripteur de fichier" - #define ERR_INSECURE_FNAME "Nom de fichier dangereux" - #define ERR_SYMLINK_DISALLOWED "Les liens symboliques sont désactivés" - #define ERR_NO_WRITE_DIR "Le répertoire d'écriture n'est pas spécifié" - #define ERR_NO_SUCH_FILE "Fichier non trouvé" - #define ERR_NO_SUCH_PATH "Chemin non trouvé" - #define ERR_NO_SUCH_VOLUME "Volume non trouvé" - #define ERR_PAST_EOF "Au-delà de la fin du fichier" - #define ERR_ARC_IS_READ_ONLY "L'archive est en lecture seule" - #define ERR_IO_ERROR "Erreur E/S" - #define ERR_CANT_SET_WRITE_DIR "Ne peut utiliser le répertoire d'écriture" - #define ERR_SYMLINK_LOOP "Boucle infinie dans les liens symboliques" - #define ERR_COMPRESSION "Erreur de (dé)compression" - #define ERR_NOT_IMPLEMENTED "Non implémenté" - #define ERR_OS_ERROR "Erreur rapportée par le système d'exploitation" - #define ERR_FILE_EXISTS "Le fichier existe déjà" - #define ERR_NOT_A_FILE "Pas un fichier" - #define ERR_NOT_A_DIR "Pas un répertoire" - #define ERR_NOT_AN_ARCHIVE "Pas une archive" - #define ERR_CORRUPTED "Archive corrompue" - #define ERR_SEEK_OUT_OF_RANGE "Pointeur de fichier hors de portée" - #define ERR_BAD_FILENAME "Mauvais nom de fichier" - #define ERR_PHYSFS_BAD_OS_CALL "(BOGUE) PhysicsFS a fait un mauvais appel système, le salaud" - #define ERR_ARGV0_IS_NULL "argv0 est NULL" - #define ERR_NEED_DICT "a besoin du dico" - #define ERR_DATA_ERROR "erreur de données" - #define ERR_MEMORY_ERROR "erreur mémoire" - #define ERR_BUFFER_ERROR "erreur tampon" - #define ERR_VERSION_ERROR "erreur de version" - #define ERR_UNKNOWN_ERROR "erreur inconnue" - #define ERR_SEARCHPATH_TRUNC "Le chemin de recherche a été tronqué" - #define ERR_GETMODFN_TRUNC "GetModuleFileName() a été tronqué" - #define ERR_GETMODFN_NO_DIR "GetModuleFileName() n'a pas de répertoire" - #define ERR_DISK_FULL "Disque plein" - #define ERR_DIRECTORY_FULL "Répertoire plein" - #define ERR_MACOS_GENERIC "Erreur rapportée par MacOS (%d)" - #define ERR_OS2_GENERIC "Erreur rapportée par OS/2 (%d)" - #define ERR_VOL_LOCKED_HW "Le volume est verrouillé matériellement" - #define ERR_VOL_LOCKED_SW "Le volume est verrouillé par logiciel" - #define ERR_FILE_LOCKED "Fichier verrouillé" - #define ERR_FILE_OR_DIR_BUSY "Fichier/répertoire occupé" - #define ERR_FILE_ALREADY_OPEN_W "Fichier déjà ouvert en écriture" - #define ERR_FILE_ALREADY_OPEN_R "Fichier déjà ouvert en lecture" - #define ERR_INVALID_REFNUM "Numéro de référence invalide" - #define ERR_GETTING_FILE_POS "Erreur lors de l'obtention de la position du pointeur de fichier" - #define ERR_VOLUME_OFFLINE "Le volume n'est pas en ligne" - #define ERR_PERMISSION_DENIED "Permission refusée" - #define ERR_VOL_ALREADY_ONLINE "Volumé déjà en ligne" - #define ERR_NO_SUCH_DRIVE "Lecteur inexistant" - #define ERR_NOT_MAC_DISK "Pas un disque Macintosh" - #define ERR_VOL_EXTERNAL_FS "Le volume appartient à un système de fichiers externe" - #define ERR_PROBLEM_RENAME "Problème lors du renommage" - #define ERR_BAD_MASTER_BLOCK "Mauvais block maitre de répertoire" - #define ERR_CANT_MOVE_FORBIDDEN "Essai de déplacement interdit" - #define ERR_WRONG_VOL_TYPE "Mauvais type de volume" - #define ERR_SERVER_VOL_LOST "Le volume serveur a été déconnecté" - #define ERR_FILE_ID_NOT_FOUND "Identificateur de fichier non trouvé" - #define ERR_FILE_ID_EXISTS "Identificateur de fichier existe déjà" - #define ERR_SERVER_NO_RESPOND "Le serveur ne répond pas" - #define ERR_USER_AUTH_FAILED "Authentification de l'utilisateur échouée" - #define ERR_PWORD_EXPIRED "Le mot de passe a expiré sur le serveur" - #define ERR_ACCESS_DENIED "Accès refusé" - #define ERR_NOT_A_DOS_DISK "Pas un disque DOS" - #define ERR_SHARING_VIOLATION "Violation de partage" - #define ERR_CANNOT_MAKE "Ne peut faire" - #define ERR_DEV_IN_USE "Périphérique déjà en utilisation" - #define ERR_OPEN_FAILED "Ouverture échouée" - #define ERR_PIPE_BUSY "Le tube est occupé" - #define ERR_SHARING_BUF_EXCEEDED "Tampon de partage dépassé" - #define ERR_TOO_MANY_HANDLES "Trop de descripteurs ouverts" - #define ERR_SEEK_ERROR "Erreur de positionement" - #define ERR_DEL_CWD "Essai de supprimer le répertoire courant" - #define ERR_WRITE_PROTECT_ERROR "Erreur de protection en écriture" - #define ERR_WRITE_FAULT "Erreur d'écriture" - #define ERR_LOCK_VIOLATION "Violation de verrou" - #define ERR_GEN_FAILURE "Echec général" - #define ERR_UNCERTAIN_MEDIA "Média incertain" - #define ERR_PROT_VIOLATION "Violation de protection" - #define ERR_BROKEN_PIPE "Tube cassé" - -#elif (PHYSFS_LANG == PHYSFS_LANG_PORTUGUESE_BR) - #define DIR_ARCHIVE_DESCRIPTION "Não arquivo, E/S sistema de arquivos direto" - #define GRP_ARCHIVE_DESCRIPTION "Formato Groupfile do engine Build" - #define HOG_ARCHIVE_DESCRIPTION "Formato Descent I/II HOG file" - #define MVL_ARCHIVE_DESCRIPTION "Formato Descent II Movielib" - #define QPAK_ARCHIVE_DESCRIPTION "Formato Quake I/II" - #define ZIP_ARCHIVE_DESCRIPTION "Formato compatível PkZip/WinZip/Info-Zip" - #define WAD_ARCHIVE_DESCRIPTION "Formato WAD do engine DOOM" - #define WAD_ARCHIVE_DESCRIPTION "DOOM engine format" /* !!! FIXME: translate this line if needed */ - #define LZMA_ARCHIVE_DESCRIPTION "LZMA (7zip) format" /* !!! FIXME: translate this line if needed */ - - #define ERR_IS_INITIALIZED "Já inicializado" - #define ERR_NOT_INITIALIZED "Não inicializado" - #define ERR_INVALID_ARGUMENT "Argumento inválido" - #define ERR_FILES_STILL_OPEN "Arquivos ainda abertos" - #define ERR_NO_DIR_CREATE "Falha na criação de diretórios" - #define ERR_OUT_OF_MEMORY "Memória insuficiente" - #define ERR_NOT_IN_SEARCH_PATH "Entrada não encontrada no caminho de busca" - #define ERR_NOT_SUPPORTED "Operação não suportada" - #define ERR_UNSUPPORTED_ARCHIVE "Tipo de arquivo não suportado" - #define ERR_NOT_A_HANDLE "Não é um handler de arquivo" - #define ERR_INSECURE_FNAME "Nome de arquivo inseguro" - #define ERR_SYMLINK_DISALLOWED "Links simbólicos desabilitados" - #define ERR_NO_WRITE_DIR "Diretório de escrita não definido" - #define ERR_NO_SUCH_FILE "Arquivo não encontrado" - #define ERR_NO_SUCH_PATH "Caminho não encontrado" - #define ERR_NO_SUCH_VOLUME "Volume não encontrado" - #define ERR_PAST_EOF "Passou o fim do arquivo" - #define ERR_ARC_IS_READ_ONLY "Arquivo é somente de leitura" - #define ERR_IO_ERROR "Erro de E/S" - #define ERR_CANT_SET_WRITE_DIR "Não foi possível definir diretório de escrita" - #define ERR_SYMLINK_LOOP "Loop infinito de link simbólico" - #define ERR_COMPRESSION "Erro de (Des)compressão" - #define ERR_NOT_IMPLEMENTED "Não implementado" - #define ERR_OS_ERROR "Erro reportado pelo Sistema Operacional" - #define ERR_FILE_EXISTS "Arquivo já existente" - #define ERR_NOT_A_FILE "Não é um arquivo" - #define ERR_NOT_A_DIR "Não é um diretório" - #define ERR_NOT_AN_ARCHIVE "Não é um pacote" - #define ERR_CORRUPTED "Pacote corrompido" - #define ERR_SEEK_OUT_OF_RANGE "Posicionamento além do tamanho" - #define ERR_BAD_FILENAME "Nome de arquivo inválido" - #define ERR_PHYSFS_BAD_OS_CALL "(BUG) PhysicsFS realizou uma chamada de sistema inválida" - #define ERR_ARGV0_IS_NULL "argv0 é NULL" - #define ERR_NEED_DICT "precisa de diretório" - #define ERR_DATA_ERROR "erro nos dados" - #define ERR_MEMORY_ERROR "erro de memória" - #define ERR_BUFFER_ERROR "erro de buffer" - #define ERR_VERSION_ERROR "erro na version" - #define ERR_UNKNOWN_ERROR "erro desconhecido" - #define ERR_SEARCHPATH_TRUNC "Caminho de procura quebrado" - #define ERR_GETMODFN_TRUNC "GetModuleFileName() foi quebrado" - #define ERR_GETMODFN_NO_DIR "GetModuleFileName() nao teve diretório" - #define ERR_DISK_FULL "Disco cheio" - #define ERR_DIRECTORY_FULL "Diretório cheio" - #define ERR_MACOS_GENERIC "MacOS reportou um erro (%d)" - #define ERR_OS2_GENERIC "OS/2 reportou um erro (%d)" - #define ERR_VOL_LOCKED_HW "Volume travado por hardware" - #define ERR_VOL_LOCKED_SW "Volume travado por software" - #define ERR_FILE_LOCKED "Arquivo travado" - #define ERR_FILE_OR_DIR_BUSY "Arquivo/Diretório está em uso" - #define ERR_FILE_ALREADY_OPEN_W "Arquivo já aberto para escrita" - #define ERR_FILE_ALREADY_OPEN_R "Arquivo já aberto para leitura" - #define ERR_INVALID_REFNUM "Número de referência" - #define ERR_GETTING_FILE_POS "Erro ao tentar obter posição do arquivo" - #define ERR_VOLUME_OFFLINE "Volume está indisponível" - #define ERR_PERMISSION_DENIED "Permissão negada" - #define ERR_VOL_ALREADY_ONLINE "Volume disponível" - #define ERR_NO_SUCH_DRIVE "Drive inexistente" - #define ERR_NOT_MAC_DISK "Não é um disco Macintosh" - #define ERR_VOL_EXTERNAL_FS "Volume pertence a um sistema de arquivos externo" - #define ERR_PROBLEM_RENAME "Problema durante renomeação" - #define ERR_BAD_MASTER_BLOCK "Bloco master do diretório inválido" - #define ERR_CANT_MOVE_FORBIDDEN "Tentativa de mover proibida" - #define ERR_WRONG_VOL_TYPE "Tipo inválido de volume" - #define ERR_SERVER_VOL_LOST "Volume servidor desconectado" - #define ERR_FILE_ID_NOT_FOUND "ID de Arquivo não encontrado" - #define ERR_FILE_ID_EXISTS "ID de Arquivo já existente" - #define ERR_SERVER_NO_RESPOND "Servidor não respondendo" - #define ERR_USER_AUTH_FAILED "Autenticação de usuário falhada" - #define ERR_PWORD_EXPIRED "Password foi expirada no servidor" - #define ERR_ACCESS_DENIED "Accesso negado" - #define ERR_NOT_A_DOS_DISK "Não é um disco DOS" - #define ERR_SHARING_VIOLATION "Violação de compartilhamento" - #define ERR_CANNOT_MAKE "Não pode ser feito" - #define ERR_DEV_IN_USE "Device já em uso" - #define ERR_OPEN_FAILED "Falaha na abertura" - #define ERR_PIPE_BUSY "Fila ocupada" - #define ERR_SHARING_BUF_EXCEEDED "Buffer de compartilhamento excedeu" - #define ERR_TOO_MANY_HANDLES "Muitos handles abertos" - #define ERR_SEEK_ERROR "Erro de posicionamento" - #define ERR_DEL_CWD "Tentando remover diretório de trabalho atual" - #define ERR_WRITE_PROTECT_ERROR "Erro de proteção de escrita" - #define ERR_WRITE_FAULT "Erro de escrita" - #define ERR_LOCK_VIOLATION "Violação de trava" - #define ERR_GEN_FAILURE "Falha geral" - #define ERR_UNCERTAIN_MEDIA "Media incerta" - #define ERR_PROT_VIOLATION "Violação de proteção" - #define ERR_BROKEN_PIPE "Fila quebrada" - -#elif (PHYSFS_LANG == PHYSFS_LANG_SPANISH) - #define DIR_ARCHIVE_DESCRIPTION "No es un archivo, E/S directa al sistema de ficheros" - #define GRP_ARCHIVE_DESCRIPTION "Formato Build engine Groupfile" - #define HOG_ARCHIVE_DESCRIPTION "Formato Descent I/II HOG file" - #define MVL_ARCHIVE_DESCRIPTION "Formato Descent II Movielib" - #define QPAK_ARCHIVE_DESCRIPTION "Formato Quake I/II" - #define ZIP_ARCHIVE_DESCRIPTION "Compatible con PkZip/WinZip/Info-Zip" - #define WAD_ARCHIVE_DESCRIPTION "DOOM engine format" /* !!! FIXME: translate this line if needed */ - #define LZMA_ARCHIVE_DESCRIPTION "LZMA (7zip) format" /* !!! FIXME: translate this line if needed */ - - #define ERR_IS_INITIALIZED "Ya estaba inicializado" - #define ERR_NOT_INITIALIZED "No está inicializado" - #define ERR_INVALID_ARGUMENT "Argumento inválido" - #define ERR_FILES_STILL_OPEN "Archivos aún abiertos" - #define ERR_NO_DIR_CREATE "Fallo al crear los directorios" - #define ERR_OUT_OF_MEMORY "Memoria agotada" - #define ERR_NOT_IN_SEARCH_PATH "No existe tal entrada en la ruta de búsqueda" - #define ERR_NOT_SUPPORTED "Operación no soportada" - #define ERR_UNSUPPORTED_ARCHIVE "Tipo de archivo no soportado" - #define ERR_NOT_A_HANDLE "No es un manejador de ficheo (file handle)" - #define ERR_INSECURE_FNAME "Nombre de archivo inseguro" - #define ERR_SYMLINK_DISALLOWED "Los enlaces simbólicos están desactivados" - #define ERR_NO_WRITE_DIR "No has configurado un directorio de escritura" - #define ERR_NO_SUCH_FILE "Archivo no encontrado" - #define ERR_NO_SUCH_PATH "Ruta no encontrada" - #define ERR_NO_SUCH_VOLUME "Volumen no encontrado" - #define ERR_PAST_EOF "Te pasaste del final del archivo" - #define ERR_ARC_IS_READ_ONLY "El archivo es de sólo lectura" - #define ERR_IO_ERROR "Error E/S" - #define ERR_CANT_SET_WRITE_DIR "No puedo configurar el directorio de escritura" - #define ERR_SYMLINK_LOOP "Bucle infnito de enlaces simbólicos" - #define ERR_COMPRESSION "Error de (des)compresión" - #define ERR_NOT_IMPLEMENTED "No implementado" - #define ERR_OS_ERROR "El sistema operativo ha devuelto un error" - #define ERR_FILE_EXISTS "El archivo ya existe" - #define ERR_NOT_A_FILE "No es un archivo" - #define ERR_NOT_A_DIR "No es un directorio" - #define ERR_NOT_AN_ARCHIVE "No es un archivo" - #define ERR_CORRUPTED "Archivo corrupto" - #define ERR_SEEK_OUT_OF_RANGE "Búsqueda fuera de rango" - #define ERR_BAD_FILENAME "Nombre de archivo incorrecto" - #define ERR_PHYSFS_BAD_OS_CALL "(BUG) PhysicsFS ha hecho una llamada incorrecta al sistema" - #define ERR_ARGV0_IS_NULL "argv0 es NULL" - #define ERR_NEED_DICT "necesito diccionario" - #define ERR_DATA_ERROR "error de datos" - #define ERR_MEMORY_ERROR "error de memoria" - #define ERR_BUFFER_ERROR "error de buffer" - #define ERR_VERSION_ERROR "error de versión" - #define ERR_UNKNOWN_ERROR "error desconocido" - #define ERR_SEARCHPATH_TRUNC "La ruta de búsqueda ha sido truncada" - #define ERR_GETMODFN_TRUNC "GetModuleFileName() ha sido truncado" - #define ERR_GETMODFN_NO_DIR "GetModuleFileName() no tenia directorio" - #define ERR_DISK_FULL "El disco está lleno" - #define ERR_DIRECTORY_FULL "El directorio está lleno" - #define ERR_MACOS_GENERIC "MacOS ha devuelto un error (%d)" - #define ERR_OS2_GENERIC "OS/2 ha devuelto un error (%d)" - #define ERR_VOL_LOCKED_HW "El volumen está bloqueado por el hardware" - #define ERR_VOL_LOCKED_SW "El volumen está bloqueado por el software" - #define ERR_FILE_LOCKED "El archivo está bloqueado" - #define ERR_FILE_OR_DIR_BUSY "Fichero o directorio ocupados" - #define ERR_FILE_ALREADY_OPEN_W "Fichero ya abierto para escritura" - #define ERR_FILE_ALREADY_OPEN_R "Fichero ya abierto para lectura" - #define ERR_INVALID_REFNUM "El número de referencia no es válido" - #define ERR_GETTING_FILE_POS "Error al tomar la posición del fichero" - #define ERR_VOLUME_OFFLINE "El volumen está desconectado" - #define ERR_PERMISSION_DENIED "Permiso denegado" - #define ERR_VOL_ALREADY_ONLINE "El volumen ya estaba conectado" - #define ERR_NO_SUCH_DRIVE "No existe tal unidad" - #define ERR_NOT_MAC_DISK "No es un disco Macintosh" - #define ERR_VOL_EXTERNAL_FS "El volumen pertence a un sistema de ficheros externo" - #define ERR_PROBLEM_RENAME "Problemas al renombrar" - #define ERR_BAD_MASTER_BLOCK "Bloque maestro de directorios incorrecto" - #define ERR_CANT_MOVE_FORBIDDEN "Intento de mover forbidden" - #define ERR_WRONG_VOL_TYPE "Tipo de volumen incorrecto" - #define ERR_SERVER_VOL_LOST "El servidor de volúmenes ha sido desconectado" - #define ERR_FILE_ID_NOT_FOUND "Identificador de archivo no encontrado" - #define ERR_FILE_ID_EXISTS "El identificador de archivo ya existe" - #define ERR_SERVER_NO_RESPOND "El servidor no responde" - #define ERR_USER_AUTH_FAILED "Fallo al autentificar el usuario" - #define ERR_PWORD_EXPIRED "La Password en el servidor ha caducado" - #define ERR_ACCESS_DENIED "Acceso denegado" - #define ERR_NOT_A_DOS_DISK "No es un disco de DOS" - #define ERR_SHARING_VIOLATION "Violación al compartir" - #define ERR_CANNOT_MAKE "No puedo hacer make" - #define ERR_DEV_IN_USE "El dispositivo ya estaba en uso" - #define ERR_OPEN_FAILED "Fallo al abrir" - #define ERR_PIPE_BUSY "Tubería ocupada" - #define ERR_SHARING_BUF_EXCEEDED "Buffer de compartición sobrepasado" - #define ERR_TOO_MANY_HANDLES "Demasiados manejadores (handles)" - #define ERR_SEEK_ERROR "Error de búsqueda" - #define ERR_DEL_CWD "Intentando borrar el directorio de trabajo actual" - #define ERR_WRITE_PROTECT_ERROR "Error de protección contra escritura" - #define ERR_WRITE_FAULT "Fallo al escribir" - #define ERR_LOCK_VIOLATION "Violación del bloqueo" - #define ERR_GEN_FAILURE "Fallo general" - #define ERR_UNCERTAIN_MEDIA "Medio incierto" - #define ERR_PROT_VIOLATION "Violación de la protección" - #define ERR_BROKEN_PIPE "Tubería rota" - -#else - #error Please define PHYSFS_LANG. -#endif - -/* end LANG section. */ - -struct __PHYSFS_DIRHANDLE__; -struct __PHYSFS_FILEFUNCTIONS__; - - -/* !!! FIXME: find something better than "dvoid" and "fvoid" ... */ -/* Opaque data for file and dir handlers... */ -typedef void dvoid; -typedef void fvoid; - - -typedef struct -{ - /* - * Basic info about this archiver... - */ - const PHYSFS_ArchiveInfo *info; - - - /* - * DIRECTORY ROUTINES: - * These functions are for dir handles. Generate a handle with the - * openArchive() method, then pass it as the "opaque" dvoid to the - * others. - * - * Symlinks should always be followed; PhysicsFS will use the - * isSymLink() method and make a judgement on whether to - * continue to call other methods based on that. - */ - - - /* - * Returns non-zero if (filename) is a valid archive that this - * driver can handle. This filename is in platform-dependent - * notation. forWriting is non-zero if this is to be used for - * the write directory, and zero if this is to be used for an - * element of the search path. - */ - int (*isArchive)(const char *filename, int forWriting); - - /* - * Open a dirhandle for dir/archive (name). - * This filename is in platform-dependent notation. - * forWriting is non-zero if this is to be used for - * the write directory, and zero if this is to be used for an - * element of the search path. - * Returns NULL on failure, and calls __PHYSFS_setError(). - * Returns non-NULL on success. The pointer returned will be - * passed as the "opaque" parameter for later calls. - */ - void *(*openArchive)(const char *name, int forWriting); - - /* - * List all files in (dirname). Each file is passed to (callback), - * where a copy is made if appropriate, so you should dispose of - * it properly upon return from the callback. - * You should omit symlinks if (omitSymLinks) is non-zero. - * If you have a failure, report as much as you can. - * (dirname) is in platform-independent notation. - */ - void (*enumerateFiles)(dvoid *opaque, - const char *dirname, - int omitSymLinks, - PHYSFS_EnumFilesCallback callback, - const char *origdir, - void *callbackdata); - - /* - * Returns non-zero if filename can be opened for reading. - * This filename is in platform-independent notation. - * You should not follow symlinks. - */ - int (*exists)(dvoid *opaque, const char *name); - - /* - * 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. - * - * Regardless of success or failure, please set *fileExists to - * non-zero if the file existed (even if it's a broken symlink!), - * zero if it did not. - */ - int (*isDirectory)(dvoid *opaque, const char *name, int *fileExists); - - /* - * Returns non-zero if filename is really a symlink. - * This filename is in platform-independent notation. - * - * Regardless of success or failure, please set *fileExists to - * non-zero if the file existed (even if it's a broken symlink!), - * zero if it did not. - */ - int (*isSymLink)(dvoid *opaque, const char *name, int *fileExists); - - /* - * Retrieve the last modification time (mtime) of a file. - * Returns -1 on failure, or the file's mtime in seconds since - * the epoch (Jan 1, 1970) on success. - * This filename is in platform-independent notation. - * - * Regardless of success or failure, please set *exists to - * non-zero if the file existed (even if it's a broken symlink!), - * zero if it did not. - */ - PHYSFS_sint64 (*getLastModTime)(dvoid *opaque, const char *fnm, int *exist); - - /* - * Open file for reading. - * This filename is in platform-independent notation. - * If you can't handle multiple opens of the same file, - * you can opt to fail for the second call. - * Fail if the file does not exist. - * Returns NULL on failure, and calls __PHYSFS_setError(). - * Returns non-NULL on success. The pointer returned will be - * passed as the "opaque" parameter for later file calls. - * - * Regardless of success or failure, please set *fileExists to - * non-zero if the file existed (even if it's a broken symlink!), - * zero if it did not. - */ - fvoid *(*openRead)(dvoid *opaque, const char *fname, int *fileExists); - - /* - * Open file for writing. - * If the file does not exist, it should be created. If it exists, - * it should be truncated to zero bytes. The writing - * offset should be the start of the file. - * This filename is in platform-independent notation. - * If you can't handle multiple opens of the same file, - * you can opt to fail for the second call. - * Returns NULL on failure, and calls __PHYSFS_setError(). - * Returns non-NULL on success. The pointer returned will be - * passed as the "opaque" parameter for later file calls. - */ - fvoid *(*openWrite)(dvoid *opaque, const char *filename); - - /* - * Open file for appending. - * If the file does not exist, it should be created. The writing - * offset should be the end of the file. - * This filename is in platform-independent notation. - * If you can't handle multiple opens of the same file, - * you can opt to fail for the second call. - * Returns NULL on failure, and calls __PHYSFS_setError(). - * Returns non-NULL on success. The pointer returned will be - * passed as the "opaque" parameter for later file calls. - */ - fvoid *(*openAppend)(dvoid *opaque, const char *filename); - - /* - * Delete a file in the archive/directory. - * Return non-zero on success, zero on failure. - * This filename is in platform-independent notation. - * This method may be NULL. - * On failure, call __PHYSFS_setError(). - */ - int (*remove)(dvoid *opaque, const char *filename); - - /* - * Create a directory in the archive/directory. - * If the application is trying to make multiple dirs, PhysicsFS - * will split them up into multiple calls before passing them to - * your driver. - * Return non-zero on success, zero on failure. - * This filename is in platform-independent notation. - * This method may be NULL. - * On failure, call __PHYSFS_setError(). - */ - int (*mkdir)(dvoid *opaque, const char *filename); - - /* - * Close directories/archives, and free any associated memory, - * including (opaque) itself if applicable. Implementation can assume - * that it won't be called if there are still files open from - * this archive. - */ - void (*dirClose)(dvoid *opaque); - - - - /* - * FILE ROUTINES: - * These functions are for file handles generated by the open*() methods. - * They are distinguished by taking a "fvoid" instead of a "dvoid" for - * the opaque handle. - */ - - /* - * Read more from the file. - * Returns number of objects of (objSize) bytes read from file, -1 - * if complete failure. - * On failure, call __PHYSFS_setError(). - */ - PHYSFS_sint64 (*read)(fvoid *opaque, void *buffer, - PHYSFS_uint32 objSize, PHYSFS_uint32 objCount); - - /* - * Write more to the file. Archives don't have to implement this. - * (Set it to NULL if not implemented). - * Returns number of objects of (objSize) bytes written to file, -1 - * if complete failure. - * On failure, call __PHYSFS_setError(). - */ - PHYSFS_sint64 (*write)(fvoid *opaque, const void *buffer, - PHYSFS_uint32 objSize, PHYSFS_uint32 objCount); - - /* - * Returns non-zero if at end of file. - */ - int (*eof)(fvoid *opaque); - - /* - * Returns byte offset from start of file. - */ - PHYSFS_sint64 (*tell)(fvoid *opaque); - - /* - * Move read/write pointer to byte offset from start of file. - * Returns non-zero on success, zero on error. - * On failure, call __PHYSFS_setError(). - */ - int (*seek)(fvoid *opaque, PHYSFS_uint64 offset); - - /* - * Return number of bytes available in the file, or -1 if you - * aren't able to determine. - * On failure, call __PHYSFS_setError(). - */ - PHYSFS_sint64 (*fileLength)(fvoid *opaque); - - /* - * Close the file, and free associated resources, including (opaque) - * if applicable. Returns non-zero on success, zero if can't close - * file. On failure, call __PHYSFS_setError(). - */ - int (*fileClose)(fvoid *opaque); -} PHYSFS_Archiver; - - -/* - * Call this to set the message returned by PHYSFS_getLastError(). - * Please only use the ERR_* constants above, or add new constants to the - * above group, but I want these all in one place. - * - * Calling this with a NULL argument is a safe no-op. - */ -void __PHYSFS_setError(const char *err); - - -/* - * Convert (dirName) to platform-dependent notation, then prepend (prepend) - * and append (append) to the converted string. - * - * So, on Win32, calling: - * __PHYSFS_convertToDependent("C:\", "my/files", NULL); - * ...will return the string "C:\my\files". - * - * This is a convenience function; you might want to hack something out that - * is less generic (and therefore more efficient). - * - * Be sure to free() the return value when done with it. - */ -char *__PHYSFS_convertToDependent(const char *prepend, - const char *dirName, - const char *append); - - -/* This byteorder stuff was lifted from SDL. http://www.libsdl.org/ */ -#define PHYSFS_LIL_ENDIAN 1234 -#define PHYSFS_BIG_ENDIAN 4321 - -#if defined(__i386__) || defined(__ia64__) || defined(WIN32) || \ - (defined(__alpha__) || defined(__alpha)) || \ - defined(__arm__) || defined(ARM) || \ - (defined(__mips__) && defined(__MIPSEL__)) || \ - defined(__SYMBIAN32__) || \ - defined(__x86_64__) || \ - defined(__LITTLE_ENDIAN__) -#define PHYSFS_BYTEORDER PHYSFS_LIL_ENDIAN -#else -#define PHYSFS_BYTEORDER PHYSFS_BIG_ENDIAN -#endif - - -/* - * When sorting the entries in an archive, we use a modified QuickSort. - * When there are less then PHYSFS_QUICKSORT_THRESHOLD entries left to sort, - * we switch over to a BubbleSort for the remainder. Tweak to taste. - * - * You can override this setting by defining PHYSFS_QUICKSORT_THRESHOLD - * before #including "physfs_internal.h". - */ -#ifndef PHYSFS_QUICKSORT_THRESHOLD -#define PHYSFS_QUICKSORT_THRESHOLD 4 -#endif - -/* - * Sort an array (or whatever) of (max) elements. This uses a mixture of - * a QuickSort and BubbleSort internally. - * (cmpfn) is used to determine ordering, and (swapfn) does the actual - * swapping of elements in the list. - * - * See zip.c for an example. - */ -void __PHYSFS_sort(void *entries, PHYSFS_uint32 max, - int (*cmpfn)(void *, PHYSFS_uint32, PHYSFS_uint32), - void (*swapfn)(void *, PHYSFS_uint32, PHYSFS_uint32)); - - -/* 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; } -#define BAIL_MACRO_MUTEX(e, m, r) { __PHYSFS_setError(e); __PHYSFS_platformReleaseMutex(m); return r; } -#define BAIL_IF_MACRO_MUTEX(c, e, m, r) if (c) { __PHYSFS_setError(e); __PHYSFS_platformReleaseMutex(m); return r; } -#define GOTO_MACRO(e, g) { __PHYSFS_setError(e); goto g; } -#define GOTO_IF_MACRO(c, e, g) if (c) { __PHYSFS_setError(e); goto g; } -#define GOTO_MACRO_MUTEX(e, m, g) { __PHYSFS_setError(e); __PHYSFS_platformReleaseMutex(m); goto g; } -#define GOTO_IF_MACRO_MUTEX(c, e, m, g) if (c) { __PHYSFS_setError(e); __PHYSFS_platformReleaseMutex(m); goto g; } - -#define __PHYSFS_ARRAYLEN(x) ( (sizeof (x)) / (sizeof (x[0])) ) - -#if (defined __GNUC__) -#define __PHYSFS_SI64(x) x##LL -#define __PHYSFS_UI64(x) x##ULL -#elif (defined _MSC_VER) -#define __PHYSFS_SI64(x) x##i64 -#define __PHYSFS_UI64(x) x##ui64 -#else -#define __PHYSFS_SI64(x) x -#define __PHYSFS_UI64(x) x -#endif - -/* - * Check if a ui64 will fit in the platform's address space. - * The initial sizeof check will optimize this macro out entirely on - * 64-bit (and larger?!) platforms, and the other condition will - * return zero or non-zero if the variable will fit in the platform's - * size_t, suitable to pass to malloc. This is kinda messy, but effective. - */ -#define __PHYSFS_ui64FitsAddressSpace(s) ( \ - (sizeof (PHYSFS_uint64) > sizeof (size_t)) && \ - ((s) > (__PHYSFS_UI64(0xFFFFFFFFFFFFFFFF) >> (64-(sizeof(size_t)*8)))) \ -) - -/* - * This is a strcasecmp() or stricmp() replacement that expects both strings - * to be in UTF-8 encoding. It will do "case folding" to decide if the - * Unicode codepoints in the strings match. - * - * It will report which string is "greater than" the other, but be aware that - * this doesn't necessarily mean anything: 'a' may be "less than" 'b', but - * a random Kanji codepoint has no meaningful alphabetically relationship to - * a Greek Lambda, but being able to assign a reliable "value" makes sorting - * algorithms possible, if not entirely sane. Most cases should treat the - * return value as "equal" or "not equal". - */ -int __PHYSFS_utf8strcasecmp(const char *s1, const char *s2); - -/* - * This works like __PHYSFS_utf8strcasecmp(), but takes a character (NOT BYTE - * COUNT) argument, like strcasencmp(). - */ -int __PHYSFS_utf8strnicmp(const char *s1, const char *s2, PHYSFS_uint32 l); - -/* - * stricmp() that guarantees to only work with low ASCII. The C runtime - * stricmp() might try to apply a locale/codepage/etc, which we don't want. - */ -int __PHYSFS_stricmpASCII(const char *s1, const char *s2); - -/* - * strnicmp() that guarantees to only work with low ASCII. The C runtime - * strnicmp() might try to apply a locale/codepage/etc, which we don't want. - */ -int __PHYSFS_strnicmpASCII(const char *s1, const char *s2, PHYSFS_uint32 l); - - -/* - * The current allocator. Not valid before PHYSFS_init is called! - */ -extern PHYSFS_Allocator __PHYSFS_AllocatorHooks; - -/* convenience macro to make this less cumbersome internally... */ -#define allocator __PHYSFS_AllocatorHooks - -/*--------------------------------------------------------------------------*/ -/*--------------------------------------------------------------------------*/ -/*------------ ----------------*/ -/*------------ You MUST implement the following functions ----------------*/ -/*------------ if porting to a new platform. ----------------*/ -/*------------ (see platform/unix.c for an example) ----------------*/ -/*------------ ----------------*/ -/*--------------------------------------------------------------------------*/ -/*--------------------------------------------------------------------------*/ - - -/* - * The dir separator; "/" on unix, "\\" on win32, ":" on MacOS, etc... - * Obviously, this isn't a function, but it IS a null-terminated string. - */ -extern const char *__PHYSFS_platformDirSeparator; - - -/* - * Initialize the platform. This is called when PHYSFS_init() is called from - * the application. You can use this to (for example) determine what version - * of Windows you're running. - * - * Return zero if there was a catastrophic failure (which prevents you from - * functioning at all), and non-zero otherwise. - */ -int __PHYSFS_platformInit(void); - - -/* - * Deinitialize the platform. This is called when PHYSFS_deinit() is called - * from the application. You can use this to clean up anything you've - * allocated in your platform driver. - * - * Return zero if there was a catastrophic failure (which prevents you from - * functioning at all), and non-zero otherwise. - */ -int __PHYSFS_platformDeinit(void); - - -/* - * Open a file for reading. (filename) is in platform-dependent notation. The - * file pointer should be positioned on the first byte of the file. - * - * The return value will be some platform-specific datatype that is opaque to - * the caller; it could be a (FILE *) under Unix, or a (HANDLE *) under win32. - * - * The same file can be opened for read multiple times, and each should have - * a unique file handle; this is frequently employed to prevent race - * conditions in the archivers. - * - * Call __PHYSFS_setError() and return (NULL) if the file can't be opened. - */ -void *__PHYSFS_platformOpenRead(const char *filename); - - -/* - * Open a file for writing. (filename) is in platform-dependent notation. If - * the file exists, it should be truncated to zero bytes, and if it doesn't - * exist, it should be created as a zero-byte file. The file pointer should - * be positioned on the first byte of the file. - * - * The return value will be some platform-specific datatype that is opaque to - * the caller; it could be a (FILE *) under Unix, or a (HANDLE *) under win32, - * etc. - * - * Opening a file for write multiple times has undefined results. - * - * Call __PHYSFS_setError() and return (NULL) if the file can't be opened. - */ -void *__PHYSFS_platformOpenWrite(const char *filename); - - -/* - * Open a file for appending. (filename) is in platform-dependent notation. If - * the file exists, the file pointer should be place just past the end of the - * file, so that the first write will be one byte after the current end of - * the file. If the file doesn't exist, it should be created as a zero-byte - * file. The file pointer should be positioned on the first byte of the file. - * - * The return value will be some platform-specific datatype that is opaque to - * the caller; it could be a (FILE *) under Unix, or a (HANDLE *) under win32, - * etc. - * - * Opening a file for append multiple times has undefined results. - * - * Call __PHYSFS_setError() and return (NULL) if the file can't be opened. - */ -void *__PHYSFS_platformOpenAppend(const char *filename); - - -/* - * Read more data from a platform-specific file handle. (opaque) should be - * cast to whatever data type your platform uses. Read a maximum of (count) - * objects of (size) 8-bit bytes to the area pointed to by (buffer). If there - * isn't enough data available, return the number of full objects read, and - * position the file pointer at the start of the first incomplete object. - * On success, return (count) and position the file pointer one byte past - * the end of the last read object. Return (-1) if there is a catastrophic - * error, and call __PHYSFS_setError() to describe the problem; the file - * pointer should not move in such a case. - */ -PHYSFS_sint64 __PHYSFS_platformRead(void *opaque, void *buffer, - PHYSFS_uint32 size, PHYSFS_uint32 count); - -/* - * Write more data to a platform-specific file handle. (opaque) should be - * cast to whatever data type your platform uses. Write a maximum of (count) - * objects of (size) 8-bit bytes from the area pointed to by (buffer). If - * there isn't enough data available, return the number of full objects - * written, and position the file pointer at the start of the first - * incomplete object. Return (-1) if there is a catastrophic error, and call - * __PHYSFS_setError() to describe the problem; the file pointer should not - * move in such a case. - */ -PHYSFS_sint64 __PHYSFS_platformWrite(void *opaque, const void *buffer, - PHYSFS_uint32 size, PHYSFS_uint32 count); - -/* - * Set the file pointer to a new position. (opaque) should be cast to - * whatever data type your platform uses. (pos) specifies the number - * of 8-bit bytes to seek to from the start of the file. Seeking past the - * end of the file is an error condition, and you should check for it. - * - * Not all file types can seek; this is to be expected by the caller. - * - * On error, call __PHYSFS_setError() and return zero. On success, return - * a non-zero value. - */ -int __PHYSFS_platformSeek(void *opaque, PHYSFS_uint64 pos); - - -/* - * Get the file pointer's position, in an 8-bit byte offset from the start of - * the file. (opaque) should be cast to whatever data type your platform - * uses. - * - * Not all file types can "tell"; this is to be expected by the caller. - * - * On error, call __PHYSFS_setError() and return zero. On success, return - * a non-zero value. - */ -PHYSFS_sint64 __PHYSFS_platformTell(void *opaque); - - -/* - * Determine the current size of a file, in 8-bit bytes, from an open file. - * - * The caller expects that this information may not be available for all - * file types on all platforms. - * - * Return -1 if you can't do it, and call __PHYSFS_setError(). Otherwise, - * return the file length in 8-bit bytes. - */ -PHYSFS_sint64 __PHYSFS_platformFileLength(void *handle); - -/* - * Determine if a file is at EOF. (opaque) should be cast to whatever data - * type your platform uses. - * - * The caller expects that there was a short read before calling this. - * - * Return non-zero if EOF, zero if it is _not_ EOF. - */ -int __PHYSFS_platformEOF(void *opaque); - -/* - * Flush any pending writes to disk. (opaque) should be cast to whatever data - * type your platform uses. Be sure to check for errors; the caller expects - * that this function can fail if there was a flushing error, etc. - * - * Return zero on failure, non-zero on success. - */ -int __PHYSFS_platformFlush(void *opaque); - -/* - * Flush and close a file. (opaque) should be cast to whatever data type - * your platform uses. Be sure to check for errors when closing; the - * caller expects that this function can fail if there was a flushing - * error, etc. - * - * You should clean up all resources associated with (opaque). - * - * Return zero on failure, non-zero on success. - */ -int __PHYSFS_platformClose(void *opaque); - -/* - * Platform implementation of PHYSFS_getCdRomDirsCallback()... - * CD directories are discovered and reported to the callback one at a time. - * Pointers passed to the callback are assumed to be invalid to the - * application after the callback returns, so you can free them or whatever. - * Callback does not assume results will be sorted in any meaningful way. - */ -void __PHYSFS_platformDetectAvailableCDs(PHYSFS_StringCallback cb, void *data); - -/* - * Calculate the base dir, if your platform needs special consideration. - * Just return NULL if the standard routines will suffice. (see - * calculateBaseDir() in physfs.c ...) - * Caller will free() the retval if it's not NULL. - */ -char *__PHYSFS_platformCalcBaseDir(const char *argv0); - -/* - * Get the platform-specific user name. - * Caller will free() the retval if it's not NULL. If it's NULL, the username - * will default to "default". - */ -char *__PHYSFS_platformGetUserName(void); - -/* - * Get the platform-specific user dir. - * Caller will free() the retval if it's not NULL. If it's NULL, the userdir - * will default to basedir/username. - */ -char *__PHYSFS_platformGetUserDir(void); - -/* - * Return a number that uniquely identifies the current thread. - * On a platform without threading, (1) will suffice. These numbers are - * arbitrary; the only requirement is that no two threads have the same - * number. - */ -PHYSFS_uint64 __PHYSFS_platformGetThreadID(void); - -/* - * Return non-zero if filename (in platform-dependent notation) exists. - * Symlinks should NOT be followed; at this stage, we do not care what the - * symlink points to. Please call __PHYSFS_SetError() with the details of - * why the file does not exist, if it doesn't; you are in a better position - * to know (path not found, bogus filename, file itself is missing, etc). - */ -int __PHYSFS_platformExists(const char *fname); - -/* - * Return the last modified time (in seconds since the epoch) of a file. - * Returns -1 on failure. (fname) is in platform-dependent notation. - * Symlinks should be followed; if what the symlink points to is missing, - * then the retval is -1. - */ -PHYSFS_sint64 __PHYSFS_platformGetLastModTime(const char *fname); - -/* - * Return non-zero if filename (in platform-dependent notation) is a symlink. - */ -int __PHYSFS_platformIsSymLink(const char *fname); - - -/* - * Return non-zero if filename (in platform-dependent notation) is a symlink. - * Symlinks should be followed; if what the symlink points to is missing, - * or isn't a directory, then the retval is false. - */ -int __PHYSFS_platformIsDirectory(const char *fname); - - -/* - * Convert (dirName) to platform-dependent notation, then prepend (prepend) - * and append (append) to the converted string. - * - * So, on Win32, calling: - * __PHYSFS_platformCvtToDependent("C:\", "my/files", NULL); - * ...will return the string "C:\my\files". - * - * This can be implemented in a platform-specific manner, so you can get - * get a speed boost that the default implementation can't, since - * you can make assumptions about the size of strings, etc.. - * - * Platforms that choose not to implement this may just call - * __PHYSFS_convertToDependent() as a passthrough, which may fit the bill - * already. - * - * Be sure to free() the return value when done with it. - */ -char *__PHYSFS_platformCvtToDependent(const char *prepend, - const char *dirName, - const char *append); - - -/* - * Enumerate a directory of files. This follows the rules for the - * PHYSFS_Archiver->enumerateFiles() method (see above), except that the - * (dirName) that is passed to this function is converted to - * platform-DEPENDENT notation by the caller. The PHYSFS_Archiver version - * uses platform-independent notation. Note that ".", "..", and other - * metaentries should always be ignored. - */ -void __PHYSFS_platformEnumerateFiles(const char *dirname, - int omitSymLinks, - PHYSFS_EnumFilesCallback callback, - const char *origdir, - void *callbackdata); - - -/* - * Get the current working directory. The return value should be an - * absolute path in platform-dependent notation. The caller will deallocate - * the return value with the standard C runtime free() function when it - * is done with it. - * On error, return NULL and set the error message. - */ -char *__PHYSFS_platformCurrentDir(void); - - -/* - * Get the real physical path to a file. (path) is specified in - * platform-dependent notation, as should your return value be. - * All relative paths should be removed, leaving you with an absolute - * path. Symlinks should be resolved, too, so that the returned value is - * the most direct path to a file. - * The return value will be deallocated with the standard C runtime free() - * function when the caller is done with it. - * On error, return NULL and set the error message. - */ -char *__PHYSFS_platformRealPath(const char *path); - - -/* - * Make a directory in the actual filesystem. (path) is specified in - * platform-dependent notation. On error, return zero and set the error - * message. Return non-zero on success. - */ -int __PHYSFS_platformMkDir(const char *path); - - -/* - * Remove a file or directory entry in the actual filesystem. (path) is - * specified in platform-dependent notation. Note that this deletes files - * _and_ directories, so you might need to do some determination. - * Non-empty directories should report an error and not delete themselves - * or their contents. - * - * Deleting a symlink should remove the link, not what it points to. - * - * On error, return zero and set the error message. Return non-zero on success. - */ -int __PHYSFS_platformDelete(const char *path); - - -/* - * Create a platform-specific mutex. This can be whatever datatype your - * platform uses for mutexes, but it is cast to a (void *) for abstractness. - * - * Return (NULL) if you couldn't create one. Systems without threads can - * return any arbitrary non-NULL value. - */ -void *__PHYSFS_platformCreateMutex(void); - -/* - * Destroy a platform-specific mutex, and clean up any resources associated - * with it. (mutex) is a value previously returned by - * __PHYSFS_platformCreateMutex(). This can be a no-op on single-threaded - * platforms. - */ -void __PHYSFS_platformDestroyMutex(void *mutex); - -/* - * Grab possession of a platform-specific mutex. Mutexes should be recursive; - * that is, the same thread should be able to call this function multiple - * times in a row without causing a deadlock. This function should block - * until a thread can gain possession of the mutex. - * - * Return non-zero if the mutex was grabbed, zero if there was an - * unrecoverable problem grabbing it (this should not be a matter of - * timing out! We're talking major system errors; block until the mutex - * is available otherwise.) - * - * _DO NOT_ call __PHYSFS_setError() in here! Since setError calls this - * function, you'll cause an infinite recursion. This means you can't - * use the BAIL_*MACRO* macros, either. - */ -int __PHYSFS_platformGrabMutex(void *mutex); - -/* - * Relinquish possession of the mutex when this method has been called - * once for each time that platformGrabMutex was called. Once possession has - * been released, the next thread in line to grab the mutex (if any) may - * proceed. - * - * _DO NOT_ call __PHYSFS_setError() in here! Since setError calls this - * function, you'll cause an infinite recursion. This means you can't - * use the BAIL_*MACRO* macros, either. - */ -void __PHYSFS_platformReleaseMutex(void *mutex); - -/* - * Called at the start of PHYSFS_init() to prepare the allocator, if the user - * hasn't selected their own allocator via PHYSFS_setAllocator(). - * If the platform has a custom allocator, it should fill in the fields of - * (a) with the proper function pointers and return non-zero. - * If the platform just wants to use malloc()/free()/etc, return zero - * immediately and the higher level will handle it. The Init and Deinit - * fields of (a) are optional...set them to NULL if you don't need them. - * Everything else must be implemented. All rules follow those for - * PHYSFS_setAllocator(). If Init isn't NULL, it will be called shortly - * after this function returns non-zero. - */ -int __PHYSFS_platformSetDefaultAllocator(PHYSFS_Allocator *a); - -#ifdef __cplusplus -} -#endif - -#endif - -/* end of physfs_internal.h ... */ - diff --git a/Frameworks/physfs.framework/Versions/A/Headers/physfs_platforms.h b/Frameworks/physfs.framework/Versions/A/Headers/physfs_platforms.h deleted file mode 100644 index 9f95a890..00000000 --- a/Frameworks/physfs.framework/Versions/A/Headers/physfs_platforms.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef _INCL_PHYSFS_PLATFORMS -#define _INCL_PHYSFS_PLATFORMS - -#ifndef __PHYSICSFS_INTERNAL__ -#error Do not include this header from your applications. -#endif - -/* - * These only define the platforms to determine which files in the platforms - * directory should be compiled. For example, technically BeOS can be called - * a "unix" system, but since it doesn't use unix.c, we don't define - * PHYSFS_PLATFORM_UNIX on that system. - */ - -#if ((defined __BEOS__) || (defined __beos__)) -# define PHYSFS_PLATFORM_BEOS -# define PHYSFS_PLATFORM_POSIX -#elif (defined _WIN32_WCE) || (defined _WIN64_WCE) -# define PHYSFS_PLATFORM_POCKETPC -#elif (((defined _WIN32) || (defined _WIN64)) && (!defined __CYGWIN__)) -# define PHYSFS_PLATFORM_WINDOWS -#elif (defined OS2) -# define PHYSFS_PLATFORM_OS2 -#elif ((defined __MACH__) && (defined __APPLE__)) -# define PHYSFS_PLATFORM_MACOSX -# define PHYSFS_PLATFORM_POSIX -#elif defined(macintosh) -# error Classic Mac OS support was dropped from PhysicsFS 2.0. Move to OS X. -#elif defined(unix) -# define PHYSFS_PLATFORM_UNIX -# define PHYSFS_PLATFORM_POSIX -#else -# error Unknown platform. -#endif - -#endif /* include-once blocker. */ - diff --git a/Frameworks/physfs.framework/Versions/A/Resources/.svn/all-wcprops b/Frameworks/physfs.framework/Versions/A/Resources/.svn/all-wcprops deleted file mode 100644 index 8aaae1f7..00000000 --- a/Frameworks/physfs.framework/Versions/A/Resources/.svn/all-wcprops +++ /dev/null @@ -1,11 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 92 -/svnroot/lom/!svn/ver/408/client/proj/xcode/Frameworks/physfs.framework/Versions/A/Resources -END -Info.plist -K 25 -svn:wc:ra_dav:version-url -V 103 -/svnroot/lom/!svn/ver/408/client/proj/xcode/Frameworks/physfs.framework/Versions/A/Resources/Info.plist -END diff --git a/Frameworks/physfs.framework/Versions/A/Resources/.svn/entries b/Frameworks/physfs.framework/Versions/A/Resources/.svn/entries deleted file mode 100644 index 39c7997f..00000000 --- a/Frameworks/physfs.framework/Versions/A/Resources/.svn/entries +++ /dev/null @@ -1,43 +0,0 @@ -8 - -dir -425 -https://allenmoatallen@lom.svn.sourceforge.net/svnroot/lom/client/proj/xcode/Frameworks/physfs.framework/Versions/A/Resources -https://allenmoatallen@lom.svn.sourceforge.net/svnroot/lom - - - -2009-01-28T20:51:01.517662Z -408 -allenmoatallen - - -svn:special svn:externals svn:needs-lock - - - - - - - - - - - -526aae6b-ec45-0410-ad3e-d5d18bbc98bf - -Info.plist -file - - - - -2009-01-28T20:52:50.000000Z -36fdba9b2e45fe199b4b22671c49a0d9 -2009-01-28T20:51:01.517662Z -408 -allenmoatallen - -English.lproj -dir - diff --git a/Frameworks/physfs.framework/Versions/A/Resources/.svn/format b/Frameworks/physfs.framework/Versions/A/Resources/.svn/format deleted file mode 100644 index 45a4fb75..00000000 --- a/Frameworks/physfs.framework/Versions/A/Resources/.svn/format +++ /dev/null @@ -1 +0,0 @@ -8 diff --git a/Frameworks/physfs.framework/Versions/A/Resources/.svn/text-base/Info.plist.svn-base b/Frameworks/physfs.framework/Versions/A/Resources/.svn/text-base/Info.plist.svn-base deleted file mode 100644 index ac34dad8..00000000 --- a/Frameworks/physfs.framework/Versions/A/Resources/.svn/text-base/Info.plist.svn-base +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>CFBundleDevelopmentRegion</key> - <string>English</string> - <key>CFBundleExecutable</key> - <string>physfs</string> - <key>CFBundleIdentifier</key> - <string>com.yourcompany.physfs</string> - <key>CFBundleInfoDictionaryVersion</key> - <string>6.0</string> - <key>CFBundleName</key> - <string>physfs</string> - <key>CFBundlePackageType</key> - <string>FMWK</string> - <key>CFBundleSignature</key> - <string>????</string> - <key>CFBundleVersion</key> - <string>1.0</string> -</dict> -</plist> diff --git a/Frameworks/physfs.framework/Versions/A/Resources/English.lproj/.svn/all-wcprops b/Frameworks/physfs.framework/Versions/A/Resources/English.lproj/.svn/all-wcprops deleted file mode 100644 index ee8a2c02..00000000 --- a/Frameworks/physfs.framework/Versions/A/Resources/English.lproj/.svn/all-wcprops +++ /dev/null @@ -1,11 +0,0 @@ -K 25 -svn:wc:ra_dav:version-url -V 106 -/svnroot/lom/!svn/ver/408/client/proj/xcode/Frameworks/physfs.framework/Versions/A/Resources/English.lproj -END -InfoPlist.strings -K 25 -svn:wc:ra_dav:version-url -V 124 -/svnroot/lom/!svn/ver/408/client/proj/xcode/Frameworks/physfs.framework/Versions/A/Resources/English.lproj/InfoPlist.strings -END diff --git a/Frameworks/physfs.framework/Versions/A/Resources/English.lproj/.svn/entries b/Frameworks/physfs.framework/Versions/A/Resources/English.lproj/.svn/entries deleted file mode 100644 index 22c4d656..00000000 --- a/Frameworks/physfs.framework/Versions/A/Resources/English.lproj/.svn/entries +++ /dev/null @@ -1,41 +0,0 @@ -8 - -dir -425 -https://allenmoatallen@lom.svn.sourceforge.net/svnroot/lom/client/proj/xcode/Frameworks/physfs.framework/Versions/A/Resources/English.lproj -https://allenmoatallen@lom.svn.sourceforge.net/svnroot/lom - - - -2009-01-28T20:51:01.517662Z -408 -allenmoatallen - - -svn:special svn:externals svn:needs-lock - - - - - - - - - - - -526aae6b-ec45-0410-ad3e-d5d18bbc98bf - -InfoPlist.strings -file - - - - -2009-01-28T20:52:50.000000Z -d72878bb656f235c73b049056cd30dba -2009-01-28T20:51:01.517662Z -408 -allenmoatallen -has-props - diff --git a/Frameworks/physfs.framework/Versions/A/Resources/English.lproj/.svn/format b/Frameworks/physfs.framework/Versions/A/Resources/English.lproj/.svn/format deleted file mode 100644 index 45a4fb75..00000000 --- a/Frameworks/physfs.framework/Versions/A/Resources/English.lproj/.svn/format +++ /dev/null @@ -1 +0,0 @@ -8 diff --git a/Frameworks/physfs.framework/Versions/A/Resources/English.lproj/.svn/prop-base/InfoPlist.strings.svn-base b/Frameworks/physfs.framework/Versions/A/Resources/English.lproj/.svn/prop-base/InfoPlist.strings.svn-base deleted file mode 100644 index 5e9587e6..00000000 --- a/Frameworks/physfs.framework/Versions/A/Resources/English.lproj/.svn/prop-base/InfoPlist.strings.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 24 -application/octet-stream -END diff --git a/Frameworks/physfs.framework/Versions/A/Resources/English.lproj/.svn/text-base/InfoPlist.strings.svn-base b/Frameworks/physfs.framework/Versions/A/Resources/English.lproj/.svn/text-base/InfoPlist.strings.svn-base Binary files differdeleted file mode 100644 index dea12de4..00000000 --- a/Frameworks/physfs.framework/Versions/A/Resources/English.lproj/.svn/text-base/InfoPlist.strings.svn-base +++ /dev/null diff --git a/Frameworks/physfs.framework/Versions/A/Resources/English.lproj/InfoPlist.strings b/Frameworks/physfs.framework/Versions/A/Resources/English.lproj/InfoPlist.strings Binary files differdeleted file mode 100644 index dea12de4..00000000 --- a/Frameworks/physfs.framework/Versions/A/Resources/English.lproj/InfoPlist.strings +++ /dev/null diff --git a/Frameworks/physfs.framework/Versions/A/Resources/Info.plist b/Frameworks/physfs.framework/Versions/A/Resources/Info.plist deleted file mode 100644 index ac34dad8..00000000 --- a/Frameworks/physfs.framework/Versions/A/Resources/Info.plist +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>CFBundleDevelopmentRegion</key> - <string>English</string> - <key>CFBundleExecutable</key> - <string>physfs</string> - <key>CFBundleIdentifier</key> - <string>com.yourcompany.physfs</string> - <key>CFBundleInfoDictionaryVersion</key> - <string>6.0</string> - <key>CFBundleName</key> - <string>physfs</string> - <key>CFBundlePackageType</key> - <string>FMWK</string> - <key>CFBundleSignature</key> - <string>????</string> - <key>CFBundleVersion</key> - <string>1.0</string> -</dict> -</plist> diff --git a/Frameworks/physfs.framework/Versions/A/physfs b/Frameworks/physfs.framework/Versions/A/physfs Binary files differdeleted file mode 100755 index efea2d32..00000000 --- a/Frameworks/physfs.framework/Versions/A/physfs +++ /dev/null |