home *** CD-ROM | disk | FTP | other *** search
- /*-- commandLineArguments.e --*/
- OPT TURBO
-
- PMODULE 'PMODULES:cSkipWhite'
-
- PROC skipArg(pos:PTR TO CHAR)
- DEF c, c1
- c1:=pos[]
- WHILE c:=pos[]
- SELECT c
- CASE 34 /* 34=QUOTE */
- IF c1=34
- INC pos
- WHILE (c:=pos[]) AND (c<>34) DO INC pos
- IF c=34 THEN INC pos
- ELSE
- INC pos
- ENDIF
- CASE 32; RETURN pos /* SPACE */
- CASE 9; RETURN pos /* TAB */
- CASE 10; RETURN pos /* LF */
- CASE 13; RETURN pos /* CR */
- DEFAULT; INC pos
- ENDSELECT
- ENDWHILE
- ENDPROC pos
- /* skipArg */
-
- PROC getArg(theArg:PTR TO CHAR, index)
- DEF startPos:PTR TO CHAR, numChars, i, length
- IF arg[]<=0
- StrCopy(theArg, '', ALL)
- RETURN FALSE
- ENDIF
- length:=StrLen(arg)
- startPos:=arg
- FOR i:=2 TO index
- startPos:=skipArg(startPos)
- startPos:=cSkipWhite(startPos) /* Find start of next arg. */
- IF startPos[]=0
- /* End of string encountered before requested arg. */
- StrCopy(theArg, '', ALL)
- RETURN FALSE
- ENDIF
- ENDFOR
- numChars:=(skipArg(startPos)-startPos) /* Find end of arg. */
- IF startPos[]=34
- IF Char(startPos+numChars-1)=34
- INC startPos
- numChars:=numChars-2
- ELSE
- RETURN FALSE
- ENDIF
- ENDIF
- MidStr(theArg, startPos, 0, numChars)
- ENDPROC TRUE
- /* getArg */
-