From 1e49f22f07881dffc04f8f09d4ad4e4a65b85b09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nguy=E1=BB=85n=20Th=C3=A1i=20Ng=E1=BB=8Dc=20Duy?= Date: Mon, 7 Nov 2011 09:59:26 +0700 Subject: fsck: print progress MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fsck is usually a long process and it would be nice if it prints progress from time to time. Progress meter is not printed when --verbose is given because --verbose prints a lot, there's no need for "alive" indicator. Progress meter may provide "% complete" information but it would be lost anyway in the flood of text. Signed-off-by: Nguyễn Thái Ngọc Duy Signed-off-by: Junio C Hamano --- pack-check.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'pack-check.c') diff --git a/pack-check.c b/pack-check.c index 3b48b86156..63a595c45c 100644 --- a/pack-check.c +++ b/pack-check.c @@ -1,6 +1,7 @@ #include "cache.h" #include "pack.h" #include "pack-revindex.h" +#include "progress.h" struct idx_entry { off_t offset; @@ -43,7 +44,9 @@ int check_pack_crc(struct packed_git *p, struct pack_window **w_curs, static int verify_packfile(struct packed_git *p, struct pack_window **w_curs, - verify_fn fn) + verify_fn fn, + struct progress *progress, uint32_t base_count) + { off_t index_size = p->index_size; const unsigned char *index_base = p->index_data; @@ -127,8 +130,12 @@ static int verify_packfile(struct packed_git *p, if (eaten) data = NULL; } + if (((base_count + i) & 1023) == 0) + display_progress(progress, base_count + i); free(data); + } + display_progress(progress, base_count + i); free(entries); return err; @@ -157,7 +164,8 @@ int verify_pack_index(struct packed_git *p) return err; } -int verify_pack(struct packed_git *p, verify_fn fn) +int verify_pack(struct packed_git *p, verify_fn fn, + struct progress *progress, uint32_t base_count) { int err = 0; struct pack_window *w_curs = NULL; @@ -166,7 +174,7 @@ int verify_pack(struct packed_git *p, verify_fn fn) if (!p->index_data) return -1; - err |= verify_packfile(p, &w_curs, fn); + err |= verify_packfile(p, &w_curs, fn, progress, base_count); unuse_pack(&w_curs); return err; -- cgit v1.2.3