[PATCH v1] update quotactl to not print QCMD macro under Xraw

Dmitry V. Levin ldv at altlinux.org
Sat Dec 1 22:20:55 UTC 2018


Hi,

On Tue, Nov 27, 2018 at 08:06:41PM -0800, shankarapailoor wrote:
> Attached is a patch which makes it so we don't print the QCMD macro
> when running under -Xraw.

Thanks, see my comments below.

> Regards,
> Shankara Pailoor

> From bce487fbb29600f6ea6906f03941584f5968d079 Mon Sep 17 00:00:00 2001
> From: Shankara Pailoor <shankarapailoor at gmail.com>
> Date: Tue, 27 Nov 2018 20:00:19 -0800
> Subject: [PATCH v1] update quotactl to not print QCMD macro under -Xraw
> 
> ---
>  quota.c | 19 +++++++++++++++++--
>  1 file changed, 17 insertions(+), 2 deletions(-)
> 
> diff --git a/quota.c b/quota.c
> index 383e4b17..be8219f9 100644
> --- a/quota.c
> +++ b/quota.c
> @@ -428,12 +428,27 @@ SYS_FUNC(quotactl)
>  	uint32_t id = tcp->u_arg[2];
>  
>  	if (entering(tcp)) {
> +		if (xlat_verbose(xlat_verbosity) != XLAT_STYLE_ABBREV)
> +			tprintf("%x", qcmd);
> +
> +		if (xlat_verbose(xlat_verbosity) == XLAT_STYLE_RAW)
> +			goto end;
> +
> +		if (xlat_verbose(xlat_verbosity) == XLAT_STYLE_VERBOSE)
> +			tprints(" /* ");
> +		
>  		tprints("QCMD(");
>  		printxval(quotacmds, cmd, "Q_???");
>  		tprints(", ");
>  		printxval(quotatypes, type, "???QUOTA");
> -		tprints("), ");
> -		printpath(tcp, tcp->u_arg[1]);
> +		tprints(")");
> +
> +		if (xlat_verbose(xlat_verbosity) == XLAT_STYLE_VERBOSE)
> +			tprints(" */");
> +
>  	}
> +end:
> +	tprints(", ");
> +	printpath(tcp, tcp->u_arg[1]);
>  	return decode_cmd_data(tcp, id, cmd, tcp->u_arg[3]);
>  }

I see three problems with this approach.

First, this parser is going to print tcp->u_arg[1] twice for such commands
as Q_GETQUOTA.  I suppose the test suite detects this.  Have you tried
to run the test suite?
I suggest to move the code that prints QCMD into a separate function,
this way you'd keep it simple and avoid mistakes.

Second, this parser is going to print something strange in "-X verbose"
mode because printxval() also handles xlat verbosity.
I suggest to replace printxval() calls with printxvals_ex() like it was
done recently in commit v4.25-26-g0933b3086.

Third, there are no tests for this change.
If you added a test, it would detect the oddness in -X verbose" output.
Please add some tests like those that were added recently by commits
v4.25-27-ga4fb2fbdd and v4.25-25-g956dc3ed3.


-- 
ldv
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: not available
URL: <http://lists.strace.io/pipermail/strace-devel/attachments/20181202/90d8bbfa/attachment.bin>


More information about the Strace-devel mailing list