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@xxxxxxxxx
Programmer FIDO: 2:5020/371.32
Memonet Ltd. Work phone: +7 (095) 290-9055
=============================================================================
= Apache-Talk@xxxxxxxxxxxxx mailing list =
Mail "unsubscribe apache-talk" to majordomo@xxxxxxxxxxxxx if you want to quit.
= Archive avaliable at http://www.lexa.ru/apache-talk =
"Russian Apache" includes software developed
by the Apache Group for use in the Apache HTTP server project
(http://www.apache.org/) See
Apache LICENSE.
Copyright (C) 1995-2001 The Apache Group. All rights reserved.
Copyright (C) 1996 Dm. Kryukov; Copyright (C)
1997-2009 Alex Tutubalin. Design (C) 1998 Max Smolev.