Hi, On Mon, 8 May 2006, Junio C Hamano wrote: > repo-config --get branchdata.description '\(.*\) for netdev$' POSIX regexps do not want the backslashes... Something like this? --- [PATCH] repo-config: allow one group in value regexp The regular expression for the value can now contain one group. In case there is one, the output will be just that group, not the whole value. Now you can say git-repo-config --get branch.defaultremote '(.*) for junio' and for a config like this: [branch] defaultRemote = sushi for junio the output will be "sushi". Signed-off-by: Johannes Schindelin <Johannes.Schindelin@xxxxxx> --- repo-config.c | 30 ++++++++++++++++++++---------- 1 files changed, 20 insertions(+), 10 deletions(-) diff --git a/repo-config.c b/repo-config.c index 63eda1b..9ac4c51 100644 --- a/repo-config.c +++ b/repo-config.c @@ -26,31 +26,41 @@ static int show_all_config(const char *k static int show_config(const char* key_, const char* value_) { char value[256]; - const char *vptr = value; + const char *vptr = value_; int dup_error = 0; if (value_ == NULL) - value_ = ""; + vptr = value_ = ""; if (!use_key_regexp && strcmp(key_, key)) return 0; if (use_key_regexp && regexec(key_regexp, key_, 0, NULL, 0)) return 0; - if (regexp != NULL && - (do_not_match ^ - regexec(regexp, value_, 0, NULL, 0))) - return 0; + if (regexp != NULL) { + regmatch_t matches[2]; + int len; + + if (do_not_match ^ regexec(regexp, value_, 2, matches, 0)) + return 0; + len = matches[1].rm_eo - matches[1].rm_so; + if (!do_not_match && len > 0) { + if (len > 255) + len = 255; + strncpy(value, value_ + matches[1].rm_so, len); + value[len] = 0; + vptr = value; + } + } if (show_keys) printf("%s ", key_); if (seen && !do_all) dup_error = 1; - if (type == T_INT) + if (type == T_INT) { sprintf(value, "%d", git_config_int(key_, value_)); - else if (type == T_BOOL) + vptr = value; + } else if (type == T_BOOL) vptr = git_config_bool(key_, value_) ? "true" : "false"; - else - vptr = value_; seen++; if (dup_error) { error("More than one value for the key %s: %s", -- 1.3.1.g297e8-dirty - : 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