From: Francois Fleuret Date: Mon, 22 Mar 2010 07:56:05 +0000 (+0100) Subject: Now refreshes properly the progress bar if the tty width changes. X-Git-Url: https://fleuret.org/cgi-bin/gitweb/gitweb.cgi?a=commitdiff_plain;h=e19b97832c28af4781084bffa6bb31553624aa51;p=finddup.git Now refreshes properly the progress bar if the tty width changes. --- diff --git a/finddup.c b/finddup.c index f196f59..87ae90e 100644 --- a/finddup.c +++ b/finddup.c @@ -72,9 +72,6 @@ int same_inodes_are_different = 0; /* 1 means that comparison between two files with same inode will always be false */ -int tty_width = -1; /* Positive value means what width to use to show - the progress bar */ - #ifdef WITH_MD5 int use_md5 = 0; /* 1 means we keep an MD5 signature for each file */ #endif @@ -387,8 +384,13 @@ void print_result(struct file_node *list1, struct file_node *list2) { void print_progress(int max, int n, int *pp) { int p, k; - int width; - if(show_progress && tty_width > 0) { + int width, tty_width; + struct winsize win; + + if(show_progress && + isatty(STDOUT_FILENO) && + !ioctl (STDOUT_FILENO, TIOCGWINSZ, (char *) &win)) { + tty_width = win.ws_col; width = tty_width - 7; p = (width * n) / (max - 1); if(p > *pp) { @@ -411,7 +413,6 @@ void start(const char *dirname1, const char *dirname2) { int not_in, found; int nb_groups, nb_nodes; int list1_length, previous_progress; - struct winsize win; char *buffer1 = safe_malloc(sizeof(char) * READ_BUFFER_SIZE); char *buffer2 = safe_malloc(sizeof(char) * READ_BUFFER_SIZE); @@ -419,10 +420,6 @@ void start(const char *dirname1, const char *dirname2) { not_in = 0; if(show_progress) { - if(isatty(STDOUT_FILENO) && - !ioctl (STDOUT_FILENO, TIOCGWINSZ, (char *) &win)) { - tty_width = win.ws_col; - } fprintf(stderr, "Scanning %s ... ", dirname1); }