1.1 --- a/rpm.c Sat Dec 29 15:36:13 2007 -0500
1.2 +++ b/rpm.c Sat Dec 29 15:56:59 2007 -0500
1.3 @@ -128,16 +128,18 @@
1.4
1.5 rpm = malloc(sizeof *rpm);
1.6 memset(rpm, 0, sizeof *rpm);
1.7 - if (stat(filename, &buf) < 0) {
1.8 - fprintf(stderr, "no such file %s (%m)\n", filename);
1.9 - return NULL;
1.10 - }
1.11
1.12 fd = open(filename, O_RDONLY);
1.13 if (fd < 0) {
1.14 fprintf(stderr, "couldn't open %s\n", filename);
1.15 return NULL;
1.16 }
1.17 +
1.18 + if (fstat(fd, &buf) < 0) {
1.19 + fprintf(stderr, "failed to stat %s (%m)\n", filename);
1.20 + return NULL;
1.21 + }
1.22 +
1.23 rpm->size = buf.st_size;
1.24 rpm->map = mmap(NULL, rpm->size, PROT_READ, MAP_PRIVATE, fd, 0);
1.25 if (rpm->map == MAP_FAILED) {
1.26 @@ -290,7 +292,9 @@
1.27 buffer);
1.28 return -1;
1.29 }
1.30 - /* FIXME: permissions */
1.31 +
1.32 + /* FIXME: What to do about permissions for dirs we
1.33 + * have to create but are not in the cpio archive? */
1.34 }
1.35
1.36 *p++ = '/';