Ryan C. Gordon
c375504463
Removed unused variable.
2017-07-17 12:39:43 -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
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
bf9999af2d
Fixed compiler warnings on Visual Studio about const qualifiers.
2017-07-12 23:54:45 -04:00
Ryan C. Gordon
19b15d34a1
Cleaned up what symbols are exported from the library.
2017-07-12 15:41:12 -04:00
Ryan C. Gordon
c2c1c7ac30
Removed __PHYSFS_platformSetDefaultAllocator(); nothing uses it now.
...
We can pull it back from revision control if something needs it later.
2017-07-11 23:52:13 -04:00
Ryan C. Gordon
f5c6383b4b
Patched to compile on Visual Studio.
2017-07-09 18:17:33 -04:00
Ryan C. Gordon
cf11d2ec99
Workaround snprintf() deficiencies on Visual Studio.
2017-07-09 17:46:53 -04:00
Ryan C. Gordon
f8ed5c6f7e
Replaced sprintf() calls with snprintf().
2017-07-09 17:06:37 -04:00
Ryan C. Gordon
32da097a55
Cleanup BAIL_* and GOTO_* macros to be less cluttered.
...
This also fixes really aggressive compiler warnings about the "if (!ERRPASS)"
construct producing unreachable code.
2017-07-06 11:51:41 -04:00
Ryan C. Gordon
062bdc2c5b
Patched to compile with OpenWatcom.
2017-07-05 23:49:10 -04:00
Francesco Bertolaccini
e4206408e5
Add support for VDF
2017-06-20 13:22:41 -04:00
Ryan C. Gordon
66b7767cec
Added support for password-protected .zip files.
...
To use: mount a .zip file as usual, open a file as usual, but append '$' plus
the password to the end of the path, like so:
PHYSFS_File *f = PHYSFS_openRead("/path/to/my/file.txt$MyPassword");
Note that this is the "traditional" PKWARE crypto, like you might get from
PkZip 2.04g or Info-ZIP. They have more advanced cryptography in the modern
.zip spec, but that's not implemented here. If you've ever tried to unzip
an archive and were prompted for a password, you probably saw the traditional
crypto at work.
Note that this is NOT a secure thing: if you ship an app that contains a
password, someone with a debugger can retrieve it. Note also that this
password could be available to any code registered as a PHYSFS_Archiver, and
that due to how archives combine into a single file tree, the wrong archiver
can get the password, at a minimum causing it to fail because passwords don't
match.
In short: make sure you know what you're doing before you use this!
2016-09-12 15:38:30 -04:00
Ryan C. Gordon
ab7eb81a4a
Platform deinit should happen last, since other deinit bits might depend on it.
2016-09-07 21:21:59 -04:00
Ryan C. Gordon
32d4f4541e
HTTPS all the things.
2016-02-25 02:51:28 -05:00
Ryan C. Gordon
b479c57bcb
zip: Reworked how we organize ZIP entries.
...
We now use a hashtable for lookups of specific paths, and organize the
entries into a directory tree. The end result is fast lookup and fast
enumeration without having to search a sorted array or tapdance with
substrings...which means the rare, mysterious bug where we failed
to find an existing file should be gone now, too.
2016-02-25 02:20:52 -05:00
Ryan C. Gordon
57bbcc3eb3
Fixed compiler warning about unused variable because assert() is awful.
2015-07-02 23:36:33 -04:00
Ryan C. Gordon
f6a62ecad1
Make sure read buffers get reinitialized before refilling (thanks, Michael!).
2014-09-11 00:07:23 -04:00
Ryan C. Gordon
53ef674270
Fixed resource leak when failing to mount a file that isn't an archive.
2014-08-19 02:28:13 -04:00
Willi Schinmeyer
9df22f4bf5
Fix NULL flush() in PHYSFS_Io crash
2014-07-20 13:36:56 +02:00
Ryan C. Gordon
016394067c
PHYSFS_stat() returns zero on error, not -1.
2014-02-07 16:22:43 -05:00
Ryan C. Gordon
5aa0dae5e2
Added a FIXME.
2014-01-16 07:03:42 -08:00
Ryan C. Gordon
5dd2cfce35
Fixed a single-line comment.
2014-01-16 07:03:34 -08:00
Ryan C. Gordon
4046759f61
Better basedir detection for various Unix platforms.
2013-08-23 23:41:35 -04:00
Ryan C. Gordon
4eafb44817
Get rid of array of static archivers.
2012-11-30 14:37:37 -05:00
Ryan C. Gordon
36b542ee7f
Cleaned out "exists" nonsense in openRead() API.
2012-11-30 13:00:08 -05:00
Ryan C. Gordon
697c31e81b
Remove __PHYSFS_setError(), use the new public API instead.
2012-11-30 12:49:25 -05:00
Ryan C. Gordon
7824a093fb
Cleaned out the "exists" nonsense in the stat() API.
2012-11-30 12:43:56 -05:00
Ryan C. Gordon
ada24e9c5d
Moved supportsSymlinks into PHYSFS_ArchiveInfo.
2012-11-30 00:04:52 -05:00
Ryan C. Gordon
16ee8355db
Centralize responsibility for filtering symlinks during enumeration.
2012-11-29 11:47:16 -05:00
Ryan C. Gordon
e40d80b00f
Allow application-supplied archivers.
...
This lets an application supply its own archivers, where they will work like
any built-in archiver. This allows abstract directory interfaces the same
way that PHYSFS_Io allows stream implementations.
This is a work in progress still. The API is still changing, and will remain
at version 0 until it is finalized (a theoretical future version 1 will be
for when the final public interface changes, not when we evolve the initial
API design).
2012-11-28 01:36:13 -05:00
Aleksi Nurmi
fd137cba42
SLB archiver
2012-11-12 23:40:29 +02:00
Ryan C. Gordon
5c18db7fe9
Don't sort if there's nothing to do (prevents array underflow, too).
2012-06-07 10:21:43 -04:00
Ryan C. Gordon
a865b14bec
Added Zip64 support to the .zip archiver.
...
Now we can handle .zip files > 4 gigabytes, etc.
2012-06-01 05:44:50 -04:00
Ryan C. Gordon
758e5beedb
Moved PHYSFS_ArchiveInfo into PHYSFS_Archiver.
2012-03-25 17:17:56 -04:00
Ryan C. Gordon
6222a4a92d
Add binary compatibility to PHYSFS_Io.
2012-03-25 17:18:24 -04:00
Ryan C. Gordon
a7383c295f
Moved some functions around.
...
We want the #undef malloc, etc, lines as close to the end of the file as
possible, and __PHYSFS_readAll() not in the middle of the allocator code.
2012-03-25 16:15:10 -04:00
Ryan C. Gordon
107f07da97
Better cleanup if PHYSFS_init() fails halfway through.
2012-03-25 16:13:23 -04:00
Ryan C. Gordon
4cfd7277f3
Made archiver list dynamic, in preparation for external archivers.
2012-03-25 15:59:29 -04:00
Ryan C. Gordon
0de337eb75
Renamed PHYSFS_Archiver::dirClose() to PHYSFS_Archiver::closeArchive().
2012-03-24 10:36:11 -04:00
Ryan C. Gordon
b2e6882f52
Another FIXME.
2012-03-24 00:32:22 -04:00
Ryan C. Gordon
dda627412c
More FIXME cleanup.
2012-03-24 00:26:04 -04:00
Ryan C. Gordon
9d01a645ed
Make sure base dir always has a dirsep at the end of it.
...
Now the higher level doesn't have to check for this and realloc the string.
2012-03-23 04:14:01 -04:00
Ryan C. Gordon
0584117f85
Changed so that this builds a reasonable default with no command line #defines.
...
That is, it now builds .zip and native dir support, and that's it.
2012-03-23 00:52:32 -04:00
Ryan C. Gordon
76fdd9cab6
Removed a FIXME: actually, the code DOES set an error, as far as I can tell.
2012-03-22 02:58:45 -04:00
Ryan C. Gordon
46125c95b3
Removed a FIXME.
2012-03-22 02:57:29 -04:00
Ryan C. Gordon
a0af6bbb71
Removed fallback for systems that have no userdir.
...
This would try to build something under the basedir for Windows 95, OS/2, etc,
but those targets are gone now. Modern systems provide this. If a given
system can't in the future, they can pull this code out of revision control
and use it in their implementation of __PHYSFS_platformCalcUserDir().
This change let me remove __PHYSFS_platformGetUserName(), too.
2012-03-22 00:27:46 -04:00
Ryan C. Gordon
b1d4afcbd3
Cleaned up some FIXMEs.
2012-03-22 00:21:28 -04:00
Ryan C. Gordon
60aa0e460c
Make sure the prefdir has a final dirsep on it.
...
This matches the behaviour of PHYSFS_getBaseDir() and PHYSFS_getUserDir().
2012-03-21 23:59:43 -04:00
Ryan C. Gordon
43367c0c29
Fixed some brainfarts in the Windows version of PHYSFS_getPrefDir().
2012-03-21 23:52:44 -04:00
Ryan C. Gordon
3a5a780988
PHYSFS_setSaneConfig() now uses PHYSFS_getPrefDir().
2012-03-21 23:31:21 -04:00
Ryan C. Gordon
24d6a925d1
Added PHYSFS_getPrefDir().
2012-03-21 23:30:50 -04:00
Ryan C. Gordon
ba676b23e5
Reworked the error reporting API. Now we use error codes instead of strings.
...
This is based on work originally done by Christoph Nelles.
2012-03-20 15:38:12 -04:00
Ryan C. Gordon
8d7cf56651
Fixed mutex misuse.
2012-03-20 15:28:19 -04:00
Ryan C. Gordon
be4ae4d401
Removed __PHYSFS_platformCvtToDependent().
...
It's only used by archive_dir.c, and it's trivial to make it into
platform-independent code for that one module.
Bonus: less malloc() pressure...now every access to the native filesystem
doesn't require a temporary heap allocation.
2012-03-15 01:58:39 -04:00
Ryan C. Gordon
03dbc3f758
Make __PHYSFS_platformDirSeparator into a single char.
...
This multichar thing was always stupid. Pull it out of revision control if
you ever need it.
2012-03-15 01:54:57 -04:00
Ryan C. Gordon
aaf8868c8d
Removed __PHYSFS_convertToDependent(), as dead code.
2012-03-15 00:40:00 -04:00
Ryan C. Gordon
624d7f3a42
Fixed PHYSFS_read() and PHYSFS_write() in the dev branch.
...
PHYSFS_read() and PHYSFS_write() should return number of objects written,
not object size.
Thanks to Evgeny Podjachev for the fix!
2012-03-14 05:47:15 -04:00
Ryan C. Gordon
611aeec61b
Removed __PHYSFS_platformRealPath().
...
It was an ugly piece of code, didn't work on The Hurd (apparently), likely
dangerous in its incomplete understanding of Windows paths, and only
used in places that should have given us normalized, absolute
paths in the first place anyhow.
2012-03-11 04:19:36 -04:00
Ryan C. Gordon
df3c281014
Fixed some compiler warnings.
2012-03-10 03:18:33 -05:00
Ryan C. Gordon
9dceda3d9f
Align smallAllocs to the native pointer size.
2012-03-09 22:27:51 -05:00
Ryan C. Gordon
a0b21c9ae9
Cleaned up all the readAll() cut and paste.
2012-03-09 04:50:27 -05:00
Ryan C. Gordon
9d11b991bc
Fixed up some bugs that clang's static analysis reported.
2011-10-18 15:55:29 -04:00
Ryan C. Gordon
f5e0dbe78b
Patched to compile on Windows.
2011-01-21 02:50:20 -05:00
Ryan C. Gordon
4d567a0d2f
Fixed cut-and-paste error in malloc() failure test (thanks, Tolga!).
2010-10-04 01:48:34 -04:00
Ryan C. Gordon
f871802f51
Cleaned up some #includes.
2010-09-06 19:35:01 -04:00
Ryan C. Gordon
7f0e7105a7
Removed isDirectory, isSymLink and exists methods from internal code.
...
Use the PhysFS stat() interface instead.
2010-09-05 02:41:13 -04:00
Ryan C. Gordon
84c6e2242e
Added PHYSFS_mountHandle(). Now you can do archives-in-archives!
2010-08-30 03:02:32 -04:00
Ryan C. Gordon
d9e98704f7
PHYSFS_getRealDir() can't report a path for things that aren't real files.
2010-08-29 21:36:38 -04:00
Ryan C. Gordon
5ff1a2a12e
Make PHYSFS_addToSearchPath() use doMount(), too.
2010-08-30 02:39:28 -04:00
Ryan C. Gordon
bb9f5e5049
Added PHYSFS_mountMemory().
2010-08-30 02:39:11 -04:00
Ryan C. Gordon
8cd320b858
Added PHYSFS_mountIo().
2010-08-29 20:56:35 -04:00
Ryan C. Gordon
4bc5ed1725
Abstracted file i/o into PHYSFS_Io interface.
...
This touched a lot of code, and involved cleaning up a lot of stuff.
2010-08-30 03:01:57 -04:00
Ryan C. Gordon
fc680aa468
Removed PHYSFS_Archiver's isArchive() method.
...
It was redundant with openArchive().
2010-08-24 10:05:58 -04:00
Ryan C. Gordon
c92f3035f9
Made __PHYSFS_ui64FitsAddressSpace's behaviour match its name.
2010-08-24 10:03:25 -04:00
Ryan C. Gordon
c1969d0595
Added PHYSFS_unmount(), deprecated addToSearchPath and removeFromSearchPath.
2010-08-22 03:43:22 -04:00
Ryan C. Gordon
f7a8d9292c
Fixed PHYSFS_stat()'s return value to match rest of PhysicsFS API.
2010-08-21 19:10:42 -04:00
Ryan C. Gordon
b69dfedaf0
Deprecated PHYSFS_getLastModTime()...use PHYSFS_stat() instead, now.
2010-08-21 17:34:00 -04:00
Ryan C. Gordon
8b0988a038
Some minor FIXME tweaks.
2010-08-21 15:07:13 -04:00
Ryan C. Gordon
4000b234c0
Moved all the file i/o from stdio-style to POSIX-style.
...
Instead of trying to deal with a count of objects, just give 'em a stream of
bytes. This is WAY simpler to work with at the implementation level, and
removes confusion about what to do with a partial read.
This will be very useful when we expose the i/o interface to applications.
2010-08-21 02:47:58 -04:00
Ryan C. Gordon
f329f4ed0b
Added a FIXME.
2010-08-20 01:25:20 -04:00
Ryan C. Gordon
72b232d4f5
If $HOME is invalid, scratch together a different userdir.
...
Partially fixes http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=553174
2010-03-21 12:11:39 -04:00
Ryan C. Gordon
cd3587bbf3
Make ISO9660 archiver optional.
2010-03-17 15:35:29 -04:00
Ryan C. Gordon
0fa35af2b9
ISO9660 archiver, compliments of Christoph Nelles.
2010-03-17 14:50:54 -04:00
Ryan C. Gordon
f1cd4d8f0d
THIS is Christoph's PHYSFS_stat() work.
...
I've merged some basic ideas from the other patch, which was Indy Sam's work,
and cleaned up a few things.
2010-02-15 14:02:36 -05:00
Ryan C. Gordon
8e78e4719d
Backed out changeset f87b0b7cca8e ... This wasn't Christoph's patch. Sorry!
2010-02-15 09:19:38 -05:00
Ryan C. Gordon
7cc80bebc5
Added first work on PHYSFS_stat() API (thanks, Christoph!).
2010-02-14 23:07:19 -05:00
Ryan C. Gordon
595ac1da39
Cleaned up returns that look like function calls for my updated coding style.
2010-01-28 02:27:45 -05:00
Ryan C. Gordon
cef8847a06
Attempt to clean up the thread ID mess in platform_unix ...
2009-09-06 01:05:27 -04:00
Ryan C. Gordon
07e97a0166
Fixed some Sun Studio warnings about unreachable code.
2009-04-13 03:40:30 -04:00
Ryan C. Gordon
fb5e8d9cd2
PHYSFS_freeList(NULL) is now a safe no-op.
2009-03-28 17:50:54 -04:00
Ryan C. Gordon
d6ce63e912
Added PHYSFS_getAllocator().
2009-03-28 16:15:03 -04:00
Ryan C. Gordon
2a65060cde
Moved directory structure around.
2009-03-27 15:10:42 -04:00