On 8/8/20 7:58 PM, Hassan wrote:
Hello
I'm trying to get getopt to recognize an argument that may or may not
take a value. Here's an example :
../hashtrack --list
../hashtrack --list filter
The problem is that if I point list to a string variable, the first call
fails with "Missing value for argument --list".
I tried having it point to a callback with an optional second parameter :
void cb(string option, string value = "")
{
writeln("--list");
option.writeln();
value.writeln();
}
But I get the same error. I also tried having two callbacks with the
same name. The first one takes a single argument, and the second one
accepts two :
void cb(string option)
{
writeln("--list");
option.writeln();
}
void cb(string option, string value)
{
writeln("--list");
option.writeln();
value.writeln();
}
But it only calls the first one. I'm using DMD64 D Compiler v2.090.0.
Any pointers ?
getopt doesn't support optional parameters.
Two things I can think of:
1. Have 2 options that do the same thing, but only one accepts a
parameter (e.g. `--list` and `--listf filter`)
2. If your optional parameters are not tied to the option itself, then
don't accept them via getopt. In other words, if `hashtrack filter` is
supposed to be valid, then filter isn't an option after all, it's a
standard parameter.
-Steve