Mercurial > archived > louis > perso > liblxcstats
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 } |