Re: [PATCH] Use parseopts in builtin-fetch
- From
Kristian Høgsberg <krh@redhat.com>
- Date
- Nov 5, 2007, 17:02 UTC
- Message-ID
- <1194282174.13968.8.camel@hinata.boston.redhat.com>
- In-Reply-To
- <20071105085513.GB25574@artemis.corp>
On Mon, 2007-11-05 at 09:55 +0100, Pierre Habouzit wrote:
Show 20 quoted lines
> On Mon, Nov 05, 2007 at 03:35:34AM +0000, Daniel Barkalow wrote: > > I mostly did this and the next one for practice with the API. I'm > > impressed that "git fetch -vv" is even handled correctly without anything > > special. > > About that: OPTION_BOOLEAN increments the associated variable, to > support this case specifically. > > The last thing that really miss in parse-options is a way to recurse > into a sub-array of struct option, to be able to port the generic diff > and revision arguments. > > Though, there is a difficulty here that I've not yet found how to > circumvent tastefully: right now options take an absolute pointer to > _the_ variable that will be filled with values. I need to be able to > relocate such a structure for sub-arrays for quite obvious reasons, and > that is quite hard to achieve without hazardous APIs. I currently lean > in the direction of simply memdup-ing the array and do fix-ups on > *values pointers. Though how to do that in a graceful way is not obvious > to me yet :)
What about requiring sub-arrays entries to take a pointer to a struct as their 'value' and requiring that all value pointers in the sub-array be relative to this struct, ie
(void *) offsetof(struct diff_options, detect_rename)
Then you can have something like
OPT__SUBARRAY(diff_options, &rev.diff_opt);
in your options array and it will fill out the specified my_diff_opts.
cheers, Kristian