scanner.c

changeset 34
fa9bda32de17
parent 33
1a2d7298bc82
child 35
35120de6ee53
--- a/scanner.c	Tue Oct 02 10:49:25 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,126 +0,0 @@
-/*
- * scanner.c
- *
- *  Created on: 23.05.2011
- *      Author: Mike
- */
-
-
-#include "scanner.h"
-#include "suffix_fnc.h"
-#include "bfile_heuristics.h"
-#include "regex_parser.h"
-#include <sys/stat.h>
-
-int scanDirectory(scanner_t scanner, settings_t* settings) {
-
-  DIR *dirf;
-  struct dirent *entry;
-  int lines, a;
-  int lineSum = 0;
-  bool bfile;
-  struct stat statbuf;
-
-  if ((dirf = opendir(scanner.dir)) == NULL) {
-    printf(scanner.dir);
-    perror("  Directory access failed");
-    return 0;
-  }
-
-  while ((entry = readdir(dirf)) != NULL) {
-    if (strcmp(entry->d_name, ".") != 0 && strcmp(entry->d_name, "..") != 0) {
-      /* Construct tree view and absolute pathname strings */
-      char entryname[strlen(entry->d_name)+scanner.spaces];
-      for (int t = 0 ; t < scanner.spaces ; t++) {
-        entryname[t]=' ';
-      }
-      entryname[scanner.spaces] = 0;
-      strcat(entryname, entry->d_name);
-  
-      char filename[(1+strlen(scanner.dir)+strlen(entry->d_name))];
-      strcpy(filename, scanner.dir);
-      strncat(filename, &settings->fileSeparator, 1);
-      strcat(filename, entry->d_name);
-
-      /* Check for subdirectory */
-      if (stat(filename, &statbuf) == 0) {
-        if (!(statbuf.st_mode & S_IFREG)) {
-          printf("%-60s\n", entryname);
-          if (settings->recursive && (statbuf.st_mode & S_IFDIR)) {
-            lineSum += scanDirectory(
-                (scanner_t) {filename, scanner.spaces+1}, settings);
-          }
-          continue;
-        }
-      } else {
-        perror("  Error in stat call");
-        continue;
-      }
-
-      if ((settings->includeSuffixes->count == 0
-          || testSuffix(filename, settings->includeSuffixes))
-          && !testSuffix(filename, settings->excludeSuffixes)) {
-        /* Count lines */
-        lines = 0;
-        bfile = false;
-        bfile_reset(settings->bfileHeuristics);
-        char line_buffer[REGEX_MAX_LINELENGTH];
-        int line_buffer_offset = 0;
-
-        FILE *file = fopen(filename, "r");
-        if (file == NULL) {
-          printf(entryname);
-          perror("  File acces failed");
-          continue;
-        }
-
-        do {
-          a = fgetc(file);
-
-          bfile = bfile_check(settings->bfileHeuristics, a);
-
-          if (a == 10 || a == EOF) {
-            line_buffer[line_buffer_offset] = 0;
-            if (regex_parser_do(settings->regex, line_buffer) == 0) {
-              /* Only subtract lines when matching has finished */
-              if (!regex_parser_matching(settings->regex)) {
-                lines -= settings->regex->matched_lines;
-              }
-            }
-
-            line_buffer_offset = 0;
-            lines++;
-          } else {
-            if (line_buffer_offset < REGEX_MAX_LINELENGTH) {
-              line_buffer[line_buffer_offset] = a;
-              line_buffer_offset++;
-            } else {
-              line_buffer[line_buffer_offset-1] = 0;
-              settings->confusing_lnlen = true;
-            }
-          }
-        } while (!bfile && a != EOF);
-        fclose(file);
-
-        /* Print and sum line count */
-        if (bfile) {
-          if (!settings->matchesOnly) {
-            printf("%-60s%19s\n", entryname, "binary");
-          }
-        } else {
-          lineSum += lines;
-          printf("%-60s%13d lines\n", entryname, lines);
-        }
-      } else {
-        if (!settings->matchesOnly) {
-          /* Print hint */
-          printf("%-60s%19s\n", entryname, "no match");
-        }
-      }
-    }
-  }
-
-  closedir(dirf);
-
-  return lineSum;
-}

mercurial