file names */
int same_inodes_are_different = 0; /* 1 means that comparison between
- two file with same inode will
+ 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
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) {
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);
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);
}
free(buffer2);
}
-void print_help(FILE *out) {
+void usage(FILE *out) {
fprintf(out, "Usage: finddup [OPTION]... DIR1 [[and:|not:]DIR2]\n");
fprintf(out, "Version %s (%s)\n", VERSION_NUMBER, UNAME);
fprintf(out, "Without DIR2, lists duplicated files found in DIR1. With DIR2, lists files common to both directories. With the not: prefix, lists files found in DIR1 which do not exist in DIR2. The and: prefix is the default and should be used only if you have a directory starting with 'not:'\n");
switch (c) {
case 'h':
- print_help(stdout);
+ usage(stdout);
exit(EXIT_SUCCESS);
break;
use_md5 = 1;
#else
fprintf(stderr,
- "finddup has not be compiled with MD5 hashing.\n");
+ "finddup has not been compiled with MD5 hashing.\n");
+ usage(stderr);
exit(EXIT_FAILURE);
#endif
break;
default:
+ usage(stderr);
exit(EXIT_FAILURE);
}
}
same_inodes_are_different = 1;
start(argv[optind], 0);
} else {
- print_help(stderr);
+ usage(stderr);
exit(EXIT_FAILURE);
}