aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAndreas Steffen <andreas.steffen@strongswan.org>2011-06-13 15:58:27 +0200
committerAndreas Steffen <andreas.steffen@strongswan.org>2011-06-13 15:58:27 +0200
commit4c191ca6bb5ac786d5151d73207219781d33c8f9 (patch)
treec2ccdd39e1d6f241522c6de14215ed259ac46b0a /src
parent44bd40a10165fbcc77c4d226205fd1c7393389c1 (diff)
downloadstrongswan-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.c25
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;
+ }
}
}