On Fri, Sep 10, 2021 at 01:40:49PM +0200, mwilck@xxxxxxxx wrote: > 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 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 -- dm-devel mailing list dm-devel@xxxxxxxxxx https://listman.redhat.com/mailman/listinfo/dm-devel