On Thu, 10 Feb 2000, Artem Chuprina wrote:
> > PY> а куда пойдет запрос с
> > PY> 'application/x-www-form-urlencoded; charset=koi8-r'
> >
> > PY> куда ?????
> >
> > ОЙ. Ни разу не видел браузера, отдающего charset в content-type.
> > Соответственно - ни разу не видел этой ошибки. anyway - это легко
> > исправляется -
> >
> > ===============
> > const char *fct = ap_table_get(r->headers_in, "Content-type");
> > const char *ct = strtok(fct, ";");
> > ===============
> >
> > Типичный one liner ;) Надо бы автору написать...
>
> Щазз... ap_table_get возвращает const char *, а strtok этого самого const ни в
> какую не хочет, и её можно понять:-)
>
> В качестве quick-n-dirty можно писать туда, как и для multipart/form-data,
> strstr вместо strEQ, а заодно закомментировать нафиг проверку type в
> ApacheRequest_parse_urlencoded. Кстати, она там case insensitive... А
> по-хорошему надо, конечно, во всех трёх :-) случаях писать !strncasecmp либо
> !strncmp (как по стандарту правильно?) А автора убить нафиг, чтоб впредь
> стандарты читал, прежде чем писать ЭТО. Есть подозрение, что там и все
> остальные вхождения strEQ и strcaseEQ надо проверять...
Насчёт совсем сразу убить я, конечно, погорячился... Всё-таки тип
application/, а не text/, и мне не удалось найти ссылки на документ, где бы
говорилось, что он подразумевает параметр charset. Кто-нибудь может ссылочку
дать? Зато убедился, что проверка везде должна быть case
insensitive. Однако, прежде чем делать аккуратный патч...
В man strncmp сказано
CONFORMING TO
SVID 3, POSIX, BSD 4.3, ISO 9899
а в man strncasecmp -
CONFORMING TO
BSD 4.3
(у меня Linux). Внимание, вопрос: можно ли смело писать в коде (или хотя бы в
#define) это самое strncasecmp? Нет, я знаю, что в коде стоит strcasecmp...
--
Artem Chuprina E-mail: ran@ran.pp.ru
Programmer FIDO: 2:5020/371.32
Memonet Ltd. Work phone: +7 (095) 290-9055
=============================================================================
= Apache-Talk@lists.lexa.ru mailing list =
Mail "unsubscribe apache-talk" to majordomo@lists.lexa.ru if you want to quit.
= Archive avaliable at http://www.lexa.ru/apache-talk =