[igt-dev] [PATCH i-g-t] lib: Reset errno to 0 after isatty

Arkadiusz Hiler arkadiusz.hiler at intel.com
Tue Apr 9 14:21:41 UTC 2019


Since igt_assert family of functions logs last errno we get a lot of
those: "Last errno: 25, Inappropriate ioctl for device"

isatty() seems to be the biggest offender in that area, so this patch
should limit amount of confusing messages significantly.

Cc: Martin Peres <martin.peres at linux.intel.com>
Cc: Petri Latvala <petri.latvala at intel.com>
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler at intel.com>
---
 lib/igt_aux.c  | 12 +++++++++---
 lib/igt_core.c |  2 ++
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/lib/igt_aux.c b/lib/igt_aux.c
index 266aa832..a3c904d7 100644
--- a/lib/igt_aux.c
+++ b/lib/igt_aux.c
@@ -631,8 +631,10 @@ static void igt_interactive_info(const char *format, ...)
 {
 	va_list args;
 
-	if (!isatty(STDERR_FILENO) || __igt_plain_output)
+	if (!isatty(STDERR_FILENO) || __igt_plain_output) {
+		errno = 0; /* otherwise would be either ENOTTY or EBADF */
 		return;
+	}
 
 	if (igt_log_level > IGT_LOG_INFO)
 		return;
@@ -984,8 +986,10 @@ void igt_debug_wait_for_keypress(const char *var)
 {
 	struct termios oldt, newt;
 
-	if (!isatty(STDIN_FILENO))
+	if (!isatty(STDIN_FILENO)) {
+		errno = 0; /* otherwise would be either ENOTTY or EBADF */
 		return;
+	}
 
 	if (!igt_interactive_debug)
 		return;
@@ -1030,8 +1034,10 @@ void igt_debug_manual_check(const char *var, const char *expected)
 	struct termios oldt, newt;
 	char key;
 
-	if (!isatty(STDIN_FILENO))
+	if (!isatty(STDIN_FILENO)) {
+		errno = 0; /* otherwise would be either ENOTTY or EBADF */
 		return;
+	}
 
 	if (!igt_interactive_debug)
 		return;
diff --git a/lib/igt_core.c b/lib/igt_core.c
index 6eb4798e..ae03e909 100644
--- a/lib/igt_core.c
+++ b/lib/igt_core.c
@@ -630,6 +630,8 @@ static void common_init_env(void)
 	if (!isatty(STDOUT_FILENO) || getenv("IGT_PLAIN_OUTPUT"))
 		__igt_plain_output = true;
 
+	errno = 0; /* otherwise may be either ENOTTY or EBADF because of isatty */
+
 	if (!__igt_plain_output)
 		setlocale(LC_ALL, "");
 
-- 
2.20.1



More information about the igt-dev mailing list