cosmopolitan/examples
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
..
package Make considerably more progress on AARCH64 2023-05-12 22:42:57 -07:00
pyapp Fix V=0 make mode 2022-06-21 01:32:31 -07:00
pylife Cherry-pick bug fixes and Landlock Make 1.0.2 2022-08-10 12:56:45 -07:00
auto-launch-gdb-on-crash.c Introduce #include <cosmo.h> to toolchain users 2023-06-09 18:03:05 -07:00
auto-memory-safety-crash.c Fold LIBC_BITS into LIBC_INTRIN 2022-08-11 12:13:18 -07:00
auto-memory-safety-crash2.c Make fixes and improvements 2022-10-19 07:19:19 -07:00
auto-memory-safety-crash3.c Fold LIBC_BITS into LIBC_INTRIN 2022-08-11 12:13:18 -07:00
breakpoint.c Make considerably more progress on AARCH64 2023-05-12 22:42:57 -07:00
certapp.c Improve ZIP filesystem and change its prefix 2021-08-22 01:11:53 -07:00
check.c Make improvements 2022-05-12 06:45:36 -07:00
clock.c Introduce #include <cosmo.h> to toolchain users 2023-06-09 18:03:05 -07:00
clock_getres.c Disable linker map generation and improve tinyness 2023-06-09 03:29:26 -07:00
compress.c Fix bugs in cosmocc toolchain 2023-06-08 23:44:03 -07:00
cosh.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
cplusplus-stl.cc Import C++ Standard Template Library 2022-03-22 06:41:54 -07:00
cplusplus.cc Fold LIBC_BITS into LIBC_INTRIN 2022-08-11 12:13:18 -07:00
crashreport.c Introduce #include <cosmo.h> to toolchain users 2023-06-09 18:03:05 -07:00
crashreport2.c Introduce #include <cosmo.h> to toolchain users 2023-06-09 18:03:05 -07:00
ctrlc.c Improve signals and memory protection 2022-04-12 22:11:00 -07:00
datauri.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
date.c Make improvements to cosmocc toolchain 2023-06-10 15:50:01 -07:00
decompress.c Fix bugs in cosmocc toolchain 2023-06-08 23:44:03 -07:00
defer-statements.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
dot.c Release Landlock Make v1.0.1 2022-08-10 12:17:06 -07:00
examples.mk Get --ftrace working on aarch64 2023-06-05 23:35:31 -07:00
exec.c Reduce makefile dependencies by 10% 2022-06-08 20:01:28 -07:00
exit.c Make improvements 2022-05-12 06:45:36 -07:00
fastmod.c Fix some example code 2021-08-10 13:38:27 -07:00
forkexec.c Make improvements 2022-03-16 13:40:10 -07:00
forkexecwait.c Make improvements 2022-03-16 13:40:10 -07:00
forkrand.c Rename rand64() to _rand64() 2022-10-10 04:12:06 -07:00
gc.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
generalized-automatic-datastructure-printing.c Fold LIBC_RAND into LIBC_STDIO/TINYMATH/INTRIN 2022-08-11 12:32:00 -07:00
getcpucount.c Greatly expand system() shell code features 2022-10-11 21:30:31 -07:00
getdomainname.c Improve cosmocc toolchain 2023-03-05 23:52:49 -08:00
getrandom.c Introduce native support for MacOS ARM64 2023-05-20 04:17:03 -07:00
gettimeofday.c Refactor gettimeofday() 2022-08-05 02:13:41 -07:00
greenbean.c Greatly expand system() shell code features 2022-10-11 21:30:31 -07:00
gui.c Make examples folder somewhat more focused 2021-03-05 06:09:12 -08:00
hangman.c Fold LIBC_RAND into LIBC_STDIO/TINYMATH/INTRIN 2022-08-11 12:32:00 -07:00
hello.c Remove malloc() dependency on pledge() / unveil() 2022-07-24 21:51:37 -07:00
hello2.c Trim down executable sizes 2021-02-11 08:37:18 -08:00
hello3.c Improve performance of printf functions 2021-04-24 13:58:50 -07:00
hellolua.c Improve ZIP filesystem and change its prefix 2021-08-22 01:11:53 -07:00
hellolua.lua Add Hello World example for LUA C API (#97) 2021-03-08 14:15:59 -08:00
hertz.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
hiredis.c Add a new example showing how to use hiredis. 2023-01-01 16:30:10 -08:00
hostname.c Improve quality of our ANSI C clock() function 2022-09-05 23:03:49 -07:00
img.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
kilo.c Fix bugs in termios library and cleanup code 2023-06-14 19:30:52 -07:00
life.c Always initialize thread local storage 2022-07-19 00:21:46 -07:00
linenoise.c Fix bugs with recent change 2022-04-16 10:40:23 -07:00
loadavg.c Fix some win32 definitions 2022-03-22 19:54:36 -07:00
ls.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
lstime.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
mkhello.c Support Linux binfmt_misc and APE loading on Apple 2022-05-21 09:28:25 -07:00
nanosleep.c Make fixes and improvements 2022-11-08 10:11:46 -08:00
nanosleep_test.c Make fixes and improvements 2022-11-08 10:11:46 -08:00
nc.c Prove that Makefile is fully defined 2022-08-06 04:05:08 -07:00
nesemu1.cc Fix bugs in termios library and cleanup code 2023-06-14 19:30:52 -07:00
nomodifyself.c Introduce native support for MacOS ARM64 2023-05-20 04:17:03 -07:00
panels.c Fix bugs in termios library and cleanup code 2023-06-14 19:30:52 -07:00
picol.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
portscan.c Disable linker map generation and improve tinyness 2023-06-09 03:29:26 -07:00
printargs.c Make improvements 2022-04-24 10:06:05 -07:00
printprimes.c Do code cleanup use duff device linenoise i/o 2022-04-22 18:56:52 -07:00
reboot.c Improve cancellations, randomness, and time 2022-11-05 23:45:32 -07:00
rlimit.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
rusage.c Reduce makefile dependencies by 10% 2022-06-08 20:01:28 -07:00
script.c Fix bugs in termios library and cleanup code 2023-06-14 19:30:52 -07:00
script.txt Add script.com and whois.com courtesy of FreeBSD 2022-09-13 20:26:13 -07:00
seq.c Make improvements 2022-04-29 00:42:47 -07:00
setitimer.c Change sigaction_f to match sysv signature (#585) 2022-09-02 05:08:35 -07:00
shutdown.c Improve cancellations, randomness, and time 2022-11-05 23:45:32 -07:00
stackoverflow.c Introduce #include <cosmo.h> to toolchain users 2023-06-09 18:03:05 -07:00
stat.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
statfs.c Make some system call fixes 2023-02-12 22:16:34 -08:00
stringbuffer.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
symtab.c Introduce #include <cosmo.h> to toolchain users 2023-06-09 18:03:05 -07:00
sysinfo.c Fix sysinfo() 2023-02-23 06:54:58 -08:00
system.c Make cli commands yoinkable into cosmo shell 2022-10-14 16:37:29 -07:00
thread.c Tidy up the threading implementation 2022-09-10 02:56:25 -07:00
time.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
tls.c Make improvements 2022-07-21 03:36:42 -07:00
ttyinfo.c Fix bugs in termios library and cleanup code 2023-06-14 19:30:52 -07:00
ucontext-sigfpe-recovery.c Make considerably more progress on AARCH64 2023-05-12 22:42:57 -07:00
uname.c Improve quality of uname/gethostname/getdomainname 2022-09-03 20:20:40 -07:00
unbourne.c Fix bugs in cosmocc toolchain 2023-06-08 23:44:03 -07:00
vga.c Make considerably more progress on AARCH64 2023-05-12 22:42:57 -07:00
vga2.c Make considerably more progress on AARCH64 2023-05-12 22:42:57 -07:00
vqsort.c Add more sorting algorithms 2023-04-27 05:44:44 -07:00
walk.c Don't relocate file descriptor memory 2022-09-09 16:54:28 -07:00
wall.c Make considerably more progress on AARCH64 2023-05-12 22:42:57 -07:00
whois.c Avoid /etc/services in whois command 2023-06-06 00:11:41 -07:00
x86split.c Improve signals and memory protection 2022-04-12 22:11:00 -07:00