-void start(const char *dirname1, const char *dirname2) {
- struct file_with_size *list1, *list2;
- list1 = scan_directory(dirname1);
- list2 = scan_directory(dirname2);
- destroy(list1);
- destroy(list2);
+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");
+ fprintf(out, "\n");
+ /* 01234567890123456789012345678901234567890123456789012345678901234567890123456789*/
+ fprintf(out, " -h, --help show this help\n");
+ fprintf(out, " -d, --ignore-dots ignore dot files and directories\n");
+ fprintf(out, " -0, --ignore-empty ignore empty files\n");
+ fprintf(out, " -c, --hide-matchings do not show which files in DIR2 corresponds to\n");
+ fprintf(out, " those in DIR1\n");
+ fprintf(out, " -g, --no-group-ids do not show the file groups\n");
+ fprintf(out, " -p, --show-progress show progress\n");
+ fprintf(out, " -r, --real-paths show the real file paths\n");
+ fprintf(out, " -i, --same-inodes-are-different\n");
+ fprintf(out, " consider files with same inode as different\n");
+#ifdef WITH_MD5
+ fprintf(out, " -m, --md5 use MD5 hashing\n");
+#endif
+ fprintf(out, "\n");
+ fprintf(out, "Report bugs and comments to <francois@fleuret.org>.\n");