changeset 22127:01731c293658

lib-storage: Sort code cleanup - Change index_sort_get_string() to return bool None of the callers cared about the difference between "expunged" vs "error".
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Mon, 05 Jun 2017 21:07:32 +0300
parents 4bbdc9bb178b
children 51688ebcaf40
files src/lib-storage/index/index-sort-string.c
diffstat 1 files changed, 15 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-storage/index/index-sort-string.c	Mon Jun 05 21:05:07 2017 +0300
+++ b/src/lib-storage/index/index-sort-string.c	Mon Jun 05 21:07:32 2017 +0300
@@ -347,7 +347,7 @@
 	return TRUE;
 }
 
-static int
+static bool
 index_sort_get_string(struct sort_string_context *ctx,
 		      uint32_t idx, struct mail_sort_node *node,
 		      const char **str_r)
@@ -381,7 +381,7 @@
 	if (ret <= 0)
 		node->no_update = TRUE;
 	*str_r = ctx->sort_strings[seq];
-	return ret;
+	return ret > 0;
 }
 
 static void
@@ -399,7 +399,7 @@
 	idx = left_idx = start_idx;
 	while (left_idx < right_idx) {
 		idx = (left_idx + right_idx) / 2;
-		if (index_sort_get_string(ctx, idx, &nodes[idx], &str) > 0)
+		if (index_sort_get_string(ctx, idx, &nodes[idx], &str))
 			ret = strcmp(key, str);
 		else {
 			/* put expunged (and otherwise failed) messages first */
@@ -408,7 +408,7 @@
 				prev--;
 				if (index_sort_get_string(ctx, prev,
 							  &nodes[prev],
-							  &str2) > 0) {
+							  &str2)) {
 					ret = strcmp(key, str2);
 					if (ret <= 0) {
 						idx = prev;
@@ -434,12 +434,14 @@
 
 	*idx_r = idx;
 	if (idx > start_idx) {
+		bool success;
+
 		prev = idx;
 		do {
 			prev--;
-			ret = index_sort_get_string(ctx, prev,
-						    &nodes[prev], &str2);
-		} while (ret <= 0 && prev > 0 &&
+			success = index_sort_get_string(ctx, prev,
+							&nodes[prev], &str2);
+		} while (!success && prev > 0 &&
 			 nodes[prev-1].sort_id == nodes[prev].sort_id);
 		*prev_str_r = str2;
 	}
@@ -463,9 +465,7 @@
 	prev_str = NULL;
 	for (zpos = nzpos = 0; zpos < zcount && nzpos < nzcount; ) {
 		zstr = ctx->sort_strings[znodes[zpos].seq];
-		ret = index_sort_get_string(ctx, nzpos, &nznodes[nzpos], &nzstr);
-
-		if (ret > 0)
+		if (index_sort_get_string(ctx, nzpos, &nznodes[nzpos], &nzstr))
 			ret = strcmp(zstr, nzstr);
 		else if (prev_str != NULL && strcmp(zstr, prev_str) == 0) {
 			/* identical to previous message, must keep them
@@ -599,16 +599,16 @@
 	}
 
 	if (nodes[left_idx].sort_id != 0 && !no_left_str) {
-		if (index_sort_get_string(ctx, left_idx,
-					  &nodes[left_idx], &left_str) <= 0) {
+		if (!index_sort_get_string(ctx, left_idx,
+					   &nodes[left_idx], &left_str)) {
 			/* not equivalent with any message */
 			left_str = NULL;
 		}
 		left_idx++;
 	}
 	if (nodes[right_idx].sort_id != 0 && !no_right_str) {
-		if (index_sort_get_string(ctx, right_idx,
-					  &nodes[right_idx], &right_str) <= 0) {
+		if (!index_sort_get_string(ctx, right_idx,
+					   &nodes[right_idx], &right_str)) {
 			/* not equivalent with any message */
 			right_str = NULL;
 		}
@@ -621,7 +621,7 @@
 	   share. some messages' sort strings may be equivalent, so give them
 	   the same sort IDs. */
 	for (i = left_idx; i <= right_idx; i++) {
-		if (index_sort_get_string(ctx, i, &nodes[i], &str) <= 0) {
+		if (!index_sort_get_string(ctx, i, &nodes[i], &str)) {
 			/* it doesn't really matter what we give to this
 			   message, since it's only temporary and we don't
 			   know its correct position anyway. so let's assume