Date: Sat, 27 Mar 2010 18:40:02 GMT From: jhell <jhell@dataix.net> To: freebsd-standards@FreeBSD.org Subject: Re: standards/145082: Patch against w(1) & uptime(1) to use 24H time by default. Message-ID: <201003271840.o2RIe22V075211@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR standards/145082; it has been noted by GNATS. From: jhell <jhell@dataix.net> To: jhell <jhell@DataIX.net> Cc: freebsd-gnats-submit@freebsd.org Subject: Re: standards/145082: Patch against w(1) & uptime(1) to use 24H time by default. Date: Sat, 27 Mar 2010 14:15:12 -0400 On 03/27/2010 13:28, jhell wrote: >> Number: 145082 >> Category: standards >> Synopsis: Patch against w(1) & uptime(1) to use 24H time by default. >> Confidential: no >> Severity: non-critical >> Priority: medium >> Responsible: freebsd-standards >> State: open >> Quarter: >> Keywords: >> Date-Required: >> Class: change-request >> Submitter-Id: current-users >> Arrival-Date: Sat Mar 27 17:30:02 UTC 2010 >> Closed-Date: >> Last-Modified: >> Originator: jhell >> Release: FreeBSD 7.3-STABLE r205709 >> Organization: >> Environment: > FreeBSD centel.dataix.local 7.3-STABLE FreeBSD 7.3-STABLE #0 r205709M Fri Mar 26 22:00:19 EDT 2010 root@centel.dataix.local:/usr/obj/usr/src/sys/SH4500 i386 >> Description: > By default w(1) and uptime(1) use 12 hour time while the rest of the system uses 24 hour time. Example output above in uname -a and date(1) are two of the more commonly used commands that show 24 hour usage. > > Programs with a default of 24 hour output: > last(1), date(1), who(1), ls(1) > > Programs with a default of 12 hour output: > ps(1), w(1), uptime(1), others.... >> How-To-Repeat: > Old output: > > # date > Sat Mar 27 13:18:34 EDT 2010 > > # w > 1:18PM up 26 days, 4:10, 1 users, load averages: 0.00, 0.00, 0.00 > USER TTY FROM LOGIN@ IDLE WHAT > jhell p2 centel 1:13PM - w > > # uptime > 1:18PM up 26 days, 4:10, 1 users, load averages: 0.00, 0.00, 0.00 >> Fix: > New output with attached patch: > > # date > Sat Mar 27 13:18:34 EDT 2010 > > # w > 13:18 up 4:23, 1 users, load averages: 0.15, 0.24, 0.18 > USER TTY FROM LOGIN@ IDLE WHAT > jhell p2 :0.0 13:04 - w > > # uptime > 13:18 up 4:23, 1 users, load averages: 0.11, 0.19, 0.17 > > > I recommend patching any other utilities to use 24 hour time by default since this can be modified at other levels if a user still wants 12 hour format. > > Patch attached with submission follows: > > > extern.h | 2 +- > pr_time.c | 12 ++++++------ > w.c | 6 +++--- > 3 files changed, 10 insertions(+), 10 deletions(-) > > Index: usr.bin/w/pr_time.c > =================================================================== > --- usr.bin/w/pr_time.c (revision 205709) > +++ usr.bin/w/pr_time.c (working copy) > @@ -75,23 +75,23 @@ > tm.tm_year != tp.tm_year) { > /* The line below does not take DST into consideration */ > /* else if (*now / 86400 != *started / 86400) { */ > - fmt = use_ampm ? L"%a%I%p" : L"%a%H"; > + fmt = use_time24 ? L"%a%H" : L"%a%I%p"; > } > > - /* Default is hh:mm{am,pm}. */ > + /* Default is hh:mm. */ > else { > - fmt = use_ampm ? L"%l:%M%p" : L"%k:%M"; > + fmt = use_time24 ? L"%H:%M" : L"%l:%M%p"; > } > > (void)wcsftime(buf, sizeof(buf), fmt, &tp); > len = wcslen(buf); > width = wcswidth(buf, len); > if (len == width) > - (void)wprintf(L"%-7.7ls", buf); > + (void)wprintf(L" %-7.7ls", buf); > else if (width < 7) > - (void)wprintf(L"%ls%.*s", buf, 7 - width, " "); > + (void)wprintf(L" %ls%.*s", buf, 7 - width, " "); > else { > - (void)wprintf(L"%ls", buf); > + (void)wprintf(L" %ls", buf); > offset = width - 7; > } > return (offset); > Index: usr.bin/w/w.c > =================================================================== > --- usr.bin/w/w.c (revision 205709) > +++ usr.bin/w/w.c (working copy) > @@ -100,7 +100,7 @@ > int nflag; /* true if -n flag: don't convert addrs */ > int dflag; /* true if -d flag: output debug info */ > int sortidle; /* sort by idle time */ > -int use_ampm; /* use AM/PM time */ > +int use_time24; /* use 24 hour time */ > int use_comma; /* use comma as floats separator */ > char **sel_users; /* login array of particular users selected */ > > @@ -145,7 +145,7 @@ > char *dot; > > (void)setlocale(LC_ALL, ""); > - use_ampm = (*nl_langinfo(T_FMT_AMPM) != '\0'); > + use_time24 = (*nl_langinfo(T_FMT) != '\0'); > use_comma = (*nl_langinfo(RADIXCHAR) != ','); > > /* Are we w(1) or uptime(1)? */ > @@ -429,7 +429,7 @@ > * Print time of day. > */ > if (strftime(buf, sizeof(buf), > - use_ampm ? "%l:%M%p" : "%k:%M", localtime(nowp)) != 0) > + use_time24 ? "%H:%M" : "%l:%M%p", localtime(nowp)) != 0) > (void)printf("%s ", buf); > /* > * Print how long system has been up. > Index: usr.bin/w/extern.h > =================================================================== > --- usr.bin/w/extern.h (revision 205709) > +++ usr.bin/w/extern.h (working copy) > @@ -35,7 +35,7 @@ > */ > > > -extern int use_ampm; > +extern int use_time24; > > struct kinfo_proc; > int pr_attime(time_t *, time_t *); > > >> Release-Note: >> Audit-Trail: >> Unformatted: PS: The one against ps(1) is much smaller ;) Index: bin/ps/print.c =================================================================== --- bin/ps/print.c (revision 205709) +++ bin/ps/print.c (working copy) @@ -414,7 +414,7 @@ VAR *v; time_t then; struct tm *tp; - static int use_ampm = -1; + static int use_time24 = -1; char buf[100]; v = ve->var; @@ -422,16 +422,16 @@ (void)printf("%-*s", v->width, "-"); return; } - if (use_ampm < 0) - use_ampm = (*nl_langinfo(T_FMT_AMPM) != '\0'); + if (use_time24 < 0) + use_time24 = (*nl_langinfo(T_FMT) != '\0'); then = k->ki_p->ki_start.tv_sec; tp = localtime(&then); if (now - k->ki_p->ki_start.tv_sec < 24 * 3600) { (void)strftime(buf, sizeof(buf), - use_ampm ? "%l:%M%p" : "%k:%M ", tp); + use_time24 ? "%H:%M" : "%l:%M%p ", tp); } else if (now - k->ki_p->ki_start.tv_sec < 7 * 86400) { (void)strftime(buf, sizeof(buf), - use_ampm ? "%a%I%p" : "%a%H ", tp); + use_time24 ? "%a%H" : "%a%I%p ", tp); } else (void)strftime(buf, sizeof(buf), "%e%b%y", tp); (void)printf("%-*s", v->width, buf); -- jhell
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201003271840.o2RIe22V075211>