Russian Apache Switch to English
Switch to Russian koi8-r
windows=1251
cp-866
iso8859-5
Russian Apache Как это работает Рекоммендации Где взять Как установить Как настроить Статус и поддержка
Краткий обзор FAQ Список рассылки Благодарности Поиск по серверу Powered by Russian Apache
Russian Apache mailing list archive (apache-rus@lists.lexa.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [apache-rus] Russian Apache 1.3.4 PL28.7 avaliable




> > > > можно только один символ, вроде это для wide table нужно длинные символы.
> > > utf - это по определению wide-таблица. one->many
> > А я про это и говорю, слишком мал t[2] для wide table и 
> > алгоритм не поддерживает -((((, и табуляцию как ' ' ...
> Странное ты говоришь. 
> Wide-table имеет формат
> <CHAR><SPACES><STRING>
> где CHAR - или один символ или 0xAA - его 16-ричное представление
> SPACES - некоторое количество пробелов и '\t'
> STRING -строка произвольной длины (не может начинаться с пробела или
>  табуляции)
> 
> Чтением этих таблиц заведует 
> CMDCONST char *
> add_wide_recode_table (cmd_parms *cmd, charset_dir_t *dc, 
>                        char *charsetfrom, char *charsetto, 
> 		                              char *filename)
> из исходников которой это прозрачно следует.

Не прими это за наезд, но все же что делает этот кусок из add_wide_recode_table:

  while (fgets(string,MAX_STRING_LEN,f) != NULL)
    {
      char *p;
      if (string[0] != '#' && (p=strchr(string,' ')) != NULL)
// В часности  - strchr(string,' ') - где же здесь \t ?
// Здесь бы подошел  strtok_r.
        {
          *(p++)='\0';
          if (string[0]=='0' && string[1]=='x')
            sscanf(string,"0x%x",&src);
          else if (string[1])
            src=atoi(string); /* one-byte numbers treated as symbols! */
          else
            src=*string;
          if (p[0]=='0' && p[1]=='x')
            {
              sscanf(p,"0x%x",&dst);  // И этот sscanf это делает?
              t[0]=dst;t[1]='\0';
            }
          else
            {
              t[0]=0;
              strtok(p," \t\n\r#");
            }
          if (src < 256)
            {
              if(t[0])
                ptrs[src] = ap_pstrdup(lpool,t);
              else
                {
                  ptrs[src] = ap_pstrdup(lpool,p);
                }
            }

Может доделать. чтобы CharsetWideRecodeTable понимал страку из hex для DST?

-- 

                      С наилучшими пожеланиями, Евгений Бырганов.
                      Best regards, Eugene Byrganov.

  mailto:E.B.Byrganov@inp.nsk.su
  work - http://www.inp.nsk.su/





Спонсоры сайта:

[ Russian Apache ] [ Как это работает ] [ Рекомендации ] [ Где взять ] [ Как установить ] [ Как настроить ] [ Статус и поддержка ] [ Краткий обзор ] [ FAQ ] [ Список рассылки ] [ Благодарности ] [ Поиск по серверу ] [ Powered by Russian Apache ] [ Apache-talk archive ]

"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.