home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1998 / MacHack 1998.toast / The Hacks! / 3D No 'doz II / Source / Sources / DisasmBuilder.c < prev    next >
Encoding:
C/C++ Source or Header  |  1998-06-20  |  982 b   |  59 lines  |  [TEXT/CWIE]

  1. StringPtr    disasmName = "\pDisassembler";
  2.  
  3. int main(void)
  4. {
  5.     Handle        loader = nil;
  6.     short        cResFile, rFile;
  7.     long        fileLen;
  8.     char        zero = 0;
  9.     Boolean        fileOK = true;
  10.     
  11.     cResFile = CurResFile();
  12.     if ((rFile = OpenResFile("\pLoader.rsrc")) != -1)
  13.     {
  14.         UseResFile(rFile);
  15.         loader = Get1IndResource('lodr', 1);
  16.         if (loader != nil)
  17.         {
  18.             HNoPurge(loader);
  19.             DetachResource(loader);
  20.         }
  21.         
  22.         CloseResFile(rFile);
  23.     }
  24.     
  25.     FSDelete(disasmName, 0);
  26.     if (Create(disasmName, 0, '3D!z', '3D!z') == noErr)
  27.     {
  28.         if (OpenDF(disasmName, 0, &rFile) == noErr)
  29.         {
  30.             HLockHi(loader);
  31.             
  32.             fileLen = GetHandleSize(loader);
  33.             
  34.             if (FSWrite(rFile, &fileLen, *loader) == noErr)
  35.             {
  36.                 if ((fileLen & 0x00000001) != 0)
  37.                 {
  38.                     fileLen = 1;
  39.                     if (FSWrite(rFile, &fileLen, &zero) != noErr)
  40.                         fileOK = false;
  41.                 }
  42.             }
  43.             else
  44.                 fileOK = false;
  45.             
  46.             FSClose(rFile);
  47.             
  48.             FlushVol(nil, 0);
  49.         }
  50.         else
  51.             fileOK = false;
  52.         
  53.         if (!fileOK)
  54.             FSDelete(disasmName, 0);
  55.     }
  56.  
  57.     return 0;    
  58. }
  59.