Merge branch 'master' into liblrzip

Conflicts:
	lrzip.c
This commit is contained in:
Con Kolivas 2011-09-16 22:55:34 +10:00
commit 18105bbf7c
8 changed files with 146 additions and 5 deletions

View file

@ -20,3 +20,4 @@ Michael Blumenkrantz for updated autotools
Serge Belyshev for encryption help and code Serge Belyshev for encryption help and code
Ulrich Drepper for MD5 implementation Ulrich Drepper for MD5 implementation
PolarSSL authors for sha512 + aes128 implementation PolarSSL authors for sha512 + aes128 implementation
Fernando Auil for lrzip completion

View file

@ -1,4 +1,13 @@
lrzip ChangeLog 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 MAY 2011, version 0.606 Con Kolivas
* lrzuntar broke as lrzip doesn't automatically use stdout now, so use lrzcat * lrzuntar broke as lrzip doesn't automatically use stdout now, so use lrzcat
in the lrztar script instead. in the lrztar script instead.

View file

@ -92,8 +92,12 @@ EXTRA_DIST = \
description-pak \ description-pak \
autogen.sh \ autogen.sh \
INSTALL \ INSTALL \
lrzip.completion \
$(dist_doc_DATA) $(dist_doc_DATA)
install-data-hook:
test -d /etc/bash_completion.d && @INSTALL_DATA@ lrzip.completion /etc/bash_completion.d/lrzip
install-exec-hook: install-exec-hook:
$(LN_S) -f lrzip$(EXEEXT) $(DESTDIR)@bindir@/lrunzip$(EXEEXT) $(LN_S) -f lrzip$(EXEEXT) $(DESTDIR)@bindir@/lrunzip$(EXEEXT)
$(LN_S) -f lrzip$(EXEEXT) $(DESTDIR)@bindir@/lrzcat$(EXEEXT) $(LN_S) -f lrzip$(EXEEXT) $(DESTDIR)@bindir@/lrzcat$(EXEEXT)

View file

@ -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 lrzip-0.606
lrzuntar, which broke last version leaving behind an untarred .tar file, is lrzuntar, which broke last version leaving behind an untarred .tar file, is

View file

@ -2,7 +2,7 @@
##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--## ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
m4_define([v_maj], [0]) m4_define([v_maj], [0])
m4_define([v_min], [6]) 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_v], m4_join([], v_min, v_mic))
m4_define([v_ver], [v_maj.v_v]) m4_define([v_ver], [v_maj.v_v])

View file

@ -271,12 +271,11 @@ bool preserve_perms(rzip_control *control, int fd_in, int fd_out)
if (unlikely(fstat(fd_in, &st))) if (unlikely(fstat(fd_in, &st)))
fatal_return(("Failed to fstat input file\n"), false); fatal_return(("Failed to fstat input file\n"), false);
if (unlikely(fchmod(fd_out, (st.st_mode & 0666)))) 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(( */ /* chown fail is not fatal_return(( */
if (unlikely(fchown(fd_out, st.st_uid, st.st_gid))) if (unlikely(fchown(fd_out, st.st_uid, st.st_gid)))
print_err("Warning, unable to set owner on %s\n", control->outfile); print_verbose("Warning, unable to set owner on %s\n", control->outfile);
return true;
} }
/* Open a temporary outputfile to emulate stdout */ /* Open a temporary outputfile to emulate stdout */

119
lrzip.completion Normal file
View file

@ -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 <troesmix@gmail.com>
# Author: Fernando Auil <troesmix@gmail.com>
# 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
:

View file

@ -381,7 +381,7 @@ static int lzma_compress_buf(rzip_control *control, struct compress_thread *cthr
/* only 7 levels with lzma, scale them */ /* only 7 levels with lzma, scale them */
lzma_level = control->compression_level * 7 / 9 ? : 1; 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: retry:
dlen = cthread->s_len; dlen = cthread->s_len;
c_buf = malloc(dlen); c_buf = malloc(dlen);