From ddc112c4e3a39bb6ba627a0a04c2e69ce6645320 Mon Sep 17 00:00:00 2001 From: jhb Date: Mon, 17 Aug 2015 19:08:48 +0000 Subject: Use an xlat table and xlookup() instead of a home-rolled version for the sigprocmask operation type. --- usr.bin/truss/syscalls.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) (limited to 'usr.bin') diff --git a/usr.bin/truss/syscalls.c b/usr.bin/truss/syscalls.c index 3132f21..08769f2 100644 --- a/usr.bin/truss/syscalls.c +++ b/usr.bin/truss/syscalls.c @@ -555,6 +555,11 @@ static struct xlat linux_socketcall_ops[] = { XEND }; +static struct xlat sigprocmask_ops[] = { + X(SIG_BLOCK) X(SIG_UNBLOCK) X(SIG_SETMASK) + XEND +}; + #undef X #undef XEND @@ -1096,15 +1101,7 @@ print_arg(struct syscall_args *sc, unsigned long *args, long retval, break; } case Sigprocmask: { - switch (args[sc->offset]) { -#define S(a) case a: tmp = strdup(#a); break; - S(SIG_BLOCK); - S(SIG_UNBLOCK); - S(SIG_SETMASK); -#undef S - } - if (tmp == NULL) - asprintf(&tmp, "0x%lx", args[sc->offset]); + tmp = strdup(xlookup(sigprocmask_ops, args[sc->offset])); break; } case Fcntlflag: { -- cgit v1.1