changeset 12886:1ff458ba2e4b

lib-storage: Request sort program's all fields, not just the first one.
author Timo Sirainen <tss@iki.fi>
date Mon, 04 Apr 2011 16:08:50 +0300
parents 2c04c3dcd544
children 352999078d83
files src/lib-storage/index/index-search.c
diffstat 1 files changed, 28 insertions(+), 25 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-storage/index/index-search.c	Mon Apr 04 16:02:05 2011 +0300
+++ b/src/lib-storage/index/index-search.c	Mon Apr 04 16:08:50 2011 +0300
@@ -1048,32 +1048,35 @@
 	*headers_ctx_r = NULL;
 
 	t_array_init(&headers, 8);
-	header = NULL;
-	switch (sort_program[0] & MAIL_SORT_MASK) {
-	case MAIL_SORT_ARRIVAL:
-		*wanted_fields_r |= MAIL_FETCH_RECEIVED_DATE;
-		break;
-	case MAIL_SORT_CC:
-		header = "Cc";
-		break;
-	case MAIL_SORT_DATE:
-		*wanted_fields_r |= MAIL_FETCH_DATE;
-		break;
-	case MAIL_SORT_FROM:
-		header = "From";
-		break;
-	case MAIL_SORT_SIZE:
-		*wanted_fields_r |= MAIL_FETCH_VIRTUAL_SIZE;
-		break;
-	case MAIL_SORT_SUBJECT:
-		header = "Subject";
-		break;
-	case MAIL_SORT_TO:
-		header = "To";
-		break;
+	for (i = 0; sort_program[i] != MAIL_SORT_END; i++) {
+		header = NULL;
+
+		switch (sort_program[i] & MAIL_SORT_MASK) {
+		case MAIL_SORT_ARRIVAL:
+			*wanted_fields_r |= MAIL_FETCH_RECEIVED_DATE;
+			break;
+		case MAIL_SORT_CC:
+			header = "Cc";
+			break;
+		case MAIL_SORT_DATE:
+			*wanted_fields_r |= MAIL_FETCH_DATE;
+			break;
+		case MAIL_SORT_FROM:
+			header = "From";
+			break;
+		case MAIL_SORT_SIZE:
+			*wanted_fields_r |= MAIL_FETCH_VIRTUAL_SIZE;
+			break;
+		case MAIL_SORT_SUBJECT:
+			header = "Subject";
+			break;
+		case MAIL_SORT_TO:
+			header = "To";
+			break;
+		}
+		if (header != NULL)
+			array_append(&headers, &header, 1);
 	}
-	if (header != NULL)
-		array_append(&headers, &header, 1);
 
 	if (wanted_headers != NULL) {
 		for (i = 0; wanted_headers->name[i] != NULL; i++)