rpm.c
changeset 88 4c38558a4873
parent 87 c1e04d4e3bc9
child 89 feaf8640e017
     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++ = '/';