[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: readutmp: Non-portable UT_PID use.
From: |
Jim Meyering |
Subject: |
Re: readutmp: Non-portable UT_PID use. |
Date: |
Thu, 06 Sep 2012 07:59:08 +0200 |
Eric Blake wrote:
> On 09/05/2012 02:08 PM, Mats Erik Andersson wrote:
>> Dear all,
>>
>> the module readutmp is broken for the standard use
>>
>> read_utmp(..., READ_UTMP_USER_PROCESS | READ_UTMP_CHECK_PIDS)
>>
>> for all releases of FreeBSD until 8.3, and all OpenBSD ever released.
>
> Thanks for the report.
>
>>
>>>From 60fcbc2763d6b657c62b921ed263fbd5a0794df6 Mon Sep 17 00:00:00 2001
>> From: Mats Erik Andersson <address@hidden>
>> Date: Wed, 5 Sep 2012 21:51:39 +0200
>> Subject: [PATCH] readutmp.c: Portability improved UT_PID use.
>>
>> * lib/readutmp.c (desirable_utmp_entry) <READ_UTMP_CHECK_PIDS>:
>> Use `UT_PID (u) > 0' as absolute condition.
>
> I like this version better, as we like avoiding in-function #ifdef when
> possible. I'll push it shortly, with one tweak...
>
>> ---
>> lib/readutmp.c | 4 ++--
>> 1 files changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/lib/readutmp.c b/lib/readutmp.c
>> index f89dd68..2ac803b 100644
>> --- a/lib/readutmp.c
>> +++ b/lib/readutmp.c
>> @@ -69,8 +69,8 @@ desirable_utmp_entry (STRUCT_UTMP const *u, int options)
>> return false;
>> if ((options & READ_UTMP_CHECK_PIDS)
>> && user_proc
>> - && (UT_PID (u) <= 0
>> - || (kill (UT_PID (u), 0) < 0 && errno == ESRCH)))
>> + && UT_PID (u) > 0
>
> Jim likes favoring < over >, so I'm swapping this to '0 < UT_PID (u)'.
Thanks Mats and Eric. That looks fine.