From: Martin Wilck <mwilck@xxxxxxxx> exactly like snprint_config(), but takes a struct strbuf * as argument. Reviewed-by: Benjamin Marzinski <bmarzins@xxxxxxxxxx> Signed-off-by: Martin Wilck <mwilck@xxxxxxxx> --- 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 83aaa83..547a71c 100644 --- a/libmultipath/libmultipath.version +++ b/libmultipath/libmultipath.version @@ -293,3 +293,8 @@ global: local: *; }; + +LIBMULTIPATH_10.1.0 { +global: + __snprint_config; +} LIBMULTIPATH_10.0.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.1 -- dm-devel mailing list dm-devel@xxxxxxxxxx https://listman.redhat.com/mailman/listinfo/dm-devel