aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
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;
+ }
}
}