home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS 1992 December / simtel1292_SIMTEL_1292_Walnut_Creek.iso / msdos / arc_lbr / sqz1082e.exe / TECH.ENG < prev    next >
Text File  |  1992-09-09  |  6KB  |  149 lines

  1. The information in this document may, or may not be correct, but is given
  2. as a bonus. Someone might find it useful.
  3. -------------------------------------------------------------------------------
  4. DOSversion:    3.3 and onwards,
  5.         2.0 to 3.2 will work as long as you use UPPERCASE in all
  6.         filenames and don't use SFX/SFXjr.
  7.  
  8. Memory:     For packing;    ≈400 kB, but more than 330 kB
  9.         Decoding;    ≈96 kB
  10.  
  11.         These figures does not include SQZ itself which requires
  12.         ≈50 kB and filenames which call for their length + 5 bytes
  13.         in overhead (450/380 : 150).
  14.  
  15.         These figures can be shrinked at cost of speed.
  16.  
  17. Others:     Given filespec may result in a maximum of 4096 filenames
  18.         per run. The archive in itself will handle any number
  19.         of files.
  20.  
  21.         A maximum of 64 filespec's for files to skip.
  22.  
  23.         A maximum of 16 extension's for files to copy.
  24. -------------------------------------------------------------------------------
  25. Archive header:
  26.     offset  0..4:   Id:     HLSQZ        (072d 076d 083d 081d 090d)
  27.         5:        Version:    1        (049d)
  28.         6:        OS:     76543210
  29.                 xxxxx000    0   PC-DOS
  30.                 xxxxx001    1   OS/2
  31.                 xxxxx010    2   MVS
  32.                 xxxxx011    3   HPSF(OS/2)
  33.                 xxxxx100    4   Amiga
  34.                 xxxxx101    5   Macintosh
  35.                 xxxxx110    6   *nix
  36.                 xxxxx111    7   Future use
  37.                 XXXXXxxx        Future use
  38.         7:        Flag    76543210
  39.                 xxxxxxx1        Big Endian
  40.                 xxxxxx1x        DOS format for Date and Time
  41.                         in file: E8631E19.
  42.                         Decoded:    1992/08/30 12.31.32
  43.                         MSB             LSB
  44.                         19        1E        63        E8
  45.                         76543210765432107654321076543210
  46.                         00011001000111100110001111101000
  47.                         YYYYYYYMMMMDDDDDHHHHHMMMMMM22222
  48.                         12       8   30   12     31    16
  49.                         +=1980               *=2
  50.                         1992   08  30   12     31    32
  51.                 xxxxx1xx        Security Envelope
  52.                 XXXXXxxx        Future use
  53. -------------------------------------------------------------------------------
  54. File header:
  55.     offset  Size    Comment
  56.     0        1        Header size and type
  57.             0    ->  End of archive
  58.             1    ->  Comment
  59.             2    ->  Password
  60.             3    ->  Security envelope
  61.             4..18    ->  future use
  62.             19..    ->  normal file header
  63.             if normal file
  64.     1        1        Header algebraic sum  & 0FFh
  65.     0        1:76543210
  66.           xxxxXXXX    Method 0..4(15)
  67.           xxx1xxxx    Security envelope should follow
  68.           XXXxxxxx    Future use
  69.     1        4        Compressed size
  70.     5        4        Original size
  71.     9        4        Last DateTime
  72.     13        1        Attributes
  73.     14        4        CRC
  74.     18..    (size-18)    filename, w/o \0.
  75.  
  76.  
  77. If  End of archive, done
  78. If  > 18 normal file
  79.     Read HeaderSum(1 byte)
  80.     Read size bytes
  81.     Calculate headersum
  82.     {short i; unsigned short s = 0U;
  83.     for(i = 0; i < size; i++)
  84.         s += header[i];
  85.     if(headersum != (unsigned char)s) WRONG HEADERSUM
  86.     header[size] = '\0';    // just to makes things easier to handle, ie.
  87.                 // zero terminate filename
  88.     <= 18
  89.     Next word gives number of bytes which are used, excluding this word
  90.     COMMENT:
  91.     0   2        Number of bytes in comment
  92.             Uncompressed size = this field - 7
  93.     2   2        Number of bytes compressed
  94.     4   1:76543210
  95.           xxxxXXXX    Method 0..4(15)
  96.           xxx1xxxx    Security envelope should follow
  97.           XXXxxxxx    Future use
  98.     5   4        CRC
  99.     9   size-9    Comment
  100.     PASSWORD:
  101.     0   2        4
  102.     2   4        CRC for password
  103.  
  104.         **************************************************************
  105.         I'm not done thinking about this one yet, so I'll be in touch.
  106.         **************************************************************
  107.     SECURITY ENVELOPE:
  108.     0   2        n
  109.     n   1        None of your buisness (to be honest, I'm not done yet)
  110.     OTHERWISE:
  111.     0   2        Number of bytes to skip
  112.  
  113. -------------------------------------------------------------------------------
  114. Errorlevels
  115. #define EC_NO            0        No error
  116. #define EC_NOMEM        1        Out of memory
  117. #define EC_WRITE_ARC        2        Error writing to archive file
  118. #define EC_WRITE_TMP        3        Error writing to temp archive file
  119. #define EC_WRITE_OUT        4        Error writing to extracted file
  120. #define EC_READ_ARC        5        Error reading from archive file
  121. #define EC_READ_INP        6        Error reading from file to archive
  122. #define EC_OPEN_ARC        7        Error opening archive file
  123. #define EC_OPEN_INP        8        Error opening file to archive
  124. #define EC_OPEN_SFX        9        Error opening SFX/SFXjr.exe
  125. #define EC_OPEN_TMP        10        Error opening temp (archive) file
  126. #define EC_CREATE_ARC        11        Error creating archive file
  127. #define EC_CREATE_TMP        12        Error creating temp archive file
  128. #define EC_CREATE_OUT        13        Error creating file to extract
  129. #define EC_CREATE_SFX        14        Error creating archive file EXE
  130. #define EC_CLOSE_ARC        15        Error closing archive file
  131. #define EC_CLOSE_TMP        16        Error closing temp archive file
  132. #define EC_CLOSE_INP        17        Error closing file to archive
  133. #define EC_CLOSE_OUT        18        Error closing extracted file
  134. #define EC_HEADER_SUM        19        Archive corrupted
  135. #define EC_CORRUPT_HDR        20        Archive corrupted
  136. #define EC_2_MANY_EXT        21        Too many extensions to copy (<= 16)
  137. #define EC_UNKNOWN_SWITCH   22        Unknow switch given
  138. #define EC_ILL_COMB_SW        23        Illegal combination of switches, eg.
  139.                     include subdirectories and strip path
  140. #define EC_CBREAK        24        User C-Break
  141. #define EC_UNKNOWN        25        Unknown type of archive file
  142. #define EC_NOT_ON_SFX        26        Those commands not allowed on SFX
  143. #define EC_NOT_MS_DOS        27        Archive file was not for MS-DOS
  144. #define EC_CRC            28        CRC-errors in Extracting/Testing
  145. #define EC_SQZ_CORRUPT        29        Someone has tangled with SQZ,
  146.                     look out for virii or a hacker.
  147. #define EC_CORRUPT_ARC        30        Corrupted archive file.
  148.  
  149.