builtin-remote.c and parse-options.c both have a skip_prefix() function, for the same purpose. Move builtin-remote's one to git-compat-util.h and let parse-options use it as well. Signed-off-by: Miklos Vajna <vmiklos@xxxxxxxxxxxxxx> --- builtin-remote.c | 6 ------ git-compat-util.h | 6 ++++++ parse-options.c | 14 ++++---------- 3 files changed, 10 insertions(+), 16 deletions(-) diff --git a/builtin-remote.c b/builtin-remote.c index c49f00f..9c25018 100644 --- a/builtin-remote.c +++ b/builtin-remote.c @@ -29,12 +29,6 @@ static inline int postfixcmp(const char *string, const char *postfix) return strcmp(string + len1 - len2, postfix); } -static inline const char *skip_prefix(const char *name, const char *prefix) -{ - return !name ? "" : - prefixcmp(name, prefix) ? name : name + strlen(prefix); -} - static int opt_parse_track(const struct option *opt, const char *arg, int not) { struct path_list *list = opt->value; diff --git a/git-compat-util.h b/git-compat-util.h index 01c4045..af515d4 100644 --- a/git-compat-util.h +++ b/git-compat-util.h @@ -127,6 +127,12 @@ extern void set_warn_routine(void (*routine)(const char *warn, va_list params)); extern int prefixcmp(const char *str, const char *prefix); +static inline const char *skip_prefix(const char *name, const char *prefix) +{ + return !name ? "" : + prefixcmp(name, prefix) ? name : name + strlen(prefix); +} + #ifdef NO_MMAP #ifndef PROT_READ diff --git a/parse-options.c b/parse-options.c index acf3fe3..aa164d0 100644 --- a/parse-options.c +++ b/parse-options.c @@ -22,12 +22,6 @@ static inline const char *get_arg(struct optparse_t *p) return *++p->argv; } -static inline const char *skip_prefix(const char *str, const char *prefix) -{ - size_t len = strlen(prefix); - return strncmp(str, prefix, len) ? NULL : str + len; -} - static int opterror(const struct option *opt, const char *reason, int flags) { if (flags & OPT_SHORT) @@ -161,7 +155,7 @@ static int parse_long_opt(struct optparse_t *p, const char *arg, rest = skip_prefix(arg, options->long_name); if (options->type == OPTION_ARGUMENT) { - if (!rest) + if (!strcmp(rest, arg)) continue; if (*rest == '=') return opterror(options, "takes no value", flags); @@ -170,7 +164,7 @@ static int parse_long_opt(struct optparse_t *p, const char *arg, p->out[p->cpidx++] = arg - 2; return 0; } - if (!rest) { + if (!strcmp(rest, arg)) { /* abbreviated? */ if (!strncmp(options->long_name, arg, arg_end - arg)) { is_abbreviated: @@ -201,9 +195,9 @@ is_abbreviated: flags |= OPT_UNSET; rest = skip_prefix(arg + 3, options->long_name); /* abbreviated and negated? */ - if (!rest && !prefixcmp(options->long_name, arg + 3)) + if (!strcmp(rest, arg + 3) && !prefixcmp(options->long_name, arg + 3)) goto is_abbreviated; - if (!rest) + if (!strcmp(rest, arg + 3)) continue; } if (*rest) { -- 1.5.6.rc0.dirty -- 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