From: Omar Polo Subject: templateify gotweb_render_navs To: gameoftrees@openbsd.org Date: Thu, 15 Dec 2022 12:29:20 +0100 This turns gotweb_render_navs into gotweb_get_navs that returns only the prev/next url. In doing so I've also merged the two switches. diff ed619ca07e51b9c984c8404ca2b1153efdb14d1e cd42567e3c1e8890bce34df42b603f1a6675a110 commit - ed619ca07e51b9c984c8404ca2b1153efdb14d1e commit + cd42567e3c1e8890bce34df42b603f1a6675a110 blob - 0ce90275bab1028c73efcf66d2d59a727f7ca7c7 blob + 85a4ee7974b69efd0c56c02dc288ecf6e719fc21 --- gotwebd/gotweb.c +++ gotwebd/gotweb.c @@ -99,8 +99,6 @@ const struct got_error *gotweb_render_navs(struct requ static const struct got_error *gotweb_render_tree(struct request *); static const struct got_error *gotweb_render_branches(struct request *); -const struct got_error *gotweb_render_navs(struct request *); - static void gotweb_free_querystring(struct querystring *); static void gotweb_free_repo_dir(struct repo_dir *); @@ -679,105 +677,53 @@ const struct got_error * return NULL; } -const struct got_error * -gotweb_render_navs(struct request *c) +void +gotweb_get_navs(struct request *c, struct gotweb_url *prev, int *have_prev, + struct gotweb_url *next, int *have_next) { - const struct got_error *error = NULL; struct transport *t = c->t; struct querystring *qs = t->qs; struct server *srv = c->srv; - int r; - r = fcgi_printf(c, "
\n\n" /* #nav_prev */ - "\n"); /* #nav_next */ - fcgi_printf(c, "
\n"); /* #np_wrapper */ -done: - free(t->next_id); - t->next_id = NULL; - free(t->prev_id); - t->prev_id = NULL; - return error; } static const struct got_error * @@ -925,8 +882,7 @@ gotweb_render_index(struct request *c) t->repos_total <= srv->max_repos_display) goto done; - error = gotweb_render_navs(c); - if (error) + if (gotweb_render_navs(c->tp) == -1) goto done; done: if (sd_dent) { @@ -1085,8 +1041,7 @@ gotweb_render_commits(struct request *c) } if (t->next_id || t->prev_id) { - error = gotweb_render_navs(c); - if (error) + if (gotweb_render_navs(c->tp) == -1) goto done; } fcgi_printf(c, "\n"); /* .commits_content */ @@ -1622,8 +1577,7 @@ gotweb_render_tags(struct request *c) msg = NULL; } if (t->next_id || t->prev_id) { - error = gotweb_render_navs(c); - if (error) + if (gotweb_render_navs(c->tp) == -1) goto done; } fcgi_printf(c, "\n"); /* #tags_content */ blob - 64fce7c6d8ee3f57305034f0c0434cff991a82bd blob + 700307a1481fa9b5b991ba6ed6090d29566a7cd0 --- gotwebd/gotwebd.h +++ gotwebd/gotwebd.h @@ -436,6 +436,8 @@ const struct got_error *gotweb_get_time_str(char **, t const uint8_t *); const struct got_error *gotweb_render_content_type_file(struct request *, const uint8_t *, char *); +void gotweb_get_navs(struct request *, struct gotweb_url *, int *, + struct gotweb_url *, int *); const struct got_error *gotweb_get_time_str(char **, time_t, int); const struct got_error *gotweb_init_transport(struct transport **); const struct got_error *gotweb_escape_html(char **, const char *); @@ -455,6 +457,7 @@ int gotweb_render_briefs(struct template *); int gotweb_render_repo_table_hdr(struct template *); int gotweb_render_repo_fragment(struct template *, struct repo_dir *); int gotweb_render_briefs(struct template *); +int gotweb_render_navs(struct template *); /* parse.y */ int parse_config(const char *, struct gotwebd *); blob - 0d49898e174e9bfad77b158729eb04ab949bd736 blob + 88158c157c6d585b1e9692319e29e9bbe08f9390 --- gotwebd/pages.tmpl +++ gotwebd/pages.tmpl @@ -30,8 +30,6 @@ const struct got_error *gotweb_render_navs(struct requ #include "gotwebd.h" #include "tmpl.h" -const struct got_error *gotweb_render_navs(struct request *); - static int gotweb_render_age(struct template *tp, time_t time, int ref_tm) { @@ -296,7 +294,41 @@ gotweb_render_age(struct template *tp, time_t time, in
{{ end }} {{ if t->next_id || t->prev_id }} - {! gotweb_render_navs(c); !} + {{ render gotweb_render_navs(tp) }} {{ end }} {{ end }} + +{{ define gotweb_render_navs(struct template *tp) }} +{! + struct request *c = tp->tp_arg; + struct transport *t = c->t; + struct gotweb_url prev, next; + int have_prev, have_next; + + gotweb_get_navs(c, &prev, &have_prev, &next, &have_next); +!} +
+ + +
+{{ finally }} +{! + free(t->next_id); + t->next_id = NULL; + free(t->prev_id); + t->prev_id = NULL; +!} +{{ end }}