home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 9 Archive
/
09-Archive.zip
/
PXOS221A.LZH
/
POLYXARC.DOC
< prev
next >
Wrap
Text File
|
1991-04-14
|
42KB
|
856 lines
page 1
PolyXarc
v2.1 5 April 1991
Public domain by Jeffrey J. Nonken
OS/2 port by Bill Andrus
By giving this away, complete with source code and docs, I hope
to encourage others to do likewise. I think we can all gain in
the long run by sharing. Public Domain means that nobody owns it.
You can give it away, sell it, incorporate bits into other
programs, whatever you want. However, in the interests of program
management, I request that if you make changes that may benefit
others, you
1) Share them with us;
2) Send me a copy of source so I can make an 'official' release.
Warranty: none.
Address netmail to 1:273/715 in Fidonet. If you wish to log on,
call (215)279-9799 (300/1200/2400/9600/14400 HST/V.32), PCPable.
You can get the latest distribution version of PolyXarc by file
requesting POLYXARC from 1:273/715. If you wish to send anything
via U.S. Snail, write to:
Jeffrey J. Nonken
1706 Cherrie Circle
Blue Bell, Pa. 19422-3412
NOTE: Version 2.0 has major changes in the configuration file
syntax. VERSION 1.x CONFIGURATION FILES WILL NOT WORK WITH 2.x! I
have made no attempts to detect old configuration files and
provide correction or warning; that would complicate and enlarge
PolyXarc unnecessarily. It is up to you to make sure your
configuration files have been replaced or updated. Version 2.0
configuration files will work just peachy with version 2.1.
WHAT IT IS
==========
"Poly" means "many", and "Xarc" means "archive extractor".
PolyXarc is a program that permits automatic extraction of most
known archive formats. By "Xarc" I do not specifically refer to
SEA's ARC or XARC programs or the file format supported by ARC
(which I will refer to as ".ARC format" herein), although
PolyXarc supports both. The purpose of this program is to allow
Fidonet BBS system operators to automatically extract bundles
that have been made with various archive programs. Traditionally
sysops have used one .ARC format program or another. But recent
improvements in compression techniques, along with a rapidly
climbing volume of echomail, have encouraged sysops to look at
other programs.
It is not my purpose to praise or encourage the use of one
archive format over another. In fact, the whole purpose of
PolyXarc is to support as wide a variety as possible.
PolyXarc 2.1: multiple-format archive extractor executive
page 2
PolyXarc does not itself extract archive files; PolyXarc
identifies which format is being used and calls on the
appropriate archive extractor program to do the actual work. In
this lies its flexibility. Think of PolyXarc as an "Archive
Extractor Executive".
PolyXarc is a direct replacement for SPAZ v1.40 (developed by Dan
Thomson and Andrew Farmer), except that PolyXarc is much larger
(about 35k vs. 6k) and may not work in cases where memory is at a
premium. However, PolyXarc is more versatile and much more
flexible.
PolyXarc's main features are:
- Automatic stand-alone mail bundle extraction;
- Small and fast;
- Flexible and adaptable.
PolyXarc can find all mail bundles in a specified directory and
de-archive all of them. In addition, PolyXarc can sort version
5 .ARC files by their date/timestamps before beginning extraction
to assure that the packets are, as much as possible, extracted in
the correct order. PolyXarc also gives you the choice of limiting
the number of archives that it extracts in a session so that you
can process them a few at a time instead of all at once.
I tried to write PolyXarc to be as flexible and expandable as I
could within reason. Unlike most multi-archive mail unbundlers,
except for some .ARC format recognition, PolyXarc does not have
any specific format recognition built in. Instead, PolyXarc has a
configuration file that contains signature strings and command
line templates, allowing you to expand PolyXarc's capabilities
without having to write any code. In addition, you can customize
PolyXarc's recognition of .ARC format compression flags, and tell
it which program to use for which flag. However, if all else
fails, and you come upon a format for which PolyXarc cannot be
configured, you can alter the source to accomodate it, for I have
released the source code to the public domain. This gives
unlimited permission for anybody to alter it, providing a
permanent upgrade path.
If the explanations in this document don't make sense, take a
look at POLYXPLN.DOC; it picks apart the config file and explains
some details about the archivers.
HOW TO USE IT
=============
PolyXarc's syntax is:
PolyXarc [switches] archive [name [name...]] [switches]
Recognized switches are:
-Cconfig -I -O
-D -Maddr -R
-F[n] -N -Q
-#
PolyXarc 2.1: multiple-format archive extractor executive
page 3
archive
This is the name of the archive file you wish to extract from, or
if you specify the -F switch, the path where mail bundles are
kept. In the former case (not using -F) wildcards are supported,
and if you do not supply an extension, PolyXarc will assume an
extension of ".*". In the latter case (using -F), you must
specify a path ONLY, not a file name. Also, if you specify -F you
may leave the archive path out completely and it will default to
the current directory.
name...
This is one or more names of files within the archive. If you
list more than one name, they should be separated by spaces.
These are optional. If left off, most extractors will assume that
you want to extract all files. You must list the archive name
(above) before listing individual file names. PolyXarc considers
any parameter that does not start with a switch character ('-' or
'/') to be a file name or archive name.
-Cconfig
This is the file that contains signature information for
PolyXarc. If it is not in your current subdirectory you must
supply a path to it as well. The file name must follow the switch
with no intervening spaces. If you do not specify -C on the
command line, PolyXarc will look first for POLYXARC.CFG in the
current directory, then in the directory of the .EXE file, and if
not found will then look for a PENGUIN file (described later).
-D
Specifying this will cause PolyXarc to delete any archive file it
successfully has extracted. Specifying the /F parameter causes /D
to be enabled unconditionally.
-F[n]
-F will cause PolyXarc to extract all the mail bundles it can
find in the subdirectory specified by 'archive'. If you specify a
number after the F (like "-F2"), PolyXarc will extract up to that
number of mail bundles. In this case 'archive' (above) must be a
path, not a filename. Specifying -F also forces -D and -O, and
disables -N.
-I
I really mostly intended this for use in some manual modes. This
switch will cause PolyXarc to ignore errors returned from the
archivers.
PolyXarc 2.1: multiple-format archive extractor executive
page 4
-Maddr
This causes PolyXarc to calculate and display the net address of
the sender of each bundle. 'addr' is your netmail address, net
and node only. Example: -M273/715.
-N
Specifying this causes PolyXarc not to attempt to sort an .ARC
format file. Normal action is to sort all .ARC format files (the
files inside the archive) by the date and time stamps. Specifying
-F will override -N and cause PolyXarc to sort the files. Note
that PolyXarc will not sort ARC version 6 files.
-O
This is the overwrite flag. If the archiver finds that a file it
is extracting already exists, this flag will cause it to
overwrite the old file without prompting. Specifying the -F
parameter causes -O to be enabled unconditionally.
-R
This is the same as -O. I included it to maintain ARCE syntax
compatibility for people who want to call PolyXarc from within
other programs (such as Opus 1.0).
-Q
Specifying -Q causes PolyXarc not to display most status and
configuration messages. Error messages will still be displayed.
-#
Normally when you invoke the -F switch, PolyXarc will unbundle
files with extensions starting with .MO, .TU, etc. and ending
with any character. If you add the -# switch, PolyXarc will only
unbundle files ending with a decimal digit (0-9).
NOTE: None of these switches is position dependent or
case sensitive. Any may be specified with a hyphen (-)
or a slash (/). If you specify a question mark (?) as
the first parameter, you will get a brief help message
and no processing will be done.
PolyXarc requires a single configuration file. This file gives
PolyXarc enough information to recognize various archive formats
by looking for specific 'signatures'. There are three ways to
specify the configuration file name:
- just have POLYXARC.CFG in the current directory, or in the
directory with POLYXARC.EXE;
- use the -C switch to specify it on the command line;
- use a PENGUIN file.
PolyXarc 2.1: multiple-format archive extractor executive
page 5
Doug Boone has proposed an idea that I like; rather than
proliferate configuration files, gather as many as possible into
one file. His implementation requires you to specify the file in
an environment variable called PENGUIN. PolyXarc may use the
PENGUIN technique if you have set the environment variable.
This is how PolyXarc decides which technique to use: if you
specify a file on the command line using the -C parameter,
PolyXarc will use that file. If you don't specify the -C
parameter, PolyXarc will look for POLYXARC.CFG in the current
directory. If it doesn't exist, PolyXarc will then look in the
directory that it was executed from. If it isn't there either,
PolyXarc will look for the PENGUIN environment variable. If it
exists, PolyXarc will use that file; otherwise, it will exit with
an error.
To set the environment variable, you would put a statement like
this into your AUTOEXEC.BAT file:
SET PENGUIN=D:\OPUS\PENGUIN.CFG
There are three keywords that PolyXarc recognizes in the
configuration file, one of which has three variations, plus BEGIN
and END statements. PolyXarc will not recognize any keywords
until it sees a BEGIN POLYXARC statement, and will ignore
anything after an END POLYXARC statement until it sees another
BEGIN POLYXARC, if any. You may have as many of these blocks as
you want in the configuration file, and they may overlap other
programs' blocks if you wish. PolyXarc will ignore anything it
doesn't recognize. The keywords are:
ARC
ARC5 (same as ARC)
ARC6
SIGNATURE
NOSORT
Before I describe the keyword syntaxes, let me explain the
command templates they use. A command template is a description
of the command line used to call a certain program. The general
syntax of a command line consists of the command, followed by one
or more parameters, the overwrite flag key, the extract flag key,
the filename key, and/or the extractname key. The parameters and
keys may be in different orders depending on the syntax of the
particular archive extractor you are using.
The command is the actual DOS command used to run the program
(such as "ZOO" or "ARCE"). The parameters are any parameters
needed to cause an extraction. The extract flag key is actually
an 'insert flag' that tells PolyXarc where to put the extract
switch if it is needed. The extract flag key is "%1". The
overwrite flag key, "%2", tells PolyXarc where to put the
overwrite switch if it is needed. The filename key, "%3", is the
name of the archive to extract from, and is also an insert flag.
The extractname key, "%4", is a list of names of files to extract
PolyXarc 2.1: multiple-format archive extractor executive
page 6
from the archive. Another way of looking at it is that you take
the general syntax for the particular archiver, put a %1 in place
of the extract switch (if any... most archivers will not actually
use this field), a %2 in place of the overwrite switch, a %3 in
place of the archive filename, and a %4 where the list of files
would be if you wanted to specify which files to extract. The
actual order of these parameters depends on what each particular
archiver expects to see.
As mentioned above, most extractors will not need the extract
flag key. In most cases, the extractors have an extract command
(either explicit or implied) that is used whether you want
automatic overwrite or not; to overwrite, you use the overwrite
command in addition to the extract command. I have not seen any
archive extractor that uses a separate command for extract-
without-overwrite versus extract-with-overwrite; nevertheless, I
would rather include support for a redundant parameter now than
have to 'fix' it later. In any case, the extract flag key will
only be used if overwrite option is not invoked on PolyXarc's
command line, and the overwrite flag key will only be used if the
overwrite option is invoked. If there is an extract command that
is used whether or not overwrite is invoked, then you should
include it as a permanent part of the template for that command.
General syntax for the ARC keywords:
ARC level overwrite extract command_template
ARC5 level overwrite extract command_template
ARC6 level overwrite extract command_template
PolyXarc recognizes .ARC format files internally. The ARC command
spec defines a level (known as a 'header type' by the .ARC
compatible programs) at which a certain program should be
executed. ARC programs will generally extract any level of
compression up to the level they are capable of. For example, ARC
version 5 and ARCE will extract up to level 8; ARC version 6,
PKXARC, and PKUNPAK will extract up to level 9; PAK will extract
up to level 11. Specify the appropriate level for each extractor
you will be using. Note that you need not supply all the
extractors you have available; for example, PAK will extract all
your version 5 .ARC files. However, due to speed or memory you
may want to specify several archivers so that the smallest or
fastest may be used whenever possible.
ARC version 6 is a special case. SEA introduced an extended
header format that allows non-file information to be added.
Version 5 programs such as PKPAK and PAK cannot deal with these
formats and will exit with an error if you try to use them on
version 6 files. Version 2.0 of Polyxarc also does not know how
to deal with these files. However, even version 6 ARC files have
different levels, and PAK, a strictly version 5 archiver, uses
compression levels that are incompatible with ARC version 6
ARC+PLUS. So if PolyXarc 2.1 detects version 6 information in
an .ARC file, it will look for an archiver with an ARC6 keyword.
PolyXarc 2.1: multiple-format archive extractor executive
page 7
ARC version 6 programs can extract version 5 files. Unfortunatly,
PAK level 10 is incompatible with ARC+PLUS level 10. So PolyXarc
tries to use version 5 archivers for version 5 files if they are
specified. If no version 5 archiver in your config file will
extract the version 5 archive, PolyXarc will attempt to apply a
version 6 archiver to the file. Note that PolyXarc will never
attempt to use a version 5 archiver to extract a version 6
archive.
Please note that unlike PolyXarc version 2.0, PolyXarc version
2.1 does not need the .ARC format signature lines listed in any
particular order. Version 2.1 now automatically sorts the
signatures once it reads them in. All you have to do is get the
levels and versions right.
If this is confusing to you, imagine how difficult it is trying
to describe it! But if you use the commands in the distributed
POLYXARC.CFG file you should be ok. You may also read
POLYXPLN.DOC for some more detailed explanations.
An example of mixed ARC lines (remember, ARC and ARC5 are the
same):
ARC5 8 /r "" arce %3 %4 %2
ARC 11 /WA "" pak /e %2 %3 %4
ARC6 10 /o "" xarc %2 %3 %4
Ok, back to the syntax descriptions. A reminder of what the
signature lines look like:
ARC level overwrite extract command_template
ARC5 level overwrite extract command_template
ARC6 level overwrite extract command_template
Overwrite is the parameter this particular archive program needs
in order to automatically overwrite existing files while
extracting. The overwrite parameter must be 5 characters or less.
Extract is the parameter this particular archive program needs in
order to extract files. This is only used for programs which use
different commmands for 'extract' and 'extract overwrite'. The
extract parameter must be 5 characters or less.
In most cases you will not need the extract parameter. However,
there must be something defined for each field, whether it is
used or not. In my distributed configuration file I simply put in
an empty string ("") as a place holder.
The command template defines the command line (including the name
of the arc file) used to invoke the necessary de-archiver.
Here are some examples from the distributed configuration file:
PolyXarc 2.1: multiple-format archive extractor executive
page 8
ARC 8 /r "" arce %3 %4 %2
ARC 9 /r "" pkunpak %2 %3 %4
ARC6 10 /o "" xarc %2 %3 %4
ARC 11 /WA /WO pak /e %1%2 %3 %4
Here is the PAK command line that PolyXarc might generate, first
with overwrite enabled, then without:
pak /e /WA 0000FFFB.MO2
pak /e /WO 0000FFFB.MO2
Here is the PKUNPAK command line in the same order:
pkunpak /r 0000FFFB.MO2
pkunpak 0000FFFB.MO2
General syntax for the SIGNATURE keyword:
SIGNATURE type offset signature overwrite extract template
This command allows PolyXarc to automatically recognize different
compressor archive formats without being locked into any
particular format or set of formats. Note that you should not try
to define a SIGNATURE for .ARC format files, as they are
recognized internally. The different signatures will be looked
for in order of definition, with .ARC files coming last.
Offset is the offset into the file of the signature. If offset is
preceeded by a '-' (minus sign), PolyXarc will count backwards
from the end of the file.
Signature is the text of the signature. The signature parameter
must be 5 characters or less.
Overwrite is the parameter this particular archive program needs
in order to automatically overwrite existing files while
extracting. The overwrite parameter must be 5 characters or less.
Extract is the parameter this particular archive program needs in
order to extract files. This is only used for programs which use
different commmands for 'extract' and 'extract overwrite'. The
extract parameter must be 5 characters or less.
In most cases you will not need the extract parameter. However,
there must be something defined for each field, whether it is
used or not. In my distributed configuration file I simply put in
an empty string ("") as a place holder.
The command template defines the command line (including the name
of the arc file) used to invoke the necessary de-archiver.
PolyXarc 2.1: multiple-format archive extractor executive
page 9
Here are some examples from the distributed configuration file:
SIGNATURE -3 DWC w "" dwc e%2 %3 %4
SIGNATURE 2 -lh /mc "" lharc e %2 %3 %4
SIGNATURE 0 ZOO O "" zoo x%2 %3 %4
SIGNATURE 0 PK -o "" pkunzip %2 %3 %4
SIGNATURE 0 PK /WA /WO pak /e /z %1%2 %3 %4
SIGNATURE 0 <60EA> -y "" arj e %2 %3 %4
An expanded Zoo command line would look like this, first without,
then with overwrite:
zoo x 0000FFFB.MO2
zoo xO 0000FFFB.MO2
The NOSORT keyword syntax is:
NOSORT
If specified, NOSORT causes PolyXarc not to attempt to sort .ARC
format files. (Notice that PolyXarc will not attempt to sort
version 6 archive files in any case. That is because only one
obsolete version 5 program, PKARC/PKPAK, sorts alphabetically
when adding to an archive, and because some extended version 6
headers are position dependent.) This is almost identical to the
-N switch on the command line. If neither is specified, PolyXarc
will attempt to sort the files in .ARC format archives by date
and time in order to keep mail packets in chronological order.
This is in case the sender used PKPAK or PKARC to pack his mail;
they will sort the files in the archive alphabetically, which
occasionally causes messages to get out of order. Note that while
the -F switch will override the -N switch, the NOSORT keyword
overrides the -F switch, causing PolyXarc never to sort.
PolyXarc allows some special character sequences in the config
file. The two main sequences are: quoted strings, and hex
numbers. These are a lot easier to use than to explain, but if
you want to skip ahead there is a summary at the end of this
explanation.
Normally PolyXarc just treats a character as a character. For
example, this line:
SIGNATURE 0 PK /WA /WO pak /e /z %1%2 %3 %4
is interpreted exactly as you would think. One or more spaces or
tabs separate each parameter on the line. Since the template is
the last parameter on the line, we always know where it starts,
and everything after that is part of the template, so we can
imbed spaces into the template with impunity. However, there are
times when you may need to imbed spaces into a parameter other
than the template. In that case you must enclose the parameter in
quotes. For example, if you had a signature with a space:
NEW 1
PolyXarc 2.1: multiple-format archive extractor executive
page 10
You would have to put quotes around it in the config file,
something like this:
SIGNATURE 0 "NEW 1" -o -e NEW %1%2 %3 %4
This also allows you to include an empty string in the config
file. For example:
SIGNATURE 0 PK -o "" pkunzip %2 %3 %4
Notice that instead of an extraction parameter, there are two
double-quotes. PolyXarc sees the quotes and knows there's a
parameter there, but since there's nothing between them, PolyXarc
will store an empty string. That way if you accidentally include
that parameter in the template, nothing will happen; and even if
you don't, the parameter will not take up any room in memory.
Note that you don't have to put the whole string in quotes. For
example, you can put "NEW 1" as NEW" 1"; once PolyXarc sees the
first quote, it will continue ignoring spaces until it sees the
second quote. Also note that you MUST have a closing quote, or
PolyXarc will keep going until the end of the line, and the rest
of the parameters on that line will be lost.
Besides using quotes, you can also imbed hex numbers in a
parameter instead of just using printable characters. For
example:
SIGNATURE 0 <60EA> -y "" arj e %2 %3 %4
This program's signature consists of two characters, one of them
unprintable, at the beginning of the file. Instead of making you
try to imbed the second character directly into the config file
with a fancy editor, I've allowed you to describe the character
by giving its ASCII value in hexadecimal. When PolyXarc sees a
less-than character (<), it goes into Hex mode and starts
interpreting the following characters as hex numbers, until it
sees a greater-than character (>) or reaches the end of the line.
Notice that this is like the quote feature, in that you don't
have to make the entire parameter hex if you have some printable
characters. In the example above, the first character is actually
printable; you could define it like this instead:
SIGNATURE 0 `<EA> -y "" arj e %2 %3 %4
Now there are a few more rules for hex digits. First of all,
PolyXarc expects that the hex digits will be in pairs. One pair
of digits describes a character. You can define an odd number of
digits, but you may not get the results you expect. For example,
<615> is not the same as <0615> or <6150>; it is the same as
<6105>. Your best bet is to use character pairs, or see the next
rule.
PolyXarc 2.1: multiple-format archive extractor executive
page 11
Another rule is that anything that isn't a (>) or a hex digit
will break a character description, assume that it's finished,
and start on the next character. For example, <6 15> is the same
as <0615> is the same as <06 15> is the same as < 6,15>. The
spaces and commas act as separators. This provides a handy visual
breakup.
Now, it is possible that you will want to have the characters "
or < in one of your signatures. To accomodate that I added the
"literal" character, which is a backslash (\). When encountered
in normal mode or inside a quote, the backslash tells PolyXarc to
take the next character literally. This way you can imbed the
quote or less-than characters without having to go into hex mode
and describe them in hex. If you want to imbed a backslash,
simply include two backslashes: \\. PolyXarc will see the first
one as a directive ("take the next character literally") and then
take the second one as a character.
Limitations: You cannot change modes between hex and quoting in
the middle of a quote or hex sequence. If you are in a hex
sequence and want to start a quote you must first end the hex
sequence. If you are in a quote string you cannot imbed a hex
sequence; you must end the quote. A '<' in the middle of a quote
is treated as a normal character. For example:
<4142> converts to "AB"
<41>B converts to "AB"
A<42> converts to "AB"
"A"<42> converts to "AB"
<41>"B" converts to "AB"
"A<41>" converts to "A<41>"
<41"B"> converts to "A." (where . is actually an unprintable
character with a numeric value of 0B)
Here is a summary of the rules:
- A whitespace character is a space or tab.
- Normally, each non-whitespace character is simply treated as a
character.
- If you place double-quotes (") around a string or part of a
string, that string will be accepted intact, including
whitespace.
- If you imbed a backslash ('\'), the backslash will be thrown
away and the next character will be accepted as a character.
This allows you to imbed the double-quote (") and less-than
(<) characters as regular characters. To use a backslash as
part of a string you must imbed two backslashes ('\\'); this
will translate to a single backslash.
- If you place a less-than sign (<) in a string, the following
characters will be considered to be 2-digit hex numbers until
a greater-than sign (>) is reached. A hex digit is any numeric
digit (0-9) or any letter from A to F (a-f or A-F). Normally
the hex digits will be taken in pairs, but if any other
character is imbedded, it will be considered to be a number
break and the next digit will start the next number.
PolyXarc 2.1: multiple-format archive extractor executive
page 12
TECHNICAL SECTION
=================
PolyXarc figures out what format is being used by looking for
certain characteristics in the file. For example, each PKZIP
format file has "PK" as the first two bytes in the file. All .ARC
format files have a hex 1A value as the first byte. The SIGNATURE
lines in the configuration file describe what to look for, where
to look for it, and what command syntax to use if PolyXarc finds
it.
...except for .ARC files. Over the years .ARC files have added a
number of different formats. Each time one is added, it gets
assigned a level. The standard programs (ARC, ARCA, and ARCE)
support up to level 8. PKPAK added level 9, and PAK added levels
10 and 11. Due to program size and other considerations, people
often prefer to use the minimum program required for the job.
Also, some archive extractors are faster than others. Either way,
the ARC lines in the configuration file describe what to look
for, and what command syntax to use if PolyXarc finds it. Each
ARC line has a level number. That number is the highest level
that program will support, not just the only number. PolyXarc
always uses the minimum specified program for the highest level
found in the archive.
The exceptions, as explained before, are ARC6 programs. Because
they support an extended set of ARC formats, their archives are
readily identifiable and are incompatible with version 5
archives. If you have both an ARC5 and an ARC6 program supporting
a compression level, the ARC5 program will always be used for an
ARC5 file using that level. An ARC6 program will always be used
to extract an ARC6 file.
EXAMPLES
========
I have my incoming and outgoing mail on two different drives. To
optimize space usage on my outgoing drive, I have PolyXarc
extract the archives into the incoming directory before I let
QMail loose on them. Therefore my batch file looks something like
this:
C:
CD \NET\FILE
PolyXarc -F -M273/715
E:
QM TOSS etc.
If you want to run PolyXarc directly from Opus 1.0 on a barefoot
Opus system, simply rename POLYXARC.EXE to ARCE.EXE. If you
already have the real ARCE someplace on your system, make sure
that the renamed PolyXarc is either earlier in the path, or
replaces ARCE, or is in the directory you are running it from.
Otherwise, it will quite likely find the original ARCE first.
Remember also, if you have ARCE.COM and ARCE.EXE in the same
directory, DOS will always run ARCE.COM. Also remember to either
PolyXarc 2.1: multiple-format archive extractor executive
page 13
remove the ARCE control line from PolyXarc's configuration file,
or else specify ARCE's path in the control line; otherwise
PolyXarc will end up trying to execute itself and you will end up
with what is known in the business as 'a mess'.
To use PolyXarc from Confmail, add the -A parameter to the end of
Confmail's command line:
Confmail import blah blah blah -A PolyXarc -o -m273/715
RETURN CODES &c.
================
0 = No error.
1 = Can't open/read source (missing or invalid file).
2 = Can't create/write dest (maybe disk or directory full).
3 = Can't delete old source file (read-only).
4 = Can't rename temp file to source name.
5 = Out of memory.
6 = Cannot determine archive type.
7 = Configuration file syntax error.
8 = Error was returned from the archive extractor.
9 = File was zero-length.
10 = DOS error while trying to execute the extractor.
Note that if you use the -f switch, not all of these errors will
be returned. In the case of a zero-length file, PolyXarc -f will
simply give a warning message, delete the file, and go on. In the
cases of errors 3, 6 and 8, PolyXarc will rename the file to
BAD_ARC.??? (where ??? is an ascending decimal number starting
from 000) and go on.
CAVEATS
=======
If a file has been transferred via XMODEM, the last record of
that file will be padded with nulls. In the case of DWC-
compressed files, this can be a problem. Since PolyXarc looks for
"DWC" at the end of the file, the null padding will cause
PolyXarc not to recognize a DWC file. I could add enough smarts
into PolyXarc to have it search backwards through the nulls.
However, DWC is not used by many sysops, and there are other
archivers that work just as well, so it doesn't seem worthwhile.
This is a potential problem for any archiver whose signature is
at the end of the file, though at the moment I don't know of any
besides DWC.
ACKNOWLEDGEMENTS
================
Thanks to Mike Housky for the entire .ARC format search-and-sort
section. I shamelessly stole it straight out of his PAKSORT
program. Thanks also to Dan Thomson for coming up with the
original program, SPAZ, and saving me a lot of research and
planning. (There is probably no easier program to design than one
for which you have a working model!)
PolyXarc 2.1: multiple-format archive extractor executive
page 14
Many thanks to John Lull and Clay Tinsley, two of my original
beta testers. They faithfully ran every revision I put out and
let me know whenever something went wrong. (Which was often.)
Clay was also responsible for convincing me to write PolyXarc.
David Page, another beta tester, also gave some helpful
criticism.
Thanks to Steve Palm, who ported PolyXarc over to use on his
Amiga, and Bill Andrus, who ported PolyXarc over to OS/2. Between
us we came up with a set of source files and definitions that
allow us to compile the same source under our respective
operating systems.
Thanks to Peter Stern for helping track down some subtle bugs in
version 2.0.
Thanks in no particular order to Thom Henderson, Phil Katz, Rahul
Dhesi, David W. Cooper, Nogate Consulting, Haruyasu Yoshizaki,
Vernon Buerg, Wayne Chin, Robert K. Jung, and all the other
archive program authors for all their hard work. Keep it up,
guys!
And as always, thanks to Ward Christensen for everything.
Jeffrey J. Nonken
1706 Cherrie Circle
Blue Bell, Pa. 19422-3412
BBS: (215)279-9799 HST/v.32
Fidonet: 1:273/715
Internet: Jeffrey.Nonken@f715.n273.z1.fidonet.org
Note: the above Snailmail address and phone number may change in
the next few months. Please use my Fidonet or Internet address,
or check the latest Nodelist for the current information.
PolyXarc 2.1: multiple-format archive extractor executive