[dm-devel] [PATCH 04/35] libmultipath: print: add __snprint_config()
mwilck at suse.com
mwilck at suse.com
Fri Sep 10 11:40:49 UTC 2021
From: Martin Wilck <mwilck at suse.com>
exactly like snprint_config(), but takes a struct strbuf * as argument.
Signed-off-by: Martin Wilck <mwilck at suse.com>
---
libmultipath/libmultipath.version | 5 +++++
libmultipath/print.c | 34 +++++++++++++++++++++----------
libmultipath/print.h | 2 ++
3 files changed, 30 insertions(+), 11 deletions(-)
diff --git a/libmultipath/libmultipath.version b/libmultipath/libmultipath.version
index 2107c51..b2feee2 100644
--- a/libmultipath/libmultipath.version
+++ b/libmultipath/libmultipath.version
@@ -297,3 +297,8 @@ LIBMULTIPATH_9.2.0 {
global:
set_wakeup_fn;
} LIBMULTIPATH_9.1.0;
+
+LIBMULTIPATH_9.3.0 {
+global:
+ __snprint_config;
+} LIBMULTIPATH_9.2.0;
diff --git a/libmultipath/print.c b/libmultipath/print.c
index 2fb9f4e..d2ef010 100644
--- a/libmultipath/print.c
+++ b/libmultipath/print.c
@@ -1756,24 +1756,36 @@ static int snprint_blacklist_except(const struct config *conf,
return get_strbuf_len(buff) - initial_len;
}
+int __snprint_config(const struct config *conf, struct strbuf *buff,
+ const struct _vector *hwtable, const struct _vector *mpvec)
+{
+ int rc;
+
+ if ((rc = snprint_defaults(conf, buff)) < 0 ||
+ (rc = snprint_blacklist(conf, buff)) < 0 ||
+ (rc = snprint_blacklist_except(conf, buff)) < 0 ||
+ (rc = snprint_hwtable(conf, buff,
+ hwtable ? hwtable : conf->hwtable)) < 0 ||
+ (rc = snprint_overrides(conf, buff, conf->overrides)) < 0)
+ return rc;
+
+ if (VECTOR_SIZE(conf->mptable) > 0 ||
+ (mpvec != NULL && VECTOR_SIZE(mpvec) > 0))
+ if ((rc = snprint_mptable(conf, buff, mpvec)) < 0)
+ return rc;
+
+ return 0;
+}
+
char *snprint_config(const struct config *conf, int *len,
const struct _vector *hwtable, const struct _vector *mpvec)
{
STRBUF_ON_STACK(buff);
char *reply;
- int rc;
+ int rc = __snprint_config(conf, &buff, hwtable, mpvec);
- if ((rc = snprint_defaults(conf, &buff)) < 0 ||
- (rc = snprint_blacklist(conf, &buff)) < 0 ||
- (rc = snprint_blacklist_except(conf, &buff)) < 0 ||
- (rc = snprint_hwtable(conf, &buff,
- hwtable ? hwtable : conf->hwtable)) < 0 ||
- (rc = snprint_overrides(conf, &buff, conf->overrides)) < 0)
+ if (rc < 0)
return NULL;
- if (VECTOR_SIZE(conf->mptable) > 0 ||
- (mpvec != NULL && VECTOR_SIZE(mpvec) > 0))
- if ((rc = snprint_mptable(conf, &buff, mpvec)) < 0)
- return NULL;
if (len)
*len = get_strbuf_len(&buff);
diff --git a/libmultipath/print.h b/libmultipath/print.h
index c6674a5..b149275 100644
--- a/libmultipath/print.h
+++ b/libmultipath/print.h
@@ -54,6 +54,8 @@ int _snprint_multipath_topology (const struct gen_multipath *, struct strbuf *,
#define snprint_multipath_topology(buf, mpp, v) \
_snprint_multipath_topology (dm_multipath_to_gen(mpp), buf, v)
int snprint_multipath_topology_json(struct strbuf *, const struct vectors *vecs);
+int __snprint_config(const struct config *conf, struct strbuf *buff,
+ const struct _vector *hwtable, const struct _vector *mpvec);
char *snprint_config(const struct config *conf, int *len,
const struct _vector *hwtable,
const struct _vector *mpvec);
--
2.33.0
More information about the dm-devel
mailing list