home *** CD-ROM | disk | FTP | other *** search
- #include <dos/dos.h>
- #include <exec/memory.h>
-
- enum{ARG_CMP,ARG_TEXT,ARG_REPLACE,ARG_AFTER,ARG_BEFORE,ARG_COUNT};
- #define ARGTMPL "CMP/A,TEXT/A,REPLACE/S,AFTER/S,BEFORE/S"
-
- #define MD_REPLACE 0
- #define MD_AFTER 1
- #define MD_BEFORE 2
-
- const char *version="$VER: ModStartUp V1.0 by Tinic Urou in 1996";
-
- fail(char *messy)
- {
- PutStr("*** ModStartUp: ");
- PutStr(messy);
- PutStr("\n");
- }
-
- int main(void)
- {
- BPTR *file1,*file2;
- ULONG *ArgArray;
- ULONG mode;
- BOOL succ=FALSE;
- char *token,*cmp,*text;
-
- if(ArgArray = (STRPTR *)AllocVec((sizeof(ULONG)*(ARG_COUNT)) + 16L,MEMF_CLEAR))
- {
- struct RDArgs *rd;
- if(rd=(struct RDArgs *)ReadArgs(ARGTMPL,(LONG *)ArgArray,NULL))
- {
- if(ArgArray[ARG_CMP])
- {
- cmp=(char *)ArgArray[ARG_CMP];
- }
- if(ArgArray[ARG_TEXT])
- {
- text=(char *)ArgArray[ARG_TEXT];
- }
- if(ArgArray[ARG_REPLACE])
- {
- mode=MD_REPLACE;
- }
- if(ArgArray[ARG_BEFORE])
- {
- mode=MD_BEFORE;
- }
- if(ArgArray[ARG_AFTER])
- {
- mode=MD_AFTER;
- }
- }
- if(token=(char *)AllocVec(1024,NULL))
- {
- if(ParsePatternNoCase(cmp,token,500))
- {
- if(file1=(BPTR *)Open("s:startup-sequence",MODE_OLDFILE))
- {
- if(file2=(BPTR *)Open("t:startup-sequence",MODE_NEWFILE))
- {
- char *line;
- if(line=(char *)AllocVec(4096L,NULL))
- {
- while(FGets(file1,line,4096L))
- {
- if(MatchPatternNoCase(token,line))
- {
- switch (mode)
- {
- case MD_REPLACE:
- FPuts(file2,text);
- FPutC(file2,'\n');
- break;
- case MD_BEFORE:
- FPuts(file2,text);
- FPutC(file2,'\n');
- FPuts(file2,line);
- break;
- case MD_AFTER:
- FPuts(file2,line);
- FPuts(file2,text);
- FPutC(file2,'\n');
- break;
- }
- }
- else FPuts(file2,line);
- }
- succ=TRUE;
- FreeVec(line);
- }
- else fail("No memory!");
- Close(file2);
- }
- else fail("Could not create t:startup-sequence");
- Close(file1);
- }
- else fail("Could not open s:startup-sequence");
- }
- else fail("No memory!");
- FreeVec(token);
- }
- else fail("ReadArgs failes.");
- FreeArgs(rd);
- }
- else fail("No memory!");
- if(succ)
- {
- Execute("Copy t:startup-sequence s:startup-sequence",NULL,NULL);
- }
- else fail("Copying of the new startup-sequence failed. Please copy it manually from t:startup-sequence.");
- return(NULL);
- }
-