home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 9 Archive / 09-Archive.zip / unarj32.lzh / unarj.doc < prev    next >
Text File  |  1993-06-04  |  11KB  |  282 lines

  1.  
  2.      UNARJ.DOC, UNARJ 2.41                                   April 1993
  3.  
  4.  
  5.         UNARJ software and manual copyright (c) 1991-93 by Robert K Jung.
  6.     All rights reserved.
  7.  
  8.         UNARJ version 2.41 release
  9.  
  10.  
  11.      This documents new or updated information since UNARJ 2.10.
  12.  
  13.  
  14.      ** IMPORTANT NEWS ****************************************************
  15.  
  16.      The ARJ archive format at 2.39 and above supports an archive
  17.      date-time modified field.
  18.  
  19.      A new data check has been added to make_table() in DECODE.C to
  20.      account for badly corrupted data.
  21.  
  22.      There is a newly defined flag bit in the ARJ flags.  See TECHNOTE.DOC
  23.      for details.  UNARJ only supports this flag bit with the "l" command.
  24.  
  25.      There is an extended header bug in older versions of ARJ, AV.C and
  26.      UNARJ.C.  The extended header processing in read_header() should skip
  27.      4 bytes for the extended header CRC and not 2 bytes.  This is NOT a
  28.      current problem as no versions of ARJ use the extended header.
  29.  
  30.      The following source line in DECODE.C is AMBIGUOUS and has been
  31.      corrected.
  32.  
  33.     weight[i++] = 1 << (16 - i);
  34.  
  35.      **********************************************************************
  36.  
  37.      Here is the C source code for a simple UNARJ extractor program.  It
  38.      has been portabilized courtesy of Mark Adler for platforms that do not
  39.      support ANSI C.  This UNARJ is NOT meant for use as a production
  40.      quality ARJ extractor.  It is meant for the use of 3rd party
  41.      developers who want to build file readers, etc, for ARJ.  The UNARJ
  42.      source code has been built and tested under Turbo C++ 1.0, Quick C
  43.      2.5, and Coherent 3.2.0.
  44.  
  45.      It has none of the program protection and other fancy features of
  46.      ARJ 2.41.  It is also VERY SLOW compared to ARJ!!!  In ARJ, all of
  47.      the critical routines are written in assembly language.
  48.  
  49.  
  50.      COMMAND SYNTAX:
  51.  
  52.      UNARJ has been modified to support the four commands: "e", "l", "t",
  53.      and "x".  These are similar to the ARJ version of these commands.
  54.      However, UNARJ does not create directories when using the "x" command.
  55.  
  56.      Usage:  UNARJ archive[.arj]    (list archive)
  57.          UNARJ e archive        (extract archive)
  58.          UNARJ l archive        (list archive)
  59.          UNARJ t archive        (test archive)
  60.          UNARJ x archive        (extract with pathnames)
  61.  
  62.      UNARJ does not accept any other commands or options.  You cannot
  63.      specify a base directory or select individual files to extract.  UNARJ
  64.      does not support empty directories or volume labels.  UNARJ is much
  65.      slower than ARJ because ARJ is highly optimized using assembly
  66.      language.
  67.  
  68.  
  69.      "e" extract command
  70.  
  71.      This command extracts the contents of the ARJ archive to the current
  72.      directory.  Files in the archive that already exist in the current
  73.      directory will not be extracted.
  74.  
  75.  
  76.      "l" list command
  77.  
  78.      This command lists the contents of the archive to the screen.  The
  79.      UNARJ l command replaces the old AV.EXE program.
  80.  
  81.      The last field on the display BTPMGVX stands for:
  82.      B -> file has been marked as a backup
  83.      T -> text/binary/directory/volume label type
  84.      P -> path information available in "V" listing
  85.      M -> compression method used
  86.      G -> file has been garbled (encrypted)
  87.      V -> archive has been continued to another volume
  88.      X -> this file is an extended portion of a larger file
  89.  
  90.  
  91.      "t" test command
  92.  
  93.      This command tests the contents of the archive by extracting the files
  94.      to the NUL device (no data will be written to disk).  If the contents
  95.      of a file is corrupted, UNARJ will display "CRC error!".  If the
  96.      contents are valid, UNARJ will display "CRC OK".
  97.  
  98.      You can use this command to see if an archive contains pathnames.
  99.  
  100.  
  101.      "x" extract with pathnames command
  102.  
  103.      This command extracts the contents of the ARJ archive to the pathnames
  104.      stored in the archive.  If only filespecs are stored in the archive,
  105.      then the files will be extracted to the current directory.  UNARJ will
  106.      not create missing directories in the pathnames.  You must create them
  107.      manually.    Use the UNARJ t command to see the full pathnames stored in
  108.      the archive.
  109.  
  110.  
  111.      PROGRESS INDICATOR
  112.  
  113.      UNARJ uses a small spinning bar to indicate extraction/testing
  114.      progress.  For some systems that have buffered output, the progress
  115.      indicator may not work.
  116.  
  117.  
  118.      BUILDING THE UNARJ PROGRAM
  119.  
  120.      Source files:  UNARJ.C, DECODE.C, ENVIRON.C, UNARJ.H, UNARJ.DEF,
  121.             TCCUNARJ.MAK, QCLUNARJ.MAK, OS2UNARJ.MAK.
  122.  
  123.      For Turbo C/C++, type MAKE /ftccunarj.mak
  124.  
  125.      For QuickC,      type NMAKE /F qclunarj.mak
  126.  
  127.      For OS/2,          type NMAKE /F os2unarj.mak
  128.  
  129.      For Coherent,    type
  130.      cc -DUNIX -DCOHERENT -o unarj unarj.c decode.c environ.c
  131.  
  132.      For UNIX          type cc -DUNIX -o unarj unarj.c decode.c environ.c
  133.  
  134.      If you use a compiler other than listed above, the resulting UNARJ.EXE
  135.      will not support restoring file date-time stamps.    You can modify the
  136.      ENVIRON.C file to add these functions for your particular
  137.      implementation environment.
  138.  
  139.      If you send me your implementations, I will try to incorporate them
  140.      into the next version of UNARJ.
  141.  
  142.  
  143.      ACKNOWLEDGEMENTS:
  144.  
  145.      I wish to thank Haruhiko Okumura for providing the ideas for ARJ and
  146.      UNARJ.  His AR001 and AR002 provided the basic compression algorithms
  147.      for ARJ 1.0.  At ARJ 2.0, ARJ uses only the secondary Huffman
  148.      compressor from AR002.
  149.  
  150.      I wish to thank Mark Adler for helping make UNARJ more portable.
  151.  
  152.      I also wish to acknowledge the use of the file date-time stamping
  153.      routines in Rahul Dhesi's ZOO archiver.
  154.  
  155.      And to those who have contributed bug reports and porting information,
  156.      I extend my thanks.
  157.  
  158.  
  159.      UNARJ LICENSE POLICY FOR ALL USERS:
  160.  
  161.      The UNARJ program, source code, and the associated documentation
  162.      are copyright (c) 1990-93 Robert K Jung, all rights reserved.
  163.  
  164.      If you distribute this software to others, you are required to
  165.      distribute the ENTIRE package consisting of the following files:
  166.  
  167.      README.DOC
  168.      UNARJ.EXE
  169.      UNARJ.DOC
  170.      UNARJ.C
  171.      DECODE.C
  172.      ENVIRON.C
  173.      UNARJ.H
  174.      UNARJ.DEF
  175.      TCCUNARJ.MAK
  176.      QCLUNARJ.MAK
  177.      OS2UNARJ.MAK
  178.      TECHNOTE.DOC
  179.  
  180.      I strongly prefer that the files be distributed in the format
  181.      originally released:  UNARJ241.EXE with the ARJ-SECURITY envelope as
  182.      created by the author.  If you must distribute the UNARJ archive in
  183.      another archive format, please archive the UNARJ241.EXE as one file
  184.      inside the other archive.    Re-archival of the software as separate
  185.      files means losing the ARJ security envelope.
  186.  
  187.      You may freely use the UNARJ C source code provided the end product is
  188.      NOT an ARJ archiver (both compress and extract ARJ files).  If you
  189.      wish to distribute a modified version of UNARJ.EXE, you MUST indicate
  190.      that it is a modified version both in the program and source code.
  191.  
  192.      I am holding the copyright on the source code, so please do not delete
  193.      my name from the program files or the documentation.
  194.  
  195.      The UNARJ.EXE program is built from this source using Turbo C++ 1.0.
  196.  
  197.      You may freely use, copy, and distribute UNARJ.EXE, provided that no
  198.      fee is charged for such use, copying or distribution.
  199.  
  200.      You may use UNARJ.EXE in a commercial software package provided that
  201.      no additional fee is charged for using UNARJ.EXE and provided that
  202.      the user fully understands that NO warranty or support is provided
  203.      for UNARJ.EXE by ARJ Software.  Moreover, the user must fully
  204.      understand that UNARJ does not have the long usage history that ARJ
  205.      does.
  206.  
  207.      This source code is intended to promote the building of utilities to
  208.      support the use of ARJ and ARJ archives.
  209.  
  210.  
  211.      TECHNICAL SUPPORT:
  212.  
  213.      Please report any bugs.  I will TRY to fix them.  If you have
  214.      portability improvements, I would appreciate receiving a copy of them.
  215.  
  216.      I can be reached at:
  217.  
  218.      Robert Jung at Channel One BBS   (617) 354-8873
  219.  
  220.      Robert Jung at Bay State BBS     (617) 598-6646
  221.  
  222.      Robert Jung at FIDONET address:  1:16/390.7
  223.  
  224.      Robert Jung in the ARJ (RIME/RELAYNET), COMPRESS (ILINK), LHARC /
  225.      COMPRESSIONS (SMARTNET), or ARCHIVERS (RIME/RELAYNET) echo
  226.      conferences.
  227.  
  228.      ARJ Software
  229.      Robert and Susan Jung
  230.      2606 Village Road West
  231.      Norwood, Massachusetts 02062  USA
  232.  
  233.      Internet address:  robjung@world.std.com
  234.  
  235.      CompuServe userid: 72077,445
  236.  
  237.  
  238.      DISCLAIMER:
  239.  
  240.      This software UNARJ is provided on an "as is" basis without warranty
  241.      of any kind, expressed or implied, including but not limited to the
  242.      implied warranties of merchantability and fitness for a particular
  243.      purpose.  The person using the software bears all risk as to the
  244.      quality and performance of the software. Should the software prove
  245.      defective, the user assumes the entire cost of all necessary repair,
  246.      servicing, or correction.    The author will not be liable for any
  247.      special, incidental, consequential, indirect or similar damages due to
  248.      loss of data or any other reason, even if the author or an agent of
  249.      the author has been advised of the possibility of such damages.
  250.  
  251.  
  252.      HISTORY:
  253.  
  254.      UNARJ 2.41 - Added ARCHIMEDES support.  Added archive date-time
  255.                   modified field support.  Added data check to
  256.                   make_table().  Updated ARJ header descriptions.
  257.  
  258.      UNARJ 2.30 - Added new header arj flag (BACKUP_FLAG).
  259.           Updated information in TECHNOTE.DOC.
  260.  
  261.      UNARJ 2.22 - Added missing semicolon to unarj.c for THINK_C.
  262.           Modified text mode processing to include test for
  263.           host_os in fwrite_txt_crc().
  264.           Added more error checking to unarj.c.
  265.  
  266.      UNARJ 2.21 - Changed uint ratio() to static uint ratio().
  267.           Added #ifdef VMS to unarj.c.
  268.           Tested unarj on COHERENT (UNIX clone).
  269.           Fixed use of _chmod to handle directories.
  270.           Modified unarj.c to support the MAC THINK_C compiler.
  271.           Added #include <stdlib.h> to vanilla section of environ.c.
  272.           Added file date-time stamping to UNIX section of environ.c.
  273.  
  274.      UNARJ 2.20 - Changed arguments in get_mode_str() and set_ftime_mode() to
  275.           at least int size.
  276.  
  277.           Added default_case_path() for convenience in UNIX.
  278.  
  279.           Added two missing %c from printf statement in list_arc().
  280.  
  281.    end document
  282.