.. RST source for unalf(1) man page. Convert with: .. rst2man.py unalf.rst > unalf.1 .. |version| replace:: 0.0.0 .. |date| date:: ===== unalf ===== -------------------------------- extract Atari 8-bit ALF archives -------------------------------- :Manual section: 1 :Manual group: Urchlay's Atari 8-bit Tools :Date: |date| :Version: |version| SYNOPSIS ======== unalf [**-aetklLopqtv**] [**-d** *dir*] [**-x** *wildcard*] *alf-file* [*wildcard* ...] DESCRIPTION =========== **unalf** lists or extracts the contents of an *ALF* archive. *ALF* is a compressed archive format similar to **arc**\(1), though not compatible with it. It was used on the Atari 8-bit platform beginning in the late 1980s. Extracted files are written to the current directory by default. Existing files are backed up by default (by adding a **~** suffix to the filename). If one or more **wildcard** arguments are provided, files will only be listed or extracted if they match one of the wildcards. See **WILDCARDS** below for details. OPTIONS ======= -a Convert text file line endings from Atari EOL to UNIX newline. Text files are detected by name: **\*.txt**, **\*.doc**, **\*.lst** files are considered text. Note that *only* line-endings are converted. Other ATASCII characters are left alone. If you need anything more in-depth, use **a8cat**\(1). .. convert EOLs in text files. -aa Convert line endings in all extracted files. This will corrupt any executables or non-text data files, so use with caution. .. convert EOLs in ALL files. -d output-dir Write extracted files to this directory, which will be created if it does not exist. The default is the current directory. .. set output directory (created if needed). -e Extract files. This is actually a no-op, as extraction is the default action. .. extract files (redundant; this is the default action). -k Keep trailing periods. In most (all?) ALF files, filenames that have no extension are stored with a trailing period, e.g. '**FOO**' would be stored as '**FOO.**'. By default, **unalf** removes the trailing period; use **-k** to keep it. .. keep trailing periods (dots) in filenames. -l List filenames in archive, one per line, but do not extract. Use **-v** for more information (file size, etc). .. list files in archive (filenames only). -L Lowercase filesnames. Example: **FOO.TXT** will extract to **foo.txt**. .. use lowercase filenames. -o Overwrite files, if they already exist. The default is to rename existing files, adding a **~** suffix. Note that renaming **file** to **file~** *will* overwrite **file~** if it already exists. .. overwrite files (do not create file~ backups). -p Extract to standard output. All the files that get extracted will be printed to stdout with no delimiters, so this is most useful when only extracting one file. **-q** is automatically enabled by this option. *Warning:* No checking is done to see whether stdout is a terminal. Printing binary files to a terminal is a good way to make a mess. Even text files with the EOLs translated can still contain ATASCII formatting/graphics codes that can confuse your terminal. You have been warned. .. extract to stdout (enables -q). -q Quiet extraction: do not print "Uncrunching *file*" messages. Errors and warnings will still be printed. This is the default when **-p** is used. .. quiet: don't print filenames during extraction. -t Test archive. Same as extraction, except the files are not written anywhere. .. test archive. -v Verbose listing of archive contents, with compressed and original sizes, compression ration, date/time stamps, and checksum. The output format is similar to that of **arc -v**, minus the *Stowage* column, since *ALF* doesn't support multiple compression types. The date and time are displayed, but in most .alf files these are the default values of "8 Jan 82 12:24a". .. verbose listing of archive contents. -x wildcard Exclude (do not list or extract) files matching *wildcard*. See **WILDCARDS** below. This option can be given multiple times to exclude multiple patterns. .. exclude . may be given multiple times. WILDCARDS ========= Wildcard (aka glob) matching works like it does on the Atari: *\*.\** matches any filename (whether or not it has an extension), and *\** or *\*.* only match filenames with no extension. A *\** matches any number of characters (including zero). A *?* matches a single character. Like the Atari, anything in the name or extension following a *\** is ignored: **FOO\*BAR.TXT** is equivalent to **FOO\*.TXT**, and **FOO.T\*T** is equivalent to **FOO.T\***. **FOO\*TXT** is equivalent to **FOO\***, and *will not* match the file **FOO.TXT**. Unlike the Atari, matching is case-insensitive. To avoid your shell trying to expand the wildcards, always quote them! Example:: unalf filename.alf '*.txt' EXIT STATUS =========== **0** for success, **1** for failure. DIAGNOSTICS =========== Besides the standard error messages such as "no such file or directory": **this is an ARC file, not ALF** Self-explanatory. Use the **arc**\(1) utility for this file. **not an ALF file** Self-explanatory. Either the file is too small (less than 29 bytes) or its first two bytes don't match the *ALF* signature **0x1a** **0x0f**\. **junk at EOF (ignored)** Usually this is caused by the .alf file being stored on a CP/M disk at some time, or by a dumb file transfer protocol. Either way, the file gets padded to the block size of the filesystem or protocol. Usually, the padding characters are **0x1a**, aka ASCII control-Z. If you see this message, you can ignore it. It's intended to let you know that this .alf file can't be appended to by the **ALF.COM** aka **LZ.COM** Atari utility. **checksum error on** ** The archive is corrupt. If ** is a text file, it may be partially readable. If it's an executable or other binary file, it's probably unrecoverable. **stack underrun/overrun** Generally means the archive is corrupt. Valid ALF files should never cause these errors. If you have an ALF file that does this, try it with the Atari **UNALF14.COM** and see if it has the same problem. If it does, you've found a bug in **unalf**, please send me the .alf file via email (see **AUTHOR**, below). NOTES ===== This **unalf** is 100% compatible with the original Atari **UNALF14.COM** aka **DZ.COM**, with the following differences: - There is no interactive mode. The file to extract must be given as a command-line argument, and the output directory must be given with the **-d** option. - This **unalf** is capable of listing or testing the contents of an archive without extracting it, plus other handy features such as extracting to standard output and text file EOL conversion. - Turning the screen off for speed makes no sense on modern operating systems, so there's no option for that. Neither this **unalf** nor **UNALF14.COM** actually use the dates/times stored in the archive. Extracted files will have their timestamps set to the current date/time. COPYRIGHT ========= **unalf** is released under the WTPFL: Do WTF you want with this. AUTHOR ====== B. Watson SEE ALSO ======== TODO