]> git.tdb.fi Git - gldbg.git/blob - source/gldump.c
Fix things for 64-bit systems
[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                         int bytes_left = end-ptr;
44                         fprintf(stderr, "Decode error with %d bytes left\n", bytes_left);
45                         break;
46                 }
47                 ptr += ret;
48                 printf("%s\n", glprint_get_buffer(dec));
49         }
50         munmap(addr, st.st_size);
51         close(fd);
52         gldecoder_delete(dec);
53
54         return 0;
55 }