Что: f049e492fbe80e18f7eefa5e33fd926f76237392
Когда: 2021-03-07 12:29:23+03:00
Темы: bsd hate
glibc функции и crap В продолжение d9a8dfe35de9fbd81cecefffda022ee42e5e7ce9 ещё вспомнил эпопею с темой про strcat/strcpy. Для них есть strncat/strncpy варианты (хотя, говорят они никогда не предназначались для безопасной замены str*). Но которыми сложно пользоваться правильно. Поэтому OpenBSD изобрела strlcat/strlcpy версии: https://www.sudo.ws/todd/papers/strlcpy.html которые и удобны и просты и безопасны и быстры. Конечно же, glibc отверг предложение включить эти функи, ибо это же "BSD crap": https://sourceware.org/legacy-ml/libc-alpha/2000-08/msg00053.html Мол нужно всегда знать длину ваших строк: https://stackoverflow.com/questions/2114896/why-are-strlcpy-and-strlcat-considered-insecure С одной стороны, конечно, верно. С другой по ссылке верно заметили что читаемость strl* версий куда лучше. Так можно и про все str* функи было сказать что это crap и достаточно циклов с memset-ами всяких. Вот и выходит что в glibc нет ни _s функций, ни strl* и наверное ещё тьмищи других, ведь опыта то у меня с гулькин нос ещё. Так как всё равно BSD функи используются активно даже в GNU проектах, то сделали вот такой вот проект: https://libbsd.freedesktop.org/wiki/ где заприметил всякие {le,be}*{enc,dec} функции, которые я уже как-то использовал и споткнулся об их отсутствии в glibc. А выбрал я их, читая man, как самые удобные для использования. А раз так, то конечно же фиг будут в glibc. А strl* кстати есть в musl -- молодцы!
Сгенерирован: SGBlog 0.34.0