Issue #3252 has been updated by tonyc.
The same issue applies to tcdrain(), tcflow(), tcflush() and tcsendbreak(). ---------------------------------------- Bug #3252: tcsetattr/tcgetattr set errno incorrectly on non-TTY http://bugs.dragonflybsd.org/issues/3252#change-13929 * Author: tonyc * Status: New * Priority: Normal * Assignee: * Category: * Target version: ---------------------------------------- tcsetattr() and tcgetattr() are documented to fail as follows: Upon successful completion, the functions tcgetattr() and tcsetattr() return a value of 0. Otherwise, they return -1 and the global variable errno is set to indicate the error, as follows: ... [ENOTTY] The file associated with the fd argument to tcgetattr() or tcsetattr() is not a terminal. which matches POSIX, but they do not set errno correctly: $ cc -otcerror tcerror.c $ ./tcerror OK: tcgetattr on /dev/null failed as expected FAIL: tcgetattr on /dev/null set errno incorrectly: Operation not supported by device OK: tcsetattr failed as expected FAIL: tcsetattr failure set errno incorrectly: Operation not supported by device $ uname -a DragonFly 5.8-RELEASE DragonFly v5.8.3-RELEASE #10: Thu Sep 24 19:19:45 EDT 2020 [email protected]:/usr/obj/home/justin/release/5_8/sys/X86_64_GENERIC x86_64 This was discovered while diagnosing perl test failures. ---Files-------------------------------- tcerror.c (1.03 KB) -- You have received this notification because you have either subscribed to it, or are involved in it. To change your notification preferences, please click here: http://bugs.dragonflybsd.org/my/account
