diff --git a/time.c b/time.c
index 89a6216..932c71f 100644
--- a/time.c
+++ b/time.c
@@ -67,7 +67,7 @@
 printtv_bitness(struct tcb *tcp, long addr, enum bitness_t bitness, int special)
 {
 	if (addr == 0)
-		tprintf("NULL");
+		tprints("NULL");
 	else if (!verbose(tcp))
 		tprintf("%#lx", addr);
 	else {
@@ -85,10 +85,10 @@
 			if (rc >= 0) {
 				if (special && tv.tv_sec == 0 &&
 				    tv.tv_usec == UTIME_NOW)
-					tprintf("UTIME_NOW");
+					tprints("UTIME_NOW");
 				else if (special && tv.tv_sec == 0 &&
 					 tv.tv_usec == UTIME_OMIT)
-					tprintf("UTIME_OMIT");
+					tprints("UTIME_OMIT");
 				else
 					tprint_timeval32(tcp, &tv);
 			}
@@ -99,16 +99,16 @@
 			if (rc >= 0) {
 				if (special && tv.tv_sec == 0 &&
 				    tv.tv_usec == UTIME_NOW)
-					tprintf("UTIME_NOW");
+					tprints("UTIME_NOW");
 				else if (special && tv.tv_sec == 0 &&
 					 tv.tv_usec == UTIME_OMIT)
-					tprintf("UTIME_OMIT");
+					tprints("UTIME_OMIT");
 				else
 					tprint_timeval(tcp, &tv);
 			}
 		}
 		if (rc < 0)
-			tprintf("{...}");
+			tprints("{...}");
 	}
 }
 
@@ -155,7 +155,7 @@
 void print_timespec(struct tcb *tcp, long addr)
 {
 	if (addr == 0)
-		tprintf("NULL");
+		tprints("NULL");
 	else if (!verbose(tcp))
 		tprintf("%#lx", addr);
 	else {
@@ -181,7 +181,7 @@
 					(unsigned long) ts.tv_nsec);
 		}
 		if (rc < 0)
-			tprintf("{...}");
+			tprints("{...}");
 	}
 }
 
@@ -249,7 +249,7 @@
 		}
 		printtv(tcp, tcp->u_arg[0]);
 #ifndef SVR4
-		tprintf(", ");
+		tprints(", ");
 		printtv(tcp, tcp->u_arg[1]);
 #endif /* !SVR4 */
 	}
@@ -268,7 +268,7 @@
 		}
 		printtv_bitness(tcp, tcp->u_arg[0], BITNESS_32, 0);
 #ifndef SVR4
-		tprintf(", ");
+		tprints(", ");
 		printtv_bitness(tcp, tcp->u_arg[1], BITNESS_32, 0);
 #endif /* !SVR4 */
 	}
@@ -282,7 +282,7 @@
 	if (entering(tcp)) {
 		printtv(tcp, tcp->u_arg[0]);
 #ifndef SVR4
-		tprintf(", ");
+		tprints(", ");
 		printtv(tcp, tcp->u_arg[1]);
 #endif /* !SVR4 */
 	}
@@ -296,7 +296,7 @@
 	if (entering(tcp)) {
 		printtv_bitness(tcp, tcp->u_arg[0], BITNESS_32, 0);
 #ifndef SVR4
-		tprintf(", ");
+		tprints(", ");
 		printtv_bitness(tcp, tcp->u_arg[1], BITNESS_32, 0);
 #endif /* !SVR4 */
 	}
