src/scanner.c

changeset 60
69be673a4fd0
parent 58
bb512754aaf3
child 61
9c8d768f0244
--- 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;
 }

mercurial