This content is archived and may be deprecated or obsolete and is presented in the hope that it may still be useful.
REM ReadArgs.bbc v1.10 (C) 2006,2007 Jon Ripley;
DEF PROC_ReadArgs(RETURN argc, RETURN argv$())
LOCAL cmd%, i%, ptr%, token$, ttype%
SYS "GetCommandLine" TO cmd%
FOR i%=0 TO 1
IF i% = 1 THEN DIM argv$(argc - 1)
argc = 0
ptr% = cmd%
PROC_ReadArgsLex(ptr%, token$, ttype%)
WHILE ttype% <> 4 AND ttype%
IF i% = 1 THEN argv$(argc) = token$
argc += 1
PROC_ReadArgsLex(ptr%, token$, ttype%)
ENDWHILE
NEXT i%
argc -= 1
ENDPROC
DEF PROC_ReadArgsLex(RETURN ptr%, RETURN token$, RETURN ttype%)
token$ = ""
WHILE ?ptr% = 32 OR ?ptr% = 9 OR ?ptr% = 10 OR ?ptr% = 13
ptr% += 1
ENDWHILE
IF ?ptr% = 0 THEN ttype% = 4:ENDPROC
IF ?ptr%=34 THEN
ttype% = 3
ptr% += 1
WHILE ?ptr% <> 34 AND ?ptr%
token$ += CHR$ ?ptr%
ptr% += 1
ENDWHILE
ptr% += 1
ENDPROC
ENDIF
IF (?ptr% <> 32 AND ?ptr%) THEN
ttype% = 1
IF ?ptr% = 45 THEN ttype% = 2
WHILE ?ptr% <> 32 AND ?ptr%
token$ += CHR$ ?ptr%
ptr% += 1
ENDWHILE
ENDPROC
ENDIF
ttype% = 0
ENDPROC