diff --git a/AUTHORS b/AUTHORS index 12b923c..07fe41a 100644 --- a/AUTHORS +++ b/AUTHORS @@ -20,3 +20,4 @@ Michael Blumenkrantz for updated autotools Serge Belyshev for encryption help and code Ulrich Drepper for MD5 implementation PolarSSL authors for sha512 + aes128 implementation +Fernando Auil for lrzip completion diff --git a/ChangeLog b/ChangeLog index 0738500..2bc2056 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,13 @@ lrzip ChangeLog +SEPTEMBER 2011, version 0.607 Con Kolivas +* Updated lzma library to version 920. +* Fixed a rare unable-to-decompress corner case. +* Added lrzip completion script. +* Updated makefile to more portable posix version. +* Hopefully fixed compilation on FreeBSD not supporting memopen. +* Added lots more debugging information about offsets in max verbose mode. +* Removed error and warning messages that are spammy or harmless. + MAY 2011, version 0.606 Con Kolivas * lrzuntar broke as lrzip doesn't automatically use stdout now, so use lrzcat in the lrztar script instead. diff --git a/Makefile.am b/Makefile.am index 8df5f3a..b4d47bf 100644 --- a/Makefile.am +++ b/Makefile.am @@ -92,8 +92,12 @@ EXTRA_DIST = \ description-pak \ autogen.sh \ INSTALL \ + lrzip.completion \ $(dist_doc_DATA) +install-data-hook: + test -d /etc/bash_completion.d && @INSTALL_DATA@ lrzip.completion /etc/bash_completion.d/lrzip + install-exec-hook: $(LN_S) -f lrzip$(EXEEXT) $(DESTDIR)@bindir@/lrunzip$(EXEEXT) $(LN_S) -f lrzip$(EXEEXT) $(DESTDIR)@bindir@/lrzcat$(EXEEXT) diff --git a/WHATS-NEW b/WHATS-NEW index cb3e22d..b09c30d 100644 --- a/WHATS-NEW +++ b/WHATS-NEW @@ -1,3 +1,12 @@ +lrzip-0.607 + +A rare case of not being able to decompress archives was fixed. +The lzma library was updated to version 920. +A bash completion script for lrzip was added. +More debugging info was added in maximum verbose mode. +Less messages occur without verbose mode. +FreeBSD and posix compilation fixes were committed. + lrzip-0.606 lrzuntar, which broke last version leaving behind an untarred .tar file, is diff --git a/configure.ac b/configure.ac index d537df7..322f1e1 100644 --- a/configure.ac +++ b/configure.ac @@ -2,7 +2,7 @@ ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--## m4_define([v_maj], [0]) m4_define([v_min], [6]) -m4_define([v_mic], [06]) +m4_define([v_mic], [07]) ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--## m4_define([v_v], m4_join([], v_min, v_mic)) m4_define([v_ver], [v_maj.v_v]) diff --git a/lrzip.c b/lrzip.c index e1569e6..34075b4 100644 --- a/lrzip.c +++ b/lrzip.c @@ -271,12 +271,11 @@ bool preserve_perms(rzip_control *control, int fd_in, int fd_out) if (unlikely(fstat(fd_in, &st))) fatal_return(("Failed to fstat input file\n"), false); if (unlikely(fchmod(fd_out, (st.st_mode & 0666)))) - print_err("Warning, unable to set permissions on %s\n", control->outfile); + print_verbose("Warning, unable to set permissions on %s\n", control->outfile); /* chown fail is not fatal_return(( */ if (unlikely(fchown(fd_out, st.st_uid, st.st_gid))) - print_err("Warning, unable to set owner on %s\n", control->outfile); - return true; + print_verbose("Warning, unable to set owner on %s\n", control->outfile); } /* Open a temporary outputfile to emulate stdout */ diff --git a/lrzip.completion b/lrzip.completion new file mode 100644 index 0000000..129c9ee --- /dev/null +++ b/lrzip.completion @@ -0,0 +1,119 @@ +#-*- mode: shell-script;-*- +# Inputs: +# $1 -- name of the command whose arguments are being completed +# $2 -- word being completed +# $3 -- word preceding the word being completed +# $COMP_LINE -- current command line +# $COMP_PONT -- cursor position +# $COMP_WORDS -- array containing individual words in the current +# command line +# $COMP_CWORD -- index into ${COMP_WORDS} of the word containing the +# current cursor position +# Output: +# COMPREPLY array variable contains possible completions +# +# Copyright (C) 2011 Fernando Auil +# Author: Fernando Auil +# Last revision: 25Jun2011 + +have lrzip && +_lrzip() +{ +local cpu_count win_size +local general_opts output_opts compress_opts level_opts options special special2 + +# Get the CPU count. +cpu_count=$(grep -c ^processor /proc/cpuinfo) + +# This is aproximately the heuristical window size (in MB) for the +# non-STDIN case (which is more conservative?). +win_size=$(awk '/MemTotal/{print$2}' /proc/meminfo) +win_size=$((win_size >> 17)) + +general_opts='-c -d -e -h -? -H -i -q -t -v -vv -V' +output_opts='-D -f -k -o -O -S' +compress_opts='-b -g -l -n -z' +level_opts='-L -N -p -T -U -w' + +COMPREPLY=() +cur=${COMP_WORDS[COMP_CWORD]} +prev=${COMP_WORDS[COMP_CWORD-1]} + + for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do + if [[ ${COMP_WORDS[i]} == @(-b|-g|-l|-n|-z) ]]; then + special=${COMP_WORDS[i]} + elif [[ ${COMP_WORDS[i]} == @(-U) ]]; then + special2=${COMP_WORDS[i]} + fi + done + + if [ -n "$special" ]; then + unset compress_opts + fi + + if [ -n "$special2" ]; then + level_opts='-L -N -p -T -U' + fi + +options="$general_opts $output_opts $level_opts $compress_opts" + +case "$prev" in + +-L) +COMPREPLY=( $(compgen -W "$(seq 9)" -- $cur) ) +return 0 +;; + +-N) +COMPREPLY=( $(compgen -W "$(seq -20 19)" -- $cur) ) +return 0 +;; + +-S) +COMPREPLY=( $(compgen -W ".lrz" -- $cur) ) +return 0 +;; + +-p) +COMPREPLY=( $(compgen -W "$cpu_count" -- $cur) ) +return 0 +;; + +-w) +COMPREPLY=( $(compgen -W "$win_size" -- $cur) ) +return 0 +;; + +# Dirnames options. +-O) +_filedir -d +return 0 +;; + +# Filenames options. +-o) +#_longopt $filenames +_filedir +return 0 +;; + +# Exit options. +-h|-\?|-V) +COMPREPLY=() +return 0 +;; + +esac + +if [[ "$cur" = -* ]]; then + COMPREPLY=( $(compgen -W "$options" -- $cur) ) + return 0 +else + _filedir + return 0 +fi +} + +[ "$have" ] && complete -F _lrzip $filenames lrzip + +: diff --git a/stream.c b/stream.c index a2df99a..824156b 100644 --- a/stream.c +++ b/stream.c @@ -381,7 +381,7 @@ static int lzma_compress_buf(rzip_control *control, struct compress_thread *cthr /* only 7 levels with lzma, scale them */ lzma_level = control->compression_level * 7 / 9 ? : 1; - print_verbose("Starting lzma back end compression thread...\n"); + print_maxverbose("Starting lzma back end compression thread...\n"); retry: dlen = cthread->s_len; c_buf = malloc(dlen);