fix possible crash on user deletion
[srvx.git] / src / slab-read.c
1 #include "compat.h"
2
3 struct slab_log_entry
4 {
5     struct timeval tv;
6     void *slab;
7     ssize_t size;
8 };
9
10 static void
11 read_log_file(const char *name)
12 {
13     struct slab_log_entry sle;
14     FILE *log;
15
16     log = fopen(name, "r");
17     if (!log)
18     {
19         fprintf(stderr, "Unable to open %s: %s\n", name, strerror(errno));
20         return;
21     }
22
23     while (fread(&sle, sizeof(sle), 1, log) == 1)
24     {
25         fprintf(stdout, "%ld.%06ld %p ", (long)sle.tv.tv_sec, (long)sle.tv.tv_usec, sle.slab);
26         if (sle.size > 0)
27         {
28             fprintf(stdout, "-> %zd\n", sle.size);
29         }
30         else if (sle.size < 0)
31         {
32             fprintf(stdout, "<- %zd\n", -sle.size);
33         }
34         else /* slze.size == 0 */
35         {
36             fprintf(stdout, "unmap\n");
37         }
38     }
39 }
40
41 int
42 main(int argc, char *argv[])
43 {
44     int ii;
45
46     if (argc < 2)
47     {
48         fprintf(stderr, "Usage: %s <logfile ...>\n", argv[0]);
49         return 1;
50     }
51
52     for (ii = 1; ii < argc; ++ii)
53     {
54         read_log_file(argv[ii]);
55     }
56     return 0;
57 }