[ltt-dev] [UST PATCH] Introduce a new communication protocol for UST v3
David Goulet
david.goulet at polymtl.ca
Fri Oct 22 16:16:58 EDT 2010
Almost there :)
(I've cut a bit of code for you to stop searching my comments :P)
On 10-10-20 04:51 AM, Nils Carlson wrote:
> diff --git a/ustctl/ustctl.c b/ustctl/ustctl.c
> index bf149d1..07630dc 100644
> --- a/ustctl/ustctl.c
> +++ b/ustctl/ustctl.c
> @@ -169,6 +169,59 @@ int parse_opts_long(int argc, char **argv, struct ust_opts *opts)
> return 0;
> }
>
> +static int scan_ch_marker(const char *channel_marker, char **channel,
> + char **marker)
> +{
> + int result;
> +
> + *channel = NULL;
> + *marker = NULL;
> +
> + result = sscanf(channel_marker, "%a[^/]/%as", channel, marker);
The result handling here seems weird to me. I read the man page of
sscanf and with EOF value *and* 0, it's an error. However EOF = -1 and
not 0 like the first ERR suggest.
Should only check result != 2 instead, use PERROR (and not ERR) for the
appropriate errno message and return an error (here -1 but soon a ust
error code) ? (Other function across ustctl behave like that)
> + if (result == 0) {
> + ERR("Failed to parse marker and channel names, got EOF");
> + return -1;
> + } else if (result< 0) {
> + PERROR("Failed to parse marker and channel names");
> + return -1;
> + } else if (result != 2) {
> + ERR("Failed to parse marker and channel names");
Just saw that :
channel and marker should be *channel and *marker on free() because that
way, they are valid pointer each time.
> + if (channel) {
> + free(channel);
> + }
> + if (marker) {
> + free(marker);
> + }
> + return -1;
This final else if is a bit useless because sscanf can *only* return
fewer match than provided... so we only need a return 0 if we do not
match !=2. However, let do this on the next iteration fixing error
handling across UST.
> + } else if (result == 2) {
> + return 0;
> + }
> +}
> +
We should really update the man page for ERRORS because, as an example,
if a marker gets enabled a second time, we have a EEXIST (File Exist)
code output on the ustctl side... might be a bit confusing :)
Thanks!
--
David Goulet
LTTng project, DORSAL Lab.
PGP/GPG : 1024D/16BD8563
BE3C 672B 9331 9796 291A 14C6 4AF7 C14B 16BD 8563
More information about the lttng-dev
mailing list