revisions: split handle_revision_opt() from setup_revisions()

Add two fields to struct rev_info:

 - .def to store --default argument; and
 - .show_merge 1-bit field.

handle_revision_opt() is able to deal with any revision option, and
consumes them, and leaves revision arguments or pseudo arguments
(like --all, --not, ...) in place.

For now setup_revisions() does a pass of handle_revision_opt() again
so that code not using it in a parse-opt parser still work the same.

Signed-off-by: Pierre Habouzit <madcoder@debian.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Pierre Habouzit
2008-07-08 15:19:33 +02:00
committed by Junio C Hamano
parent 8bb65883d1
commit 02e542206f
2 changed files with 226 additions and 326 deletions

View File

@ -25,6 +25,7 @@ struct rev_info {
/* Basic information */
const char *prefix;
const char *def;
void *prune_data;
unsigned int early_output;
@ -65,6 +66,7 @@ struct rev_info {
/* Format info */
unsigned int shown_one:1,
show_merge:1,
abbrev_commit:1,
use_terminator:1,
missing_newline:1;
@ -117,6 +119,8 @@ volatile show_early_output_fn_t show_early_output;
extern void init_revisions(struct rev_info *revs, const char *prefix);
extern int setup_revisions(int argc, const char **argv, struct rev_info *revs, const char *def);
extern int handle_revision_opt(struct rev_info *revs, int argc, const char **argv,
int *unkc, const char **unkv);
extern int handle_revision_arg(const char *arg, struct rev_info *revs,int flags,int cant_be_filename);
extern int prepare_revision_walk(struct rev_info *revs);