From: Kristian Høgsberg Date: Sat, 29 Dec 2007 20:56:59 +0000 (-0500) Subject: Use fstat() instead of stat() when opening rpm. X-Git-Tag: 0.1~272 X-Git-Url: http://project.juiblex.co.uk/git/?a=commitdiff_plain;h=c272049116d4644e8c0af2e115dc100a6ca2d884;p=razor2.git%2F.git Use fstat() instead of stat() when opening rpm. --- diff --git a/rpm.c b/rpm.c index dc5d355..0eac911 100644 --- a/rpm.c +++ b/rpm.c @@ -128,16 +128,18 @@ razor_rpm_open(const char *filename) rpm = malloc(sizeof *rpm); memset(rpm, 0, sizeof *rpm); - if (stat(filename, &buf) < 0) { - fprintf(stderr, "no such file %s (%m)\n", filename); - return NULL; - } fd = open(filename, O_RDONLY); if (fd < 0) { fprintf(stderr, "couldn't open %s\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) { @@ -290,7 +292,9 @@ create_path(struct installer *installer, buffer); return -1; } - /* FIXME: permissions */ + + /* FIXME: What to do about permissions for dirs we + * have to create but are not in the cpio archive? */ } *p++ = '/';