Message-Id: <199710211233.IAA02128@delorie.com> Date: Tue, 21 Oct 1997 13:06:08 +0200 (IST) From: Eli Zaretskii To: djgpp-announce AT delorie DOT com Subject: ANNOUNCE: GNU tar 1.12 uploaded MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Precedence: bulk Precedence: bulk This is to announce that the DJGPP port of GNU tar 1.12 has been uploaded to SimTel.NET and should be available from your nearest mirror: ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/tar112b.zip ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/tar112s.zip Tar is a program to create and maintain archives of files, and extract files from these archives. It can be used for backing up your disks, and for moving directory hierarchies to other machines. This DJGPP port is based on the preliminary port by Daisuke Aoyama, but it includes many significant improvements. In particular, compressed .tar.gz files are now fully supported. I attach below a part of DJGPP-specific README file that describes the main bugfixes and enhancements, and also the missing features. Please read the installation instructions before you begin using the package. ------------------------------------------------------------------- A port of GNU Tar 1.12 to MS-DOS/MS-Windows using DJGPP tools ============================================================= Features -------- This port of GNU Tar includes significant improvements as compared to the official FSF distribution of version 1.12. The official code was failing in a lot of ways on MS-DOS (my favorite is that commands like "tar cf d:/foo.tar" would fail because `tar' treated file names with a colon as archives on remote machines and was trying to connect to a machine called `d'). I believe that all the features in the original Unix code work in this DOS port; the single most important exception is the lack of support for remote archives (see the "Missing" section below). Here's the list of bug fixes and enhancements in this port: 1. Compressed archives are now fully supported (yeah!). All the options which support compressed archives in the Unix version, work on MS-DOS. Compressed archives are produced by piping the output of `tar' to or from `gzip', so it is a bit slow, since DOS simulates pipes via disk files. If you have a fast, memory-abundant machine, point your TMPDIR to a large RAM drive, which will greatly speed up compressed archive operations. 2. Backup files are fully supported, including numbered backups, even on plain MS-DOS and other non-LFN platforms. You should always unpack .tar.gz files of Unix origin with numbered backups turned on, since file name collisions in the restricted 8+3 DOS namespace might otherwise overwrite files (unlike `djtar', `tar' will not prompt you to supply an alternate name). 3. Automatic renaming of file names which are illegal on DOS. When extracting files, `tar' will automatically attempt to rename file names such as `Makefile.in.in', `.emacs', `foo:bar;baz,' and others. Note that even Windows 9X disallows some characters from appearing in a file name; this port correctly identifies the set of characters which need to be replaced, depending on whether long file names are or aren't available on the filesystem where the file is being extracted. The algorithm for generating converted names is almost identical to what `djtar' does, except that `tar' doesn't prompt you for another name when it fails to extract a file. Under verbose operation, `tar' prints a message about renamed files. 4. Similarly, any file in the archive whose name is reserved on MS-DOS by a character device driver (e.g., `prn.txt', `aux.c', `nul.foo' etc.), is automatically renamed. This prevents wedging `tar' and/or your system when unpacking Unix archives with such files. Tar renames such files by prepending a `_' to their basename. 5. Extraction of hard and symbolic links is simulated by copying files. The --diff (-d) mode compares the contents of two files in this case. 6. Full support of DOS absolute file names with drive letters (the original code won't even work on tar file names like `d:/foo/bar.tar'). Numerous snafus with root directories on other drives and other such subtleties were resolved. Tar now supports backslashes in file names (but they are converted into forward slashes before accessing the archives). 7. Using -O option when `tar's stdout is redirected to a file would corrupt binary files. This is corrected in this port. 8. When given the -C option, `tar' now correctly restores the original directory before it exits. 9. The -N and --newer-mtime options now work. (They were disabled in the DOS version for reasons that are beyond me.) All the time comparisons, including for -N, --newer-mtime and --diff, now compare time stamps with a 2-second granularity, so you won't see false "Mod times differ" messages due to DOS truncating of file times to the nearest even second. 10. When --verify (-W) option is given, `tar' will flush the disk cache, if one is installed. This prevents some overly smart caches from supplying disk data from memory, instead of accessing the media, thus defeating the very goal of verifying. 11. The manual has been revised, most of the missing cross- references fixed, and DOS-specific information added. The manual is under construction by the GNU project, and, IMHO, still looks like a car crash (e.g., many subjects are described twice, evidently from two different versions of the manual). But I really couldn't afford rewriting the manual. What's there should be good enough, I think; if it's not, submit bug reports to the GNU package maintainer. 12. The --recursive-unlink option now really works. (This was actually a genuine bug in the official release which is NOT specific to DOS.) 13. You can use --group and --owner options to give files away to any user and any group. Thus you can create archives on DOS with files that would be writable by specific users on Unix. (The official code had a bug whereby numeric GIDs and UIDs would not work, even on Unix; this is corrected in this port.) 14. The feature of the Unix code whereby `tar' will not dump the archive it is creating into itself, works in this port. (Due to the peculiarities of inode number simulation in the DJGPP library, this will NOT work on Windows 9X, Windows 3.11 with 32-bit File Access, and on networked drives.) 15. This port supports the optimization in cases that `tar's output is meant for the NUL device. This makes `tar' much faster in these cases. 16. `Tar' will no more switch the console to binary mode. It only switches stdin and stdout to binary mode when they are redirected to a file, and then only when `tar' reads or writes the archive to one of these streams. (Switching the console to binary mode has unpleasant side-effects. For example, it disables SIGINT generation when you press Ctrl-C, so you cannot interrupt a runaway `tar'.) The original code also had a bug with invoking a subsidiary shell when switching volumes in a multi-volume tar file; this is now corrected. 17. All the scripts in the test suite work, except the `ignfail.sh' test. The latter will never work because it deals with file permission bits which are impossible on MS-DOS (e.g., non-readable directories or files non-writeable by the owner). Missing ------- The following (short) list explains what functions are missing from this port: 1. Direct device access. It would be nice to be able to say "tar cvf /dev/fd0 c:/" and have an archive created on a floppy drive A: such that it could be taken to a Unix box and untarred without mounting it as a DOS filesystem. At least for floppies with the most popular formats (1.2M and 1.44M) this shouldn't be too hard; one just have to use the DJGPP Filesystem Extensions feature to hook the low-level I/O functions and read/write the diskette on the BIOS level. Any takers? 2. Remote archive support. The code in rtapelib.c which opens a pipe to `/etc/rsh', should be tweaked to work on DOS. 3. Internal compression/decompression. Linking `tar' with parts of `gzip' code should make compressed archive operations MUCH faster. `djtar' already does that, but it cannot create archives.