[Bug 283014] POSIX issue 7: fileno should be able to fail with EBADF
- Reply: bugzilla-noreply_a_freebsd.org: "[Bug 283014] POSIX issue 7: fileno should be able to fail with EBADF"
- Reply: bugzilla-noreply_a_freebsd.org: "[Bug 283014] POSIX issue 7: fileno should be able to fail with EBADF"
- Reply: bugzilla-noreply_a_freebsd.org: "[Bug 283014] POSIX issue 7: fileno should be able to fail with EBADF"
- Reply: bugzilla-noreply_a_freebsd.org: "[Bug 283014] POSIX issue 7: fileno should be able to fail with EBADF"
- Reply: bugzilla-noreply_a_freebsd.org: "[Bug 283014] POSIX issue 7: fileno should be able to fail with EBADF"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 27 Nov 2024 21:11:50 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=283014 Bug ID: 283014 Summary: POSIX issue 7: fileno should be able to fail with EBADF Product: Base System Version: CURRENT Hardware: Any OS: Any Status: New Severity: Affects Only Me Priority: --- Component: standards Assignee: standards@FreeBSD.org Reporter: gperciva@tarsnap.com Nitpicky issue. Currently, FreeBSD's fileno() does not set errno. POSIX issue 6 added an optional EBADF errno, so no problem there. Issue 7 added a mandatory EBADF: > RETURN VALUE > > ... Otherwise, the value -1 shall be returned and errno set to indicate the error. > > ERRORS > > The fileno() function shall fail if: > > [EBADF] > The stream is not associated with a file. https://pubs.opengroup.org/onlinepubs/9799919799/functions/fileno.html (Issue 8 did not alter fileno.) Code example, in case it's helpful: ``` $ cat bad-fileno.c #include <errno.h> #include <stdio.h> int main(void) { FILE * s; int rc; /* Get an invalid stream. */ s = fopen("/dev/null", "r"); fclose(s); /* Set errno to an arbitrary value. */ errno = 123; printf("errno: %i\n", errno); /* errno is still that arbitrary value; rc is correct. */ rc = fileno(s); printf("rc %i, errno: %i\n", rc, errno); } $ clang -Weverything bad-fileno.c && ./a.out errno: 123 rc -1, errno: 123 $ ``` -- You are receiving this mail because: You are the assignee for the bug.