]> granicus.if.org Git - strace/commitdiff
execve.c: use printaddr and umove_or_printaddr
authorDmitry V. Levin <ldv@altlinux.org>
Mon, 20 Jul 2015 15:17:24 +0000 (15:17 +0000)
committerDmitry V. Levin <ldv@altlinux.org>
Mon, 20 Jul 2015 22:03:07 +0000 (22:03 +0000)
* execve.c (printargv): Use umoven_or_printaddr.
(sys_execve, sys_execv): Use printaddr.

execve.c

index 4f2639d23aea6bc4766764174d9ad3c65a4ebb04..c2f3c0e8e886bb7210fe472e3166908c18d096dd 100644 (file)
--- a/execve.c
+++ b/execve.c
@@ -10,14 +10,12 @@ printargv(struct tcb *tcp, long addr)
        } cp;
        const char *sep;
        unsigned int n = 0;
-       unsigned wordsize = current_wordsize;
+       const unsigned wordsize = current_wordsize;
 
        cp.p64 = 1;
        for (sep = ""; !abbrev(tcp) || n < max_strlen / 2; sep = ", ", ++n) {
-               if (umoven(tcp, addr, wordsize, cp.data) < 0) {
-                       tprintf("%#lx", addr);
+               if (umoven_or_printaddr(tcp, addr, wordsize, cp.data))
                        return;
-               }
                if (wordsize == 4)
                        cp.p64 = cp.p32;
                if (cp.p64 == 0)
@@ -46,19 +44,23 @@ SYS_FUNC(execve)
 {
        if (entering(tcp)) {
                printpath(tcp, tcp->u_arg[0]);
-               if (!verbose(tcp))
-                       tprintf(", %#lx", tcp->u_arg[1]);
+               tprints(", ");
+
+               if (!tcp->u_arg[1] || !verbose(tcp))
+                       printaddr(tcp->u_arg[1]);
                else {
-                       tprints("[");
+                       tprints("[");
                        printargv(tcp, tcp->u_arg[1]);
                        tprints("]");
                }
-               if (!verbose(tcp))
-                       tprintf(", %#lx", tcp->u_arg[2]);
+               tprints(", ");
+
+               if (!tcp->u_arg[2] || !verbose(tcp))
+                       printaddr(tcp->u_arg[2]);
                else if (abbrev(tcp))
-                       printargc("[/* %d var%s */]", tcp, tcp->u_arg[2]);
+                       printargc("[/* %d var%s */]", tcp, tcp->u_arg[2]);
                else {
-                       tprints("[");
+                       tprints("[");
                        printargv(tcp, tcp->u_arg[2]);
                        tprints("]");
                }
@@ -71,10 +73,11 @@ SYS_FUNC(execv)
 {
        if (entering(tcp)) {
                printpath(tcp, tcp->u_arg[0]);
-               if (!verbose(tcp))
-                       tprintf(", %#lx", tcp->u_arg[1]);
+               tprints(", ");
+               if (!tcp->u_arg[1] || !verbose(tcp))
+                       printaddr(tcp->u_arg[1]);
                else {
-                       tprints("[");
+                       tprints("[");
                        printargv(tcp, tcp->u_arg[1]);
                        tprints("]");
                }