[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