From afd902cf80ea8f5c5f96af4fd873b20f89c9a413 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Wilfried=20G=C3=B6esgens?= Date: Thu, 23 Oct 2008 21:49:21 +0000 Subject: [PATCH] * fix browser LANG header evaluation; strbuf migration wasn't complete. --- webcit/gettext.c | 123 ++++++++++++++++++++++++----------------------- 1 file changed, 62 insertions(+), 61 deletions(-) diff --git a/webcit/gettext.c b/webcit/gettext.c index 352b6f7cb..0994161e7 100644 --- a/webcit/gettext.c +++ b/webcit/gettext.c @@ -69,72 +69,73 @@ void httplang_to_locale(StrBuf *LocaleString) nParts=StrBufNum_tokens(LocaleString,','); for (i=0; ((ipriority=atol(&sbuf[0]); - } - else { - ls->priority=1000; - } - /** get the locale part */ - StrBufExtract_token(SBuf ,Buf, 0, ';'); - /** get the lang part, which should be allways there */ - extract_token(&ls->lang[0], ChrPtr(SBuf), 0, '-', 16); - /** get the area code if any. */ - if (StrBufNum_tokens(SBuf,'-') > 1) { - extract_token(&ls->region[0],ChrPtr(SBuf),1,'-',16); - } - else { /** no ara code? use lang code */ - blen=strlen(&ls->lang[0]); - memcpy(&ls->region[0], ls->lang,blen); - ls->region[blen]='\0'; - } /** area codes are uppercase */ - blen=strlen(&ls->region[0]); - for (j=0; jregion[j]); - ls->region[j]=(char)chars;/** \todo ?! */ - } - sprintf(&lbuf[0],"%s_%s",&ls->lang[0],&ls->region[0]); + StrBufExtract_token(Buf,LocaleString, i,','); + /** we are searching, if this list item has something like ;q=n*/ + if (StrBufNum_tokens(Buf,'=')>1) { + int sbuflen, k; + StrBufExtract_token(SBuf,Buf, 1,'='); + sbuflen=StrLength(SBuf); + for (k=0; kpriority=StrTol(SBuf); + } + else { + ls->priority=1000; + } + /** get the locale part */ + StrBufExtract_token(SBuf ,Buf, 0, ';'); + /** get the lang part, which should be allways there */ + extract_token(&ls->lang[0], ChrPtr(SBuf), 0, '-', 16); + /** get the area code if any. */ + if (StrBufNum_tokens(SBuf,'-') > 1) { + extract_token(&ls->region[0],ChrPtr(SBuf),1,'-',16); + } + else { /** no ara code? use lang code */ + blen=strlen(&ls->lang[0]); + memcpy(&ls->region[0], ls->lang,blen); + ls->region[blen]='\0'; + } /** area codes are uppercase */ + blen=strlen(&ls->region[0]); + for (j=0; jregion[j]); + ls->region[j]=(char)chars;/** \todo ?! */ + } + sprintf(&lbuf[0],"%s_%s",&ls->lang[0],&ls->region[0]); - /** check if we have this lang */ - ls->availability=1; - ls->selectedlang=-1; - for (j=0; jlang[0], AvailLangLoaded[j]); - if ((result<0)&&(resultavailability)){ - ls->availability=result; - ls->selectedlang=j; - } - /** match against lang and locale */ - if (0==strcasecmp(&lbuf[0], AvailLangLoaded[j])){ - ls->availability=0; - ls->selectedlang=j; - j=nLocalesLoaded; - } + /** check if we have this lang */ + ls->availability=1; + ls->selectedlang=-1; + for (j=0; jlang[0], AvailLangLoaded[j]); + if ((result<0)&&(resultavailability)){ + ls->availability=result; + ls->selectedlang=j; } + /** match against lang and locale */ + if (0==strcasecmp(&lbuf[0], AvailLangLoaded[j])){ + ls->availability=0; + ls->selectedlang=j; + j=nLocalesLoaded; + } + } } prio=0; -- 2.30.2