libarchive: open_zipped() does not need to check extensions for e.g. gzip
No binary (build failed)
—
(log yok)
| @@ -182,27 +182,26 @@ int FAST_FUNC setup_unzip_on_fd(int fd, int fail_if_not_detected) | |
| int FAST_FUNC open_zipped(const char *fname) | |
| { | |
| - | char *sfx; |
| int fd; | |
| fd = open(fname, O_RDONLY); | |
| if (fd < 0) | |
| return fd; | |
| - | sfx = strrchr(fname, '.'); |
| - | if (sfx) { |
| - | sfx++; |
| - | if (ENABLE_FEATURE_SEAMLESS_LZMA && strcmp(sfx, "lzma") == 0) |
| - | /* .lzma has no header/signature, just trust it */ |
| + | if (ENABLE_FEATURE_SEAMLESS_LZMA) { |
| + | /* .lzma has no header/signature, can only detect it by extension */ |
| + | char *sfx = strrchr(fname, '.'); |
| + | if (sfx && strcmp(sfx+1, "lzma") == 0) { |
| open_transformer_with_sig(fd, unpack_lzma_stream, "unlzma"); | |
| - | else |
| - | if ((ENABLE_FEATURE_SEAMLESS_GZ && strcmp(sfx, "gz") == 0) |
| - | || (ENABLE_FEATURE_SEAMLESS_BZ2 && strcmp(sfx, "bz2") == 0) |
| - | || (ENABLE_FEATURE_SEAMLESS_XZ && strcmp(sfx, "xz") == 0) |
| - | ) { |
| - | setup_unzip_on_fd(fd, /*fail_if_not_detected:*/ 1); |
| + | return fd; |
| } | |
| } | |
| + | if ((ENABLE_FEATURE_SEAMLESS_GZ) |
| + | || (ENABLE_FEATURE_SEAMLESS_BZ2) |
| + | || (ENABLE_FEATURE_SEAMLESS_XZ) |
| + | ) { |
| + | setup_unzip_on_fd(fd, /*fail_if_not_detected:*/ 1); |
| + | } |
| return fd; | |
| } | |