Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 17 Aug 2015 17:57:01 +0000 (UTC)
From:      John Baldwin <jhb@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r286849 - head/usr.bin/truss
Message-ID:  <201508171757.t7HHv1sA056212@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jhb
Date: Mon Aug 17 17:57:01 2015
New Revision: 286849
URL: https://svnweb.freebsd.org/changeset/base/286849

Log:
  Decode the optional SOCK_NONBLOCK and SOCK_CLOEXEC flags passed in a
  socket type.

Modified:
  head/usr.bin/truss/syscalls.c

Modified: head/usr.bin/truss/syscalls.c
==============================================================================
--- head/usr.bin/truss/syscalls.c	Mon Aug 17 17:52:28 2015	(r286848)
+++ head/usr.bin/truss/syscalls.c	Mon Aug 17 17:57:01 2015	(r286849)
@@ -1228,9 +1228,22 @@ print_arg(struct syscall_args *sc, unsig
 	case Sockdomain:
 		tmp = strdup(xlookup(sockdomain_arg, args[sc->offset]));
 		break;
-	case Socktype:
-		tmp = strdup(xlookup(socktype_arg, args[sc->offset]));
+	case Socktype: {
+		FILE *fp;
+		size_t len;
+		int type, flags;
+
+		flags = args[sc->offset] & (SOCK_CLOEXEC | SOCK_NONBLOCK);
+		type = args[sc->offset] & ~flags;
+		fp = open_memstream(&tmp, &len);
+		fputs(xlookup(socktype_arg, type), fp);
+		if (flags & SOCK_CLOEXEC)
+			fprintf(fp, "|SOCK_CLOEXEC");
+		if (flags & SOCK_NONBLOCK)
+			fprintf(fp, "|SOCK_NONBLOCK");
+		fclose(fp);
 		break;
+	}
 	case Shutdown:
 		tmp = strdup(xlookup(shutdown_arg, args[sc->offset]));
 		break;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201508171757.t7HHv1sA056212>