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 >
C/C++ Source or Header  |  1998-07-01  |  972b  |  57 lines

  1. int ArgWildcards=0;
  2. long ArgCount=0,ArgUsed=0;
  3. long CurArgPtr=0;
  4. long NumArg=0;
  5.  
  6. void AddArgName(char *Arg)
  7. {
  8.   char *NewPtr;
  9.   int ArgLen;
  10.   if (strchr(Arg,'*')!=NULL || strchr(Arg,'?')!=NULL)
  11.     ArgWildcards=1;
  12.   ArgLen=strlen(Arg)+1;
  13.   if ((NewPtr=realloc(ArgBuf,CurArgPtr+ArgLen))==NULL)
  14.     ErrExit(EMEMORY,MEMORY_ERROR);
  15.   ArgBuf=NewPtr;
  16.   strcpy(ArgBuf+CurArgPtr,Arg);
  17.   CurArgPtr+=ArgLen;
  18.   ArgCount++;
  19. }
  20.  
  21.  
  22. int NextArgName(int Mode)
  23. {
  24.   if (Mode==ARG_NEXT)
  25.   {
  26.     if (NumArg>=ArgCount)
  27.       return(0);
  28.     else
  29.     {
  30.       strncpy(ArgName,ArgBuf+CurArgPtr,sizeof(ArgName));
  31.       CurArgPtr+=strlen(ArgBuf+CurArgPtr)+1;
  32.       NumArg++;
  33.     }
  34.     return(1);
  35.   }
  36.   if (Mode==ARG_RESET)
  37.   {
  38.     CurArgPtr=NumArg=0;
  39.     return(0);
  40.   }
  41.   if (Mode==ARG_REMOVE)
  42.   {
  43.     ArgWildcards=ArgCount=ArgUsed=CurArgPtr=NumArg=0;
  44.     free(ArgBuf);
  45.     ArgBuf=NULL;
  46.     return(0);
  47.   }
  48.   return(0);
  49. }
  50.  
  51.  
  52. int IsAllArgsUsed(void)
  53. {
  54.   return (!ArgWildcards && ++ArgUsed>=ArgCount);
  55. }
  56.  
  57.