]> git.cameronkatri.com Git - cgit.git/blobdiff - ui-stats.c
filters: port syntax-highlighting.py to python 3.x
[cgit.git] / ui-stats.c
index bc273088a4ee2a34daf9da2a33b5578c2255740a..74ce0f7197a6597667995be3d7096848c9a68174 100644 (file)
@@ -125,7 +125,7 @@ static char *pretty_year(struct tm *tm)
        return fmt("%d", tm->tm_year + 1900);
 }
 
-struct cgit_period periods[] = {
+static const struct cgit_period periods[] = {
        {'w', "week", 12, 4, trunc_week, dec_week, inc_week, pretty_week},
        {'m', "month", 12, 4, trunc_month, dec_month, inc_month, pretty_month},
        {'q', "quarter", 12, 4, trunc_quarter, dec_quarter, inc_quarter, pretty_quarter},
@@ -136,7 +136,7 @@ struct cgit_period periods[] = {
  * and update the period pointer to the correcsponding struct.
  * If no matching code is found, return 0.
  */
-int cgit_find_stats_period(const char *expr, struct cgit_period **period)
+int cgit_find_stats_period(const char *expr, const struct cgit_period **period)
 {
        int i;
        char code = '\0';
@@ -165,7 +165,7 @@ const char *cgit_find_stats_periodname(int idx)
 }
 
 static void add_commit(struct string_list *authors, struct commit *commit,
-       struct cgit_period *period)
+       const struct cgit_period *period)
 {
        struct commitinfo *info;
        struct string_list_item *author, *item;
@@ -209,7 +209,7 @@ static int cmp_total_commits(const void *a1, const void *a2)
 /* Walk the commit DAG and collect number of commits per author per
  * timeperiod into a nested string_list collection.
  */
-static struct string_list collect_stats(struct cgit_period *period)
+static struct string_list collect_stats(const struct cgit_period *period)
 {
        struct string_list authors;
        struct rev_info rev;
@@ -244,8 +244,9 @@ static struct string_list collect_stats(struct cgit_period *period)
        memset(&authors, 0, sizeof(authors));
        while ((commit = get_revision(&rev)) != NULL) {
                add_commit(&authors, commit, period);
-               free(commit->buffer);
+               free_commit_buffer(commit);
                free_commit_list(commit->parents);
+               commit->parents = NULL;
        }
        return authors;
 }
@@ -255,7 +256,7 @@ static void print_combined_authorrow(struct string_list *authors, int from,
                                     const char *leftclass,
                                     const char *centerclass,
                                     const char *rightclass,
-                                    struct cgit_period *period)
+                                    const struct cgit_period *period)
 {
        struct string_list_item *author;
        struct authorstat *authorstat;
@@ -294,7 +295,7 @@ static void print_combined_authorrow(struct string_list *authors, int from,
 }
 
 static void print_authors(struct string_list *authors, int top,
-                         struct cgit_period *period)
+                         const struct cgit_period *period)
 {
        struct string_list_item *author;
        struct authorstat *authorstat;
@@ -362,7 +363,7 @@ static void print_authors(struct string_list *authors, int top,
 void cgit_show_stats(void)
 {
        struct string_list authors;
-       struct cgit_period *period;
+       const struct cgit_period *period;
        int top, i;
        const char *code = "w";
 
@@ -371,11 +372,13 @@ void cgit_show_stats(void)
 
        i = cgit_find_stats_period(code, &period);
        if (!i) {
-               cgit_print_error("Unknown statistics type: %c", code[0]);
+               cgit_print_error_page(404, "Not found",
+                       "Unknown statistics type: %c", code[0]);
                return;
        }
        if (i > ctx.repo->max_stats) {
-               cgit_print_error("Statistics type disabled: %s", period->name);
+               cgit_print_error_page(400, "Bad request",
+                       "Statistics type disabled: %s", period->name);
                return;
        }
        authors = collect_stats(period);
@@ -386,6 +389,7 @@ void cgit_show_stats(void)
        if (!top)
                top = 10;
 
+       cgit_print_layout_start();
        html("<div class='cgit-panel'>");
        html("<b>stat options</b>");
        html("<form method='get' action=''>");
@@ -420,5 +424,6 @@ void cgit_show_stats(void)
        }
        html("</h2>");
        print_authors(&authors, top, period);
+       cgit_print_layout_end();
 }