/*
* Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
+ * Copyright (c) 1996-2018 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
#include "xlat/modem_flags.h"
static void
-decode_termios(struct tcb *const tcp, const kernel_ureg_t addr)
+decode_termios(struct tcb *const tcp, const kernel_ulong_t addr)
{
struct termios tios;
- int i;
-
- if (!verbose(tcp))
- return;
tprints(", ");
if (umove_or_printaddr(tcp, addr, &tios))
if (!(tios.c_lflag & ICANON))
tprintf("c_cc[VMIN]=%d, c_cc[VTIME]=%d, ",
tios.c_cc[VMIN], tios.c_cc[VTIME]);
- tprints("c_cc=\"");
- for (i = 0; i < NCCS; i++)
- tprintf("\\x%02x", tios.c_cc[i]);
- tprints("\"}");
+ tprints("c_cc=");
+ print_quoted_string((char *) tios.c_cc, NCCS, QUOTE_FORCE_HEX);
+ tprints("}");
}
static void
-decode_termio(struct tcb *const tcp, const kernel_ureg_t addr)
+decode_termio(struct tcb *const tcp, const kernel_ulong_t addr)
{
struct termio tio;
int i;
- if (!verbose(tcp))
- return;
-
tprints(", ");
if (umove_or_printaddr(tcp, addr, &tio))
return;
}
static void
-decode_winsize(struct tcb *const tcp, const kernel_ureg_t addr)
+decode_winsize(struct tcb *const tcp, const kernel_ulong_t addr)
{
struct winsize ws;
- if (!verbose(tcp))
- return;
-
tprints(", ");
if (umove_or_printaddr(tcp, addr, &ws))
return;
#ifdef TIOCGSIZE
static void
-decode_ttysize(struct tcb *const tcp, const kernel_ureg_t addr)
+decode_ttysize(struct tcb *const tcp, const kernel_ulong_t addr)
{
struct ttysize ts;
- if (!verbose(tcp))
- return;
-
tprints(", ");
if (umove_or_printaddr(tcp, addr, &ts))
return;
#endif
static void
-decode_modem_flags(struct tcb *const tcp, const kernel_ureg_t addr)
+decode_modem_flags(struct tcb *const tcp, const kernel_ulong_t addr)
{
int i;
- if (!verbose(tcp))
- return;
-
tprints(", ");
if (umove_or_printaddr(tcp, addr, &i))
return;
int
term_ioctl(struct tcb *const tcp, const unsigned int code,
- const kernel_ureg_t arg)
+ const kernel_ulong_t arg)
{
switch (code) {
/* struct termios */
case TIOCGLCKTRMIOS:
if (entering(tcp))
return 0;
+ ATTRIBUTE_FALLTHROUGH;
case TCSETS:
#ifdef TCSETS2
case TCSETS2:
case TCGETA:
if (entering(tcp))
return 0;
+ ATTRIBUTE_FALLTHROUGH;
case TCSETA:
case TCSETAW:
case TCSETAF:
case TIOCGWINSZ:
if (entering(tcp))
return 0;
+ ATTRIBUTE_FALLTHROUGH;
case TIOCSWINSZ:
decode_winsize(tcp, arg);
break;
case TIOCGSIZE:
if (entering(tcp))
return 0;
+ ATTRIBUTE_FALLTHROUGH;
case TIOCSSIZE:
decode_ttysize(tcp, arg);
break;
case TIOCMGET:
if (entering(tcp))
return 0;
+ ATTRIBUTE_FALLTHROUGH;
case TIOCMBIS:
case TIOCMBIC:
case TIOCMSET:
#endif
if (entering(tcp))
return 0;
+ ATTRIBUTE_FALLTHROUGH;
case TIOCSPGRP:
case TIOCSETD:
case FIONBIO:
return RVAL_DECODED;
}
- return RVAL_DECODED | 1;
+ return RVAL_IOCTL_DECODED;
}