X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=builtin-for-each-ref.c;h=b11ca928d6ac353de888f0e80d24578c5803d769;hb=d58c6184e345b9c8c8bfe8cc3eb1bbfe2f5ee4f9;hp=173bf38735315a1c299f1f2e3db76a7795a2305c;hpb=24ad8e0ce23d08d28a5d664ab6164b10125146ce;p=git.git diff --git a/builtin-for-each-ref.c b/builtin-for-each-ref.c index 173bf3873..b11ca928d 100644 --- a/builtin-for-each-ref.c +++ b/builtin-for-each-ref.c @@ -6,13 +6,13 @@ #include "tree.h" #include "blob.h" #include "quote.h" -#include /* Quoting styles */ #define QUOTE_NONE 0 #define QUOTE_SHELL 1 #define QUOTE_PERL 2 #define QUOTE_PYTHON 3 +#define QUOTE_TCL 4 typedef enum { FIELD_STR, FIELD_ULONG, FIELD_TIME } cmp_type; @@ -135,7 +135,7 @@ static const char *find_next(const char *cp) while (*cp) { if (*cp == '%') { /* %( is the start of an atom; - * %% is a quoteed per-cent. + * %% is a quoted per-cent. */ if (cp[1] == '(') return cp; @@ -173,8 +173,8 @@ static void verify_format(const char *format) */ static void *get_obj(const unsigned char *sha1, struct object **obj, unsigned long *sz, int *eaten) { - char type[20]; - void *buf = read_sha1_file(sha1, type, sz); + enum object_type type; + void *buf = read_sha1_file(sha1, &type, sz); if (buf) *obj = parse_object_buffer(sha1, type, *sz, buf, eaten); @@ -196,7 +196,7 @@ static void grab_common_values(struct atom_value *val, int deref, struct object if (deref) name++; if (!strcmp(name, "objecttype")) - v->s = type_names[obj->type]; + v->s = typename(obj->type); else if (!strcmp(name, "objectsize")) { char *s = xmalloc(40); sprintf(s, "%lu", sz); @@ -478,9 +478,9 @@ static void grab_sub_body_contents(struct atom_value *val, int deref, struct obj if (!strcmp(name, "subject")) v->s = copy_line(subpos); else if (!strcmp(name, "body")) - v->s = bodypos; + v->s = xstrdup(bodypos); else if (!strcmp(name, "contents")) - v->s = subpos; + v->s = xstrdup(subpos); } } @@ -724,6 +724,9 @@ static void print_value(struct refinfo *ref, int atom, int quote_style) case QUOTE_PYTHON: python_quote_print(stdout, v->s); break; + case QUOTE_TCL: + tcl_quote_print(stdout, v->s); + break; } } @@ -811,7 +814,7 @@ int cmd_for_each_ref(int ac, const char **av, char *prefix) i++; break; } - if (!strncmp(arg, "--format=", 9)) { + if (!prefixcmp(arg, "--format=")) { if (format) die("more than one --format?"); format = arg + 9; @@ -835,7 +838,13 @@ int cmd_for_each_ref(int ac, const char **av, char *prefix) quote_style = QUOTE_PYTHON; continue; } - if (!strncmp(arg, "--count=", 8)) { + if (!strcmp(arg, "--tcl") ) { + if (0 <= quote_style) + die("more than one quoting style?"); + quote_style = QUOTE_TCL; + continue; + } + if (!prefixcmp(arg, "--count=")) { if (maxcount) die("more than one --count?"); maxcount = atoi(arg + 8); @@ -843,7 +852,7 @@ int cmd_for_each_ref(int ac, const char **av, char *prefix) die("The number %s did not parse", arg); continue; } - if (!strncmp(arg, "--sort=", 7)) { + if (!prefixcmp(arg, "--sort=")) { struct ref_sort *s = xcalloc(1, sizeof(*s)); int len;