Nightmare code
Jan. 19th, 2023 03:47 pmЯ только что нашёл ночной кошмар в сырцах. Это не kamehameha, которой боятся начинающие. Нет. Это coreutils-8.32/src/stty.c. Почему? Потому что внутри там есть вот такое:
#if defined VWERSE && !defined VWERASE /* AIX-3.2.5 */
# define VWERASE VWERSE
#endif
#if defined VDSUSP && !defined CDSUSP
# define CDSUSP Control ('y')
#endif
#if !defined VREPRINT && defined VRPRNT /* Irix 4.0.5 */
# define VREPRINT VRPRNT
#endif
...
#ifdef ECHOKE
{"echoke", local, SANE_SET | REV, ECHOKE, 0},
{"crtkill", local, REV | OMIT, ECHOKE, 0},
#endif
... И одна попытка понять, что оно на самом деле может, где и при каких обстоятельствах становится почти невозможной, потому что это automake, autotools, и поддержка легаси-бесконечности. Я могу себе представить упёртого человека, переписывающего браузер, но я не могу себе представить человека, переписывающего stty в кросс-платформенной форме (как оно есть сейчас).