john@monuxa.UUCP (John Ruschmeyer) (12/19/86)
When the UNIX version of ARC was posted a while ago, I brought it up on our systems here. Unlike a recent poster to this newsgroup, I had no problem with the Lempel-Ziv (crunch) code, but never could get it to correctly squeeze or unsqueeze a file in an archive. Reading the source code, I noticed that the squeeze/unsqueeze code on ARC is based on an earlier version of the recently-posted portable SQ/USQ programs. Using code from that program I was able to fix the problem with ARC not correctly unsqueezing a file in the archive (creating either a zero-length file or giving the 'invalid decode tree' message). NOTE: I am still having problems with the squeeze code on our system. For some reason, trying to archive a file which would normally be squeezed on the MS-DOS version of ARC results in it being compressed with some less-efficient method. I think this is a bug, but it appears to be a harmless one. Context diffs for the unsqueeze fix follow: *** arcusq.c.old Tue Dec 16 11:14:54 1986 --- arcusq.c Thu Dec 18 16:29:07 1986 *************** *** 35,41 static int get_int(f) /* get an integer */ FILE *f; /* file to get it from */ { ! return getc_unp(f) | (getc_unp(f)<<8); } init_usq(f) /* initialize Huffman unsqueezing */ --- 35,46 ----- static int get_int(f) /* get an integer */ FILE *f; /* file to get it from */ { ! int temp; ! ! temp = getc_unp(f); /* get low order byte */ ! temp |= getc_unp(f) << 8; ! if (temp & 0x8000) temp |= (~0) << 15; /* propogate sign for big ints */ ! return (temp); } init_usq(f) /* initialize Huffman unsqueezing */ -- Name: John Ruschmeyer US Mail: Monmouth College, W. Long Branch, NJ 07764 Phone: (201) 571-3451 UUCP: ...!vax135!petsd!moncol!john ...!princeton!moncol!john ...!pesnta!moncol!john Actually, I know a lot about what turns a woman off. Now, if I could just stop doing it I'd be all set.