79 struct archive_entry *entry;
85 if ((a = open_archive(url)) == NULL)
88 while ((archive_read_next_header(a, &entry)) == ARCHIVE_OK) {
91 bfile = archive_entry_pathname(entry);
95 if (strcmp(bfile, fname) == 0) {
96 buf = xbps_archive_get_file(a, entry);
99 archive_read_data_skip(a);
101 archive_read_free(a);
110 struct archive_entry *entry;
117 if ((a = open_archive(url)) == NULL)
122 rv = archive_read_next_header(a, &entry);
123 if (rv == ARCHIVE_EOF) {
127 if (rv == ARCHIVE_FATAL) {
128 const char *error = archive_error_string(a);
131 "Reading archive entry from: %s: %s\n",
135 "Reading archive entry from: %s: %s\n",
136 url, strerror(xbps_archive_errno(a)));
138 rv = xbps_archive_errno(a);
141 bfile = archive_entry_pathname(entry);
145 if (strcmp(bfile, fname) == 0) {
146 rv = archive_read_data_into_fd(a, fd);
147 if (rv != ARCHIVE_OK)
148 rv = xbps_archive_errno(a);
151 archive_read_data_skip(a);
153 archive_read_free(a);