]> granicus.if.org Git - strace/blobdiff - time.c
io: handle data_size of -1 as unlimited data in print_iovec
[strace] / time.c
diff --git a/time.c b/time.c
index 4c218936ac665fb7686aa4f678b9cecadc48d501..b32eddf63562e184d2f65d13f0ee0ff82e6febef 100644 (file)
--- a/time.c
+++ b/time.c
@@ -171,7 +171,7 @@ do_adjtimex(struct tcb *tcp, long addr)
 {
        if (print_timex(tcp, addr))
                return 0;
-       tcp->auxstr = xlookup(adjtimex_state, tcp->u_rval);
+       tcp->auxstr = xlookup(adjtimex_state, (unsigned long) tcp->u_rval);
        if (tcp->auxstr)
                return RVAL_STR;
        return 0;
@@ -314,15 +314,17 @@ SYS_FUNC(timerfd_create)
 
 SYS_FUNC(timerfd_settime)
 {
-       printfd(tcp, tcp->u_arg[0]);
-       tprints(", ");
-       printflags(timerfdflags, tcp->u_arg[1], "TFD_???");
-       tprints(", ");
-       print_itimerspec(tcp, tcp->u_arg[2]);
-       tprints(", ");
-       print_itimerspec(tcp, tcp->u_arg[3]);
-
-       return RVAL_DECODED;
+       if (entering(tcp)) {
+               printfd(tcp, tcp->u_arg[0]);
+               tprints(", ");
+               printflags(timerfdflags, tcp->u_arg[1], "TFD_???");
+               tprints(", ");
+               print_itimerspec(tcp, tcp->u_arg[2]);
+               tprints(", ");
+       } else {
+               print_itimerspec(tcp, tcp->u_arg[3]);
+       }
+       return 0;
 }
 
 SYS_FUNC(timerfd_gettime)