Ryan C. Gordon
8db27a1236
Fix symlink filtering for enumeration under a virtual mount point.
2017-08-14 11:43:18 -04:00
Ryan C. Gordon
cfe3f0180b
Make PHYSFS_exists() work with mounts from PHYSFS_mountIo(io, NULL, ...)
...
(Actually, from any mount function that accepts a bogus/NULL filename.)
2017-08-14 03:06:42 -04:00
Ryan C. Gordon
3b7ee3974c
Don't set readonly if PHYSFS_stat()'ing something not in the write dir.
...
This API is meant to report what the archivers think about an item and not
actually tell you if a PHYSFS_openWrite() will succeed on it.
2017-08-14 02:46:07 -04:00
Ryan C. Gordon
63277e500c
Turns out we were doing this for a (maybe not good, but reasonable) reason.
2017-08-14 02:42:13 -04:00
Ryan C. Gordon
3078acd1eb
Archivers can now specify whether an archive definitely was intended for them.
...
So if a zip file goes to the zip archiver but is corrupted, the system can now
know not to bother trying other archivers once the zip archiver has had a shot
at it, and just as important: it can report the real error from that archiver
instead of a generic "unsupported."
2017-08-14 02:28:00 -04:00
Ryan C. Gordon
2a6215394b
Reduced some FIXME-3.0 tags to normal FIXME. They can wait.
2017-08-14 01:35:10 -04:00
Ryan C. Gordon
88e7f3eb0f
Sanity check archivers that should only have low-ASCII filename.
2017-08-14 01:29:45 -04:00
Ryan C. Gordon
9c9325c2c5
Filled in more documentation.
2017-08-14 01:28:30 -04:00
Ryan C. Gordon
dd68246737
7z: do global initialization once without risking a race condition.
2017-08-13 22:53:38 -04:00
Ryan C. Gordon
1364f6a915
PHYSFS_setSaneConfig uses enum callbacks now.
2017-08-13 19:45:31 -04:00
Ryan C. Gordon
0d61295781
Improved some documentation.
2017-08-13 17:11:14 -04:00
Ryan C. Gordon
cc3ac9539e
Patched to compile on various platforms and compilers.
2017-08-12 03:10:19 -04:00
Ryan C. Gordon
7fcddfb741
Don't mark the PHYSFS_EnumFilesCallback _typedef_ as deprecated.
...
It upsets several compilers when building PhysicsFS itself.
2017-08-12 03:06:06 -04:00
Ryan C. Gordon
6da5bea804
Updated docs to use PHYSFS_getLastErrorCode() instead of PHYSFS_getLastError().
...
(a few other documentation fixes probably slipped in here, too.)
2017-08-12 02:39:24 -04:00
Ryan C. Gordon
f6a8533ba2
FIXME removal: document enumerateFiles() sorting promises.
2017-08-12 02:24:38 -04:00
Ryan C. Gordon
db2201e4e1
Added some FIXMEs and deprecated PHYSFS_getLastError().
2017-08-12 02:21:11 -04:00
Ryan C. Gordon
ee9687bca9
Reworked enumeration to be more powerful.
...
Now callbacks can stop further enumeration and report errors, if they had a
catastrophic issue or just found what they needed and don't need to process
any more items.
Also, the actual enumerators can report errors instead of silently dropping
items. This led to several other fixes as all these implementations got
audited and reworked.
The original, non-callback enumerator now returns NULL if it can't produce a
complete list instead of dropping items and returning a partial list.
2017-08-12 02:19:22 -04:00
Ryan C. Gordon
b082bc3432
Removed __PHYSFS_stricmpASCII functions.
...
Nothing was using them, except one OS/2 thing that could live with stricmp.
2017-08-11 01:45:29 -04:00
Ryan C. Gordon
78c1a985ec
Made physfs_lzmasdk.h's include-once blockers match other files' formatting.
2017-08-11 01:29:38 -04:00
Ryan C. Gordon
d1f2637ca8
utf8: big improvements to case-insensitive UTF-8 string compare.
...
- Dramatically reduce RAM usage: uses between 8 and 11 kilobytes less static
memory for its internal case-folding tables.
- Actually works now. It would fail unconditionally if a codepoint folded
into multiple codepoints, even if the compared string contained those exact
codepoints.
- Now a public API!
- Removed __PHYSFS_utf8strnicmp(): nothing was using it, it was incorrect
anyhow, and what does 'n' represent when either string might case-fold to
something larger in-flight, anyhow?
2017-08-11 01:39:22 -04:00
Ryan C. Gordon
587ec88a0d
FIXME removal: this code is fine, I guess.
2017-08-10 12:31:41 -04:00
Ryan C. Gordon
1efdb62a8f
haiku: CD-ROM detection should report any mounted volume on a B_CD device.
...
Most discs only use the "raw" device, but it turns out the Haiku installation
"anyboot" images don't, and those would fail to detect here. If there's
some multi-partition disc thing and the OS mounted each separately, we should
report each of them.
2017-08-10 12:31:06 -04:00
Ryan C. Gordon
0e778b0b16
FIXME removal: it's okay for the PHYSFS_Io to be NULL here.
...
We use this technique in several other places, too.
2017-08-08 15:27:32 -04:00
Ryan C. Gordon
961c0604dc
apple: Patched to compile on XCode versions < 7.
2017-08-08 11:57:44 -04:00
Ryan C. Gordon
c52be25d1e
windows: minor cleanup.
2017-08-08 03:37:09 -04:00
Ryan C. Gordon
982411ec8a
apple: Start using some Cocoa APIs, clean up a few related things.
2017-08-08 03:36:56 -04:00
Ryan C. Gordon
0a730433ae
Rename physfs_platform_macos.c to physfs_platform_apple.m
...
It's not really "macOS," it's all of Apple's platforms (iOS, watchOS,
tvOS...AppleCarOS? heh), and second...we're about to need access to Cocoa
APIs, so we need it to be Objective-C. I fought as long as I could. :/
2017-08-08 02:34:25 -04:00
Ryan C. Gordon
eb46d82500
Fixed compiler warnings on GCC.
2017-08-06 15:59:46 -04:00
Ryan C. Gordon
af555317b9
Fixed compiler warnings on Visual Studio.
2017-08-06 15:58:39 -04:00
Ryan C. Gordon
f0eb5c0db9
Marked a bunch of things as "FIXME-3.0" that I want resolved before 3.0 ships.
2017-08-06 15:54:44 -04:00
Ryan C. Gordon
0287160f3c
Removed some FIXMEs that aren't valid.
2017-08-06 13:56:45 -04:00
Ryan C. Gordon
1d6c519c5e
windows: Patched to compile! (...?)
2017-08-06 12:27:18 -04:00
Ryan C. Gordon
2176364a16
windows: (maybe) patched to compile on Visual Studio.
2017-08-06 12:19:33 -04:00
Ryan C. Gordon
36c51d40d1
PHYSFS_File buffering now uses size_t.
...
This lets you have the full address space but not take up unnecessary space
on 32-bit platforms...not to mention removes a bunch of typecasting.
2017-08-06 10:33:21 -04:00
Ryan C. Gordon
114bfd1b21
windows: PHYSFS_FILETYPE_OTHER files now report real filesize in PHYSFS_stat().
...
I don't know if it's _meaningful_, but if the OS reports it, so do we.
2017-08-06 09:25:05 -04:00
Ryan C. Gordon
a7ce178eec
Add basic atomic operations for refcounting, etc.
2017-08-06 09:21:38 -04:00
Ryan C. Gordon
61bdee4d78
__PHYSFS_platformDeinit() should return void.
...
What are you going to do if this fails, anyhow?
2017-08-06 01:30:58 -04:00
Ryan C. Gordon
248167af40
windows: Removed (what I think is) a copy/paste error.
2017-08-05 01:26:07 -04:00
Ryan C. Gordon
be9bf023d0
windows: Use a real synchronization primitive for CD detection thread init.
...
Before we were waiting on a volatile int in a tight loop with a Sleep(50).
2017-08-05 01:24:53 -04:00
Ryan C. Gordon
befc894b1f
More FIXME cleanups.
2017-08-04 22:35:49 -04:00
Ryan C. Gordon
b6e139fc22
Make compile-time asserts more readable.
2017-08-04 22:32:57 -04:00
Ryan C. Gordon
0d249cae36
FIXME removal: This is an appropriate error code already.
2017-08-04 22:32:34 -04:00
Ryan C. Gordon
cc2c29b207
Removed FIXME: this was already fixed at some point.
2017-08-04 22:31:56 -04:00
Ryan C. Gordon
093dcb555b
os/2: Patched to compile (?).
2017-08-02 16:40:07 -04:00
Ryan C. Gordon
3f9ffddc83
os/2: attempt to get cpuid support on OpenWatcom builds.
2017-08-02 16:34:02 -04:00
Ryan C. Gordon
1e850d32ea
windows: Patched to compile.
2017-08-02 13:06:56 -04:00
Ryan C. Gordon
007c2fc037
windows: Just pass HANDLEs around instead of wrapping in a struct.
...
We don't need the "readonly" field of this struct, because it was only used
to protect flushes on non-writable handles, but PHYSFS_flush() also keeps
track of what's read-only and won't call into the platform layer anyhow.
HANDLEs are typedef'd to be "void *" on Windows, so this is safe (so long as
we check for INVALID_HANDLE_VALUE, which is ((void*)-1), when creating new
handles.
2017-08-02 13:02:43 -04:00
Ryan C. Gordon
bea510def0
windows: Fixed logic bug.
2017-08-02 12:48:40 -04:00
Ryan C. Gordon
02c2c4736e
windows: better test for WinRT vs win32 (...I think...?)
2017-08-02 12:48:31 -04:00
Ryan C. Gordon
5ab8df339d
Updated Unicode case folding support to something 10 years newer. :)
2017-07-31 16:32:47 -04:00
Ryan C. Gordon
32930ef41d
Fixed compiler warning.
2017-07-26 16:08:32 -04:00
Ryan C. Gordon
0e7f3ee6a1
Added an assert for a FIXME that is now handled elsewhere.
2017-07-25 19:55:58 -04:00
Ryan C. Gordon
1e2650b6fc
Serious cleanup and update of Windows RT support.
...
This compiles for WinRT, but isn't otherwise tested at all yet.
2017-07-24 03:29:33 -04:00
Ryan C. Gordon
c74f4cb007
Minor cleanup.
2017-07-24 02:37:22 -04:00
Ryan C. Gordon
a5461ddcd9
Some minor preprocessor nitpicks.
2017-07-24 02:36:58 -04:00
Ryan C. Gordon
8c13bd27d6
unix: getmntinfo() should proabably be set to MNT_NOWAIT to avoid blocking.
2017-07-22 20:05:17 -04:00
Ryan C. Gordon
bc28fb74b4
Minor QNX fix; don't warn about CD-ROM support (for now).
2017-07-22 20:04:38 -04:00
Ryan C. Gordon
e2750bff62
Apple refers to "Mac OS X" as "macOS" now.
2017-07-22 13:50:40 -04:00
Ryan C. Gordon
6d91dde273
Rename __PHYSFS_Archiver_SZIP to __PHYSFS_Archiver_7Z.
2017-07-22 13:50:03 -04:00
Ryan C. Gordon
1fa4be6f66
Minor documentation updates.
2017-07-22 13:48:31 -04:00
Ryan C. Gordon
db349bd067
Update filename comments.
2017-07-22 13:19:57 -04:00
Ryan C. Gordon
18c89c1cbc
Renamed all the sources to start with "physfs_"
...
So now you can drop this into your program and not worry about filename
conflicts, or where "platform_unix.c" came from in the debugger, etc.
Also renamed the "beos" sources to "haiku" and "macosx" to "macos" to match
modern platform names.
2017-07-22 12:59:06 -04:00
Ryan C. Gordon
ace324cdc8
Minor code cleanups: whitespace fixes, 80-column overflows, wrong comments.
2017-07-22 12:47:32 -04:00
Ryan C. Gordon
c1defd3ec4
vdf: Migrated to new, improved unpacked archiver infrastructure.
2017-07-22 12:42:34 -04:00
Ryan C. Gordon
eefc757398
Added some TODOs to the ISO9660 code.
2017-07-22 12:16:37 -04:00
Ryan C. Gordon
8ee7f5d351
Fixed compiler warnings.
2017-07-21 22:38:50 -04:00
Ryan C. Gordon
a7616f3960
Removed unused variable.
2017-07-21 22:35:30 -04:00
Ryan C. Gordon
03097332ca
unpacked: let archivers specify create and modified times, hook up to iso9660.
2017-07-21 22:01:51 -04:00
Ryan C. Gordon
3c9351c0ad
unpacked: let archivers "abandon" the archive instead of closing it.
...
This lets you preserve the PHYSFS_Io in case of error during archive opening.
2017-07-21 19:01:41 -04:00
Ryan C. Gordon
91a19982ca
iso9660: rewritten and simplified.
...
This now builds on top of the "unpacked" archiver and reads only the
structures it needs, serializing the parts it cares about. Lots of other
cleanups.
Lost a little bit of functionality, to be restored later.
2017-07-21 13:56:21 -04:00
Ryan C. Gordon
2dd3d7c28a
unpacked: Don't list a position or length for directory entries.
2017-07-21 13:55:03 -04:00
Ryan C. Gordon
d3ac612b61
DirTrees and unpacked archives shouldn't demand a count of entries for init.
2017-07-21 13:54:42 -04:00
Ryan C. Gordon
32ed71db48
slb: be more aggressive about rejecting non-SLB files.
2017-07-20 17:00:21 -04:00
Ryan C. Gordon
7e30657f54
Attempt to fix compilation against the latest Windows SDK.
2017-07-18 09:59:23 -04:00
Ryan C. Gordon
adb7ea4dfc
It's not messy to compile NOW. :)
2017-07-17 16:39:15 -04:00
Ryan C. Gordon
28f32ad240
Removed C++ single-line comments from LZMA SDK.
2017-07-17 16:25:17 -04:00
Ryan C. Gordon
823061758b
Disable unaligned reads in LZMA SDK; it upsets GCC's strict-aliasing rules.
2017-07-17 16:22:29 -04:00
Ryan C. Gordon
0bda50c276
More unused LZMA SDK code.
2017-07-17 15:50:04 -04:00
Ryan C. Gordon
1d616dcaf1
Fixed compiler warning.
2017-07-17 15:43:39 -04:00
Ryan C. Gordon
4557dbf0f7
Another LZMA SDK trim.
2017-07-17 14:57:02 -04:00
Ryan C. Gordon
7ab5cc52ce
Fixed 64-bit ints in LZMA SDK on Watcom C.
2017-07-17 14:56:52 -04:00
Ryan C. Gordon
f6c830968c
Workaround strict-aliasing warnings on some versions of GCC.
2017-07-17 14:46:36 -04:00
Ryan C. Gordon
3765efb652
Still more LZMA SDK trimming.
2017-07-17 14:43:36 -04:00
Ryan C. Gordon
a28a01c124
Patched to compile on Visual Studio.
2017-07-17 14:37:02 -04:00
Ryan C. Gordon
8553113870
Patched to compile on OpenWatcom.
2017-07-17 14:35:47 -04:00
Ryan C. Gordon
7fed370cfd
Chopped more unused pieces out of the LZMA SDK.
2017-07-17 14:35:36 -04:00
Ryan C. Gordon
43f8ffcd2d
Chopped out some unused code from the LZMA SDK.
2017-07-17 14:27:51 -04:00
Ryan C. Gordon
afacf0395e
Static analysis fix.
2017-07-17 14:19:29 -04:00
Ryan C. Gordon
d38c10dea7
Removed unused variables.
2017-07-17 12:42:09 -04:00
Ryan C. Gordon
f83e36a8be
Static analysis fix (maybe?).
2017-07-17 12:41:28 -04:00
Ryan C. Gordon
c375504463
Removed unused variable.
2017-07-17 12:39:43 -04:00
Ryan C. Gordon
8c3501491c
Whoops, forgot to add the file. :)
2017-07-17 12:35:35 -04:00
Ryan C. Gordon
da1561a09f
Removed ancient LZMA SDK.
2017-07-17 12:20:14 -04:00
Ryan C. Gordon
a5d3dd498e
Rewrote the 7zip archiver.
...
This also updates the LZMA SDK to something more modern, which is now public
domain code, and squashed it into a single header for easier building.
2017-07-17 12:26:50 -04:00
Ryan C. Gordon
63de092cb7
zip: fail with correct error code if opening a directory.
2017-07-17 12:21:26 -04:00
Ryan C. Gordon
e84277a1df
Corrected reported value for unknown PHYSFS_stat() access times.
2017-07-17 12:21:02 -04:00
Ryan C. Gordon
62ad133862
Reworked the "unpacked" archivers to use DirTree.
...
This cleaned up a lot of code and improved things, and also allowed a lot of
the restrictions on unpacked archivers to be removed.
2017-07-16 04:39:14 -04:00
Ryan C. Gordon
ffa1836335
Moved ZIP tree management up to a higher level, to be reused elsewhere.
2017-07-15 15:59:55 -04:00
Ryan C. Gordon
56bddb0b78
Fixed some comments.
2017-07-16 04:35:46 -04:00
Ryan C. Gordon
5afd9754e2
Reenable QPAK support by default.
2017-07-16 04:34:52 -04:00