"Fossies" - the Fresh Open Source Software Archive

Member "afio-2.5.2/HISTORY" (30 Nov 2018, 44750 Bytes) of package /linux/misc/afio-2.5.2.tgz:


As a special service "Fossies" has tried to format the requested text file into HTML format (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file. See also the latest Fossies "Diffs" side-by-side code changes report for "HISTORY": 2.5.1_vs_2.5.2.

    1 
    2 This file contains some historical information on afio.  It also
    3 contains notes about changes in new versions.
    4 
    5 ============Very old README file contents==============================
    6 
    7 Afio is a better way of dealing with cpio-format archives. It is
    8 generally faster than cpio, provides more diverse magnetic tape
    9 options and deals somewhat gracefully with input data corruption.
   10 
   11 Afio is quite portable. It is now running under 4.2BSD, System V
   12 and even one or two UNIX-like operating systems. Please see the
   13 beginning of afio.c for a brief description of the compile-time
   14 configuration options.
   15 
   16 [...]
   17 
   18 				Mark Brukhartz
   19 				Lachman Associates, Inc.
   20 				..!{ihnp4, sun}!laidbak!mdb
   21 
   22 [...]
   23 
   24 =================Notes on changes in new versions==================
   25 
   26 
   27 Dave Gymer (dpg@cs.nott.ac.uk) (up to version 2.3-dpg-3):
   28 
   29 This is my port to Linux of afio.  See afio.1 and README for a
   30 description of what this does.  It's based on work I did to port this
   31 to MiNT by Eric Smith on the Atari ST, and consists mainly of bugfixes
   32 and one important new feature; the use of st_rdev to indicate whether
   33 a regular file was compressed by afio or not if it's name in the
   34 archive ends in .z.  I did this because I didn't want backups of files
   35 which were already compressed (like .tar.Z archives and some of the
   36 stuff in the Xfree386-1.1 distribution) to be uncompressed if I
   37 restored my filesystem.
   38 
   39 This also means that the -Z option is meaningful when listing the
   40 contents of an archive; if given, any .z files are listed without the
   41 .z if afio compressed them, or with the .z if they were like that when
   42 afio found them.
   43 
   44 I also ran the code through GNU Indent 1.4.
   45 
   46 This is the third release of my version; this one knows about gzipped
   47 files (.z), uses gzip instead of compress, and handles other files
   48 which rarely compress well, like JPEGs.
   49 
   50 You may want to undefine LONGZFILE if you still use the Minix fs; I
   51 use xiafs so it doesn't matter.  Even if you do use the Minix fs,
   52 you'll only get bitten if you try to restore a compressed archive
   53 without uncompressing files.
   54 
   55 Andrew Stevens (as@prg.oxford.ac.uk) (version 2.3-dpg-4 onwards)
   56 
   57 I've tidied the code a little to make the double-buffering work (and
   58 prompt sensibly) and avoid leakage of file-handles in the compression
   59 code.
   60 
   61 This code really really needs splitting up into multiple source files!
   62 
   63 I have tested backing up and restoring off floppies fairly thoroughly
   64 (various options), but I have no the faintest idea how reliable any of
   65 the other stuff is.
   66 
   67 I have included my favourite backup script as an example of the usage
   68 of afio. [This script is in the script1 subdirectory.]
   69 This uses the directory /usr/adm/dump to record dumping
   70 dates and a file /usr/adm/dump/DONTDUMP (example included) to
   71 filter out non-dumpable areas.
   72 
   73 The afio source as given will not attempt to compress files ending in
   74   .Z .z .gz
   75   .arc .gif .zip .zoo .lha .jpeg .jpg
   76   .tpz .taz .tgz .tzg
   77 See also the -E option in the manual page.
   78 
   79 
   80 Koen Holtman (koen@hep.caltech.edu) (version 2.3.5 (for Linux) onwards)
   81 
   82 Introduced new options -E, -G, -M, -w and -W.
   83 
   84 On compressing files, afio now temporarily stores the result in memory
   85 in stead of creating (potentially huge) /tmp files.  This way, there
   86 is no danger of the /tmp filesystem getting full during a backup, so
   87 that a backup script calling afio can safely use /tmp.  Afio won't use
   88 more than 2 meg memory for temporary storage (also see the -M option).
   89 If it runs out of memory, it calls gzip twice, the first time to
   90 determine the length of the result, the second time to get the data
   91 itself.
   92 
   93 The -y and -Y options now are able to handle real shell patterns, and
   94 generally work more sensible.
   95 Verifying floppy disks now works on Linux.
   96 
   97 
   98 Version 2.3.6 (for Linux):
   99 
  100 Added -T option.  The options -G and -T can be used to optimize the
  101 backup speed/compression ratio if you have a slow machine or a fast
  102 backup medium.  Added -S option.  Fixed some bugs in 2.3.5.
  103 
  104 
  105 Version 2.3.6-dpg-1 (for Linux):
  106 
  107 Bug fix in -F option by Dave Gymer (dpg@Cs.Nott.AC.UK).
  108 
  109 
  110 Version 2.3.7:
  111 
  112 Deleted shared memory code to reduce code clutter.
  113 
  114 Removed `buggy gzip workaround' in compfile.c, this caused afio to
  115 hang occasionally if the -f option was used.  This means that afio will
  116 only run with newer gzip versions. (I don't know exactly which version
  117 is new enough, though gzip 1.2.3 and above certainly are. Just try
  118 it.)
  119 
  120 Edited -F code to fix `double prompting' bug.
  121 
  122 Added more warnings to the manual.
  123 
  124 Added some ifdefs and a few notes to make porting to other unix
  125 versions easier.
  126 
  127 
  128 Version 2.4:
  129 
  130 Added -r option and small bugfix in tty handling, both by Anders
  131 Baekgaard (ab@osiris.cpk.auc.dk).
  132 
  133 Added -B option that prints the byte position of each file in the
  134 archive in the -v output.
  135 
  136 Made -F option do writing in O_SYNC mode under Linux.  Thus afio will
  137 notice some floppy disk write errors using Linux kernel 1.1.54 or
  138 higher.
  139 
  140 Updated manual page.  Updated usage message.
  141 
  142 Made version number shorter, though number of changes does not warrant
  143 a new major version.
  144 
  145 
  146 Version 2.4.1:
  147 
  148 Fixed bug that sometimes caused unzipping to fail due to a seek on a
  149 pipe (bug found and fixed by Keith Owens).
  150 
  151 Deleted malloc() result check in meminit() to help porting, malloc(0)
  152 returns NULL on some machines.
  153 
  154 Fixed bug caused by incorrect assumptions about write(), triggered
  155 under Linux if afio -iZ ... is stopped and restarted.
  156 
  157 Now exits if a broken pipe occurs on the stderr of afio -i or the
  158 stdout of afio -t and afio -rv.  Thus afio -t can be used with head to
  159 get a table of contents of the beginning of an archive.
  160 
  161 Fixed bug in setting suid/sgid bits when restoring a file that does
  162 not have user=root, group=root.  Afio did not take into account that
  163 the Linux chown() clears these bits in some cases.
  164 
  165 Expanded semantics of -s, changed the behavior when afio gets an input
  166 eof without there being an -s option given; the old behavior can be
  167 gotten back by using -s 0.  This change prevents bogus insert next
  168 disk messages when the archive ends prematurely.
  169 
  170 Made control file feature (added -D option).
  171 
  172 Fixed bug in afio 2.4 that caused symbolic link info to be omitted
  173 when creating an archive.
  174 
  175 Fixed bugs in -r option.
  176 
  177 Removed empty lines from logfile created with -L option, also fixed
  178 bug in logfile creation.
  179 
  180 Reorganized documentation files, updated manual page.
  181 
  182 
  183 Version 2.4.2:
  184 
  185 Added code to let subprocesses close archive file descriptor, needed
  186 for some tape drivers when changing tapes.
  187 
  188 Fixed bug in multivolume tape read code.
  189 
  190 Added some portabilty stuff:
  191 - Rewrote archive header scanf to be more portable.
  192 - Changed CPPFLAGS into CFLAGS in Makefile.
  193 - Changed ssize_t and size_t in writeall() to int.
  194 - Added code to clear asb.sb_rdev in the file stat block if not a
  195   device: some OSes put (garbage?) info in this field in stead of
  196   clearing it and afio wants it cleared.
  197 
  198 Added -a option to preserve atime on files read when doing -o or -r.
  199 Using it will set the ctime for these files to the current time, so
  200 this option _cannot_ be used together with most incremental backup
  201 schemes, which rely on the ctime being preserved.
  202 
  203 Fixed bug in -f option when used with -s.
  204 
  205 Updated manual, added new warning to BUGS section.
  206 
  207 Fixed tocentry() to print -B byte offset to stdout instead of stderr.
  208 
  209 Added support for creation of UNIX sockets in restore.
  210 
  211 Added single qoutes around rsh switches.
  212 
  213 Added `-s 0' functionality to the -I command.
  214 
  215 Added -z calculation to -I and -O commands.
  216 
  217 Changed restore not to do utime() to restore time on symlinks: the
  218 timestamp change gets done on the file linked to and that is not very
  219 productive.
  220 
  221 Took -N flag out of LDOPTS in Makefile.  No idea what it should have
  222 done.
  223 
  224 Added `f to format' option in floppy handling code (patch by Ulrich
  225 Lauther).  Note that afio still does not have adequate multivolume
  226 floppy support: use the tbackup program as a wrapper around afio for
  227 that.
  228 
  229 Changed default format command in Makefile from /bin/fdformat to
  230 fdformat.
  231 
  232 Changed nice(-40) to nice(-10) for subprocess in -f option.
  233 
  234 Added options -U, -P, -Q to force compression, specify compression
  235 program and pass options to the compression program, based on patch
  236 file by karsten.ballueder@stud.uni-karlsruhe.de.  Added script3/
  237 directory to distribution.
  238 
  239 Version 2.4.3:
  240 
  241 Fixed bug in restore code which sometimes prevents an old file from
  242 being overwritten with a hard link.  Based on report by Nokubi
  243 Takatsugu.
  244 
  245 Version 2.4.4:
  246 
  247 Fixeded more bugs in hard link handling, based on same report by
  248 Nokubi Takatsugu.  The inode field in the archive header only stores
  249 the meast significant 16 bits, which is too little for todays
  250 filesystems, yet the unpacking code assumes that these 16 bit fields
  251 have unique values for each filesystem entry when handling hard links.
  252 This can cause problems when unpacking files with hardlinks.  Added
  253 code to 1) make unpacking od old archives safer by adding more sanitiy
  254 checks and 2) ensure that hardlink processing related inode fields in
  255 newly produced archives are unique by inventing unique inode numbers
  256 if necessary.  Added -4 flag to write `extended ascii' format archives
  257 with 4-byte inode fields, based on code by Nokubi Takatsugu.  See
  258 manpage for caveats about -4.
  259 
  260 Incorporated some patches by Rob W. W. Hooft to speed up buffer memory
  261 allocation for -Z option.  Rob reported impressive speedup (due to
  262 less mallocs all the time) for large files in some cases but I have
  263 been unable to duplicate any dramatic speedup myself.
  264 
  265 Fixed bug reported by Sebastian Wilhelmi: afio -o now correctly exits
  266 with a fatal error and 1 exit status if there is a write error to the
  267 backup medium.  Added -J flag to revert to something like old
  268 behavior: with -J, media write errors give a warning and writing goes
  269 on, and afio finally exits with status 1.  (Actual old behavior was
  270 printing warning going on and exiting with status 0.  Bad.)
  271 
  272 Improved -Z reporting using patch by Ed Casas. Made some additional
  273 improvements too.
  274 
  275 Afio will now exit with status 1 if there any warnings were printed
  276 during the operation (but some may be missed if -f is used).
  277 
  278 Added a sleep(2) to lower chance of race condition in rsh processing
  279 when reading remote archives with afio ... host:/file.  Problems
  280 reported/investigated by Rob Browning and Dirk Eddelbuettel.  [Note
  281 that, in spite of me correcting problems in it, remote file handling
  282 is still not officially supported by this maintainer -- KH]
  283 
  284 Incorporated some patches by Juergen Lock to make porting to (Free)BSD
  285 systems easier.  This should also solve an IRIX porting problem
  286 reported by Mike McDonnell.
  287 
  288 Incorporated patch by Timo Korvola to allow specification of an
  289 alternative remote shell program (like ssh) for remote archives.
  290 
  291 Added patch by Werner Koch to speficy user for remote file processing.
  292 Full syntax now is `filename_without_:' for local files or
  293 [user@]host[%rsh][=afio]:file for remote files.  (A patch for the same
  294 feature was sent by David Atkinson too.)
  295 
  296 Added some DEC Alpha porting patches by George Brizicky.  Incorporated
  297 a Solaris porting patch by Erich Focht.
  298 
  299 Added -H (promptscript) option using patch by Alexander Zangerl.
  300 
  301 Fixed buggy handling of 0-length files which already have a .z
  302 extension.  Bug reported by Bob Mitchell.
  303 
  304 Incorporated patch by Dave Gymer which adds -0 option like GNU cpio,
  305 to allow input filenames to be terminated with a '\0' instead of a
  306 '\n'. When used with find ... -print0, can be used to ensure that any
  307 filename can be handled, even if it contains a newline. (A patch for
  308 the same feature was sent by Rob Browning too.)
  309 
  310 Lots of manpage updates, also updated BUGS section of manpage.
  311 
  312 
  313 Version 2.4.5:
  314 
  315 Fixed progress reporting and media change code to handle archives and
  316 archive volumes above 2GB and 4GB correctly, based on patch by Mike
  317 Black.  Problems also reported by Maik Musall.
  318 
  319 Added 'g' (gigabytes) as a possible size denotation in options taking
  320 numbers, using patch by Mike Black.
  321 
  322 Added @ option based on patch by Mike Black.
  323 
  324 Removed bug in 2.4.4 which would report media change messages as
  325 warnings about errors in the final -z count.
  326 
  327 Added three extensions (.deb, .rpm, .bz2) to the list of those to be
  328 excluded from compression by default.  Patch by Dirk Eddelbuettel.
  329 
  330 Fixed bug in code for restoring archived made with -4 option (oops!).
  331 Bug found by Chris Thompson.
  332 
  333 Incorporated patch by Bryan Henderson which fixes bug in floppy
  334 prompting if -f option used (every prompt was issued twice).
  335 
  336 Improved -H (promptscript) option using patch by Raphael Manfredi.
  337 Promptscript now has tty on its stdin, and gets one more argument.
  338 Included sample promptscript by Raphael Manfredi.
  339 
  340 When writing archive without specifying -s or -s 0, added code to
  341 switch to next volume if current one is full (if write() returns 0
  342 bytes witten or ENOSPC error).  Part of code based on patch by Raphael
  343 Manfredi.
  344 
  345 Some updates to documentation.
  346 
  347 
  348 Version 2.4.6:
  349 
  350 Fixed file closing bug in -r option which prevented tape switches when
  351 verifying with some tapes.  Bug reported by Tetsuya Makimura and also
  352 by Alan J. Wylie.
  353 
  354 Switched to -Wall in Makefile, modified code to suppress -Wall
  355 warnings (at least with my gcc), based on patch by Holger Schurig.
  356 
  357 Added some extensions to the list of those to be excluded from
  358 compression by default.  From patch by Holger Schurig.
  359 
  360 In tests and source code checks, no year 2000 (Y2K) problems have been
  361 found with afio.  All afio versions back to at least 2.3.6 should have
  362 no year 2000 problems, nor should existing archives produced with such
  363 versions have year 2000 problems within.  Current afio versions do
  364 have the usual unix second counter underflow problem, which will
  365 manifest itself in 2038.  The date-printing afio options (-tv and -L)
  366 print 4 digit years.  The archive formats output by afio (both ASCII
  367 and extended ASCII) use the usual unix seconds-since-1970 counts to
  368 represent dates, these counts are encoded as octal numbers in a
  369 wide-enough field.
  370 
  371 Some non-Linux platforms, Sun in particular have a dev_t larger than
  372 16 bits.  This caused problems archiving devices on these platforms.
  373 We now take this into account: if it is larger than a 16 bit number,
  374 the dev_t value is re-encoded in the dev and ino parts of the header.
  375 The makedev include is also updated to special-case for Sun.  Based on
  376 a bug report by by Guenter Steger.
  377 
  378 Fixed bug in interference between -Z and -l options on writing an
  379 archive.  Fixed bug in -U, which would not force compression of hard
  380 linked files.  Documented internal afio limitations connected to -Z on
  381 hard links and -U and hard links.
  382 
  383 Added -1 option and revised its default for better backwards
  384 compatibilty with existing backup scripts.  Compatibility problem (tob
  385 never going on to verify phase if afio exited 1) reported by Denis
  386 Sbragion.  (I recall that the problem was also reported by someone
  387 else but can't find the report anymore.)  Same problem, or maybe not,
  388 also reported by Florin B Manolache.
  389 
  390 Added -3 option for better compatibility with pgp.  Based on bug
  391 reports by Jens Getreu.  And many thanks to Jens Getreu for testing
  392 the -3 option!  This fixes a security hole:
  393 
  394   --snip--
  395   [SECURITY] afio: security hole in 'afio -P pgp' encrypted archives
  396 
  397   I. Description
  398 
  399   Since version 2.4.2, the afio archiver has had an interface, the '-P
  400   pgp' command line option, which can be used to pgp-encrypt the file
  401   data witten to an afio archive.  Following up on some bug reports, I
  402   have recently discovered a security problem with this afio-pgp
  403   interface: pgp encryption is not always applied in the right way.
  404   This makes it possible to crack the encyption on the file data in an
  405   'encrypted' archive produced using afio with the '-P pgp' option.
  406 
  407   The security of files which were already encrypted _before_ being
  408   written to the archive is not affected.
  409 
  410   II. Impact
  411 
  412   It is possible to cheaply crack the encryption of at least some of
  413   the file data in the 'encrypted' archives produced using 'afio -P
  414   pgp'.  This includes archives produced using the pgp_write example
  415   script included in the [pre-2.4.6] afio distribution.
  416 
  417   III. Solution
  418 
  419   _Existing archives_ [made with pre-2.4.6 afio versions] produced
  420   with 'afio -P pgp' should really be treated with the same care
  421   (against theft etc.) as unencrypted archives.  If such existing
  422   archives cannot be deleted or safely locked away, then encrypting
  423   the _entire_ existing archive file with pgp will protect it.
  424 
  425   --snip--
  426 
  427 Updated scripts in script3/ to use new -3 option.
  428 
  429 Updated manpage, added some afio command line examples.  cdrecord
  430 example contributed by Joachim Bergmeyer.
  431 
  432 Added code to make -y -Y -w -W also work when creating archives.
  433 Based on patch by Brian Powell.
  434 
  435 Fixed bug in -a option, which would not restore the access time on
  436 files stored with compression when creating an archive.  Based on
  437 patch by David Rourke.
  438 
  439 Made some changes to ease portability to the IRIX native C compiler.
  440 See also the PORTING file.  Based on patch file by Brian Gunney.
  441 
  442 Afio currently invokes gzip for compression in the -Z option.
  443 Performance experiments by Ted Phelps showed that linking the zlib
  444 compression library and invoking it internally will not lead to big
  445 performance benefits.  Though zlib is faster for very small files, it
  446 turns out that invoking gzip is faster for larger files.  Switching to
  447 zlib would imply a major disturbance in the source.  The small to
  448 negative performance benefits expected do not seem to justify this, so
  449 switching to zlib is not currently considered.
  450 
  451 Made some changes to ease portability to HPUX with gcc.  See also the
  452 PORTING file.  Based on patch file by Daniel Andersson.
  453 
  454 Enhanced -s option based on patch by Sebastian Weber, it now can
  455 accept a comma-separated list of sizes.
  456 
  457 Updated manpage BUGS section to say that afio does not restore
  458 owner/group information on symlinks.  Restoring this info would be
  459 possible using the relatively new `lchown' system call, but that call
  460 is not supported on older linux systems and some other unix systems.
  461 Problem reported by Marko Jahnke.  Further reporting by
  462 Giuliano P Procida.
  463 
  464 Added gnupg_* scripts to script3/ dir.  Scripts by Jens Getreu.
  465 
  466 Added script5/ dir and scripts, contributed by Jens Getreu.
  467 
  468 Updated existing scripts part of SCRIPTS file.
  469 
  470 Updated /script1 and script2/ to improve/remove /tmp file handling.
  471 Based on patches by Marius Tomaschewski.  These changes make the
  472 scripts more resistant to funny security exploit business with
  473 pre-existing /tmp files.
  474 
  475 Added code to round down volume size to a multiple of the block size
  476 in the -s option.  Added -9 option to suppress this: pre-2.4.6
  477 versions of afio defaulted to no rounding down.  Rounding down is
  478 needed for compatibility with some devices, notably ftape.  Based on
  479 bug report by L. C. Robinson.
  480 
  481 Changed -H promptscript option to take running as an at or cron job
  482 into account.  If /dev/tty is not a connected device, afio will now
  483 connect /dev/null to the stdin of the promptscript.  Based on bug
  484 report by Andreas Wehler.
  485 
  486 
  487 Version 2.4.7:
  488 
  489 
  490 Fixed bug that sometimes caused `-- compressed' to be printed twice in
  491 verify operation.  Has to do with not flushing stdout, stderr before
  492 forking.  Bug reported by JP Vossen.
  493 
  494 Added more material on how pattern matching works in the -y option
  495 section of the manpage, and added examples of selective restores to
  496 manpage.  Based on questions by Kjell Palmius and Stojan Rancic.
  497 
  498 Added text to BUGS section about afio not being able to write into
  499 directories for which it has no write permissions, except when running
  500 as root.  Problem reported by Kagan Kayal.
  501 
  502 Fixed bug that caused afio -s option values above 4gb to be sometimes
  503 treated as a much lower value when reading an archive.  This was a
  504 truncation-in-casting bug triggered by some combinations of -b and -s
  505 values.  Bug reported by Michael Zieger.
  506 
  507 Looked into the case of reading/writing archives to/from regular
  508 filesystem files which are bigger than 2 GB.  Seem to work on newer
  509 linux systems supporting such large files.  On the recent linux system
  510 I tried (Red Hat 6.2, kernel 2.4.2, GCC 2.95.3, libc.so.6 ->
  511 libc-2.1.3.so) a freshly compiled afio can read and write >2GB archive
  512 files to the filesystem.  HOWEVER I also got reports from others with
  513 _the same_ or _newer_ versions of stuff that their compiled afio is
  514 not able to do this.  I have not found a pattern to this: your best
  515 bet is to recompile the afio executable on your platform and try.
  516 Based on reports by Grzegorz Wieczorek and Norbert Veber.
  517 
  518 Looked into the case of >=2GB files being included *in* an archive.
  519 With pre-2.4.7 afio versions under Linux, two cases of breakage
  520 apply. 1) if afio was compiled without large filesystem support then
  521 such files generated "Value too large for defined data type" error,
  522 however WITHOUT causing nonzero exit (unless -1 option made `missing
  523 files' a cause for nonzero exit). 2) if afio was compiled with large
  524 filesysten support such files would be archived.  However, such files
  525 could then not be verified, listed or unpacked correctly because the
  526 afio archive header does not have enough room to correctly represent a
  527 >=2GB file size.  [Note: If you really really need to restore such a
  528 file: by doing some hacks and hand-holding the restore it should be
  529 possible to achieve this -- all the data is in the archive, afio just
  530 does not know after how many extra increments of 2GB (or 4GB?)  blocks
  531 it ends].  Added following bugfixes to address all this.  No matter
  532 how it is compiled under Linux, afio will now issue a warning when
  533 encountering a >=2GB file in the set to archive, and not archive that
  534 file. The warning will cause nonzero exit (unless -1 option changes
  535 this).  Also documented 2GB limitations in manpage.  Based on bug
  536 reports by Mike Black.
  537 
  538 
  539 Fixed bug that mis-calculated compression ratio number (XX%) printed
  540 by afio -o -v when compressing very large files.  Bug found by Koen
  541 Holtman.
  542 
  543 Did more work on hard links to soft links (some installs actually make
  544 these things! Sheesh!)  Afio -t output is improved for these, and afio
  545 -r does not give incorrect verify errors anymore on veryfiying the
  546 second, third, etc. link.  Afio -i now correctly restores hardlinked
  547 soft links (at least on the linux kernel I tested it on).  Updated
  548 manpage to change earlier statement that "Some Linux kernels allow one
  549 to create a hard link to a symbolic link.  afio cannot handle such
  550 hard links correctly.".  Based on bug report by Thomas Dorner.  Should
  551 also be cleaner fix to problem reported earlier by Giuliano P Procida.
  552 
  553 If a fatal error occurs and data was transferred, afio makes sure to
  554 print an error message which includes the offset of the fatal error.
  555 Based on bug report by Francesco Potorti.
  556 
  557 Fixed typesetting bug in afio manpage that caused -R option
  558 description to exclude the `Disk format command string' argument.
  559 Based on a 1998 bug report by Lee Bradshaw, and thanks to Dirk
  560 Eddelbuettel for prompting me to look over the Debian bug report
  561 database for for afio again -- looks like I lost track of it when I
  562 got the report the first time.
  563 
  564 Added -2 option -- this also means changing the default behavior for
  565 compressing very large files.
  566 
  567 Updated maintainer e-mail addresses.
  568 
  569 Added some more documentation on sparse file handling to the manpage.
  570 
  571 Documented some -r option limitations in BUGS section of manpage.
  572 
  573 Added maximum name length check on reading file names from stdin with
  574 afio -i.
  575 
  576 
  577 Version 2.4.7.9beta:
  578 
  579 [This is a BETA release, meaning that I (the maintainer) am applying
  580 less strict quality control than I would do for a normal release.
  581 The main reason for the BETA is to get >2GB functionality out to
  582 people who need it now and are willing to take some extra risk.]
  583 
  584 Changes incorporated via Debian 2.4.7-7 (Debian packaging releases
  585 maintained by Dirk Eddelbuettel).
  586 
  587 Corrected typo in manpage, cdrecord was spelled crdrecord. Based on
  588 report by Christoph Claus.
  589 
  590 Switched to large file compile environment (-D_FILE_OFFSET_BITS=64
  591 -D_LARGEFILE_SOURCE) in order write archives larger than 2GB.  Based
  592 on suggestions by Norbert Veber.
  593 
  594 Applied patch by Dieter Schuster to correct an endian issue on 32-bit
  595 powerpc systems, trigged by having 64 bit off_t.  The bug was in the
  596 sprintf formatting in outhead(), asb->sb_size should be (unsigned long
  597 int) asb->sb_size.
  598 
  599 Applied patches by Stephen van Egmond to correct endian issues on 32-bit
  600 powerpc systems and fix all -Wall issues.
  601 
  602 Lots of little changes and fixes of fixes based on the above.  Based
  603 on discussions and tests with/from Stephen van Egmond, Dirk
  604 Eddelbuettel, Dieter Schuster, Complete history of fixing not
  605 documented here.  Historians, see Debian bug DB numbers #144986 and
  606 #153948, and maybe more bug numbers too.
  607 
  608 Put very elaborate warning flags in compiler options -- need
  609 to take out later.
  610 
  611 [End of list of changes incorporated via Debian 2.4.7-7.]
  612 
  613 Improved type used for the variable pad in outeof()
  614 
  615 Removed linkp and some use of it in incheckentry().  This was a bug
  616 (dormant?) introduced by maintenance in 2.4.7.  Based on reports by
  617 several people, including at least Matthias Stolte, Stephen van
  618 Egmond, Devin Reade, and Mike Black.
  619 
  620 Added large ASCII header support for 2G files and 32bit inodes, uid,
  621 gid, dev, rdev, and nlink values, as well as 64 bit mtime values (be
  622 prepared for if time_t goes higher than 2038).  Based on patch from
  623 Clark Rawlins.
  624 
  625 Changed inode type in large ascii header to 64 bits.
  626 
  627 Added extra space (2 bytes) for flags to second extended ascii header,
  628 and variable-length extra header (with 2-byte length indicator).  All
  629 set to 0 in this release.
  630 
  631 Updated and improved discussion of archive portability in manpage.
  632 
  633 Changed installation locations for `make install' to be compatible
  634 (I think) with the Linux Filesystem Hierarchy Standard.
  635 
  636 
  637 Version 2.4.7.9beta4:
  638 
  639 Fixed bug in defines: ushort was defined twice
  640 
  641 Updated regression test scripts some more.  Changed >2gb regression
  642 test to use 4.1 gb file: that way we actually use more than 32 bits in
  643 the file size.
  644 
  645 Updated README.FIRST file based on various regression test results.
  646 
  647 Made ascii art in .h file to decode large ASCII header.  Put a few
  648 ascii chars in the large ascii header to make it easier to read.
  649 
  650 Added a lot of casting refinements based on study of elaborate
  651 compiler warnings.
  652 
  653 
  654 Version 2.4.7.9beta5:
  655 
  656 Improved makesparse code in regression test.
  657 
  658 Version 2.4.8beta1:
  659 
  660 Added -6 option based on suggestions from, discussions with, and patch
  661 from Matthias Stolte.
  662 
  663 Extended -E option syntax.  Created new mechanism to create -E default
  664 extensions list from the manpage, because I keep updating it.  Added
  665 more extensions based on suggestions by Kevin Cosgrove and Matthias
  666 Stolte.  Made default -E extension matching case-insensitive, and
  667 added case sensitiveness configurability to the -E option, based on
  668 suggestion by Kevin Cosgrove.
  669 
  670 Added discussion of using bzip2 to the manpage, prompted by question
  671 from Nick Papadonis.
  672 
  673 Improved the documentation of the -Z option in the manpage.
  674 
  675 Fixed (largely theoretical) bug in nameaddfile().
  676 
  677 Improved description of -A option (and defaults if no -A used) on the
  678 manpage.  Based on a problem report by Matthew Vernon.
  679 
  680 Fixed bug in verify command: if the file in the archive is not
  681 compressed, and the file on the filesystem has grown larger than the
  682 file on the archive, this was not detected before.  Based on bug
  683 reporting and analysis by Ryan W. Maple and Rainer Koenig, and patch
  684 by Ryan W. Maple.
  685 
  686 Added pointer to the HISTORY file in the authors section of the
  687 manpage.
  688 
  689 Added section on web site and internet resources to manpage.
  690 
  691 Made some internal buffers used during compression and verify larger.
  692 
  693 Fixed bug in verify code: verifying a compressed or uncompresses file
  694 has a logic bug in that it assumed that the read(f,b,s) system calls
  695 would always return with s bytes if not end of file/stream yet.  This
  696 assumption is incorrect, especially when reading data from a
  697 pipe. (Strange that this bug never seemed to cause real problems until
  698 I did some testing with a large sparse file and `cat' as the
  699 compression program)
  700 
  701 Removed limitation (introduced in one of the 2.4.7.beta versions) in
  702 the -2 option that for files bigger than 2GB, compression is never
  703 attempted, unless the -U flag says so.  This limitation was introduced
  704 at the time because of concerns that gzip would not work on >2GB
  705 files.  Some testing showed that gzip works fine (and bzip2 also).
  706 
  707 Added code to use lchown call, so that owner information on symlinks
  708 is restored (if the OS does nor have a lchown call, the HAVE_LCHOWN
  709 symbol can be commented out in the Makefile).  Based on patch file
  710 from Matthias Goebl.
  711 
  712 Added -vv option, and documented stderr/stdout behavior of -v option
  713 better.  Based on patch file from Matthias Goebl.
  714 
  715 Added code to set the correct modification times on directories that
  716 are restored, even if these directories have additional files restored
  717 into them.  (In older versions, the mtime was set when creating the
  718 directory, but then usually the filesystem updates that mtime to the
  719 current time when the directory is filled.  Now, the original mtimes
  720 of restored directories are remembered, and they are set again just
  721 before afio exits.)  Based on patch file from Matthias Goebl.
  722 
  723 Added a sanity check on the stdin at the start of executing -o mode.
  724 Output file is only opened (and, if existing, truncated to 0 length)
  725 when the stdin data starts looking like a file list.  This should
  726 prevent deletion of the archive file contents in most cases when
  727 people who want to do afio -i myarchive accidentally type afio -o
  728 myarchive.  The idea is that people who type afio -o accidentally will
  729 see the error messages and press ctrl-C in time.
  730 
  731 Documented archive format in the manpage, and improved documentation
  732 of the -k option.  Also included a hint about the -k option in the
  733 unrecognisable archive error messages.  Based on problem reports by
  734 Evren Yurtesen and Carter Alvord.
  735 
  736 Added example of splitting archive into 1GB parts to overcome 2GB
  737 filesystem limitations.  Based on question by Bob Stewart.
  738 
  739 Updated maintainer e-mail addresses again.  Updated README,
  740 INSTALLATION files.
  741 
  742 Documented archive portability problem in handling major/minor numbers
  743 across different OS versions in BUGS section.
  744 
  745 Fixed bugs in hard link handling when creating an archive (when
  746 running without -4 option).  (I did some tests on this code with 130K
  747 files with hard links, and it turns out that the old code was not
  748 correct, though it usually does do the right think when archiving
  749 moderate numbers of hard linked files.)  The code in linkto()
  750 for creating unique 16-bit inode numbers for files with hard links in
  751 the archive was buggy.  The code would definately fail to produce a
  752 correct archive when packing more than 4096 sets of hard linked files
  753 in the archive, and could also fail in some cases when 4096 had not
  754 been reached. The impact of this bug is somewhat low, I never got any
  755 bug reports about it, so I guess that most people who have lots of
  756 hard links and care about restoring them correctly were using -4
  757 already.  (The -4 option did not suffer from these bugs, and did
  758 correctly handle many hard links as advertised.)
  759 
  760 Added code so that, if number of archived hard links goes over 64K,
  761 then large archive headers will be used to store any additional hard
  762 linked files. This maximises cpio (and afio backwards) compatibility,
  763 while removing the 64K hard link restriction for the normal invocation
  764 of afio.  Updated manpage accordingly.
  765 
  766 Fixed bug in *un*packing of archives created with -4 option: hard
  767 linked files these archives would not always be unpacked correctly
  768 (with afio not printing any error messages about things being
  769 incorrect) if the -4 flag was ommitted on the command line when using
  770 afio -i.
  771 
  772 Added printing of warning message for the case `archive will not be
  773 fully compatible with cpio or afio versions 2.4.7 and lower', and c
  774 and C letters for -1 option.  Based in part on discussions with Mike
  775 Black.
  776 
  777 Added code for handling uid/gid values >64K, by using large ASCII
  778 header.  Based on problem report by Jeffrey Eugene Crawford.
  779 
  780 Added code for handling time_t values >2^31.  Not that Linux supports
  781 these yet...
  782 
  783 Added n letter to -1 flag, based on patch by Keith G. Murphy.
  784 
  785 Documented use of additional arguments to generic prompt script in -H
  786 flag, based on suggestion by Lance Albin.
  787 
  788 Updated usage message that is printed when afio is run without
  789 command line arguments or with invalid arguments.
  790 
  791 Added M letter to -1 option.  Based on suggestion by Devin Reade.
  792 
  793 Version 2.5:
  794 
  795 In afio.h ulo and ull macros, added L and LL letters in constants.
  796 This is more correct and portable and fixes compiler warnings on newer
  797 gcc versions.
  798 
  799 Documented `long long' issues in PORTING file.  Removed ifdeffed
  800 typedef ulonglong porting hacks from the afio.h file.
  801 
  802 Changed mknod() call to mkfifo() call when creating named pipe from
  803 archive.  Freebsd cannot make named pipes with mknod.
  804 
  805 Added some extra defines to suppress some warnings on sun platform.
  806 Also added some stuff around awk invocations in makefile and regtest
  807 to make things easier on sun -- the sun platform I tried it on had a
  808 default awk that was too ancient to understand things like gsub.
  809 
  810 Added some discussion of sun and freebsd to PORTING file.
  811 
  812 Fix to regression test: no longer complains if two compared directory
  813 inodes have a size difference.  Bases on bug report by vasudeva.
  814 
  815 Changed sanity check on the stdin at the start of executing -o mode:
  816 now the check only happens if stdin is a tty.  This allows scripts to
  817 make empty archives, and is needed for compatibility with tob.  Based
  818 on problem report by Dirk Eddelbuettel.
  819 
  820 Changed read() to readall() in outdata().
  821 
  822 Updated SCRIPTS file.
  823 
  824 
  825 Version 2.5.1:
  826 
  827 (This version folds in all non-debian specific bug fixes and feature
  828 extensions, with respect to 2.5, that were made in the Debian afio
  829 package 2.5-6)
  830 
  831 (This version does not incorporate fixes for all bug reports or
  832 feature requests I got since afio 2.5: some of these remain on the
  833 todo list)
  834 
  835 Fixed a file descriptor handling bug that caused gzip subprocess to
  836 keep running when afio -oZ is killed or crashes.  Based on bug report
  837 and patch by Alain Spineux.
  838 
  839 Fixed bug that could cause afio -oZ to hang, and/or write faulty data
  840 without warning, if a large file was modified while being written.
  841 The bug fix prevents hanging, and introduces warnings when faulty data
  842 might be written.  Based on bug report and patch by Alain Spineux.
  843 
  844 Improved error reporting in -r operation, based on discussions with
  845 Alain Spineux. Note that the error message text is all changed now,
  846 to be more verbose and explanatory, so scripts that grep the message
  847 text have to be rewritten.  Verfication reporting via exit code 0/1 is
  848 unchanged, unless the -1 r flag is used.
  849 
  850 Added -1 r flag to ignore certain warnings when verifying the backup
  851 of a live filesystem.  Based on discussions with Alain Spineux.
  852 
  853 Changed 'diff -u0' into 'diff -U 0' in regtest.do script in order to
  854 be compatible with command line argument parsing of newer gnu diff
  855 versions.  Also added sort commands to sort find output because when
  856 order changes with respect to order in which files where created, this
  857 gives false fail on the hardlink check part of regression test. Based
  858 on problem reports by Dallas Legan, Shlomi Levi.
  859 
  860 Added defines to compile under CYGWIN based on patches by Dirk
  861 Eddelbuettel and Jari Aalto.
  862 
  863 Fixed bug in test script, that triggered when find(1) listed files in
  864 a different order than the order in which afio unpacked then into the
  865 directory.  This bug cause the test script to report failure even
  866 though there was no failure. Bug reported by Andre Francois, also by
  867 Fred Wright and Bruce Bowler.
  868 
  869 Fixed bugs in test script, having to do with 'bash -c' and 'source'
  870 not being ablre to find the dircomp and dircompare commands, that were
  871 reported openSuse 10.3 and 11.4.  (I have been unable to reproduce the
  872 bugs in my environment, so I hope the fixes work.)  Bugs reported and
  873 fixes proposed by Fred Wright.
  874 
  875 Added .ogg as an extensions to the list of those to be excluded from
  876 compression by default.  Proposed by Dirk Eddelbuettel.
  877 
  878 Fixed logic in in() to correctly report failure with a warning message
  879 when uncompression of a commpressed-archived file fails.  Also fixes
  880 that, potentially valid archive data would be skipped after this
  881 error.  Based on bug report by Daniel Webb.  Closes Debian bug
  882 #291364.
  883 
  884 In next(), changed msg to variable-length string, to avoid possible
  885 buffer overflow.  Part of the patch by Erik Schanze (downstream Debian).
  886 
  887 Extended -0 option to influence -t processing and -w and -W file
  888 reading too. The -0 option now toggles when used multiple times.
  889 Added -7 option to disable/enable globbing in processing -yYwW
  890 filename patterns.  Based on feature request and patch by Christian
  891 Schrader (via Debian).  Note that the semantics of the -7 command line
  892 options is sligtly different than it was in the Debian 2.5-3 to 2.5-6
  893 branches: in those branches, -7 was non-toggling so it was not
  894 necessary to supply the -7 before any -yYwW options it should
  895 affect.
  896 
  897 Replaced several 0 by NULL to avoid compiler warnings. Based on patch
  898 by Erik Schanze (downstream Debian).
  899 
  900 Replaced sys_errlist usage by strerror(3).  This avoids (on some
  901 systems) compiler warnings about sys_errlist being obsolete.  Left in
  902 the old code (with #if 0) to ease porting.  Based on patch by Erik
  903 Schanze (downstream Debian) and report by Mike Black.
  904 
  905 Fixed bug in gpg usage examples in script3/, and removed script5/
  906 which had the same bug.  Bug reported, and bug fix found, by Marcus
  907 Williams.  Also added info on this to the manpage. In the earlier
  908 scripts, the built-in compression feature of gpg was used, but it
  909 turns out that this cannot be reliably used with afio: it should be
  910 disabled using the -z 0 option to gpg.  The reason why gpg built-in
  911 compression cannot be used is as follows. When compression is used,
  912 and gpg is run twice on the same input file, it can generate differing
  913 outputs with different lengths.  This is a problem for afio if the
  914 output length is larger than the afio -M option value.  If the length
  915 is larger than the -M value, then afio will call the 'compression'
  916 program twice, once to get the 'compressed' file length and once to
  917 get the actual file contents and write them to the archive, and if the
  918 lenght is bigger in the second run then the data in the archive will
  919 be truncated (and therefore corrupted).  Afio does emit an error
  920 message when this happens, but it might be overlooked.  Some caveats:
  921 in testing it looks like if -z 0 is used with gpg, it will never
  922 produce different-length files for the same input, but I can not find
  923 anything in the documentation of gpg suggesting that this is a
  924 guaranteed feature.  pgp (the non-GNU implementation) might has a
  925 similar different-length behavior causing afio to fail occasionally,
  926 but I have found no reports on the web about this.  (An alternative
  927 would be to use openssl as the encryption engine??)
  928 
  929 Updated legal information for redistributers about the afio license in
  930 afio.c and in the .lsm files.  Removed earlier text concluding that by
  931 Linux Software Map standards, the correct afio license label was LGPL.
  932 Added the text file afio_license_issues_v5.txt.  All of this was
  933 triggerd by a blog entry writen by Tom Callaway, and informed in part
  934 by further discussion in the blog comment section and on some Debian
  935 mailing lists. Thanks to Mark Brukhartz for going on record to clarify
  936 the intent of the original license text.
  937 
  938 Increase default size for -M option from 2 to 250 megabytes.
  939 
  940 
  941 Version 2.5.1-2:
  942 
  943 Improved typesetting and ordering of manpage material: patch by Jaari
  944 Aalto.
  945 
  946 Some things to improve git compatibility: removed RCS tags from afio.1
  947 and afio.c, removed trailing whitespace from files.  Based om report
  948 by Jaari Aalto.
  949 
  950 Improved some questionable code in incheckdata().  Removed unused
  951 variable (causing compiler warning) in outflush() and compressfile().
  952 
  953 Created afio home page on the web.
  954 
  955 Fixed bug in handling buffer size calculations when -s and -c options
  956 settings that create a 2GB memory buffer, by upgrading various
  957 variables to size_t size.  Based on bug report and patch by Yuri
  958 D'Elia.  Tests have shown that (at least on i386 with 32 bit ints and
  959 size_t) this fix does not handle correctly buffer sizes >2GB, probably
  960 because size_t is 4 byte, not 8, and I still have doubts about 2GB
  961 too.  Fixing everything and testing it is just too painful on my
  962 current 32 bit Linux install on a box that has only like 700M real
  963 memory.
  964 
  965 Therefore: added code to prevent memory buffer sizes larger than 1.5
  966 GB being used by -s and -c and by -M.  For -M, probably a limit of
  967 3.5GB is still OK but I have not tested it so better safe than sorry.
  968 On native 64 bit installs, these limits may be over-cautious
  969 (especially if the compiler uses sizeof(int)==8, which is NOT the case
  970 for Linux amd64), but as I have no way to test this I'd rather get bug
  971 reports and patches from 64 bit platform people who run into this
  972 limit than have their backups silently fail.  Closes(?) Debian bug
  973 #578046.
  974 
  975 Added %V and %S subsitution in input/output file name and !script name
  976 generation if -s option used.  Based on idea and patch by Gabor Kiss.
  977 Closes Debian bug #310806.
  978 
  979 Changed makefile to use $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) out of
  980 environment variables, these are set in some compile environments.
  981 Based on report and patch by Jari Aalto.
  982 
  983 Version 2.5.2:
  984 
  985 Fixed bug (introduced in 2.5) of afio giving an error message (and
  986 nonzero exit) when including a control file in an archive.  Bug
  987 reported by Ian Campbell.  Closes Debian bug #686613.
  988 
  989 Added d letter for the -1 option.
  990 
  991 Fixed two compiler errors (as reported by recent gcc) due to
  992 discrepancies between function declarations in afio.h and afio.c.
  993 Problem reported by Jari Aalto.  Added some more size_t and ssize_t.
  994 
  995 Fixed formatting bug to restore output behavior of afio -o -0 -vv like
  996 it was in afio 2.5.  Based on bug report by Corey Mann.  Closes Debian
  997 bug #420654.
  998 
  999 Improved -r option: if a file with 0 length is in the archive, but the
 1000 file on the filesystem is now longer, the -r option will now report an
 1001 error (except for hard linked files). Based on problem report by
 1002 Christian Schneider. Also updated -r description in manpage. Closes
 1003 Debian bug #565202.
 1004 
 1005 Fixed typos in manual file (contol->control).  Contributed by
 1006 bfontaine on github.
 1007 
 1008 Added support in compfile.c for musl libc (http://musl-libc.org) which
 1009 does not have MAXNAMLEN nor DIRSIZ.  Based on patch by doughdemon on
 1010 github.
 1011 
 1012 In savedirstamp and restoredirstamps: fixed a very unlikely memory
 1013 leak. Changed to keep the head of a list that is never freed
 1014 reachable, to make Valgrind happy.  Contributed by Philipp Gesang.
 1015 
 1016 Tweaked regtest script to make it remove test directories left
 1017 after a failed test before re-testing.
 1018 
 1019 Added -Wno-unused-result flag in Makefile to make compilation shut up
 1020 about unused system call results from calls like dup() and nice(). The
 1021 fact that the compiler issues these warnings is due to (in my opinion)
 1022 a declaration bug in glibc, as not checking there results is fully
 1023 legitimate in many situations.
 1024 
 1025 Removed the feature to optimise path names ('Optimizes pathnames with
 1026 respect to the current and parent directories.  For example
 1027 ./src/sh/../misc/afio.c becomes src/misc/afio.c').  Only optimisation
 1028 remaining in nameopt() is that multiple leading /// in path name get
 1029 simplified into one leading /.  This change is related to the other
 1030 security related changes below.
 1031 
 1032 Improved security of handling of archives from untrusted sources when
 1033 they are unpacked.  Added the -8 options allowinsecurepaths,
 1034 allowinsecuresymlinks, and the default behavior described in the
 1035 manpage when these options are not used.  Also added the -1 s
 1036 option. Updated reregression test input archives to account for new
 1037 behavior.  Based on patch and e-mail input from Philipp Gesang.
 1038 
 1039 Added the -8 nosymlinks option and the -1 l option.  Based on patch by
 1040 Philipp Gesang.
 1041 
 1042 Fixed buffer overflow risk in inhead() when reading symlink
 1043 destination value from corrupt or tampered-with archive.
 1044 
 1045 Changed -H promptscript argument processing to allow prompt script
 1046 path names containing spaces or other special characters.  This
 1047 improves compatibility with naming conventions on Windows-centric
 1048 filesystem.  This breaks old behavior where spaces in the prompt
 1049 script argument could be used to add extra arguments.  Based on bug
 1050 report and suggestion by Philipp Gesang.
 1051 
 1052 Added SECURITY CONSIDERATIONS section to the manpage.
 1053