diff options
author | Michael Haggerty <mhagger@alum.mit.edu> | 2011-09-15 23:10:24 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-10-05 13:45:29 -0700 |
commit | 9224b73be03845a99f8171c57dc282f806b70f4c (patch) | |
tree | f34327c98e380f189af8a00e4046faccc09d0c27 /refs.c | |
parent | git check-ref-format: add options --allow-onelevel and --refspec-pattern (diff) | |
download | tgif-9224b73be03845a99f8171c57dc282f806b70f4c.tar.xz |
Change bad_ref_char() to return a boolean value
Previously most bad characters were indicated by returning 1, but "*"
was special-cased to return 2 instead of 1. One caller examined the
return value to see whether the special case occurred.
But it is easier (to document and understand) for bad_ref_char()
simply to return a boolean value, treating "*" like any other bad
character. Special-case the handling of "*" (which only occurs in
very specific circumstances) at the caller. The resulting calling
code thereby also becomes more transparent.
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'refs.c')
-rw-r--r-- | refs.c | 15 |
1 files changed, 6 insertions, 9 deletions
@@ -860,22 +860,21 @@ int for_each_rawref(each_ref_fn fn, void *cb_data) * - it contains a "\" (backslash) */ +/* Return true iff ch is not allowed in reference names. */ static inline int bad_ref_char(int ch) { if (((unsigned) ch) <= ' ' || ch == 0x7f || ch == '~' || ch == '^' || ch == ':' || ch == '\\') return 1; /* 2.13 Pattern Matching Notation */ - if (ch == '?' || ch == '[') /* Unsupported */ + if (ch == '*' || ch == '?' || ch == '[') /* Unsupported */ return 1; - if (ch == '*') /* Supported at the end */ - return 2; return 0; } int check_ref_format(const char *ref) { - int ch, level, bad_type, last; + int ch, level, last; int ret = CHECK_REF_FORMAT_OK; const char *cp = ref; @@ -890,9 +889,8 @@ int check_ref_format(const char *ref) /* we are at the beginning of the path component */ if (ch == '.') return CHECK_REF_FORMAT_ERROR; - bad_type = bad_ref_char(ch); - if (bad_type) { - if (bad_type == 2 && (!*cp || *cp == '/') && + if (bad_ref_char(ch)) { + if (ch == '*' && (!*cp || *cp == '/') && ret == CHECK_REF_FORMAT_OK) ret = CHECK_REF_FORMAT_WILDCARD; else @@ -902,8 +900,7 @@ int check_ref_format(const char *ref) last = ch; /* scan the rest of the path component */ while ((ch = *cp++) != 0) { - bad_type = bad_ref_char(ch); - if (bad_type) + if (bad_ref_char(ch)) return CHECK_REF_FORMAT_ERROR; if (ch == '/') break; |