2004-05-05 01:25:57 +04:00
/*
2008-01-30 17:00:02 +03:00
* Copyright ( C ) 2003 - 2004 Sistina Software , Inc . All rights reserved .
2004-05-05 01:25:57 +04:00
* Copyright ( C ) 2004 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
2007-08-21 00:55:30 +04:00
* of the GNU Lesser General Public License v .2 .1 .
2004-05-05 01:25:57 +04:00
*
2007-08-21 00:55:30 +04:00
* You should have received a copy of the GNU Lesser General Public License
2004-05-05 01:25:57 +04:00
* along with this program ; if not , write to the Free Software Foundation ,
2016-01-21 13:49:46 +03:00
* Inc . , 51 Franklin Street , Fifth Floor , Boston , MA 02110 - 1301 USA
2004-05-05 01:25:57 +04:00
*/
2018-05-14 12:30:20 +03:00
# include "lib/misc/lib.h"
# include "lib/commands/toolcontext.h"
# include "lib/metadata/segtype.h"
2004-05-05 01:25:57 +04:00
struct segment_type * get_segtype_from_string ( struct cmd_context * cmd ,
const char * str )
{
struct segment_type * segtype ;
2013-06-16 23:05:30 +04:00
dm_list_iterate_items ( segtype , & cmd - > segtypes )
2004-05-05 01:25:57 +04:00
if ( ! strcmp ( segtype - > name , str ) )
return segtype ;
2009-10-16 21:41:49 +04:00
if ( ! ( segtype = init_unknown_segtype ( cmd , str ) ) )
return_NULL ;
dm_list_add ( & cmd - > segtypes , & segtype - > list ) ;
log_warn ( " WARNING: Unrecognised segment type %s " , str ) ;
2013-06-16 23:05:30 +04:00
2009-10-16 21:41:49 +04:00
return segtype ;
2004-05-05 01:25:57 +04:00
}
2016-06-29 01:44:15 +03:00
struct segment_type * get_segtype_from_flag ( struct cmd_context * cmd , uint64_t flag )
{
struct segment_type * segtype ;
2017-02-24 02:50:00 +03:00
/* Iterate backwards to provide aliases; e.g. raid5 instead of raid5_ls */
dm_list_iterate_back_items ( segtype , & cmd - > segtypes )
2016-06-29 01:44:15 +03:00
if ( flag & segtype - > flags )
return segtype ;
2016-08-05 16:00:08 +03:00
log_error ( INTERNAL_ERROR " Unrecognised segment type flag 0x%016 " PRIx64 , flag ) ;
2016-06-29 01:44:15 +03:00
return NULL ;
}