diff --git a/bin/ps/extern.h b/bin/ps/extern.h index dedac7ee5921..55796699d435 100644 --- a/bin/ps/extern.h +++ b/bin/ps/extern.h @@ -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; diff --git a/bin/ps/print.c b/bin/ps/print.c index 72d96cfa41e9..37d03a382821 100644 --- a/bin/ps/print.c +++ b/bin/ps/print.c @@ -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); diff --git a/bin/ps/ps.c b/bin/ps/ps.c index 324ff6bbff16..7d5aaeebbd4a 100644 --- a/bin/ps/ps.c +++ b/bin/ps/ps.c @@ -58,14 +58,15 @@ static const char rcsid[] = #include #include #include +#include #include +#include #include #include #include #include #include #include -#include #include #include @@ -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 &&