@@ -309,7 +309,7 @@
 {
 	if (entering(tcp)) {
 		printtv(tcp, tcp->u_arg[0]);
-		tprintf(", ");
+		tprints(", ");
 	} else {
 		if (syserror(tcp))
 			tprintf("%#lx", tcp->u_arg[1]);
@@ -324,7 +324,7 @@
 {
 	if (entering(tcp)) {
 		print_timespec(tcp, tcp->u_arg[0]);
-		tprintf(", ");
+		tprints(", ");
 	} else {
 		if (!tcp->u_arg[1] || is_restart_error(tcp))
 			print_timespec(tcp, tcp->u_arg[1]);
@@ -345,7 +345,7 @@
 printitv_bitness(struct tcb *tcp, long addr, enum bitness_t bitness)
 {
 	if (addr == 0)
-		tprintf("NULL");
+		tprints("NULL");
 	else if (!verbose(tcp))
 		tprintf("%#lx", addr);
 	else {
@@ -363,26 +363,26 @@
 
 			rc = umove(tcp, addr, &itv);
 			if (rc >= 0) {
-				tprintf("{it_interval=");
+				tprints("{it_interval=");
 				tprint_timeval32(tcp, &itv.it_interval);
-				tprintf(", it_value=");
+				tprints(", it_value=");
 				tprint_timeval32(tcp, &itv.it_value);
-				tprintf("}");
+				tprints("}");
 			}
 		} else {
 			struct itimerval itv;
 
 			rc = umove(tcp, addr, &itv);
 			if (rc >= 0) {
-				tprintf("{it_interval=");
+				tprints("{it_interval=");
 				tprint_timeval(tcp, &itv.it_interval);
-				tprintf(", it_value=");
+				tprints(", it_value=");
 				tprint_timeval(tcp, &itv.it_value);
-				tprintf("}");
+				tprints("}");
 			}
 		}
 		if (rc < 0)
-			tprintf("{...}");
+			tprints("{...}");
 	}
 }
 
@@ -394,7 +394,7 @@
 {
 	if (entering(tcp)) {
 		printxval(which, tcp->u_arg[0], "ITIMER_???");
-		tprintf(", ");
+		tprints(", ");
 	} else {
 		if (syserror(tcp))
 			tprintf("%#lx", tcp->u_arg[1]);
@@ -411,7 +411,7 @@
 {
 	if (entering(tcp)) {
 		printxval(which, tcp->u_arg[0], "ITIMER_???");
-		tprintf(", ");
+		tprints(", ");
 	} else {
 		if (syserror(tcp))
 			tprintf("%#lx", tcp->u_arg[1]);
@@ -427,9 +427,9 @@
 {
 	if (entering(tcp)) {
 		printxval(which, tcp->u_arg[0], "ITIMER_???");
-		tprintf(", ");
+		tprints(", ");
 		printitv(tcp, tcp->u_arg[1]);
-		tprintf(", ");
+		tprints(", ");
 	} else {
 		if (syserror(tcp))
 			tprintf("%#lx", tcp->u_arg[2]);
@@ -445,9 +445,9 @@
 {
 	if (entering(tcp)) {
 		printxval(which, tcp->u_arg[0], "ITIMER_???");
-		tprintf(", ");
+		tprints(", ");
 		printitv_bitness(tcp, tcp->u_arg[1], BITNESS_32);
-		tprintf(", ");
+		tprints(", ");
 	} else {
 		if (syserror(tcp))
 			tprintf("%#lx", tcp->u_arg[2]);
@@ -583,7 +583,7 @@
 	if (umove(tcp, addr, &tx) < 0)
 		return -1;
 
-	tprintf("{modes=");
+	tprints("{modes=");
 	printflags(adjtimex_modes, tx.modes, "ADJ_???");
 	tprintf(", offset=%d, freq=%d, maxerror=%d, ",
 		tx.offset, tx.freq, tx.maxerror);
@@ -599,7 +599,7 @@
 		tx.shift, tx.stabil, tx.jitcnt);
 	tprintf(", calcnt=%d, errcnt=%d, stbcnt=%d",
 		tx.calcnt, tx.errcnt, tx.stbcnt);
-	tprintf("}");
+	tprints("}");
 	return 0;
 }
 #endif /* SUPPORTED_PERSONALITIES > 1 */
@@ -626,7 +626,7 @@
 	tprintf("tolerance=%ld, time=", tx.tolerance);
 	tprint_timeval(tcp, &tx.time);
 #else
-	tprintf("{modes=");
+	tprints("{modes=");
 	printflags(adjtimex_modes, tx.modes, "ADJ_???");
 	tprintf(", offset=%ld, freq=%ld, maxerror=%ld, ",
 		tx.offset, tx.freq, tx.maxerror);
@@ -643,7 +643,7 @@
 	tprintf(", calcnt=%ld, errcnt=%ld, stbcnt=%ld",
 		tx.calcnt, tx.errcnt, tx.stbcnt);
 #endif
-	tprintf("}");
+	tprints("}");
 	return 0;
 }
 
@@ -652,11 +652,11 @@
 {
 	if (exiting(tcp)) {
 		if (tcp->u_arg[0] == 0)
-			tprintf("NULL");
+			tprints("NULL");
 		else if (syserror(tcp) || !verbose(tcp))
 			tprintf("%#lx", tcp->u_arg[0]);
 		else if (tprint_timex(tcp, tcp->u_arg[0]) < 0)
-			tprintf("{...}");
+			tprints("{...}");
 		if (syserror(tcp))
 			return 0;
 		tcp->auxstr = xlookup(adjtimex_state, tcp->u_rval);
@@ -701,7 +701,7 @@
 {
 	if (entering(tcp)) {
 		printxval(clocknames, tcp->u_arg[0], "CLOCK_???");
-		tprintf(", ");
+		tprints(", ");
 		printtv(tcp, tcp->u_arg[1]);
 	}
 	return 0;
@@ -712,7 +712,7 @@
 {
 	if (entering(tcp)) {
 		printxval(clocknames, tcp->u_arg[0], "CLOCK_???");
-		tprintf(", ");
+		tprints(", ");
 	} else {
 		if (syserror(tcp))
 			tprintf("%#lx", tcp->u_arg[1]);
@@ -727,11 +727,11 @@
 {
 	if (entering(tcp)) {
 		printxval(clocknames, tcp->u_arg[0], "CLOCK_???");
-		tprintf(", ");
+		tprints(", ");
 		printflags(clockflags, tcp->u_arg[1], "TIMER_???");
-		tprintf(", ");
+		tprints(", ");
 		printtv(tcp, tcp->u_arg[2]);
-		tprintf(", ");
+		tprints(", ");
 	} else {
 		if (syserror(tcp))
 			tprintf("%#lx", tcp->u_arg[3]);
@@ -770,7 +770,7 @@
 	} sev;
 
 	if (umove(tcp, arg, &sev) < 0)
-		tprintf("{...}");
+		tprints("{...}");
 	else {
 		tprintf("{%#x, ", sev.sigev_value);
 		if (sev.sigev_notify == SIGEV_SIGNAL)
@@ -778,7 +778,7 @@
 		else
 			tprintf("%u, ", sev.sigev_signo);
 		printxval(sigev_value, sev.sigev_notify + 1, "SIGEV_???");
-		tprintf(", ");
+		tprints(", ");
 		if (sev.sigev_notify == SIGEV_THREAD_ID)
 			tprintf("{%d}", sev.un.tid);
 		else if (sev.sigev_notify == SIGEV_THREAD)
@@ -786,8 +786,8 @@
 				sev.un.thread.function,
 				sev.un.thread.attribute);
 		else
-			tprintf("{...}");
-		tprintf("}");
+			tprints("{...}");
+		tprints("}");
 	}
 }
 #endif
@@ -804,7 +804,7 @@
 	}
 #endif
 	if (umove(tcp, arg, &sev) < 0)
-		tprintf("{...}");
+		tprints("{...}");
 	else {
 		tprintf("{%p, ", sev.sigev_value.sival_ptr);
 		if (sev.sigev_notify == SIGEV_SIGNAL)
@@ -812,7 +812,7 @@
 		else
 			tprintf("%u, ", sev.sigev_signo);
 		printxval(sigev_value, sev.sigev_notify+1, "SIGEV_???");
-		tprintf(", ");
+		tprints(", ");
 		if (sev.sigev_notify == SIGEV_THREAD_ID)
 			/* _pad[0] is the _tid field which might not be
 			   present in the userlevel definition of the
@@ -822,8 +822,8 @@
 			tprintf("{%p, %p}", sev.sigev_notify_function,
 				sev.sigev_notify_attributes);
 		else
-			tprintf("{...}");
-		tprintf("}");
+			tprints("{...}");
+		tprints("}");
 	}
 }
 
@@ -832,9 +832,9 @@
 {
 	if (entering(tcp)) {
 		printxval(clocknames, tcp->u_arg[0], "CLOCK_???");
-		tprintf(", ");
+		tprints(", ");
 		printsigevent(tcp, tcp->u_arg[1]);
-		tprintf(", ");
+		tprints(", ");
 	} else {
 		int timer_id;
 
@@ -852,9 +852,9 @@
 	if (entering(tcp)) {
 		tprintf("%#lx, ", tcp->u_arg[0]);
 		printflags(clockflags, tcp->u_arg[1], "TIMER_???");
-		tprintf(", ");
+		tprints(", ");
 		printitv(tcp, tcp->u_arg[2]);
-		tprintf(", ");
+		tprints(", ");
 	} else {
 		if (syserror(tcp))
 			tprintf("%#lx", tcp->u_arg[3]);
@@ -889,7 +889,7 @@
 		tprintf("tm_wday=%d, tm_yday=%d, tm_isdst=%d}",
 			rt->tm_wday, rt->tm_yday, rt->tm_isdst);
 	else
-		tprintf("...}");
+		tprints("...}");
 }
 
 int
@@ -903,7 +903,7 @@
 			if (umove(tcp, arg, &rt) < 0)
 				tprintf(", %#lx", arg);
 			else {
-				tprintf(", ");
+				tprints(", ");
 				print_rtc(tcp, &rt);
 			}
 		}
@@ -915,7 +915,7 @@
 			if (syserror(tcp) || umove(tcp, arg, &rt) < 0)
 				tprintf(", %#lx", arg);
 			else {
-				tprintf(", ");
+				tprints(", ");
 				print_rtc(tcp, &rt);
 			}
 		}
@@ -939,7 +939,7 @@
 				tprintf(", {enabled=%d, pending=%d, ",
 					wk.enabled, wk.pending);
 				print_rtc(tcp, &wk.time);
-				tprintf("}");
+				tprints("}");
 			}
 		}
 		break;
@@ -952,7 +952,7 @@
 				tprintf(", {enabled=%d, pending=%d, ",
 					wk.enabled, wk.pending);
 				print_rtc(tcp, &wk.time);
-				tprintf("}");
+				tprints("}");
 			}
 		}
 		break;
@@ -980,9 +980,9 @@
 		/* It does not matter that the kernel uses itimerspec.  */
 		tprintf("%ld, ", tcp->u_arg[0]);
 		printxval(clocknames, tcp->u_arg[1], "CLOCK_???");
-		tprintf(", ");
+		tprints(", ");
 		printflags(timerfdflags, tcp->u_arg[2], "TFD_???");
-		tprintf(", ");
+		tprints(", ");
 		printitv(tcp, tcp->u_arg[3]);
 	}
 	return 0;
@@ -993,7 +993,7 @@
 {
 	if (entering(tcp)) {
 		printxval(clocknames, tcp->u_arg[0], "CLOCK_???");
-		tprintf(", ");
+		tprints(", ");
 		printflags(timerfdflags, tcp->u_arg[1], "TFD_???");
 	}
 	return 0;
@@ -1004,11 +1004,11 @@
 {
 	if (entering(tcp)) {
 		printfd(tcp, tcp->u_arg[0]);
-		tprintf(", ");
+		tprints(", ");
 		printflags(timerfdflags, tcp->u_arg[1], "TFD_???");
-		tprintf(", ");
+		tprints(", ");
 		printitv(tcp, tcp->u_arg[2]);
-		tprintf(", ");
+		tprints(", ");
 		printitv(tcp, tcp->u_arg[3]);
 	}
 	return 0;
@@ -1019,7 +1019,7 @@
 {
 	if (entering(tcp)) {
 		printfd(tcp, tcp->u_arg[0]);
-		tprintf(", ");
+		tprints(", ");
 		printitv(tcp, tcp->u_arg[1]);
 	}
 	return 0;
