summaryrefslogtreecommitdiffstats
path: root/demux
diff options
context:
space:
mode:
Diffstat (limited to 'demux')
-rw-r--r--demux/demux_libarchive.c19
1 files changed, 3 insertions, 16 deletions
diff --git a/demux/demux_libarchive.c b/demux/demux_libarchive.c
index 3f1a655726..dcdbe65fc0 100644
--- a/demux/demux_libarchive.c
+++ b/demux/demux_libarchive.c
@@ -65,23 +65,10 @@ static int open_file(struct demuxer *demuxer, enum demux_check check)
char **files = NULL;
int num_files = 0;
- for (;;) {
- struct archive_entry *entry;
- int r = archive_read_next_header(mpa->arch, &entry);
- if (r == ARCHIVE_EOF)
- break;
- if (r < ARCHIVE_OK)
- MP_ERR(demuxer, "%s\n", archive_error_string(mpa->arch));
- if (r < ARCHIVE_WARN)
- break;
- if (archive_entry_filetype(entry) != AE_IFREG)
- continue;
- const char *fn = archive_entry_pathname(entry);
- // Some archives may have no filenames.
- if (!fn)
- fn = talloc_asprintf(mpa, "mpv_unknown#%d\n", num_files);
+ while (mp_archive_next_entry(mpa)) {
// stream_libarchive.c does the real work
- char *f = talloc_asprintf(mpa, "archive://%s|%s", prefix, fn);
+ char *f = talloc_asprintf(mpa, "archive://%s|%s", prefix,
+ mpa->entry_filename);
MP_TARRAY_APPEND(mpa, files, num_files, f);
}