2010-02-24 21:16:54 +03:00
/*
* Copyright ( C ) 2008 , 2010 Red Hat , Inc . All rights reserved .
*
* This file is part of LVM2 .
*
* This copyrighted material is made available to anyone wishing to use ,
* modify , copy , or redistribute it subject to the terms and conditions
* of the GNU Lesser General Public License v .2 .1 .
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program ; if not , write to the Free Software Foundation ,
* Inc . , 59 Temple Place , Suite 330 , Boston , MA 02111 - 1307 USA
*/
2010-07-09 20:57:34 +04:00
# include "lvm2app.h"
2010-02-24 21:16:54 +03:00
# include "lvm_misc.h"
2010-07-09 20:57:34 +04:00
# include "lib.h"
2010-10-25 18:08:43 +04:00
# include "properties.h"
2010-02-24 21:16:54 +03:00
struct dm_list * tag_list_copy ( struct dm_pool * p , struct dm_list * tag_list )
{
struct dm_list * list ;
lvm_str_list_t * lsl ;
struct str_list * sl ;
if ( ! ( list = dm_pool_zalloc ( p , sizeof ( * list ) ) ) ) {
log_errno ( ENOMEM , " Memory allocation fail for dm_list. " ) ;
return NULL ;
}
dm_list_init ( list ) ;
dm_list_iterate_items ( sl , tag_list ) {
if ( ! ( lsl = dm_pool_zalloc ( p , sizeof ( * lsl ) ) ) ) {
log_errno ( ENOMEM ,
" Memory allocation fail for lvm_lv_list. " ) ;
return NULL ;
}
if ( ! ( lsl - > str = dm_pool_strdup ( p , sl - > str ) ) ) {
log_errno ( ENOMEM ,
" Memory allocation fail for lvm_lv_list->str. " ) ;
return NULL ;
}
dm_list_add ( list , & lsl - > list ) ;
}
return list ;
}
2010-10-25 18:08:43 +04:00
struct lvm_property_value get_property ( const pv_t pv , const vg_t vg ,
const lv_t lv , const char * name )
{
struct lvm_property_type prop ;
struct lvm_property_value v ;
prop . id = name ;
if ( pv ) {
if ( ! pv_get_property ( pv , & prop ) ) {
v . is_valid = 0 ;
return v ;
}
} else if ( vg ) {
if ( ! vg_get_property ( vg , & prop ) ) {
v . is_valid = 0 ;
return v ;
}
} else if ( lv ) {
if ( ! lv_get_property ( lv , & prop ) ) {
v . is_valid = 0 ;
return v ;
}
}
v . is_settable = prop . is_settable ;
v . is_string = prop . is_string ;
v . is_integer = prop . is_integer ;
if ( v . is_string )
v . value . string = prop . value . string ;
if ( v . is_integer )
v . value . integer = prop . value . integer ;
v . is_valid = 1 ;
return v ;
}