From 3c393717c65ca45c829f387416eff2597a941fac Mon Sep 17 00:00:00 2001 From: =?utf8?q?Wilfried=20G=C3=B6esgens?= Date: Wed, 28 Oct 2009 22:32:40 +0000 Subject: [PATCH] * use the new regular way to get the accept language header --- webcit/gettext.c | 24 ++++++++++++++---------- webcit/setup.c | 1 + webcit/webcit.h | 1 + 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/webcit/gettext.c b/webcit/gettext.c index ced6c7ed3..9d50582f1 100644 --- a/webcit/gettext.c +++ b/webcit/gettext.c @@ -411,12 +411,23 @@ const char *get_selected_language(void) { #endif } + +void Header_HandleAcceptLanguage(StrBuf *Line, ParsedHttpHdrs *hdr) +{ + hdr->HR.browser_language = Line; +} + void InitModule_GETTEXT (void) { initialize_locales(); - RegisterNamespace("LANG:SELECT", 0, 0, tmplput_offer_languages, NULL, CTX_NONE); + + RegisterHeaderHandler(HKEY("ACCEPT-LANGUAGE"), + Header_HandleAcceptLanguage); + + RegisterNamespace("LANG:SELECT", 0, 0, + tmplput_offer_languages, NULL, CTX_NONE); } @@ -425,15 +436,8 @@ SessionNewModule_GETTEXT (wcsession *sess) { #ifdef ENABLE_NLS - OneHttpHeader *vLine = NULL; - - if ( (sess->Hdr->HTTPHeaders != NULL) - && GetHash(sess->Hdr->HTTPHeaders, HKEY("ACCEPT-LANGUAGE"), (void *)&vLine) - && (vLine != NULL) - && (vLine->Val != NULL) - ) { - StrBuf *accept_language = vLine->Val; - httplang_to_locale(accept_language, sess); + if (sess->Hdr->HR.browser_language != NULL) { + httplang_to_locale(sess->Hdr->HR.browser_language, sess); } #endif } diff --git a/webcit/setup.c b/webcit/setup.c index 91a979411..f93abb22d 100644 --- a/webcit/setup.c +++ b/webcit/setup.c @@ -31,6 +31,7 @@ void RegisterNS(const char *NSName, long len, WCHandlerFunc HandlerFunc, WCPreevalFunc PreEvalFunc, int ContextRequired){} +void RegisterHeaderHandler(const char *Name, long Len, Header_Evaluator F){} pthread_key_t MyConKey; #ifdef ENABLE_NLS diff --git a/webcit/webcit.h b/webcit/webcit.h index 94e6c8d36..745b152a3 100644 --- a/webcit/webcit.h +++ b/webcit/webcit.h @@ -386,6 +386,7 @@ typedef struct _HdrRefs { StrBuf *ReqLine; StrBuf *http_host; /* HTTP Host: header */ StrBuf *browser_host; + StrBuf *browser_language; StrBuf *user_agent; StrBuf *plainauth; StrBuf *dav_ifmatch; -- 2.30.2