home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.rarlab.com
/
2014.05.ftp.rarlab.com.tar
/
ftp.rarlab.com
/
rar
/
sunrar.zip
/
getargs.c
< prev
next >
Wrap
C/C++ Source or Header
|
1998-07-01
|
972b
|
57 lines
int ArgWildcards=0;
long ArgCount=0,ArgUsed=0;
long CurArgPtr=0;
long NumArg=0;
void AddArgName(char *Arg)
{
char *NewPtr;
int ArgLen;
if (strchr(Arg,'*')!=NULL || strchr(Arg,'?')!=NULL)
ArgWildcards=1;
ArgLen=strlen(Arg)+1;
if ((NewPtr=realloc(ArgBuf,CurArgPtr+ArgLen))==NULL)
ErrExit(EMEMORY,MEMORY_ERROR);
ArgBuf=NewPtr;
strcpy(ArgBuf+CurArgPtr,Arg);
CurArgPtr+=ArgLen;
ArgCount++;
}
int NextArgName(int Mode)
{
if (Mode==ARG_NEXT)
{
if (NumArg>=ArgCount)
return(0);
else
{
strncpy(ArgName,ArgBuf+CurArgPtr,sizeof(ArgName));
CurArgPtr+=strlen(ArgBuf+CurArgPtr)+1;
NumArg++;
}
return(1);
}
if (Mode==ARG_RESET)
{
CurArgPtr=NumArg=0;
return(0);
}
if (Mode==ARG_REMOVE)
{
ArgWildcards=ArgCount=ArgUsed=CurArgPtr=NumArg=0;
free(ArgBuf);
ArgBuf=NULL;
return(0);
}
return(0);
}
int IsAllArgsUsed(void)
{
return (!ArgWildcards && ++ArgUsed>=ArgCount);
}