diff options
author | Junio C Hamano <gitster@pobox.com> | 2014-03-18 13:51:18 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2014-03-18 13:51:18 -0700 |
commit | 6f75e48323bc3071495025fd14105e9dffa9e8dd (patch) | |
tree | fbb3b54f3877d21bc6a9ac6c284971581e18274b | |
parent | 884377c128925e7aa43eafebd8d4d0ba27dafe67 (diff) | |
parent | 2c5495f7b60d6ddcd6a411b48d2f6dbc4a24717a (diff) | |
download | git-6f75e48323bc3071495025fd14105e9dffa9e8dd.tar.gz |
Merge branch 'rm/strchrnul-not-strlen'
* rm/strchrnul-not-strlen:
use strchrnul() in place of strchr() and strlen()
-rw-r--r-- | archive.c | 4 | ||||
-rw-r--r-- | cache-tree.c | 7 | ||||
-rw-r--r-- | diff.c | 9 | ||||
-rw-r--r-- | fast-import.c | 33 | ||||
-rw-r--r-- | match-trees.c | 11 | ||||
-rw-r--r-- | parse-options.c | 5 | ||||
-rw-r--r-- | pretty.c | 5 | ||||
-rw-r--r-- | remote-testsvn.c | 4 | ||||
-rw-r--r-- | ws.c | 7 |
9 files changed, 31 insertions, 54 deletions
@@ -260,8 +260,8 @@ static void parse_treeish_arg(const char **argv, /* Remotes are only allowed to fetch actual refs */ if (remote && !remote_allow_unreachable) { char *ref = NULL; - const char *colon = strchr(name, ':'); - int refnamelen = colon ? colon - name : strlen(name); + const char *colon = strchrnul(name, ':'); + int refnamelen = colon - name; if (!dwim_ref(name, refnamelen, sha1, &ref)) die("no such ref: %.*s", refnamelen, name); diff --git a/cache-tree.c b/cache-tree.c index 587b35362f..7fa524a113 100644 --- a/cache-tree.c +++ b/cache-tree.c @@ -117,11 +117,11 @@ void cache_tree_invalidate_path(struct cache_tree *it, const char *path) if (!it) return; - slash = strchr(path, '/'); + slash = strchrnul(path, '/'); + namelen = slash - path; it->entry_count = -1; - if (!slash) { + if (!*slash) { int pos; - namelen = strlen(path); pos = subtree_pos(it, path, namelen); if (0 <= pos) { cache_tree_free(&it->down[pos]->cache_tree); @@ -139,7 +139,6 @@ void cache_tree_invalidate_path(struct cache_tree *it, const char *path) } return; } - namelen = slash - path; down = find_subtree(it, path, namelen, 0); if (down) cache_tree_invalidate_path(down->cache_tree, slash + 1); @@ -3362,14 +3362,11 @@ static int opt_arg(const char *arg, int arg_short, const char *arg_long, int *va if (c != '-') return 0; arg++; - eq = strchr(arg, '='); - if (eq) - len = eq - arg; - else - len = strlen(arg); + eq = strchrnul(arg, '='); + len = eq - arg; if (!len || strncmp(arg, arg_long, len)) return 0; - if (eq) { + if (*eq) { int n; char *end; if (!isdigit(*++eq)) diff --git a/fast-import.c b/fast-import.c index 4fd18a3574..fb4738d373 100644 --- a/fast-import.c +++ b/fast-import.c @@ -1485,14 +1485,11 @@ static int tree_content_set( unsigned int i, n; struct tree_entry *e; - slash1 = strchr(p, '/'); - if (slash1) - n = slash1 - p; - else - n = strlen(p); + slash1 = strchrnul(p, '/'); + n = slash1 - p; if (!n) die("Empty path component found in input"); - if (!slash1 && !S_ISDIR(mode) && subtree) + if (!*slash1 && !S_ISDIR(mode) && subtree) die("Non-directories cannot have subtrees"); if (!root->tree) @@ -1501,7 +1498,7 @@ static int tree_content_set( for (i = 0; i < t->entry_count; i++) { e = t->entries[i]; if (e->name->str_len == n && !strncmp_icase(p, e->name->str_dat, n)) { - if (!slash1) { + if (!*slash1) { if (!S_ISDIR(mode) && e->versions[1].mode == mode && !hashcmp(e->versions[1].sha1, sha1)) @@ -1552,7 +1549,7 @@ static int tree_content_set( e->versions[0].mode = 0; hashclr(e->versions[0].sha1); t->entries[t->entry_count++] = e; - if (slash1) { + if (*slash1) { e->tree = new_tree_content(8); e->versions[1].mode = S_IFDIR; tree_content_set(e, slash1 + 1, sha1, mode, subtree); @@ -1576,11 +1573,8 @@ static int tree_content_remove( unsigned int i, n; struct tree_entry *e; - slash1 = strchr(p, '/'); - if (slash1) - n = slash1 - p; - else - n = strlen(p); + slash1 = strchrnul(p, '/'); + n = slash1 - p; if (!root->tree) load_tree(root); @@ -1594,7 +1588,7 @@ static int tree_content_remove( for (i = 0; i < t->entry_count; i++) { e = t->entries[i]; if (e->name->str_len == n && !strncmp_icase(p, e->name->str_dat, n)) { - if (slash1 && !S_ISDIR(e->versions[1].mode)) + if (*slash1 && !S_ISDIR(e->versions[1].mode)) /* * If p names a file in some subdirectory, and a * file or symlink matching the name of the @@ -1602,7 +1596,7 @@ static int tree_content_remove( * exist and need not be deleted. */ return 1; - if (!slash1 || !S_ISDIR(e->versions[1].mode)) + if (!*slash1 || !S_ISDIR(e->versions[1].mode)) goto del_entry; if (!e->tree) load_tree(e); @@ -1644,11 +1638,8 @@ static int tree_content_get( unsigned int i, n; struct tree_entry *e; - slash1 = strchr(p, '/'); - if (slash1) - n = slash1 - p; - else - n = strlen(p); + slash1 = strchrnul(p, '/'); + n = slash1 - p; if (!n && !allow_root) die("Empty path component found in input"); @@ -1664,7 +1655,7 @@ static int tree_content_get( for (i = 0; i < t->entry_count; i++) { e = t->entries[i]; if (e->name->str_len == n && !strncmp_icase(p, e->name->str_dat, n)) { - if (!slash1) + if (!*slash1) goto found_entry; if (!S_ISDIR(e->versions[1].mode)) return 0; diff --git a/match-trees.c b/match-trees.c index 7873cdec58..e80b4af354 100644 --- a/match-trees.c +++ b/match-trees.c @@ -182,13 +182,10 @@ static int splice_tree(const unsigned char *hash1, enum object_type type; int status; - subpath = strchr(prefix, '/'); - if (!subpath) - toplen = strlen(prefix); - else { - toplen = subpath - prefix; + subpath = strchrnul(prefix, '/'); + toplen = subpath - prefix; + if (*subpath) subpath++; - } buf = read_sha1_file(hash1, &type, &sz); if (!buf) @@ -215,7 +212,7 @@ static int splice_tree(const unsigned char *hash1, if (!rewrite_here) die("entry %.*s not found in tree %s", toplen, prefix, sha1_to_hex(hash1)); - if (subpath) { + if (*subpath) { status = splice_tree(rewrite_here, subpath, hash2, subtree); if (status) return status; diff --git a/parse-options.c b/parse-options.c index 7b8d3faa17..a5fa0b8938 100644 --- a/parse-options.c +++ b/parse-options.c @@ -223,13 +223,10 @@ static int parse_long_opt(struct parse_opt_ctx_t *p, const char *arg, const struct option *options) { const struct option *all_opts = options; - const char *arg_end = strchr(arg, '='); + const char *arg_end = strchrnul(arg, '='); const struct option *abbrev_option = NULL, *ambiguous_option = NULL; int abbrev_flags = 0, ambiguous_flags = 0; - if (!arg_end) - arg_end = arg + strlen(arg); - for (; options->type != OPTION_END; options++) { const char *rest, *long_name = options->long_name; int flags = 0, opt_flags = 0; @@ -555,14 +555,13 @@ static char *get_header(const struct commit *commit, const char *msg, const char *line = msg; while (line) { - const char *eol = strchr(line, '\n'), *next; + const char *eol = strchrnul(line, '\n'), *next; if (line == eol) return NULL; - if (!eol) { + if (!*eol) { warning("malformed commit (header is missing newline): %s", sha1_to_hex(commit->object.sha1)); - eol = line + strlen(line); next = NULL; } else next = eol + 1; diff --git a/remote-testsvn.c b/remote-testsvn.c index 078f1ffa41..6be55cbe9e 100644 --- a/remote-testsvn.c +++ b/remote-testsvn.c @@ -78,8 +78,8 @@ static int parse_rev_note(const char *msg, struct rev_note *res) size_t len; while (*msg) { - end = strchr(msg, '\n'); - len = end ? end - msg : strlen(msg); + end = strchrnul(msg, '\n'); + len = end - msg; key = "Revision-number: "; if (starts_with(msg, key)) { @@ -33,11 +33,8 @@ unsigned parse_whitespace_rule(const char *string) int negated = 0; string = string + strspn(string, ", \t\n\r"); - ep = strchr(string, ','); - if (!ep) - len = strlen(string); - else - len = ep - string; + ep = strchrnul(string, ','); + len = ep - string; if (*string == '-') { negated = 1; |