Changelog:
Version 2.5.1:
(This version folds in all non-debian specific bug fixes and feature
extensions, with respect to 2.5, that were made in the Debian afio
package 2.5-6)
(This version does not incorporate fixes for all bug reports or
feature requests I got since afio 2.5: some of these remain on the
todo list)
Fixed a file descriptor handling bug that caused gzip subprocess to
keep running when afio -oZ is killed or crashes. Based on bug report
and patch by Alain Spineux.
Fixed bug that could cause afio -oZ to hang, and/or write faulty data
without warning, if a large file was modified while being written.
The bug fix prevents hanging, and introduces warnings when faulty data
might be written. Based on bug report and patch by Alain Spineux.
Improved error reporting in -r operation, based on discussions with
Alain Spineux. Note that the error message text is all changed now,
to be more verbose and explanatory, so scripts that grep the message
text have to be rewritten. Verfication reporting via exit code 0/1 is
unchanged, unless the -1 r flag is used.
Added -1 r flag to ignore certain warnings when verifying the backup
of a live filesystem. Based on discussions with Alain Spineux.
Changed 'diff -u0' into 'diff -U 0' in regtest.do script in order to
be compatible with command line argument parsing of newer gnu diff
versions. Also added sort commands to sort find output because when
order changes with respect to order in which files where created, this
gives false fail on the hardlink check part of regression test. Based
on problem reports by Dallas Legan, Shlomi Levi.
Added defines to compile under CYGWIN based on patches by Dirk
Eddelbuettel and Jari Aalto.
Fixed bug in test script, that triggered when find(1) listed files in
a different order than the order in which afio unpacked then into the
directory. This bug cause the test script to report failure even
though there was no failure. Bug reported by Andre Francois, also by
Fred Wright and Bruce Bowler.
Fixed bugs in test script, having to do with 'bash -c' and 'source'
not being ablre to find the dircomp and dircompare commands, that were
reported openSuse 10.3 and 11.4. (I have been unable to reproduce the
bugs in my environment, so I hope the fixes work.) Bugs reported and
fixes proposed by Fred Wright.
Added .ogg as an extensions to the list of those to be excluded from
compression by default. Proposed by Dirk Eddelbuettel.
Fixed logic in in() to correctly report failure with a warning message
when uncompression of a commpressed-archived file fails. Also fixes
that, potentially valid archive data would be skipped after this
error. Based on bug report by Daniel Webb.
In next(), changed msg to variable-length string, to avoid possible
buffer overflow. Part of the patch by Erik Schanze (downstream Debian).
Extended -0 option to influence -t processing and -w and -W file
reading too. The -0 option now toggles when used multiple times.
Added -7 option to disable/enable globbing in processing -yYwW
filename patterns. Based on feature request and patch by Christian
Schrader (via Debian). Note that the semantics of the -7 command line
options is sligtly different than it was in the Debian 2.5-3 to 2.5-6
branches: in those branches, -7 was non-toggling so it was not
necessary to supply the -7 before any -yYwW options it should
affect.
Replaced several 0 by NULL to avoid compiler warnings. Based on patch
by Erik Schanze (downstream Debian).
Replaced sys_errlist usage by strerror(3). This avoids (on some
systems) compiler warnings about sys_errlist being obsolete. Left in
the old code (with #if 0) to ease porting. Based on patch by Erik
Schanze (downstream Debian) and report by Mike Black.
Fixed bug in gpg usage examples in script3/, and removed script5/
which had the same bug. Bug reported, and bug fix found, by Marcus
Williams. Also added info on this to the manpage. In the earlier
scripts, the built-in compression feature of gpg was used, but it
turns out that this cannot be reliably used with afio: it should be
disabled using the -z 0 option to gpg. The reason why gpg built-in
compression cannot be used is as follows. When compression is used,
and gpg is run twice on the same input file, it can generate differing
outputs with different lengths. This is a problem for afio if the
output length is larger than the afio -M option value. If the length
is larger than the -M value, then afio will call the 'compression'
program twice, once to get the 'compressed' file length and once to
get the actual file contents and write them to the archive, and if the
lenght is bigger in the second run then the data in the archive will
be truncated (and therefore corrupted). Afio does emit an error
message when this happens, but it might be overlooked. Some caveats:
in testing it looks like if -z 0 is used with gpg, it will never
produce different-length files for the same input, but I can not find
anything in the documentation of gpg suggesting that this is a
guaranteed feature. pgp (the non-GNU implementation) might has a
similar different-length behavior causing afio to fail occasionally,
but I have found no reports on the web about this. (An alternative
would be to use openssl as the encryption engine??)
Updated legal information for redistributers about the afio license in
afio.c and in the .lsm files. Removed earlier text concluding that by
Linux Software Map standards, the correct afio license label was LGPL.
Added the text file afio_license_issues_v5.txt. All of this was
triggerd by a blog entry writen by Tom Callaway, and informed in part
by further discussion in the blog comment section and on some Debian
mailing lists. Thanks to Mark Brukhartz for going on record to clarify
the intent of the original license text.
Increase default size for -M option from 2 to 250 megabytes.
COMMENT should not be longer than 70 characters.
COMMENT should not begin with 'A'.
COMMENT should not begin with 'An'.
COMMENT should not begin with 'a'.
COMMENT should not end with a period.
COMMENT should start with a capital letter.
pkglint warnings. Some files also got minor formatting, spelling, and style
corrections.
Clean up other problems revealed by gcc -Wall:
- pass (char *)NULL, not 0, as the last arg of execlp, to avoid
crashes on LP64 platforms;
- use signal.h, not sys/signal.h;
- use utime(3) correctly;
- use W* macros and sys/wait.h instead of hardcoding bit patterns.
Note in the DESCR that the package has been patched, as the license
might be construed to require this.
PKGREVISION -> 2.
developer is officially maintaining the package.
The rationale for changing this from "tech-pkg" to "pkgsrc-users" is
that it implies that any user can try to maintain the package (by
submitting patches to the mailing list). Since the folks most likely
to care about the package are the folks that want to use it or are
already using it, this would leverage the energy of users who aren't
developers.
- Use buildlink framework.
- NO_CONFIGURE=yes
- Enable pkgviews installation.
Changes in 2.5:
- In afio.h ulo and ull macros, added L and LL letters in constants.
- Documented `long long' issues in PORTING file. Removed ifdeffed
typedef ulonglong porting hacks from the afio.h file.
- Changed mknod() call to mkfifo() call when creating named pipe from
archive. Freebsd cannot make named pipes with mknod.
- Added some extra defines to suppress some warnings on sun platform.
Also added some stuff around awk invocations in makefile and regtest
to make things easier on sun -- the sun platform I tried it on had a
default awk that was too ancient to understand things like gsub.
- Added some discussion of sun and freebsd to PORTING file.
- Fix to regression test: no longer complains if two compared directory
inodes have a size difference. Bases on bug report by vasudeva.
- Changed sanity check on the stdin at the start of executing -o mode:
now the check only happens if stdin is a tty. This allows scripts to
make empty archives, and is needed for compatibility with tob. Based
on problem report by Dirk Eddelbuettel.
- Changed read() to readall() in outdata().
- Updated SCRIPTS file.
The nudge came from a netbsd-help posting by Thomas Hafner and a URL
posted by Jeremy Reed.
Afio makes cpio-format archives. It deals somewhat gracefully with
input data corruption. Supports multi-volume archives during
interactive operation. Afio can make compressed archives that are
much safer than compressed tar or cpio archives. Afio is best used as
an `archive engine' in a backup script.