From: Timo Sirainen Date: Sun, 12 Apr 2009 01:46:32 +0000 (-0400) Subject: Sort environment for settings in reverse order, or it won't work.. X-Git-Tag: 2.0.alpha1~978 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c771818dd7a97d41636acc963924df4d9545e1e9;p=thirdparty%2Fdovecot%2Fcore.git Sort environment for settings in reverse order, or it won't work.. --HG-- branch : HEAD --- diff --git a/src/lib-settings/settings-parser.c b/src/lib-settings/settings-parser.c index 05098e7c70..a683759dba 100644 --- a/src/lib-settings/settings-parser.c +++ b/src/lib-settings/settings-parser.c @@ -565,6 +565,13 @@ int settings_parse_file(struct setting_parser_context *ctx, return ret; } +static int environ_cmp(const void *p1, const void *p2) +{ + const char *const *s1 = p1, *const *s2 = p2; + + return -strcmp(*s1, *s2); +} + int settings_parse_environ(struct setting_parser_context *ctx) { extern char **environ; @@ -581,7 +588,7 @@ int settings_parse_environ(struct setting_parser_context *ctx) for (i = 0; environ[i] != NULL; i++) array_append(&sorted_envs_arr, &environ[i], 1); sorted_envs = array_get_modifiable(&sorted_envs_arr, &count); - qsort(sorted_envs, count, sizeof(*sorted_envs), i_strcmp_p); + qsort(sorted_envs, count, sizeof(*sorted_envs), environ_cmp); for (i = 0; i < count && ret == 0; i++) { value = strchr(sorted_envs[i], '=');