diff -r 4124c37fd953 -r e41980e2f108 librazor/rpm.c --- a/librazor/rpm.c Sun Jun 29 17:32:19 2008 +0100 +++ b/librazor/rpm.c Wed Jan 07 17:26:33 2009 +0000 @@ -23,7 +23,6 @@ #include #include #include -#include #include #include #include @@ -353,10 +352,8 @@ { struct razor_rpm *rpm; struct rpm_header_index *base, *index; - struct stat buf; unsigned int count, i, nindex, hsize; const char *name; - int fd; assert (filename != NULL); @@ -365,25 +362,12 @@ return NULL; memset(rpm, 0, sizeof *rpm); - fd = open(filename, O_RDONLY); - if (fd < 0) { - fprintf(stderr, "couldn't open %s\n", filename); + rpm->map = razor_file_get_contents(filename, &rpm->size); + if (!rpm->map) { + fprintf(stderr, "couldn't get contents of %s (%m)\n", filename); return NULL; } - if (fstat(fd, &buf) < 0) { - fprintf(stderr, "failed to stat %s (%m)\n", filename); - return NULL; - } - - rpm->size = buf.st_size; - rpm->map = mmap(NULL, rpm->size, PROT_READ, MAP_PRIVATE, fd, 0); - if (rpm->map == MAP_FAILED) { - fprintf(stderr, "couldn't mmap %s\n", filename); - return NULL; - } - close(fd); - rpm->signature = rpm->map + RPM_LEAD_SIZE; nindex = ntohl(rpm->signature->nindex); hsize = ntohl(rpm->signature->hsize); @@ -780,7 +764,7 @@ assert (rpm != NULL); free(rpm->dirs); - err = munmap(rpm->map, rpm->size); + err = razor_file_free_contents(rpm->map, rpm->size); free(rpm); return err;