home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1992 March / Source_Code_CD-ROM_Walnut_Creek_March_1992.iso / msdos / opus / fvsrc620.arc / UNZIP.H < prev   
C/C++ Source or Header  |  1989-05-26  |  4KB  |  94 lines

  1. /*--------------------------------------------------------------------------*/
  2. /*                                                                          */
  3. /* Copyright 1989, Doug Boone.  FidoNet 119/5                               */
  4. /*                              (916) 893-9019 Data                         */
  5. /*                              (916) 891-0748 voice                        */
  6. /*                              P.O. Box 5108, Chico, CA. 95928             */
  7. /*                                                                          */
  8. /* This program is not for sale. It is for the free use with Opus systems.  */
  9. /* You may not sell it in ANY way. If you have an access charge to your     */
  10. /* Bulletin Board, consider this to be like Opus, you can ONLY make it      */
  11. /* available for download in an open area, where non-members can get access */
  12. /*                                                                          */
  13. /* If you need to modify this source code, please send me a copy of the     */
  14. /* changes you've made so that everyone can share in the updates.           */
  15. /*                                                                          */
  16. /* "Don't rip me off!" -- Tom Jennings, FidoNet's founder                   */
  17. /*                                                                          */
  18. /*--------------------------------------------------------------------------*/
  19.  
  20.  
  21. #define STRSIZ          256
  22. #define INBUF_SIZE      8192
  23. #define OUTBUF_SIZE     32768
  24. #define DLE             144
  25. #define MAX_BITS        13
  26. #define INIT_BITS       9
  27. #define HSIZE           8192
  28. #define FIRST           257
  29. #define CLEAR           256
  30.  
  31.  
  32. extern FILE     *Log_fp;
  33. extern  int     infile;
  34. extern  int     outfile;
  35. extern  byte    *inbuf;
  36. extern  byte    *inptr;
  37. extern  byte    *outbuf;
  38. extern  byte    *outptr;
  39. extern  unsigned    inpos;
  40. extern  unsigned    outpos;
  41. extern  long        packed;
  42. extern  long        unpacked;
  43. extern  unsigned    insize;
  44. extern  unsigned    outsize;
  45.  
  46. long        outcnt;
  47. int         method;        /* Packing method */
  48. unsigned     bitbuf;
  49. int         bits_left;
  50. char        zipeof;        /* used as an error flag */
  51.  
  52. byte followers[CLEAR][64];
  53. byte Slen[CLEAR];
  54.  
  55.  
  56. int     prefix[HSIZE +1];
  57. byte    suffix[HSIZE +1];
  58. byte    stack[HSIZE +1];
  59.  
  60. int codesize;
  61. int maxcode;
  62. int free_ent;
  63. int maxcodemax;
  64. int offset;
  65.  
  66. static unsigned mask_bits[] =
  67.     {0,     0x0001, 0x0003, 0x0007, 0x000f,
  68.     0x001f, 0x003f, 0x007f, 0x00ff,
  69.     0x01ff, 0x03ff, 0x07ff, 0x0fff,
  70.     0x1fff, 0x3fff, 0x7fff, 0xffff
  71.     };
  72.  
  73. int L_table[] = {0, 0x7f, 0x3f, 0x1f, 0x0f};
  74. int D_shift[] = {0, 0x07, 0x06, 0x05, 0x04};
  75. int D_mask[]  = {0, 0x01, 0x03, 0x07, 0x0f};
  76.  
  77. int B_table[] = {   8, 1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5,
  78.                     5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6,
  79.                     6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
  80.                     6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7,
  81.                     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
  82.                     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
  83.                     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
  84.                     7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  85.                     8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  86.                     8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  87.                     8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  88.                     8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  89.                     8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  90.                     8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  91.                     8, 8, 8, 8};
  92.  
  93.  
  94.