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