]> granicus.if.org Git - strace/commitdiff
time.c: use printaddr, printnum_int, and umoven_or_printaddr
authorDmitry V. Levin <ldv@altlinux.org>
Thu, 16 Jul 2015 18:18:09 +0000 (18:18 +0000)
committerDmitry V. Levin <ldv@altlinux.org>
Thu, 16 Jul 2015 22:58:12 +0000 (22:58 +0000)
* time.c (sys_nanosleep): Use printaddr.
(printitv_bitness, tprint_timex32, tprint_timex, printsigevent32,
printsigevent): Use umoven_or_printaddr.
(sys_timer_create): Use printnum_int.
(sys_getitimer, sys_osf_getitimer, sys_setitimer, sys_osf_setitimer,
do_adjtimex, sys_timer_settime, sys_timer_gettime): Remove
redundant checks for syserror.

time.c

diff --git a/time.c b/time.c
index 9864118eab55c8a8ddf103daafe73970c39a8c36..fe516696ee5bba1732a049a624b8ef7bd813b35e 100644 (file)
--- a/time.c
+++ b/time.c
@@ -233,11 +233,8 @@ SYS_FUNC(nanosleep)
                switch (tcp->u_error) {
                default:
                        /* Not interrupted (slept entire interval) */
-                       if (tcp->u_arg[1]) {
-                               tprintf("%#lx", tcp->u_arg[1]);
-                               break;
-                       }
-                       /* Fall through: print_timespec(NULL) prints "NULL" */
+                       printaddr(tcp->u_arg[1]);
+                       break;
                case ERESTARTSYS:
                case ERESTARTNOINTR:
                case ERESTARTNOHAND:
@@ -254,40 +251,28 @@ SYS_FUNC(nanosleep)
 static void
 printitv_bitness(struct tcb *tcp, long addr, enum bitness_t bitness)
 {
-       if (addr == 0)
-               tprints("NULL");
-       else if (!verbose(tcp))
-               tprintf("%#lx", addr);
-       else {
-               int rc;
-
-               if (bitness == BITNESS_32 || current_time_t_is_compat) {
-                       struct {
-                               struct timeval32 it_interval, it_value;
-                       } itv;
-
-                       rc = umove(tcp, addr, &itv);
-                       if (rc >= 0) {
-                               tprints("{it_interval=");
-                               tprint_timeval32(tcp, &itv.it_interval);
-                               tprints(", it_value=");
-                               tprint_timeval32(tcp, &itv.it_value);
-                               tprints("}");
-                       }
-               } else {
-                       struct itimerval itv;
-
-                       rc = umove(tcp, addr, &itv);
-                       if (rc >= 0) {
-                               tprints("{it_interval=");
-                               tprint_timeval(tcp, &itv.it_interval);
-                               tprints(", it_value=");
-                               tprint_timeval(tcp, &itv.it_value);
-                               tprints("}");
-                       }
+       if (bitness == BITNESS_32 || current_time_t_is_compat) {
+               struct {
+                       struct timeval32 it_interval, it_value;
+               } itv;
+
+               if (!umove_or_printaddr(tcp, addr, &itv)) {
+                       tprints("{it_interval=");
+                       tprint_timeval32(tcp, &itv.it_interval);
+                       tprints(", it_value=");
+                       tprint_timeval32(tcp, &itv.it_value);
+                       tprints("}");
+               }
+       } else {
+               struct itimerval itv;
+
+               if (!umove_or_printaddr(tcp, addr, &itv)) {
+                       tprints("{it_interval=");
+                       tprint_timeval(tcp, &itv.it_interval);
+                       tprints(", it_value=");
+                       tprint_timeval(tcp, &itv.it_value);
+                       tprints("}");
                }
-               if (rc < 0)
-                       tprints("{...}");
        }
 }
 
@@ -300,10 +285,7 @@ SYS_FUNC(getitimer)
                printxval(itimer_which, tcp->u_arg[0], "ITIMER_???");
                tprints(", ");
        } else {
-               if (syserror(tcp))
-                       tprintf("%#lx", tcp->u_arg[1]);
-               else
-                       printitv(tcp, tcp->u_arg[1]);
+               printitv(tcp, tcp->u_arg[1]);
        }
        return 0;
 }
@@ -315,10 +297,7 @@ SYS_FUNC(osf_getitimer)
                printxval(itimer_which, tcp->u_arg[0], "ITIMER_???");
                tprints(", ");
        } else {
-               if (syserror(tcp))
-                       tprintf("%#lx", tcp->u_arg[1]);
-               else
-                       printitv_bitness(tcp, tcp->u_arg[1], BITNESS_32);
+               printitv_bitness(tcp, tcp->u_arg[1], BITNESS_32);
        }
        return 0;
 }
