home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / misc / volume17 / freeze / patch01 < prev    next >
Internet Message Format  |  1991-03-30  |  14KB

  1. From: leo@s514.ipmce.su (Leonid A. Broukhis)
  2. Newsgroups: comp.sources.misc
  3. Subject: v17i074:  freeze - Freeze/Melt compression package, Patch01
  4. Message-ID: <1991Mar29.041629.17264@sparky.IMD.Sterling.COM>
  5. Date: 29 Mar 91 04:16:29 GMT
  6. Approved: kent@sparky.imd.sterling.com
  7. X-Checksum-Snefru: 94bae9a7 0123dfe4 90e98f78 ff66c59c
  8.  
  9. Submitted-by: Leonid A. Broukhis <leo@s514.ipmce.su>
  10. Posting-number: Volume 17, Issue 74
  11. Archive-name: freeze/patch01
  12. Patch-To: freeze: Volume 17, Issue 67-68
  13.  
  14. Some bug fixes (endianness dependency), improvements:
  15.  
  16. freeze ... +numlist .... is now allowed. Numlist is 8 numbers
  17. (as in /etc/default/freeze) seperated by commas, for example
  18. freeze +0,1,1,1,4,10,27,18 ....
  19.  
  20. *** ../distribution/encode.c    Wed Mar 27 20:44:42 1991
  21. --- encode.c    Wed Mar 27 16:18:27 1991
  22. ***************
  23. *** 2,14 ****
  24.   
  25.   #include "lz.h"
  26.   
  27. - extern hash_t prev[];
  28. - #ifdef __XENIX__
  29. - extern u_short *next[];
  30. - #else
  31. - extern u_short next[];
  32. - #endif
  33.   /*
  34.    * freeze stdin to stdout
  35.    */
  36. --- 2,7 ----
  37. *** ../distribution/freeze.1    Wed Mar 27 20:44:43 1991
  38. --- freeze.1    Wed Mar 27 21:21:32 1991
  39. ***************
  40. *** 93,104 ****
  41.   .I melt
  42.   (all files are unpacked and written to stdout).
  43.   .PP
  44. ! Type is a token preceded by a '+', which defines the type
  45.   of following files in the command string. An explicite definition
  46.   of the file's type can give up to 2% of additional compression.
  47.   The list of types is stored in file
  48.   .IR /etc/default/freeze .
  49. ! Types may be abbreviated while not ambigious.
  50.   .PP
  51.   .I Freeze
  52.   uses the Lempel-Ziv algorithm on the first pass and the dynamic
  53. --- 93,108 ----
  54.   .I melt
  55.   (all files are unpacked and written to stdout).
  56.   .PP
  57. ! .I Type
  58. ! is a token preceded by a '+', which defines the type
  59.   of following files in the command string. An explicite definition
  60.   of the file's type can give up to 2% of additional compression.
  61.   The list of types is stored in file
  62.   .IR /etc/default/freeze .
  63. ! Types may be abbreviated while not ambigious. You can also determine
  64. ! values for the static Huffman table by using a list of 8 numbers
  65. ! separated by commas instead of
  66. ! .I type.
  67.   .PP
  68.   .I Freeze
  69.   uses the Lempel-Ziv algorithm on the first pass and the dynamic
  70. ***************
  71. *** 146,159 ****
  72.   .SH "SEE ALSO"
  73.   compact(1), pack(1), compress(1)
  74.   .SH "DIAGNOSTICS"
  75. - Usage: freeze [-cdfvV] [file ...]
  76. - .in +8
  77. - Invalid options were specified on the command line.
  78. - .in -8
  79.   Unknown flag: 
  80.   .I "\'x\';"
  81.   .in +8
  82. ! Invalid flags were specified on the command line.
  83.   .in -8
  84.   .IR file :
  85.   not in frozen format
  86. --- 150,160 ----
  87.   .SH "SEE ALSO"
  88.   compact(1), pack(1), compress(1)
  89.   .SH "DIAGNOSTICS"
  90.   Unknown flag: 
  91.   .I "\'x\';"
  92. + Usage: freeze [-cdfvV] [file|+type ...]
  93.   .in +8
  94. ! Invalid options were specified on the command line.
  95.   .in -8
  96.   .IR file :
  97.   not in frozen format
  98. ***************
  99. *** 224,229 ****
  100. --- 225,243 ----
  101.   .in +8
  102.   This message indicates a successful switching to
  103.   position table for mentioned file type.
  104. + .in -8
  105. + "
  106. + .I xxx
  107. + " - no such file type
  108. + .in +8
  109. + or
  110. + .in -8
  111. + .I xxx
  112. + - a list of 8 numbers expected
  113. + .in +8
  114. + This message means the given file type does not exist or
  115. + the given string contains a comma, but is not a valid list
  116. + of values for static Huffman table.
  117.   .in -8
  118.   melt: corrupt input
  119.   .in +8
  120. *** ../distribution/freeze.c    Wed Mar 27 20:44:45 1991
  121. --- freeze.c    Thu Mar 28 14:31:19 1991
  122. ***************
  123. *** 1,6 ****
  124. --- 1,7 ----
  125.   #include "freeze.h"
  126.   #include "lz.h"
  127.   #include "huf.h"
  128. + #include "patchlevel.h"
  129.   
  130.   /*
  131.    * Freeze - data freezing program
  132. ***************
  133. *** 22,27 ****
  134. --- 23,30 ----
  135.    * Improved hash function (with tuning of hash-table)
  136.    * Version 2.1: Noticeable speedup: Insert_Node and Get_Next_Match
  137.    * are now separated.
  138. +  * Version 2.2: Tunable static Huffman table for position information,
  139. +  * this info may be given in the command string now.
  140.    */
  141.   
  142.   #ifdef COMPAT
  143. ***************
  144. *** 30,36 ****
  145.   uchar magic_header[] = { "\037\237" };      /* 1F 9F = freeze 1.X + 1 */
  146.   #endif
  147.   
  148. ! static char ident[] = "@(#) freeze.c 2.1 Alpha 3/21/91 leo@s514.ipmce.su";
  149.   
  150.   #define ARGVAL() (*++(*argv) || (--argc && *++argv))
  151.   
  152. --- 33,39 ----
  153.   uchar magic_header[] = { "\037\237" };      /* 1F 9F = freeze 1.X + 1 */
  154.   #endif
  155.   
  156. ! static char ident[] = "@(#) freeze.c 2.2.%d Alpha 3/27/91 leo@s514.ipmce.su\n";
  157.   
  158.   #define ARGVAL() (*++(*argv) || (--argc && *++argv))
  159.   
  160. ***************
  161. *** 684,690 ****
  162.   
  163.   version()
  164.   {
  165. !     fprintf(stderr, "%s\n", ident);
  166.       fprintf(stderr, "Options: ");
  167.   #ifdef DEBUG
  168.       fprintf(stderr, "DEBUG, ");
  169. --- 687,693 ----
  170.   
  171.   version()
  172.   {
  173. !     fprintf(stderr, ident, PATCHLEVEL);
  174.       fprintf(stderr, "Options: ");
  175.   #ifdef DEBUG
  176.       fprintf(stderr, "DEBUG, ");
  177. ***************
  178. *** 717,748 ****
  179.   {
  180.       extern char * defread();
  181.       register char *s = defread(type), *t;
  182. !     static short v[8];
  183. !     int i;
  184.       if(!s) {
  185. !         if(!quiet)
  186. !             fprintf(stderr, "\"%s\" - no such file type\n", type);
  187. !         exit(1);
  188. !     }
  189. !     if(!(t = rindex(s, '='))) {
  190. !         if(!quiet)
  191. !             fprintf(stderr, "\"%s\" - invalid entry\n", type);
  192. !         exit(1);
  193.       }
  194. !     t++;
  195. !     if(sscanf(t, "%d %d %d %d %d %d %d %d",
  196. !         v, v+1, v+2, v+3, v+4, v+5, v+6, v+7) != 8) {
  197.           if(!quiet)
  198. !             fprintf(stderr, "\"%s\" - invalid entry\n", type);
  199.           exit(1);
  200.       }
  201.       for(i = 0; i < 8; i++)
  202.           Table[i+1] = v[i];
  203.       if(!quiet) {
  204. !         t = s;
  205. !         while(*s != '=' && *s != ' ' && *s != '\t') s++;
  206. !         *s = '\0';
  207.           fprintf(stderr, "Using \"%s%s\" type\n", type, t);
  208.       }
  209.   }
  210. --- 720,761 ----
  211.   {
  212.       extern char * defread();
  213.       register char *s = defread(type), *t;
  214. !     static int v[8];
  215. !     int i, is_list = 0;
  216.       if(!s) {
  217. !     /* try to consider 'type' as a list of values: n1,n2, ... */
  218. !         if(rindex(type, ','))
  219. !             is_list = 1;
  220. !         else {
  221. !             if (!quiet)
  222. !                 fprintf(stderr, "\"%s\" - no such file type\n", type);
  223. !             exit(1);
  224. !         }
  225. !         if(sscanf(type, "%d,%d,%d,%d,%d,%d,%d,%d",
  226. !             v, v+1, v+2, v+3, v+4, v+5, v+6, v+7) != 8) {
  227. !             if (!quiet)
  228. !                 fprintf(stderr,
  229. !                     "%s - a list of 8 numbers expected\n", type);
  230. !             exit(1);
  231. !         }
  232.       }
  233. !     if(!is_list && (!(t = rindex(s, '=')) ||
  234. !         sscanf(++t, "%d %d %d %d %d %d %d %d",
  235. !         v, v+1, v+2, v+3, v+4, v+5, v+6, v+7) != 8)) {
  236.           if(!quiet)
  237. !             fprintf(stderr,
  238. !                 "\"%s\" - invalid entry\n", type);
  239.           exit(1);
  240.       }
  241.       for(i = 0; i < 8; i++)
  242.           Table[i+1] = v[i];
  243.       if(!quiet) {
  244. !         if(!is_list) {
  245. !             t = s;
  246. !             while(*s != '=' && *s != ' ' && *s != '\t') s++;
  247. !             *s = '\0';
  248. !         } else
  249. !             t = "";
  250.           fprintf(stderr, "Using \"%s%s\" type\n", type, t);
  251.       }
  252.   }
  253. *** ../distribution/freeze.h    Wed Mar 27 20:45:03 1991
  254. --- freeze.h    Wed Mar 27 15:03:06 1991
  255. ***************
  256. *** 1,12 ****
  257.   
  258.   #include <stdio.h>
  259.   
  260. - /* for GCC */
  261.   #ifdef SUN4
  262.   #include <sys/stdtypes.h>
  263.   #else
  264.     typedef int mode_t; /* for GCC */
  265.   # ifndef getc
  266.   #   define getc(p)         (--(p)->_cnt < 0 ? _filbuf(p) : (int) *(p)->_ptr++)
  267.   # endif
  268. --- 1,12 ----
  269.   
  270.   #include <stdio.h>
  271.   
  272.   #ifdef SUN4
  273.   #include <sys/stdtypes.h>
  274.   #else
  275. + #if !defined(ultrix) && defined(__GNUC__)
  276.     typedef int mode_t; /* for GCC */
  277. + #endif
  278.   # ifndef getc
  279.   #   define getc(p)         (--(p)->_cnt < 0 ? _filbuf(p) : (int) *(p)->_ptr++)
  280.   # endif
  281. ***************
  282. *** 13,20 ****
  283. --- 13,22 ----
  284.   # ifndef putc
  285.   #   define putc(x, p)      (--(p)->_cnt < 0 ? _flsbuf((unsigned char) (x), (p)) : (int) (*(p)->_ptr++ = (unsigned char) (x)))
  286.   # endif
  287. + #ifndef BSD4_2
  288.     typedef unsigned short u_short;
  289.   #endif
  290. + #endif
  291.   
  292.   /* end (for GCC) */
  293.   
  294. ***************
  295. *** 96,103 ****
  296.   
  297.   extern int exit_stat;
  298.   
  299. - extern short new_flg;
  300.   #ifdef DEBUG
  301.   extern short debug;
  302.   extern short verbose;
  303. --- 98,103 ----
  304. ***************
  305. *** 113,119 ****
  306.            GetByte(), GetNBits();
  307.   
  308.   #ifdef COMPAT
  309. ! extern short DecodeCOld(), DecodePOld();
  310.   #endif
  311.   
  312.   #if defined(BSD42) && !defined(BSD4_2)
  313. --- 113,119 ----
  314.            GetByte(), GetNBits();
  315.   
  316.   #ifdef COMPAT
  317. ! extern short DecodeCOld(), DecodePOld(), new_flg;
  318.   #endif
  319.   
  320.   #if defined(BSD42) && !defined(BSD4_2)
  321. *** ../distribution/lz.c    Wed Mar 27 20:45:04 1991
  322. --- lz.c    Wed Mar 27 15:03:06 1991
  323. ***************
  324. *** 7,14 ****
  325.   /*                                    */
  326.   /*----------------------------------------------------------------------*/
  327.   
  328. - #define NIL        N    /* term of tree */
  329.   uchar    text_buf[N + _F - 1];
  330.   u_short   match_position, match_length;
  331.   
  332. --- 7,12 ----
  333. ***************
  334. *** 18,35 ****
  335.   */
  336.   
  337.   hash_t             prev[N + 1];
  338.   #ifndef __XENIX__
  339. ! u_short            next[array_size];
  340.   #else
  341.   #if parts == 2
  342.   u_short next0[32768], next1[8193];
  343. ! #elif parts == 3
  344.   u_short next0[32768], next1[32768], next2[8193];
  345. ! #elif parts == 5
  346.   u_short next0[32768], next1[32768], next2[32768], next3[32768], next4[8193];
  347. ! #else
  348.   u_short next0[32768], next1[32768], next2[32768], next3[32768], next4[32768],
  349.       next5[32768], next6[32768], next7[32768], next8[8193];
  350.   #endif
  351.   
  352.   u_short *next[parts] = {
  353. --- 16,42 ----
  354.   */
  355.   
  356.   hash_t             prev[N + 1];
  357.   #ifndef __XENIX__
  358. ! u_short
  359. ! #ifdef __TURBOC__
  360. !     huge
  361. ! #endif
  362. !         next[array_size];
  363.   #else
  364.   #if parts == 2
  365.   u_short next0[32768], next1[8193];
  366. ! #else
  367. ! #    if parts == 3
  368.   u_short next0[32768], next1[32768], next2[8193];
  369. ! #    else
  370. ! #        if parts == 5
  371.   u_short next0[32768], next1[32768], next2[32768], next3[32768], next4[8193];
  372. ! #        else
  373.   u_short next0[32768], next1[32768], next2[32768], next3[32768], next4[32768],
  374.       next5[32768], next6[32768], next7[32768], next8[8193];
  375. + #        endif
  376. + #    endif
  377.   #endif
  378.   
  379.   u_short *next[parts] = {
  380. ***************
  381. *** 46,52 ****
  382.   #endif
  383.   };
  384.   #endif
  385.   
  386.   #ifdef GATHER_STAT
  387.   long node_steps, node_matches;
  388. --- 53,58 ----
  389. *** ../distribution/lz.h    Wed Mar 27 20:45:04 1991
  390. --- lz.h    Thu Mar 28 14:11:37 1991
  391. ***************
  392. *** 32,42 ****
  393. --- 32,64 ----
  394.   
  395.   #define array_size      (N + 1 + (1 << BITS))
  396.   
  397. + extern hash_t prev[];
  398.   #ifndef __XENIX__
  399.   #define nextof(i)       next[i]
  400. + extern u_short
  401. + #ifdef __TURBOC__
  402. +         huge
  403. + #endif
  404. +             next[];
  405.   #else
  406.   #define parts (array_size/32768 + 1)
  407.   #define nextof(i)       next[(i) >> 15][(i) & 0x7fff]
  408. + #if parts == 2
  409. + extern u_short next0[], next1[];
  410. + #else
  411. + #    if parts == 3
  412. + extern u_short next0[], next1[], next2[];
  413. + #    else
  414. + #        if parts == 5
  415. + extern u_short next0[], next1[], next2[], next3[], next4[];
  416. + #        else
  417. + extern u_short next0[], next1[], next2[], next3[], next4[],
  418. +     next5[], next6[], next7[], next8[];
  419. + #        endif
  420. + #    endif
  421. + #endif
  422. + extern u_short *next[];
  423.   #endif
  424.   
  425.   /* To eliminate function-call overhead */
  426. *** ../distribution/makefile    Wed Mar 27 20:45:05 1991
  427. --- makefile    Thu Mar 28 16:27:15 1991
  428. ***************
  429. *** 1,4 ****
  430. --- 1,5 ----
  431.   DEST          = /usr/local/bin
  432. + MANDEST       = /usr/local/man/cat1
  433.   EXTHDRS          =
  434.   HDRS          = freeze.h\
  435.           lz.h\
  436. ***************
  437. *** 25,30 ****
  438. --- 26,35 ----
  439.   
  440.   PROGRAM       = freeze
  441.   
  442. + CATMAN        = freeze.man
  443. + MAN           = freeze.1
  444.   SRCS          = bitio.c\
  445.           debug.c\
  446.           decode.c\
  447. ***************
  448. *** 34,40 ****
  449.           huf.c\
  450.           lz.c
  451.   
  452. ! all:            $(PROGRAM) statist freeze.man
  453.   
  454.   lint:           $(SRCS)
  455.           lint $(LINTFLAGS) $(SRCS) $(LIBS)
  456. --- 39,45 ----
  457.           huf.c\
  458.           lz.c
  459.   
  460. ! all:            $(PROGRAM) statist $(CATMAN)
  461.   
  462.   lint:           $(SRCS)
  463.           lint $(LINTFLAGS) $(SRCS) $(LIBS)
  464. ***************
  465. *** 47,59 ****
  466.   
  467.   clean:;         rm -f *.o *.b .,* core a.out $(PROGRAM) statist
  468.   
  469. ! install:    $(PROGRAM)
  470.           install -s -c $(PROGRAM) $(DEST)
  471. !         ln -f $(DEST)/freeze $(DEST)/melt
  472. !         ln -f $(DEST)/freeze $(DEST)/fcat
  473.   
  474. ! freeze.man:     freeze.1
  475. !         nroff -man < freeze.1 > freeze.man
  476.   
  477.   ###
  478.   bitio.o: freeze.h huf.h
  479. --- 52,72 ----
  480.   
  481.   clean:;         rm -f *.o *.b .,* core a.out $(PROGRAM) statist
  482.   
  483. ! install:        $(DEST)/$(PROGRAM) $(MANDEST)/$(MAN)
  484. ! $(DEST)/$(PROGRAM): $(PROGRAM)
  485.           install -s -c $(PROGRAM) $(DEST)
  486. !         ln -f $(DEST)/$(PROGRAM) $(DEST)/melt
  487. !         ln -f $(DEST)/$(PROGRAM) $(DEST)/fcat
  488. ! $(MANDEST)/$(MAN): $(CATMAN)
  489. !         cp $(CATMAN) $(MANDEST)/$(MAN)
  490. !         chmod +r $(MANDEST)/$(MAN)
  491. !         ln -f $(MANDEST)/$(MAN) $(MANDEST)/melt.1
  492. !         ln -f $(MANDEST)/$(MAN) $(MANDEST)/fcat.1
  493.   
  494. ! $(CATMAN):      $(MAN)
  495. !         nroff -man < $(MAN) > $(CATMAN)
  496.   
  497.   ###
  498.   bitio.o: freeze.h huf.h
  499. ***************
  500. *** 62,65 ****
  501.   encode.o: freeze.h lz.h
  502.   freeze.o: freeze.h lz.h huf.h
  503.   huf.o: freeze.h huf.h
  504. ! lz.o: freeze.h
  505. --- 75,78 ----
  506.   encode.o: freeze.h lz.h
  507.   freeze.o: freeze.h lz.h huf.h
  508.   huf.o: freeze.h huf.h
  509. ! lz.o: freeze.h lz.h
  510. *** ../distribution/patchlevel.h    Thu Mar 28 14:36:11 1991
  511. --- patchlevel.h    Thu Mar 28 14:29:31 1991
  512. ***************
  513. *** 0 ****
  514. --- 1 ----
  515. + #define PATCHLEVEL 1
  516. *** ../distribution/statist.c    Wed Mar 27 20:44:46 1991
  517. --- statist.c    Thu Mar 28 13:54:48 1991
  518. ***************
  519. *** 16,22 ****
  520.   hash_t  prev[N + 1];
  521.   
  522.   #ifndef __XENIX__
  523. ! u_short            next[array_size];
  524.   #else
  525.   #if parts == 2
  526.   u_short next0[32768], next1[8193];
  527. --- 16,26 ----
  528.   hash_t  prev[N + 1];
  529.   
  530.   #ifndef __XENIX__
  531. ! u_short
  532. ! #ifdef __TURBOC__
  533. !     huge
  534. ! #endif
  535. !         next[array_size];
  536.   #else
  537.   #if parts == 2
  538.   u_short next0[32768], next1[8193];
  539. -- 
  540. Leonid A. Broukhis | 89-1-95 Liberty St. | "BROUKHIS" is Hebrew for
  541. 7+095 494.6241 (h) | Moscow 123481 USSR  |       "BENEDICTAE"
  542. 7+095 132.9475 (o) | (leo@s514.ipmce.su) | {Licet omnia qualibet dicas}
  543.  
  544.  
  545. exit 0 # Just in case...
  546. -- 
  547. Kent Landfield                   INTERNET: kent@sparky.IMD.Sterling.COM
  548. Sterling Software, IMD           UUCP:     uunet!sparky!kent
  549. Phone:    (402) 291-8300         FAX:      (402) 291-4362
  550. Please send comp.sources.misc-related mail to kent@uunet.uu.net.
  551.