On Mon, 2007-11-05 at 09:55 +0100, Pierre Habouzit wrote: > 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 - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html