From 8df7ec4af867a634e3f85a259243d2909a72e90c Mon Sep 17 00:00:00 2001 From: John Stoffel Date: Sun, 17 May 2020 18:39:47 -0400 Subject: [PATCH 1/4] - cleanups for gcc9 and newer warn_unused_result warnings --- src/duc/cmd-ui.c | 2 +- src/libduc-graph/graph.c | 2 +- src/libduc/dir.c | 3 ++- src/libduc/index.c | 23 ++++++++++++++++++----- 4 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/duc/cmd-ui.c b/src/duc/cmd-ui.c index b3c963de..d9374268 100644 --- a/src/duc/cmd-ui.c +++ b/src/duc/cmd-ui.c @@ -279,7 +279,7 @@ static duc_dir *do_dir(duc_dir *dir, int depth) free(path); } endwin(); - system(cmd); + int ret = system(cmd); doupdate(); } break; diff --git a/src/libduc-graph/graph.c b/src/libduc-graph/graph.c index 73477713..27dd05a7 100644 --- a/src/libduc-graph/graph.c +++ b/src/libduc-graph/graph.c @@ -386,7 +386,7 @@ static int do_dir(duc_graph *g, duc_dir *dir, int level, double r1, double a1_di shorten_name(name, g->max_name_len); pol2car(g, ang((a1+a2)/2), (r1+r2)/2, &label->x, &label->y); - asprintf(&label->text, "%s\n%s", name, siz); + int r = asprintf(&label->text, "%s\n%s", name, siz); LL_APPEND(g->label_list, label); free(name); diff --git a/src/libduc/dir.c b/src/libduc/dir.c index 89b63f4f..ddde8aa1 100644 --- a/src/libduc/dir.c +++ b/src/libduc/dir.c @@ -99,9 +99,10 @@ char *duc_dir_get_path(duc_dir *dir) duc_dir *duc_dir_openent(duc_dir *dir, const struct duc_dirent *e) { + duc_dir *dir2 = duc_dir_new(dir->duc, &e->devino); if(dir2) { - asprintf(&dir2->path, "%s/%s", dir->path, e->name); + int r = asprintf(&dir2->path, "%s/%s", dir->path, e->name); } return dir2; } diff --git a/src/libduc/index.c b/src/libduc/index.c index b41de309..74bede71 100644 --- a/src/libduc/index.c +++ b/src/libduc/index.c @@ -294,7 +294,10 @@ static void report_skip(struct duc *duc, const char *name, const char *fmt, ...) { char path_full[DUC_PATH_MAX]; char msg[DUC_PATH_MAX + 128]; - realpath(name, path_full); + char *res = realpath(name, path_full); + if (res == NULL) { + duc_log(duc, DUC_LOG_WRN, "Cannot determine realpath of: %s", name); + } va_list va; va_start(va, fmt); vsnprintf(msg, sizeof(msg), fmt, va); @@ -320,7 +323,11 @@ static int is_fstype_allowed(struct duc_index_req *req, const char *name) /* Find file system type */ char path_full[DUC_PATH_MAX]; - realpath(name, path_full); + char *res = realpath(name, path_full); + if (res == NULL) { + report_skip(duc, name, "Cannot determine realpath result"); + return 0; + } struct fstype *fstype = NULL; HASH_FIND_STR(req->fstypes_mounted, path_full, fstype); if(fstype == NULL) { @@ -411,14 +418,15 @@ static struct scanner *scanner_new(struct duc *duc, struct scanner *scanner_pare static void scanner_scan(struct scanner *scanner_dir) { - struct duc *duc = scanner_dir->duc; + int r; + struct duc *duc = scanner_dir->duc; struct duc_index_req *req = scanner_dir->req; struct duc_index_report *report = scanner_dir->rep; report->dir_count ++; duc_size_accum(&report->size, &scanner_dir->ent.size); - int r = chdir(scanner_dir->ent.name); + r = chdir(scanner_dir->ent.name); if(r != 0) { report_skip(duc, scanner_dir->ent.name, strerror(errno)); return; @@ -533,7 +541,12 @@ static void scanner_scan(struct scanner *scanner_dir) } } - chdir(".."); + r = chdir(".."); + if(r != 0) { + report_skip(duc, scanner_dir->ent.name, strerror(errno)); + return; + } + } From 70ced240776d7222df8721681cb5fd0afcbbf38e Mon Sep 17 00:00:00 2001 From: John Stoffel Date: Sun, 17 May 2020 18:57:21 -0400 Subject: [PATCH 2/4] - more cleanups from gcc9 and newer warnings --- src/duc/cmd-ui.c | 3 +++ src/libduc-graph/graph.c | 3 +++ 2 files changed, 6 insertions(+) diff --git a/src/duc/cmd-ui.c b/src/duc/cmd-ui.c index d9374268..a73da263 100644 --- a/src/duc/cmd-ui.c +++ b/src/duc/cmd-ui.c @@ -280,6 +280,9 @@ static duc_dir *do_dir(duc_dir *dir, int depth) } endwin(); int ret = system(cmd); + if (ret == -1) { + printw("Cannot run command: %s", cmd); + } doupdate(); } break; diff --git a/src/libduc-graph/graph.c b/src/libduc-graph/graph.c index 27dd05a7..4ef57c5e 100644 --- a/src/libduc-graph/graph.c +++ b/src/libduc-graph/graph.c @@ -387,6 +387,9 @@ static int do_dir(duc_graph *g, duc_dir *dir, int level, double r1, double a1_di pol2car(g, ang((a1+a2)/2), (r1+r2)/2, &label->x, &label->y); int r = asprintf(&label->text, "%s\n%s", name, siz); + if (r < 0) { + label->text = "\0"; + } LL_APPEND(g->label_list, label); free(name); From c9f75a1a09921d34f16fb6247a7e6ce86ba82503 Mon Sep 17 00:00:00 2001 From: John Stoffel Date: Sun, 5 Jul 2020 09:19:58 -0400 Subject: [PATCH 3/4] - shutup compiler unused var warning with a hack, should probably fail here instead. --- src/libduc/dir.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/libduc/dir.c b/src/libduc/dir.c index ddde8aa1..57db88ef 100644 --- a/src/libduc/dir.c +++ b/src/libduc/dir.c @@ -102,7 +102,10 @@ duc_dir *duc_dir_openent(duc_dir *dir, const struct duc_dirent *e) duc_dir *dir2 = duc_dir_new(dir->duc, &e->devino); if(dir2) { - int r = asprintf(&dir2->path, "%s/%s", dir->path, e->name); + int r = asprintf(&dir2->path, "%s/%s", dir->path, e->name); + if (r < 0) { + dir2->path = '\0'; + } } return dir2; } From e4eca4cb8c5d19148d4fe9f97909139109f49daa Mon Sep 17 00:00:00 2001 From: John Stoffel Date: Mon, 5 Oct 2020 18:41:58 -0400 Subject: [PATCH 4/4] - for really large directory trees, we need to bump up the defaults of TokyoCabinet to handle the sheer numbers of directories and files better. Thanks to Bill Broadley (bill@broadley.org) for the reports and all his patient testing. Indexed 159694681 files and 52608730 directories, (20.4TB apparent, 21.0TB actual) in 9d, 22 hours, 59 minutes, and 49.54 seconds. Is a monster filesystem to crawl! --- src/libduc/db-tokyo.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/libduc/db-tokyo.c b/src/libduc/db-tokyo.c index 1eb7925b..3006113a 100644 --- a/src/libduc/db-tokyo.c +++ b/src/libduc/db-tokyo.c @@ -61,8 +61,12 @@ struct db *db_open(const char *path_db, int flags, duc_errno *e) int opts = BDBTLARGE; if(compress) opts |= BDBTDEFLATE; - tcbdbtune(db->hdb, -1, -1, -1, -1, -1, opts); - + int ret = tcbdbtune(db->hdb, 256, 512, 131072, 9, 11, opts); + if(ret == 0) { + *e = tcdb_to_errno(db->hdb); + goto err2; + } + int r = tcbdbopen(db->hdb, path_db, mode); if(r == 0) { *e = tcdb_to_errno(db->hdb);