Add archives.h

This commit is contained in:
pavlik_dev 2024-10-14 00:25:37 +03:00
parent 21c7186b81
commit d8cb560f68

View File

@ -7,7 +7,8 @@
#include <cstring> #include <cstring>
#include <unistd.h> #include <unistd.h>
#ifndef NO_MIME #ifndef NO_MIME
#include <magic.h> #include <magic.h> // Did you remember to run ./configure?
#include "archives.h" // Run make nomime
#endif #endif
#include <string> #include <string>
#include <vector> #include <vector>
@ -60,53 +61,10 @@ bool starts_with(const std::string& prefix, const std::string& string) {
return string.rfind(prefix, 0) == 0; return string.rfind(prefix, 0) == 0;
} }
#ifndef NO_MIME
bool is_archive(const std::string& mime_type) bool is_archive(const std::string& mime_type)
{ {
const std::string archives[] = { const std::string archives[] = ARCHIVES;
"application/x-archive",
"application/x-cpio",
"application/x-shar",
"application/x-iso9660-image",
"application/x-sbx",
"application/x-tar",
"application/x-brotli",
"application/x-bzip2",
"application/vnd.genozip",
"application/gzip",
"application/x-lzip",
"application/x-lzma",
"application/x-lzop",
"application/x-snappy-framed",
"application/x-xz",
"application/x-compress",
"application/x-compress",
"application/zstd",
"application/x-7z-compressed",
"application/x-ace-compressed",
"application/x-astrotite-afa",
"application/x-alz-compressed",
"application/vnd.android.package-archive",
"application/x-freearc",
"application/x-arj",
"application/x-b1",
"application/vnd.ms-cab-compressed",
"application/x-cfs-compressed",
"application/x-dar",
"application/x-dgc-compressed",
"application/x-apple-diskimage",
"application/x-gca-compressed",
"application/java-archive",
"application/x-lzh",
"application/x-lzx",
"application/x-rar-compressed",
"application/x-stuffit",
"application/x-stuffitx",
"application/x-gtar",
"application/x-ms-wim",
"application/x-xar",
"application/zip",
"application/x-zoo"
};
int len = sizeof(archives)/sizeof(archives[0]); int len = sizeof(archives)/sizeof(archives[0]);
for(int i = 0; i < len; ++i) for(int i = 0; i < len; ++i)
@ -118,6 +76,7 @@ bool is_archive(const std::string& mime_type)
} }
return false; return false;
} }
#endif
std::string get_name_from_filetype(const enum FileType fs) std::string get_name_from_filetype(const enum FileType fs)
{ {
@ -245,7 +204,7 @@ std::string print_permissions(mode_t mode, bool is_dir) {
other += (mode & S_IWOTH) ? "w" : "-"; other += (mode & S_IWOTH) ? "w" : "-";
other += (mode & S_IXOTH) ? "x" : "-"; other += (mode & S_IXOTH) ? "x" : "-";
return (is_dir ? "d" : "-") + user + group + other; return (is_dir ? "d" : "-") + user + group + other;
} }
@ -354,6 +313,6 @@ int main(int argc, char *argv[])
printf("\n"); printf("\n");
} }
} }
return 0; return 0;
} }