aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2013-11-12Update THANKS.Lasse Collin1-0/+1
2013-11-12xz: Make --block-list and --block-size work together in single-threaded.Lasse Collin1-15/+75
Previously, --block-list and --block-size only worked together in threaded mode. Boundaries are specified by --block-list, but --block-size specifies the maximum size for a Block. Now this works in single-threaded mode too. Thanks to James M Leddy for the original patch.
2013-10-26Bump the version number to 5.1.3alpha.larhzu/v5.1.3alphaLasse Collin2-2/+2
2013-10-26Update NEWS for 5.1.3alpha.Lasse Collin1-0/+35
2013-10-26Update TODO.Lasse Collin1-4/+0
2013-10-25xz: Document behavior of --block-list with threads.Lasse Collin1-3/+21
This needs to be updated before 5.2.0.
2013-10-22xz: Document --flush-timeout=TIMEOUT on the man page.Lasse Collin1-1/+36
2013-10-22xz: Take advantage of LZMA_FULL_BARRIER with --block-list.Lasse Collin1-17/+15
Now if --block-list is used in threaded mode, the encoder won't need to flush at each Block boundary specified via --block-list. This improves performance a lot, making threading helpful with --block-list. The flush timer was reset after LZMA_FULL_FLUSH but since LZMA_FULL_BARRIER doesn't flush, resetting the timer is no longer done.
2013-10-02liblzma: Support LZMA_FULL_FLUSH and _BARRIER in threaded encoder.Lasse Collin1-16/+39
Now --block-list=SIZES works with in the threaded mode too, although the performance is still bad due to the use of LZMA_FULL_FLUSH instead of the new LZMA_FULL_BARRIER.
2013-10-02liblzma: Add LZMA_FULL_BARRIER support to single-threaded encoder.Lasse Collin4-11/+54
In the single-threaded encoder LZMA_FULL_BARRIER is simply an alias for LZMA_FULL_FLUSH.
2013-09-17liblzma: Add block_buffer_encoder.h into Makefile.inc.Lasse Collin1-0/+1
This should have been in b465da5988dd59ad98fda10c2e4ea13d0b9c73bc.
2013-09-17xz: Add a missing test for TUKLIB_DOSLIKE.Lasse Collin1-0/+2
2013-09-17Add native threading support on Windows.Lasse Collin7-215/+573
Now liblzma only uses "mythread" functions and types which are defined in mythread.h matching the desired threading method. Before Windows Vista, there is no direct equivalent to pthread condition variables. Since this package doesn't use pthread_cond_broadcast(), pre-Vista threading can still be kept quite simple. The pre-Vista code doesn't use anything that wasn't already available in Windows 95, so the binaries should run even on Windows 95 if someone happens to care.
2013-09-11Build: Remove a comment about Automake 1.10 from configure.ac.Lasse Collin1-2/+0
The previous commit supports silent rules and that requires Automake 1.11.
2013-09-09Build: Create liblzma.pc in a src/liblzma/Makefile.am.Lasse Collin2-1/+20
Previously it was done in configure, but doing that goes against the Autoconf manual. Autoconf requires that it is possible to override e.g. prefix after running configure and that doesn't work correctly if liblzma.pc is created by configure. A potential downside of this change is that now e.g. libdir in liblzma.pc is a standalone string instead of being defined via ${prefix}, so if one overrides prefix when running pkg-config the libdir won't get the new value. I don't know if this matters in practice. Thanks to Vincent Torri.
2013-08-04Fix the previous commit which broke the build.Lasse Collin1-1/+1
Apparently I didn't even compile-test the previous commit. Thanks to Christian Hesse.
2013-08-03Windows: Add Windows support to tuklib_cpucores().Lasse Collin2-3/+29
It is used for Cygwin too. I'm not sure if that is a good or bad idea. Thanks to Vincent Torri.
2013-08-03macosx: separate liblzma packageAnders F Bjorklund1-8/+15
2013-08-03macosx: set minimum to leopardAnders F Bjorklund1-5/+8
2013-08-03move configurables into variablesAnders F Bjorklund1-7/+18
2013-07-15Update THANKS.Lasse Collin1-0/+1
2013-07-15Build: Fix the detection of missing CRC32.Lasse Collin1-1/+1
Thanks to Vincent Torri.
2013-07-04xz: Add preliminary support for --flush-timeout=TIMEOUT.Lasse Collin3-21/+78
When --flush-timeout=TIMEOUT is used, xz will use LZMA_SYNC_FLUSH if read() would block and at least TIMEOUT milliseconds has elapsed since the previous flush. This can be useful in realtime-like use cases where the data is simultanously decompressed by another process (possibly on a different computer). If new uncompressed input data is produced slowly, without this option xz could buffer the data for a long time until it would become decompressible from the output. If TIMEOUT is 0, the feature is disabled. This is the default. This commit affects the compression side. Using xz for the decompression side for the above purpose doesn't work yet so well because there is quite a bit of input and output buffering when decompressing. The --long-help or man page were not updated yet. The details of this feature may change.
2013-07-04xz: Don't set src_eof=true after an I/O error because it's useless.Lasse Collin1-3/+0
2013-07-04xz: Fix the test when to read more input.Lasse Collin1-3/+3
Testing for end of file was no longer correct after full flushing became possible with --block-size=SIZE and --block-list=SIZES. There was no bug in practice though because xz just made a few unneeded zero-byte reads.
2013-07-04xz: Move some of the timing code into mytime.[hc].Lasse Collin6-40/+158
This switches units from microseconds to milliseconds. New clock_gettime(CLOCK_MONOTONIC) will be used if available. There is still a fallback to gettimeofday().
2013-07-01Update THANKS.Lasse Collin1-0/+1
2013-07-01xz: Silence a warning seen with _FORTIFY_SOURCE=2.Lasse Collin1-1/+7
Thanks to Christian Hesse.
2013-06-30Update NEWS for 5.0.5.Lasse Collin1-0/+52
2013-06-30Man pages: Use similar syntax for synopsis as in xz.Lasse Collin3-10/+10
The man pages of lzmainfo, xzmore, and xzdec had similar constructs as the man page of xz had before the commit eb6ca9854b8eb9fbf72497c1cf608d6b19d2d494. Eric S. Raymond didn't mention these man pages in his bug report, but it's nice to be consistent.
2013-06-29xz: Use non-blocking I/O for the output file.Lasse Collin1-8/+49
Now both reading and writing should be without race conditions with signals. They might still be signal handling issues left. Signals are blocked during many operations to avoid EINTR but it may cause problems e.g. if writing to stderr blocks when trying to display an error message.
2013-06-28xz: Fix return value type in io_write_buf().Lasse Collin1-1/+1
It didn't affect the behavior of the code since -1 becomes true anyway.
2013-06-28xz: Use the self-pipe trick to avoid a race condition with signals.Lasse Collin3-12/+57
It is possible that a signal to set user_abort arrives right before a blocking system call is made. In this case the call may block until another signal arrives, while the wanted behavior is to make xz clean up and exit as soon as possible. After this commit, the race condition is avoided with the input side which already uses non-blocking I/O. The output side still uses blocking I/O and thus has the race condition.
2013-06-28xz: Use non-blocking I/O for the input file.Lasse Collin1-45/+111
2013-06-28xz: Remove an outdated NetBSD-specific comment.Lasse Collin1-4/+0
Nowadays errno == EFTYPE is documented in open(2).
2013-06-28xz: Fix error detection of fcntl(fd, F_SETFL, flags) calls.Lasse Collin1-4/+4
POSIX says that fcntl(fd, F_SETFL, flags) returns -1 on error and "other than -1" on success. This is how it is documented e.g. on OpenBSD too. On Linux, success with F_SETFL is always 0 (at least accorinding to fcntl(2) from man-pages 3.51).
2013-06-28xz: Fix use of wrong variable in a fcntl() call.Lasse Collin1-11/+13
Due to a wrong variable name, when writing a sparse file to standard output, *all* file status flags were cleared (to the extent the operating system allowed it) instead of only clearing the O_APPEND flag. In practice this worked fine in the common situations on GNU/Linux, but I didn't check how it behaved elsewhere. The original flags were still restored correctly. I still changed the code to use a separate boolean variable to indicate when the flags should be restored instead of relying on a special value in stdout_flags.
2013-06-28xz: Fix assertion related to posix_fadvise().Lasse Collin1-8/+2
Input file can be a FIFO or something else that doesn't support posix_fadvise() so don't check the return value even with an assertion. Nothing bad happens if the call to posix_fadvise() fails.
2013-06-26xz: Check the value of lzma_stream_flags.version in --list.Lasse Collin1-0/+14
It is a no-op for now, but if an old xz version is used together with a newer liblzma that supports something new, then this check becomes important and will stop the old xz from trying to parse files that it won't understand.
2013-06-26Build: Require Automake 1.12 and use serial-tests option.Lasse Collin1-1/+3
It should actually still work with Automake 1.10 if the serial-tests option is removed. Automake 1.13 started using parallel tests by default and the option to get the old behavior isn't supported before 1.12. At least for now, parallel tests don't improve anything in XZ Utils but they hide the progress output from test_compress.sh.
2013-06-23Update THANKS.Lasse Collin1-0/+1
2013-06-23liblzma: Avoid a warning about a shadowed variable.Lasse Collin1-2/+2
On Mac OS X wait() is declared in <sys/wait.h> that we include one way or other so don't use "wait" as a variable name. Thanks to Christian Kujau.
2013-06-23xz: Validate Uncompressed Size from Block Header in list.c.Lasse Collin1-1/+13
This affects only "xz -lvv". Normal decompression with xz already detected if Block Header and Index had mismatched Uncompressed Size fields. So this just makes "xz -lvv" show such files as corrupt instead of showing the Uncompressed Size from Index.
2013-06-21Update THANKS.Lasse Collin1-0/+2
2013-06-21xz: Make the man page more friendly to doclifter.Lasse Collin1-3/+4
Thanks to Eric S. Raymond.
2013-06-21xz: A couple of man page fixes.Lasse Collin1-12/+23
Now the interaction of presets and custom filter chains is described correctly. Earlier it contradicted itself. Thanks to DevHC who reported these issues on IRC to me on 2012-12-14.
2013-06-21xz: Fix interaction between preset and custom filter chains.Lasse Collin1-14/+21
There was somewhat illogical behavior when --extreme was specified and mixed with custom filter chains. Before this commit, "xz -9 --lzma2 -e" was equivalent to "xz --lzma2". After it is equivalent to "xz -6e" (all earlier preset options get forgotten when a custom filter chain is specified and the default preset is 6 to which -e is applied). I find this less illogical. This also affects the meaning of "xz -9e --lzma2 -7". Earlier it was equivalent to "xz -7e" (the -e specified before a custom filter chain wasn't forgotten). Now it is "xz -7". Note that "xz -7e" still is the same as "xz -e7". Hopefully very few cared about this in the first place, so pretty much no one should even notice this change. Thanks to Conley Moorhous.
2013-04-27Build: Use -Wvla with GCC if supported.Lasse Collin1-0/+1
Variable-length arrays are mandatory in C99 but optional in C11. The code doesn't currently use any VLAs and it shouldn't in the future either to stay compatible with C11 without requiring any optional C11 features.
2013-04-15xzdec: Improve the --help message.Lasse Collin1-5/+5
The options are now ordered in the same order as in xz's help message. Descriptions were added to the options that are ignored. I left them in parenthesis even if it looks a bit weird because I find it easier to spot the ignored vs. non-ignored options from the list that way.
2013-04-05Update THANKS.Lasse Collin1-0/+2
2013-04-05xzgrep: make the '-h' option to be --no-filename equivalentJeff Bastian1-1/+1
* src/scripts/xzgrep.in: Accept the '-h' option in argument parsing.
2013-03-23liblzma: Be less picky in lzma_alone_decoder().Lasse Collin3-11/+18
To avoid false positives when detecting .lzma files, rare values in dictionary size and uncompressed size fields were rejected. They will still be rejected if .lzma files are decoded with lzma_auto_decoder(), but when using lzma_alone_decoder() directly, such files will now be accepted. Hopefully this is an OK compromise. This doesn't affect xz because xz still has its own file format detection code. This does affect lzmadec though. So after this commit lzmadec will accept files that xz or xz-emulating-lzma doesn't. NOTE: lzma_alone_decoder() still won't decode all .lzma files because liblzma's LZMA decoder doesn't support lc + lp > 4. Reported here: http://sourceforge.net/projects/lzmautils/forums/forum/708858/topic/7068827
2013-03-23liblzma: Use lzma_block_buffer_bound64() in threaded encoder.Lasse Collin1-16/+50
Now it uses lzma_block_uncomp_encode() if the data doesn't fit into the space calculated by lzma_block_buffer_bound64().
2013-03-23liblzma: Fix another deadlock in the threaded encoder.Lasse Collin1-3/+6
This race condition could cause a deadlock if lzma_end() was called before finishing the encoding. This can happen with xz with debugging enabled (non-debugging version doesn't call lzma_end() before exiting).
2013-03-23liblzma: Add lzma_block_uncomp_encode().Lasse Collin4-31/+106
This also adds a new internal function lzma_block_buffer_bound64() which is similar to lzma_block_buffer_bound() but uses uint64_t instead of size_t.
2013-03-05Avoid unneeded use of awk in xzless.Lasse Collin1-2/+1
Use "read" instead of "awk" in xzless to get the version number of "less". The need for awk was introduced in the commit db5c1817fabf7cbb9e4087b1576eb26f0747338e. Thanks to Ariel P for the patch.
2012-12-14Make the progress indicator smooth in threaded mode.Lasse Collin6-13/+129
This adds lzma_get_progress() to liblzma and takes advantage of it in xz. lzma_get_progress() collects progress information from the thread-specific structures so that fairly accurate progress information is available to applications. Adding a new function seemed to be a better way than making the information directly available in lzma_stream (like total_in and total_out are) because collecting the information requires locking mutexes. It's waste of time to do it more often than the up to date information is actually needed by an application.
2012-12-14liblzma: Fix mythread_sync for nested locking.Lasse Collin1-2/+3
2012-12-13xz: Mention --threads in --help.Lasse Collin1-0/+4
Thanks to Olivier Delhomme for pointing out that this was still missing.
2012-11-21xzless: Make "less -V" parsing more robustJonathan Nieder1-1/+2
In v4.999.9beta~30 (xzless: Support compressed standard input, 2009-08-09), xzless learned to parse ‘less -V’ output to figure out whether less is new enough to handle $LESSOPEN settings starting with “|-”. That worked well for a while, but the version string from ‘less’ versions 448 (June, 2012) is misparsed, producing a warning: $ xzless /tmp/test.xz; echo $? /usr/bin/xzless: line 49: test: 456 (GNU regular expressions): \ integer expression expected 0 More precisely, modern ‘less’ lists the regexp implementation along with its version number, and xzless passes the entire version number with attached parenthetical phrase as a number to "test $a -gt $b", producing the above confusing message. $ less-444 -V | head -1 less 444 $ less -V | head -1 less 456 (no regular expressions) So relax the pattern matched --- instead of expecting "less <number>", look for a line of the form "less <number>[ (extra parenthetical)]". While at it, improve the behavior when no matching line is found --- instead of producing a cryptic message, we can fall back on a LESSPIPE setting that is supported by all versions of ‘less’. The implementation uses "awk" for simplicity. Hopefully that’s portable enough. Reported-by: Jörg-Volker Peetz <jvpeetz@web.de> Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
2012-10-03xz: Fix the note about --rsyncable on the man page.Lasse Collin1-8/+9
2012-09-28xz: Improve handling of failed realloc in xrealloc.Lasse Collin1-2/+12
Thanks to Jim Meyering.
2012-08-24A few typo fixes to comments and the xz man page.Lasse Collin3-4/+3
Thanks to Jim Meyering.
2012-08-13xz: Add a warning to --help about alpha and beta versions.Lasse Collin1-0/+5
2012-08-02Build: Bump gettext version requirement to 0.18.Lasse Collin1-1/+1
Otherwise too old version of m4/lib-link.m4 gets included when autoreconf -fi is run.
2012-07-17Update THANKS.Lasse Collin1-0/+1
2012-07-17liblzma: Make the use of lzma_allocator const-correct.Lasse Collin71-219/+269
There is a tiny risk of causing breakage: If an application assigns lzma_stream.allocator to a non-const pointer, such code won't compile anymore. I don't know why anyone would do such a thing though, so in practice this shouldn't cause trouble. Thanks to Jan Kratochvil for the patch.
2012-07-05Tests: Remove tests/test_block.c that had gotten committed accidentally.Lasse Collin1-52/+0
2012-07-05Build: Include macosx/build.sh in the distribution.Lasse Collin1-0/+1
It has been in the Git repository since 2010 but probably few people have seen it since it hasn't been included in the release tarballs. :-(
2012-07-05Build: Include validate_map.sh in the distribution.Lasse Collin1-1/+1
It's required by "make mydist". Fix also the location of EXTRA_DIST+= so that those files get distributed also if symbol versioning isn't enabled.
2012-07-05Docs: Fix the name LZMA Utils -> XZ Utils in debug/README.Lasse Collin1-1/+1
2012-07-05Include debug/translation.bash in the distribution.Lasse Collin2-2/+5
Also fix the script name mentioned in README.
2012-07-04xz: Document --block-list better.Lasse Collin1-1/+7
Thanks to Jonathan Nieder.
2012-07-04Bump the version number to 5.1.2alpha.larhzu/v5.1.2alphaLasse Collin2-2/+2
2012-07-04Update NEWS for 5.1.2alpha.Lasse Collin1-0/+41
2012-07-04xz: Fix the version number printed by xz -lvv.Lasse Collin1-3/+3
The decoder bug was fixed in 5.0.2 instead of 5.0.3.
2012-07-04Build: Add a comment to configure.ac about symbol versioning.Lasse Collin1-0/+4
2012-07-04Update TODO.Lasse Collin1-2/+10
2012-07-04Document --enable-symbol-versions in INSTALL.Lasse Collin1-0/+5
2012-07-03xz: Add incomplete support for --block-list.Lasse Collin7-10/+151
It's broken with threads and when also --block-size is used.
2012-07-01xz: Update the man page about the new field in --robot -lvv.Lasse Collin1-1/+17
2012-06-28liblzma: Check that the first byte of range encoded data is 0x00.Lasse Collin2-5/+15
It is just to be more pedantic and thus perhaps catch broken files slightly earlier.
2012-06-22Update NEWS from 5.0.4.Lasse Collin1-0/+37
2012-06-22xz: Update man page date to match the latest update.Lasse Collin1-1/+1
2012-06-18Docs: Language fix to 01_compress_easy.c.Lasse Collin1-1/+1
Thanks to Jonathan Nieder.
2012-06-14Fix the top-level Makefile.am for the new example programs.Lasse Collin1-2/+10
2012-06-14Docs: Add new example programs.Lasse Collin5-0/+827
These have more comments than the old examples and human-readable error messages. More tutorial-like examples are needed but these are a start.
2012-06-14Docs: Move xz_pipe_comp.c and xz_pipe_decomp.c to doc/examples_old.Lasse Collin2-0/+0
It is good to keep these around to so that if someone has copied the decompressor bug from xz_pipe_decomp.c he has an example how to easily fix it.
2012-06-14Docs: Fix a bug in xz_pipe_decomp.c example program.Lasse Collin1-1/+9
2012-05-30Translations: Update the French translation.Lasse Collin1-69/+79
Thanks to Adrien Nader.
2012-05-29Translations: Update the German translation.Lasse Collin1-96/+133
The previous only included the new strings in v5.0.
2012-05-29Translations: Update the German translation.Lasse Collin1-78/+91
2012-05-29Translations: Update Polish translation.Lasse Collin1-118/+165
2012-05-28liblzma: Fix possibility of incorrect LZMA_BUF_ERROR.Lasse Collin3-2/+116
lzma_code() could incorrectly return LZMA_BUF_ERROR if all of the following was true: - The caller knows how many bytes of output to expect and only provides that much output space. - When the last output bytes are decoded, the caller-provided input buffer ends right before the LZMA2 end of payload marker. So LZMA2 won't provide more output anymore, but it won't know it yet and thus won't return LZMA_STREAM_END yet. - A BCJ filter is in use and it hasn't left any unfiltered bytes in the temp buffer. This can happen with any BCJ filter, but in practice it's more likely with filters other than the x86 BCJ. Another situation where the bug can be triggered happens if the uncompressed size is zero bytes and no output space is provided. In this case the decompression can fail even if the whole input file is given to lzma_code(). A similar bug was fixed in XZ Embedded on 2011-09-19.
2012-05-28Update THANKS.Lasse Collin1-0/+1
2012-05-28xz: Don't show a huge number in -vv when memory limit is disabled.Lasse Collin1-1/+11
2012-05-27xz: Document the "summary" lines of --robot -lvv.Lasse Collin1-0/+19
This documents only the columns that are in v5.0. The new columns added in the master branch aren't necessarily stable yet.
2012-05-27xz: Fix output of verbose --robot --list modes.Lasse Collin1-1/+1
It printed the filename in "filename (x/y)" format which it obviously shouldn't do in robot mode.
2012-05-24Build: Upgrade m4/acx_pthread.m4 to the latest version.Lasse Collin1-36/+62
2012-05-10Update THANKS.Lasse Collin1-0/+1
2012-05-10Docs: Cleanup line wrapping a bit.Lasse Collin2-30/+31
2012-05-10Fix a few typos and add some missing articles in some documents.Benno Schulenberg4-65/+65
Also hyphenate several compound adjectives. Signed-off-by: Benno Schulenberg <bensberg@justemail.net>
2012-04-29Windows: Update notes about static linking with MSVC.Lasse Collin1-4/+9
2012-04-19liblzma: Remove outdated comments.Lasse Collin2-5/+1
2012-04-19DOS: Link against DJGPP's libemu to support FPU emulation.Lasse Collin1-1/+1
This way xz should work on 386SX and 486SX. Floating point only is needed for verbose output in xz.
2012-04-19liblzma: Fix Libs.private in liblzma.pc to include -lrt when needed.Lasse Collin1-1/+1
2012-04-19Docs: Update MINIX 3 information in INSTALL.Lasse Collin1-3/+5
2012-02-22Update THANKS.Lasse Collin1-0/+1
2012-02-22Fix exit status of xzgrep when grepping binary files.Lasse Collin1-1/+2
When grepping binary files, grep may exit before it has read all the input. In this case, gzip -q returns 2 (eating SIGPIPE), but xz and bzip2 show SIGPIPE as the exit status (e.g. 141). This causes wrong exit status when grepping xz- or bzip2-compressed binary files. The fix checks for the special exit status that indicates SIGPIPE. It uses kill -l which should be supported everywhere since it is in both SUSv2 (1997) and POSIX.1-2008. Thanks to James Buren for the bug report.
2012-02-22Update THANKS.Lasse Collin1-0/+1
2012-02-22Fix compiling with IBM XL C on AIX.Lasse Collin2-15/+27
2012-01-10Tests: Fix a compiler warning with _FORTIFY_SOURCE.Lasse Collin1-1/+2
Reported here: http://sourceforge.net/projects/lzmautils/forums/forum/708858/topic/4927385
2011-12-19Docs: Explain the stable releases better in README.Lasse Collin1-1/+5
2011-11-07xz: Show minimum required XZ Utils version in xz -lvv.Lasse Collin1-6/+57
Man page wasn't updated yet.
2011-11-04xz: Fix a typo in a comment.Lasse Collin1-1/+1
Thanks to Bela Lubkin.
2011-11-03Update THANKS.Lasse Collin1-0/+1
2011-11-03xz: Fix xz on EBCDIC systems.Lasse Collin1-1/+4
Thanks to Chris Donawa.
2011-10-23Update THANKS.Lasse Collin1-0/+1
2011-10-23liblzma: Fix invalid free() in the threaded encoder.Lasse Collin1-0/+4
It was triggered if initialization failed e.g. due to running out of memory. Thanks to Arkadiusz Miskiewicz.
2011-10-23liblzma: Fix a deadlock in the threaded encoder.Lasse Collin1-1/+3
It was triggered when reinitializing the encoder, e.g. when encoding two files.
2011-09-06Build: Fix "make check" on Windows.Lasse Collin2-2/+7
2011-08-09Update THANKS.Lasse Collin1-0/+2
2011-08-09Workaround unusual SIZE_MAX on SCO OpenServer.Lasse Collin1-3/+6
2011-08-06Run the scripts with the correct shell in test_scripts.sh.Lasse Collin2-8/+8
The scripts are now made executable in the build tree. This way the scripts can be run like programs in test_scripts.sh. Previously test_scripts.sh always used sh but it's not correct if @POSIX_SHELL@ is set to something else by configure. Thanks to Jonathan Nieder for the patch.
2011-07-31Fix exit status of "xzdiff foo.xz bar.xz".Lasse Collin3-1/+59
xzdiff was clobbering the exit status from diff in a case statement used to analyze the exit statuses from "xz" when its operands were two compressed files. Save and restore diff's exit status to fix this. The bug is inherited from zdiff in GNU gzip and was fixed there on 2009-10-09. Thanks to Jonathan Nieder for the patch and to Peter Pallinger for reporting the bug.
2011-06-16liblzma: Remove unneeded semicolon.Lasse Collin1-1/+1
2011-05-28Build: Make configure print if symbol versioning is enabled or not.Lasse Collin1-0/+2
2011-05-28Don't call close(-1) in tuklib_open_stdxxx() on error.Lasse Collin1-1/+3
Thanks to Jim Meyering.
2011-05-28liblzma: Use symbol versioning.Lasse Collin5-0/+201
Symbol versioning is enabled by default on GNU/Linux, other GNU-based systems, and FreeBSD. I'm not sure how stable this is, so it may need backward-incompatible changes before the next release. The idea is that alpha and beta symbols are considered unstable and require recompiling the applications that use those symbols. Once a symbol is stable, it may get extended with new features in ways that don't break compatibility with older ABI & API. The mydist target runs validate_map.sh which should catch some probable problems in liblzma.map. Otherwise I would forget to update the map file for new releases.
2011-05-28Translations: Update the Italian translation.Lasse Collin1-149/+216
Thanks to Milo Casagrande.
2011-05-28Tests: Add a test file for the bug in the previous commit.Lasse Collin2-0/+4
2011-05-27xz: Fix error handling in xz -lvv.Lasse Collin1-15/+6
It could do an invalid free() and read past the end of the uninitialized filters array.
2011-05-27liblzma: Handle allocation failures correctly in lzma_index_init().Lasse Collin1-2/+5
Thanks to Jim Meyering.
2011-05-24Build: Fix checking for system-provided SHA-256.Lasse Collin1-1/+1
2011-05-23Build: Set GZIP_ENV=-9n in top-level Makefile.am.Lasse Collin1-0/+3
2011-05-22Update NEWS for 5.0.3.Lasse Collin1-0/+32
2011-05-21Add French translation.Lasse Collin2-0/+865
It is known that the BCJ filter --help text is only partially translated.
2011-05-21xz: Translate also the string used to print the program name.Lasse Collin1-1/+5
French needs a space before a colon, e.g. "xz : foo error".
2011-05-21liblzma: Try to use SHA-256 from the operating system.Lasse Collin3-8/+131
If the operating system libc or other base libraries provide SHA-256, use that instead of our own copy. Note that this doesn't use OpenSSL or libgcrypt or such libraries to avoid creating dependencies to other packages. This supports at least FreeBSD, NetBSD, OpenBSD, Solaris, MINIX, and Darwin. They all provide similar but not identical SHA-256 APIs; everyone is a little different. Thanks to Wim Lewis for the original patch, improvements, and testing.
2011-05-17Don't use clockid_t in mythread.h when clock_gettime() isn't available.Lasse Collin1-0/+2
Thanks to Wim Lewis for the patch.
2011-05-17Update THANKS.Lasse Collin1-0/+3
2011-05-17Update INSTALL with a note about linker problem on OpenSolaris x86.Lasse Collin1-6/+17
2011-05-17Build: Fix initialization of enable_check_* variables in configure.ac.Lasse Collin1-1/+1
This doesn't matter much in practice since it is unlikely that anyone would have such environment variable names. Thanks to Wim Lewis.
2011-05-17Add underscores to attributes (__attribute((__foo__))).Lasse Collin25-47/+49
2011-05-01xz: Fix input file position when --single-stream is used.Lasse Collin3-0/+29
Now the following works as you would expect: echo foo | xz > foo.xz echo bar | xz >> foo.xz ( xz -dc --single-stream ; xz -dc --single-stream ) < foo.xz Note that it doesn't work if the input is not seekable or if there is Stream Padding between the concatenated .xz Streams.
2011-05-01xz: Print the maximum number of worker threads in xz -vv.Lasse Collin1-0/+4
2011-04-19Build: Warn if no supported method to detect the number of CPU cores.Lasse Collin1-6/+5
2011-04-19Update THANKS.Lasse Collin1-0/+1
2011-04-19Fix portability problems in mythread.h.Lasse Collin2-4/+34
Use gettimeofday() if clock_gettime() isn't available (e.g. Darwin). The test for availability of pthread_condattr_setclock() and CLOCK_MONOTONIC was incorrect. Instead of fixing the #ifdefs, use an Autoconf test. That way if there exists a system that supports them but doesn't specify the matching POSIX #defines, the features will still get detected. Don't try to use pthread_sigmask() on OpenVMS. It doesn't have that function. Guard mythread.h against being #included multiple times.
2011-04-18Update THANKS.Lasse Collin1-0/+2
2011-04-18xzgrep: fix typo in $0 parsingMartin Väth1-2/+2
Reported-by: Diego Elio Pettenò <flameeyes@gentoo.org> Signed-off-by: Martin Väth <vaeth@mathematik.uni-wuerzburg.de> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-04-12Bump the version number to 5.1.1alpha and liblzma soname to 5.0.99.larhzu/v5.1.1alphaLasse Collin2-2/+2
2011-04-12Put the unstable APIs behind #ifdef LZMA_UNSTABLE.Lasse Collin3-0/+8
This way people hopefully won't complain if these APIs change and break code that used an older API.
2011-04-12Remove doubled words from documentation and comments.Lasse Collin6-7/+7
Spot candidates by running these commands: git ls-files |xargs perl -0777 -n \ -e 'while (/\b(then?|[iao]n|i[fst]|but|f?or|at|and|[dt]o)\s+\1\b/gims)' \ -e '{$n=($` =~ tr/\n/\n/ + 1); ($v=$&)=~s/\n/\\n/g; print "$ARGV:$n:$v\n"}' Thanks to Jim Meyering for the original patch.
2011-04-12Update NEWS.Lasse Collin1-2/+45
2011-04-12Update TODO.Lasse Collin1-1/+11
2011-04-12xz: Update the man page about threading.Lasse Collin1-14/+20
2011-04-11xz: Add support for threaded compression.Lasse Collin2-80/+125
2011-04-11liblzma: Add lzma_stream_encoder_mt() for threaded compression.Lasse Collin8-1/+1539
This is the simplest method to do threading, which splits the uncompressed data into blocks and compresses them independently from each other. There's room for improvement especially to reduce the memory usage, but nevertheless, this is a good start.
2011-04-11liblzma: Add the forgotten lzma_lzma2_block_size().Lasse Collin2-0/+12
This should have been in 5eefc0086d24a65e136352f8c1d19cefb0cbac7a.
2011-04-11liblzma: Document lzma_easy_(enc|dec)oder_memusage() better too.Lasse Collin1-0/+9
2011-04-11liblzma: Document lzma_raw_(enc|dec)oder_memusage() better.Lasse Collin1-2/+6
It didn't mention the return value that is used if an error occurs.
2011-04-11liblzma: Use memzero() to initialize supported_actions[].Lasse Collin1-4/+2
This is cleaner and makes it simpler to add new members to lzma_action enumeration.
2011-04-11liblzma: API comment about lzma_allocator with threaded coding.Lasse Collin1-5/+13
2011-04-11liblzma: Add an internal function lzma_mt_block_size().Lasse Collin2-26/+24
This is based lzma_chunk_size() that was included in some development version of liblzma.
2011-04-11liblzma: Don't create an empty Block in lzma_stream_buffer_encode().Lasse Collin1-7/+13
Empty Block was created if the input buffer was empty. Empty Block wastes a few bytes of space, but more importantly it triggers a bug in XZ Utils 5.0.1 and older when trying to decompress such a file. 5.0.1 and older consider such files to be corrupt. I thought that no encoder creates empty Blocks when releasing 5.0.2 but I was wrong.
2011-04-11liblzma: Fix API docs to mention LZMA_UNSUPPORTED_CHECK.Lasse Collin2-0/+4
This return value was missing from the API comments of four functions.
2011-04-11liblzma: Validate encoder arguments better.Lasse Collin3-6/+20
The biggest problem was that the integrity check type wasn't validated, and e.g. lzma_easy_buffer_encode() would create a corrupt .xz Stream if given an unsupported Check ID. Luckily applications don't usually try to use an unsupport Check ID, so this bug is unlikely to cause many real-world problems.
2011-04-11xz: Move the description of --block-size in --long-help.Lasse Collin1-4/+4
2011-04-11Docs: Document --single-stream and --block-size.Lasse Collin1-2/+36
2011-04-11liblzma: Make lzma_stream_encoder_init() static (second try).Lasse Collin4-32/+6
It's an internal function and it's not needed by anything outside stream_encoder.c.
2011-04-11Revert "liblzma: Make lzma_stream_encoder_init() static."Lasse Collin3-4/+29
This reverts commit 352ac82db5d3f64585c07b39e4759388dec0e4d7. I don't know what I was thinking.
2011-04-10Revise mythread.h.Lasse Collin2-20/+181
This adds: - mythread_sync() macro to create synchronized blocks - mythread_cond structure and related functions and macros for condition variables with timed waiting using a relative timeout - mythread_create() to create a thread with all signals blocked Some of these wouldn't need to be inline functions, but I'll keep them this way for now for simplicity. For timed waiting on a condition variable, librt is now required on some systems to use clock_gettime(). configure.ac was updated to handle this.
2011-04-10liblzma: Make lzma_stream_encoder_init() static.Lasse Collin3-29/+4
It's an internal function and it's not needed by anything outside stream_encoder.c.
2011-04-10DOS: Update the docs and include notes about 8.3 filenames.Lasse Collin2-11/+125
2011-04-10xz/DOS: Add experimental 8.3 filename support.Lasse Collin1-9/+167
This is incompatible with the 8.3 support patch made by Juan Manuel Guerrero. I think this one is nicer, but I need to get feedback from DOS users before saying that this is the final version of 8.3 filename support.
2011-04-10xz/DOS: Be more careful with the destination file.Lasse Collin1-2/+33
Try to avoid overwriting the source file if --force is used and the generated destination filename refers to the source file. This can happen with 8.3 filenames where extra characters are ignored. If the generated output file refers to a special file like "con" or "prn", refuse to write to it even if --force is used.
2011-04-09Update THANKS.Lasse Collin1-0/+1
2011-04-09liblzma: Add missing #ifdefs to filter_common.c.Lasse Collin1-3/+3
Passing --disable-decoders to configure broke a few encoders due to missing #ifdefs in filter_common.c. Thanks to Jason Gorski for the patch.
2011-04-09xz: Avoid unneeded fstat() on DOS-like systems.Lasse Collin1-6/+8
2011-04-09xz: Minor internal changes to handling of --threads.Lasse Collin3-19/+18
Now it always defaults to one thread. Maybe this will change again if a threading method is added that doesn't affect memory usage.
2011-04-08xz: Change size_t to uint32_t in a few places.Lasse Collin2-4/+4
2011-04-08xz: Fix a typo in a comment.Lasse Collin1-1/+1
2011-04-05liblzma: Use TUKLIB_GNUC_REQ to check GCC version in sha256.c.Lasse Collin1-3/+3
2011-04-05Build: Upgrade m4/acx_pthread.m4 to the latest version.Lasse Collin2-84/+88
It was renamed to ax_pthread.m4 in Autoconf Archive.
2011-04-05xz: Use posix_fadvise() if it is available.Lasse Collin2-0/+18
2011-04-05xz: Call lzma_end(&strm) before exiting if debugging is enabled.Lasse Collin3-0/+19
2011-04-02liblzma: Fix a memory leak in stream_encoder.c.Lasse Collin1-1/+1
It leaks old filter options structures (hundred bytes or so) every time the lzma_stream is reinitialized. With the xz tool, this happens when compressing multiple files.
2011-04-01Updated NEWS for 5.0.2.Lasse Collin1-0/+18
2011-03-31Update INSTALL with another note about IRIX.Lasse Collin1-0/+4
2011-03-31Tests: Add a new file to test empty LZMA2 streams.Lasse Collin2-0/+4
2011-03-31liblzma: Fix decoding of LZMA2 streams having no uncompressed data.Lasse Collin1-4/+4
The decoder considered empty LZMA2 streams to be corrupt. This shouldn't matter much with .xz files, because no encoder creates empty LZMA2 streams in .xz. This bug is more likely to cause problems in applications that use raw LZMA2 streams.
2011-03-24Scripts: Better fix for xzgrep.Lasse Collin1-2/+6
Now it uses "grep -q". Thanks to Gregory Margo.
2011-03-24Updated THANKS.Lasse Collin1-0/+1
2011-03-24Scripts: Fix xzgrep -l.Lasse Collin1-2/+2
It didn't work at all. It tried to use the -q option for grep, but it appended it after "--". This works around it by redirecting to /dev/null. The downside is that this can be slower with big files compared to proper use of "grep -q". Thanks to Gregory Margo.
2011-03-19Scripts: Add lzop (.lzo) support to xzdiff and xzgrep.Lasse Collin4-16/+28
2011-03-18xz: Add --block-size=SIZE.Lasse Collin4-10/+54
This uses LZMA_FULL_FLUSH every SIZE bytes of input. Man page wasn't updated yet.
2011-03-18xz: Add --single-stream.Lasse Collin4-3/+23
This can be useful when there is garbage after the compressed stream (.xz, .lzma, or raw stream). Man page wasn't updated yet.
2011-02-06xz: Clean up suffix.c.Lasse Collin1-24/+20
struct suffix_pair isn't needed in compresed_name() so get rid of it there.
2011-02-06xz: Check if the file already has custom suffix when compressing.Lasse Collin1-0/+9
Now "xz -S .test foo.test" refuses to compress the file because it already has the suffix .test. The man page had it documented this way already.