From: Timo Sirainen Date: Tue, 18 Apr 2017 12:51:39 +0000 (+0300) Subject: lib-storage: mail_search_arg_to_imap() - minor FLAGS writing optimization X-Git-Tag: 2.2.30.rc1~76 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=fe4389584011a4b9581072723f5c91668fac23c1;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: mail_search_arg_to_imap() - minor FLAGS writing optimization Avoid an extra str_delete() by immediately calculating whether the parenthesis are needed. --- diff --git a/src/lib-storage/mail-search-args-imap.c b/src/lib-storage/mail-search-args-imap.c index c0d6e41208..f3c82fc09a 100644 --- a/src/lib-storage/mail-search-args-imap.c +++ b/src/lib-storage/mail-search-args-imap.c @@ -57,22 +57,20 @@ mail_search_arg_to_imap_flags(string_t *dest, enum mail_flags flags) static const char *flag_names[] = { "ANSWERED", "FLAGGED", "DELETED", "SEEN", "DRAFT", "RECENT" }; - unsigned int count = 0, start_pos = str_len(dest); - str_append_c(dest, '('); + i_assert(flags != 0); + + if (!bits_is_power_of_two(flags)) + str_append_c(dest, '('); for (unsigned int i = 0; i < N_ELEMENTS(flag_names); i++) { if ((flags & (1 << i)) != 0) { str_append(dest, flag_names[i]); str_append_c(dest, ' '); - count++; } } - i_assert(count > 0); str_truncate(dest, str_len(dest)-1); - if (count == 1) - str_delete(dest, start_pos, 1); - else + if (!bits_is_power_of_two(flags)) str_append_c(dest, ')'); }