Christian Couder <christian.couder@xxxxxxxxx> writes: > From: Christian Couder <christian.couder@xxxxxxxxx> > > We often accept both a "--key" option and a "--key=<val>" option. > > These options currently are parsed using something like: > > if (!strcmp(arg, "--key")) { > /* do something */ > } else if (skip_prefix(arg, "--key=", &arg)) { > /* do something with arg */ > } > > which is a bit cumbersome compared to just: > > if (skip_to_optional_val(arg, "--key", &arg)) { > /* do something with arg */ > } > > This also introduces skip_to_optional_val_default() for the few > cases where something different should be done when the first > argument is exactly "--key" than when it is exactly "--key=". > > In general it is better for UI consistency and simplicity if > "--key" and "--key=" do the same thing though, so that using > skip_to_optional_val() should be encouraged compared to > skip_to_optional_val_default(). > > Note that these functions can be used to parse any "key=value" > string where "key" is also considered as valid, not just > command line options. > > Signed-off-by: Christian Couder <chriscool@xxxxxxxxxxxxx> > --- > git-compat-util.h | 23 +++++++++++++++++++++++ > strbuf.c | 20 ++++++++++++++++++++ > 2 files changed, 43 insertions(+) > > After thinking about it a bit more and taking a look at the > current code, I thought that it was probably best to have > both skip_to_optional_val() and skip_to_optional_val_default(). I guess we came to the same conclusion independently while our mails crossed ;-) > - 2 new functions instead of 1 > - "optional" instead of "opt" in the function names I thought that the more important part you agreed was s/val/arg/, though. I had a few small comments on later steps, but I think these are moving in the right direction. Thanks.