Ale POSIX má modernější a bezpečné varianty funkcí, ale ty staré tam z důvodu kompatibility musí zůstat, a to poměrně hodně dlouho. Je z toho pak trochu zmatek v dokumentaci.
Kompilátory (clang i gcc) a analyzátory (např. SonarQube) dokonce zobrazují warningy o deprecated/unsafe funkcích, ale je fakt, že ke skutečnému odstranění snad nikdy nedošlo.
Takže je to na programátorech, buď jim je to jedno a použíjí jednoduhé/nebezpečné funkce nebo prostě mají zájem na modernizaci kódu a ten kód skutečně modernizují.
Na druhou stranu jeste ze k tomu odstraneni nedoslo. Warning je OK, nepouzivat to s user provided stringy je taky standard, ale je spousta validnich use-case, kdy je to bezpecne i rychle - treba s->field = safemalloc(strlen(string)+1); strcpy(s->field, string) ; plus zpetna kompatibilita.
Ono staci to peklo, ktere rozpoutala ve starsich projektech c23 :(