scanner.c

changeset 21
91e0890464b0
parent 20
43725438ac50
child 22
4508da679ffb
     1.1 --- a/scanner.c	Thu Oct 20 14:13:56 2011 +0200
     1.2 +++ b/scanner.c	Thu Oct 20 15:21:53 2011 +0200
     1.3 @@ -8,6 +8,7 @@
     1.4  
     1.5  #include "scanner.h"
     1.6  #include "suffix_fnc.h"
     1.7 +#include "bfile_heuristics.h"
     1.8  
     1.9  int scanDirectory(DIR *dir, const int spaces,
    1.10                    char* currdir, settings_t* settings) {
    1.11 @@ -15,6 +16,7 @@
    1.12    struct dirent *entry;
    1.13    int lines, a;
    1.14    int lineSum = 0;
    1.15 +  bool bfile;
    1.16  
    1.17    while ((entry = readdir(dir)) != NULL) {
    1.18      if (strcmp(entry->d_name, ".") != 0 && strcmp(entry->d_name, "..") != 0) {
    1.19 @@ -43,6 +45,7 @@
    1.20  
    1.21        // Count lines
    1.22        lines = 0;
    1.23 +      bfile = false;
    1.24        if (testSuffix(filename, settings)) {
    1.25          FILE *file = fopen(filename, "r");
    1.26          if (file == NULL) {
    1.27 @@ -53,28 +56,25 @@
    1.28          do {
    1.29            a = fgetc(file);
    1.30  
    1.31 +          bfile = bfile_check(settings->bfileHeuristics, a);
    1.32 +
    1.33            if (a == 10) {
    1.34              lines++;
    1.35            }
    1.36 -        } while (a != EOF);
    1.37 +        } while (!bfile && a != EOF);
    1.38          fclose(file);
    1.39  
    1.40          // Print line count
    1.41 -        #ifdef _WIN32
    1.42 +        if (bfile) {
    1.43 +          printf("%-60s%19s\n", entryname, "binary");
    1.44 +        } else {
    1.45            printf("%-60s%13d lines\n", entryname, lines);
    1.46 -        #else
    1.47 -          printf("%-60s%14d lines\n", entryname, lines);
    1.48 -        #endif /* _WIN32 */
    1.49 -
    1.50 +        }
    1.51          lineSum += lines;
    1.52        } else {
    1.53          if (!settings->matchesOnly) {
    1.54            // Print hint
    1.55 -          #ifdef _WIN32
    1.56 -            printf("%-60s%19s\n", entryname, "no match");
    1.57 -          #else
    1.58 -            printf("%-60s%20s\n", entryname, "no match");
    1.59 -          #endif /* _WIN32 */
    1.60 +          printf("%-60s%19s\n", entryname, "no match");
    1.61          }
    1.62        }
    1.63      }

mercurial