home *** CD-ROM | disk | FTP | other *** search
/ The CDPD Public Domain Collection for CDTV 4 / CDPD_IV.bin / utilities / cli / fill / pmodules / commandlineargs.e next >
Encoding:
Text File  |  1994-06-22  |  1.3 KB  |  58 lines

  1. /*-- commandLineArguments.e --*/
  2. OPT TURBO
  3.  
  4. PMODULE 'PMODULES:cSkipWhite'
  5.  
  6. PROC skipArg(pos:PTR TO CHAR)
  7.   DEF c, c1
  8.   c1:=pos[]
  9.   WHILE c:=pos[]
  10.     SELECT c
  11.       CASE 34     /* 34=QUOTE */
  12.         IF c1=34
  13.           INC pos
  14.           WHILE (c:=pos[]) AND (c<>34) DO INC pos
  15.           IF c=34 THEN INC pos
  16.         ELSE
  17.           INC pos
  18.         ENDIF
  19.       CASE 32; RETURN pos  /* SPACE */
  20.       CASE  9; RETURN pos  /* TAB */
  21.       CASE 10; RETURN pos  /* LF */
  22.       CASE 13; RETURN pos  /* CR */
  23.       DEFAULT; INC pos
  24.     ENDSELECT
  25.   ENDWHILE
  26. ENDPROC pos
  27.   /* skipArg */
  28.  
  29. PROC getArg(theArg:PTR TO CHAR, index)
  30.   DEF startPos:PTR TO CHAR, numChars, i, length
  31.   IF arg[]<=0
  32.     StrCopy(theArg, '', ALL)
  33.     RETURN FALSE
  34.   ENDIF
  35.   length:=StrLen(arg)
  36.   startPos:=arg
  37.   FOR i:=2 TO index
  38.     startPos:=skipArg(startPos)
  39.     startPos:=cSkipWhite(startPos)     /* Find start of next arg. */
  40.     IF startPos[]=0
  41.       /* End of string encountered before requested arg. */
  42.       StrCopy(theArg, '', ALL)
  43.       RETURN FALSE
  44.     ENDIF
  45.   ENDFOR
  46.   numChars:=(skipArg(startPos)-startPos)   /* Find end of arg. */
  47.   IF startPos[]=34
  48.     IF Char(startPos+numChars-1)=34
  49.       INC startPos
  50.       numChars:=numChars-2
  51.     ELSE
  52.       RETURN FALSE
  53.     ENDIF
  54.   ENDIF
  55.   MidStr(theArg, startPos, 0, numChars)
  56. ENDPROC TRUE
  57.   /* getArg */
  58.