]> git.cameronkatri.com Git - cgit.git/commitdiff
Use argv_array in place of vector
authorLukas Fleischer <cgit@cryptocrack.de>
Fri, 22 Nov 2013 12:24:52 +0000 (13:24 +0100)
committerJason A. Donenfeld <Jason@zx2c4.com>
Wed, 8 Jan 2014 13:59:38 +0000 (14:59 +0100)
Instead of using our own vector implementation, use argv_array from Git
which has been specifically designed for dynamic size argv arrays.

Drop vector.h and vector.c which are no longer needed.

Signed-off-by: Lukas Fleischer <cgit@cryptocrack.de>
cgit.mk
ui-log.c
vector.c [deleted file]
vector.h [deleted file]

diff --git a/cgit.mk b/cgit.mk
index 8af0041d78c58b1c47079af9432036a4a7cc2ed4..b5cc7a226a6b18d2d3ff33abb0faa5d23420d08e 100644 (file)
--- a/cgit.mk
+++ b/cgit.mk
@@ -50,7 +50,6 @@ CGIT_OBJ_NAMES += ui-stats.o
 CGIT_OBJ_NAMES += ui-summary.o
 CGIT_OBJ_NAMES += ui-tag.o
 CGIT_OBJ_NAMES += ui-tree.o
-CGIT_OBJ_NAMES += vector.o
 
 CGIT_OBJS := $(addprefix $(CGIT_PREFIX),$(CGIT_OBJ_NAMES))
 
index 6f1249bdea1b33185a6f27ac3fefdbe8402c9fea..3c5130a015a1e0c57983cb05abb75124f5100c27 100644 (file)
--- a/ui-log.c
+++ b/ui-log.c
@@ -10,7 +10,7 @@
 #include "ui-log.h"
 #include "html.h"
 #include "ui-shared.h"
-#include "vector.h"
+#include "argv-array.h"
 
 int files, add_lines, rem_lines;
 
@@ -288,25 +288,25 @@ void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *pattern
 {
        struct rev_info rev;
        struct commit *commit;
-       struct vector vec = VECTOR_INIT(char *);
+       struct argv_array rev_argv = ARGV_ARRAY_INIT;
        int i, columns = commit_graph ? 4 : 3;
        int must_free_tip = 0;
        struct strbuf argbuf = STRBUF_INIT;
 
-       /* First argv is NULL */
-       vector_push(&vec, NULL, 0);
+       /* rev_argv.argv[0] will be ignored by setup_revisions */
+       argv_array_push(&rev_argv, "log_rev_setup");
 
        if (!tip)
                tip = ctx.qry.head;
        tip = disambiguate_ref(tip, &must_free_tip);
-       vector_push(&vec, &tip, 0);
+       argv_array_push(&rev_argv, tip);
 
        if (grep && pattern && *pattern) {
                pattern = xstrdup(pattern);
                if (!strcmp(grep, "grep") || !strcmp(grep, "author") ||
                    !strcmp(grep, "committer")) {
                        strbuf_addf(&argbuf, "--%s=%s", grep, pattern);
-                       vector_push(&vec, &argbuf.buf, 0);
+                       argv_array_push(&rev_argv, argbuf.buf);
                }
                if (!strcmp(grep, "range")) {
                        char *arg;
@@ -315,50 +315,46 @@ void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *pattern
                         * rev-list options. Also, replace the previously
                         * pushed tip (it's no longer relevant).
                         */
-                       vec.count--;
+                       argv_array_pop(&rev_argv);
                        while ((arg = next_token(&pattern))) {
                                if (*arg == '-') {
                                        fprintf(stderr, "Bad range expr: %s\n",
                                                arg);
                                        break;
                                }
-                               vector_push(&vec, &arg, 0);
+                               argv_array_push(&rev_argv, arg);
                        }
                }
        }
        if (commit_graph) {
                static const char *graph_arg = "--graph";
                static const char *color_arg = "--color";
-               vector_push(&vec, &graph_arg, 0);
-               vector_push(&vec, &color_arg, 0);
+               argv_array_push(&rev_argv, graph_arg);
+               argv_array_push(&rev_argv, color_arg);
                graph_set_column_colors(column_colors_html,
                                        COLUMN_COLORS_HTML_MAX);
        }
 
        if (commit_sort == 1) {
                static const char *date_order_arg = "--date-order";
-               vector_push(&vec, &date_order_arg, 0);
+               argv_array_push(&rev_argv, date_order_arg);
        } else if (commit_sort == 2) {
                static const char *topo_order_arg = "--topo-order";
-               vector_push(&vec, &topo_order_arg, 0);
+               argv_array_push(&rev_argv, topo_order_arg);
        }
 
        if (path) {
                static const char *double_dash_arg = "--";
-               vector_push(&vec, &double_dash_arg, 0);
-               vector_push(&vec, &path, 0);
+               argv_array_push(&rev_argv, double_dash_arg);
+               argv_array_push(&rev_argv, path);
        }
 
-       /* Make sure the vector is NULL-terminated */
-       vector_push(&vec, NULL, 0);
-       vec.count--;
-
        init_revisions(&rev, NULL);
        rev.abbrev = DEFAULT_ABBREV;
        rev.commit_format = CMIT_FMT_DEFAULT;
        rev.verbose_header = 1;
        rev.show_root_diff = 0;
-       setup_revisions(vec.count, vec.data, &rev, NULL);
+       setup_revisions(rev_argv.argc, rev_argv.argv, &rev, NULL);
        load_ref_decorations(DECORATE_FULL_REFS);
        rev.show_decorations = 1;
        rev.grep_filter.regflags |= REG_ICASE;
diff --git a/vector.c b/vector.c
deleted file mode 100644 (file)
index 0863908..0000000
--- a/vector.c
+++ /dev/null
@@ -1,38 +0,0 @@
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include "vector.h"
-
-static int grow(struct vector *vec, int gently)
-{
-       size_t new_alloc;
-       void *new_data;
-
-       new_alloc = vec->alloc * 3 / 2;
-       if (!new_alloc)
-               new_alloc = 8;
-       new_data = realloc(vec->data, new_alloc * vec->size);
-       if (!new_data) {
-               if (gently)
-                       return ENOMEM;
-               perror("vector.c:grow()");
-               exit(1);
-       }
-       vec->data = new_data;
-       vec->alloc = new_alloc;
-       return 0;
-}
-
-int vector_push(struct vector *vec, const void *data, int gently)
-{
-       int rc;
-
-       if (vec->count == vec->alloc && (rc = grow(vec, gently)))
-               return rc;
-       if (data)
-               memmove(vec->data + vec->count * vec->size, data, vec->size);
-       else
-               memset(vec->data + vec->count * vec->size, 0, vec->size);
-       vec->count++;
-       return 0;
-}
diff --git a/vector.h b/vector.h
deleted file mode 100644 (file)
index c64eb1f..0000000
--- a/vector.h
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifndef CGIT_VECTOR_H
-#define CGIT_VECTOR_H
-
-#include <stdlib.h>
-
-struct vector {
-       size_t size;
-       size_t count;
-       size_t alloc;
-       void *data;
-};
-
-#define VECTOR_INIT(type) {sizeof(type), 0, 0, NULL}
-
-int vector_push(struct vector *vec, const void *data, int gently);
-
-#endif /* CGIT_VECTOR_H */