On 02/08/2011 08:02 PM, Osier Yang wrote:
于 2011年02月09日 01:12, Eric Blake 写道:
> On 02/08/2011 03:30 AM, Osier Yang wrote:
>> +bool
>> +virIsDevMapperDevice(const char *devname)
>> +{
>> + struct stat buf;
>> +
>> + if (devname&&
>> + !stat(devname,&buf)&&
>
> One other thing - the check for devname being non-NULL is not
> necessary...
>
>> +bool virIsDevMapperDevice(const char *devname);
>
> if you add ATTRIBUTE_NONNULL(1) to this declaration. Given that the
> only use of this new function to date doesn't pass a NULL pointer, we
> might as well make that part of the API.
>
Yeah, it's more reasonable to add ATTRIBUTE_NONNULL to this internal
function, but do we need to make change on the API? I'm not sure
if it will introduce some problem.
Adding ATTRIBUTE_NONNULL _is_ the API change I was referring to - it
simplifies the implementation, and puts a contract on the caller to not
pass NULL. We can always remove it later (and re-instate the explicit
null check in the implementation) if we find a reason to, since the
function is internal.
--
Eric Blake eblake(a)redhat.com +1-801-349-2682
Libvirt virtualization library
http://libvirt.org