home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format 86 / af086sub.adf / UROUHACK / UROUHACK.lzx / UrouHack / source / ModifyStartUp.c < prev    next >
C/C++ Source or Header  |  2002-08-13  |  2KB  |  114 lines

  1. #include <dos/dos.h>
  2. #include <exec/memory.h>
  3.  
  4. enum{ARG_CMP,ARG_TEXT,ARG_REPLACE,ARG_AFTER,ARG_BEFORE,ARG_COUNT};
  5. #define ARGTMPL "CMP/A,TEXT/A,REPLACE/S,AFTER/S,BEFORE/S"
  6.  
  7. #define MD_REPLACE   0
  8. #define MD_AFTER     1
  9. #define MD_BEFORE    2
  10.  
  11. const char *version="$VER: ModStartUp V1.0 by Tinic Urou in 1996";
  12.  
  13. fail(char *messy)
  14. {
  15.     PutStr("*** ModStartUp: ");
  16.     PutStr(messy);
  17.     PutStr("\n");
  18. }
  19.  
  20. int main(void)
  21. {
  22.     BPTR    *file1,*file2;
  23.     ULONG   *ArgArray;
  24.     ULONG   mode;
  25.     BOOL    succ=FALSE;
  26.     char    *token,*cmp,*text;
  27.  
  28.     if(ArgArray = (STRPTR *)AllocVec((sizeof(ULONG)*(ARG_COUNT)) + 16L,MEMF_CLEAR))
  29.     {
  30.         struct RDArgs *rd;
  31.         if(rd=(struct RDArgs *)ReadArgs(ARGTMPL,(LONG *)ArgArray,NULL))
  32.         {
  33.             if(ArgArray[ARG_CMP])
  34.             {
  35.                 cmp=(char *)ArgArray[ARG_CMP];
  36.             }
  37.             if(ArgArray[ARG_TEXT])
  38.             {
  39.                 text=(char *)ArgArray[ARG_TEXT];
  40.             }
  41.             if(ArgArray[ARG_REPLACE])
  42.             {
  43.                 mode=MD_REPLACE;
  44.             }
  45.             if(ArgArray[ARG_BEFORE])
  46.             {
  47.                 mode=MD_BEFORE;
  48.             }
  49.             if(ArgArray[ARG_AFTER])
  50.             {
  51.                 mode=MD_AFTER;
  52.             }
  53.         }
  54.         if(token=(char *)AllocVec(1024,NULL))
  55.         {
  56.             if(ParsePatternNoCase(cmp,token,500))
  57.             {
  58.                 if(file1=(BPTR *)Open("s:startup-sequence",MODE_OLDFILE))
  59.                 {
  60.                     if(file2=(BPTR *)Open("t:startup-sequence",MODE_NEWFILE))
  61.                     {
  62.                         char *line;
  63.                         if(line=(char *)AllocVec(4096L,NULL))
  64.                         {
  65.                             while(FGets(file1,line,4096L))
  66.                             {
  67.                                 if(MatchPatternNoCase(token,line))
  68.                                 {
  69.                                     switch (mode)
  70.                                     {
  71.                                         case    MD_REPLACE:
  72.                                                 FPuts(file2,text);
  73.                                                 FPutC(file2,'\n');
  74.                                                 break;
  75.                                         case    MD_BEFORE:
  76.                                                 FPuts(file2,text);
  77.                                                 FPutC(file2,'\n');
  78.                                                 FPuts(file2,line);
  79.                                                 break;
  80.                                         case    MD_AFTER:
  81.                                                 FPuts(file2,line);
  82.                                                 FPuts(file2,text);
  83.                                                 FPutC(file2,'\n');
  84.                                                 break;
  85.                                     }
  86.                                 }
  87.                                 else FPuts(file2,line);
  88.                             }
  89.                             succ=TRUE;
  90.                             FreeVec(line);
  91.                         }
  92.                         else fail("No memory!");
  93.                         Close(file2);
  94.                     }
  95.                     else fail("Could not create t:startup-sequence");
  96.                     Close(file1);
  97.                 }
  98.                 else fail("Could not open s:startup-sequence");
  99.             }
  100.             else fail("No memory!");
  101.             FreeVec(token);
  102.         }
  103.         else fail("ReadArgs failes.");
  104.         FreeArgs(rd);
  105.     }
  106.     else fail("No memory!");
  107.     if(succ)
  108.     {
  109.         Execute("Copy t:startup-sequence s:startup-sequence",NULL,NULL);
  110.     }
  111.     else fail("Copying of the new startup-sequence failed. Please copy it manually from t:startup-sequence.");
  112.     return(NULL);
  113. }
  114.