diff --git a/TODO b/TODO index a211a22d03dc1495461b38a7854d393e2de04e9c..5d738f5b09caabf82106f861da42b0742637f1e1 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 3dbc898b668dbf45ea400001991564092959b01f..efc34c70889c83ccf8a25875a6c7562085c4d4ba 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);