This spec goes for CLIPPERCMD, HARBOURCMD, Harbour compiler and
#pragma directives in the source code.
The command-line always overrides the envvar.
Note that some switches are not accepted in envvar, some others in
#pragmas.
First the parser should start to step through all the tokens in the
string separated by whitespace. (or just walk through all argv[])
-
If the token begins with
-, it should be treated as a new style switch.One or more switch characters can follow this. The
-sign inside the token will turn off the switch.If the switch has an argument all the following characters are treated as part of the argument.
The
/sign has no special meaning here.Switch Resulting options -wn ( W N ) -w-n ( !W N ) -wi/harbour/include/ ( W I=/harbour/include/ ) -wi/harbour/include/n ( W I=/harbour/include/n ) -wes0n ( W ES=0 N ) -wen ( W [invalid switch: e] N ) -wesn ( W ES=Default(0) N ) -wses ( W S ES=Default(0) ) -wess ( W ES=Default(0) S ) - ( [invalid switch] ) -w-n-p ( !W !N P ) -w-n-p- ( !W !N !P ) -w- -w -w- ( finally: !W ) -
If the token begins with
/, it should be treated as a compatibility style switch.The parser scans the token for the next
/sign orEOSand treats the resulting string as one switch.This means that a switch with an argument containing
/sign has some limitations. This may be solved by allowing the usage of quote characters. This is mostly a problem on systems which use/as path separator.The
-sign has no special meaning here, it cannot be used to disable a switch.Switch Resulting options /w/n ( W N ) /wo/n ( [invalid switch: wo] N ) /ihello/world/ ( I=hello [invalid switch: world] [invalid switch: /] ) /i"hello/world/"/w ( I=hello/world/ W ) /ihello\world\ ( I=hello\world\ ) -
If the token begins with anything else it should be skipped.
The Harbour switches are always case insensitive.
In the Harbour command-line the two style can be used together:
harbour -wnes2 /gc0/q0 -iC:\hb\includeExceptions:
-
Handling of the
/CREDITundocumented switch on Harbour command-line is unusual, check the current code for this. -
CLIPPER,HARBOURenvvars and Harbour application command-line parsing is a different beast, seesrc/vm/cmdarg.cfor a NOTE.Just some examples for the various accepted forms:
//F20 == /F20 == F20 == F:20 == F20X F20//F:30000000 NOIDLE F0NOIDLEX10 SQUAWKNOIDLE//should always be used on the command-line.
-
Copyright © 1999–2009 Viktor Szakats