From: Tracey Emery Subject: Re: templateify gotweb_render_navs To: Omar Polo Cc: gameoftrees@openbsd.org Date: Fri, 16 Dec 2022 15:15:09 -0700 On Thu, Dec 15, 2022 at 12:29:20PM +0100, Omar Polo wrote: > 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. ok > > 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 }} > -- Tracey Emery