comparison tests/read_big_file.c @ 0:6ce4443e7545

Add the draft of an API to collect statistics on LXC
author Louis Opter <kalessin@kalessin.fr>
date Wed, 29 Dec 2010 23:28:14 +0100
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:6ce4443e7545
1 #include <sys/types.h>
2 #include <sys/mman.h>
3 #include <sys/stat.h>
4
5 #include <err.h>
6 #include <fcntl.h>
7 #include <stdlib.h>
8 #include <string.h>
9 #include <unistd.h>
10
11 #include "lxcstats.h"
12 #include "_lxcstats.h"
13
14 int
15 main(void)
16 {
17 char *reference;
18 struct stat sb;
19 char *trial;
20 size_t size;
21 int fd;
22
23 fd = open("/etc/services", O_RDONLY);
24 if (fd == -1)
25 err(EXIT_FAILURE, "can't open /etc/services");
26
27 size = _lxcst_read_file("/etc/services", &trial);
28 if (!trial)
29 err(EXIT_FAILURE, "can't read /etc/services");
30
31 if (fstat(fd, &sb) != 0)
32 err(EXIT_FAILURE, "can't stat /etc/services");
33
34 reference = mmap(0, sb.st_size, PROT_READ, MAP_PRIVATE, fd, 0);
35 if (!reference)
36 err(EXIT_FAILURE, "can't map /etc/services");
37
38 if ((size_t)sb.st_size != size)
39 errx(EXIT_FAILURE, "sizes are different");
40
41 if (memcmp(reference, trial, size))
42 errx(EXIT_FAILURE, "buffers are different");
43
44 free(trial);
45
46 return (EXIT_SUCCESS);
47 }