Use AM/PM time only when available in locale

This commit is contained in:
Andrey A. Chernov 2001-03-02 23:53:36 +00:00
parent 5f2de0a78a
commit 080175194f
3 changed files with 9 additions and 4 deletions

View File

@ -41,7 +41,7 @@ struct varent;
extern fixpt_t ccpu;
extern int eval, fscale, mempages, nlistread, rawcpu, cflag;
extern int sumrusage, termwidth, totwidth;
extern int sumrusage, termwidth, totwidth, use_ampm;
extern VAR var[];
extern VARENT *vhead;

View File

@ -366,9 +366,11 @@ started(k, ve)
if (!now)
(void)time(&now);
if (now - k->ki_p->ki_start.tv_sec < 24 * 3600) {
(void)strftime(buf, sizeof(buf) - 1, "%l:%M%p", tp);
(void)strftime(buf, sizeof(buf) - 1,
use_ampm ? "%l:%M%p" : "%k:%M ", tp);
} else if (now - k->ki_p->ki_start.tv_sec < 7 * 86400) {
(void)strftime(buf, sizeof(buf) - 1, "%a%I%p", tp);
(void)strftime(buf, sizeof(buf) - 1,
use_ampm ? "%a%I%p" : "%a%H ", tp);
} else
(void)strftime(buf, sizeof(buf) - 1, "%e%b%y", tp);
(void)printf("%-*s", v->width, buf);

View File

@ -58,14 +58,15 @@ static const char rcsid[] =
#include <errno.h>
#include <fcntl.h>
#include <kvm.h>
#include <langinfo.h>
#include <limits.h>
#include <locale.h>
#include <nlist.h>
#include <paths.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <locale.h>
#include <pwd.h>
#include <utmp.h>
@ -82,6 +83,7 @@ int rawcpu; /* -C */
int sumrusage; /* -S */
int termwidth; /* width of screen (0 == infinity) */
int totwidth; /* calculated width of requested variables */
int use_ampm; /* use AM/PM time */
static int needuser, needcomm, needenv;
#if defined(LAZY_PS)
@ -129,6 +131,7 @@ main(argc, argv)
char *nlistf, *memf, *swapf, errbuf[_POSIX2_LINE_MAX];
(void) setlocale(LC_ALL, "");
use_ampm = (*nl_langinfo(T_FMT_AMPM) != '\0');
if ((ioctl(STDOUT_FILENO, TIOCGWINSZ, (char *)&ws) == -1 &&
ioctl(STDERR_FILENO, TIOCGWINSZ, (char *)&ws) == -1 &&