From a54c9309c3291a960fcbcbc9e6407330a9edd044 Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Sat, 13 Feb 2016 13:13:51 -0500 Subject: Implement -xtype. --- parse.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'parse.c') diff --git a/parse.c b/parse.c index 6af1094..6272ba0 100644 --- a/parse.c +++ b/parse.c @@ -438,12 +438,12 @@ static struct expr *parse_samefile(struct parser_state *state, const char *optio } /** - * Parse -type [bcdpfls]. + * Parse -x?type [bcdpfls]. */ -static struct expr *parse_type(struct parser_state *state) { +static struct expr *parse_type(struct parser_state *state, const char *option, eval_fn *eval) { const char *arg = state->argv[state->i]; if (!arg) { - fputs("-type needs a value.\n", stderr); + fprintf(stderr, "%s needs a value.\n", option); return NULL; } @@ -480,7 +480,7 @@ static struct expr *parse_type(struct parser_state *state) { ++state->i; - return new_test_idata(state, eval_type, typeflag); + return new_test_idata(state, eval, typeflag); } /** @@ -657,7 +657,7 @@ static struct expr *parse_literal(struct parser_state *state) { if (strcmp(arg, "-true") == 0) { return &expr_true; } else if (strcmp(arg, "-type") == 0) { - return parse_type(state); + return parse_type(state, arg, eval_type); } break; @@ -677,6 +677,11 @@ static struct expr *parse_literal(struct parser_state *state) { return new_test_idata(state, eval_access, W_OK); } break; + + case 'x': + if (strcmp(arg, "-xtype") == 0) { + return parse_type(state, arg, eval_xtype); + } } fprintf(stderr, "Unknown argument '%s'.\n", arg); -- cgit v1.2.3