cosmopolitan/libc/stdio
Justine Tunney 4778cd4d27
Fix bugs in termios library and cleanup code
This change fixes an issue with the tcflow() magic numbers that was
causing bash to freeze up on Linux. While auditing termios polyfills,
several other issues were identified with XNU/BSD compatibility.

Out of an abundance of caution this change undefines as much surface
area from libc/calls/struct/termios.h as possible, so that autoconf
scripts are less likely to detect non-POSIX teletypewriter APIs that
haven't been polyfilled by Cosmopolitan.

This is a *breaking change* for your static archives in /opt/cosmos if
you use the cosmocc toolchain. That's because this change disables the
ioctl() undiamonding trick for code outside the monorepo, specifically
because it'll lead to brittle ABI breakages like this. If you're using
the cosmocc toolchain, you'll need to rebuild libraries like ncurses,
readline, etc. Yes diamonds cause bloat. To work around that, consider
using tcgetwinsize() instead of ioctl(TIOCGWINSZ) since it'll help you
avoid pulling every single ioctl-related polyfill into the linkage.

The cosmocc script was specifying -DNDEBUG for some reason. It's fixed.
2023-06-14 19:30:52 -07:00
..
__fpurge.c Add more missing libc functionality 2022-08-06 10:50:51 -07:00
__fseterr.c Make some foss compatibility improvements 2022-10-14 13:59:34 -07:00
alloc.c Fix some more issues with aarch64 and llama.cpp 2023-05-10 07:34:26 -07:00
alphasort.c Improve cosmo's conformance to libc-test 2022-10-10 17:52:41 -07:00
append.h Introduce #include <cosmo.h> to toolchain users 2023-06-09 18:03:05 -07:00
appendd.c Fix bugs and make code tinier 2022-10-09 23:21:34 -07:00
appendf.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
appendr.c Fix bugs and make code tinier 2022-10-09 23:21:34 -07:00
appends.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
appendstrlist.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
appendw.c Fix bugs and make code tinier 2022-10-09 23:21:34 -07:00
appendz.c Fix bugs and make code tinier 2022-10-09 23:21:34 -07:00
big5.inc Add more missing libc functionality 2022-08-06 10:50:51 -07:00
clearerr.c Fix bugs and make code tinier 2022-10-09 23:21:34 -07:00
clearerr_unlocked.c Fix bugs and make code tinier 2022-10-09 23:21:34 -07:00
codepages.inc Add more missing libc functionality 2022-08-06 10:50:51 -07:00
ctermid.c Add ctermid and L_ctermid 2022-07-22 04:39:04 -07:00
dirstream.c Introduce #include <cosmo.h> to toolchain users 2023-06-09 18:03:05 -07:00
dtoa.c Fix bugs in cosmocc toolchain 2023-06-08 23:44:03 -07:00
dumphexc.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
ecvt.c Don't relocate file descriptor memory 2022-09-09 16:54:28 -07:00
fbufsize.c Work towards improving signals and processes 2021-01-27 19:34:02 -08:00
fclose.c Rearrange code and make a faster sha256sum program 2022-11-02 23:19:16 -07:00
fdopen.c Rearrange code and make a faster sha256sum program 2022-11-02 23:19:16 -07:00
feof.c Remove stdio lock macros from amalgamation 2022-09-10 12:03:36 -07:00
feof_unlocked.c Make improvements 2022-05-28 00:28:09 -07:00
ferror.c Remove stdio lock macros from amalgamation 2022-09-10 12:03:36 -07:00
ferror_unlocked.c Rearrange code and make a faster sha256sum program 2022-11-02 23:19:16 -07:00
fflush.c Remove stdio lock macros from amalgamation 2022-09-10 12:03:36 -07:00
fflush.internal.h Rename hidden keyword to _Hide 2022-11-08 12:55:28 -08:00
fflush_unlocked.c Fix bugs in termios library and cleanup code 2023-06-14 19:30:52 -07:00
fflushimpl.c Get LIBC_MEM and LIBC_STDIO building with aarch64 2023-05-10 04:20:47 -07:00
fgetc.c Create ELF aliases for identical symbols 2023-06-06 03:33:49 -07:00
fgetc_unlocked.c Create ELF aliases for identical symbols 2023-06-06 03:33:49 -07:00
fgetln.c Remove stdio lock macros from amalgamation 2022-09-10 12:03:36 -07:00
fgetpos.c Change license 2020-12-27 17:18:44 -08:00
fgets.c Remove stdio lock macros from amalgamation 2022-09-10 12:03:36 -07:00
fgets_unlocked.c Improve cosmo's conformance to libc-test 2022-10-10 17:52:41 -07:00
fgetwc.c Create ELF aliases for identical symbols 2023-06-06 03:33:49 -07:00
fgetwc_unlocked.c Create ELF aliases for identical symbols 2023-06-06 03:33:49 -07:00
fgetws.c Remove stdio lock macros from amalgamation 2022-09-10 12:03:36 -07:00
fgetws_unlocked.c Apply even more fixups 2022-06-12 11:57:00 -07:00
fileno.c Remove stdio lock macros from amalgamation 2022-09-10 12:03:36 -07:00
fileno_unlocked.c Refactor some code 2022-05-28 14:09:21 -07:00
flbf.c Work towards improving signals and processes 2021-01-27 19:34:02 -08:00
flockfile.c Make more improvements to threading support 2022-10-09 00:08:47 -07:00
flushlbf.c Rearrange code and make a faster sha256sum program 2022-11-02 23:19:16 -07:00
fmemopen.c Rearrange code and make a faster sha256sum program 2022-11-02 23:19:16 -07:00
fopen.c Fix build break 2023-01-08 15:35:08 -08:00
fopenflags.c Fix issues with stdio needed for Lua 2021-03-06 19:04:26 -08:00
fpending.c Work towards improving signals and processes 2021-01-27 19:34:02 -08:00
fprintf.c Remove stdio lock macros from amalgamation 2022-09-10 12:03:36 -07:00
fprintf_unlocked.c Use re-entrant locks on stdio 2022-05-22 08:28:33 -07:00
fpurge.c Add more missing libc functionality 2022-08-06 10:50:51 -07:00
fputc.c Create ELF aliases for identical symbols 2023-06-06 03:33:49 -07:00
fputc_unlocked.c Create ELF aliases for identical symbols 2023-06-06 03:33:49 -07:00
fputs.c Remove stdio lock macros from amalgamation 2022-09-10 12:03:36 -07:00
fputs_unlocked.c Apply even more fixups 2022-06-12 11:57:00 -07:00
fputwc.c Create ELF aliases for identical symbols 2023-06-06 03:33:49 -07:00
fputwc_unlocked.c Create ELF aliases for identical symbols 2023-06-06 03:33:49 -07:00
fputws.c Improve system call wrappers 2022-09-19 15:06:25 -07:00
fputws_unlocked.c Improve system call wrappers 2022-09-19 15:06:25 -07:00
fread.c Further optimize the math library 2023-04-28 01:20:47 -07:00
fread_unlocked.c Rewrite .zip.o file linker 2023-06-10 09:29:44 -07:00
freadable.c Work towards improving signals and processes 2021-01-27 19:34:02 -08:00
freading.c Work towards improving signals and processes 2021-01-27 19:34:02 -08:00
freestrlist.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
freopen.c Remove stdio lock macros from amalgamation 2022-09-10 12:03:36 -07:00
fscanf.c Change license 2020-12-27 17:18:44 -08:00
fseeko.c Create ELF aliases for identical symbols 2023-06-06 03:33:49 -07:00
fseeko_unlocked.c Fix bugs and make code tinier 2022-10-09 23:21:34 -07:00
fsetlocking.c Add raw memory visualization tool to redbean 2022-05-14 04:33:58 -07:00
fsetpos.c Run clang-format on most sources 2023-04-27 05:44:32 -07:00
ftello.c Create ELF aliases for identical symbols 2023-06-06 03:33:49 -07:00
ftrylockfile.c Make more improvements to threading support 2022-10-09 00:08:47 -07:00
funlockfile.c Make more improvements to threading support 2022-10-09 00:08:47 -07:00
fwritable.c Work towards improving signals and processes 2021-01-27 19:34:02 -08:00
fwrite.c Fix bugs and make code tinier 2022-10-09 23:21:34 -07:00
fwrite_unlocked.c Rewrite .zip.o file linker 2023-06-10 09:29:44 -07:00
fwriting.c Work towards improving signals and processes 2021-01-27 19:34:02 -08:00
g_rando.c Get LIBC_MEM and LIBC_STDIO building with aarch64 2023-05-10 04:20:47 -07:00
gb18030.inc Add more missing libc functionality 2022-08-06 10:50:51 -07:00
gcvt.c Add pthread attributes and other libc functions 2022-09-07 05:28:32 -07:00
getchar.c Apply even more fixups 2022-06-12 11:57:00 -07:00
getchar_unlocked.c Apply even more fixups 2022-06-12 11:57:00 -07:00
getdelim.c Remove stdio lock macros from amalgamation 2022-09-10 12:03:36 -07:00
getdelim_unlocked.c Unbloat the build 2022-08-11 00:15:29 -07:00
getentropy.c Improve cancellations, randomness, and time 2022-11-05 23:45:32 -07:00
getline.c Fix some issues and do some code cleanup 2022-05-23 10:15:53 -07:00
getrandom.c Improve cancellations, randomness, and time 2022-11-05 23:45:32 -07:00
gets.c Make important improvements 2022-09-14 22:39:08 -07:00
getwchar.c Apply even more fixups 2022-06-12 11:57:00 -07:00
getwchar_unlocked.c Apply even more fixups 2022-06-12 11:57:00 -07:00
hex.internal.h Add function for creating hex string literals 2021-08-07 07:05:19 -07:00
hkscs.inc Add more missing libc functionality 2022-08-06 10:50:51 -07:00
iconv.c Run clang-format on most sources 2023-04-27 05:44:32 -07:00
iconv.h Add more missing libc functionality 2022-08-06 10:50:51 -07:00
internal.h Rename hidden keyword to _Hide 2022-11-08 12:55:28 -08:00
jis0208.inc Add more missing libc functionality 2022-08-06 10:50:51 -07:00
joinstrlist.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
kappendf.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
ksc.inc Add more missing libc functionality 2022-08-06 10:50:51 -07:00
kvappendf.c Fix bugs and make code tinier 2022-10-09 23:21:34 -07:00
lcg.internal.h Create ELF aliases for identical symbols 2023-06-06 03:33:49 -07:00
legacychars.inc Add more missing libc functionality 2022-08-06 10:50:51 -07:00
lemur64.c Rename rand64() to _rand64() 2022-10-10 04:12:06 -07:00
lock.internal.h Remove stdio lock macros from amalgamation 2022-09-10 12:03:36 -07:00
mkdtemp.c Rename rand64() to _rand64() 2022-10-10 04:12:06 -07:00
mkostemp.c Change license 2020-12-27 17:18:44 -08:00
mkostemps.c Import C++ Standard Template Library 2022-03-22 06:41:54 -07:00
mkostempsm.c Rename rand64() to _rand64() 2022-10-10 04:12:06 -07:00
mkstemp.c Change license 2020-12-27 17:18:44 -08:00
mkstemps.c Change license 2020-12-27 17:18:44 -08:00
mktemp.c Change license 2020-12-27 17:18:44 -08:00
mt19937.c Fold LIBC_RAND into LIBC_STDIO/TINYMATH/INTRIN 2022-08-11 12:32:00 -07:00
paginate.c Clean up some code 2022-12-11 14:30:59 -08:00
pclose.c Improve cancellations, randomness, and time 2022-11-05 23:45:32 -07:00
popen.c Improve cancellations, randomness, and time 2022-11-05 23:45:32 -07:00
posix_spawn.c Fix bugs in cosmocc toolchain 2023-06-08 23:44:03 -07:00
posix_spawn.h Revamp posix_spawn() implementation 2022-10-12 05:26:58 -07:00
posix_spawn.internal.h Revamp posix_spawn() implementation 2022-10-12 05:26:58 -07:00
posix_spawn_file_actions.c Revamp posix_spawn() implementation 2022-10-12 05:26:58 -07:00
posix_spawnattr.c Implement pthread_atfork() 2022-10-16 12:25:13 -07:00
posix_spawnp.c Revamp posix_spawn() implementation 2022-10-12 05:26:58 -07:00
printf.c Use re-entrant locks on stdio 2022-05-22 08:28:33 -07:00
putchar.c Apply even more fixups 2022-06-12 11:57:00 -07:00
putchar_unlocked.c Apply even more fixups 2022-06-12 11:57:00 -07:00
puts.c Remove stdio lock macros from amalgamation 2022-09-10 12:03:36 -07:00
putwc_unlocked.c Apply even more fixups 2022-06-12 11:57:00 -07:00
putwchar.c Apply even more fixups 2022-06-12 11:57:00 -07:00
putwchar_unlocked.c Apply even more fixups 2022-06-12 11:57:00 -07:00
rand.c Run clang-format on most sources 2023-04-27 05:44:32 -07:00
rand.h Create ELF aliases for identical symbols 2023-06-06 03:33:49 -07:00
random.c Fold LIBC_RAND into LIBC_STDIO/TINYMATH/INTRIN 2022-08-11 12:32:00 -07:00
rdrand.c Rename rand64() to _rand64() 2022-10-10 04:12:06 -07:00
rdrand_init.c Fold LIBC_RAND into LIBC_STDIO/TINYMATH/INTRIN 2022-08-11 12:32:00 -07:00
rdseed.c Rename rand64() to _rand64() 2022-10-10 04:12:06 -07:00
readdir64.S Tidy up the threading implementation 2022-09-10 02:56:25 -07:00
real1.c Fold LIBC_RAND into LIBC_STDIO/TINYMATH/INTRIN 2022-08-11 12:32:00 -07:00
real2.c Fold LIBC_RAND into LIBC_STDIO/TINYMATH/INTRIN 2022-08-11 12:32:00 -07:00
real3.c Fold LIBC_RAND into LIBC_STDIO/TINYMATH/INTRIN 2022-08-11 12:32:00 -07:00
revjis.inc Add more missing libc functionality 2022-08-06 10:50:51 -07:00
rewind.c Improve cosmo's conformance to libc-test 2022-10-10 17:52:41 -07:00
rngset.c Fold LIBC_RAND into LIBC_STDIO/TINYMATH/INTRIN 2022-08-11 12:32:00 -07:00
scandir.c Improve cosmo's conformance to libc-test 2022-10-10 17:52:41 -07:00
scanf.c Change license 2020-12-27 17:18:44 -08:00
setbuf.c Make major improvements to stdio 2021-03-26 22:31:41 -07:00
setbuffer.c Make major improvements to stdio 2021-03-26 22:31:41 -07:00
setlinebuf.c Make major improvements to stdio 2021-03-26 22:31:41 -07:00
setvbuf.c Rearrange code and make a faster sha256sum program 2022-11-02 23:19:16 -07:00
sortstrlist.c Simplify redbean serialization code 2022-09-06 20:07:29 -07:00
srand.c Improve cosmo's conformance to libc-test 2022-10-10 17:52:41 -07:00
stdbuf.c Rename hidden keyword to _Hide 2022-11-08 12:55:28 -08:00
stderr.c Get LIBC_MEM and LIBC_STDIO building with aarch64 2023-05-10 04:20:47 -07:00
stdin.c Get LIBC_MEM and LIBC_STDIO building with aarch64 2023-05-10 04:20:47 -07:00
stdio.h Get GCC to mostly build with Cosmo 2023-06-09 06:41:34 -07:00
stdio.mk Get --ftrace working on aarch64 2023-06-05 23:35:31 -07:00
stdio_ext.h Make some foss compatibility improvements 2022-10-14 13:59:34 -07:00
stdout.c Get LIBC_MEM and LIBC_STDIO building with aarch64 2023-05-10 04:20:47 -07:00
strfry.c Fold LIBC_ALG into LIBC_MEM 2022-08-13 08:32:34 -07:00
strlist.internal.h Rename hidden keyword to _Hide 2022-11-08 12:55:28 -08:00
syscall.c Fix syscall(2) returning -errno instead of using POSIX errno scheme (#830) 2023-06-11 10:33:28 -07:00
syscall.h Create a fake syscall() function due to Python 2023-06-09 05:18:38 -07:00
system.c Improve cancellations, randomness, and time 2022-11-05 23:45:32 -07:00
temp.h Rename hidden keyword to _Hide 2022-11-08 12:55:28 -08:00
tmpfile.c Improve cancellations, randomness, and time 2022-11-05 23:45:32 -07:00
ungetc.c Remove stdio lock macros from amalgamation 2022-09-10 12:03:36 -07:00
ungetc_unlocked.c Apply even more fixups 2022-06-12 11:57:00 -07:00
ungetwc.c Remove stdio lock macros from amalgamation 2022-09-10 12:03:36 -07:00
ungetwc_unlocked.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
vappendf.c Fix bugs and make code tinier 2022-10-09 23:21:34 -07:00
versionsort.c Improve cosmo's conformance to libc-test 2022-10-10 17:52:41 -07:00
vfprintf.c Remove stdio lock macros from amalgamation 2022-09-10 12:03:36 -07:00
vfprintf_unlocked.c Fix vfprintf and derived functions not handling write errors (#798) 2023-03-31 09:57:29 -04:00
vfscanf.c Change license 2020-12-27 17:18:44 -08:00
vigna.c Rename rand64() to _rand64() 2022-10-10 04:12:06 -07:00
vprintf.c Use re-entrant locks on stdio 2022-05-22 08:28:33 -07:00
vscanf.c Change license 2020-12-27 17:18:44 -08:00
xorshift.h Create ELF aliases for identical symbols 2023-06-06 03:33:49 -07:00
xorshift32.c Fold LIBC_RAND into LIBC_STDIO/TINYMATH/INTRIN 2022-08-11 12:32:00 -07:00
xorshift64.c Fold LIBC_RAND into LIBC_STDIO/TINYMATH/INTRIN 2022-08-11 12:32:00 -07:00