]> granicus.if.org Git - strace/commitdiff
Fix getsockopt decoding on architectures where sizeof(long) > sizeof(int)
authorDmitry V. Levin <ldv@altlinux.org>
Fri, 6 Nov 2009 18:05:40 +0000 (18:05 +0000)
committerDmitry V. Levin <ldv@altlinux.org>
Fri, 6 Nov 2009 18:16:12 +0000 (18:16 +0000)
* net.c (sys_getsockopt): Optimize output a bit.
Decode integer argument using printnum_int(), patch by Gabor Gombas.

net.c

diff --git a/net.c b/net.c
index 9d2b9f9e583db21def43fa7c8ed17c875d3a430f..a3ceb40fecf306d2c47897c31e5e6022cd93e47a 100644 (file)
--- a/net.c
+++ b/net.c
@@ -1605,8 +1605,7 @@ sys_socketpair(struct tcb *tcp)
 }
 
 int
-sys_getsockopt(tcp)
-struct tcb *tcp;
+sys_getsockopt(struct tcb *tcp)
 {
        if (entering(tcp)) {
                tprintf("%ld, ", tcp->u_arg[0]);
@@ -1648,10 +1647,11 @@ struct tcb *tcp;
                        tprintf("%lu", tcp->u_arg[2]);
                        break;
                }
+               tprintf (", ");
        } else {
                int len;
                if (syserror(tcp) || umove (tcp, tcp->u_arg[4], &len) < 0) {
-                       tprintf("%#lx, %#lx",
+                       tprintf("%#lx, %#lx",
                                tcp->u_arg[3], tcp->u_arg[4]);
                        return 0;
                }
@@ -1667,7 +1667,7 @@ struct tcb *tcp;
                                                   tcp->u_arg[3],
                                                   &linger) < 0)
                                                break;
-                                       tprintf("{onoff=%d, linger=%d}, "
+                                       tprintf("{onoff=%d, linger=%d}, "
                                                "[%d]",
                                                linger.l_onoff,
                                                linger.l_linger,
@@ -1680,9 +1680,8 @@ struct tcb *tcp;
                        break;
                }
 
-               tprintf (", ");
                if (len == sizeof (int)) {
-                       printnum(tcp, tcp->u_arg[3], "%ld");
+                       printnum_int(tcp, tcp->u_arg[3], "%d");
                }
                else {
                        printstr (tcp, tcp->u_arg[3], len);