home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Amos / AmosProPatch.LHA / AmosProMultiEnv / PatchAMOSPro.e < prev    next >
Encoding:
Text File  |  1992-02-26  |  2.4 KB  |  122 lines

  1. /* Patches AMOSPro 1.12 to load it's envoironment from 
  2.    T:AMOSPro_Interpreter_Config, then if that fails,
  3.    S:AMOSPro_Interpreter_Config
  4. */
  5.  
  6. /* V1.1 changes 
  7.  
  8.  * Filename may be on command line 
  9.  
  10.  * Exception Handlers now used for errors
  11.  
  12. */
  13.  
  14. MODULE 'ReqTools','libraries/reqtools','utility/tagitem','Dos/Dos'
  15.  
  16. ENUM    ER_OPEN=20,ER_READ,ER_WRITE,FR_LIB,FR_ALLOC
  17.  
  18. CONST    RW_ERR=-1
  19.  
  20. RAISE ER_OPEN IF Open()=NIL
  21. RAISE ER_READ IF Read()=RW_ERR
  22. RAISE ER_WRITE IF Write()=RW_ERR
  23.  
  24. DEF quitstring[5]:STRING
  25.  
  26. PROC main() HANDLE
  27.  
  28.   DEF file=0
  29.   DEF filename
  30.  
  31.   quitstring := 'Quit'
  32.   filename := getTheArg()
  33.  
  34.   file := Open(filename,MODE_OLDFILE)
  35.  
  36.   Seek(file,$FD0,-1)
  37.   Write(file,'T',1)
  38.   Seek(file,$FEE,-1)
  39.   Write(file,':',1)
  40.  
  41.   Close(file)
  42.   WriteF('Patching completed OK')
  43.  
  44. EXCEPT
  45.  
  46. SELECT exception
  47.  
  48.   CASE ER_OPEN;      request('Error: Could Not Open A File',quitstring,NIL)
  49.   CASE ER_READ;      request('Error: Could Not Read The Envoironment File',quitstring,NIL)
  50.   CASE ER_WRITE;     request('Error: Could Not Write To The Temporary File',quitstring,NIL)
  51.   DEFAULT;         request('Error: An I/O Error has occured',quitstring,NIL)
  52.  
  53. ENDSELECT
  54.  
  55.  
  56. ENDPROC
  57.  
  58.  
  59.  
  60. PROC filereq() HANDLE
  61.  
  62.   RAISE FR_LIB IF OpenLibrary()=NIL
  63.   RAISE FR_ALLOC IF RtAllocRequestA()=NIL
  64.  
  65.   CONST FILEREQ=0,REQINFO=1
  66.  
  67.   DEF filebuf[120]:STRING
  68.   DEF dirbuf[256]:STRING
  69.   DEF req:PTR TO rtfilerequester
  70.   DEF tempstr[1]:STRING
  71.  
  72.   reqtoolsbase:=OpenLibrary('reqtools.library',37)
  73.   req:=RtAllocRequestA(FILEREQ,0)
  74.   filebuf := 'AMOSPro'
  75.   RtChangeReqAttrA(req,[RTFI_DIR,'AMOSPro_System:',TAG_DONE])
  76.   IF RtFileRequestA(req,filebuf,'Select your AMOSPro file',0)=FALSE THEN CleanUp(5)
  77.  
  78.   StrCopy(dirbuf,req.dir,ALL)
  79.   RtFreeRequest(req)
  80.  
  81.   RightStr(tempstr,dirbuf,1)
  82.   IF StrCmp(tempstr,':',1)=FALSE THEN StrAdd(dirbuf,'/',ALL)
  83.   StrAdd(dirbuf,filebuf,ALL)
  84.  
  85.   CloseLibrary(reqtoolsbase)
  86.  
  87. EXCEPT
  88.  
  89. SELECT exception
  90.   CASE FR_LIB;     request('Error: Could Not Open Reqtools Library',quitstring,NIL)
  91.   CASE FR_ALLOC;   request('Error: Could Not Open File Requester',quitstring,NIL)    
  92.   DEFAULT;       Raise(exception)
  93. ENDSELECT
  94.   
  95.  
  96. ENDPROC dirbuf
  97.  
  98.  
  99.  
  100.  
  101.  
  102. PROC getTheArg()
  103.  
  104. DEF filename[256]:STRING
  105.  
  106. IF arg [] > 0
  107.   IF (arg[0] = '"') AND (arg[StrLen(arg)-1] = '"')
  108.     
  109.     MidStr(filename,arg,1,StrLen(arg)-2)
  110.   ELSE
  111.     StrCopy(filename,arg,ALL)
  112.   ENDIF
  113. ELSE
  114.   filename := filereq()
  115. ENDIF
  116.  
  117. IF filename[0]=0 THEN CleanUp(20)
  118.     
  119. ENDPROC filename
  120.  
  121. PROC request(body,gadgets,args)
  122. ENDPROC EasyRequestArgs(0,[20,0,'Patch AMOSPro',body,gadgets],0,args)