[lvm-devel] [PATCH 17/19] Rename internal vg_get_property to more generic lvm_get_property.

Zdenek Kabelac zkabelac at redhat.com
Thu Sep 16 08:57:03 UTC 2010


Dne 16.9.2010 10:41, Zdenek Kabelac napsal(a):
> Dne 15.9.2010 17:36, Dave Wysochanski napsal(a):
>>  lib/report/properties.c |    4 ++--
>>  lib/report/properties.h |    2 +-
>>  liblvm/lvm_vg.c         |    2 +-
>>  3 files changed, 4 insertions(+), 4 deletions(-)
>>
>> diff --git a/lib/report/properties.c b/lib/report/properties.c
>> index 0b80593..95da8ab 100644
>> --- a/lib/report/properties.c
>> +++ b/lib/report/properties.c
>> @@ -262,7 +262,7 @@ struct lvm_property_type _properties[] = {
>>  #undef FIELD
>>  
>>  
>> -int vg_get_property(struct volume_group *vg, struct lvm_property_type *prop)
>> +int lvm_get_property(void *obj, struct lvm_property_type *prop)
> 
> Hope vg_get_property has been marked as unstable API ?
> 
> 
>>  {
>>  	struct lvm_property_type *p;
>>  
>> @@ -278,7 +278,7 @@ int vg_get_property(struct volume_group *vg, struct lvm_property_type *prop)
>>  	}
>>  
>>  	*prop = *p;
>> -	if (!p->get((void *)vg, prop)) {
>> +	if (!p->get(obj, prop)) {
>>  		return 0;
>>  	}
>>  	return 1;
>> diff --git a/lib/report/properties.h b/lib/report/properties.h
>> index 2e1381d..0a13f39 100644
>> --- a/lib/report/properties.h
>> +++ b/lib/report/properties.h
>> @@ -32,6 +32,6 @@ struct lvm_property_type {
>>  	int (*set) (void *obj, struct lvm_property_type *prop);
>>  };
>>  
>> -int vg_get_property(struct volume_group *vg, struct lvm_property_type *prop);
>> +int lvm_get_property(void *obj, struct lvm_property_type *prop);
>>  
>>  #endif
>> diff --git a/liblvm/lvm_vg.c b/liblvm/lvm_vg.c
>> index 9a72bec..98070dd 100644
>> --- a/liblvm/lvm_vg.c
>> +++ b/liblvm/lvm_vg.c
>> @@ -343,7 +343,7 @@ int lvm_vg_get_property(vg_t vg, const char *name,
>>  	struct lvm_property_type prop;
>>  
>>  	strncpy(prop.id, name, LVM_PROPERTY_NAME_LEN);
>> -	if (!vg_get_property(vg, &prop))
>> +	if (!lvm_get_property((void *)vg, &prop))
> 
> No need to add cast to (void*) - it's C not C++...
> 

In fact - do we really need this functionality ?? It's quite dangerous to
allow passing any pointer type to such global API function.

I would vote for only using separate functionality and using right types and
right function names - this C++ polymorphism in C code leads to error which
are hard to catch as compiler will not give any warning about missused typed
structure pointers.

Zdenek




More information about the lvm-devel mailing list