diff -r c5409c8be36f -r 69be673a4fd0 src/scanner.c --- a/src/scanner.c Sat Jul 25 17:53:54 2020 +0200 +++ b/src/scanner.c Sat Jul 25 18:28:01 2020 +0200 @@ -112,11 +112,11 @@ return list; } -int scanDirectory(scanner_t scanner, settings_t* settings, - string_list_t* output) { +void scanDirectory(scanner_t scanner, settings_t* settings, + string_list_t* output, scanresult_t* result) { - int lines, a; - int lineSum = 0; + result->directory = 0; + int a; bool bfile; char *outbuf; @@ -128,15 +128,17 @@ if (!S_ISREG(filelist->st_mode)) { if (settings->recursive && S_ISDIR(filelist->st_mode)) { string_list_t *recoutput = new_string_list_t(); - lines = scanDirectory( + scanresult_t recresult; + scanDirectory( (scanner_t) {filelist->filename, scanner.spaces+1}, - settings, recoutput); - lineSum += lines; + settings, recoutput, &recresult); + result->directory += recresult.directory; if (!settings->matchesOnly || recoutput->count > 0) { outbuf = (char*) malloc(81); snprintf(outbuf, 81, "%*s/%*s%13d lines\n", filelist->displayname_len+scanner.spaces, filelist->displayname, - 60-filelist->displayname_len-scanner.spaces-1, "", lines); + 60-filelist->displayname_len-scanner.spaces-1, "", + recresult.directory); add_string(output, outbuf); for (int i = 0 ; i < recoutput->count ; i++) { add_string(output, recoutput->items[i]); @@ -155,7 +157,7 @@ && !testSuffix(filelist->displayname, settings->excludeSuffixes)) { /* Count lines */ - lines = 0; + int lines = 0; bfile = false; bfile_reset(settings->bfileHeuristics); regex_parser_reset(settings->regex); @@ -209,7 +211,7 @@ add_string(output, outbuf); } } else { - lineSum += lines; + result->directory += lines; outbuf = (char*) malloc(81); snprintf(outbuf, 81, "%*s%*s%13d lines\n", filelist->displayname_len+scanner.spaces, filelist->displayname, @@ -235,6 +237,4 @@ filelist = filelist->next; free(freethis); } - - return lineSum; }