[lvm-devel] [PATCH 1/3] New parameter system_dir for create_toolcontext.
Thomas Woerner
twoerner at redhat.com
Thu Feb 19 19:01:31 UTC 2009
cmd->sys_dir, which defaults to DEFAULT_SYS_DIR, will be set to system_dir i
the parameter is not NULL. If the environment variable LVM_SYSTEM_DIR is set
it will overwrite any value of cmd->sys_dir.
Signed-off-by: Thomas Woerner <twoerner at redhat.com>
---
daemons/clvmd/lvm-functions.c | 4 ++--
lib/commands/toolcontext.c | 16 ++++++++++++++--
lib/commands/toolcontext.h | 9 +++++++--
tools/lvmcmdline.c | 4 ++--
4 files changed, 25 insertions(+), 8 deletions(-)
diff --git a/daemons/clvmd/lvm-functions.c b/daemons/clvmd/lvm-functions.c
index 5cf7eff..d720802 100644
--- a/daemons/clvmd/lvm-functions.c
+++ b/daemons/clvmd/lvm-functions.c
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2002-2004 Sistina Software, Inc. All rights reserved.
- * Copyright (C) 2004-2008 Red Hat, Inc. All rights reserved.
+ * Copyright (C) 2004-2009 Red Hat, Inc. All rights reserved.
*
* This file is part of LVM2.
*
@@ -724,7 +724,7 @@ void lvm_do_backup(const char *vgname)
/* Called to initialise the LVM context of the daemon */
int init_lvm(int using_gulm)
{
- if (!(cmd = create_toolcontext(1))) {
+ if (!(cmd = create_toolcontext(1, NULL))) {
log_error("Failed to allocate command context");
return 0;
}
diff --git a/lib/commands/toolcontext.c b/lib/commands/toolcontext.c
index 0a98325..39c644c 100644
--- a/lib/commands/toolcontext.c
+++ b/lib/commands/toolcontext.c
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2001-2004 Sistina Software, Inc. All rights reserved.
- * Copyright (C) 2004-2007 Red Hat, Inc. All rights reserved.
+ * Copyright (C) 2004-2009 Red Hat, Inc. All rights reserved.
*
* This file is part of LVM2.
*
@@ -998,7 +998,8 @@ static void _init_globals(struct cmd_context *cmd)
}
/* Entry point */
-struct cmd_context *create_toolcontext(unsigned is_long_lived)
+struct cmd_context *create_toolcontext(unsigned is_long_lived,
+ const char *system_dir)
{
struct cmd_context *cmd;
@@ -1030,6 +1031,17 @@ struct cmd_context *create_toolcontext(unsigned is_long_lived)
strcpy(cmd->sys_dir, DEFAULT_SYS_DIR);
+ /*
+ * cmd->sys_dir, which defaults to DEFAULT_SYS_DIR, will be set to
+ * system_dir if the parameter is not NULL. If the environment
+ * variable LVM_SYSTEM_DIR is set, it will overwrite any value of
+ * cmd->sys_dir.
+ */
+ if (system_dir) {
+ strncpy(cmd->sys_dir, system_dir, sizeof(cmd->sys_dir));
+ cmd->sys_dir[sizeof(cmd->sys_dir) - 1] = '\0';
+ }
+
if (!_get_env_vars(cmd))
goto error;
diff --git a/lib/commands/toolcontext.h b/lib/commands/toolcontext.h
index 7d2aef9..eb2b6ef 100644
--- a/lib/commands/toolcontext.h
+++ b/lib/commands/toolcontext.h
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2001-2004 Sistina Software, Inc. All rights reserved.
- * Copyright (C) 2004-2007 Red Hat, Inc. All rights reserved.
+ * Copyright (C) 2004-2009 Red Hat, Inc. All rights reserved.
*
* This file is part of LVM2.
*
@@ -94,7 +94,12 @@ struct cmd_context {
char sysfs_dir[PATH_MAX];
};
-struct cmd_context *create_toolcontext(unsigned is_long_lived);
+/*
+ * cmd->sys_dir, which defaults to DEFAULT_SYS_DIR, will be set to system_dir
+ * if the parameter is not NULL. If the environment variable LVM_SYSTEM_DIR is
+ * set, it will overwrite any value of cmd->sys_dir.
+ */
+struct cmd_context *create_toolcontext(unsigned is_long_lived, const char *system_dir);
void destroy_toolcontext(struct cmd_context *cmd);
int refresh_toolcontext(struct cmd_context *cmd);
int config_files_changed(struct cmd_context *cmd);
diff --git a/tools/lvmcmdline.c b/tools/lvmcmdline.c
index 880f31e..cb1bfc6 100644
--- a/tools/lvmcmdline.c
+++ b/tools/lvmcmdline.c
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2001-2004 Sistina Software, Inc. All rights reserved.
- * Copyright (C) 2004-2007 Red Hat, Inc. All rights reserved.
+ * Copyright (C) 2004-2009 Red Hat, Inc. All rights reserved.
*
* This file is part of LVM2.
*
@@ -1158,7 +1158,7 @@ struct cmd_context *init_lvm(void)
_cmdline.the_args = &_the_args[0];
- if (!(cmd = create_toolcontext(0)))
+ if (!(cmd = create_toolcontext(0, NULL)))
return_NULL;
return cmd;
--
1.6.1.3
More information about the lvm-devel
mailing list