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