commit - 6cdf29f9353bcea609dcbab90131634430ac5a18
commit + cb93ab40659f5d64c7a4f56919d203efa2d8a565
blob - 50bc0de73e23d3f59b30e2eecb24a96fbc5ce5bf
blob + 78b5a2623d4338f679a254321a0a0647a5ff85fd
--- gotwebd/got_operations.c
+++ gotwebd/got_operations.c
}
const struct got_error *
-got_get_repo_age(char **repo_age, struct request *c,
- const char *refname, int ref_tm)
+got_get_repo_age(time_t *repo_age, struct request *c, const char *refname)
{
const struct got_error *error = NULL;
struct server *srv = c->srv;
struct got_reflist_entry *re;
time_t committer_time = 0, cmp_time = 0;
- *repo_age = NULL;
TAILQ_INIT(&refs);
if (srv->show_repo_age == 0)
break;
}
- if (cmp_time != 0) {
- committer_time = cmp_time;
- error = gotweb_get_time_str(repo_age, committer_time, ref_tm);
- }
+ if (cmp_time != 0)
+ *repo_age = cmp_time;
done:
got_ref_list_free(&refs);
return error;
blob - 47ec70cd7f1ff4721930aa83409682012b4e6d60
blob + de3c351cbe1ced66e0a1e55b0df7afae4fe2b894
--- gotwebd/gotweb.c
+++ gotwebd/gotweb.c
free(repo_dir->owner);
free(repo_dir->description);
free(repo_dir->url);
- free(repo_dir->age);
free(repo_dir->path);
}
free(repo_dir);
error = got_get_repo_owner(&repo_dir->owner, c);
if (error)
goto err;
- error = got_get_repo_age(&repo_dir->age, c, NULL, TM_DIFF);
+ error = got_get_repo_age(&repo_dir->age, c, NULL);
if (error)
goto err;
error = gotweb_get_clone_url(&repo_dir->url, srv, repo_dir->path,
(*repo_dir)->owner = NULL;
(*repo_dir)->description = NULL;
(*repo_dir)->url = NULL;
- (*repo_dir)->age = NULL;
(*repo_dir)->path = NULL;
return NULL;
return error;
}
-const struct got_error *
-gotweb_get_time_str(char **repo_age, time_t committer_time, int ref_tm)
+int
+gotweb_render_age(struct template *tp, time_t committer_time, int ref_tm)
{
+ struct request *c = tp->tp_arg;
struct tm tm;
long long diff_time;
const char *years = "years ago", *months = "months ago";
char datebuf[64];
size_t r;
- *repo_age = NULL;
-
switch (ref_tm) {
case TM_DIFF:
diff_time = time(NULL) - committer_time;
if (diff_time > 60 * 60 * 24 * 365 * 2) {
- if (asprintf(repo_age, "%lld %s",
+ if (fcgi_printf(c, "%lld %s",
(diff_time / 60 / 60 / 24 / 365), years) == -1)
- return got_error_from_errno("asprintf");
+ return -1;
} else if (diff_time > 60 * 60 * 24 * (365 / 12) * 2) {
- if (asprintf(repo_age, "%lld %s",
+ if (fcgi_printf(c, "%lld %s",
(diff_time / 60 / 60 / 24 / (365 / 12)),
months) == -1)
- return got_error_from_errno("asprintf");
+ return -1;
} else if (diff_time > 60 * 60 * 24 * 7 * 2) {
- if (asprintf(repo_age, "%lld %s",
+ if (fcgi_printf(c, "%lld %s",
(diff_time / 60 / 60 / 24 / 7), weeks) == -1)
- return got_error_from_errno("asprintf");
+ return -1;
} else if (diff_time > 60 * 60 * 24 * 2) {
- if (asprintf(repo_age, "%lld %s",
+ if (fcgi_printf(c, "%lld %s",
(diff_time / 60 / 60 / 24), days) == -1)
- return got_error_from_errno("asprintf");
+ return -1;
} else if (diff_time > 60 * 60 * 2) {
- if (asprintf(repo_age, "%lld %s",
+ if (fcgi_printf(c, "%lld %s",
(diff_time / 60 / 60), hours) == -1)
- return got_error_from_errno("asprintf");
+ return -1;
} else if (diff_time > 60 * 2) {
- if (asprintf(repo_age, "%lld %s", (diff_time / 60),
+ if (fcgi_printf(c, "%lld %s", (diff_time / 60),
minutes) == -1)
- return got_error_from_errno("asprintf");
- } else if (diff_time > 2) {
- if (asprintf(repo_age, "%lld %s", diff_time,
+ return -1;
+ } else if (diff_time > 2) {
+ if (fcgi_printf(c, "%lld %s", diff_time,
seconds) == -1)
- return got_error_from_errno("asprintf");
+ return -1;
} else {
- if (asprintf(repo_age, "%s", now) == -1)
- return got_error_from_errno("asprintf");
+ if (fcgi_puts(tp, now) == -1)
+ return -1;
}
break;
case TM_LONG:
if (gmtime_r(&committer_time, &tm) == NULL)
- return got_error_from_errno("gmtime_r");
+ return -1;
s = asctime_r(&tm, datebuf);
if (s == NULL)
- return got_error_from_errno("asctime_r");
+ return -1;
- if (asprintf(repo_age, "%s UTC", datebuf) == -1)
- return got_error_from_errno("asprintf");
+ if (fcgi_puts(tp, datebuf) == -1 ||
+ fcgi_puts(tp, " UTC") == -1)
+ return -1;
break;
case TM_RFC822:
if (gmtime_r(&committer_time, &tm) == NULL)
- return got_error_from_errno("gmtime_r");
+ return -1;
r = strftime(datebuf, sizeof(datebuf),
"%a, %d %b %Y %H:%M:%S GMT", &tm);
if (r == 0)
- return got_error(GOT_ERR_NO_SPACE);
+ return -1;
- *repo_age = strdup(datebuf);
- if (*repo_age == NULL)
- return got_error_from_errno("asprintf");
+ if (fcgi_puts(tp, datebuf) == -1)
+ return -1;
break;
}
- return NULL;
+ return 0;
}
blob - 3b5d3050768b060fb3d989730d25bac381291c95
blob + b84fe9526fa6e65fe446b6bdf8b85d2b63e73233
--- gotwebd/gotwebd.h
+++ gotwebd/gotwebd.h
char *owner;
char *description;
char *url;
- char *age;
+ time_t age;
char *path;
};
/* gotweb.c */
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);
+int gotweb_render_age(struct template *, time_t, int);
const struct got_error *gotweb_init_transport(struct transport **);
const char *gotweb_action_name(int);
int gotweb_render_url(struct request *, struct gotweb_url *);
/* got_operations.c */
const struct got_error *got_gotweb_flushfile(FILE *, int);
const struct got_error *got_get_repo_owner(char **, struct request *);
-const struct got_error *got_get_repo_age(char **, struct request *,
- const char *, int);
+const struct got_error *got_get_repo_age(time_t *, struct request *,
+ const char *);
const struct got_error *got_get_repo_commits(struct request *, int);
const struct got_error *got_get_repo_tags(struct request *, int);
const struct got_error *got_get_repo_heads(struct request *);
blob - 6325fdc6ed674e01b958b4cd26fb051e5c7f6a4c
blob + bd93fb21ec16695dbf29784ea4a8d2de3efdecac
--- gotwebd/pages.tmpl
+++ gotwebd/pages.tmpl
static inline int rss_tag_item(struct template *, struct repo_tag *);
static inline int rss_author(struct template *, char *);
-static int
-gotweb_render_age(struct template *tp, time_t time, int ref_tm)
-{
- const struct got_error *err;
- char *age;
- int r;
-
- err = gotweb_get_time_str(&age, time, ref_tm);
- if (err)
- return 0;
- r = tp->tp_puts(tp, age);
- free(age);
- return r;
-}
-
!}
{{ define gotweb_render_header(struct template *tp) }}
{{ end }}
{{ if srv->show_repo_age }}
<div class="index_project_age">
- {{ repo_dir->age }}
+ {{ render gotweb_render_age(tp, repo_dir->age, TM_DIFF) }}
</div>
{{ end }}
<div class="navs_wrapper">
struct request *c = tp->tp_arg;
struct querystring *qs = c->t->qs;
const char *refname;
- char *age = NULL;
+ time_t age;
struct gotweb_url url = {
.action = SUMMARY,
.index_page = -1,
refname = got_ref_get_name(re->ref);
- err = got_get_repo_age(&age, c, refname, TM_DIFF);
+ err = got_get_repo_age(&age, c, refname);
if (err) {
log_warnx("%s: %s", __func__, err->msg);
return -1;
url.headref = refname;
!}
<div class="branches_wrapper">
- <div class="branches_age">{{ age }}</div>
+ <div class="branches_age">
+ {{ render gotweb_render_age(tp, age, TM_DIFF) }}
+ </div>
<div class="branches_space"> </div>
<div class="branch">
<a href="{{ render gotweb_render_url(c, &url) }}">{{ refname }}</a>
</div>
<div class="dotted_line"></div>
</div>
-{{ finally }}
-{! free(age); !}
{{ end }}
{{ define gotweb_render_summary(struct template *tp,
{{ end }}
{{ if srv->show_repo_age }}
<div id="last_change_title">Last Change:</div>
- <div id="last_change">{{ t->repo_dir->age }}</div>
+ <div id="last_change">
+ {{ render gotweb_render_age(tp, t->repo_dir->age, TM_DIFF) }}
+ </div>
{{ end }}
{{ if srv->show_repo_cloneurl }}
<div id="cloneurl_title">Clone URL:</div>