]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
Use array_foreach*() in some useful places.
authorTimo Sirainen <tss@iki.fi>
Thu, 8 Oct 2009 17:02:25 +0000 (13:02 -0400)
committerTimo Sirainen <tss@iki.fi>
Thu, 8 Oct 2009 17:02:25 +0000 (13:02 -0400)
--HG--
branch : HEAD

30 files changed:
src/dict/dict-commands.c
src/dict/dict-connection.c
src/dsync/dsync-brain-msgs.c
src/dsync/dsync-brain.c
src/imap/imap-client.c
src/imap/imap-fetch.c
src/lib-auth/auth-client.c
src/lib-index/mail-index-fsck.c
src/lib-index/mail-index-map-read.c
src/lib-index/mail-index-map.c
src/lib-index/mail-index-modseq.c
src/lib-index/mail-index-sync-ext.c
src/lib-index/mail-index-sync-update.c
src/lib-index/mail-index-sync.c
src/lib-index/mail-index-transaction-finish.c
src/lib-index/mail-index-transaction-sort-appends.c
src/lib-index/mail-index-transaction-update.c
src/lib-index/mail-index-view-sync.c
src/lib-sql/driver-mysql.c
src/lib-sql/driver-pgsql.c
src/lib-storage/index/index-search-result.c
src/lib-storage/index/index-sort-string.c
src/lib-storage/index/index-sync-search.c
src/lib/seq-range-array.c
src/lmtp/commands.c
src/lmtp/lmtp-proxy.c
src/plugins/acl/acl-backend-vfile-acllist.c
src/plugins/fts-squat/squat-trie.c
src/plugins/quota/quota-storage.c
src/plugins/quota/quota.c

