Very simple / crude method of removing 'is_static' from initialization.
Why should we require an application tell us whether it is linked
statically or dynamically to libLVM? If the application is linked
statically, but libraries exist and dlopen() calls succeed, why
do we care if it's statically linked?
/* Called to initialise the LVM context of the daemon */
int init_lvm(int using_gulm)
{
- if (!(cmd = create_toolcontext(0, 1))) {
+ if (!(cmd = create_toolcontext(1))) {
log_error("Failed to allocate command context");
return 0;
}
#ifdef HAVE_LIBDL
/* Load any formats in shared libs if not static */
- if (!cmd->is_static &&
+ if (!is_static() &&
(cn = find_config_tree_node(cmd, "global/format_libraries"))) {
struct config_value *cv;
#ifdef HAVE_LIBDL
/* Load any formats in shared libs unless static */
- if (!cmd->is_static &&
+ if (!is_static() &&
(cn = find_config_tree_node(cmd, "global/segment_libraries"))) {
struct config_value *cv;
}
/* Entry point */
-struct cmd_context *create_toolcontext(unsigned is_static,
- unsigned is_long_lived)
+struct cmd_context *create_toolcontext(unsigned is_long_lived)
{
struct cmd_context *cmd;
return NULL;
}
memset(cmd, 0, sizeof(*cmd));
- cmd->is_static = is_static;
cmd->is_long_lived = is_long_lived;
cmd->handles_missing_pvs = 0;
cmd->hosttags = 0;
char *cmd_line;
struct command *command;
char **argv;
- unsigned is_static:1; /* Static binary? */
unsigned is_long_lived:1; /* Optimises persistent_filter handling */
unsigned handles_missing_pvs:1;
unsigned partial_activation:1;
char sysfs_dir[PATH_MAX];
};
-struct cmd_context *create_toolcontext(unsigned is_static, unsigned is_long_lived);
+struct cmd_context *create_toolcontext(unsigned is_long_lived);
void destroy_toolcontext(struct cmd_context *cmd);
int refresh_toolcontext(struct cmd_context *cmd);
int config_files_changed(struct cmd_context *cmd);
#ifdef HAVE_LIBDL
case 2:
- if (!cmd->is_static) {
+ if (!is_static()) {
log_very_verbose("External locking selected.");
if (init_external_locking(&_locking, cmd))
return 1;
*/
struct arg;
struct cmd_context;
-struct cmd_context *create_toolcontext(unsigned is_static, unsigned is_long_lived);
+struct cmd_context *create_toolcontext(unsigned is_long_lived);
void destroy_toolcontext(struct cmd_context *cmd);
/*
* NULL: Fail - unable to initialise handle.
* non-NULL: Success - valid LVM2 handle returned
*/
-#define lvm2_create(X) create_toolcontext(0,1)
+#define lvm2_create(X) create_toolcontext(1)
/*
* lvm2_destroy
static int _dmeventd_monitor = DEFAULT_DMEVENTD_MONITOR;
static int _ignore_suspended_devices = 0;
static int _error_message_produced = 0;
+static unsigned _is_static = 0;
void init_verbose(int level)
{
_log_cmd_name = status;
}
+void init_is_static(unsigned value)
+{
+ _is_static = value;
+}
+
void set_cmd_name(const char *cmd)
{
strncpy(_cmd_name, cmd, sizeof(_cmd_name));
{
return _debug_level;
}
+
+unsigned is_static(void)
+{
+ return _is_static;
+}
void init_dmeventd_monitor(int reg);
void init_ignore_suspended_devices(int ignore);
void init_error_message_produced(int produced);
+void init_is_static(unsigned value);
void set_cmd_name(const char *cmd_name);
int mirror_in_sync(void);
int ignore_suspended_devices(void);
const char *log_command_name(void);
+unsigned is_static(void);
#define DMEVENTD_MONITOR_IGNORE -1
int dmeventd_monitor_mode(void);
char path[PATH_MAX];
void *library;
- if (cmd->is_static) {
+ if (is_static()) {
log_error("Not loading shared %s library %s in static mode.",
desc, libname);
return NULL;
}
init_dmeventd_monitor(arg_int_value(cmd, monitor_ARG,
- (cmd->is_static || arg_count(cmd, ignoremonitoring_ARG)) ?
+ (is_static() || arg_count(cmd, ignoremonitoring_ARG)) ?
DMEVENTD_MONITOR_IGNORE : DEFAULT_DMEVENTD_MONITOR));
/* access permission change */
int main(int argc, char **argv)
{
- return lvm2_main(argc, argv, 1);
+ init_is_static(1);
+ return lvm2_main(argc, argv);
}
int lvm_shell(struct cmd_context *cmd __attribute((unused)),
int main(int argc, char **argv)
{
- return lvm2_main(argc, argv, 0);
+ return lvm2_main(argc, argv);
}
#ifdef READLINE_SUPPORT
int interactive;
};
-int lvm2_main(int argc, char **argv, unsigned is_static);
+int lvm2_main(int argc, char **argv);
void *cmdlib_lvm2_init(unsigned is_static);
void lvm_fin(struct cmd_context *cmd);
-struct cmd_context *init_lvm(unsigned is_static);
+struct cmd_context *init_lvm(void);
void lvm_register_commands(void);
int lvm_split(char *str, int *argc, char **argv, int max);
int lvm_run_command(struct cmd_context *cmd, int argc, char **argv);
#include <time.h>
#include <sys/resource.h>
-void *cmdlib_lvm2_init(unsigned is_static)
+void *cmdlib_lvm2_init(unsigned static_compile)
{
struct cmd_context *cmd;
lvm_register_commands();
- if (!(cmd = init_lvm(is_static)))
+ init_is_static(static_compile);
+ if (!(cmd = init_lvm()))
return NULL;
return (void *) cmd;
parent_cmdline);
}
-struct cmd_context *init_lvm(unsigned is_static)
+struct cmd_context *init_lvm(void)
{
struct cmd_context *cmd;
_cmdline.the_args = &_the_args[0];
- if (!(cmd = create_toolcontext(is_static, 0)))
+ if (!(cmd = create_toolcontext(0)))
return_NULL;
return cmd;
log_warn("WARNING: Running as a non-root user. Functionality may be unavailable.");
}
-int lvm2_main(int argc, char **argv, unsigned is_static)
+int lvm2_main(int argc, char **argv)
{
const char *base;
int ret, alias = 0;
_close_stray_fds(base);
- if (is_static && strcmp(base, "lvm.static") &&
+ if (is_static() && strcmp(base, "lvm.static") &&
path_exists(LVM_SHARED_PATH) &&
!getenv("LVM_DID_EXEC")) {
setenv("LVM_DID_EXEC", base, 1);
unsetenv("LVM_DID_EXEC");
}
- if (!(cmd = init_lvm(is_static)))
+ if (!(cmd = init_lvm()))
return -1;
cmd->argv = argv;
}
init_dmeventd_monitor(arg_int_value(cmd, monitor_ARG,
- (cmd->is_static || arg_count(cmd, ignoremonitoring_ARG)) ?
+ (is_static() || arg_count(cmd, ignoremonitoring_ARG)) ?
DMEVENTD_MONITOR_IGNORE : DEFAULT_DMEVENTD_MONITOR));
if (arg_count(cmd, available_ARG))