diff options
author | Andreas Steffen <andreas.steffen@strongswan.org> | 2011-06-13 15:58:27 +0200 |
---|---|---|
committer | Andreas Steffen <andreas.steffen@strongswan.org> | 2011-06-13 15:58:27 +0200 |
commit | 4c191ca6bb5ac786d5151d73207219781d33c8f9 (patch) | |
tree | c2ccdd39e1d6f241522c6de14215ed259ac46b0a /src | |
parent | 44bd40a10165fbcc77c4d226205fd1c7393389c1 (diff) | |
download | strongswan-4c191ca6bb5ac786d5151d73207219781d33c8f9.tar.bz2 strongswan-4c191ca6bb5ac786d5151d73207219781d33c8f9.tar.xz |
support multiple language preferences
Diffstat (limited to 'src')
-rw-r--r-- | src/libimcv/plugins/imv_test/imv_test_state.c | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/src/libimcv/plugins/imv_test/imv_test_state.c b/src/libimcv/plugins/imv_test/imv_test_state.c index 5e38ab20b..36ccf4a10 100644 --- a/src/libimcv/plugins/imv_test/imv_test_state.c +++ b/src/libimcv/plugins/imv_test/imv_test_state.c @@ -14,6 +14,7 @@ #include "imv_test_state.h" +#include <utils/lexparser.h> #include <debug.h> typedef struct private_imv_test_state_t private_imv_test_state_t; @@ -107,19 +108,27 @@ METHOD(imv_state_t, get_reason_string, bool, private_imv_test_state_t *this, chunk_t preferred_language, chunk_t *reason_string, chunk_t *reason_language) { + chunk_t pref_lang, lang; int i; - for (i = 0 ; i < countof(reasons); i++) + while (eat_whitespace(&preferred_language)) { - chunk_t lang; + if (!extract_token(&pref_lang, ',', &preferred_language)) + { + /* last entry in a comma-separated list or single entry */ + pref_lang = preferred_language; + } - lang = chunk_create(reasons[i].lang, strlen(reasons[i].lang)); - if (chunk_equals(lang, preferred_language)) + for (i = 0 ; i < countof(reasons); i++) { - *reason_language = lang; - *reason_string = chunk_create(reasons[i].string, - strlen(reasons[i].string)); - return TRUE; + lang = chunk_create(reasons[i].lang, strlen(reasons[i].lang)); + if (chunk_equals(lang, pref_lang)) + { + *reason_language = lang; + *reason_string = chunk_create(reasons[i].string, + strlen(reasons[i].string)); + return TRUE; + } } } |