[parted-devel] Problem with Linux "3.0"

Jim Meyering jim at meyering.net
Tue Jun 7 06:21:42 UTC 2011


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.



More information about the parted-devel mailing list