home *** CD-ROM | disk | FTP | other *** search
/ Carousel / CAROUSEL.cdr / mactosh / unix / unix_mac.sha < prev    next >
Text File  |  1986-09-02  |  4KB  |  161 lines

  1. 30-Aug-86 23:01:16-PDT,4302;000000000001
  2. Return-Path: <standorf@CECOM-2.ARPA>
  3. Received: from CECOM-2 by SUMEX-AIM.ARPA with TCP; Sat 30 Aug 86 23:00:48-PDT
  4. Date:     Sun, 31 Aug 86 1:12:13 EDT
  5. From:     Gary P Standorf <standorf@CECOM-2.ARPA>
  6. To:       info-mac@sumex-aim.ARPA
  7. cc:       l-info-mac@CECOM-2.ARPA, standorf@CECOM-2.ARPA
  8. Subject:  MacBin program for Unix systems
  9.  
  10. The macbin program runs on a Unix machine to create a MacBinary format file
  11. from the 3 Unix files created when uploaded using macget
  12. (MacTerminal 1.1 emulator), or having dehexified a .hqx file using xbin.
  13.  
  14. This is useful for downloading to a Macintosh running a terminal emulator
  15. that is using the MacBinary protocol.
  16.  
  17. Note:  to run this program on a System V Unix system, remove all calls to
  18. the bzero() procedure.  It doesn't exist on System V, and isn't needed.
  19.  
  20. This particular copy was downloaded from Genie.
  21.  
  22. [ will be called [SUMEX-AIM.Stanford.EDU]<INFO-MAC>UNIX-MACBINARY.SHAR  
  23.    DAVEG ]
  24.  
  25. Gary Standorf
  26. <standorf@cecom-2.arpa>
  27.  
  28. ------------------------------------------
  29.  
  30. From: jimb@amdcad
  31. Newsgroups: net.sources.mac
  32. Subject: xbin to macbin converter (C source)
  33. Date: Tue, 25-Feb-86 03:43:54 EST
  34. Reply-To: jimb@amdcad.UUCP (Jim Budler)
  35. Organization: AMD, Sunnyvale, California
  36. Lines: 121
  37.  
  38. The following program takes the three files created by xbin (.info .data
  39. and .rsrc) and makes a MacBinary format file out of them. It checks for the 
  40. protected bit and moves that if present as required by MacBinary.
  41.  
  42. Easy to use:
  43.  
  44.     if you have the three files file.info, file.data, file.rsrc
  45.  
  46.     type 'macbin file'
  47.  
  48.     and it will create file.bin
  49.  
  50. -----------------< cut here >---------------------
  51. #! /bin/sh
  52. # This is a shell archive, meaning:
  53. # 1. Remove everything above the #! /bin/sh line.
  54. # 2. Save the resulting text in a file.
  55. # 3. Execute the file with /bin/sh (not csh) to create the files:
  56. #    macbin.c
  57. # This archive created: Tue Feb 25 00:42:49 1986
  58. export PATH; PATH=/bin:$PATH
  59. echo shar: extracting "'macbin.c'" '(1697 characters)'
  60. if test -f 'macbin.c'
  61. then
  62.     echo shar: will not over-write existing file "'macbin.c'"
  63. else
  64. cat << \SHAR_EOF > 'macbin.c'
  65. #include <stdio.h>
  66. main(argc,argv)
  67. int argc;
  68. char **argv;
  69. {
  70. /*    structure of the info file - from MacBin.C
  71.     char zero1;
  72.     char nlen;
  73.     char name[63];
  74.     char type[4];        65    0101
  75.     char creator[4];    69
  76.     char flags;        73
  77.     char zero2;        74    0112
  78.     char location[6];    80
  79.     char protected;        81    0121
  80.     char zero3;        82    0122
  81.     char dflen[4];
  82.     char rflen[4];
  83.     char cdate[4];
  84.     char mdate[4];
  85. */
  86.     FILE *fd, *ofd;
  87.     char iname[128];
  88.     char dname[128];
  89.     char rname[128];
  90.     char oname[128];
  91.     char buf[128];
  92.     if (argc != 2) {
  93.         fprintf(stderr,"\nUsage: %s filename\n",argv[0]);
  94.         exit(1);
  95.     }
  96.     bzero(buf,128);
  97.     strcpy(oname,argv[1]);
  98.     strcat(oname,".bin");
  99.     if ((ofd = fopen( oname, "w")) == NULL){
  100.         fprintf(stderr, "\n Cannot open %s\n",oname);
  101.         exit(1);
  102.     }
  103.     strcpy(iname,argv[1]);
  104.     strcat(iname,".info");
  105.     if ((fd = fopen(iname,"r")) == NULL){
  106.         fprintf(stderr,"No %s file!\n", iname);
  107.         fclose(ofd);
  108.         unlink(oname);
  109.         exit(1);
  110.     }
  111.     if (fread(buf, sizeof(*buf), 128, fd) > 0){
  112.         if (buf[74] & 0x40) buf[81] = '\1'; /* protected */
  113.         buf[74] = '\0'; /* clear zero2 */
  114.         fwrite(buf, sizeof(*buf),128, ofd);
  115.         bzero(buf,128);
  116.     }
  117.     fclose(fd);
  118.     strcpy(dname,argv[1]);
  119.     strcat(dname,".data");
  120.     if ((fd = fopen(dname,"r")) == NULL){
  121.         fprintf(stderr,"No %s file!\n", dname);
  122.         fclose(ofd);
  123.         unlink(oname);
  124.         exit(1);
  125.     }
  126.     while (fread(buf, sizeof(*buf),128, fd) > 0){
  127.         fwrite(buf, sizeof(*buf),128, ofd);
  128.         bzero(buf,128);
  129.     }
  130.     fclose(fd);
  131.     strcpy(rname,argv[1]);
  132.     strcat(rname,".rsrc");
  133.     if ((fd = fopen(rname,"r")) == NULL){
  134.         fprintf(stderr,"No %s file!\n", rname);
  135.         fclose(ofd);
  136.         unlink(oname);
  137.         exit(1);
  138.     }
  139.     while (fread(buf, sizeof(*buf),128, fd) > 0){
  140.         fwrite(buf, sizeof(*buf),128, ofd);
  141.         bzero(buf,128);
  142.     }
  143.     fclose(fd);
  144. }
  145. SHAR_EOF
  146. if test 1697 -ne "`wc -c < 'macbin.c'`"
  147. then
  148.     echo shar: error transmitting "'macbin.c'" '(should have been 1697 characters)
  149. '
  150. fi
  151. fi # end of overwriting check
  152. #    End of shell archive
  153. exit 0
  154. -- 
  155.  Jim Budler
  156.  Advanced Micro Devices, Inc.
  157.  (408) 749-5806
  158.  Usenet: {ucbvax,decwrl,ihnp4,allegra,intelca}!amdcad!jimb
  159.  Compuserve:    72415,1200
  160.  
  161.