home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1992 March / Source_Code_CD-ROM_Walnut_Creek_March_1992.iso / usenet / altsrcs / 3 / 3867 < prev    next >
Internet Message Format  |  1991-08-22  |  21KB

  1. Xref: wupost comp.sys.mac.comm:5695 comp.sys.mac.misc:16422 alt.sources:3867 alt.sources.d:2363
  2. Path: wupost!uunet!mcsun!hp4nl!cwi.nl
  3. From: dik@cwi.nl (Dik T. Winter)
  4. Newsgroups: comp.sys.mac.comm,comp.sys.mac.misc,alt.sources,alt.sources.d
  5. Subject: MAC archive unpacker, patch01
  6. Message-ID: <4089@charon.cwi.nl>
  7. Date: 19 Aug 91 00:11:01 GMT
  8. Sender: news@cwi.nl
  9. Followup-To: comp.sys.mac.comm
  10. Organization: CWI, Amsterdam
  11. Lines: 771
  12.  
  13. #! /bin/sh
  14. #This sharchive updates the Mac archive unpacker I posted about a month ago in
  15. #alt.sources.  Instructions:
  16. #    Go to the directory where you unpacked teh previous sharchives (it
  17. #    should have a subdirectory named 'macutil'), unpack this sharchive.
  18. #    That will create two files:
  19. #        macutil/unpack/patchlevel.h
  20. #    and    patch01
  21. #    If you have Larry Wall's patch utility enter the command:
  22. #        patch -p <patch01
  23. #    (do *not* forget the -p flag), that will adjust the sources.
  24. #    If you do *not* have patch you better look for it because it is a
  25. #    good utility, it is in all comp.sources.unix archives.  If you are
  26. #    not able to get it look in the file patch01 and see what differences
  27. #    occur.  If you have a windowing environment it ought to be fairly
  28. #    easy to apply all patches by hand.
  29. #If you missed the original sources, they are available by anonymous ftp from
  30. #wuarchive.wustl.edu, directory usenet/alt.sources/articles, files 3627.Z and
  31. #3628.Z.  Probably also from other alt.sources archivers.
  32. #
  33. #This version corrects most of the reported bugs.  (Learns me never to release
  34. #unlinted versions and not to make last minute changes.)  Also a flag -V is
  35. #added, it will print version etc.  There were reports about the inappropriate
  36. #definition of sprintf.  I know, it is a problem.  I now just removed the
  37. #definition (but of course, now lint will not shut up in a number of cases).
  38. #Also I did include <sys/types.h> now.  I have found no occurrences where it
  39. #was not allowed, but just in case, it is conditional (see the makefile).  This
  40. #version compiles and runs on: Alliant, Encore, Sun4, SGI, IBM 3090 and Cray YMP
  41. #(how is that for portability!).
  42. #
  43. #I think the next version will come out in 4 to 6 weeks.  It will include a
  44. #debinhexer (similar to mcvert and xbin as found in the archives).  But this
  45. #will allow niceties as:
  46. #    cat /usr/spool/news/binaries/mac/* | hexbin | unpack
  47. #How is that for wetting your appetite?
  48. #
  49. #Still, if you have problems, notify me; it will help me to find bugs.
  50. #Especially, if you find PackIt, StuffIt or Compactor archives that the
  51. #program refuses to unpack, or where errors are reported.
  52. #
  53. #dik
  54. #--
  55. #dik t. winter, cwi, amsterdam, nederland
  56. #dik@cwi.nl
  57. #---------
  58. #! /bin/sh
  59. # This is a shell archive, meaning:
  60. # 1. Remove everything above the #! /bin/sh line.
  61. # 2. Save the resulting text in a file.
  62. # 3. Execute the file with /bin/sh (not csh) to create:
  63. #    macutil
  64. #    patch01
  65. # This archive created: Mon Aug 19 01:29:33 1991
  66. export PATH; PATH=/bin:/usr/bin:$PATH
  67. if test ! -d 'macutil'
  68. then
  69.     echo shar: "You are unpacking in the wrong place; see the instructions."
  70.     echo shar: "I am continuing anyhow."
  71.     echo shar: "creating directory 'macutil'"
  72.     mkdir 'macutil'
  73. fi
  74. echo shar: "entering directory 'macutil'"
  75. cd 'macutil'
  76. if test ! -d 'unpack'
  77. then
  78.     echo shar: "creating directory 'unpack'"
  79.     mkdir 'unpack'
  80. fi
  81. echo shar: "entering directory 'unpack'"
  82. cd 'unpack'
  83. echo shar: "extracting 'patchlevel.h'" '(21 characters)'
  84. if test -f 'patchlevel.h'
  85. then
  86.     echo shar: "will not over-write existing file 'patchlevel.h'"
  87. else
  88. sed 's/^X//' << \SHAR_EOF > 'patchlevel.h'
  89. X#define PATCHLEVEL    1
  90. SHAR_EOF
  91. if test 21 -ne "`wc -c < 'patchlevel.h'`"
  92. then
  93.     echo shar: "error transmitting 'patchlevel.h'" '(should have been 21 characters)'
  94. fi
  95. fi
  96. echo shar: "done with directory 'unpack'"
  97. cd ..
  98. echo shar: "done with directory 'macutil'"
  99. cd ..
  100. echo shar: "extracting 'patch01'" '(15710 characters)'
  101. if test -f 'patch01'
  102. then
  103.     echo shar: "will not over-write existing file 'patch01'"
  104. else
  105. sed 's/^X//' << \SHAR_EOF > 'patch01'
  106. X*** macutil.old/makefile    Sun Jul 14 03:15:48 1991
  107. X--- macutil/makefile    Mon Aug 19 01:23:36 1991
  108. X***************
  109. X*** 2,8 ****
  110. X  BINDIR =    /ufs/dik/bin
  111. X  # remove -DBSD if you are not on a BSD system.
  112. X  # add -DNOMKDIR if your system does not have the mkdir system call.
  113. X! CF =    -DNODOT -DBSD
  114. X  IF =
  115. X  # If you want AUFS support use the following two lines:
  116. X  #CF =    -DNODOT -DBSD -DAUFS_SUPPORT
  117. X--- 2,9 ----
  118. X  BINDIR =    /ufs/dik/bin
  119. X  # remove -DBSD if you are not on a BSD system.
  120. X  # add -DNOMKDIR if your system does not have the mkdir system call.
  121. X! # remove -DTYPES_H if your system does not have /usr/include/sys/types.h
  122. X! CF =    -DNODOT -DBSD -DTYPES_H
  123. X  IF =
  124. X  # If you want AUFS support use the following two lines:
  125. X  #CF =    -DNODOT -DBSD -DAUFS_SUPPORT
  126. X*** macutil.old/unpack.1    Sun Jul 14 03:08:35 1991
  127. X--- macutil/unpack.1    Mon Aug 19 01:19:13 1991
  128. X***************
  129. X*** 57,62 ****
  130. X--- 57,65 ----
  131. X  .B \-q
  132. X  Ask the user for every file/folder whether it should be extracted
  133. X  (implies -l)
  134. X+ .B \-V
  135. X+ Gives the patchlevel of the program.
  136. X+ Other options are ignored and the program quits immediately.
  137. X  .SH BUGS
  138. X  As this is a beta release, there may still be some problems.  Archives
  139. X  that are password protected, multi-file archives, and files archived
  140. X*** macutil.old/fileio/fileglob.h    Sun Jul 14 03:08:26 1991
  141. X--- macutil/fileio/fileglob.h    Mon Aug 19 01:19:14 1991
  142. X***************
  143. X*** 1,12 ****
  144. X- #define TEXT 0
  145. X- #define DATA 1
  146. X- #define RSRC 2
  147. X- #define FULL 3
  148. X- #define MACB 4
  149. X- #define FORK 5
  150. X- #define AUFS 6
  151. X- 
  152. X  extern int bytes_read, bytes_written;
  153. X  extern char *out_buffer, *out_ptr;
  154. X! extern int mode;
  155. X  
  156. X--- 1,4 ----
  157. X  extern int bytes_read, bytes_written;
  158. X  extern char *out_buffer, *out_ptr;
  159. X! extern int filopt();
  160. X  
  161. X*** macutil.old/fileio/fileio.c    Sun Jul 14 03:08:26 1991
  162. X--- macutil/fileio/fileio.c    Mon Aug 19 01:21:57 1991
  163. X***************
  164. X*** 1,3 ****
  165. X--- 1,6 ----
  166. X+ #ifdef TYPES_H
  167. X+ #include <sys/types.h>
  168. X+ #endif /* TYPES_H */
  169. X  #include <sys/stat.h>
  170. X  #include <stdio.h>
  171. X  #include "../machdr/machdr.h"
  172. X***************
  173. X*** 8,13 ****
  174. X--- 11,24 ----
  175. X  #include <ctype.h>
  176. X  #endif /* AUFS_SUPPORT */
  177. X  
  178. X+ #define TEXT 0
  179. X+ #define DATA 1
  180. X+ #define RSRC 2
  181. X+ #define FULL 3
  182. X+ #define MACB 4
  183. X+ #define FORK 5
  184. X+ #define AUFS 6
  185. X+ 
  186. X  char *malloc();
  187. X  char *realloc();
  188. X  
  189. X***************
  190. X*** 26,34 ****
  191. X  #define RSRC_FORK    2
  192. X  #define DATA_FORK    3
  193. X  
  194. X! #ifdef BSD
  195. X  char *sprintf();
  196. X! #endif /* BSD */
  197. X  
  198. X  char f_info[I_NAMELEN];
  199. X  char f_data[I_NAMELEN];
  200. X--- 37,45 ----
  201. X  #define RSRC_FORK    2
  202. X  #define DATA_FORK    3
  203. X  
  204. X! #ifdef UNDEF /* Do not declare sprintf; not portable (but lint will complain) */
  205. X  char *sprintf();
  206. X! #endif /* UNDEF */
  207. X  
  208. X  char f_info[I_NAMELEN];
  209. X  char f_data[I_NAMELEN];
  210. X***************
  211. X*** 45,51 ****
  212. X  #endif /* AUFS_SUPPORT */
  213. X  
  214. X  int bytes_read, bytes_written;
  215. X! int mode;
  216. X  char *out_buffer, *out_ptr;
  217. X  
  218. X  char *buffer = NULL;
  219. X--- 56,62 ----
  220. X  #endif /* AUFS_SUPPORT */
  221. X  
  222. X  int bytes_read, bytes_written;
  223. X! static int mode = MACB;
  224. X  char *out_buffer, *out_ptr;
  225. X  
  226. X  char *buffer = NULL;
  227. X***************
  228. X*** 202,225 ****
  229. X      }
  230. X      wr_aufs_info(fp);
  231. X      (void) fclose(fp);
  232. X!     if(rsz != 0 || mode == FULL) {
  233. X!         fp = fopen(f_rsrc_aufs, "w");
  234. X!         if(fp == NULL) {
  235. X!         perror(f_rsrc_aufs);
  236. X!         exit(1);
  237. X!         }
  238. X!         (void) fwrite(rbuffer, 1, (int)rsz, fp);
  239. X!         (void) fclose(fp);
  240. X      }
  241. X!     if(dsz != 0 || mode == FULL) {
  242. X!         fp = fopen(f_data, "w");
  243. X!         if(fp == NULL) {
  244. X!         perror(f_data);
  245. X!         exit(1);
  246. X!         }
  247. X!         (void) fwrite(dbuffer, 1, (int)dsz, fp);
  248. X!         (void) fclose(fp);
  249. X      }
  250. X      break;
  251. X  #endif /* AUFS_SUPPORT */
  252. X      }
  253. X--- 213,232 ----
  254. X      }
  255. X      wr_aufs_info(fp);
  256. X      (void) fclose(fp);
  257. X!     fp = fopen(f_rsrc_aufs, "w");
  258. X!     if(fp == NULL) {
  259. X!         perror(f_rsrc_aufs);
  260. X!         exit(1);
  261. X      }
  262. X!     (void) fwrite(rbuffer, 1, (int)rsz, fp);
  263. X!     (void) fclose(fp);
  264. X!     fp = fopen(f_data, "w");
  265. X!     if(fp == NULL) {
  266. X!         perror(f_data);
  267. X!         exit(1);
  268. X      }
  269. X+     (void) fwrite(dbuffer, 1, (int)dsz, fp);
  270. X+     (void) fclose(fp);
  271. X      break;
  272. X  #endif /* AUFS_SUPPORT */
  273. X      }
  274. X***************
  275. X*** 236,242 ****
  276. X  #endif /* MKDIR */
  277. X  
  278. X      if (stat(name, &sbuf) == -1) {    /* directory doesn't exist */
  279. X! #ifndef NOMKDIR~
  280. X      if (mkdir(name, 0777) == -1) {
  281. X          fprintf(stderr, "Can't create subdirectory %s\n", name);
  282. X          exit(1);
  283. X--- 243,249 ----
  284. X  #endif /* MKDIR */
  285. X  
  286. X      if (stat(name, &sbuf) == -1) {    /* directory doesn't exist */
  287. X! #ifndef NOMKDIR
  288. X      if (mkdir(name, 0777) == -1) {
  289. X          fprintf(stderr, "Can't create subdirectory %s\n", name);
  290. X          exit(1);
  291. X***************
  292. X*** 342,345 ****
  293. X--- 349,387 ----
  294. X      fwrite((char *) &theinfo, 1, sizeof theinfo, fp);
  295. X  }
  296. X  #endif /* AUFS_SUPPORT */
  297. X+ 
  298. X+ fileopt(c)
  299. X+ char c;
  300. X+ {
  301. X+     switch(c) {
  302. X+     case 'r':
  303. X+     mode = RSRC;
  304. X+     break;
  305. X+     case 'd':
  306. X+     mode = DATA;
  307. X+     break;
  308. X+     case 'u':
  309. X+     mode = TEXT;
  310. X+     break;
  311. X+     case 'f':
  312. X+     mode = FORK;
  313. X+     break;
  314. X+     case '3':
  315. X+     mode = FULL;
  316. X+     break;
  317. X+     case 'a':
  318. X+ #ifdef AUFS_SUPPORT
  319. X+     check_aufs();
  320. X+     mode = AUFS;
  321. X+     break;
  322. X+ #else /* AUFS_SUPPORT */
  323. X+     fprintf(stderr, "Sorry, AUFS is not supported.  Recompile or ");
  324. X+     fprintf(stderr, "omit -a option.\n");
  325. X+     exit(1);
  326. X+ #endif /* AUFS_SUPPORT */
  327. X+     default:
  328. X+     return 0;
  329. X+     }
  330. X+     return 1;
  331. X+ }
  332. X  
  333. X*** macutil.old/fileio/fileio.h    Sun Jul 14 03:08:26 1991
  334. X--- macutil/fileio/fileio.h    Mon Aug 19 01:19:15 1991
  335. X***************
  336. X*** 4,6 ****
  337. X--- 4,7 ----
  338. X  void start_data();
  339. X  void end_file();
  340. X  void do_mkdir();
  341. X+ 
  342. X*** macutil.old/unpack/cpt_folder.c    Sun Jul 14 03:08:33 1991
  343. X--- macutil/unpack/cpt_folder.c    Mon Aug 19 01:19:16 1991
  344. X***************
  345. X*** 1,5 ****
  346. X--- 1,6 ----
  347. X  #include "globals.h"
  348. X  #include "cpt.h"
  349. X+ #include "../fileio/fileio.h"
  350. X  
  351. X  void cpt_uncompact();
  352. X  
  353. X*** macutil.old/unpack/cpt_rle_lzh.c    Sun Jul 14 03:08:32 1991
  354. X--- macutil/unpack/cpt_rle_lzh.c    Mon Aug 19 01:19:17 1991
  355. X***************
  356. X*** 5,11 ****
  357. X  
  358. X  unsigned char getb();
  359. X  static void cpt_readHuff();
  360. X! static int cpt_getbits();
  361. X  void cpt_outch();
  362. X  static int cpt_getbit();
  363. X  
  364. X--- 5,11 ----
  365. X  
  366. X  unsigned char getb();
  367. X  static void cpt_readHuff();
  368. X! static int cpt_get6bits();
  369. X  void cpt_outch();
  370. X  static int cpt_getbit();
  371. X  
  372. X***************
  373. X*** 17,23 ****
  374. X  
  375. X  void cpt_rle_lzh()
  376. X  {
  377. X!     int i, block_count;
  378. X      unsigned int bptr;
  379. X      int Huffchar, LZlength, LZoffs;
  380. X  
  381. X--- 17,23 ----
  382. X  
  383. X  void cpt_rle_lzh()
  384. X  {
  385. X!     int block_count;
  386. X      unsigned int bptr;
  387. X      int Huffchar, LZlength, LZoffs;
  388. X  
  389. X***************
  390. X*** 38,49 ****
  391. X      while(block_count < 0x1fff0 && cpt_outlength != 0) {
  392. X          if(cpt_getbit()) {
  393. X          Huffchar = gethuffbyte(cpt_Hufftree);
  394. X!         cpt_outch(Huffchar);
  395. X          block_count += 2;
  396. X          } else {
  397. X          LZlength = gethuffbyte(cpt_LZlength);
  398. X          LZoffs = gethuffbyte(cpt_LZoffs);
  399. X!         LZoffs = (LZoffs << 6) | cpt_getbits(6);
  400. X          bptr = cpt_LZptr - LZoffs;
  401. X          while(LZlength-- > 0) {
  402. X              cpt_outch(cpt_LZbuff[bptr++ & (CIRCSIZE - 1)]);
  403. X--- 38,49 ----
  404. X      while(block_count < 0x1fff0 && cpt_outlength != 0) {
  405. X          if(cpt_getbit()) {
  406. X          Huffchar = gethuffbyte(cpt_Hufftree);
  407. X!         cpt_outch((unsigned char)Huffchar);
  408. X          block_count += 2;
  409. X          } else {
  410. X          LZlength = gethuffbyte(cpt_LZlength);
  411. X          LZoffs = gethuffbyte(cpt_LZoffs);
  412. X!         LZoffs = (LZoffs << 6) | cpt_get6bits();
  413. X          bptr = cpt_LZptr - LZoffs;
  414. X          while(LZlength-- > 0) {
  415. X              cpt_outch(cpt_LZbuff[bptr++ & (CIRCSIZE - 1)]);
  416. X***************
  417. X*** 85,90 ****
  418. X--- 85,93 ----
  419. X      /* declarations from GenerateTrees */
  420. X      int codelen, lvlstart, next, parents;
  421. X  /*  int i, j already above */
  422. X+ 
  423. X+     /* for Compactor */
  424. X+     int tree_MaxCount;
  425. X      /* end declarations */
  426. X  
  427. X      /* next paraphrased from ReadLengths with adaption for Compactor. */
  428. X***************
  429. X*** 95,100 ****
  430. X--- 98,104 ----
  431. X      }
  432. X      i = 0;
  433. X      tree_MaxLength = 0;
  434. X+     tree_MaxCount = 0;
  435. X      tree_entries = 0;
  436. X      while(treeBytes-- > 0) { /* adaption for Compactor */
  437. X      len = (*cpt_char) >> 4;
  438. X***************
  439. X*** 101,106 ****
  440. X--- 105,113 ----
  441. X      if(len != 0) { /* only if length unequal zero */
  442. X          if(len > tree_MaxLength) {
  443. X          tree_MaxLength = len;
  444. X+         tree_MaxCount = 1;
  445. X+         } else if(len == tree_MaxLength) {
  446. X+         tree_MaxCount++;
  447. X          }
  448. X          tree_entry[tree_entries].Value = i;
  449. X          tree_entry[tree_entries++].BitLength = len;
  450. X***************
  451. X*** 110,115 ****
  452. X--- 117,125 ----
  453. X      if(len != 0) { /* only if length unequal zero */
  454. X          if(len > tree_MaxLength) {
  455. X          tree_MaxLength = len;
  456. X+         tree_MaxCount = 1;
  457. X+         } else if(len == tree_MaxLength) {
  458. X+         tree_MaxCount++;
  459. X          }
  460. X          tree_entry[tree_entries].Value = i;
  461. X          tree_entry[tree_entries++].BitLength = len;
  462. X***************
  463. X*** 117,122 ****
  464. X--- 127,138 ----
  465. X      i++;
  466. X      }
  467. X  
  468. X+     /* Compactor allows an odd trailing code in its Huffman tree! */
  469. X+     if(tree_MaxCount & 1) {
  470. X+     tree_entry[tree_entries].Value = size;
  471. X+     tree_entry[tree_entries++].BitLength = tree_MaxLength;
  472. X+     }
  473. X+ 
  474. X      /* adaption from SortLengths */
  475. X      entry = &(tree_entry[0]);
  476. X      entries = tree_entries;
  477. X***************
  478. X*** 163,175 ****
  479. X      Hufftree[0].flag = 0;
  480. X  }
  481. X  
  482. X! static int cpt_getbits(num)
  483. X! unsigned int num;
  484. X  {
  485. X! int b = 0, i;
  486. X  
  487. X!     for(i = 0; i < num; i++) {
  488. X!     b = (b << 1) | cpt_getbit();
  489. X      }
  490. X      return b;
  491. X  }
  492. X--- 179,196 ----
  493. X      Hufftree[0].flag = 0;
  494. X  }
  495. X  
  496. X! static int cpt_get6bits()
  497. X  {
  498. X! int b = 0, cn;
  499. X  
  500. X!     b = (cpt_newbits >> 26) & 0x3f;
  501. X!     cpt_bitsavail -= 6;
  502. X!     cpt_newbits <<= 6;
  503. X!     if(cpt_bitsavail < 16) {
  504. X!     cn = (*cpt_char++ << 8);
  505. X!     cn |= *cpt_char++;
  506. X!     cpt_newbits |= (cn << (16 - cpt_bitsavail));
  507. X!     cpt_bitsavail += 16;
  508. X      }
  509. X      return b;
  510. X  }
  511. X*** macutil.old/unpack/cpt_wrfile.c    Sun Jul 14 03:08:34 1991
  512. X--- macutil/unpack/cpt_wrfile.c    Mon Aug 19 01:19:18 1991
  513. X***************
  514. X*** 83,89 ****
  515. X          return;
  516. X          }
  517. X          cpt_savechar = ESC2;
  518. X!         *out_ptr++ = ch;
  519. X          cpt_outlength--;
  520. X      }
  521. X      }
  522. X--- 83,89 ----
  523. X          return;
  524. X          }
  525. X          cpt_savechar = ESC2;
  526. X!         *out_ptr++ = cpt_savechar;
  527. X          cpt_outlength--;
  528. X      }
  529. X      }
  530. X*** macutil.old/unpack/dehuffman.c    Sun Jul 14 03:08:31 1991
  531. X--- macutil/unpack/dehuffman.c    Mon Aug 19 01:19:18 1991
  532. X***************
  533. X*** 38,44 ****
  534. X      np = nodeptr++;
  535. X      if(getbit() == 1) {
  536. X      np->flag = 1;
  537. X!     np->byte = getdecodebyte((node *)NULL);
  538. X      } else {
  539. X      np->flag = 0;
  540. X      np->zero = read_sub_tree();
  541. X--- 38,44 ----
  542. X      np = nodeptr++;
  543. X      if(getbit() == 1) {
  544. X      np->flag = 1;
  545. X!     np->byte = getdecodebyte();
  546. X      } else {
  547. X      np->flag = 0;
  548. X      np->zero = read_sub_tree();
  549. X***************
  550. X*** 73,80 ****
  551. X      return np->byte;
  552. X  }
  553. X  
  554. X! int getdecodebyte(nodelist)
  555. X! struct node *nodelist;
  556. X  {
  557. X      register int i, b;
  558. X  
  559. X--- 73,84 ----
  560. X      return np->byte;
  561. X  }
  562. X  
  563. X! int getihuffbyte()
  564. X! {
  565. X!     return gethuffbyte(nodelist);
  566. X! }
  567. X! 
  568. X! int getdecodebyte()
  569. X  {
  570. X      register int i, b;
  571. X  
  572. X*** macutil.old/unpack/makefile    Sun Jul 14 03:23:40 1991
  573. X--- macutil/unpack/makefile    Mon Aug 19 01:19:19 1991
  574. X***************
  575. X*** 93,98 ****
  576. X--- 93,99 ----
  577. X      -rm -f unpack
  578. X  
  579. X  unpack.o:    globals.h
  580. X+ unpack.o:    patchlevel.h
  581. X  unpack.o:    ../fileio/fileglob.h
  582. X  globals.o:    globals.h
  583. X  globals.o:    ../machdr/machdr.h
  584. X*** macutil.old/unpack/pit.c    Sun Jul 14 03:08:30 1991
  585. X--- macutil/unpack/pit.c    Mon Aug 19 01:19:19 1991
  586. X***************
  587. X*** 60,67 ****
  588. X                  100.0 * bytes_read / bytes_written);
  589. X          }
  590. X          }
  591. X!         crc = (gethuffbyte(decode) & BYTEMASK) |
  592. X!          ((gethuffbyte(decode) & BYTEMASK) << 8);
  593. X          if(crc != data_crc) {
  594. X          fprintf(stderr,
  595. X              "CRC error in file: need 0x%04x, got 0x%04x\n",
  596. X--- 60,67 ----
  597. X                  100.0 * bytes_read / bytes_written);
  598. X          }
  599. X          }
  600. X!         crc = (getihuffbyte() & BYTEMASK) |
  601. X!             ((getihuffbyte() & BYTEMASK) << 8);
  602. X          if(crc != data_crc) {
  603. X          fprintf(stderr,
  604. X              "CRC error in file: need 0x%04x, got 0x%04x\n",
  605. X*** macutil.old/unpack/pit.h    Sun Jul 14 03:08:35 1991
  606. X--- macutil/unpack/pit.h    Mon Aug 19 01:19:20 1991
  607. X***************
  608. X*** 16,22 ****
  609. X  #define H_HDRCRC  92
  610. X  #define HDRBYTES  94
  611. X  
  612. X! struct pit_header {        /* Packit file header (92 bytes)
  613. X      unsigned char nlen;    /* number of characters in packed file name */
  614. X      char name[63];        /* name of packed file */
  615. X      char type[4];        /* file type */
  616. X--- 16,22 ----
  617. X  #define H_HDRCRC  92
  618. X  #define HDRBYTES  94
  619. X  
  620. X! struct pit_header {        /* Packit file header (92 bytes) */
  621. X      unsigned char nlen;    /* number of characters in packed file name */
  622. X      char name[63];        /* name of packed file */
  623. X      char type[4];        /* file type */
  624. X*** macutil.old/unpack/pit_filehdr.c    Sun Jul 14 03:08:32 1991
  625. X--- macutil/unpack/pit_filehdr.c    Mon Aug 19 01:19:21 1991
  626. X***************
  627. X*** 24,30 ****
  628. X  
  629. X      if(compr == DECODE) {
  630. X      for(i = 0; i < HDRBYTES; i++) {
  631. X!         hdr[i] = gethuffbyte(compr);
  632. X      }
  633. X      } else {
  634. X      if(fread(hdr, 1, HDRBYTES, infp) != HDRBYTES) {
  635. X--- 24,30 ----
  636. X  
  637. X      if(compr == DECODE) {
  638. X      for(i = 0; i < HDRBYTES; i++) {
  639. X!         hdr[i] = getihuffbyte();
  640. X      }
  641. X      } else {
  642. X      if(fread(hdr, 1, HDRBYTES, infp) != HDRBYTES) {
  643. X*** macutil.old/unpack/sit_folder.c    Sun Jul 14 03:08:28 1991
  644. X--- macutil/unpack/sit_folder.c    Mon Aug 19 01:19:21 1991
  645. X***************
  646. X*** 1,5 ****
  647. X--- 1,6 ----
  648. X  #include "globals.h"
  649. X  #include "sit.h"
  650. X+ #include "../fileio/fileio.h"
  651. X  
  652. X  void sit_skip();
  653. X  void sit_unstuff();
  654. X*** macutil.old/unpack/unpack.c    Sun Jul 14 03:08:29 1991
  655. X--- macutil/unpack/unpack.c    Mon Aug 19 01:19:22 1991
  656. X***************
  657. X*** 1,4 ****
  658. X--- 1,5 ----
  659. X  #include "globals.h"
  660. X+ #include "patchlevel.h"
  661. X  #include "../fileio/fileglob.h"
  662. X  
  663. X  unsigned long get4();
  664. X***************
  665. X*** 17,67 ****
  666. X      extern char *optarg;
  667. X      int errflg;
  668. X  
  669. X-     mode = MACB;
  670. X      errflg = 0;
  671. X  
  672. X!     while((c = getopt(argc, argv, "3adfilqruv")) != EOF) {
  673. X!     switch(c) {
  674. X!     case 'r':
  675. X!         mode = RSRC;
  676. X!         break;
  677. X!     case 'd':
  678. X!         mode = DATA;
  679. X!         break;
  680. X!     case 'u':
  681. X!         mode = TEXT;
  682. X!         break;
  683. X!     case 'f':
  684. X!         mode = FORK;
  685. X!         break;
  686. X!     case '3':
  687. X!         mode = FULL;
  688. X!         break;
  689. X!     case 'a':
  690. X  #ifdef AUFS_SUPPORT
  691. X!         check_aufs();
  692. X!         mode = AUFS;
  693. X!         break;
  694. X  #else /* AUFS_SUPPORT */
  695. X!         fprintf(stderr, "Sorry, AUFS is not supported.  Recompile or ");
  696. X!         fprintf(stderr, "omit -a option.\n");
  697. X!         exit(1);
  698. X  #endif /* AUFS_SUPPORT */
  699. X!     case 'l':
  700. X!         list++;
  701. X!         break;
  702. X!     case 'q':
  703. X!         query++;
  704. X!         break;
  705. X!     case 'v':
  706. X!         verbose++;
  707. X!         break;
  708. X!     case 'i':
  709. X!         info_only++;
  710. X!         break;
  711. X!     case '?':
  712. X!         errflg++;
  713. X!         break;
  714. X      }
  715. X      }
  716. X      if(errflg) {
  717. X--- 18,53 ----
  718. X      extern char *optarg;
  719. X      int errflg;
  720. X  
  721. X      errflg = 0;
  722. X  
  723. X!     while((c = getopt(argc, argv, "3Vadfilqruv")) != EOF) {
  724. X!     if(!fileopt(c)) {
  725. X!         switch(c) {
  726. X!         case 'l':
  727. X!         list++;
  728. X!         break;
  729. X!         case 'q':
  730. X!         query++;
  731. X!         break;
  732. X!         case 'v':
  733. X!         verbose++;
  734. X!         break;
  735. X!         case 'i':
  736. X!         info_only++;
  737. X!         break;
  738. X!         case '?':
  739. X!         errflg++;
  740. X!         break;
  741. X!         case 'V':
  742. X!         fprintf(stderr, "Patchlevel %d", PATCHLEVEL);
  743. X  #ifdef AUFS_SUPPORT
  744. X!         fprintf(stderr, ", AUFS supported");
  745. X  #else /* AUFS_SUPPORT */
  746. X!         fprintf(stderr, ", AUFS not supported");
  747. X  #endif /* AUFS_SUPPORT */
  748. X!         fprintf(stderr, ".\n");
  749. X!         exit(0);
  750. X!         }
  751. X      }
  752. X      }
  753. X      if(errflg) {
  754. X*** macutil.old/unpack/util.c    Sun Jul 14 03:08:30 1991
  755. X--- macutil/unpack/util.c    Mon Aug 19 01:19:22 1991
  756. X***************
  757. X*** 68,74 ****
  758. X      printf("? ");
  759. X      (void) fflush(stdout);
  760. X      (void) read(2, temp, sizeof(temp));
  761. X!     temp[sizeof(temp)] = 0;
  762. X      tp = temp;
  763. X      while(*tp != 0) {
  764. X      if(*tp == 'y' || *tp == 'Y') {
  765. X--- 68,74 ----
  766. X      printf("? ");
  767. X      (void) fflush(stdout);
  768. X      (void) read(2, temp, sizeof(temp));
  769. X!     temp[sizeof(temp) - 1] = 0;
  770. X      tp = temp;
  771. X      while(*tp != 0) {
  772. X      if(*tp == 'y' || *tp == 'Y') {
  773. SHAR_EOF
  774. if test 15710 -ne "`wc -c < 'patch01'`"
  775. then
  776.     echo shar: "error transmitting 'patch01'" '(should have been 15710 characters)'
  777. fi
  778. fi
  779. exit 0
  780. #    End of shell archive
  781. --
  782. dik t. winter, cwi, amsterdam, nederland
  783. dik@cwi.nl
  784.