[lvm-devel] [PATCH 5/8] Add tag_list_copy() supporting function inside lvm2app.
Dave Wysochanski
dwysocha at redhat.com
Wed Feb 17 17:29:01 UTC 2010
Add a supporting function to copy a list of internal tags to lvm2app list.
We need to put this here because of the lvm_str_list_t type which we export
in lvm2app.h. If we didn't export this type, we could put this in the
internal library and use struct str_list.
Signed-off-by: Dave Wysochanski <dwysocha at redhat.com>
---
liblvm/Makefile.in | 1 +
liblvm/lvm_misc.c | 43 +++++++++++++++++++++++++++++++++++++++++++
liblvm/lvm_misc.h | 29 +++++++++++++++++++++++++++++
3 files changed, 73 insertions(+), 0 deletions(-)
create mode 100644 liblvm/lvm_misc.c
create mode 100644 liblvm/lvm_misc.h
diff --git a/liblvm/Makefile.in b/liblvm/Makefile.in
index d9afc40..5e6dfd4 100644
--- a/liblvm/Makefile.in
+++ b/liblvm/Makefile.in
@@ -18,6 +18,7 @@ top_builddir = @top_builddir@
VPATH = @srcdir@
SOURCES =\
+ lvm_misc.c \
lvm_base.c \
lvm_lv.c \
lvm_pv.c \
diff --git a/liblvm/lvm_misc.c b/liblvm/lvm_misc.c
new file mode 100644
index 0000000..f52c563
--- /dev/null
+++ b/liblvm/lvm_misc.c
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2008,2010 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
+ * of the GNU Lesser General Public License v.2.1.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include "lvm_misc.h"
+
+struct dm_list *tag_list_copy(struct dm_pool *p, struct dm_list *tag_list)
+{
+ struct dm_list *list;
+ lvm_str_list_t *lsl;
+ struct str_list *sl;
+
+ if (!(list = dm_pool_zalloc(p, sizeof(*list)))) {
+ log_errno(ENOMEM, "Memory allocation fail for dm_list.");
+ return NULL;
+ }
+ dm_list_init(list);
+
+ dm_list_iterate_items(sl, tag_list) {
+ if (!(lsl = dm_pool_zalloc(p, sizeof(*lsl)))) {
+ log_errno(ENOMEM,
+ "Memory allocation fail for lvm_lv_list.");
+ return NULL;
+ }
+ if (!(lsl->str = dm_pool_strdup(p, sl->str))) {
+ log_errno(ENOMEM,
+ "Memory allocation fail for lvm_lv_list->str.");
+ return NULL;
+ }
+ dm_list_add(list, &lsl->list);
+ }
+ return list;
+}
diff --git a/liblvm/lvm_misc.h b/liblvm/lvm_misc.h
new file mode 100644
index 0000000..1d73532
--- /dev/null
+++ b/liblvm/lvm_misc.h
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008,2010 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
+ * of the GNU Lesser General Public License v.2.1.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+#ifndef _LVM2APP_MISC_H
+#define _LVM2APP_MISC_H
+
+#include "lib.h"
+#include "lvm2app.h"
+#include "toolcontext.h"
+#include "metadata-exported.h"
+#include "archiver.h"
+#include "locking.h"
+#include "lvm-string.h"
+#include "lvmcache.h"
+#include "metadata.h"
+
+struct dm_list *tag_list_copy(struct dm_pool *p, struct dm_list *tag_list);
+
+#endif
--
1.6.0.6
More information about the lvm-devel
mailing list