aboutsummaryrefslogtreecommitdiff
path: root/src/unalf.rst
blob: 774ddf2bbbed651800ddfc16a1e92b6bf977900b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
.. 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 [**-l**] **alf-file**

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. Existing files
are overwritten without warning.

OPTIONS
=======

For compatibility with **arc**\(1) usage, the **-** in front of
option letters is optional.

-l
  List contents of archive, but do not extract. 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".

-v
  Same as **-l**.

**-e**, **-x**
  Extract files. This is actually a no-op, as extraction is the
  default action.

EXIT STATUS
===========

**0** for success, **1** for failure.

DIAGNOSTICS
===========

Besides the standard error messages such as "no such file or directory":

**unalf: this is an ARC file, not ALF**
  Self-explanatory. Use the **arc**\(1) utility for this file.

**unalf: 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**\.

**unalf: 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.

**unalf: checksum error on** *<file>*
  The archive is corrupt. If *<file>* is a text file, it may be
  partially readable. If it's an executable or other binary file, it's
  probably unrecoverable.

NOTES
=====

This **unalf** is 100% compatible with the original Atari **UNALF.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.

- Files are always extracted to the current directory. The original
  **UNALF.COM** accepted a 2nd argument or prompted for the output directory.

- This **unalf** is capable of listing the contents of an archive
  without extracting it.

- Turning the screen off for speed makes no sense on modern operating
  systems, so there's no option for that.

Neither this **unalf** nor **UNALF.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.

AUTHORS
=======

B. Watson <urchlay@slackware.uk>

SEE ALSO
========

TODO