home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume6 / compress.xenix / compress.patch
Encoding:
Text File  |  1986-11-30  |  5.8 KB  |  243 lines

  1. 22c22
  2. < # define USERMEM     450000L    /* default user memory */
  3. ---
  4. > # define USERMEM     450000    /* default user memory */
  5. 46,49d45
  6. < #ifndef M_XENIX
  7. < #  define huge        /* needed only for 16-bit machines */
  8. < #endif
  9. 51c47
  10. < # if USERMEM >= (433484L+SACREDMEM)
  11. ---
  12. > # if USERMEM >= (433484+SACREDMEM)
  13. 78c74
  14. < # define HSIZE    69001L        /* 95% occupancy */
  15. ---
  16. > # define HSIZE    69001        /* 95% occupancy */
  17. 81c77
  18. < # define HSIZE    35023L        /* 94% occupancy */
  19. ---
  20. > # define HSIZE    35023        /* 94% occupancy */
  21. 92a89,98
  22. > #ifdef M_XENIX            /* Stupid compiler can't handle arrays with */
  23. > # if BITS == 16            /* more than 65535 bytes - so we fake it */
  24. > #  define XENIX_16
  25. > # else
  26. > #  if BITS > 13            /* Code only handles BITS = 12, 13, or 16 */
  27. > #   define BITS    13
  28. > #  endif
  29. > # endif
  30. > #endif
  31. 259c265
  32. < code_int maxmaxcode;            /* should NEVER generate this code */
  33. ---
  34. > code_int maxmaxcode = 1 << BITS;    /* should NEVER generate this code */
  35. 261c267
  36. < # define MAXCODE(n_bits)    ((code_int)1 << (n_bits) - 1)
  37. ---
  38. > # define MAXCODE(n_bits)    (1 << (n_bits) - 1)
  39. 263c269
  40. < # define MAXCODE(n_bits)    (((code_int)1 << (n_bits)) - 1)
  41. ---
  42. > # define MAXCODE(n_bits)    ((1 << (n_bits)) - 1)
  43. 266,267c272,298
  44. < count_int huge htab [HSIZE];
  45. < unsigned short huge codetab [HSIZE];
  46. ---
  47. > #ifdef XENIX_16
  48. > count_int htab0[8192];
  49. > count_int htab1[8192];
  50. > count_int htab2[8192];
  51. > count_int htab3[8192];
  52. > count_int htab4[8192];
  53. > count_int htab5[8192];
  54. > count_int htab6[8192];
  55. > count_int htab7[8192];
  56. > count_int htab8[HSIZE-65536];
  57. > count_int * htab[9] = {
  58. >     htab0, htab1, htab2, htab3, htab4, htab5, htab6, htab7, htab8 };
  59. > #define htabof(i)    (htab[(i) >> 13][(i) & 0x1fff])
  60. > unsigned short code0tab[16384];
  61. > unsigned short code1tab[16384];
  62. > unsigned short code2tab[16384];
  63. > unsigned short code3tab[16384];
  64. > unsigned short code4tab[16384];
  65. > unsigned short * codetab[5] = {
  66. >     code0tab, code1tab, code2tab, code3tab, code4tab };
  67. > #define codetabof(i)    (codetab[(i) >> 14][(i) & 0x3fff])
  68. > #else    /* Normal machine */
  69. > count_int htab [HSIZE];
  70. > unsigned short codetab [HSIZE];
  71. 269a301
  72. > #endif    /* XENIX_16 */
  73. 283,284c315,321
  74. < # define tab_suffixof(i)    ((char_type huge *)(htab))[i]
  75. < # define de_stack        ((char_type huge *)&tab_suffixof(1<<BITS))
  76. ---
  77. > #ifdef XENIX_16
  78. > # define tab_suffixof(i)    ((char_type *)htab[(i)>>15])[(i) & 0x7fff]
  79. > # define de_stack        ((char_type *)(htab2))
  80. > #else    /* Normal machine */
  81. > # define tab_suffixof(i)    ((char_type *)(htab))[i]
  82. > # define de_stack        ((char_type *)&tab_suffixof(1<<BITS))
  83. > #endif    /* XENIX_16 */
  84. 485c522
  85. <     maxmaxcode = (code_int)1 << maxbits;
  86. ---
  87. >     maxmaxcode = 1 << maxbits;
  88. 513c550
  89. <             maxmaxcode = (code_int)1 << maxbits;
  90. ---
  91. >             maxmaxcode = 1 << maxbits;
  92. 631c668
  93. <         maxmaxcode = (code_int)1 << maxbits;
  94. ---
  95. >         maxmaxcode = 1 << maxbits;
  96. 675c712
  97. <     register code_int i = 0;    /* must hold HSIZE */
  98. ---
  99. >     register code_int i = 0;
  100. 677,678c714,719
  101. <     register unsigned ent;    /* must hold BITS bits */
  102. <     register code_int disp;    /* must hold HSIZE */
  103. ---
  104. >     register code_int ent;
  105. > #ifdef XENIX_16
  106. >     register code_int disp;
  107. > #else    /* Normal machine */
  108. >     register int disp;
  109. > #endif
  110. 809,810c850,851
  111. < output( incode )
  112. <   code_int  incode;
  113. ---
  114. > output( code )
  115. > code_int  code;
  116. 821d861
  117. <     register unsigned short code;
  118. 829,830c869
  119. <     if ( incode >= 0 ) {
  120. <     code = incode;
  121. ---
  122. >     if ( code >= 0 ) {
  123. 863c902
  124. <     if (bits)
  125. ---
  126. >     if(bits)
  127. 938c977
  128. <     register char_type huge *stackp;
  129. ---
  130. >     register char_type *stackp;
  131. 940,941c979
  132. <     register unsigned short code;
  133. <     register code_int oldcode, incode;
  134. ---
  135. >     register code_int code, oldcode, incode;
  136. 947,949c985,987
  137. <     for ( incode = 255; incode >= 0; incode-- ) {
  138. <     tab_prefixof(incode) = 0;
  139. <     tab_suffixof(incode) = (char_type)incode;
  140. ---
  141. >     for ( code = 255; code >= 0; code-- ) {
  142. >     tab_prefixof(code) = 0;
  143. >     tab_suffixof(code) = (char_type)code;
  144. 956c994
  145. <     putchar( finchar );        /* first code must be 8 bits = char */
  146. ---
  147. >     putchar( (char)finchar );        /* first code must be 8 bits = char */
  148. 961c999
  149. <     while ( (incode = getcode()) > -1 ) {
  150. ---
  151. >     while ( (code = getcode()) > -1 ) {
  152. 963d1000
  153. <     code = incode;
  154. 965,966c1002,1003
  155. <         for ( incode = 255; incode >= 0; incode-- )
  156. <         tab_prefixof(incode) = 0;
  157. ---
  158. >         for ( code = 255; code >= 0; code-- )
  159. >         tab_prefixof(code) = 0;
  160. 969c1006
  161. <         if ( (incode = getcode ()) == -1 )    /* O, untimely death! */
  162. ---
  163. >         if ( (code = getcode ()) == -1 )    /* O, untimely death! */
  164. 971d1007
  165. <         code = incode;
  166. 972a1009
  167. >     incode = code;
  168. 984c1021,1025
  169. <     while ( code >= 256 ) {        /* already unsigned compare */
  170. ---
  171. > #ifdef SIGNED_COMPARE_SLOW
  172. >     while ( ((unsigned long)code) >= ((unsigned long)256) ) {
  173. > #else
  174. >     while ( code >= 256 ) {
  175. > #endif
  176. 1000,1001c1041
  177. <     if ( free_ent < maxmaxcode ) {
  178. <         code = free_ent++;
  179. ---
  180. >     if ( (code=free_ent) < maxmaxcode ) {
  181. 1003a1044
  182. >         free_ent = code+1;
  183. 1025c1066,1067
  184. < code_int getcode() {
  185. ---
  186. > code_int
  187. > getcode() {
  188. 1030c1072
  189. <     register unsigned short code;
  190. ---
  191. >     register code_int code;
  192. 1093c1135
  193. <     return (code_int)code;
  194. ---
  195. >     return code;
  196. 1185,1186c1227,1228
  197. <        for ( ; ent != 0;
  198. <            ent = (ent >= FIRST ? tab_prefixof(ent) : 0) ) {
  199. ---
  200. >        for ( ; ent != NULL;
  201. >            ent = (ent >= FIRST ? tab_prefixof(ent) : NULL) ) {
  202. 1350c1392,1398
  203. <     register count_int huge *htab_p = htab+hsize;
  204. ---
  205. > #ifndef XENIX_16    /* Normal machine */
  206. >     register count_int *htab_p = htab+hsize;
  207. > #else
  208. >     register j;
  209. >     register long k = hsize;
  210. >     register count_int *htab_p;
  211. > #endif
  212. 1353a1402,1411
  213. > #ifdef XENIX_16
  214. >     for(j=0; j<=8 && k>=0; j++,k-=8192) {
  215. >     i = 8192;
  216. >     if(k < 8192) {
  217. >         i = k;
  218. >     }
  219. >     htab_p = &(htab[j][i]);
  220. >     i -= 16;
  221. >     if(i > 0) {
  222. > #else
  223. 1354a1413
  224. > #endif
  225. 1373a1433,1436
  226. > #ifdef XENIX_16
  227. >     }
  228. >     }
  229. > #endif
  230. 1380c1443
  231. < long int num, den;
  232. ---
  233. > count_int num, den;
  234. 1407a1471,1473
  235. > #endif
  236. > #ifdef XENIX_16
  237. >     fprintf(stderr, "XENIX_16, ");
  238.