Mercurial > dovecot > core-2.2
changeset 9298:468273e27777 HEAD
doveadm -v: Print progress counter.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Fri, 15 May 2009 16:25:29 -0400 |
parents | 3d20388cee21 |
children | 602adc1f2f83 |
files | src/util/doveadm.c |
diffstat | 1 files changed, 16 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/util/doveadm.c Fri May 15 16:12:49 2009 -0400 +++ b/src/util/doveadm.c Fri May 15 16:25:29 2009 -0400 @@ -11,6 +11,7 @@ #include "mail-storage-settings.h" #include "mail-storage-service.h" +#include <stdio.h> #include <stdlib.h> static struct mail_user *mail_user; @@ -152,6 +153,7 @@ { struct mail_storage_service_input input; struct mail_storage_service_multi_ctx *multi; + unsigned int user_idx, user_count, interval, n; const char *user; pool_t pool; int ret; @@ -166,6 +168,12 @@ lib_signals_set_handler(SIGINT, FALSE, sig_die, NULL); lib_signals_set_handler(SIGTERM, FALSE, sig_die, NULL); + user_count = mail_storage_service_multi_all_init(multi); + n = user_count / 10000; + for (interval = 10; n > 0 && interval < 1000; interval *= 10) + n /= 10; + + user_idx = 0; while ((ret = mail_storage_service_multi_all_next(multi, &user)) > 0) { if (killed_signo != 0) { /* killed by a signal */ @@ -180,7 +188,15 @@ } T_END; if (ret < 0) break; + if ((service_flags & MAIL_STORAGE_SERVICE_FLAG_DEBUG) != 0) { + if (++user_idx % interval == 0) { + printf("\r%d / %d", user_idx, user_count); + fflush(stdout); + } + } } + if ((service_flags & MAIL_STORAGE_SERVICE_FLAG_DEBUG) != 0) + printf("\n"); i_set_failure_prefix("doveadm: "); if (ret < 0) i_error("Failed to iterate through some users");