1.1 --- a/librazor/rpm.c Sun Jun 29 17:32:19 2008 +0100
1.2 +++ b/librazor/rpm.c Tue Jan 06 17:33:37 2009 +0000
1.3 @@ -23,7 +23,6 @@
1.4 #include <string.h>
1.5 #include <errno.h>
1.6 #include <sys/stat.h>
1.7 -#include <sys/mman.h>
1.8 #include <sys/types.h>
1.9 #include <sys/wait.h>
1.10 #include <fcntl.h>
1.11 @@ -353,10 +352,8 @@
1.12 {
1.13 struct razor_rpm *rpm;
1.14 struct rpm_header_index *base, *index;
1.15 - struct stat buf;
1.16 unsigned int count, i, nindex, hsize;
1.17 const char *name;
1.18 - int fd;
1.19
1.20 assert (filename != NULL);
1.21
1.22 @@ -365,25 +362,12 @@
1.23 return NULL;
1.24 memset(rpm, 0, sizeof *rpm);
1.25
1.26 - fd = open(filename, O_RDONLY);
1.27 - if (fd < 0) {
1.28 - fprintf(stderr, "couldn't open %s\n", filename);
1.29 + rpm->map = razor_file_get_contents(filename, &rpm->size);
1.30 + if (!rpm->map) {
1.31 + fprintf(stderr, "couldn't get contents of %s (%m)\n", filename);
1.32 return NULL;
1.33 }
1.34
1.35 - if (fstat(fd, &buf) < 0) {
1.36 - fprintf(stderr, "failed to stat %s (%m)\n", filename);
1.37 - return NULL;
1.38 - }
1.39 -
1.40 - rpm->size = buf.st_size;
1.41 - rpm->map = mmap(NULL, rpm->size, PROT_READ, MAP_PRIVATE, fd, 0);
1.42 - if (rpm->map == MAP_FAILED) {
1.43 - fprintf(stderr, "couldn't mmap %s\n", filename);
1.44 - return NULL;
1.45 - }
1.46 - close(fd);
1.47 -
1.48 rpm->signature = rpm->map + RPM_LEAD_SIZE;
1.49 nindex = ntohl(rpm->signature->nindex);
1.50 hsize = ntohl(rpm->signature->hsize);
1.51 @@ -780,7 +764,7 @@
1.52 assert (rpm != NULL);
1.53
1.54 free(rpm->dirs);
1.55 - err = munmap(rpm->map, rpm->size);
1.56 + err = razor_file_free_contents(rpm->map, rpm->size);
1.57 free(rpm);
1.58
1.59 return err;