]> granicus.if.org Git - strace/commitdiff
v4l2: reorder field printing in order to avoid auxstr usage
authorEugene Syromyatnikov <evgsyr@gmail.com>
Sat, 26 Aug 2017 23:10:00 +0000 (01:10 +0200)
committerEugene Syromyatnikov <evgsyr@gmail.com>
Mon, 28 Aug 2017 00:33:20 +0000 (02:33 +0200)
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.

tests/ioctl_v4l2.c
v4l2.c

index cc5dee6acce92a22188172165da581c45dbe3be2..47a538e4cb9deec9d10ba5b043ed52e90851913f 100644 (file)
@@ -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 6f5f6bff4d29b1001319987d89bb58c3cb587368..f37910cbf9ae9e3bd6f72c87a3083ed3e284a094 100644 (file)
--- 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"