From 94089c8a8fa946ee870b386a40eaef204b9c9b8e Mon Sep 17 00:00:00 2001 From: florian Date: Sat, 17 Sep 2022 10:32:05 +0000 Subject: [PATCH] Show time zone name and offset in clock border if TZ environment variable is set. This is useful when running multiple clocks in different time zones. From James Russell Stickney (jrs AT outband.net), tweaked by me. Input & OK kn --- games/grdc/grdc.6 | 13 +++++++++++-- games/grdc/grdc.c | 31 ++++++++++++++++++++----------- 2 files changed, 31 insertions(+), 13 deletions(-) diff --git a/games/grdc/grdc.6 b/games/grdc/grdc.6 index 16c1fb5cd3d..16e1758c6d2 100644 --- a/games/grdc/grdc.6 +++ b/games/grdc/grdc.6 @@ -1,8 +1,8 @@ -.\" $OpenBSD: grdc.6,v 1.12 2019/02/06 15:02:01 schwarze Exp $ +.\" $OpenBSD: grdc.6,v 1.13 2022/09/17 10:32:05 florian Exp $ .\" .\" Copyright 2002 Amos Shapir. Public domain. .\" -.Dd $Mdocdate: February 6 2019 $ +.Dd $Mdocdate: September 17 2022 $ .Dt GRDC 6 .Os .Sh NAME @@ -30,6 +30,15 @@ skips seconds. Pressing the .Sq q key exits the program. +.Sh ENVIRONMENT +.Bl -tag -width Ds +.It Ev TZ +The time zone to use for displaying the time. +It is specified as a pathname relative to +.Pa /usr/share/zoneinfo . +If this variable is not set, the time zone is determined based on +.Pa /etc/localtime . +.El .Sh AUTHORS .An -nosplit .An Amos Shapir , diff --git a/games/grdc/grdc.c b/games/grdc/grdc.c index 287fb14e95f..66e5eee79e6 100644 --- a/games/grdc/grdc.c +++ b/games/grdc/grdc.c @@ -1,4 +1,4 @@ -/* $OpenBSD: grdc.c,v 1.34 2021/10/23 11:22:49 mestre Exp $ */ +/* $OpenBSD: grdc.c,v 1.35 2022/09/17 10:32:05 florian Exp $ */ /* * * Copyright 2002 Amos Shapir. Public domain. @@ -78,6 +78,9 @@ main(int argc, char *argv[]) int xbase; int ybase; int wintoosmall; + char *tz; + + tz = getenv("TZ"); scrol = wintoosmall = 0; while ((i = getopt(argc, argv, "sh")) != -1) { @@ -139,6 +142,16 @@ main(int argc, char *argv[]) alarm(n); } do { + mask = 0; + tm = localtime(&now.tv_sec); + set(tm->tm_sec % 10, 0); + set(tm->tm_sec / 10, 4); + set(tm->tm_min % 10, 10); + set(tm->tm_min / 10, 14); + set(tm->tm_hour % 10, 20); + set(tm->tm_hour / 10, 24); + set(10, 7); + set(10, 17); if (sigwinched) { sigwinched = 0; wintoosmall = 0; @@ -171,21 +184,17 @@ main(int argc, char *argv[]) move(ybase, xbase + XLENGTH); vline(ACS_VLINE, YDEPTH); + if (tz != NULL) { + move(ybase - 1, xbase); + printw("[ %s %+d ]", tz, + tm->tm_gmtoff / 60 / 60 ); + } + attrset(COLOR_PAIR(2)); } for (k = 0; k < 6; k++) old[k] = 0; } - mask = 0; - tm = localtime(&now.tv_sec); - set(tm->tm_sec % 10, 0); - set(tm->tm_sec / 10, 4); - set(tm->tm_min % 10, 10); - set(tm->tm_min / 10, 14); - set(tm->tm_hour % 10, 20); - set(tm->tm_hour / 10, 24); - set(10, 7); - set(10, 17); if (wintoosmall) { move(0, 0); printw("%02d:%02d:%02d", tm->tm_hour, tm->tm_min, -- 2.20.1