Итак. FreeBSD 6.0BETA2. Порты свежайшие (CVSUP). Абсолютно всё ставим из портов. На текущий момент в портах имеется sarg-2.0.8. Я взял с сайта 2.0.9. В порте sarg'а правим Makefile:
PORT_VERSION c 2.0.8 на 2.0.9.
к CFLAGS добавляем -DHAVE_ICONV_H=1
к LDFLAGS добавляем -liconv
далее:
make makesum (чтобы обновить distinfo)
make all install clean
В /usr/local/etc/sarg/sarg.conf
Language Russian_koi8
Charset Koi8-r
P.S. В Makefile порта freetype2 есть строка CONFIGURE_ARGS+= --disable-nls
я исправлял на --enable-nls, но не знаю надо ли это было делать.
P.P.S. В исходниках sarg есть файл index.c
В нём есть такой фрагмент:
if(strcmp(IndexSortOrder,"A") == 0)
// sprintf(html,"sort -t';' -k 7,7 %s -o %s", wdir_tmp, wdir_tmp2);
sprintf(html,"sort -t';' +6.5n +6.2M +6.0n '%s' -o '%s'", wdir_tmp, wdir_tmp2);
else
// sprintf(html,"sort -t';' -r -k 7,7 %s -o %s", wdir_tmp, wdir_tmp2);
sprintf(html,"sort -t';' +6.5nr +6.2Mr +6.0nr '%s' -o '%s'", wdir_tmp, wdir_tmp2);
Эта хрень работает неправильно. man sort показывает синтаксис более близкий к закомментированным строкам, но это не помогло. Я полностью закомментировал этот кусок и поставил вместо него
sprintf(html,"cat %s > %s", wdir_tmp, wdir_tmp2);
до лучших времен, пока разберусь со структурой того, что он сортирует.