]> git.tdb.fi Git - gldbg.git/blob - source/gldump.c
2b4c20b4002a17c85605a93b06c9d5a67ad4a03a
[gldbg.git] / source / gldump.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <unistd.h>
4 #include <fcntl.h>
5 #include <sys/stat.h>
6 #include <sys/mman.h>
7 #include "glprint.h"
8
9 int main(int argc, char **argv)
10 {
11         int fd;
12         struct stat st;
13         GlDecoder *dec;
14         char *addr;
15         char *end;
16         char *ptr;
17
18         if(argc<2)
19         {
20                 fprintf(stderr, "Usage: %s <dumpfile>\n", argv[0]);
21                 return 1;
22         }
23
24         fd = open(argv[1], O_RDONLY);
25         if(fd==-1)
26         {
27                 perror("open");
28                 return 1;
29         }
30         fstat(fd, &st);
31         addr = (char *)mmap(NULL, st.st_size, PROT_READ, MAP_SHARED, fd, 0);
32         end = addr+st.st_size;
33         ptr = addr;
34
35         dec = glprint_new(NULL, 0);
36
37         while(ptr<end)
38         {
39                 int ret;
40                 ret = gldecoder_decode(dec, ptr, end-ptr);
41                 if(ret<0)
42                 {
43                         fprintf(stderr, "Decode error with %d bytes left\n", end-ptr);
44                         break;
45                 }
46                 ptr += ret;
47                 printf("%s\n", glprint_get_buffer(dec));
48         }
49         munmap(addr, st.st_size);
50         close(fd);
51         gldecoder_delete(dec);
52
53         return 0;
54 }