grep: add a test asserting that --perl-regexp dies when !PCRE
[gitweb.git] / builtin / tag.c
index dbc6f5b74b6c64153bc8e1cc5e24830586cbcfe1..bdf1e88e93a61b6cbe840f4c8dd4563c1e13e337 100644 (file)
@@ -72,25 +72,22 @@ static int for_each_tag_name(const char **argv, each_tag_name_fn fn,
                             const void *cb_data)
 {
        const char **p;
-       char ref[PATH_MAX];
+       struct strbuf ref = STRBUF_INIT;
        int had_error = 0;
        unsigned char sha1[20];
 
        for (p = argv; *p; p++) {
-               if (snprintf(ref, sizeof(ref), "refs/tags/%s", *p)
-                                       >= sizeof(ref)) {
-                       error(_("tag name too long: %.*s..."), 50, *p);
-                       had_error = 1;
-                       continue;
-               }
-               if (read_ref(ref, sha1)) {
+               strbuf_reset(&ref);
+               strbuf_addf(&ref, "refs/tags/%s", *p);
+               if (read_ref(ref.buf, sha1)) {
                        error(_("tag '%s' not found."), *p);
                        had_error = 1;
                        continue;
                }
-               if (fn(*p, ref, sha1, cb_data))
+               if (fn(*p, ref.buf, sha1, cb_data))
                        had_error = 1;
        }
+       strbuf_release(&ref);
        return had_error;
 }
 
@@ -231,26 +228,22 @@ static void create_tag(const unsigned char *object, const char *tag,
                       unsigned char *prev, unsigned char *result)
 {
        enum object_type type;
-       char header_buf[1024];
-       int header_len;
+       struct strbuf header = STRBUF_INIT;
        char *path = NULL;
 
        type = sha1_object_info(object, NULL);
        if (type <= OBJ_NONE)
            die(_("bad object type."));
 
-       header_len = snprintf(header_buf, sizeof(header_buf),
-                         "object %s\n"
-                         "type %s\n"
-                         "tag %s\n"
-                         "tagger %s\n\n",
-                         sha1_to_hex(object),
-                         typename(type),
-                         tag,
-                         git_committer_info(IDENT_STRICT));
-
-       if (header_len > sizeof(header_buf) - 1)
-               die(_("tag header too big."));
+       strbuf_addf(&header,
+                   "object %s\n"
+                   "type %s\n"
+                   "tag %s\n"
+                   "tagger %s\n\n",
+                   sha1_to_hex(object),
+                   typename(type),
+                   tag,
+                   git_committer_info(IDENT_STRICT));
 
        if (!opt->message_given) {
                int fd;
@@ -288,7 +281,8 @@ static void create_tag(const unsigned char *object, const char *tag,
        if (!opt->message_given && !buf->len)
                die(_("no tag message?"));
 
-       strbuf_insert(buf, 0, header_buf, header_len);
+       strbuf_insert(buf, 0, header.buf, header.len);
+       strbuf_release(&header);
 
        if (build_tag_object(buf, opt->sign, result) < 0) {
                if (path)
@@ -315,7 +309,7 @@ static void create_reflog_msg(const unsigned char *sha1, struct strbuf *sb)
        if (rla) {
                strbuf_addstr(sb, rla);
        } else {
-               strbuf_addstr(sb, _("tag: tagging "));
+               strbuf_addstr(sb, "tag: tagging ");
                strbuf_add_unique_abbrev(sb, sha1, DEFAULT_ABBREV);
        }
 
@@ -323,14 +317,14 @@ static void create_reflog_msg(const unsigned char *sha1, struct strbuf *sb)
        type = sha1_object_info(sha1, NULL);
        switch (type) {
        default:
-               strbuf_addstr(sb, _("object of unknown type"));
+               strbuf_addstr(sb, "object of unknown type");
                break;
        case OBJ_COMMIT:
                if ((buf = read_sha1_file(sha1, &type, &size)) != NULL) {
                        subject_len = find_commit_subject(buf, &subject_start);
                        strbuf_insert(sb, sb->len, subject_start, subject_len);
                } else {
-                       strbuf_addstr(sb, _("commit object"));
+                       strbuf_addstr(sb, "commit object");
                }
                free(buf);
 
@@ -338,13 +332,13 @@ static void create_reflog_msg(const unsigned char *sha1, struct strbuf *sb)
                        strbuf_addf(sb, ", %s", show_date(c->date, 0, DATE_MODE(SHORT)));
                break;
        case OBJ_TREE:
-               strbuf_addstr(sb, _("tree object"));
+               strbuf_addstr(sb, "tree object");
                break;
        case OBJ_BLOB:
-               strbuf_addstr(sb, _("blob object"));
+               strbuf_addstr(sb, "blob object");
                break;
        case OBJ_TAG:
-               strbuf_addstr(sb, _("other tag object"));
+               strbuf_addstr(sb, "other tag object");
                break;
        }
        strbuf_addch(sb, ')');