From: mornfall@sourceware.org <mornfall@sourceware.org>
To: lvm-devel@redhat.com
Subject: LVM2 libdm/libdevmapper.h libdm/libdm-config.c ...
Date: 11 Dec 2011 23:18:21 -0000 [thread overview]
Message-ID: <20111211231821.14478.qmail@sourceware.org> (raw)
CVSROOT: /cvs/lvm2
Module name: LVM2
Changes by: mornfall at sourceware.org 2011-12-11 23:18:20
Modified files:
libdm : libdevmapper.h libdm-config.c
lib/config : config.c config.h
tools : dumpconfig.c
Log message:
Move dm_config_write out of libdm, back to lib/config, as config_write.
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/libdm/libdevmapper.h.diff?cvsroot=lvm2&r1=1.169&r2=1.170
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/libdm/libdm-config.c.diff?cvsroot=lvm2&r1=1.16&r2=1.17
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/config/config.c.diff?cvsroot=lvm2&r1=1.108&r2=1.109
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/config/config.h.diff?cvsroot=lvm2&r1=1.38&r2=1.39
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/dumpconfig.c.diff?cvsroot=lvm2&r1=1.10&r2=1.11
--- LVM2/libdm/libdevmapper.h 2011/11/12 22:44:10 1.169
+++ LVM2/libdm/libdevmapper.h 2011/12/11 23:18:20 1.170
@@ -1346,9 +1346,6 @@
void dm_config_destroy(struct dm_config_tree *cft);
-int dm_config_write(struct dm_config_tree *cft, const char *file,
- int argc, char **argv);
-
typedef int (*dm_putline_fn)(const char *line, void *baton);
int dm_config_write_node(const struct dm_config_node *cn, dm_putline_fn putline, void *baton);
--- LVM2/libdm/libdm-config.c 2011/12/11 15:18:32 1.16
+++ LVM2/libdm/libdm-config.c 2011/12/11 23:18:20 1.17
@@ -62,7 +62,6 @@
};
struct output_line {
- FILE *fp;
struct dm_pool *mem;
dm_putline_fn putline;
void *putline_baton;
@@ -356,14 +355,11 @@
}
line = dm_pool_end_object(outline->mem);
- if (outline->putline)
- outline->putline(line, outline->putline_baton);
- else {
- if (!outline->fp)
- log_print("%s", line);
- else
- fprintf(outline->fp, "%s\n", line);
- }
+
+ if (!outline->putline)
+ return 0;
+
+ outline->putline(line, outline->putline_baton);
return 1;
}
@@ -458,7 +454,6 @@
int dm_config_write_node(const struct dm_config_node *cn, dm_putline_fn putline, void *baton)
{
struct output_line outline;
- outline.fp = NULL;
if (!(outline.mem = dm_pool_create("config_line", 1024)))
return_0;
outline.putline = putline;
@@ -471,57 +466,6 @@
return 1;
}
-int dm_config_write(struct dm_config_tree *cft, const char *file,
- int argc, char **argv)
-{
- const struct dm_config_node *cn;
- int r = 1;
- struct output_line outline;
- outline.fp = NULL;
- outline.putline = NULL;
-
-// FIXME AGK remove the fopen from libdm before release
- if (!file)
- file = "stdout";
- else if (!(outline.fp = fopen(file, "w"))) {
- log_sys_error("open", file);
- return 0;
- }
-
- if (!(outline.mem = dm_pool_create("config_line", 1024))) {
- r = 0;
- goto_out;
- }
-
- log_verbose("Dumping configuration to %s", file);
- if (!argc) {
- if (!_write_config(cft->root, 0, &outline, 0)) {
- log_error("Failure while writing to %s", file);
- r = 0;
- }
- } else while (argc--) {
- if ((cn = dm_config_find_node(cft->root, *argv))) {
- if (!_write_config(cn, 1, &outline, 0)) {
- log_error("Failure while writing to %s", file);
- r = 0;
- }
- } else {
- log_error("Configuration node %s not found", *argv);
- r = 0;
- }
- argv++;
- }
-
- dm_pool_destroy(outline.mem);
-
-out:
- if (outline.fp && dm_fclose(outline.fp)) {
- stack;
- r = 0;
- }
-
- return r;
-}
/*
* parser
--- LVM2/lib/config/config.c 2011/10/28 20:06:49 1.108
+++ LVM2/lib/config/config.c 2011/12/11 23:18:20 1.109
@@ -324,3 +324,51 @@
return 1;
}
+static int _putline_fn(const char *line, void *baton) {
+ FILE *fp = baton;
+ fprintf(fp, "%s\n", line);
+ return 1;
+};
+
+int config_write(struct dm_config_tree *cft, const char *file,
+ int argc, char **argv)
+{
+ const struct dm_config_node *cn;
+ int r = 1;
+ FILE *fp = NULL;
+
+ if (!file) {
+ fp = stdout;
+ file = "stdout";
+ } else if (!(fp = fopen(file, "w"))) {
+ log_sys_error("open", file);
+ return 0;
+ }
+
+ log_verbose("Dumping configuration to %s", file);
+ if (!argc) {
+ if (!dm_config_write_node(cft->root, _putline_fn, fp)) {
+ log_error("Failure while writing to %s", file);
+ r = 0;
+ }
+ } else while (argc--) {
+ if ((cn = dm_config_find_node(cft->root, *argv))) {
+ if (!dm_config_write_node(cn, _putline_fn, fp)) {
+ log_error("Failure while writing to %s", file);
+ r = 0;
+ }
+ } else {
+ log_error("Configuration node %s not found", *argv);
+ r = 0;
+ }
+ argv++;
+ }
+
+out:
+ if (fp && dm_fclose(fp)) {
+ stack;
+ r = 0;
+ }
+
+ return r;
+}
--- LVM2/lib/config/config.h 2011/10/28 20:06:49 1.38
+++ LVM2/lib/config/config.h 2011/12/11 23:18:20 1.39
@@ -32,6 +32,9 @@
off_t offset, size_t size, off_t offset2, size_t size2,
checksum_fn_t checksum_fn, uint32_t checksum);
+int config_write(struct dm_config_tree *cft, const char *file,
+ int argc, char **argv);
+
int read_config_file(struct dm_config_tree *cft);
int merge_config_tree(struct cmd_context *cmd, struct dm_config_tree *cft,
--- LVM2/tools/dumpconfig.c 2011/08/30 14:55:19 1.10
+++ LVM2/tools/dumpconfig.c 2011/12/11 23:18:20 1.11
@@ -19,7 +19,7 @@
{
const char *file = arg_str_value(cmd, file_ARG, NULL);
- if (!dm_config_write(cmd->cft, file, argc, argv)) {
+ if (!config_write(cmd->cft, file, argc, argv)) {
stack;
return ECMD_FAILED;
}
next reply other threads:[~2011-12-11 23:18 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-12-11 23:18 mornfall [this message]
-- strict thread matches above, loose matches on Subject: below --
2012-03-01 19:54 LVM2 libdm/libdevmapper.h libdm/libdm-config.c mornfall
2011-08-31 12:39 mornfall
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20111211231821.14478.qmail@sourceware.org \
--to=mornfall@sourceware.org \
--cc=lvm-devel@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.