From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Josh Poimboeuf <jpoimboe@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>,
linux-kernel@vger.kernel.org, Jiri Olsa <jolsa@redhat.com>,
Namhyung Kim <namhyung@kernel.org>
Subject: Re: [PATCH v3 14/17] perf: Remove subcmd dependencies on strbuf
Date: Mon, 14 Dec 2015 14:50:12 -0300 [thread overview]
Message-ID: <20151214175012.GU6843@kernel.org> (raw)
In-Reply-To: <20151214160537.GE11552@treble.redhat.com>
Em Mon, Dec 14, 2015 at 10:05:37AM -0600, Josh Poimboeuf escreveu:
> On Mon, Dec 14, 2015 at 12:44:21PM -0300, Arnaldo Carvalho de Melo wrote:
> > Em Sun, Dec 13, 2015 at 10:18:14PM -0600, Josh Poimboeuf escreveu:
> > > Introduce and use new astrcat() and astrcatf() functions which replace
> > > the strbuf functionality for subcmd.
> >
> > <SNIP>
> >
> > > diff --git a/tools/perf/util/subcmd-util.h b/tools/perf/util/subcmd-util.h
> > > new file mode 100644
> > > index 0000000..98fb9f9
> > > --- /dev/null
> > > +++ b/tools/perf/util/subcmd-util.h
> > > @@ -0,0 +1,24 @@
> > > +#ifndef __PERF_SUBCMD_UTIL_H
> > > +#define __PERF_SUBCMD_UTIL_H
> > > +
> > > +#include <stdio.h>
> > > +
> > > +#define astrcatf(out, fmt, ...) \
> > > +({ \
> > > + char *tmp = *(out); \
> > > + if (asprintf((out), "%s" fmt, tmp ?: "", ## __VA_ARGS__) == -1) \
> > > + die("asprintf failed"); \
> > > + free(tmp); \
> > > +})
> >
> > Hey, don't add die() calls, please.
> >
> > > +
> > > +static inline void astrcat(char **out, const char *add)
> > > +{
> > > + char *tmp = *out;
> > > +
> > > + if (asprintf(out, "%s%s", tmp ?: "", add) == -1)
> > > + die("asprintf failed");
> > > +
> > > + free(tmp);
> >
> > Ditto.
>
> This replaces strbuf, which also calls die() when allocations fail. So
> this duplicates the existing die-on-allocation-error functionality and
> is nothing "new" from my perspective.
>
> Do you want me to change all the callers (and callers' callers, etc) of
> these functions to check for errors?
Fair enough, we could do it later, but yeah, ultimately we should call
all die() calls.
> > And I think that this should go into tools/include/string.h and
> > tools/lib/string.c, no?
>
> If these functions simply duplicate some of strbuf's functionality and
> they aren't used outside of libsubcmd then I don't see any reason to do
> that.
Well, we might as well follow that principle, i.e. as soon as there are
more users, we move it.
But removing strbuf and using something already in libc or something
equal or slighly similar to what is in the kernel is something I like to
have in place.
> > We should try to look at the kernel and try to follow naming, semantics,
> > etc as much as possible. The kernel doesn't have a astrcat, just
> > kasprintf() (that is in linux/kernel.h, perhaps because in userland
> > asprintf is in stdio.h, not in string.h) , wonder how something like
> > astrcat is done there... Doing some research now.
>
> Ok.
>
> --
> Josh
next prev parent reply other threads:[~2015-12-14 17:50 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-14 4:18 [PATCH v3 00/17] perf tools: Move perf subcommand framework to a library Josh Poimboeuf
2015-12-14 4:18 ` [PATCH v3 01/17] perf build: Remove unnecessary line in Makefile.feature Josh Poimboeuf
2015-12-14 10:05 ` Jiri Olsa
2015-12-14 15:16 ` Arnaldo Carvalho de Melo
2015-12-18 8:47 ` [tip:perf/core] " tip-bot for Josh Poimboeuf
2015-12-14 4:18 ` [PATCH v3 02/17] tools build: Fix feature Makefile dependencies for 'O=' Josh Poimboeuf
2015-12-14 10:08 ` Jiri Olsa
2015-12-14 14:02 ` Josh Poimboeuf
2015-12-14 14:29 ` [PATCH v3.1 " Josh Poimboeuf
2015-12-14 15:16 ` Arnaldo Carvalho de Melo
2015-12-14 15:29 ` Jiri Olsa
2015-12-14 15:38 ` Josh Poimboeuf
2015-12-14 15:55 ` Jiri Olsa
2015-12-14 16:03 ` Josh Poimboeuf
2015-12-14 18:32 ` [PATCH v3.2] tools build: Fix feature Makefile issues with 'O=' Josh Poimboeuf
2015-12-14 4:18 ` [PATCH v3 03/17] perf test: Add Build file to dependencies for llvm-src-*.c Josh Poimboeuf
2015-12-14 10:10 ` Jiri Olsa
2015-12-14 15:17 ` Arnaldo Carvalho de Melo
2015-12-18 8:47 ` [tip:perf/core] " tip-bot for Josh Poimboeuf
2015-12-14 4:18 ` [PATCH v3 04/17] perf test: remove tarpkg at end of test Josh Poimboeuf
2015-12-18 8:48 ` [tip:perf/core] perf test: Remove " tip-bot for Josh Poimboeuf
2015-12-14 4:18 ` [PATCH v3 05/17] perf build: Fix 'make clean' Josh Poimboeuf
2015-12-14 10:14 ` Jiri Olsa
2015-12-14 15:18 ` Arnaldo Carvalho de Melo
2015-12-18 8:48 ` [tip:perf/core] " tip-bot for Josh Poimboeuf
2015-12-14 4:18 ` [PATCH v3 06/17] perf build: Rename LIB_PATH -> API_PATH Josh Poimboeuf
2015-12-14 10:34 ` Jiri Olsa
2015-12-14 15:19 ` Arnaldo Carvalho de Melo
2015-12-18 8:49 ` [tip:perf/core] " tip-bot for Josh Poimboeuf
2015-12-14 4:18 ` [PATCH v3 07/17] perf: Create pager.h Josh Poimboeuf
2015-12-18 8:49 ` [tip:perf/core] perf tools: " tip-bot for Josh Poimboeuf
2015-12-14 4:18 ` [PATCH v3 08/17] perf: Remove check for unused PERF_PAGER_IN_USE Josh Poimboeuf
2015-12-18 8:49 ` [tip:perf/core] perf tools: " tip-bot for Josh Poimboeuf
2015-12-14 4:18 ` [PATCH v3 09/17] perf: Move help_unknown_cmd() to its own file Josh Poimboeuf
2015-12-18 8:50 ` [tip:perf/core] perf tools: " tip-bot for Josh Poimboeuf
2015-12-14 4:18 ` [PATCH v3 10/17] perf: Provide subcmd configuration at runtime Josh Poimboeuf
2015-12-14 10:33 ` Jiri Olsa
2015-12-14 14:06 ` Josh Poimboeuf
2015-12-14 4:18 ` [PATCH v3 11/17] perf: Remove 'perf' from subcmd function and variable names Josh Poimboeuf
2015-12-14 4:18 ` [PATCH v3 12/17] perf: Convert parse-options.c internal functions to static Josh Poimboeuf
2015-12-18 8:50 ` [tip:perf/core] perf tools: " tip-bot for Josh Poimboeuf
2015-12-14 4:18 ` [PATCH v3 13/17] perf: Document the fact that parse_options*() may exit Josh Poimboeuf
2015-12-14 4:18 ` [PATCH v3 14/17] perf: Remove subcmd dependencies on strbuf Josh Poimboeuf
2015-12-14 10:25 ` Jiri Olsa
2015-12-14 14:11 ` Josh Poimboeuf
2015-12-14 15:44 ` Arnaldo Carvalho de Melo
2015-12-14 16:05 ` Josh Poimboeuf
2015-12-14 17:50 ` Arnaldo Carvalho de Melo [this message]
2015-12-14 18:04 ` Josh Poimboeuf
2015-12-14 4:18 ` [PATCH v3 15/17] perf: Finalize subcmd independence Josh Poimboeuf
2015-12-14 10:32 ` Jiri Olsa
2015-12-14 14:13 ` Josh Poimboeuf
2015-12-14 15:27 ` Jiri Olsa
2015-12-14 15:51 ` Arnaldo Carvalho de Melo
2015-12-14 4:18 ` [PATCH v3 16/17] perf subcmd: Create subcmd library Josh Poimboeuf
2015-12-14 4:18 ` [PATCH v3 17/17] tools subcmd: Rename subcmd header include guards Josh Poimboeuf
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=20151214175012.GU6843@kernel.org \
--to=acme@kernel.org \
--cc=jolsa@redhat.com \
--cc=jpoimboe@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox