From d99c213af9c4a28c9232fe186fd0b10ea9b063f7 Mon Sep 17 00:00:00 2001 From: Craig Small Date: Wed, 9 Nov 2022 21:02:09 +1100 Subject: [PATCH] w: Show time with TIME_BITS=64 on 32bit env Thanks to @kabe-gl for this patch. w command shows ????? for LOGIN@ column when compiled on 32bit environment with -D_TIME_BITS=64. References: #256 Signed-off-by: Craig Small --- NEWS | 1 + src/w.c | 14 +++++++------- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/NEWS b/NEWS index cdbfef94..cdd02a6f 100644 --- a/NEWS +++ b/NEWS @@ -2,6 +2,7 @@ procps-ng-NEXT --------------- * library Handle absent 'core_id' in /proc/cpuinfo + * w: Show time with D_TIME_BITS=64 on 32bit env issue #256 procps-ng-4.0.1 --------------- diff --git a/src/w.c b/src/w.c index 8b371798..63f81c72 100644 --- a/src/w.c +++ b/src/w.c @@ -251,34 +251,34 @@ static void print_time_ival7(time_t t, int centi_sec, FILE * fout) if (oldstyle) { if (t >= 48 * 60 * 60) /* > 2 days */ - fprintf(fout, _(" %2ludays"), t / (24 * 60 * 60)); + fprintf(fout, _(" %2lludays"), (unsigned long long)t / (24 * 60 * 60)); else if (t >= 60 * 60) /* > 1 hour */ /* Translation Hint: Hours:Minutes */ - fprintf(fout, " %2lu:%02u ", t / (60 * 60), + fprintf(fout, " %2llu:%02u ", (unsigned long long)t / (60 * 60), (unsigned)((t / 60) % 60)); else if (t > 60) /* > 1 minute */ /* Translation Hint: Minutes:Seconds */ - fprintf(fout, _(" %2lu:%02um"), t / 60, (unsigned)t % 60); + fprintf(fout, _(" %2llu:%02um"), (unsigned long long)t / 60, (unsigned)t % 60); else fprintf(fout, " "); } else { if (t >= 48 * 60 * 60) /* 2 days or more */ - fprintf(fout, _(" %2ludays"), t / (24 * 60 * 60)); + fprintf(fout, _(" %2lludays"), (unsigned long long)t / (24 * 60 * 60)); else if (t >= 60 * 60) /* 1 hour or more */ /* Translation Hint: Hours:Minutes */ - fprintf(fout, _(" %2lu:%02um"), t / (60 * 60), + fprintf(fout, _(" %2llu:%02um"), (unsigned long long)t / (60 * 60), (unsigned)((t / 60) % 60)); else if (t > 60) /* 1 minute or more */ /* Translation Hint: Minutes:Seconds */ - fprintf(fout, " %2lu:%02u ", t / 60, (unsigned)t % 60); + fprintf(fout, " %2llu:%02u ", (unsigned long long)t / 60, (unsigned)t % 60); else /* Translation Hint: Seconds:Centiseconds */ - fprintf(fout, _(" %2lu.%02us"), t, centi_sec); + fprintf(fout, _(" %2llu.%02us"), (unsigned long long)t, centi_sec); } }