-+-+-+-+-+-+-+-+ START OF PART 3 -+-+-+-+-+-+-+-+
X    if (argc == 1)
X    `7B
X`09help();
X`09return EXIT_SUCCESS;
X    `7D
X    else if (argc == 2)
X    `7B
X`09command = 'L';
X`09arc_p = argv`5B1`5D;
X    `7D
X    else if (argc == 3)
X    `7B
X`09if (strlen(argv`5B1`5D) > 1)
X`09    error(M_BADCOMND, argv`5B1`5D);
X`09command = toupper(*argv`5B1`5D);
X`09if (strchr("ELTX", command) == NULL)
X`09    error(M_BADCOMND, argv`5B1`5D);
X`09arc_p = argv`5B2`5D;
X    `7D
X    else
X    `7B
X`09help();
X`09return EXIT_FAILURE;
X    `7D
X
X    strncopy(arc_name, arc_p, FNAME_MAX);
X    case_path(arc_name);
X    i = strlen(arc_name);
X    j = parse_path(arc_name, (char *)NULL, (char *)NULL);
X    lastc = arc_name`5Bi - 1`5D;
X    if (lastc == ARJ_DOT)
X`09arc_name`5Bi - 1`5D = NULL_CHAR;
X    else if (strchr(&arc_name`5Bj`5D, ARJ_DOT) == NULL)
X`09strcat(arc_name, M_SUFFIX);
X
X    make_crctable();
X
X    error_count = 0;
X    clock_inx = 0;
X    arcfile = NULL;
X    outfile = NULL;
X
X    execute_cmd();
X
X    if (error_count > 0)
X`09error(M_ERRORCNT, "");
X
X    return EXIT_SUCCESS;
X`7D
X
X/* end UNARJ.C */
$ CALL UNPACK [.UNARJ_SRC]UNARJ.C;1 1282738464
$ create 'f'
XNAME unarj WINDOWCOMPAT NEWFILES
$ CALL UNPACK [.UNARJ_SRC]UNARJ.DEF;1 1145969493
$ create 'f'
X
X     UNARJ.DOC, UNARJ 2.20`09`09`09`09  July 1991
X
X
X`09UNARJ software and manual copyright (c) 1991 by Robert K Jung.
X`09All rights reserved.
X
X`09UNARJ version 2.20 release
X
X
X     This documents new or updated information since UNARJ 2.10.
X
X
X     ** IMPORTANT NEWS ****************************************************
X
X     There is an extended header bug in older versions of ARJ, AV.C and
X     UNARJ.C.  The extended header processing in read_header() should skip
X     4 bytes for the extended header CRC and not 2 bytes.  This is NOT a
X     current problem as no versions of ARJ use the extended header.
X
X     The following source line in DECODE.C is AMBIGUOUS and has been
X     corrected.
X
X`09weight`5Bi++`5D = 1 << (16 - i);
X
X     **********************************************************************
X
X     Here is the C source code for a simple UNARJ extractor program.  It
X     has been portabilized courtesy of Mark Adler for platforms that do not
X     support ANSI C.  This UNARJ is NOT meant for use as a production
X     quality ARJ extractor.  It is meant for the use of 3rd party
X     developers who want to build file readers, etc, for ARJ.  The UNARJ
X     source code has been built and tested under Turbo C++ 1.0 and Quick C
X     2.5.
X
X     It has none of the program protection and other fancy features of
X     ARJ 2.20.`09It is also VERY SLOW compared to ARJ!!!  In ARJ, all of
X     the critical routines are written in assembly language.
X
X
X     COMMAND SYNTAX:
X
X     UNARJ has been modified to support the four commands: "e", "l", "t",
X     and "x".  These are equivalent to the ARJ version of these commands.
X     However, UNARJ does not create directories when using the "x" command.
X
X     Usage:  UNARJ archive`5B.arj`5D    (list archive)
X`09     UNARJ e archive`09    (extract archive)
X`09     UNARJ l archive`09    (list archive)
X`09     UNARJ t archive`09    (test archive)
X`09     UNARJ x archive`09    (extract with pathnames)
X
X     UNARJ does not accept any other commands or options.  You cannot
X     specify a base directory or select individual files to extract.  UNARJ
X     does not support empty directories or volume labels.  UNARJ is much
X     slower than ARJ because ARJ is highly optimized using assembly
X     language.
X
X
X     "e" extract command
X
X     This command extracts the contents of the ARJ archive to the current
X     directory.  Files in the archive that already exist in the current
X     directory will not be extracted.
X
X
X     "l" list command
X
X     This command lists the contents of the archive to the screen.  The
X     UNARJ l command replaces the old AV.EXE program.
X
X     The last field on the display TPMGVX stands for:
X`09 T -> text/binary/directory/volume label type
X`09 P -> path information available in "V" listing
X`09 M -> compression method used
X`09 G -> file has been garbled (encrypted)
X`09 V -> archive has been continued to another volume
X`09 X -> this file is an extended portion of a larger file
X
X
X     "t" test command
X
X     This command tests the contents of the archive by extracting the files
X     to the NUL device (no data will be written to disk).  If the contents
X     of a file is corrupted, UNARJ will display "CRC error!".  If the
X     contents are valid, UNARJ will display "CRC OK".
X
X
X     "x" extract with pathnames command
X
X     This command extracts the contents of the ARJ archive to the pathnames
X     stored in the archive.  If only filespecs are stored in the archive,
X     then the files will be extracted to the current directory.  UNARJ will
X     not create missing directories in the pathnames.  You must create them
X     manually.`09Use the UNARJ t command to see the full pathnames stored in
X     the archive.
X
X
X     PROGRESS INDICATOR
X
X     UNARJ uses a small spinning bar to indicate extraction/testing
X     progress.
X
X
X     BUILDING THE UNARJ PROGRAM
X
X     Source files:  UNARJ.C, DECODE.C, ENVIRON.C, UNARJ.H, UNARJ.DEF,
X`09`09    TCCUNARJ.MAK, QCLUNARJ.MAK, OS2UNARJ.MAK.
X
X     For Turbo C/C++, type MAKE /ftccunarj.mak
X
X     For QuickC,      type NMAKE /F qclunarj.mak
X
X     For OS/2,`09      type NMAKE /F os2unarj.mak
X
X     If you use a compiler other than listed above, the resulting UNARJ.EXE
X     will not support restoring file date-time stamps or file attributes.
X     You can modify the ENVIRON.C file to add these functions for your
X     particular implementation environment.
X
X     For UNIX,`09      type cc -DUNIX unarj.c decode.c environ.c
X
X     Send me your implementations and I will try to incorporate them into
X     the next version of UNARJ.
X
X
X     ACKNOWLEDGEMENTS:
X
X     I wish to thank Haruhiko Okumura for providing the ideas for ARJ and
X     UNARJ.  His AR001 and AR002 provided the basic compression algorithms
X     for ARJ 1.0.  At ARJ 2.0, ARJ uses only the secondary Huffman
X     compressor from AR002.
X
X     I wish to thank Mark Adler for helping make UNARJ more portable.
X
X
X     UNARJ LICENSE POLICY FOR ALL USERS:
X
X     The UNARJ program, source code, and the associated documentation
X     are copyright (c) 1990,91 Robert K Jung, all rights reserved.
X
X     If you distribute this software to others, you are required to
X     distribute the ENTIRE package consisting of the following files:
X
X     README.DOC
X     UNARJ.EXE
X     UNARJ.DOC
X     UNARJ.C
X     DECODE.C
X     ENVIRON.C
X     UNARJ.H
X     UNARJ.DEF
X     TCCUNARJ.MAK
X     QCLUNARJ.MAK
X     OS2UNARJ.MAK
X     TECHNOTE.DOC
X
X     I strongly prefer that the files be distributed in the format
X     originally released:  UNARJ220.EXE with the ARJ-SECURITY envelope as
X     created by the author.  If you must distribute the UNARJ archive in
X     another archive format, please archive the UNARJ220.EXE as one file
X     inside the other archive.`09Re-archival of the software as separate
X     files means losing the ARJ security envelope.
X
X     You may freely use the UNARJ C source code provided the end product is
X     NOT an ARJ archiver (both compress and extract ARJ files).  If you
X     wish to distribute a modified version of UNARJ.EXE, you MUST indicate
X     that it is a modified version both in the program and source code.
X
X     If you create a modified version of UNARJ.EXE, I would appreciate a
X     copy of the new source code.  I am holding the copyright on the source
X     code, so please do not delete my name from the program files or the
X     documentation.
X
X     The UNARJ.EXE program is built from this source using Turbo C++ 1.0.
X
X     You may freely use, copy, and distribute UNARJ.EXE, provided that no
X     fee is charged for such use, copying or distribution.
X
X     You may use UNARJ.EXE in a commercial software package provided that
X     no additional fee is charged for using UNARJ.EXE and provided that the
X     user fully understands that NO warranty or support is provided for
X     UNARJ.EXE.  Moreover, the user must fully understand that UNARJ does
X     not have the long usage history as ARJ does.
X
X     This source code is intended to promote the building of utilities to
X     support the use of ARJ and ARJ archives.
X
X
X     TECHNICAL SUPPORT:
X
X     Please report any bugs.  I will TRY to fix them.  If you have
X     portability improvements, I would appreciate receiving a copy of them.
X
X     If you find UNARJ of value, a gift of 10 dollars or any amount would be
X     greatly appreciated.
X
X     I can be reached at:
X
X     Robert Jung at The Black Depths BBS  (508) 427-5379
X
X     Robert Jung at Bay State BBS`09  (617) 598-6646
X
X     Robert Jung at FIDONET address:  1:16/390.7
X
X     Robert Jung in the COMPRESS (ILINK), LHARC / COMPRESSIONS
X     (SMARTNET), SHARE (RIME) or ARCHIVERS (RELAYNET) echo conferences.
X
X     2606 Village Road West
X     Norwood, Massachusetts 02062
X     USA
X
X     Internet address:`09robjung@world.std.com  (Checked daily)
X
X     Compuserve users can enter   >INTERNET: robjung@world.std.com
X     at the "Send to" prompt.  I prefer CompuServe users to send mail
X     to this address as opposed to my CompuServe userid below.
X
X     CompuServe userid: 72077,445  (Checked infrequently)
X
X
X     DISCLAIMER:
X
X     This software UNARJ is provided on an "as is" basis without warranty
X     of any kind, expressed or implied, including but not limited to the
X     implied warranties of merchantability and fitness for a particular
X     purpose.  The person using the software bears all risk as to the
X     quality and performance of the software. Should the software prove
X     defective, the user assumes the entire cost of all necessary repair,
X     servicing, or correction.`09The author will not be liable for any
X     special, incidental, consequential, indirect or similar damages due to
X     loss of data or any other reason, even if the author or an agent of
X     the author has been advised of the possibility of such damages.
X
X
X     HISTORY:
X
X     UNARJ 2.20 - Changed arguments in get_mode_str() and set_ftime_mode() t
Vo
X`09`09  at least int size.
X
X`09`09  Added default_case_path() for convenience in UNIX.
X
X`09`09  Added two missing %c from printf statement in list_arc().
X
X   end document
X
X`1A
$ CALL UNPACK [.UNARJ_SRC]UNARJ.DOC;1 138579828
$ create 'f'
X/* UNARJ.H, UNARJ, R JUNG, 07/08/91
X * Include file
X * Copyright (c) 1990 by Robert K Jung.  All rights reserved.
X *
X *   This code may be freely used in programs that are NOT ARJ archivers
X *   (both compress and extract ARJ archives).
X *
X *   If you wish to distribute a modified version of this program, you
X *   MUST indicate that it is a modified version both in the program and
X *   source code.
X *
X *   If you modify this program, I would appreciate a copy of the new
X *   source code.  I am holding the copyright on the source code, so
X *   please do not delete my name from the program files or from the
X *   documentation.
X *
X * Modification history:
X * Date      Programmer  Description of modification.
X * 04/05/91  R. Jung`09 Rewrote code.
X * 04/23/91  M. Adler`09 Portabilized.
X * 04/29/91  R. Jung`09 Added volume label support.
X * 05/30/91  R. Jung`09 Added SEEK_END definition.
X * 06/03/91  R. Jung     Changed arguments in get_mode_str() and
X *                       set_ftime_mode().
X * 06/28/91  R. Jung     Added new HOST OS numbers.
X * 07/08/91  R. Jung     Added default_case_path() and strlower().
X *
X */
X
X#ifndef _ARH_DEF_
X#define _ARH_DEF_
X
X/* Use prototypes and ANSI libraries if __STDC__ */
X#ifdef __STDC__
X#  define MODERN
X#endif /* __STDC__ */
X
X/* Use prototypes and ANSI libraries if __TURBOC__ */
X#ifdef __TURBOC__
X#  define MODERN
X#endif /* __TURBOC__ */
X
X/* Use prototypes and ANSI libraries if _QC */
X#ifdef _QC
X#  define MODERN
X#endif /* __TURBOC__ */
X
X/* Use prototypes and ANSI libraries if _OS2 */
X#ifdef _OS2
X#  define MODERN
X#endif /* _OS2 */
X
X/* Used to remove arguments in function prototypes for non-ANSI C */
X#ifdef MODERN
X#  define OF(a) a
X#else /* !MODERN */
X#  define OF(a) ()
X#endif /* ?MODERN */
X
X#ifdef MODERN
X   typedef void voidp;
X#else /* !MODERN */
X#  define void int
X   typedef char voidp;
X#endif /* ?MODERN */
X
X#include <stdio.h>
X#ifdef MODERN
X#  include <limits.h>
X#else /* !MODERN */
X#  ifndef UCHAR_MAX
X#    define UCHAR_MAX (255)
X#  endif
X#  ifndef CHAR_BIT
X#    define CHAR_BIT  (8)
X#  endif
X#  ifndef LONG_MAX
X#    define LONG_MAX  (0x7FFFFFFFL)
X#  endif
X#endif /* ?MODERN */
X
X#ifndef SEEK_SET
X#  define SEEK_SET 0
X#endif
X
X#ifndef SEEK_CUR
X#  define SEEK_CUR 1
X#endif
X
X#ifndef SEEK_END
X#  define SEEK_END 2
X#endif
X
Xtypedef unsigned char  uchar;`09/*  8 bits or more */
Xtypedef unsigned int   uint;`09/* 16 - 32 bits or more */
Xtypedef unsigned short ushort;`09/* 16 bits or more */
Xtypedef unsigned long  ulong;`09/* 32 bits or more */
X
X#define USHRT_BIT   (CHAR_BIT * sizeof(ushort))
X
X/* ********************************************************* */
X/* Environment definitions (implementation dependent)`09     */
X/* ********************************************************* */
X
X#ifdef _QC
X#define __MSDOS__
X#endif
X
X#ifdef __MSDOS__
X#define OS`09`09    0
X#define PATH_SEPARATORS     "\\:"
X#define PATH_CHAR`09    '\\'
X#define MAXSFX`09`09    25000L
X#define ARJ_SUFFIX`09    ".ARJ"
X#endif
X
X#ifdef _OS2
X#define OS`09`09    0`09`09/* ??? */
X#define PATH_SEPARATORS     "\\:"
X#define PATH_CHAR`09    '\\'
X#define SWITCH_CHARS`09    "-/"
X#define MAXSFX`09`09    25000L
X#define ARJ_SUFFIX`09    ".ARJ"
X#endif
X
X#ifdef __CI
X#define PRIME`09`09    1
X#define OS`09`09    1
X#define PATH_SEPARATORS     ">"
X#define PATH_CHAR`09    '>'
X#define FIX_PARITY(c)`09    c `7C= `7EASCII_MASK
X#define DEFAULT_DIR`09    "*>"
X#define ARJ_SUFFIX`09    ".ARJ"
X#endif
X
X/* Error levels */
X
X#ifndef ERROR_DEFINES
X
X#define ERROR_OK`090`09/* success */
X#define ERROR_WARN`091`09/* minor problem (file not found) */
X#define ERROR_FAIL`092`09/* fatal error */
X#define ERROR_CRC`093`09/* CRC error */
X#define ERROR_SECURE`094`09/* ARJ security invalid or not found */
X#define ERROR_WRITE`095`09/* disk full */
X#define ERROR_OPEN`096`09/* can't open file */
X#define ERROR_USER`097`09/* user specified bad parameters */
X#define ERROR_MEMORY`098`09/* not enough memory */
X
X#endif
X
X#ifndef MAXSFX`09`09    /* size of self-extracting prefix */
X#define MAXSFX`09`09    500000L
X#endif
X#ifndef FNAME_MAX
X#define FNAME_MAX`09    512
X#endif
X#ifndef SWITCH_CHARS
X#define SWITCH_CHARS`09    "-"
X#endif
X#ifndef FIX_PARITY
X#define FIX_PARITY(c)`09    c &= ASCII_MASK
X#endif
X#ifndef ARJ_SUFFIX
X#define ARJ_SUFFIX`09    ".arj"
X#endif
X#ifndef ARJ_DOT
X#define ARJ_DOT `09    '.'
X#endif
X#ifndef DEFAULT_DIR
X#define DEFAULT_DIR`09    ""
X#endif
X#ifndef OS
X#define OS`09`09    2
X#endif
X#ifndef PATH_SEPARATORS
X#define PATH_SEPARATORS     "/"
X#endif
X#ifndef PATH_CHAR
X#define PATH_CHAR`09    '/'
X#endif
X
X/* ********************************************************* */
X/* end of environmental defines `09`09`09     */
X/* ********************************************************* */
X
X/* ********************************************************* */
X/*
X * Structure of archive block (low order byte first):
X *
X *  2  header id (comment and local file) = 0xEA60 or 60000U
X *  2  basic header size (from 'first_hdr_size' thru 'comment' below)
X *`09     = first_hdr_size + strlen(filename) + 1 + strlen(comment) + 1
X *`09     = 0 if end of archive
X *
X *  1  first_hdr_size (size up to 'extra data')
X *  1  archiver version number
X *  1  minimum archiver version to extract
X *  1  host OS   (0 = MSDOS, 1 = PRIMOS, 2 = UNIX, 3 = AMIGA, 4 = MAC-OS)
X *               (5 = OS/2, 6 = APPLE GS, 7 = ATARI ST, 8 = NEXT)
X *               (9 = VAX VMS)
X *  1  arj flags (0x01 = GARBLED_FLAG, 0x02 = RESERVED)
X *`09`09 (0x04 = VOLUME_FLAG,  0x08 = EXTFILE_FLAG)
X *`09`09 (0x10 = PATHSYM_FLAG)
X *  1  method`09 (0 = stored, 1 = compressed most ... 4 compressed fastest)
X *  1  file type (0 = binary, 1 = text, 2 = comment header)
X *`09`09 (3 = directory, 4 = volume label)
X *  1  reserved
X *  4  date time stamp modified
X *  4  compressed size
X *  4  original size
X *  4  original file's CRC
X *  2  entryname position in filename
X *  2  file access mode
X *  2  host data
X *  ?  extra data
X *     4 bytes for extended file position
X *
X *  ?  filename (null-terminated)
X *  ?  comment`09(null-terminated)
X *
X *  4  basic header CRC
X *
X *  2  1st extended header size (0 if none)
X *  ?  1st extended header
X *  4  1st extended header's CRC (not present if 0 extended header size)
X *  ...
X *  ?  compressed file
X *
X * ********************************************************* */
X
X/* ********************************************************* */
X/*`09`09`09`09`09`09`09     */
X/*     Time stamp format:`09`09`09`09     */
X/*`09`09`09`09`09`09`09     */
X/*`0931 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16      */
X/*     `7C<---- year-1980 --->`7C<- month ->`7C<--- day ---->`7C     */
X/*`09`09`09`09`09`09`09     */
X/*`0915 14 13 12 11 10  9  8  7  6  5  4  3`092  1  0      */
X/*     `7C<--- hour --->`7C<---- minute --->`7C<- second/2 ->`7C     */
X/*`09`09`09`09`09`09`09     */
X/* ********************************************************* */
X
X#define CODE_BIT`09  16
X
X#define NULL_CHAR`09'\0'
X#define MAXMETHOD`09   4
X
X#define ARJ_VERSION`09   3
X#define ARJ_X_VERSION`09   3`09/* decoder version */
X#define ARJ_X1_VERSION`09   1
X#define DEFAULT_METHOD`09   1
X#define DEFAULT_TYPE`09   0`09/* if type_sw is selected */
X#define HEADER_ID     0xEA60
X#define HEADER_ID_HI`090xEA
X#define HEADER_ID_LO`090x60
X#define FIRST_HDR_SIZE`09  30
X#define FIRST_HDR_SIZE_V  34
X#define COMMENT_MAX`092048
X#define HEADERSIZE_MAX`09 (FIRST_HDR_SIZE + 10 + FNAME_MAX + COMMENT_MAX)
X#define BINARY_TYPE`09   0`09/* This must line up with binary/text strings *
V/
X#define TEXT_TYPE`09   1
X#define COMMENT_TYPE`09   2
X#define DIR_TYPE`09   3
X#define LABEL_TYPE`09   4
X
X#define GARBLE_FLAG`090x01
X#define VOLUME_FLAG`090x04
X#define EXTFILE_FLAG`090x08
X#define PATHSYM_FLAG`090x10
X
Xtypedef ulong UCRC;`09/* CRC-32 */
X
X#define CRC_MASK`090xFFFFFFFFL
X
X#define ARJ_PATH_CHAR`09'/'
X
X#define FA_RDONLY`090x01`09`09/* Read only attribute */
X#define FA_HIDDEN`090x02`09`09/* Hidden file */
X#define FA_SYSTEM`090x04`09`09/* System file */
X#define FA_LABEL`090x08`09`09/* Volume label */
X#define FA_DIREC`090x10`09`09/* Directory */
X#define FA_ARCH `090x20`09`09/* Archive */
X
X#define HOST_OS_NAMES `7B "MS-DOS","PRIMOS","UNIX","AMIGA","MAC-OS","OS/2",N
VULL `7D
X
X/* Timestamp macros */
X
X#define get_tx(m,d,h,n) (((ulong)m<<21)+((ulong)d<<16)+((ulong)h<<11)+(n<<5)
V)
X#define get_tstamp(y,m,d,h,n,s) ((((ulong)(y-1980))<<25)+get_tx(m,d,h,n)+(s/
V2))
X
X#define ts_year(ts)  ((uint)((ts >> 25) & 0x7f) + 1980)
X#define ts_month(ts) ((uint)(ts >> 21) & 0x0f)`09    /* 1..12 means Jan..Dec
V */
X#define ts_day(ts)   ((uint)(ts >> 16) & 0x1f)`09    /* 1..31 means 1st..31s
Vt */
X#define ts_hour(ts)  ((uint)(ts >> 11) & 0x1f)
X#define ts_min(ts)   ((uint)(ts >> 5) & 0x3f)
X#define ts_sec(ts)   ((uint)((ts & 0x1f) * 2))
X
X/* unarj.c */
X
Xextern long origsize;
Xextern long compsize;
X
Xextern UCRC crc;
X
Xextern FILE *arcfile;
Xextern FILE *outfile;
X
Xextern ushort bitbuf;
X
Xextern uchar subbitbuf;
Xextern uchar header`5BHEADERSIZE_MAX`5D;
X
Xextern char arc_name`5BFNAME_MAX`5D;
X
Xextern int bitcount;
Xextern int file_type;
Xextern int error_count;
X
X/* Global functions */
X
X/* unarj.c */
X
Xvoid   strlower OF((char *str));
Xvoid   strupper OF((char *str));
Xvoidp  *malloc_msg OF((int size));
Xvoid   disp_clock OF((void));
Xvoid   error OF((char *fmt, char *arg));
Xvoid   fillbuf OF((int n));
Xushort getbits OF((int n));
Xvoid   fwrite_txt_crc OF((uchar *p, int n));
Xvoid   init_getbits OF((void));
X
X/* environ.c */
X
XFILE   *file_open OF((char *name, char *mode));
Xint    file_read OF((char *buf, int size, int nitems, FILE *stream));
Xint    file_seek OF((FILE *stream, long offset, int mode));
Xlong   file_tell OF((FILE *stream));
Xint    file_write OF((char *buf, int size, int nitems, FILE *stream));
Xvoidp  *xmalloc OF((int size));
Xvoid   case_path OF((char *name));
Xvoid   default_case_path OF((char *name));
Xint    file_exists OF((char *name));
Xvoid   get_mode_str OF((char *str, uint fmode));
Xint    set_ftime_mode OF((char *name, ulong timestamp, uint fmode, uint host
V));
X
X/* decode.c */
X
Xvoid`09decode OF((void));
Xvoid`09decode_f OF((void));
X
X/* Message strings */
X
Xextern char M_VERSION `5B`5D;
X
Xextern char M_ARCDATE `5B`5D;
Xextern char M_BADCOMND`5B`5D;
Xextern char M_BADCOMNT`5B`5D;
Xextern char M_BADHEADR`5B`5D;
Xextern char M_BADTABLE`5B`5D;
Xextern char M_CANTOPEN`5B`5D;
Xextern char M_CANTREAD`5B`5D;
Xextern char M_CANTWRIT`5B`5D;
Xextern char M_CRCERROR`5B`5D;
Xextern char M_CRCOK   `5B`5D;
Xextern char M_DIFFHOST`5B`5D;
Xextern char M_ENCRYPT `5B`5D;
Xextern char M_ERRORCNT`5B`5D;
Xextern char M_EXTRACT `5B`5D;
Xextern char M_FEXISTS `5B`5D;
Xextern char M_HEADRCRC`5B`5D;
Xextern char M_NBRFILES`5B`5D;
Xextern char M_NOMEMORY`5B`5D;
Xextern char M_NOTARJ  `5B`5D;
Xextern char M_PROCARC `5B`5D;
Xextern char M_SKIPPED `5B`5D;
Xextern char M_SUFFIX  `5B`5D;
Xextern char M_TESTING `5B`5D;
Xextern char M_UNKNMETH`5B`5D;
Xextern char M_UNKNTYPE`5B`5D;
Xextern char M_UNKNVERS`5B`5D;
X
X#endif
X
X/* end UNARJ.H */
$ CALL UNPACK [.UNARJ_SRC]UNARJ.H;1 1715489405
$ v=f$verify(v)
$ EXIT
