getopt: factor out duplicated code for non-options

This commit is contained in:
Mikael Pettersson 2020-03-10 21:53:16 +01:00
parent 2a0f15ac52
commit 4e30e25a89

View File

@ -45,16 +45,15 @@ parse_argv([], _OptString, _LongOpts, RevOpts, RevArgv) ->
parse_argv(["--" | Argv], _OptString, _LongOpts, RevOpts, RevArgv) ->
finish(RevOpts, RevArgv, Argv);
parse_argv([Arg = "-" | Argv], OptString, LongOpts, RevOpts, RevArgv) ->
case OptString of
[$+ | _] -> finish(RevOpts, [Arg | RevArgv], Argv);
[$- | _] -> parse_argv(Argv, OptString, LongOpts, [{1, Arg} | RevOpts], RevArgv);
_ -> parse_argv(Argv, OptString, LongOpts, RevOpts, [Arg | RevArgv])
end;
nonoption(Arg, Argv, OptString, LongOpts, RevOpts, RevArgv);
parse_argv([[$-, $- | Long] | Argv], OptString, LongOpts, RevOpts, RevArgv) ->
parse_long(Long, Argv, OptString, LongOpts, RevOpts, RevArgv);
parse_argv([[$- | Element] | Argv], OptString, LongOpts, RevOpts, RevArgv) ->
parse_element(Element, Argv, OptString, LongOpts, RevOpts, RevArgv);
parse_argv([Arg | Argv], OptString, LongOpts, RevOpts, RevArgv) ->
nonoption(Arg, Argv, OptString, LongOpts, RevOpts, RevArgv).
nonoption(Arg, Argv, OptString, LongOpts, RevOpts, RevArgv) ->
case OptString of
[$+ | _] -> finish(RevOpts, [Arg | RevArgv], Argv);
[$- | _] -> parse_argv(Argv, OptString, LongOpts, [{1, Arg} | RevOpts], RevArgv);