summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 6531947)
raw | patch | inline | side by side (parent: 6531947)
author | Miklos Vajna <vmiklos@frugalware.org> | |
Fri, 27 Jun 2008 16:21:56 +0000 (18:21 +0200) | ||
committer | Junio C Hamano <gitster@pobox.com> | |
Tue, 1 Jul 2008 05:45:50 +0000 (22:45 -0700) |
builtin-remote.c and parse-options.c both have a skip_prefix() function,
for the same purpose. Move parse-options's one to git-compat-util.h and
let builtin-remote use it as well.
Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
for the same purpose. Move parse-options's one to git-compat-util.h and
let builtin-remote use it as well.
Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin-remote.c | patch | blob | history | |
git-compat-util.h | patch | blob | history | |
parse-options.c | patch | blob | history |
diff --git a/builtin-remote.c b/builtin-remote.c
index 145dd8568c7a644344d8bb25ba395b10c5835c5c..1491354a9d5d22546acde09021b0f666f6740257 100644 (file)
--- a/builtin-remote.c
+++ b/builtin-remote.c
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;
info->remote = xstrdup(value);
} else {
char *space = strchr(value, ' ');
- value = skip_prefix(value, "refs/heads/");
+ const char *ptr = skip_prefix(value, "refs/heads/");
+ if (ptr)
+ value = ptr;
while (space) {
char *merge;
merge = xstrndup(value, space - value);
path_list_append(merge, &info->merge);
- value = skip_prefix(space + 1, "refs/heads/");
+ ptr = skip_prefix(space + 1, "refs/heads/");
+ if (ptr)
+ value = ptr;
+ else
+ value = space + 1;
space = strchr(value, ' ');
}
path_list_append(xstrdup(value), &info->merge);
refspec.dst = (char *)refname;
if (!remote_find_tracking(states->remote, &refspec)) {
struct path_list_item *item;
- const char *name = skip_prefix(refspec.src, "refs/heads/");
+ const char *name, *ptr;
+ ptr = skip_prefix(refspec.src, "refs/heads/");
+ if (ptr)
+ name = ptr;
+ else
+ name = refspec.src;
/* symbolic refs pointing nowhere were handled already */
if ((flags & REF_ISSYMREF) ||
unsorted_path_list_has_path(&states->tracked,
struct path_list *target = &states->tracked;
unsigned char sha1[20];
void *util = NULL;
+ const char *ptr;
if (!ref->peer_ref || read_ref(ref->peer_ref->name, sha1))
target = &states->new;
if (hashcmp(sha1, ref->new_sha1))
util = &states;
}
- path_list_append(skip_prefix(ref->name, "refs/heads/"),
- target)->util = util;
+ ptr = skip_prefix(ref->name, "refs/heads/");
+ if (!ptr)
+ ptr = ref->name;
+ path_list_append(ptr, target)->util = util;
}
free_refs(fetch_map);
"es" : "");
for (i = 0; i < states.remote->push_refspec_nr; i++) {
struct refspec *spec = states.remote->push + i;
+ const char *p = "", *q = "";
+ if (spec->src)
+ p = skip_prefix(spec->src, "refs/heads/");
+ if (spec->dst)
+ q = skip_prefix(spec->dst, "refs/heads/");
printf(" %s%s%s%s", spec->force ? "+" : "",
- skip_prefix(spec->src, "refs/heads/"),
+ p ? p : spec->src,
spec->dst ? ":" : "",
- skip_prefix(spec->dst, "refs/heads/"));
+ q ? q : spec->dst);
}
printf("\n");
}
diff --git a/git-compat-util.h b/git-compat-util.h
index 6f94a8197f479f4e3fd93f8f80bdd125efd8a363..31edc98f30e2b5bb5504f49d2cad013f5dbd9e78 100644 (file)
--- 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 *str, const char *prefix)
+{
+ size_t len = strlen(prefix);
+ return strncmp(str, prefix, len) ? NULL : str + len;
+}
+
#ifdef NO_MMAP
#ifndef PROT_READ
diff --git a/parse-options.c b/parse-options.c
index b8bde2b04a14936787392babf5e0ec0a9e3ef1a7..bbc3ca4a9ffc0c3be829b074cadb2b2a82e43f02 100644 (file)
--- a/parse-options.c
+++ b/parse-options.c
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)