The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

oops - was: спецы по squid есть?


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

- BEST_PEOPLE (2:5077/15.22) ---------------------- BEST_PEOPLE (RU.UNIX.BSD) -
 From : Valentin Nechayev                   2:5020/400      12 Dec 00  15:46:10
 Subj : Re: oops - was: Re: спецы по squid  есть?
-------------------------------------------------------------------------------
 * Forwarded from area 'RU.UNIX.BSD'

From: [email protected] (Valentin Nechayev)

        Hello Alexey Dokuchaev!

>> И вообще, сишные строки - давить.
AD> Это почему еще?  Имхо весьма колбасная реализация (при правильном подходе к
AD> использованию, разумеется).

В смысле, что их колбасит? Тогда да ;)

Я видел как-то оценки затрат в программах с массовой манипуляцией
null-terminated строками. Явный или неявный strlen() жрал, в среднем,
процессора во много раз больше любой другой библиотечной функции.

И не везде применимы null-terminated строки. Вот кто знает и четко осознает,
что RFC822 не содержит никакого запрета против символа NUL в письмах? Да, это
не символ для атома, но и не дает право игнорировать то, что после него до
конца строки. И куда я после этого засуну, например, mail.local, который
работает через fgets()?;( А также туеву хучу других самописок для почты,
которые повально работают через сишные строки?
(Сейчас вспомнилось, как я в приступе криворукости испортил sendmail и он
начал гнать левые символы - включая NUL - в транспортном ID письма.
При укладке mail.local'ом строка обрезалась. При укладке procmail'ом -
оставалась целой с NUL'ом посреди.)

А насчет правильного подхода... сколько времени и сколько багтрека
потребовалось, чтобы искоренили хотя бы gets(), не говоря о sprintf() и прочих
диверсиях? Какой-то тормоз из набора Керниган-Ритчи-Томпсон не удосужился
понять и затем написать большими буквами, что __нету__ понятия null-terminated
строк. А есть буфера __определенного размера__ и есть __константные__
null-terminated строки. И в такой относительно уже правильной концепции
никакая strcpy() вообще бы не появилась, а началось бы с того, что ввели
фактически только год назад в широком распространении - я про strlcpy(),
strlcat() и snprintf(). И то - сейчас для любого нормального применения
я их пошлю в сад - потому что строки со счетчиком будут необходимы.

(Тех, кто будет защищать K&R, кричать "а ты кто такой?" и иным образом
бить себя пяткой в грудь - заранее прошу не выступать. Все ваши аргументы
известны и пройдены.;()


/netch
--- ifmail v.2.15dev5
 * Origin: Lucky Netch Incorporated (2:5020/400)

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру