From 935133ccf86668a12258303728a0dfd428361bc0 Mon Sep 17 00:00:00 2001 From: Stephan Bosch <stephan@rename-it.nl> Date: Sat, 10 Jan 2009 23:19:48 +0100 Subject: [PATCH] Multiscript: implemented sorting of script files in script directories for Sieve plugin. --- TODO | 3 +-- src/plugins/lda-sieve/lda-sieve-plugin.c | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/TODO b/TODO index a211a22d0..5d738f5b0 100644 --- a/TODO +++ b/TODO @@ -3,8 +3,7 @@ Current: * Finish enotify extension: - Mailto: prevent multiple notifications to a single recipient - Regorous testing -* Finish and test new multiscript support - - Sort multiscript directories for lda plugin. +* Test new multiscript support Next (in order of descending priority/precedence): diff --git a/src/plugins/lda-sieve/lda-sieve-plugin.c b/src/plugins/lda-sieve/lda-sieve-plugin.c index 3dbc898b6..efc34c708 100644 --- a/src/plugins/lda-sieve/lda-sieve-plugin.c +++ b/src/plugins/lda-sieve/lda-sieve-plugin.c @@ -284,7 +284,21 @@ static void lda_sieve_multiscript_get_scriptfiles const char *file; while ( (file=sieve_directory_get_scriptfile(sdir)) != NULL ) { - array_append(scriptfiles, &file, 1); + const char *const *scripts; + unsigned int count, i; + + /* Insert into sorted array */ + + scripts = array_get(scriptfiles, &count); + for ( i = 0; i < count; i++ ) { + if ( strcmp(file, scripts[i]) < 0 ) + break; + } + + if ( i == count ) + array_append(scriptfiles, &file, 1); + else + array_insert(scriptfiles, i, &file, 1); } sieve_directory_close(&sdir); -- GitLab