diff regexParser/sequentialSearch.cc @ 231:d67649929e96

add grepWalk
author Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
date Tue, 19 Jan 2016 12:54:11 +0900
parents 2081b9d6a179
children 1a34e702776a
line wrap: on
line diff
--- a/regexParser/sequentialSearch.cc	Mon Jan 18 16:41:17 2016 +0900
+++ b/regexParser/sequentialSearch.cc	Tue Jan 19 12:54:11 2016 +0900
@@ -4,19 +4,8 @@
 #include <fcntl.h>
 #include <sys/stat.h>
 #include <sys/mman.h>
-#include <sys/types.h>
 
-typedef struct buffer {
-    unsigned char *buff;
-    unsigned char *buffptr;
-    unsigned char *buffend;
-    unsigned char *matchBegin;
-} Buffer, *BufferPtr;
-
-typedef struct {
-    caddr_t file_mmap;
-    off_t size;
-} st_mmap_t;
+#include "sequentialSearch.h"
 
 void state1(Buffer buff);
 
@@ -31,19 +20,10 @@
     stateSkip(buff);
 }
 
-#include "state.cc"
-int main(int argc, char **argv) {
-    char *filename;
-    for (int i = 1; i < argc; i++) {
-        if (strcmp(argv[i],"-file") == 0) {
-            filename = argv[i+1]; i++;
-        }
-    }
-
+st_mmap_t createSt_mmap(char* filename,int fd) {
+    st_mmap_t st_mmap;
     int map = MAP_PRIVATE;
-    st_mmap_t st_mmap;
     struct stat sb;
-    int fd;
     if ((fd=open(filename,O_RDONLY,0666))==0) {
         perror("");
         fprintf(stderr,"can't open %s\n",filename);
@@ -59,10 +39,29 @@
         perror("");
         fprintf(stderr,"cannot mmap %s\n",filename);
     }
+    st_mmap.file_mmap = file_mmap;
+    return st_mmap;
+}
 
+Buffer createBuffer(st_mmap_t st_mmap) {
     Buffer buff;
-    buff.buff = buff.buffptr = buff.matchBegin = file_mmap;
+    buff.buff = buff.buffptr = buff.matchBegin = st_mmap.file_mmap;
     buff.buffend = buff.buff + st_mmap.size;
+    return buff;
+}
+
+#include "state.cc"
+int main(int argc, char **argv) {
+    char *filename;
+    for (int i = 1; i < argc; i++) {
+        if (strcmp(argv[i],"-file") == 0) {
+            filename = argv[i+1]; i++;
+        }
+    }
+
+    int fd;
+    st_mmap_t st_mmap = createSt_mmap(filename,fd);
+    Buffer buff = createBuffer(st_mmap);
     stateSkip(buff);
     close(fd);
     return 0;