On Wed, May 22, 2019 at 2:56 AM Ramsay Jones <ramsay@xxxxxxxxxxxxxxxxxxxx> wrote: > > Hi Duy, > > I am in the middle of rebasing a long running branch onto > current master (v2.22.0-rc1) and noticed something odd with > commit af2f368091 ("diff-parseopt: convert --output-*", > 2019-02-21). > > As part of the branch I am rebasing, I have defined a new > OPT_LL_CALLBACK() macro[1], which I had intended to apply to > the 'output' option to diff. However, commit af2f368091 > defines that option thus: > > + { OPTION_CALLBACK, 0, "output", options, N_("<file>"), > + N_("Output to a specific file"), > + PARSE_OPT_NONEG, NULL, 0, diff_opt_output }, > > Note that the 'option type' is given as OPTION_CALLBACK, not > as OPTION_LOWLEVEL_CALLBACK. Is this intended? Yeah I think this is correct (phew!). OPTION_CALLBACK can take two different callback types, the "lowlevel" one allows more access to parseopt context data while still does common parsing for us. OPTION_LOWLEVEL_CALLBACK, on the other hand, calls ll_callback directly and leaves it to the callback to handle everything. We want OPTION_CALLBACK here so we will not have to do all the work, we just need extra info (the prefix to be specific). > > ATB, > Ramsay Jones > > [1] Yes, the reason my branch is long running is because > we keep changing the same files! We have both defined new > OPT_() macros, some with the same name ... ;-) > > -- Duy