From 0f0ab148c6d444316af10e6b4c7a60630fed45d3 Mon Sep 17 00:00:00 2001 From: Stefan Naewe Date: Fri, 1 Aug 2008 14:54:38 +0200 Subject: Added `local-time` option to cgitrc When `local-time` is set, commit, tag and patch timestamps will be printed in the servers timezone. Also, regardless of the value of `local-time`, these timestamps will now always show the timezone. Signed-off-by: Stefan Naewe Signed-off-by: Lars Hjemli --- cgit.c | 3 +++ cgit.h | 3 ++- ui-commit.c | 4 ++-- ui-patch.c | 2 +- ui-shared.c | 11 +++++++---- ui-shared.h | 2 +- ui-tag.c | 2 +- 7 files changed, 17 insertions(+), 10 deletions(-) diff --git a/cgit.c b/cgit.c index e2d5edb..f49fffa 100644 --- a/cgit.c +++ b/cgit.c @@ -87,6 +87,8 @@ void config_cb(const char *name, const char *value) ctx.cfg.robots = xstrdup(value); else if (!strcmp(name, "clone-prefix")) ctx.cfg.clone_prefix = xstrdup(value); + else if (!strcmp(name, "local-time")) + ctx.cfg.local_time = atoi(value); else if (!strcmp(name, "repo.group")) ctx.cfg.repo_group = xstrdup(value); else if (!strcmp(name, "repo.url")) @@ -167,6 +169,7 @@ static void prepare_context(struct cgit_context *ctx) ctx->cfg.cache_static_ttl = -1; ctx->cfg.css = "/cgit.css"; ctx->cfg.logo = "/git-logo.png"; + ctx->cfg.local_time = 0; ctx->cfg.max_repo_count = 50; ctx->cfg.max_commit_count = 50; ctx->cfg.max_lock_attempts = 5; diff --git a/cgit.h b/cgit.h index 7881aca..b01fa31 100644 --- a/cgit.h +++ b/cgit.h @@ -22,7 +22,7 @@ /* * Dateformats used on misc. pages */ -#define FMT_LONGDATE "%Y-%m-%d %H:%M:%S" +#define FMT_LONGDATE "%Y-%m-%d %H:%M:%S (%Z)" #define FMT_SHORTDATE "%Y-%m-%d" @@ -148,6 +148,7 @@ struct cgit_config { int enable_index_links; int enable_log_filecount; int enable_log_linecount; + int local_time; int max_repo_count; int max_commit_count; int max_lock_attempts; diff --git a/ui-commit.c b/ui-commit.c index 4bbb391..a6a85a4 100644 --- a/ui-commit.c +++ b/ui-commit.c @@ -40,14 +40,14 @@ void cgit_print_commit(char *hex) html(" "); html_txt(info->author_email); html(""); - cgit_print_date(info->author_date, FMT_LONGDATE); + cgit_print_date(info->author_date, FMT_LONGDATE, ctx.cfg.local_time); html("\n"); html("committer"); html_txt(info->committer); html(" "); html_txt(info->committer_email); html(""); - cgit_print_date(info->committer_date, FMT_LONGDATE); + cgit_print_date(info->committer_date, FMT_LONGDATE, ctx.cfg.local_time); html("\n"); html("commit"); tmp = sha1_to_hex(commit->object.sha1); diff --git a/ui-patch.c b/ui-patch.c index c1c4ce3..e60877d 100644 --- a/ui-patch.c +++ b/ui-patch.c @@ -103,7 +103,7 @@ void cgit_print_patch(char *hex) htmlf("From %s Mon Sep 17 00:00:00 2001\n", sha1_to_hex(sha1)); htmlf("From: %s%s\n", info->author, info->author_email); html("Date: "); - cgit_print_date(info->author_date, "%a, %d %b %Y %H:%M:%S %z%n"); + cgit_print_date(info->author_date, "%a, %d %b %Y %H:%M:%S %z%n", ctx.cfg.local_time); htmlf("Subject: %s\n\n", info->subject); if (info->msg && *info->msg) { htmlf("%s", info->msg); diff --git a/ui-shared.c b/ui-shared.c index 4280a70..197ee37 100644 --- a/ui-shared.c +++ b/ui-shared.c @@ -353,14 +353,17 @@ void cgit_object_link(struct object *obj) html_link_close(); } -void cgit_print_date(time_t secs, char *format) +void cgit_print_date(time_t secs, char *format, int local_time) { char buf[64]; struct tm *time; if (!secs) return; - time = gmtime(&secs); + if(local_time) + time = localtime(&secs); + else + time = gmtime(&secs); strftime(buf, sizeof(buf)-1, format, time); html_txt(buf); } @@ -375,7 +378,7 @@ void cgit_print_age(time_t t, time_t max_relative, char *format) secs = now - t; if (secs > max_relative && max_relative >= 0) { - cgit_print_date(t, format); + cgit_print_date(t, format, ctx.cfg.local_time); return; } @@ -453,7 +456,7 @@ void cgit_print_docend() html_include(ctx.cfg.footer); else { html("\n"); } diff --git a/ui-shared.h b/ui-shared.h index 3005d30..07da4b4 100644 --- a/ui-shared.h +++ b/ui-shared.h @@ -27,7 +27,7 @@ extern void cgit_diff_link(char *name, char *title, char *class, char *head, extern void cgit_object_link(struct object *obj); extern void cgit_print_error(char *msg); -extern void cgit_print_date(time_t secs, char *format); +extern void cgit_print_date(time_t secs, char *format, int local_time); extern void cgit_print_age(time_t t, time_t max_relative, char *format); extern void cgit_print_http_headers(struct cgit_context *ctx); extern void cgit_print_docstart(struct cgit_context *ctx); diff --git a/ui-tag.c b/ui-tag.c index ab2c66d..b4db32e 100644 --- a/ui-tag.c +++ b/ui-tag.c @@ -57,7 +57,7 @@ void cgit_print_tag(char *revname) revname, sha1_to_hex(sha1)); if (info->tagger_date > 0) { html("Tag date"); - cgit_print_date(info->tagger_date, FMT_LONGDATE); + cgit_print_date(info->tagger_date, FMT_LONGDATE, ctx.cfg.local_time); html("\n"); } if (info->tagger) { -- cgit