From: Eugene Syromyatnikov Date: Sat, 26 Aug 2017 23:10:00 +0000 (+0200) Subject: v4l2: reorder field printing in order to avoid auxstr usage X-Git-Tag: v4.19~46 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8c29b65f7120c1c8f0aa3dc1f8afca1f8d6b487b;p=strace v4l2: reorder field printing in order to avoid auxstr usage Also rework flow a little in order to reduce amount of indentation. * v4l2.c (print_v4l2_requestbuffers): Print count as the last field on entering, append it with updated value on exiting. * tests/ioctl_v4l2.c: Update expected output. --- diff --git a/tests/ioctl_v4l2.c b/tests/ioctl_v4l2.c index cc5dee6a..47a538e4 100644 --- a/tests/ioctl_v4l2.c +++ b/tests/ioctl_v4l2.c @@ -502,12 +502,12 @@ main(void) struct v4l2_requestbuffers *const p_v4l2_requestbuffers = page + size - sizeof(*p_v4l2_requestbuffers); ioctl(-1, VIDIOC_REQBUFS, p_v4l2_requestbuffers); - printf("ioctl(-1, VIDIOC_REQBUFS, {count=%u, type=%#x" - " /* V4L2_BUF_TYPE_??? */, memory=%#x /* V4L2_MEMORY_??? */})" + printf("ioctl(-1, VIDIOC_REQBUFS, {type=%#x /* V4L2_BUF_TYPE_??? */, " + "memory=%#x /* V4L2_MEMORY_??? */, count=%u})" " = -1 EBADF (%m)\n", - p_v4l2_requestbuffers->count, p_v4l2_requestbuffers->type, - p_v4l2_requestbuffers->memory); + p_v4l2_requestbuffers->memory, + p_v4l2_requestbuffers->count); /* VIDIOC_QUERYBUF */ ioctl(-1, VIDIOC_QUERYBUF, 0); diff --git a/v4l2.c b/v4l2.c index 6f5f6bff..f37910cb 100644 --- a/v4l2.c +++ b/v4l2.c @@ -382,23 +382,31 @@ print_v4l2_requestbuffers(struct tcb *const tcp, const kernel_ulong_t arg) if (entering(tcp)) { tprints(", "); + if (umove_or_printaddr(tcp, arg, &reqbufs)) return RVAL_DECODED | 1; - tprintf("{count=%u, type=", reqbufs.count); + + tprintf("{type="); printxval(v4l2_buf_types, reqbufs.type, "V4L2_BUF_TYPE_???"); tprints(", memory="); printxval(v4l2_memories, reqbufs.memory, "V4L2_MEMORY_???"); - tprints("}"); + tprintf(", count=%u", reqbufs.count); + return 0; - } else { - static char outstr[sizeof("{count=}") + sizeof(int) * 3]; + } - if (syserror(tcp) || umove(tcp, arg, &reqbufs) < 0) - return 1; - sprintf(outstr, "{count=%u}", reqbufs.count); - tcp->auxstr = outstr; - return 1 + RVAL_STR; + if (!syserror(tcp)) { + tprints(" => "); + + if (!umove(tcp, arg, &reqbufs)) + tprintf("%u", reqbufs.count); + else + tprints("???"); } + + tprints("}"); + + return 1; } #include "xlat/v4l2_buf_flags.h"