[parted-devel] Problem with Linux "3.0"

H. Peter Anvin hpa at zytor.com
Tue Jun 7 15:45:15 UTC 2011


On 06/06/2011 11:21 PM, Jim Meyering wrote:
> H. Peter Anvin wrote:
>> On 06/05/2011 09:17 AM, Jim Meyering wrote:
>>>
>>> diff --git a/libparted/arch/linux.c b/libparted/arch/linux.c
>>> index aeaf98f..111816c 100644
>>> --- a/libparted/arch/linux.c
>>> +++ b/libparted/arch/linux.c
>>> @@ -610,7 +610,11 @@ _get_linux_version ()
>>>
>>>          if (uname (&uts))
>>>                  return kver = 0;
>>> -        if (sscanf (uts.release, "%u.%u.%u", &major, &minor, &teeny) != 3)
>>> +        if (sscanf (uts.release, "%u.%u.%u", &major, &minor, &teeny) == 3)
>>> +                ; /* ok */
>>> +        else if (sscanf (uts.release, "%u.%u", &major, &minor) == 2)
>>> +                teeny = 0;
>>> +        else
>>>                  return kver = 0;
>>>
>>
>> How about:
>>
>> major = minor = teeny = 0;
>> sscanf(uts.release, "%u.%u.%u", &major, &minor, &teeny);
>>
>> return kver = KERNEL_VERSION(major, minor, teeny);
> 
> Thanks, that would work, modulo an invalid uts.release -- admittedly
> unlikely -- but I prefer not to ignore sscanf's return value.

Uh... in that case you set the return value to zero anyway!

	-hpa

-- 
H. Peter Anvin, Intel Open Source Technology Center
I work for Intel.  I don't speak on their behalf.




More information about the parted-devel mailing list