Subject: bug#26783: Discrepancy with uptime added as part of "[PATCH] Document uptime."

From: Prateek saxena <[email-masked]>
Date: Thu, 11 May 2017 11:10:48 +0530

Hi Pádraig,

Thanks for replying.

When we can expect the fix.

Can we use the attached patch as workaround for time been. whether it
would be sufficient.

Thanks & Regards,
Prateek

On Sat, May 6, 2017 at 1:48 AM, Pádraig Brady <[email-masked]> wrote:
> On 04/05/17 23:03, Prateek saxena wrote:
>> Hi,
>>
>> We found some discrepancy with uptime utility of coreutils package.
>>
>> In my system using coreutils package with version 8.26, uptime output prints
>> PM/AM for 24 hour time format.
>>
>> Logs:
>> ------------------------------------------------------------------------------------
>> # uptime
>>  17:19pm  up 6 days 10:02,  1 user,  load average: 0.18, 0.14, 0.10
>>
>> # uptime --version
>> uptime (GNU coreutils) 8.26
>> Copyright (C) 2016 Free Software Foundation, Inc.
>>
>> License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html
>>> .
>> This is free software: you are free to change and redistribute it.
>> There is NO WARRANTY, to the extent permitted by law.
>> Written by Joseph Arceneaux, David MacKenzie, and Kaveh Ghazi
>> ------------------------------------------------------------------------------------
>>
>> The time is in 24 hours format and PM is not expected to be printed.
>> We can see latest patch for uptime utility, use of fprintftime to print the
>> time
>>  (http://lists.gnu.org/archive/html/bug-coreutils/2008-08/msg00035.html).
>>
>> ------------------------------------------------------------------------------------
>> diff --git a/src/uptime.c b/src/uptime.c
>> index 9e3384f..5bdc230 100644
>> --- a/src/uptime.c
>> +++ b/src/uptime.c
>> @@ -36,6 +36,7 @@
>>  #include "long-options.h"
>>  #include "quote.h"
>>  #include "readutmp.h"
>> +#include "fprintftime.h"
>>
>>  /* The official name of this program (e.g., no `g' prefix).  */
>>  #define PROGRAM_NAME "uptime"
>> @@ -126,12 +127,10 @@ print_uptime (size_t n, const STRUCT_UTMP *this)
>>    uphours = (uptime - (updays * 86400)) / 3600;
>>    upmins = (uptime - (updays * 86400) - (uphours * 3600)) / 60;
>>    tmn = localtime (&time_now);
>> +  /* procps' version of uptime also prints the seconds field, but
>> +     previous versions of coreutils don't. */
>>    if (tmn)
>> -    printf (_(" %2d:%02d%s  up "),
>> -           ((tmn->tm_hour % 12) == 0 ? 12 : tmn->tm_hour % 12),
>> -           /* FIXME: use strftime, not am, pm.  Uli reports that
>> -              the german translation is meaningless.  */
>> -           tmn->tm_min, (tmn->tm_hour < 12 ? _("am") : _("pm")));
>> +    fprintftime (stdout, _(" %H:%M%P  up "), tmn, 0, 0);
>>    else
>>      printf (_(" ??:????  up "));
>>    if (uptime == (time_t) -1)
>> -----------------------------------------------------------------------------------
>>
>> Can you please verify whether PM/AM should be avoided from uptime print.
>>
>> Please find attach patch to remove AM/PM from the print for your reference.
>>
>> Please provide your inputs for same.
>>
>> Thanks & Regards,
>> Prateek
>>
>
>
> Nice catch.
> I'm happy to simplify and switch to 24 hour
> (which also matches procps-ng normally used on Linux)
>
> thanks
> Pádraig