1/*	$NetBSD: lvm_base.c,v 1.1.1.1 2009/12/02 00:26:15 haad Exp $	*/
2
3/*
4 * Copyright (C) 2008,2009 Red Hat, Inc. All rights reserved.
5 *
6 * This file is part of LVM2.
7 *
8 * This copyrighted material is made available to anyone wishing to use,
9 * modify, copy, or redistribute it subject to the terms and conditions
10 * of the GNU Lesser General Public License v.2.1.
11 *
12 * You should have received a copy of the GNU Lesser General Public License
13 * along with this program; if not, write to the Free Software Foundation,
14 * Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
15 */
16
17#include "lib.h"
18#include "lvm2app.h"
19#include "toolcontext.h"
20#include "locking.h"
21#include "lvm-version.h"
22
23const char *lvm_library_get_version(void)
24{
25	return LVM_VERSION;
26}
27
28lvm_t lvm_init(const char *system_dir)
29{
30	struct cmd_context *cmd;
31
32	/* FIXME: logging bound to handle
33	 */
34
35	/* create context */
36	/* FIXME: split create_toolcontext */
37	cmd = create_toolcontext(1, system_dir);
38	if (!cmd)
39		return NULL;
40
41	if (stored_errno())
42		return (lvm_t) cmd;
43
44	/*
45	 * FIXME: if an non memory error occured, return the cmd (maybe some
46	 * cleanup needed).
47	 */
48
49	/* initialization from lvm_run_command */
50	init_error_message_produced(0);
51
52	/* FIXME: locking_type config option needed? */
53	/* initialize locking */
54	if (!init_locking(-1, cmd)) {
55		/* FIXME: use EAGAIN as error code here */
56		log_error("Locking initialisation failed.");
57		lvm_quit((lvm_t) cmd);
58		return NULL;
59	}
60	/*
61	 * FIXME: Use cmd->cmd_line as audit trail for liblvm calls.  Used in
62	 * archive() call.  Possible example:
63	 * cmd_line = "lvm_vg_create: vg1\nlvm_vg_extend vg1 /dev/sda1\n"
64	 */
65	cmd->cmd_line = (char *)"liblvm";
66
67	return (lvm_t) cmd;
68}
69
70void lvm_quit(lvm_t libh)
71{
72	destroy_toolcontext((struct cmd_context *)libh);
73}
74
75int lvm_config_reload(lvm_t libh)
76{
77	/* FIXME: re-init locking needed here? */
78	if (!refresh_toolcontext((struct cmd_context *)libh))
79		return -1;
80	return 0;
81}
82
83/*
84 * FIXME: submit a patch to document the --config option
85 */
86int lvm_config_override(lvm_t libh, const char *config_settings)
87{
88	struct cmd_context *cmd = (struct cmd_context *)libh;
89	if (override_config_tree_from_string(cmd, config_settings))
90		return -1;
91	return 0;
92}
93
94int lvm_errno(lvm_t libh)
95{
96	return stored_errno();
97}
98
99const char *lvm_errmsg(lvm_t libh)
100{
101	return stored_errmsg();
102}
103