make this run at a reasonable speed - say a few hundred times faster
authorSteve Lord <lord@sgi.com>
Tue, 18 Jun 2002 11:55:12 +0000 (11:55 +0000)
committerSteve Lord <lord@sgi.com>
Tue, 18 Jun 2002 11:55:12 +0000 (11:55 +0000)
src/mmapcat.c

index 3784d3b84269d67d3446099b2910795c3860dcd7..845916c8b642509b42a33b69ded43f38c49b8d51 100644 (file)
@@ -1,26 +1,31 @@
 /* mmapcat.c - derived from source by misiek@pld.ORG.PL */
 
-#include <fcntl.h>
+#include<fcntl.h>
 #include <unistd.h>
-#include <stdlib.h>
 #include <sys/mman.h>
 #include <sys/stat.h>
 #include <stdio.h>
 
 int main(int argc, char **argv)
 {
-       int fd;
-       char *ptr;
-       struct stat64 st;
+       int fd,n;
+       char *ptr, *ptr2;
+       struct stat st;
 
-       fd = open(argv[1], O_RDONLY);
-       if (fd < 0) {
+       fd=open(argv[1],O_RDONLY);
+       if(fd<0) {
                perror(argv[1]);
                exit(1);
        }
-       fstat64(fd, &st);
-       ptr = mmap64(NULL, st.st_size, PROT_READ, MAP_PRIVATE, fd, 0);
-       while (*ptr != 0)
-               write(1, ptr++, 1);
+       fstat(fd,&st);
+       if(st.st_size%4096==0) {
+               fprintf(stderr,"bad file size!\n");
+               exit(1);
+       }
+
+       ptr2 = ptr = mmap(NULL,st.st_size,PROT_READ,MAP_PRIVATE,fd,0);
+       while (*ptr!=0) ptr++;
+       write(1,ptr2,ptr - ptr2);
        exit(0);
 }
+