Merging upstream version 1.16.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
e06bc9ad7c
commit
31e2ca45e2
23 changed files with 113 additions and 96 deletions
17
ChangeLog
17
ChangeLog
|
@ -1,19 +1,10 @@
|
||||||
2014-07-01 Antonio Diaz Diaz <antonio@gnu.org>
|
2014-08-29 Antonio Diaz Diaz <antonio@gnu.org>
|
||||||
|
|
||||||
* Version 1.16-rc1 released.
|
* Version 1.16 released.
|
||||||
* License changed to GPL version 2 or later.
|
|
||||||
|
|
||||||
2014-05-25 Antonio Diaz Diaz <antonio@gnu.org>
|
|
||||||
|
|
||||||
* Version 1.16-pre2 released.
|
|
||||||
* New class LZ_mtester makes repair much faster.
|
* New class LZ_mtester makes repair much faster.
|
||||||
|
|
||||||
2014-04-05 Antonio Diaz Diaz <antonio@gnu.org>
|
|
||||||
|
|
||||||
* Version 1.16-pre1 released.
|
|
||||||
* main.cc (close_and_set_permissions): Behave like 'cp -p'.
|
* main.cc (close_and_set_permissions): Behave like 'cp -p'.
|
||||||
* Minor improvements.
|
|
||||||
* lziprecover.texinfo: Renamed to lziprecover.texi.
|
* lziprecover.texinfo: Renamed to lziprecover.texi.
|
||||||
|
* License changed to GPL version 2 or later.
|
||||||
|
|
||||||
2013-09-14 Antonio Diaz Diaz <antonio@gnu.org>
|
2013-09-14 Antonio Diaz Diaz <antonio@gnu.org>
|
||||||
|
|
||||||
|
@ -100,7 +91,7 @@
|
||||||
* testsuite/unzcrash.cc: Test all 1-byte errors.
|
* testsuite/unzcrash.cc: Test all 1-byte errors.
|
||||||
|
|
||||||
|
|
||||||
Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014 Antonio Diaz Diaz.
|
Copyright (C) 2009-2014 Antonio Diaz Diaz.
|
||||||
|
|
||||||
This file is a collection of facts, and thus it is not copyrightable,
|
This file is a collection of facts, and thus it is not copyrightable,
|
||||||
but just in case, you have unlimited permission to copy, distribute and
|
but just in case, you have unlimited permission to copy, distribute and
|
||||||
|
|
6
INSTALL
6
INSTALL
|
@ -1,7 +1,7 @@
|
||||||
Requirements
|
Requirements
|
||||||
------------
|
------------
|
||||||
You will need a C++ compiler.
|
You will need a C++ compiler.
|
||||||
I use gcc 4.8.1 and 3.3.6, but the code should compile with any
|
I use gcc 4.9.1 and 3.3.6, but the code should compile with any
|
||||||
standards compliant compiler.
|
standards compliant compiler.
|
||||||
Gcc is available at http://gcc.gnu.org.
|
Gcc is available at http://gcc.gnu.org.
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ the main archive.
|
||||||
5. Type 'make install' to install the program and any data files and
|
5. Type 'make install' to install the program and any data files and
|
||||||
documentation.
|
documentation.
|
||||||
|
|
||||||
You can install only the program, the info manual or the man page
|
You can install only the program, the info manual or the man page by
|
||||||
typing 'make install-bin', 'make install-info' or 'make install-man'
|
typing 'make install-bin', 'make install-info' or 'make install-man'
|
||||||
respectively.
|
respectively.
|
||||||
|
|
||||||
|
@ -58,7 +58,7 @@ After running 'configure', you can run 'make' and 'make install' as
|
||||||
explained above.
|
explained above.
|
||||||
|
|
||||||
|
|
||||||
Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014 Antonio Diaz Diaz.
|
Copyright (C) 2009-2014 Antonio Diaz Diaz.
|
||||||
|
|
||||||
This file is free documentation: you have unlimited permission to copy,
|
This file is free documentation: you have unlimited permission to copy,
|
||||||
distribute and modify it.
|
distribute and modify it.
|
||||||
|
|
7
README
7
README
|
@ -24,6 +24,11 @@ into account both data integrity and decoder availability:
|
||||||
* Additionally lzip is copylefted, which guarantees that it will
|
* Additionally lzip is copylefted, which guarantees that it will
|
||||||
remain free forever.
|
remain free forever.
|
||||||
|
|
||||||
|
A nice feature of the lzip format is that a corrupt byte is easier to
|
||||||
|
repair the nearer it is from the beginning of the file. Therefore, with
|
||||||
|
the help of lziprecover, losing an entire archive just because of a
|
||||||
|
corrupt byte near the beginning is a thing of the past.
|
||||||
|
|
||||||
Lziprecover is able to recover or decompress files produced by any of
|
Lziprecover is able to recover or decompress files produced by any of
|
||||||
the compressors in the lzip family; lzip, plzip, minilzip/lzlib, clzip
|
the compressors in the lzip family; lzip, plzip, minilzip/lzlib, clzip
|
||||||
and pdlzip.
|
and pdlzip.
|
||||||
|
@ -67,7 +72,7 @@ unzcrash.c from Julian Seward's bzip2. Type 'make unzcrash' in the
|
||||||
lziprecover source directory to build it. Then try 'unzcrash --help'.
|
lziprecover source directory to build it. Then try 'unzcrash --help'.
|
||||||
|
|
||||||
|
|
||||||
Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014 Antonio Diaz Diaz.
|
Copyright (C) 2009-2014 Antonio Diaz Diaz.
|
||||||
|
|
||||||
This file is free documentation: you have unlimited permission to copy,
|
This file is free documentation: you have unlimited permission to copy,
|
||||||
distribute and modify it.
|
distribute and modify it.
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
/* Arg_parser - POSIX/GNU command line argument parser. (C++ version)
|
/* Arg_parser - POSIX/GNU command line argument parser. (C++ version)
|
||||||
Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
|
Copyright (C) 2006-2014 Antonio Diaz Diaz.
|
||||||
Antonio Diaz Diaz.
|
|
||||||
|
|
||||||
This library is free software: you can redistribute it and/or modify
|
This library is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
/* Arg_parser - POSIX/GNU command line argument parser. (C++ version)
|
/* Arg_parser - POSIX/GNU command line argument parser. (C++ version)
|
||||||
Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
|
Copyright (C) 2006-2014 Antonio Diaz Diaz.
|
||||||
Antonio Diaz Diaz.
|
|
||||||
|
|
||||||
This library is free software: you can redistribute it and/or modify
|
This library is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|
10
configure
vendored
10
configure
vendored
|
@ -1,12 +1,12 @@
|
||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# configure script for Lziprecover - Data recovery tool for lzip files
|
# configure script for Lziprecover - Data recovery tool for the lzip format
|
||||||
# Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014 Antonio Diaz Diaz.
|
# Copyright (C) 2009-2014 Antonio Diaz Diaz.
|
||||||
#
|
#
|
||||||
# This configure script is free software: you have unlimited permission
|
# This configure script is free software: you have unlimited permission
|
||||||
# to copy, distribute and modify it.
|
# to copy, distribute and modify it.
|
||||||
|
|
||||||
pkgname=lziprecover
|
pkgname=lziprecover
|
||||||
pkgversion=1.16-rc1
|
pkgversion=1.16
|
||||||
progname=lziprecover
|
progname=lziprecover
|
||||||
srctrigger=doc/${pkgname}.texi
|
srctrigger=doc/${pkgname}.texi
|
||||||
|
|
||||||
|
@ -164,8 +164,8 @@ echo "CXXFLAGS = ${CXXFLAGS}"
|
||||||
echo "LDFLAGS = ${LDFLAGS}"
|
echo "LDFLAGS = ${LDFLAGS}"
|
||||||
rm -f Makefile
|
rm -f Makefile
|
||||||
cat > Makefile << EOF
|
cat > Makefile << EOF
|
||||||
# Makefile for Lziprecover - Data recovery tool for lzip files
|
# Makefile for Lziprecover - Data recovery tool for the lzip format
|
||||||
# Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014 Antonio Diaz Diaz.
|
# Copyright (C) 2009-2014 Antonio Diaz Diaz.
|
||||||
# This file was generated automatically by configure. Do not edit.
|
# This file was generated automatically by configure. Do not edit.
|
||||||
#
|
#
|
||||||
# This Makefile is free software: you have unlimited permission
|
# This Makefile is free software: you have unlimited permission
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* Lziprecover - Data recovery tool for lzip files
|
/* Lziprecover - Data recovery tool for the lzip format
|
||||||
Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014 Antonio Diaz Diaz.
|
Copyright (C) 2009-2014 Antonio Diaz Diaz.
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
@ -278,7 +278,7 @@ int LZ_decoder::decode_member( const Pretty_print & pp )
|
||||||
{
|
{
|
||||||
rep0 += rdec.decode( direct_bits - dis_align_bits ) << dis_align_bits;
|
rep0 += rdec.decode( direct_bits - dis_align_bits ) << dis_align_bits;
|
||||||
rep0 += rdec.decode_tree_reversed4( bm_align );
|
rep0 += rdec.decode_tree_reversed4( bm_align );
|
||||||
if( rep0 == 0xFFFFFFFFU ) // Marker found
|
if( rep0 == 0xFFFFFFFFU ) // marker found
|
||||||
{
|
{
|
||||||
rep0 = rep0_saved;
|
rep0 = rep0_saved;
|
||||||
rdec.normalize();
|
rdec.normalize();
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* Lziprecover - Data recovery tool for lzip files
|
/* Lziprecover - Data recovery tool for the lzip format
|
||||||
Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014 Antonio Diaz Diaz.
|
Copyright (C) 2009-2014 Antonio Diaz Diaz.
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.37.1.
|
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.46.1.
|
||||||
.TH LZIPRECOVER "1" "July 2014" "lziprecover 1.16-rc1" "User Commands"
|
.TH LZIPRECOVER "1" "August 2014" "lziprecover 1.16" "User Commands"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
lziprecover \- recovers data from damaged lzip files
|
lziprecover \- recovers data from damaged lzip files
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
.B lziprecover
|
.B lziprecover
|
||||||
[\fIoptions\fR] [\fIfiles\fR]
|
[\fI\,options\/\fR] [\fI\,files\/\fR]
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
Lziprecover \- Data recovery tool and decompressor for lzip files.
|
Lziprecover \- Data recovery tool and decompressor for the lzip format.
|
||||||
.SH OPTIONS
|
.SH OPTIONS
|
||||||
.TP
|
.TP
|
||||||
\fB\-h\fR, \fB\-\-help\fR
|
\fB\-h\fR, \fB\-\-help\fR
|
||||||
|
|
|
@ -3,7 +3,7 @@ lziprecover.texi.
|
||||||
|
|
||||||
INFO-DIR-SECTION Data Compression
|
INFO-DIR-SECTION Data Compression
|
||||||
START-INFO-DIR-ENTRY
|
START-INFO-DIR-ENTRY
|
||||||
* Lziprecover: (lziprecover). Data recovery tool for lzip files
|
* Lziprecover: (lziprecover). Data recovery tool for the lzip format
|
||||||
END-INFO-DIR-ENTRY
|
END-INFO-DIR-ENTRY
|
||||||
|
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@ File: lziprecover.info, Node: Top, Next: Introduction, Up: (dir)
|
||||||
Lziprecover Manual
|
Lziprecover Manual
|
||||||
******************
|
******************
|
||||||
|
|
||||||
This manual is for Lziprecover (version 1.16-rc1, 1 July 2014).
|
This manual is for Lziprecover (version 1.16, 29 August 2014).
|
||||||
|
|
||||||
* Menu:
|
* Menu:
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ This manual is for Lziprecover (version 1.16-rc1, 1 July 2014).
|
||||||
* Concept index:: Index of concepts
|
* Concept index:: Index of concepts
|
||||||
|
|
||||||
|
|
||||||
Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014 Antonio Diaz Diaz.
|
Copyright (C) 2009-2014 Antonio Diaz Diaz.
|
||||||
|
|
||||||
This manual is free documentation: you have unlimited permission to
|
This manual is free documentation: you have unlimited permission to
|
||||||
copy, distribute and modify it.
|
copy, distribute and modify it.
|
||||||
|
@ -62,6 +62,11 @@ into account both data integrity and decoder availability:
|
||||||
* Additionally lzip is copylefted, which guarantees that it will
|
* Additionally lzip is copylefted, which guarantees that it will
|
||||||
remain free forever.
|
remain free forever.
|
||||||
|
|
||||||
|
A nice feature of the lzip format is that a corrupt byte is easier to
|
||||||
|
repair the nearer it is from the beginning of the file. Therefore, with
|
||||||
|
the help of lziprecover, losing an entire archive just because of a
|
||||||
|
corrupt byte near the beginning is a thing of the past.
|
||||||
|
|
||||||
Lziprecover is able to recover or decompress files produced by any of
|
Lziprecover is able to recover or decompress files produced by any of
|
||||||
the compressors in the lzip family; lzip, plzip, minilzip/lzlib, clzip
|
the compressors in the lzip family; lzip, plzip, minilzip/lzlib, clzip
|
||||||
and pdlzip.
|
and pdlzip.
|
||||||
|
@ -257,7 +262,7 @@ corruption.
|
||||||
|
|
||||||
Bit-flip happens when one bit in the file is changed from 0 to 1 or
|
Bit-flip happens when one bit in the file is changed from 0 to 1 or
|
||||||
vice versa. It may be caused by bad RAM or even by natural radiation. I
|
vice versa. It may be caused by bad RAM or even by natural radiation. I
|
||||||
have seen a case of bit-flip in a file stored in an USB flash drive.
|
have seen a case of bit-flip in a file stored on an USB flash drive.
|
||||||
|
|
||||||
Repairing a file can take some time. Small files or files with the
|
Repairing a file can take some time. Small files or files with the
|
||||||
error located near the beginning can be repaired in a few seconds. But
|
error located near the beginning can be repaired in a few seconds. But
|
||||||
|
@ -496,9 +501,15 @@ programs with a suitable command line syntax.
|
||||||
values for each byte. 'N-bit error' means any value differing from
|
values for each byte. 'N-bit error' means any value differing from
|
||||||
the original value in N bit positions, not a value differing from
|
the original value in N bit positions, not a value differing from
|
||||||
the original value in the bit position N.
|
the original value in the bit position N.
|
||||||
The number of N-bit errors per byte (N = 1 to 8) is: 8 28 56 70 56
|
The number of N-bit errors per byte (N = 1 to 8) is:
|
||||||
28 8 1
|
8 28 56 70 56 28 8 1
|
||||||
Examples of RANGE: 1 1,2,3 1-4 1,3-5,8 1-3,5-8
|
|
||||||
|
Examples of RANGE Tests errors of N-bit
|
||||||
|
1 1
|
||||||
|
1,2,3 1, 2 and 3
|
||||||
|
2-4 2, 3 and 4
|
||||||
|
1,3-5,8 1, 3, 4, 5 and 8
|
||||||
|
1-3,5-8 1, 2, 3, 5, 6, 7 and 8
|
||||||
|
|
||||||
'-p BYTES'
|
'-p BYTES'
|
||||||
'--position=BYTES'
|
'--position=BYTES'
|
||||||
|
@ -560,17 +571,17 @@ Concept index
|
||||||
|
|
||||||
|
|
||||||
Tag Table:
|
Tag Table:
|
||||||
Node: Top226
|
Node: Top231
|
||||||
Node: Introduction1098
|
Node: Introduction1077
|
||||||
Node: Invoking lziprecover3856
|
Node: Invoking lziprecover4105
|
||||||
Node: Repairing files9294
|
Node: Repairing files9543
|
||||||
Node: Merging files10484
|
Node: Merging files10733
|
||||||
Node: File format12255
|
Node: File format12504
|
||||||
Node: Examples14765
|
Node: Examples15014
|
||||||
Ref: ddrescue-example15966
|
Ref: ddrescue-example16215
|
||||||
Node: Unzcrash17075
|
Node: Unzcrash17324
|
||||||
Node: Problems19447
|
Node: Problems19876
|
||||||
Node: Concept index19997
|
Node: Concept index20426
|
||||||
|
|
||||||
End Tag Table
|
End Tag Table
|
||||||
|
|
||||||
|
|
|
@ -6,19 +6,19 @@
|
||||||
@finalout
|
@finalout
|
||||||
@c %**end of header
|
@c %**end of header
|
||||||
|
|
||||||
@set UPDATED 1 July 2014
|
@set UPDATED 29 August 2014
|
||||||
@set VERSION 1.16-rc1
|
@set VERSION 1.16
|
||||||
|
|
||||||
@dircategory Data Compression
|
@dircategory Data Compression
|
||||||
@direntry
|
@direntry
|
||||||
* Lziprecover: (lziprecover). Data recovery tool for lzip files
|
* Lziprecover: (lziprecover). Data recovery tool for the lzip format
|
||||||
@end direntry
|
@end direntry
|
||||||
|
|
||||||
|
|
||||||
@ifnothtml
|
@ifnothtml
|
||||||
@titlepage
|
@titlepage
|
||||||
@title Lziprecover
|
@title Lziprecover
|
||||||
@subtitle Data recovery tool for lzip files
|
@subtitle Data recovery tool for the lzip format
|
||||||
@subtitle for Lziprecover version @value{VERSION}, @value{UPDATED}
|
@subtitle for Lziprecover version @value{VERSION}, @value{UPDATED}
|
||||||
@author by Antonio Diaz Diaz
|
@author by Antonio Diaz Diaz
|
||||||
|
|
||||||
|
@ -47,8 +47,7 @@ This manual is for Lziprecover (version @value{VERSION}, @value{UPDATED}).
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
@sp 1
|
@sp 1
|
||||||
Copyright @copyright{} 2009, 2010, 2011, 2012, 2013, 2014
|
Copyright @copyright{} 2009-2014 Antonio Diaz Diaz.
|
||||||
Antonio Diaz Diaz.
|
|
||||||
|
|
||||||
This manual is free documentation: you have unlimited permission
|
This manual is free documentation: you have unlimited permission
|
||||||
to copy, distribute and modify it.
|
to copy, distribute and modify it.
|
||||||
|
@ -87,6 +86,11 @@ Additionally lzip is copylefted, which guarantees that it will remain
|
||||||
free forever.
|
free forever.
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
|
A nice feature of the lzip format is that a corrupt byte is easier to
|
||||||
|
repair the nearer it is from the beginning of the file. Therefore, with
|
||||||
|
the help of lziprecover, losing an entire archive just because of a
|
||||||
|
corrupt byte near the beginning is a thing of the past.
|
||||||
|
|
||||||
Lziprecover is able to recover or decompress files produced by any of
|
Lziprecover is able to recover or decompress files produced by any of
|
||||||
the compressors in the lzip family; lzip, plzip, minilzip/lzlib, clzip
|
the compressors in the lzip family; lzip, plzip, minilzip/lzlib, clzip
|
||||||
and pdlzip.
|
and pdlzip.
|
||||||
|
@ -287,7 +291,7 @@ forms of data corruption.
|
||||||
|
|
||||||
Bit-flip happens when one bit in the file is changed from 0 to 1 or vice
|
Bit-flip happens when one bit in the file is changed from 0 to 1 or vice
|
||||||
versa. It may be caused by bad RAM or even by natural radiation. I have
|
versa. It may be caused by bad RAM or even by natural radiation. I have
|
||||||
seen a case of bit-flip in a file stored in an USB flash drive.
|
seen a case of bit-flip in a file stored on an USB flash drive.
|
||||||
|
|
||||||
Repairing a file can take some time. Small files or files with the error
|
Repairing a file can take some time. Small files or files with the error
|
||||||
located near the beginning can be repaired in a few seconds. But
|
located near the beginning can be repaired in a few seconds. But
|
||||||
|
@ -564,8 +568,17 @@ Test N-bit errors only, instead of testing all the 255 wrong values for
|
||||||
each byte. @samp{N-bit error} means any value differing from the
|
each byte. @samp{N-bit error} means any value differing from the
|
||||||
original value in N bit positions, not a value differing from the
|
original value in N bit positions, not a value differing from the
|
||||||
original value in the bit position N.@*
|
original value in the bit position N.@*
|
||||||
The number of N-bit errors per byte (N = 1 to 8) is: 8 28 56 70 56 28 8 1@*
|
The number of N-bit errors per byte (N = 1 to 8) is:
|
||||||
Examples of @var{range}: 1 1,2,3 1-4 1,3-5,8 1-3,5-8
|
@w{8 28 56 70 56 28 8 1}
|
||||||
|
|
||||||
|
@multitable {Examples of @var{range}} {1, 2, 3, 5, 6, 7 and 8}
|
||||||
|
@item Examples of @var{range} @tab Tests errors of N-bit
|
||||||
|
@item 1 @tab 1
|
||||||
|
@item 1,2,3 @tab 1, 2 and 3
|
||||||
|
@item 2-4 @tab 2, 3 and 4
|
||||||
|
@item 1,3-5,8 @tab 1, 3, 4, 5 and 8
|
||||||
|
@item 1-3,5-8 @tab 1, 2, 3, 5, 6, 7 and 8
|
||||||
|
@end multitable
|
||||||
|
|
||||||
@item -p @var{bytes}
|
@item -p @var{bytes}
|
||||||
@itemx --position=@var{bytes}
|
@itemx --position=@var{bytes}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* Lziprecover - Data recovery tool for lzip files
|
/* Lziprecover - Data recovery tool for the lzip format
|
||||||
Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014 Antonio Diaz Diaz.
|
Copyright (C) 2009-2014 Antonio Diaz Diaz.
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
@ -69,7 +69,7 @@ File_index::File_index( const int infd )
|
||||||
: isize( lseek( infd, 0, SEEK_END ) ), retval_( 0 )
|
: isize( lseek( infd, 0, SEEK_END ) ), retval_( 0 )
|
||||||
{
|
{
|
||||||
if( isize < 0 )
|
if( isize < 0 )
|
||||||
{ set_errno_error( "Input file is not seekable :" ); return; }
|
{ set_errno_error( "Input file is not seekable: " ); return; }
|
||||||
if( isize < min_member_size )
|
if( isize < min_member_size )
|
||||||
{ error_ = "Input file is too short."; retval_ = 2; return; }
|
{ error_ = "Input file is too short."; retval_ = 2; return; }
|
||||||
if( isize > INT64_MAX )
|
if( isize > INT64_MAX )
|
||||||
|
@ -78,7 +78,7 @@ File_index::File_index( const int infd )
|
||||||
|
|
||||||
File_header header;
|
File_header header;
|
||||||
if( seek_read( infd, header.data, File_header::size, 0 ) != File_header::size )
|
if( seek_read( infd, header.data, File_header::size, 0 ) != File_header::size )
|
||||||
{ set_errno_error( "Error reading member header :" ); return; }
|
{ set_errno_error( "Error reading member header: " ); return; }
|
||||||
if( !header.verify_magic() )
|
if( !header.verify_magic() )
|
||||||
{ error_ = "Bad magic number (file not in lzip format).";
|
{ error_ = "Bad magic number (file not in lzip format).";
|
||||||
retval_ = 2; return; }
|
retval_ = 2; return; }
|
||||||
|
@ -92,7 +92,7 @@ File_index::File_index( const int infd )
|
||||||
File_trailer trailer;
|
File_trailer trailer;
|
||||||
if( seek_read( infd, trailer.data, File_trailer::size,
|
if( seek_read( infd, trailer.data, File_trailer::size,
|
||||||
pos - File_trailer::size ) != File_trailer::size )
|
pos - File_trailer::size ) != File_trailer::size )
|
||||||
{ set_errno_error( "Error reading member trailer :" ); break; }
|
{ set_errno_error( "Error reading member trailer: " ); break; }
|
||||||
const long long member_size = trailer.member_size();
|
const long long member_size = trailer.member_size();
|
||||||
if( member_size < min_member_size || member_size > pos )
|
if( member_size < min_member_size || member_size > pos )
|
||||||
{
|
{
|
||||||
|
@ -103,7 +103,7 @@ File_index::File_index( const int infd )
|
||||||
}
|
}
|
||||||
if( seek_read( infd, header.data, File_header::size,
|
if( seek_read( infd, header.data, File_header::size,
|
||||||
pos - member_size ) != File_header::size )
|
pos - member_size ) != File_header::size )
|
||||||
{ set_errno_error( "Error reading member header :" ); break; }
|
{ set_errno_error( "Error reading member header: " ); break; }
|
||||||
if( !header.verify_magic() || !header.verify_version() )
|
if( !header.verify_magic() || !header.verify_version() )
|
||||||
{
|
{
|
||||||
if( member_vector.empty() ) // maybe trailing garbage
|
if( member_vector.empty() ) // maybe trailing garbage
|
||||||
|
@ -149,7 +149,7 @@ File_index::File_index( const std::vector< int > & infd_vector,
|
||||||
: isize( fsize ), retval_( 0 )
|
: isize( fsize ), retval_( 0 )
|
||||||
{
|
{
|
||||||
if( isize < 0 )
|
if( isize < 0 )
|
||||||
{ set_errno_error( "Input file is not seekable :" ); return; }
|
{ set_errno_error( "Input file is not seekable: " ); return; }
|
||||||
if( isize < min_member_size )
|
if( isize < min_member_size )
|
||||||
{ error_ = "Input file is too short."; retval_ = 2; return; }
|
{ error_ = "Input file is too short."; retval_ = 2; return; }
|
||||||
if( isize > INT64_MAX )
|
if( isize > INT64_MAX )
|
||||||
|
@ -163,7 +163,7 @@ File_index::File_index( const std::vector< int > & infd_vector,
|
||||||
{
|
{
|
||||||
const int infd = infd_vector[i];
|
const int infd = infd_vector[i];
|
||||||
if( seek_read( infd, header.data, File_header::size, 0 ) != File_header::size )
|
if( seek_read( infd, header.data, File_header::size, 0 ) != File_header::size )
|
||||||
{ set_errno_error( "Error reading member header :" ); return; }
|
{ set_errno_error( "Error reading member header: " ); return; }
|
||||||
if( header.verify_magic() && header.verify_version() ) done = true;
|
if( header.verify_magic() && header.verify_version() ) done = true;
|
||||||
}
|
}
|
||||||
if( !done )
|
if( !done )
|
||||||
|
@ -181,7 +181,7 @@ File_index::File_index( const std::vector< int > & infd_vector,
|
||||||
const int tfd = infd_vector[it];
|
const int tfd = infd_vector[it];
|
||||||
if( seek_read( tfd, trailer.data, File_trailer::size,
|
if( seek_read( tfd, trailer.data, File_trailer::size,
|
||||||
pos - File_trailer::size ) != File_trailer::size )
|
pos - File_trailer::size ) != File_trailer::size )
|
||||||
{ set_errno_error( "Error reading member trailer :" ); goto error; }
|
{ set_errno_error( "Error reading member trailer: " ); goto error; }
|
||||||
member_size = trailer.member_size();
|
member_size = trailer.member_size();
|
||||||
if( member_size >= min_member_size && member_size <= pos )
|
if( member_size >= min_member_size && member_size <= pos )
|
||||||
for( int ih = 0; ih < files && !done; ++ih )
|
for( int ih = 0; ih < files && !done; ++ih )
|
||||||
|
@ -189,7 +189,7 @@ File_index::File_index( const std::vector< int > & infd_vector,
|
||||||
const int hfd = infd_vector[ih];
|
const int hfd = infd_vector[ih];
|
||||||
if( seek_read( hfd, header.data, File_header::size,
|
if( seek_read( hfd, header.data, File_header::size,
|
||||||
pos - member_size ) != File_header::size )
|
pos - member_size ) != File_header::size )
|
||||||
{ set_errno_error( "Error reading member header :" ); goto error; }
|
{ set_errno_error( "Error reading member header: " ); goto error; }
|
||||||
if( header.verify_magic() && header.verify_version() ) done = true;
|
if( header.verify_magic() && header.verify_version() ) done = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* Lziprecover - Data recovery tool for lzip files
|
/* Lziprecover - Data recovery tool for the lzip format
|
||||||
Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014 Antonio Diaz Diaz.
|
Copyright (C) 2009-2014 Antonio Diaz Diaz.
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|
4
lzip.h
4
lzip.h
|
@ -1,5 +1,5 @@
|
||||||
/* Lziprecover - Data recovery tool for lzip files
|
/* Lziprecover - Data recovery tool for the lzip format
|
||||||
Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014 Antonio Diaz Diaz.
|
Copyright (C) 2009-2014 Antonio Diaz Diaz.
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|
6
main.cc
6
main.cc
|
@ -1,5 +1,5 @@
|
||||||
/* Lziprecover - Data recovery tool for lzip files
|
/* Lziprecover - Data recovery tool for the lzip format
|
||||||
Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014 Antonio Diaz Diaz.
|
Copyright (C) 2009-2014 Antonio Diaz Diaz.
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
@ -91,7 +91,7 @@ bool delete_output_on_interrupt = false;
|
||||||
|
|
||||||
void show_help()
|
void show_help()
|
||||||
{
|
{
|
||||||
std::printf( "%s - Data recovery tool and decompressor for lzip files.\n", Program_name );
|
std::printf( "%s - Data recovery tool and decompressor for the lzip format.\n", Program_name );
|
||||||
std::printf( "\nUsage: %s [options] [files]\n", invocation_name );
|
std::printf( "\nUsage: %s [options] [files]\n", invocation_name );
|
||||||
std::printf( "\nOptions:\n"
|
std::printf( "\nOptions:\n"
|
||||||
" -h, --help display this help and exit\n"
|
" -h, --help display this help and exit\n"
|
||||||
|
|
4
merge.cc
4
merge.cc
|
@ -1,5 +1,5 @@
|
||||||
/* Lziprecover - Data recovery tool for lzip files
|
/* Lziprecover - Data recovery tool for the lzip format
|
||||||
Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014 Antonio Diaz Diaz.
|
Copyright (C) 2009-2014 Antonio Diaz Diaz.
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* Lziprecover - Data recovery tool for lzip files
|
/* Lziprecover - Data recovery tool for the lzip format
|
||||||
Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014 Antonio Diaz Diaz.
|
Copyright (C) 2009-2014 Antonio Diaz Diaz.
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
@ -139,7 +139,7 @@ int LZ_mtester::test_member( const long pos_limit )
|
||||||
{
|
{
|
||||||
rep0 += rdec.decode( direct_bits - dis_align_bits ) << dis_align_bits;
|
rep0 += rdec.decode( direct_bits - dis_align_bits ) << dis_align_bits;
|
||||||
rep0 += rdec.decode_tree_reversed4( bm_align );
|
rep0 += rdec.decode_tree_reversed4( bm_align );
|
||||||
if( rep0 == 0xFFFFFFFFU ) // Marker found
|
if( rep0 == 0xFFFFFFFFU ) // marker found
|
||||||
{
|
{
|
||||||
rep0 = rep0_saved;
|
rep0 = rep0_saved;
|
||||||
rdec.normalize();
|
rdec.normalize();
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* Lziprecover - Data recovery tool for lzip files
|
/* Lziprecover - Data recovery tool for the lzip format
|
||||||
Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014 Antonio Diaz Diaz.
|
Copyright (C) 2009-2014 Antonio Diaz Diaz.
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* Lziprecover - Data recovery tool for lzip files
|
/* Lziprecover - Data recovery tool for the lzip format
|
||||||
Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014 Antonio Diaz Diaz.
|
Copyright (C) 2009-2014 Antonio Diaz Diaz.
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* Lziprecover - Data recovery tool for lzip files
|
/* Lziprecover - Data recovery tool for the lzip format
|
||||||
Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014 Antonio Diaz Diaz.
|
Copyright (C) 2009-2014 Antonio Diaz Diaz.
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|
4
split.cc
4
split.cc
|
@ -1,5 +1,5 @@
|
||||||
/* Lziprecover - Data recovery tool for lzip files
|
/* Lziprecover - Data recovery tool for the lzip format
|
||||||
Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014 Antonio Diaz Diaz.
|
Copyright (C) 2009-2014 Antonio Diaz Diaz.
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# check script for Lziprecover - Data recovery tool for lzip files
|
# check script for Lziprecover - Data recovery tool for the lzip format
|
||||||
# Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014 Antonio Diaz Diaz.
|
# Copyright (C) 2009-2014 Antonio Diaz Diaz.
|
||||||
#
|
#
|
||||||
# This script is free software: you have unlimited permission
|
# This script is free software: you have unlimited permission
|
||||||
# to copy, distribute and modify it.
|
# to copy, distribute and modify it.
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
/* Unzcrash - Tests robustness of decompressors to corrupted data.
|
/* Unzcrash - Tests robustness of decompressors to corrupted data.
|
||||||
Inspired by unzcrash.c from Julian Seward's bzip2.
|
Inspired by unzcrash.c from Julian Seward's bzip2.
|
||||||
Copyright (C) 2008, 2009, 2010, 2011, 2012, 2013, 2014
|
Copyright (C) 2008-2014 Antonio Diaz Diaz.
|
||||||
Antonio Diaz Diaz.
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|
Loading…
Add table
Reference in a new issue