char path[PATH_MAX];
FILE* f;
+ struct stat stat;
+
struct pakfire_package* package;
// metadata
static int pakfire_archive_try_open(struct pakfire_archive* archive, const char* path) {
struct archive* a = NULL;
+ int r;
if (!path)
return EINVAL;
if (!archive->f)
return 1;
+ // Call stat() on f
+ r = fstat(fileno(archive->f), &archive->stat);
+ if (r) {
+ ERROR(archive->pakfire, "Could not stat archive: %m\n");
+ goto ERROR;
+ }
+
// Open the archive file for reading.
- int r = open_archive(archive, &a);
+ r = open_archive(archive, &a);
if (r)
goto ERROR;
}
PAKFIRE_EXPORT ssize_t pakfire_archive_get_size(struct pakfire_archive* archive) {
- struct stat buf;
-
- int r = fstat(fileno(archive->f), &buf);
- if (r) {
- ERROR(archive->pakfire, "Could not stat %s: %m\n", archive->path);
-
- return -1;
- }
-
- return buf.st_size;
+ return archive->stat.st_size;
}
int pakfire_archive_check_digest(struct pakfire_archive* archive,