diff options
author | Junio C Hamano <gitster@pobox.com> | 2012-02-05 23:58:42 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2012-02-05 23:58:42 -0800 |
commit | 4802997c7531835f16b6fce690854d9a75119d0b (patch) | |
tree | 1199a1a8e09b18543e2adf3faccb5ee292d554cf /connect.c | |
parent | 1c719ffc3d1c4e03313d5cf5c4d32ec763697857 (diff) | |
parent | d336572f57e398318a0f6c51cc760d5be9872cc2 (diff) | |
download | git-4802997c7531835f16b6fce690854d9a75119d0b.tar.gz |
Merge branch 'cb/push-quiet' into maint
* cb/push-quiet:
t5541: avoid TAP test miscounting
fix push --quiet: add 'quiet' capability to receive-pack
server_supports(): parse feature list more carefully
Diffstat (limited to 'connect.c')
-rw-r--r-- | connect.c | 23 |
1 files changed, 21 insertions, 2 deletions
@@ -101,8 +101,27 @@ struct ref **get_remote_heads(int in, struct ref **list, int server_supports(const char *feature) { - return server_capabilities && - strstr(server_capabilities, feature) != NULL; + return !!parse_feature_request(server_capabilities, feature); +} + +const char *parse_feature_request(const char *feature_list, const char *feature) +{ + int len; + + if (!feature_list) + return NULL; + + len = strlen(feature); + while (*feature_list) { + const char *found = strstr(feature_list, feature); + if (!found) + return NULL; + if ((feature_list == found || isspace(found[-1])) && + (!found[len] || isspace(found[len]) || found[len] == '=')) + return found; + feature_list = found + 1; + } + return NULL; } enum protocol { |