index c8cd4931f6577f639f50c7a6128170bba8259667..23ae04703eda214f1c76cb821d0c741b451f69b5 100644 (file)
@@ -103,16 +103,14 @@ static struct dict_connection_transaction *
 dict_connection_transaction_lookup(struct dict_connection *conn,
                                   unsigned int id)
 {
-       struct dict_connection_transaction *transactions;
-       unsigned int i, count;
+       struct dict_connection_transaction *transaction;
 
        if (!array_is_created(&conn->transactions))
                return NULL;
 
-       transactions = array_get_modifiable(&conn->transactions, &count);
-       for (i = 0; i < count; i++) {
-               if (transactions[i].id == id)
-                       return &transactions[i];
+       array_foreach_modifiable(&conn->transactions, transaction) {
+               if (transaction->id == id)
+                       return transaction;
        }
        return NULL;
 }
index f1b1f7f5da6a7d843080b23c44cfc6dd02e2a99c..460878a57da7aba691ef9e81f91b697abca7c6af 100644 (file)
@@ -155,15 +155,13 @@ struct dict_connection *dict_connection_create(int fd)
 
 void dict_connection_destroy(struct dict_connection *conn)
 {
-       struct dict_connection_transaction *transactions;
-       unsigned int i, count;
+       struct dict_connection_transaction *transaction;
 
        DLLIST_REMOVE(&dict_connections, conn);
 
        if (array_is_created(&conn->transactions)) {
-               transactions = array_get_modifiable(&conn->transactions, &count);
-               for (i = 0; i < count; i++)
-                       dict_transaction_rollback(&transactions[i].ctx);
+               array_foreach_modifiable(&conn->transactions, transaction)
+                       dict_transaction_rollback(&transaction->ctx);
                array_free(&conn->transactions);
        }
 
index 0d0f672cd5a945943c2d969ab81a115c42f48e1f..4805fef824893015e45360fc6ba849a8ddf1f52d 100644 (file)
@@ -333,13 +333,11 @@ static void
 get_mailbox_guids(const ARRAY_TYPE(dsync_brain_mailbox) *mailboxes,
                  ARRAY_TYPE(mailbox_guid) *guids)
 {
-       const struct dsync_brain_mailbox *brain_boxes;
-       unsigned int i, count;
+       const struct dsync_brain_mailbox *brain_box;
 
        t_array_init(guids, array_count(mailboxes));
-       brain_boxes = array_get(mailboxes, &count);
-       for (i = 0; i < count; i++)
-               array_append(guids, &brain_boxes[i].box.mailbox_guid, 1);
+       array_foreach(mailboxes, brain_box)
+               array_append(guids, &brain_box->box.mailbox_guid, 1);
 }
 
 struct dsync_brain_mailbox_sync *
index c89dd4daaef0c2f829eed8da3a5b316d760a2625..8436ba2d75b550b7e731117bf8f9a2992b7be8d6 100644 (file)
@@ -344,17 +344,13 @@ static void dsync_brain_sync_msgs(struct dsync_brain *brain)
 static void
 dsync_brain_msg_sync_update_mailbox(struct dsync_brain *brain)
 {
-       const struct dsync_brain_mailbox *mailboxes;
-       unsigned int i, count;
+       const struct dsync_brain_mailbox *mailbox;
 
        /* FIXME: handle different hierarchy separators? */
 
-       mailboxes = array_get(&brain->mailbox_sync->mailboxes, &count);
-       for (i = 0; i < count; i++) {
-               dsync_worker_update_mailbox(brain->src_worker,
-                                           &mailboxes[i].box);
-               dsync_worker_update_mailbox(brain->dest_worker,
-                                           &mailboxes[i].box);
+       array_foreach(&brain->mailbox_sync->mailboxes, mailbox) {
+               dsync_worker_update_mailbox(brain->src_worker, &mailbox->box);
+               dsync_worker_update_mailbox(brain->dest_worker, &mailbox->box);
        }
 }
 
index 87522af7cfdb312be659259ec83aa5914cb65bbd..02dcf5972b1e5d61e1557ae342caf62675715025 100644 (file)
@@ -927,16 +927,14 @@ client_search_update_lookup(struct client *client, const char *tag,
 
 void client_search_updates_free(struct client *client)
 {
-       struct imap_search_update *updates;
-       unsigned int i, count;
+       struct imap_search_update *update;
 
        if (!array_is_created(&client->search_updates))
                return;
 
-       updates = array_get_modifiable(&client->search_updates, &count);
-       for (i = 0; i < count; i++) {
-               i_free(updates[i].tag);
-               mailbox_search_result_free(&updates[i].result);
+       array_foreach_modifiable(&client->search_updates, update) {
+               i_free(update->tag);
+               mailbox_search_result_free(&update->result);
        }
        array_clear(&client->search_updates);
 }
index e784ef6de18989b4763e9760a894051200b22327..87db6fd3d4579576af522f6865efc366cf61d528 100644 (file)
@@ -117,17 +117,14 @@ void imap_fetch_add_handler(struct imap_fetch_context *ctx,
           client requested them. This is especially useful to get UID
           returned first, which some clients rely on..
        */
-       const struct imap_fetch_context_handler *handlers;
+       const struct imap_fetch_context_handler *ctx_handler;
        struct imap_fetch_context_handler h;
-       unsigned int i, size;
 
        if (context == NULL) {
                /* don't allow duplicate handlers */
-               handlers = array_get(&ctx->handlers, &size);
-
-               for (i = 0; i < size; i++) {
-                       if (handlers[i].handler == handler &&
-                           handlers[i].context == NULL)
+               array_foreach(&ctx->handlers, ctx_handler) {
+                       if (ctx_handler->handler == handler &&
+                           ctx_handler->context == NULL)
                                return;
                }
        }
@@ -259,12 +256,10 @@ static void
 mailbox_expunge_to_range(const ARRAY_TYPE(mailbox_expunge_rec) *input,
                         ARRAY_TYPE(seq_range) *output)
 {
-       const struct mailbox_expunge_rec *expunges;
-       unsigned int i, count;
+       const struct mailbox_expunge_rec *expunge;
 
-       expunges = array_get(input, &count);
-       for (i = 0; i < count; i++)
-               seq_range_array_add(output, 0, expunges[i].uid);
+       array_foreach(input, expunge)
+               seq_range_array_add(output, 0, expunge->uid);
 }
 
 static int
@@ -530,13 +525,11 @@ int imap_fetch_more(struct imap_fetch_context *ctx)
 
 int imap_fetch_deinit(struct imap_fetch_context *ctx)
 {
-       const struct imap_fetch_context_handler *handlers;
-       unsigned int i, count;
+       const struct imap_fetch_context_handler *handler;
 
-       handlers = array_get(&ctx->handlers, &count);
-       for (i = 0; i < count; i++) {
-               if (handlers[i].want_deinit)
-                       handlers[i].handler(ctx, NULL, handlers[i].context);
+       array_foreach(&ctx->handlers, handler) {
+               if (handler->want_deinit)
+                       handler->handler(ctx, NULL, handler->context);
        }
 
        if (!ctx->line_finished) {
index a2ac16cffde0349dd5c65cc024d64122a9238e46..579c94967c21419be489859bd4d5e60cbec3ae2a 100644 (file)
@@ -54,13 +54,11 @@ auth_client_get_available_mechs(struct auth_client *client,
 const struct auth_mech_desc *
 auth_client_find_mech(struct auth_client *client, const char *name)
 {
-       const struct auth_mech_desc *mechs;
-       unsigned int i, count;
+       const struct auth_mech_desc *mech;
 
-       mechs = array_get(&client->conn->available_auth_mechs, &count);
-       for (i = 0; i < count; i++) {
-               if (strcasecmp(mechs[i].name, name) == 0)
-                       return &mechs[i];
+       array_foreach(&client->conn->available_auth_mechs, mech) {
+               if (strcasecmp(mech->name, name) == 0)
+                       return mech;
        }
        return NULL;
 }
index 051f3015a19b0774e98addbc471ff39f20ca403c..fa8212857d40f071fff6fa12de90e7195ca1653d 100644 (file)
@@ -68,12 +68,10 @@ mail_index_fsck_header(struct mail_index *index, struct mail_index_map *map,
 static bool
 array_has_name(const ARRAY_TYPE(const_string) *names, const char *name)
 {
-       const char *const *str;
-       unsigned int i, count;
+       const char *const *namep;
 
-       str = array_get(names, &count);
-       for (i = 0; i < count; i++) {
-               if (strcmp(str[i], name) == 0)
+       array_foreach(names, namep) {
+               if (strcmp(*namep, name) == 0)
                        return TRUE;
        }
        return FALSE;
index 79fbb1a209009b76287b10b69b77f5e4eea012cc..811f4d4e8958ddac74c7f327a37a265ce0724236 100644 (file)
@@ -239,16 +239,15 @@ static int mail_index_read_map(struct mail_index_map *map, uoff_t file_size,
                               unsigned int *lock_id)
 {
        struct mail_index *index = map->index;
-       mail_index_sync_lost_handler_t *const *handlers;
+       mail_index_sync_lost_handler_t *const *handlerp;
        struct stat st;
-       unsigned int i, count;
+       unsigned int i;
        int ret;
        bool try_retry, retry;
 
        /* notify all "sync lost" handlers */
-       handlers = array_get(&index->sync_lost_handlers, &count);
-       for (i = 0; i < count; i++)
-               (*handlers[i])(index);
+       array_foreach(&index->sync_lost_handlers, handlerp)
+               (**handlerp)(index);
 
        for (i = 0;; i++) {
                try_retry = i < MAIL_INDEX_ESTALE_RETRY_COUNT;
index f8e713bebc0b4e89d46835656d77ce832255099b..9519d20a8a3aa4a9a55f35e1d22842e8d9c009b4 100644 (file)
@@ -356,8 +356,8 @@ mail_index_record_map_alloc(struct mail_index_map *map)
 struct mail_index_map *mail_index_map_clone(const struct mail_index_map *map)
 {
        struct mail_index_map *mem_map;
-       struct mail_index_ext *extensions;
-       unsigned int i, count;
+       struct mail_index_ext *ext;
+       unsigned int count;
 
        mem_map = i_new(struct mail_index_map, 1);
        mem_map->index = map->index;
@@ -386,13 +386,11 @@ struct mail_index_map *mail_index_map_clone(const struct mail_index_map *map)
                array_append_array(&mem_map->ext_id_map, &map->ext_id_map);
 
                /* fix the name pointers to use our own pool */
-               extensions = array_get_modifiable(&mem_map->extensions, &count);
-               for (i = 0; i < count; i++) {
-                       i_assert(extensions[i].record_offset +
-                                extensions[i].record_size <=
+               array_foreach_modifiable(&mem_map->extensions, ext) {
+                       i_assert(ext->record_offset + ext->record_size <=
                                 mem_map->hdr.record_size);
-                       extensions[i].name = p_strdup(mem_map->extension_pool,
-                                                     extensions[i].name);
+                       ext->name = p_strdup(mem_map->extension_pool,
+                                            ext->name);
                }
        }
 
index e85feea389a16ee705d40b00b914db3b1737ec07..8fa94abda92b5a85b35df6b94ce1167dcdba3880 100644 (file)
@@ -547,17 +547,15 @@ void mail_index_modseq_expunge(struct mail_index_modseq_sync *ctx,
                               uint32_t seq1, uint32_t seq2)
 {
        struct metadata_modseqs *metadata;
-       unsigned int i, count;
        uint64_t modseq;
 
        if (ctx->mmap == NULL)
                return;
 
        seq1--;
-       metadata = array_get_modifiable(&ctx->mmap->metadata_modseqs, &count);
-       for (i = 0; i < count; i++) {
-               if (array_is_created(&metadata[i].modseqs))
-                       array_delete(&metadata[i].modseqs, seq1, seq2-seq1);
+       array_foreach_modifiable(&ctx->mmap->metadata_modseqs, metadata) {
+               if (array_is_created(&metadata->modseqs))
+                       array_delete(&metadata->modseqs, seq1, seq2-seq1);
        }
 
        modseq = mail_transaction_log_view_get_prev_modseq(ctx->log_view);
@@ -666,14 +664,12 @@ void mail_index_map_modseq_free(struct mail_index_map_modseq **_mmap)
 {
        struct mail_index_map_modseq *mmap = *_mmap;
        struct metadata_modseqs *metadata;
-       unsigned int i, count;
 
        *_mmap = NULL;
 
-       metadata = array_get_modifiable(&mmap->metadata_modseqs, &count);
-       for (i = 0; i < count; i++) {
-               if (array_is_created(&metadata[i].modseqs))
-                       array_free(&metadata[i].modseqs);
+       array_foreach_modifiable(&mmap->metadata_modseqs, metadata) {
+               if (array_is_created(&metadata->modseqs))
+                       array_free(&metadata->modseqs);
        }
        array_free(&mmap->metadata_modseqs);
        i_free(mmap);
index 85e1b96859213ccc3442af3d8e221f2ee7ccb399..0d9621f0914da35af1a8e253dd29c025fdbf1520 100644 (file)
@@ -59,19 +59,16 @@ void
 mail_index_sync_deinit_expunge_handlers(struct mail_index_sync_map_ctx *ctx)
 {
        const struct mail_index_expunge_handler *eh;
-       unsigned int i, count;
 
        if (!array_is_created(&ctx->expunge_handlers))
                return;
 
-       eh = array_get(&ctx->expunge_handlers, &count);
-       for (i = 0; i < count; i++) {
-               if (eh[i].sync_context != NULL) {
-                       eh[i].handler(ctx, 0, NULL, eh[i].sync_context,
-                                     eh[i].context);
+       array_foreach(&ctx->expunge_handlers, eh) {
+               if (eh->sync_context != NULL) {
+                       eh->handler(ctx, 0, NULL, eh->sync_context,
+                                   eh->context);
                }
        }
-
        array_free(&ctx->expunge_handlers);
 }
 
index 370ff99f393ea6d9070930ff1bff565e66729111..7829981234fa7e70033f2910adb4da214606e063 100644 (file)
@@ -208,7 +208,6 @@ sync_expunge_call_handlers(struct mail_index_sync_map_ctx *ctx,
 {
        const struct mail_index_expunge_handler *eh;
        struct mail_index_record *rec;
-       unsigned int i, count;
        uint32_t seq;
 
        /* call expunge handlers only when syncing index file */
@@ -221,8 +220,7 @@ sync_expunge_call_handlers(struct mail_index_sync_map_ctx *ctx,
        if (!array_is_created(&ctx->expunge_handlers))
                return;
 
-       eh = array_get(&ctx->expunge_handlers, &count);
-       for (i = 0; i < count; i++, eh++) {
+       array_foreach(&ctx->expunge_handlers, eh) {
                for (seq = seq1; seq <= seq2; seq++) {
                        rec = MAIL_INDEX_MAP_IDX(ctx->view->map, seq-1);
                        /* FIXME: does expunge handler's return value matter?
index 9fdc594471b3c9ab3570538acc434b73a7f5e281..78eee8eafed004d17441b5be4cd50e605c561123 100644 (file)
@@ -676,15 +676,13 @@ bool mail_index_sync_next(struct mail_index_sync_ctx *ctx,
 bool mail_index_sync_have_more(struct mail_index_sync_ctx *ctx)
 {
        const struct mail_index_sync_list *sync_list;
-       unsigned int i, count;
 
        if (ctx->sync_appends)
                return TRUE;
 
-       sync_list = array_get(&ctx->sync_list, &count);
-       for (i = 0; i < count; i++) {
-               if (array_is_created(sync_list[i].array) &&
-                   sync_list[i].idx != array_count(sync_list[i].array))
+       array_foreach(&ctx->sync_list, sync_list) {
+               if (array_is_created(sync_list->array) &&
+                   sync_list->idx != array_count(sync_list->array))
                        return TRUE;
        }
        return FALSE;
@@ -693,13 +691,10 @@ bool mail_index_sync_have_more(struct mail_index_sync_ctx *ctx)
 void mail_index_sync_reset(struct mail_index_sync_ctx *ctx)
 {
        struct mail_index_sync_list *sync_list;
-       unsigned int i, count;
 
        ctx->next_uid = 0;
-
-       sync_list = array_get_modifiable(&ctx->sync_list, &count);
-       for (i = 0; i < count; i++)
-               sync_list[i].idx = 0;
+       array_foreach_modifiable(&ctx->sync_list, sync_list)
+               sync_list->idx = 0;
 }
 
 static void mail_index_sync_end(struct mail_index_sync_ctx **_ctx)
index bd570fb72aea4196b9008dfa8373b0ec13a90f9c..b2bb149caf46caf598c1661a7356468de96a10c0 100644 (file)
@@ -256,16 +256,14 @@ mail_index_convert_to_uid_ranges(struct mail_index_transaction *t,
 
 static void keyword_updates_convert_to_uids(struct mail_index_transaction *t)
 {
-        struct mail_index_transaction_keyword_update *updates;
-       unsigned int i, count;
+        struct mail_index_transaction_keyword_update *update;
 
        if (!array_is_created(&t->keyword_updates))
                return;
 
-       updates = array_get_modifiable(&t->keyword_updates, &count);
-       for (i = 0; i < count; i++) {
-               mail_index_convert_to_uid_ranges(t, &updates[i].add_seq);
-               mail_index_convert_to_uid_ranges(t, &updates[i].remove_seq);
+       array_foreach_modifiable(&t->keyword_updates, update) {
+               mail_index_convert_to_uid_ranges(t, &update->add_seq);
+               mail_index_convert_to_uid_ranges(t, &update->remove_seq);
        }
 }
 
@@ -300,18 +298,15 @@ static void expunges_convert_to_uids(struct mail_index_transaction *t)
 static void
 mail_index_transaction_convert_to_uids(struct mail_index_transaction *t)
 {
-       ARRAY_TYPE(seq_array) *updates;
-       unsigned int i, count;
+       ARRAY_TYPE(seq_array) *update;
 
        if (array_is_created(&t->ext_rec_updates)) {
-               updates = array_get_modifiable(&t->ext_rec_updates, &count);
-               for (i = 0; i < count; i++)
-                       mail_index_convert_to_uids(t, (void *)&updates[i]);
+               array_foreach_modifiable(&t->ext_rec_updates, update)
+                       mail_index_convert_to_uids(t, update);
        }
        if (array_is_created(&t->ext_rec_atomics)) {
-               updates = array_get_modifiable(&t->ext_rec_atomics, &count);
-               for (i = 0; i < count; i++)
-                       mail_index_convert_to_uids(t, (void *)&updates[i]);
+               array_foreach_modifiable(&t->ext_rec_atomics, update)
+                       mail_index_convert_to_uids(t, update);
        }
 
         keyword_updates_convert_to_uids(t);
index a62a6359b0fce6f8851f863b8b48a451b2849aff..332022427daf3d0fc8342cb2da53462eaa3c6a0d 100644 (file)
@@ -104,19 +104,17 @@ static void
 mail_index_transaction_sort_appends_keywords(struct mail_index_transaction *t,
                                             const uint32_t *old_to_newseq_map)
 {
-       struct mail_index_transaction_keyword_update *updates;
-       unsigned int i, count;
+       struct mail_index_transaction_keyword_update *update;
 
        if (array_is_created(&t->keyword_updates)) {
-               updates = array_get_modifiable(&t->keyword_updates, &count);
-               for (i = 0; i < count; i++) {
-                       if (array_is_created(&updates[i].add_seq)) {
-                               sort_appends_seq_range(&updates[i].add_seq,
+               array_foreach_modifiable(&t->keyword_updates, update) {
+                       if (array_is_created(&update->add_seq)) {
+                               sort_appends_seq_range(&update->add_seq,
                                                       t->first_new_seq,
                                                       old_to_newseq_map);
                        }
-                       if (array_is_created(&updates[i].remove_seq)) {
-                               sort_appends_seq_range(&updates[i].remove_seq,
+                       if (array_is_created(&update->remove_seq)) {
+                               sort_appends_seq_range(&update->remove_seq,
                                                       t->first_new_seq,
                                                       old_to_newseq_map);
                        }
index 9c7076fa60baf3ddfafa084e2e1508e57a8230ea..f82d4b30b5625246a9b1e40730b9736526730f16 100644 (file)
@@ -23,31 +23,27 @@ mail_index_transaction_lookup(struct mail_index_transaction *t, uint32_t seq)
 
 void mail_index_transaction_reset_v(struct mail_index_transaction *t)
 {
-       ARRAY_TYPE(seq_array) *recs;
-       struct mail_index_transaction_ext_hdr_update *ext_hdrs;
-       unsigned i, count;
+       ARRAY_TYPE(seq_array) *rec;
+       struct mail_index_transaction_ext_hdr_update *ext_hdr;
 
        if (array_is_created(&t->ext_rec_updates)) {
-               recs = array_get_modifiable(&t->ext_rec_updates, &count);
-               for (i = 0; i < count; i++) {
-                       if (array_is_created(&recs[i]))
-                               array_free(&recs[i]);
+               array_foreach_modifiable(&t->ext_rec_updates, rec) {
+                       if (array_is_created(rec))
+                               array_free(rec);
                }
                array_free(&t->ext_rec_updates);
        }
        if (array_is_created(&t->ext_rec_atomics)) {
-               recs = array_get_modifiable(&t->ext_rec_atomics, &count);
-               for (i = 0; i < count; i++) {
-                       if (array_is_created(&recs[i]))
-                               array_free(&recs[i]);
+               array_foreach_modifiable(&t->ext_rec_atomics, rec) {
+                       if (array_is_created(rec))
+                               array_free(rec);
                }
                array_free(&t->ext_rec_atomics);
        }
        if (array_is_created(&t->ext_hdr_updates)) {
-               ext_hdrs = array_get_modifiable(&t->ext_hdr_updates, &count);
-               for (i = 0; i < count; i++) {
-                       i_free(ext_hdrs[i].data);
-                       i_free(ext_hdrs[i].mask);
+               array_foreach_modifiable(&t->ext_hdr_updates, ext_hdr) {
+                       i_free(ext_hdr->data);
+                       i_free(ext_hdr->mask);
                }
                array_free(&t->ext_hdr_updates);
        }
@@ -55,12 +51,11 @@ void mail_index_transaction_reset_v(struct mail_index_transaction *t)
        if (array_is_created(&t->keyword_updates)) {
                struct mail_index_transaction_keyword_update *u;
 
-               u = array_get_modifiable(&t->keyword_updates, &count);
-               for (i = 0; i < count; i++) {
-                       if (array_is_created(&u[i].add_seq))
-                               array_free(&u[i].add_seq);
-                       if (array_is_created(&u[i].remove_seq))
-                               array_free(&u[i].remove_seq);
+               array_foreach_modifiable(&t->keyword_updates, u) {
+                       if (array_is_created(&u->add_seq))
+                               array_free(&u->add_seq);
+                       if (array_is_created(&u->remove_seq))
+                               array_free(&u->remove_seq);
                }
                array_free(&t->keyword_updates);
        }
@@ -288,24 +283,23 @@ mail_index_expunge_last_append_ext(ARRAY_TYPE(seq_array_array) *ext_updates,
                                   uint32_t seq)
 {
        ARRAY_TYPE(seq_array) *seqs;
-       unsigned int i, count, idx;
+       unsigned int idx;
 
        if (!array_is_created(ext_updates))
                return;
 
-       seqs = array_get_modifiable(ext_updates, &count);
-       for (i = 0; i < count; i++) {
-               if (array_is_created(&seqs[i]) &&
-                   mail_index_seq_array_lookup(&seqs[i], seq, &idx))
-                       array_delete(&seqs[i], idx, 1);
+       array_foreach_modifiable(ext_updates, seqs) {
+               if (array_is_created(seqs) &&
+                   mail_index_seq_array_lookup(seqs, seq, &idx))
+                       array_delete(seqs, idx, 1);
        }
 }
 
 static void
 mail_index_expunge_last_append(struct mail_index_transaction *t, uint32_t seq)
 {
-       struct mail_index_transaction_keyword_update *kw_updates;
-       unsigned int i, count;
+       struct mail_index_transaction_keyword_update *kw_update;
+       unsigned int i;
 
        i_assert(seq == t->last_new_seq);
 
@@ -318,15 +312,14 @@ mail_index_expunge_last_append(struct mail_index_transaction *t, uint32_t seq)
        if (array_is_created(&t->keyword_resets))
                seq_range_array_remove(&t->keyword_resets, seq);
        if (array_is_created(&t->keyword_updates)) {
-               kw_updates = array_get_modifiable(&t->keyword_updates, &count);
-               for (i = 0; i < count; i++) {
-                       if (array_is_created(&kw_updates[i].add_seq)) {
-                               seq_range_array_remove(&kw_updates[i].add_seq,
+               array_foreach_modifiable(&t->keyword_updates, kw_update) {
+                       if (array_is_created(&kw_update->add_seq)) {
+                               seq_range_array_remove(&kw_update->add_seq,
                                                       seq);
                        }
-                       if (array_is_created(&kw_updates[i].remove_seq)) {
-                               seq_range_array_remove(
-                                       &kw_updates[i].remove_seq, seq);
+                       if (array_is_created(&kw_update->remove_seq)) {
+                               seq_range_array_remove(&kw_update->remove_seq,
+                                                      seq);
                        }
                }
        }
@@ -761,12 +754,10 @@ static bool
 mail_index_transaction_has_ext_updates(const ARRAY_TYPE(seq_array_array) *arr)
 {
        const ARRAY_TYPE(seq_array) *array;
-       unsigned int i, count;
 
        if (array_is_created(arr)) {
-               array = array_get(arr, &count);
-               for (i = 0; i < count; i++) {
-                       if (array_is_created(&array[i]))
+               array_foreach(arr, array) {
+                       if (array_is_created(array))
                                return TRUE;
                }
        }
@@ -776,8 +767,6 @@ mail_index_transaction_has_ext_updates(const ARRAY_TYPE(seq_array_array) *arr)
 static bool
 mail_index_transaction_has_ext_changes(struct mail_index_transaction *t)
 {
-       unsigned int i, count;
-
        if (mail_index_transaction_has_ext_updates(&t->ext_rec_updates))
                return TRUE;
        if (mail_index_transaction_has_ext_updates(&t->ext_rec_atomics))
@@ -786,27 +775,24 @@ mail_index_transaction_has_ext_changes(struct mail_index_transaction *t)
        if (array_is_created(&t->ext_hdr_updates)) {
                const struct mail_index_transaction_ext_hdr_update *hdr;
 
-               hdr = array_get(&t->ext_hdr_updates, &count);
-               for (i = 0; i < count; i++) {
-                       if (hdr[i].alloc_size > 0)
+               array_foreach(&t->ext_hdr_updates, hdr) {
+                       if (hdr->alloc_size > 0)
                                return TRUE;
                }
        }
        if (array_is_created(&t->ext_resets)) {
-               const struct mail_transaction_ext_reset *resets;
+               const struct mail_transaction_ext_reset *reset;
 
-               resets = array_get(&t->ext_resets, &count);
-               for (i = 0; i < count; i++) {
-                       if (resets[i].new_reset_id != 0)
+               array_foreach(&t->ext_resets, reset) {
+                       if (reset->new_reset_id != 0)
                                return TRUE;
                }
        }
        if (array_is_created(&t->ext_resizes)) {
-               const struct mail_transaction_ext_intro *resizes;
+               const struct mail_transaction_ext_intro *resize;
 
-               resizes = array_get(&t->ext_resizes, &count);
-               for (i = 0; i < count; i++) {
-                       if (resizes[i].name_size > 0)
+               array_foreach(&t->ext_resizes, resize) {
+                       if (resize->name_size > 0)
                                return TRUE;
                }
        }
@@ -1013,7 +999,7 @@ void mail_index_update_keywords(struct mail_index_transaction *t, uint32_t seq,
                                struct mail_keywords *keywords)
 {
        struct mail_index_transaction_keyword_update *u;
-       unsigned int i, ku_count;
+       unsigned int i;
        bool changed;
 
        i_assert(seq > 0 &&
@@ -1065,11 +1051,9 @@ void mail_index_update_keywords(struct mail_index_transaction *t, uint32_t seq,
        case MODIFY_REPLACE:
                /* Remove sequence from all add/remove arrays */
                if (array_is_created(&t->keyword_updates)) {
-                       u = array_get_modifiable(&t->keyword_updates,
-                                                &ku_count);
-                       for (i = 0; i < ku_count; i++) {
-                               seq_range_array_remove(&u[i].add_seq, seq);
-                               seq_range_array_remove(&u[i].remove_seq, seq);
+                       array_foreach_modifiable(&t->keyword_updates, u) {
+                               seq_range_array_remove(&u->add_seq, seq);
+                               seq_range_array_remove(&u->remove_seq, seq);
                        }
                }
                /* Add the wanted keyword back */
@@ -1142,21 +1126,19 @@ bool mail_index_cancel_keyword_updates(struct mail_index_transaction *t,
                                       uint32_t seq)
 {
        struct mail_index_transaction_keyword_update *kw;
-       unsigned int i, count;
        bool ret, have_kw_changes = FALSE;
 
        ret = mail_index_cancel_array(&t->keyword_resets, seq);
        if (!array_is_created(&t->keyword_updates))
                return ret;
 
-       kw = array_get_modifiable(&t->keyword_updates, &count);
-       for (i = 0; i < count; i++) {
-               if (mail_index_cancel_array(&kw[i].add_seq, seq))
+       array_foreach_modifiable(&t->keyword_updates, kw) {
+               if (mail_index_cancel_array(&kw->add_seq, seq))
                        ret = TRUE;
-               if (mail_index_cancel_array(&kw[i].remove_seq, seq))
+               if (mail_index_cancel_array(&kw->remove_seq, seq))
                        ret = TRUE;
-               if (array_is_created(&kw[i].add_seq) ||
-                   array_is_created(&kw[i].remove_seq))
+               if (array_is_created(&kw->add_seq) ||
+                   array_is_created(&kw->remove_seq))
                        have_kw_changes = TRUE;
        }
        if (!have_kw_changes)
index efd3eb456afe0447b02f258eec0b89ee29e25cd7..79e5cabab6611664520865eefab2f81b5e6c7924 100644 (file)
@@ -626,17 +626,15 @@ mail_index_view_sync_begin(struct mail_index_view *view,
 static bool
 view_sync_is_hidden(struct mail_index_view *view, uint32_t seq, uoff_t offset)
 {
-       const struct mail_index_view_log_sync_area *syncs;
-       unsigned int i, count;
+       const struct mail_index_view_log_sync_area *sync;
 
        if (!array_is_created(&view->syncs_hidden))
                return FALSE;
 
-       syncs = array_get(&view->syncs_hidden, &count);
-       for (i = 0; i < count; i++) {
-               if (syncs[i].log_file_offset <= offset &&
-                   offset - syncs[i].log_file_offset < syncs[i].length &&
-                   syncs[i].log_file_seq == seq)
+       array_foreach(&view->syncs_hidden, sync) {
+               if (sync->log_file_offset <= offset &&
+                   offset - sync->log_file_offset < sync->length &&
+                   sync->log_file_seq == seq)
                        return TRUE;
        }
 
index 6e29a6c4dc7ea3e9f8daedf4db4ca3b5668d5f0c..80fc09cab92a268db7ae5eb5796063242af6acd5 100644 (file)
@@ -167,12 +167,10 @@ static int driver_mysql_connect_all(struct sql_db *_db)
 {
        struct mysql_db *db = (struct mysql_db *)_db;
        struct mysql_connection *conn;
-       unsigned int i, count;
        int ret = -1;
 
-       conn = array_get_modifiable(&db->connections, &count);
-       for (i = 0; i < count; i++) {
-               if (driver_mysql_connect(&conn[i]))
+       array_foreach_modifiable(&db->connections, conn) {
+               if (driver_mysql_connect(conn))
                        ret = 1;
        }
        return ret;
@@ -275,11 +273,9 @@ static void driver_mysql_deinit_v(struct sql_db *_db)
 {
        struct mysql_db *db = (struct mysql_db *)_db;
        struct mysql_connection *conn;
-       unsigned int i, count;
 
-       conn = array_get_modifiable(&db->connections, &count);
-       for (i = 0; i < count; i++)
-               (void)driver_mysql_connection_free(&conn[i]);
+       array_foreach_modifiable(&db->connections, conn)
+               (void)driver_mysql_connection_free(conn);
 
        array_free(&_db->module_contexts);
        pool_unref(&db->pool);
index c7eaea1db2bfd79a3460e1b4e901193e955bcde5..8c9bcd6811788d0fae6426c903c570e8199162ce 100644 (file)
@@ -292,12 +292,10 @@ static void driver_pgsql_result_free(struct sql_result *_result)
        }
 
        if (array_is_created(&result->binary_values)) {
-               struct pgsql_binary_value *values;
-               unsigned int i, count;
+               struct pgsql_binary_value *value;
 
-               values = array_get_modifiable(&result->binary_values, &count);
-               for (i = 0; i < count; i++)
-                       PQfreemem(values[i].value);
+               array_foreach_modifiable(&result->binary_values, value)
+                       PQfreemem(value->value);
                array_free(&result->binary_values);
        }
 
index 40e61327df923d1a8872a829cf7591aac565451a..c5a12a3065b3215c70c7ff19006e328f05b6cd6e 100644 (file)
@@ -186,15 +186,13 @@ void index_search_results_update_expunges(struct mailbox *box,
 {
        struct index_mailbox *ibox = (struct index_mailbox *)box;
        const struct seq_range *seqs;
-       unsigned int i, count;
        uint32_t seq, uid;
 
        if (array_count(&box->search_results) == 0)
                return;
 
-       seqs = array_get(expunges, &count);
-       for (i = 0; i < count; i++) {
-               for (seq = seqs[i].seq1; seq <= seqs[i].seq2; seq++) {
+       array_foreach(expunges, seqs) {
+               for (seq = seqs->seq1; seq <= seqs->seq2; seq++) {
                        mail_index_lookup_uid(ibox->view, seq, &uid);
                        mailbox_search_results_remove(box, uid);
                }
index 12856552cf008f469a5e17b6f817490c3b7497eb..dea10204daf8880ce985f2f5db018ddf750f63e2 100644 (file)
@@ -756,8 +756,7 @@ static void index_sort_add_missing(struct sort_string_context *ctx)
 static void index_sort_list_reset_broken(struct sort_string_context *ctx)
 {
        struct mailbox *box = ctx->program->t->box;
-       struct mail_sort_node *nodes;
-       unsigned int i, count;
+       struct mail_sort_node *node;
 
        mail_storage_set_critical(box->storage,
                                  "%s: Broken %s indexes, resetting",
@@ -768,9 +767,8 @@ static void index_sort_list_reset_broken(struct sort_string_context *ctx)
                           &ctx->nonzero_nodes);
        array_clear(&ctx->nonzero_nodes);
 
-       nodes = array_get_modifiable(&ctx->zero_nodes, &count);
-       for (i = 0; i < count; i++)
-               nodes[i].sort_id = 0;
+       array_foreach_modifiable(&ctx->zero_nodes, node)
+               node->sort_id = 0;
 }
 
 void index_sort_list_finish_string(struct mail_search_sort_program *program)
index c73905b069f066895784d27c123fa5485ac659ca..430bf95480e968f4c0f8baf5d2fa8bb6ccb3ad72 100644 (file)
@@ -22,13 +22,11 @@ search_result_want_flag_updates(const struct mail_search_result *result)
 static void index_sync_uidify_array(struct index_mailbox_sync_context *ctx,
                                    const ARRAY_TYPE(seq_range) *changes)
 {
-       const struct seq_range *seqs;
-       unsigned int i, count;
+       const struct seq_range *range;
        uint32_t seq, uid;
 
-       seqs = array_get(changes, &count);
-       for (i = 0; i < count; i++) {
-               for (seq = seqs[i].seq1; seq <= seqs[i].seq2; seq++) {
+       array_foreach(changes, range) {
+               for (seq = range->seq1; seq <= range->seq2; seq++) {
                        mail_index_lookup_uid(ctx->ibox->view, seq, &uid);
                        seq_range_array_add(&ctx->all_flag_update_uids, 0, uid);
                }
index d25d514a4b462cf7f46325dcb45331b71f649d15..49708051c5d09510d9dcaaccb3b7edffcce20380 100644 (file)
@@ -142,16 +142,14 @@ void seq_range_array_merge(ARRAY_TYPE(seq_range) *dest,
                           const ARRAY_TYPE(seq_range) *src)
 {
        const struct seq_range *range;
-       unsigned int i, count;
 
        if (array_count(dest) == 0) {
                array_append_array(dest, src);
                return;
        }
 
-       range = array_get(src, &count);
-       for (i = 0; i < count; i++)
-               seq_range_array_add_range(dest, range[i].seq1, range[i].seq2);
+       array_foreach(src, range)
+               seq_range_array_add_range(dest, range->seq1, range->seq2);
 }
 
 bool seq_range_array_remove(ARRAY_TYPE(seq_range) *array, uint32_t seq)
@@ -270,12 +268,10 @@ unsigned int seq_range_array_remove_seq_range(ARRAY_TYPE(seq_range) *dest,
 {
        unsigned int ret = 0;
        const struct seq_range *src_range;
-       unsigned int i, count;
 
-       src_range = array_get(src, &count);
-       for (i = 0; i < count; i++) {
-               ret += seq_range_array_remove_range(dest, src_range[i].seq1,
-                                                   src_range[i].seq2);
+       array_foreach(src, src_range) {
+               ret += seq_range_array_remove_range(dest, src_range->seq1,
+                                                   src_range->seq2);
        }
        return ret;
 }
@@ -334,11 +330,10 @@ bool seq_range_array_have_common(const ARRAY_TYPE(seq_range) *array1,
 unsigned int seq_range_count(const ARRAY_TYPE(seq_range) *array)
 {
        const struct seq_range *range;
-       unsigned int i, count, seq_count;
+       unsigned int seq_count = 0;
 
-       range = array_get(array, &count);
-       for (i = seq_count = 0; i < count; i++)
-               seq_count += range[i].seq2 - range[i].seq1 + 1;
+       array_foreach(array, range)
+               seq_count += range->seq2 - range->seq1 + 1;
        return seq_count;
 }
 
index 9b961e52d23846500c1367f7489a16603005f870..1d33315625bf093a2ef8a2048764767ced2a7999 100644 (file)
@@ -80,12 +80,10 @@ int cmd_mail(struct client *client, const char *args)
 
 static bool rcpt_is_duplicate(struct client *client, const char *name)
 {
-       const struct mail_recipient *rcpts;
-       unsigned int i, count;
+       const struct mail_recipient *rcpt;
 
-       rcpts = array_get(&client->state.rcpt_to, &count);
-       for (i = 0; i < count; i++) {
-               if (strcmp(rcpts[i].name, name) == 0)
+       array_foreach(&client->state.rcpt_to, rcpt) {
+               if (strcmp(rcpt->name, name) == 0)
                        return TRUE;
        }
        return FALSE;
@@ -412,14 +410,10 @@ static bool client_deliver_next(struct client *client, struct mail *src_mail)
 
 static void client_rcpt_fail_all(struct client *client)
 {
-       const struct mail_recipient *rcpts;
-       unsigned int i, count;
+       const struct mail_recipient *rcpt;
 
-       rcpts = array_get(&client->state.rcpt_to, &count);
-       for (i = 0; i < count; i++) {
-               client_send_line(client, ERRSTR_TEMP_MAILBOX_FAIL,
-                                rcpts[i].name);
-       }
+       array_foreach(&client->state.rcpt_to, rcpt)
+               client_send_line(client, ERRSTR_TEMP_MAILBOX_FAIL, rcpt->name);
 }
 
 static struct istream *client_get_input(struct client *client)
index 279ebfcc20e223900613bfb1083caa11a236a800..73023e5a29059ebae46751b8dad952b7763dc444 100644 (file)
@@ -147,13 +147,11 @@ static void lmtp_proxy_conn_deinit(struct lmtp_proxy_connection *conn,
                                   const char *reason)
 {
        struct lmtp_proxy_recipient *rcpt;
-       unsigned int i, count;
 
        /* set failure replies to all recipients in this connection */
-       rcpt = array_get_modifiable(&conn->proxy->rcpt_to, &count);
-       for (i = 0; i < count; i++) {
-               if (rcpt[i].conn == conn && !rcpt[i].rcpt_to_failed)
-                       rcpt[i].reply = reason;
+       array_foreach_modifiable(&conn->proxy->rcpt_to, rcpt) {
+               if (rcpt->conn == conn && !rcpt->rcpt_to_failed)
+                       rcpt->reply = reason;
        }
 
        if (conn->client != NULL)
index e08b4207d0e4d9f8a8687d225e93e080f40a24b3..caf242e92aef19c571681a10309c2f2d809f498a 100644 (file)
@@ -320,12 +320,10 @@ acl_backend_vfile_acllist_find(struct acl_backend_vfile *backend,
                               const char *name)
 {
        const struct acl_backend_vfile_acllist *acllist;
-       unsigned int i, count;
 
-       acllist = array_get(&backend->acllist, &count);
-       for (i = 0; i < count; i++) {
-               if (strcmp(acllist[i].name, name) == 0)
-                       return &acllist[i];
+       array_foreach(&backend->acllist, acllist) {
+               if (strcmp(acllist->name, name) == 0)
+                       return acllist;
        }
        return NULL;
 }
index 5702c72f73daf8897ccb2b3ac83e9de61cee8a7a..dfef5583cf42f4031be9fa79df838de8b963f9b5 100644 (file)
@@ -1081,14 +1081,12 @@ squat_trie_iterate_init(struct squat_trie *trie)
 static int
 squat_trie_iterate_deinit(struct squat_trie_iterate_context *ctx)
 {
-       struct squat_trie_iterate_node *nodes;
-       unsigned int i, count;
+       struct squat_trie_iterate_node *node;
        int ret = ctx->failed ? -1 : 0;
 
        if (array_is_created(&ctx->cur.shifts)) {
-               nodes = array_get_modifiable(&ctx->parents, &count);
-               for (i = 0; i < count; i++)
-                       array_free(&nodes[i].shifts);
+               array_foreach_modifiable(&ctx->parents, node)
+                       array_free(&node->shifts);
                array_free(&ctx->cur.shifts);
        }
        array_free(&ctx->parents);
index aeda59c73fcf1a4225ea1d1e436cb74582301ada..e5bc255393a1b4ef7176b17b8d7dfab4fb06d7d7 100644 (file)
@@ -575,8 +575,7 @@ void quota_mailbox_list_created(struct mailbox_list *list)
 static void quota_root_set_namespace(struct quota_root *root,
                                     struct mail_namespace *namespaces)
 {
-       const struct quota_rule *rules;
-       unsigned int i, count;
+       const struct quota_rule *rule;
        const char *name;
 
        if (root->ns_prefix != NULL && root->ns == NULL) {
@@ -588,9 +587,8 @@ static void quota_root_set_namespace(struct quota_root *root,
                }
        }
 
-       rules = array_get(&root->set->rules, &count);
-       for (i = 0; i < count; i++) {
-               name = rules[i].mailbox_name;
+       array_foreach(&root->set->rules, rule) {
+               name = rule->mailbox_name;
                if (mail_namespace_find(namespaces, &name) == NULL)
                        i_error("quota: Unknown namespace: %s", name);
        }
index 40675572ef7c3b450b1589da6848d9fbc9042938..301b0c1bcb4e966298b4ba15d57e123f8d4ffb2f 100644 (file)
@@ -285,13 +285,11 @@ void quota_deinit(struct quota **_quota)
 struct quota_rule *
 quota_root_rule_find(struct quota_root_settings *root_set, const char *name)
 {
-       struct quota_rule *rules;
-       unsigned int i, count;
+       struct quota_rule *rule;
 
-       rules = array_get_modifiable(&root_set->rules, &count);
-       for (i = 0; i < count; i++) {
-               if (strcmp(rules[i].mailbox_name, name) == 0)
-                       return &rules[i];
+       array_foreach_modifiable(&root_set->rules, rule) {
+               if (strcmp(rule->mailbox_name, name) == 0)
+                       return rule;
        }
        return NULL;
 }
@@ -339,19 +337,16 @@ quota_rule_recalculate_relative_rules(struct quota_rule *rule,
 
 void quota_root_recalculate_relative_rules(struct quota_root_settings *root_set)
 {
-       struct quota_rule *rules;
-       struct quota_warning_rule *warning_rules;
-       unsigned int i, count;
+       struct quota_rule *rule;
+       struct quota_warning_rule *warning_rule;
 
-       rules = array_get_modifiable(&root_set->rules, &count);
-       for (i = 0; i < count; i++) {
-               quota_rule_recalculate_relative_rules(&rules[i],
+       array_foreach_modifiable(&root_set->rules, rule) {
+               quota_rule_recalculate_relative_rules(rule,
                                                      &root_set->default_rule);
        }
 
-       warning_rules = array_get_modifiable(&root_set->warning_rules, &count);
-       for (i = 0; i < count; i++) {
-               quota_rule_recalculate_relative_rules(&warning_rules[i].rule,
+       array_foreach_modifiable(&root_set->warning_rules, warning_rule) {
+               quota_rule_recalculate_relative_rules(&warning_rule->rule,
                                                      &root_set->default_rule);
        }
 }