[DragonFlyBSD - Bug #3252] (Resolved) tcsetattr/tcgetattr set errno incorrectly on non-TTY

liweitianux bugtracker-admin at leaf.dragonflybsd.org
Wed Oct 21 02:21:35 PDT 2026


Issue #3252 has been updated by liweitianux.

Status changed from New to Resolved

Patch merged. Thanks.

----------------------------------------
Bug #3252: tcsetattr/tcgetattr set errno incorrectly on non-TTY
http://bugs.dragonflybsd.org/issues/3252#change-14885

* Author: tonyc
* Status: Resolved
* Priority: Normal
* Category: Kernel
* Target version: 6.4
* Start date: 2020-10-26
----------------------------------------
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     root at www.shiningsilence.com:/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)
mem-ioctl-enotty.patch (317 Bytes)


-- 
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


More information about the Bugs mailing list