On Wed, Nov 28, 2007 at 02:37:07PM +0300, Alexander Bokovoy wrote: > Alexey Tourbin пишет: > > On Wed, Nov 28, 2007 at 12:35:52PM +0300, Alexander Bokovoy wrote: > >> Еще бы оно работало. Вы же просто повторили ерунду за авторами этого > >> плагина. sizeof(ttyname), как и sizeof(name), равносильны sizeof(char *) > >> и равны размеру указателя, но никак не размеру строки. Там нужно > >> использовать strlen(ttyname). > > > > UINT4 rc_map2id(char *name) > > { > > struct map2id_s *p; > > char ttyname[PATH_MAX]; > > > > *ttyname = '\0'; > > if (*name != '/') > > strcpy(ttyname, "/dev/"); > > > > strncat(ttyname, name, sizeof(ttyname)); > > > > for(p = map2id_list; p; p = p->next) > > if (!strcmp(ttyname, p->name)) return p->id; > > > > warn("rc_map2id: can't find tty %s in map database", ttyname); > > > > return 0; > > } > > > > Есть любители кодить на язычке Си всякие прикладные вещи. > > И там это ещё называется "качество кода" или как-то так. > Это не качество кода, это несоответствие занимаемой должности. :-) Дело в том что в язычке Си нет стандартного и эффективного способа конкатенации двух строк. То есть язычок Си подходит для низкоуровневого системного программирования, но когда на нём хочется писать что-то более прикладное, то это нужно быть в значительной степени святым человеком. Я считаю это требование несправедливым -- людишки в среднем далеко не святы. Поэтому не стоит кодить на Си прикладные вещи -- даже если то что ты пишешь это правильно, то потом кто-нибудь сделать "патч" к твоему коду так что у тебя волосы дыбом встанут. Язык Си нужен для _реализации_ эффективной работы со строками, для _реализации_ грамотной стратегии автоматического управления памятью и т.п. Это между прочим половинчато и наблюдается в менее тривиальном сишном коде -- например, в postfix или vsftpd есть свои мини-библиотеки для работы со строками, а в libxml2 в базовой структуре данных xmlExpNode имеется поле "счётчик ссылок". Так что когда есть возможность не писать на Си, а писать на чём угодно -- на шелле, awk, перле, питоне -- стоит этой возможностью воспользоваться. Впрочем, у меня есть и иные смутные соображения, на чём нужно писать.