Commit graph

54 commits

Author SHA1 Message Date
Con Kolivas 29b166629a Huge rewrite of buffer reading in rzip.c. We use a wrapper instead of
accessing the buffer directly, thus allowing us to have window sizes larger than
available ram. This is implemented through the use of a "sliding mmap"
implementation. Sliding mmap uses two mmapped buffers, one large one as
previously, and one page sized smaller one. When an attempt is made to read
beyond the end of the large buffer, the small buffer is remapped to the file
area that's being accessed. While this implementation is 100x slower than direct
mmapping, it allows us to implement unlimited sized compression windows.
Implement the -U option with unlimited sized windows.
Rework the selection of compression windows. Instead of trying to guess how
much ram the machine might be able to access, we try to safely buffer as much
ram as we can, and then use that to determine the file buffer size. Do not
choose an arbitrary upper window limit unless -w is specified.
Rework the -M option to try to buffer the entire file, reducing the buffer
size until we succeed.
Align buffer sizes to page size.
Clean up lots of unneeded variables.
Fix lots of minor logic issues to do with window sizes accepted/passed to rzip
and the compression backends.
More error handling.
Change -L to affect rzip compression level directly as well as backend
compression level and use 9 by default now.
More cleanups of information output.
Use 3 point release numbering in case one minor version has many subversions.
Numerous minor cleanups and tidying.
Updated docs and manpages.
2010-11-04 21:14:55 +11:00
Con Kolivas c106128d1a Fix darwin build and clean up ifdef and incorrect ordered includes at the same time.
All builds were using fakememopen due to incorrect ifdef usage, so make GNU builds actually use memopen again.
2010-11-03 13:14:46 +11:00
Con Kolivas 9c00229ee1 Fix fd_hist check occurring too early on decompress.
fsync after flushing buffer.
Remove unnecessary memset after anonymous mmap.
Do test malloc before compression backend to see how big a chunk can be passed.
2010-11-02 13:50:15 +11:00
Con Kolivas c0ac813f6d Update docs.
Bump version number.
Tidy.
2010-11-02 11:14:00 +11:00
Con Kolivas 102140dc2b Reinstate the temporary files for decompression to stdout and testing as the damaged line reinstated last commit meant it looked like those combinations worked when they actually didn't.
Compression from stdin still works without temporary files.
2010-11-02 10:52:21 +11:00
Con Kolivas c464975b8d Oops, dropped some code! Fix it. 2010-11-02 00:18:17 +11:00
Con Kolivas 1e88273ffc Minor fixes. 2010-11-02 00:08:35 +11:00
Con Kolivas 772fbf602e Reinstitute 2GB window limit on 32 bit. It still doesn't work. However we can now decompress larger windows.
Do more mmap in place of malloc.
Update docs.
Remove redundant code.
2010-11-01 22:55:59 +11:00
Con Kolivas 0e09c9ec24 Reinstate the temporary file for decompression from stdin. Seeking makes that option broken without the temporary file.
Start documenting the new features in this version.
Minor tidying.
2010-11-01 21:37:55 +11:00
Con Kolivas ba1bf30d78 Minor tidying. 2010-11-01 19:59:27 +11:00
Con Kolivas 232b268367 Fix file size recording in the magic header when stdin is used. 2010-11-01 19:18:20 +11:00
Con Kolivas 43dd72b9e1 Do real stdin without the stupid temporary files by mmapping into anonymous ram. 2010-11-01 16:45:48 +11:00
Con Kolivas 49336a5e87 Update magic header info.
Move offset check to after reading chunk width.
Realloc instead of free and malloc.
2010-11-01 15:27:35 +11:00
Con Kolivas 1ed2ce423f Change the byte width to be variable depending on chunk size, and write it as a single char describing the next byte width for decompression.
More minor tidying.
2010-11-01 13:28:49 +11:00
Con Kolivas cb27097cb4 A few more cleanups to avoid using temporary files for stdout and testing on decompression. 2010-11-01 12:50:20 +11:00
Con Kolivas 3a22eb09b3 Fix output to work correctly to screen when stdout is selected.
Make stdout write directly to stdout on decompression without the need for temporary files since there is no need to seek backwards.
Make file testing not actually write the file during test.
More tidying up.
2010-11-01 11:18:58 +11:00
Con Kolivas a9ad1aef0e Start cleaning up all the flag testing with neat macros. 2010-11-01 04:53:53 +11:00
Con Kolivas 2bacbc60d2 We were attempting to truncate mmap to page size when only the offset needed to be.
Fix the longstanding limit on 32 bits that allowed us to allocate only 2GB of ram by moving the big malloc calls to mmap equivalents which allow us to mmap up to 2^44 bytes of anonymous space.
Use progressively smaller preallocation to try and defragment ram prior to real mmap call to increase success rate of allocating ram when it's a significant proportion of total ram.
Don't fail if preallocation is unsuccessful.
Add more detailed error reporting.
Minor cleanups.
2010-11-01 00:19:39 +11:00
Con Kolivas 19c2769061 Fix the page size rounding for mmap to work properly. 2010-10-31 17:02:12 +11:00
Con Kolivas 25705aec28 Minor tidying. 2010-10-31 15:17:04 +11:00
Con Kolivas 8d9b64e1ec Change byte width to be dependant on file size.
This will increase speed of compression and generate a smaller file, but not be backward compatible.
Tweak the way memory is allocated to optimise chances of success and minimise slowdown for the machine.
fsync to empty dirty data before allocating large ram to increase chance of mem allocation and decrease disk thrash of write vs read.
Add lots more information to verbose mode.
Lots of code tidying and minor tweaks.
2010-10-31 15:09:05 +11:00
Con Kolivas c5da3a1adb Add more robust checking.
Premalloc ram to improve early detection of being unable to allocate that much ram.
Make sure to always make chunk size a multiple of page size for mmap to work.
Begin changes to make variable byte width offsets in rzip chunks.
Decrease header entries to only 2 byte wide as per original rzip.
Random other tidying.
2010-10-31 10:35:04 +11:00
Con Kolivas d396a8a360 Fix version number to 0.47 2010-10-28 00:08:29 +11:00
Con Kolivas 572d184e54 Bump version to 0.47 2010-10-27 23:37:39 +11:00
Con Kolivas 505ae08add Fix the symlinking problem when DESTDIR is in use. 2010-10-27 23:27:55 +11:00
Con Kolivas 5e50f7abb6 Prep for release. 2010-05-22 10:16:53 +10:00
Con Kolivas d87c38f9ce Typo. 2010-05-22 10:09:27 +10:00
Con Kolivas 7d6c68d623 Add lrzuntar man, update manpages and prep for 0.46 release. 2010-05-22 10:07:18 +10:00
Con Kolivas de262bad2a Revert "Put tempfiles in /tmp rather than current directory."
This reverts commit 603785f783.

Not everyone has a large /tmp directory and may not be able to fit the temporary files in /tmp so it's not a great idea to do this by default.
2010-05-22 09:10:25 +10:00
Ed Avis b4dd8cdaa1 Also suppress final [OK] message with -q flag. 2010-05-21 15:40:33 +01:00
Ed Avis 603785f783 Put tempfiles in /tmp rather than current directory. 2010-05-19 14:35:39 +01:00
Ed Avis 025b4507c9 mkstemp returns -1 on failure. 2010-05-19 14:31:11 +01:00
Con Kolivas 22febff108 Fix typo in lrunzip man thanks to Karol Blazewicz 2010-04-26 22:06:57 +10:00
Con Kolivas d972496aa8 Make messages come via stdout instead of stderror courtesy of Alexander Saprykin 2010-04-25 16:26:00 +10:00
Con Kolivas e3916090a4 Fix more CRLF EOL 2010-04-25 16:20:51 +10:00
Con Kolivas b31b370b01 Fix windows EOL & update authors 2010-04-25 16:18:47 +10:00
Con Kolivas fa37910e48 Update docs to reflect changes 2010-04-03 22:27:19 +11:00
Con Kolivas d5bd8a5f4c Merge branch 'master' of git://github.com/gmakrydakis/lrzip 2010-04-03 22:14:13 +11:00
Con Kolivas 1fea416d17 Minor changes 2010-04-03 22:13:54 +11:00
George Makrydakis 3e12204fbe Stylistic fix on Makefile. 2010-04-03 14:03:41 +03:00
George Makrydakis 8eb0734e5c Minor fixes and adding an uninstall section to the Makefile.in file. 2010-04-03 13:12:18 +03:00
George Makrydakis eb2d2215ed Adding lrzuntar symlink during installation and adjusting help messages. 2010-04-03 12:50:57 +03:00
George Makrydakis d64bf643ff Added lrzuntar help message. 2010-04-03 12:36:56 +03:00
George Makrydakis 0ac7b8703b Adding authors and putting GPL notice on the script itself. 2010-04-03 12:34:16 +03:00
George Makrydakis fe39034810 Polishing some details in flow logic. 2010-04-03 12:21:31 +03:00
George Makrydakis cd1a1bd880 Adding symlink style "lrzuntar" support. 2010-04-03 11:42:12 +03:00
George Makrydakis 7c86442d38 Adding a basic .gitignore file. 2010-04-03 11:14:52 +03:00
George Makrydakis 71a5ee0303 Adjusting .lrz and relative path behaviour as per lrzip for lrztar. 2010-04-02 16:17:42 +03:00
Con Kolivas b62e67b43d lzma/C/Types.h~: Remove a backup file 2010-03-31 00:33:37 +11:00
Con Kolivas 14e365a804 version 0.45 2010-03-30 21:12:42 +11:00