2002-11-18 17:01:16 +03:00
/*
2008-01-30 17:00:02 +03:00
* Copyright ( C ) 2002 - 2004 Sistina Software , Inc . All rights reserved .
2007-08-21 00:55:30 +04:00
* Copyright ( C ) 2004 - 2006 Red Hat , Inc . All rights reserved .
2002-11-18 17:01:16 +03:00
*
2004-03-30 23:35:44 +04:00
* This file is part of LVM2 .
2002-11-18 17:01:16 +03:00
*
2004-03-30 23:35:44 +04:00
* 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-03-30 23:35:44 +04:00
*
2007-08-21 00:55:30 +04:00
* You should have received a copy of the GNU Lesser General Public License
2004-03-30 23:35:44 +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
2002-11-18 17:01:16 +03:00
*/
2018-05-14 12:30:20 +03:00
# include "lib/misc/lib.h"
2018-12-14 23:51:11 +03:00
# include "sharedlib.h"
2018-05-14 12:30:20 +03:00
# include "lib/config/config.h"
# include "lib/commands/toolcontext.h"
2002-11-18 17:01:16 +03:00
# include <limits.h>
# include <sys/stat.h>
# include <dlfcn.h>
2006-05-16 20:48:31 +04:00
void get_shared_library_path ( struct cmd_context * cmd , const char * libname ,
2006-05-10 01:23:51 +04:00
char * path , size_t path_len )
2002-11-18 17:01:16 +03:00
{
struct stat info ;
2016-02-23 21:54:19 +03:00
if ( ! path_len )
return ;
2002-11-18 17:01:16 +03:00
/* If libname doesn't begin with '/' then use lib_dir/libname,
* if present */
if ( libname [ 0 ] = = ' / ' | |
2016-02-23 21:54:19 +03:00
( ! cmd - > lib_dir & &
2013-12-06 19:35:54 +04:00
! ( cmd - > lib_dir = find_config_tree_str ( cmd , global_library_dir_CFG , NULL ) ) ) | |
( dm_snprintf ( path , path_len , " %s/%s " , cmd - > lib_dir ,
2012-02-08 15:05:04 +04:00
libname ) = = - 1 ) | | stat ( path , & info ) = = - 1 ) {
2018-03-02 18:25:37 +03:00
( void ) dm_strncpy ( path , libname , path_len ) ;
2012-02-08 15:05:04 +04:00
}
2005-08-09 21:24:21 +04:00
}