@@ -332,10 +311,7 @@ SYS_FUNC(setitimer)
                printitv(tcp, tcp->u_arg[1]);
                tprints(", ");
        } else {
-               if (syserror(tcp))
-                       tprintf("%#lx", tcp->u_arg[2]);
-               else
-                       printitv(tcp, tcp->u_arg[2]);
+               printitv(tcp, tcp->u_arg[2]);
        }
        return 0;
 }
@@ -349,10 +325,7 @@ SYS_FUNC(osf_setitimer)
                printitv_bitness(tcp, tcp->u_arg[1], BITNESS_32);
                tprints(", ");
        } else {
-               if (syserror(tcp))
-                       tprintf("%#lx", tcp->u_arg[2]);
-               else
-                       printitv_bitness(tcp, tcp->u_arg[2], BITNESS_32);
+               printitv_bitness(tcp, tcp->u_arg[2], BITNESS_32);
        }
        return 0;
 }
@@ -388,7 +361,7 @@ tprint_timex32(struct tcb *tcp, long addr)
                int     stbcnt;
        } tx;
 
-       if (umove(tcp, addr, &tx) < 0)
+       if (umove_or_printaddr(tcp, addr, &tx))
                return -1;
 
        tprints("{modes=");
@@ -421,7 +394,7 @@ tprint_timex(struct tcb *tcp, long addr)
        if (current_time_t_is_compat)
                return tprint_timex32(tcp, addr);
 #endif
-       if (umove(tcp, addr, &tx) < 0)
+       if (umove_or_printaddr(tcp, addr, &tx))
                return -1;
 
 #if LINUX_VERSION_CODE < 66332
@@ -458,13 +431,7 @@ tprint_timex(struct tcb *tcp, long addr)
 static int
 do_adjtimex(struct tcb *tcp, long addr)
 {
-       if (addr == 0)
-               tprints("NULL");
-       else if (syserror(tcp) || !verbose(tcp))
-               tprintf("%#lx", addr);
-       else if (tprint_timex(tcp, addr) < 0)
-               tprints("{...}");
-       if (syserror(tcp))
+       if (tprint_timex(tcp, addr))
                return 0;
        tcp->auxstr = xlookup(adjtimex_state, tcp->u_rval);
        if (tcp->auxstr)
@@ -572,9 +539,7 @@ printsigevent32(struct tcb *tcp, long arg)
                } un;
        } sev;
 
-       if (umove(tcp, arg, &sev) < 0)
-               tprints("{...}");
-       else {
+       if (!umove_or_printaddr(tcp, arg, &sev)) {
                tprintf("{%#x, ", sev.sigev_value);
                if (sev.sigev_notify == SIGEV_SIGNAL)
                        tprintf("%s, ", signame(sev.sigev_signo));
@@ -606,9 +571,7 @@ printsigevent(struct tcb *tcp, long arg)
                return;
        }
 #endif
-       if (umove(tcp, arg, &sev) < 0)
-               tprints("{...}");
-       else {
+       if (!umove_or_printaddr(tcp, arg, &sev)) {
                tprintf("{%p, ", sev.sigev_value.sival_ptr);
                if (sev.sigev_notify == SIGEV_SIGNAL)
                        tprintf("%s, ", signame(sev.sigev_signo));
@@ -645,12 +608,7 @@ SYS_FUNC(timer_create)
                printsigevent(tcp, tcp->u_arg[1]);
                tprints(", ");
        } else {
-               int timer_id;
-
-               if (syserror(tcp) || umove(tcp, tcp->u_arg[2], &timer_id) < 0)
-                       tprintf("%#lx", tcp->u_arg[2]);
-               else
-                       tprintf("{%d}", timer_id);
+               printnum_int(tcp, tcp->u_arg[2], "%d");
        }
        return 0;
 }
@@ -658,16 +616,13 @@ SYS_FUNC(timer_create)
 SYS_FUNC(timer_settime)
 {
        if (entering(tcp)) {
-               tprintf("%#lx, ", tcp->u_arg[0]);
+               tprintf("%d, ", (int) tcp->u_arg[0]);
                printflags(clockflags, tcp->u_arg[1], "TIMER_???");
                tprints(", ");
                printitv(tcp, tcp->u_arg[2]);
                tprints(", ");
        } else {
-               if (syserror(tcp))
-                       tprintf("%#lx", tcp->u_arg[3]);
-               else
-                       printitv(tcp, tcp->u_arg[3]);
+               printitv(tcp, tcp->u_arg[3]);
        }
        return 0;
 }
@@ -675,12 +630,9 @@ SYS_FUNC(timer_settime)
 SYS_FUNC(timer_gettime)
 {
        if (entering(tcp)) {
-               tprintf("%#lx, ", tcp->u_arg[0]);
+               tprintf("%d, ", (int) tcp->u_arg[0]);
        } else {
-               if (syserror(tcp))
-                       tprintf("%#lx", tcp->u_arg[1]);
-               else
-                       printitv(tcp, tcp->u_arg[1]);
+               printitv(tcp, tcp->u_arg[1]);
        }
        return 0;
 }