From f6a3980e1a2d1024a4c3d7b09ac1e167ffb7980a Mon Sep 17 00:00:00 2001 From: rbuj Date: Thu, 19 Sep 2019 09:35:36 +0200 Subject: Ar: Update MIME type and add magic numbers Changes: Replace application/x-ar with application/x-archive ar magic number: "!\n" deb magic number (Debian 0.93+): "!\ndebian-binary" REF: https://en.wikipedia.org/wiki/Ar_(Unix) https://en.wikipedia.org/wiki/Deb_(file_format) Test: $ touch a && touch b && ar r test.ar a b && cp test.ar test-2.a $ xdg-mime query filetype test.ar application/x-archive $ xdg-mime query filetype dftp_2.2-1.deb application/vnd.debian.binary-package $ gio info test.ar | grep content-type standard::content-type: application/x-archive standard::fast-content-type: application/x-archive $ gio info dftp_2.2-1.deb | grep content-type standard::content-type: application/vnd.debian.binary-package standard::fast-content-type: application/vnd.debian.binary-package $ hexdump -C -n 8 test.ar 00000000 21 3c 61 72 63 68 3e 0a |!.| 00000008 $ hexdump -C -n 21 dftp_2.2-1.deb 00000000 21 3c 61 72 63 68 3e 0a 64 65 62 69 61 6e 2d 62 |!.debian-b| 00000010 69 6e 61 72 79 |inary| 00000015 $ ./autogen.sh --prefix=/usr --disable-magic && make && sudo make install --- caja/caja-engrampa.c | 2 +- data/engrampa.desktop.in.in | 2 +- src/fr-archive.c | 2 ++ src/fr-command-ar.c | 8 ++++---- src/fr-init.c | 8 ++++---- 5 files changed, 12 insertions(+), 10 deletions(-) diff --git a/caja/caja-engrampa.c b/caja/caja-engrampa.c index 8e1a8f2..3667b5a 100644 --- a/caja/caja-engrampa.c +++ b/caja/caja-engrampa.c @@ -149,7 +149,7 @@ static struct { { "application/x-7z-compressed-tar", TRUE }, { "application/x-ace", TRUE }, { "application/x-alz", TRUE }, - { "application/x-ar", TRUE }, + { "application/x-archive", TRUE }, { "application/x-arj", TRUE }, { "application/x-brotli", TRUE }, { "application/x-brotli-compressed-tar", TRUE }, diff --git a/data/engrampa.desktop.in.in b/data/engrampa.desktop.in.in index 26ccf0c..7222ba6 100644 --- a/data/engrampa.desktop.in.in +++ b/data/engrampa.desktop.in.in @@ -9,7 +9,7 @@ Terminal=false Type=Application Icon=engrampa Categories=GTK;Utility;Archiving;Compression; -MimeType=application/x-7z-compressed;application/x-7z-compressed-tar;application/x-ace;application/x-alz;application/x-ar;application/x-arj;application/x-brotli;application/x-brotli-compressed-tar;application/x-bzip;application/x-bzip-compressed-tar;application/x-bzip1;application/x-bzip1-compressed-tar;application/x-cabinet;application/x-cbr;application/x-cbz;application/x-cd-image;application/x-compress;application/x-compressed-tar;application/x-cpio;application/vnd.debian.binary-package;application/x-ear;application/x-ms-dos-executable;application/x-gtar;application/x-gzip;application/x-gzpostscript;application/x-java-archive;application/x-lha;application/x-lzh-compressed;application/x-lrzip;application/x-lrzip-compressed-tar;application/x-lzip;application/x-lzip-compressed-tar;application/x-lzma;application/x-lzma-compressed-tar;application/x-lzop;application/x-lzop-compressed-tar;application/x-ms-wim;application/x-rar;application/x-rar-compressed;application/x-rpm;application/x-rzip;application/x-tar;application/x-tarz;application/x-stuffit;application/x-war;application/x-xz;application/x-xz-compressed-tar;application/x-zip;application/x-zip-compressed;application/x-zoo;application/zip;application/x-archive;application/vnd.ms-cab-compressed;application/zstd; +MimeType=application/x-7z-compressed;application/x-7z-compressed-tar;application/x-ace;application/x-alz;application/x-arj;application/x-brotli;application/x-brotli-compressed-tar;application/x-bzip;application/x-bzip-compressed-tar;application/x-bzip1;application/x-bzip1-compressed-tar;application/x-cabinet;application/x-cbr;application/x-cbz;application/x-cd-image;application/x-compress;application/x-compressed-tar;application/x-cpio;application/vnd.debian.binary-package;application/x-ear;application/x-ms-dos-executable;application/x-gtar;application/x-gzip;application/x-gzpostscript;application/x-java-archive;application/x-lha;application/x-lzh-compressed;application/x-lrzip;application/x-lrzip-compressed-tar;application/x-lzip;application/x-lzip-compressed-tar;application/x-lzma;application/x-lzma-compressed-tar;application/x-lzop;application/x-lzop-compressed-tar;application/x-ms-wim;application/x-rar;application/x-rar-compressed;application/x-rpm;application/x-rzip;application/x-tar;application/x-tarz;application/x-stuffit;application/x-war;application/x-xz;application/x-xz-compressed-tar;application/x-zip;application/x-zip-compressed;application/x-zoo;application/zip;application/x-archive;application/vnd.ms-cab-compressed;application/zstd; Keywords=MATE;archive;manager;compression; X-MATE-DocPath=engrampa/engrampa.xml X-MATE-Bugzilla-Bugzilla=MATE diff --git a/src/fr-archive.c b/src/fr-archive.c index c41aa7e..eff0afe 100644 --- a/src/fr-archive.c +++ b/src/fr-archive.c @@ -550,6 +550,8 @@ get_mime_type_from_magic_numbers (GFile *file) const char * const mime_type; } magic_ids [] = { /* magic ids taken from magic/Magdir/archive from the file-4.21 tarball */ + { 0, 21, "!" "\x0a" "debian-binary", "application/vnd.debian.binary-package" }, + { 0, 8, "!" "\x0a", "application/x-archive" }, { 0, 6, "7z\274\257\047\034", "application/x-7z-compressed" }, { 7, 7, "**ACE**", "application/x-ace" }, { 0, 2, "\x60\xea", "application/x-arj" }, diff --git a/src/fr-command-ar.c b/src/fr-command-ar.c index 12eee41..f72444a 100644 --- a/src/fr-command-ar.c +++ b/src/fr-command-ar.c @@ -241,9 +241,9 @@ fr_command_ar_handle_error (FrCommand *comm, } -const char *ar_mime_type[] = { "application/x-ar", - "application/vnd.debian.binary-package", - NULL }; +const char *ar_mime_type[] = { "application/x-archive", + "application/vnd.debian.binary-package", + NULL }; static const char ** @@ -264,7 +264,7 @@ fr_command_ar_get_capabilities (FrCommand *comm, if (is_program_available ("ar", check_command)) { if (is_mime_type (mime_type, "application/vnd.debian.binary-package")) capabilities |= FR_COMMAND_CAN_READ; - else if (is_mime_type (mime_type, "application/x-ar")) + else if (is_mime_type (mime_type, "application/x-archive")) capabilities |= FR_COMMAND_CAN_READ_WRITE; } diff --git a/src/fr-init.c b/src/fr-init.c index 8c06372..33bdf53 100644 --- a/src/fr-init.c +++ b/src/fr-init.c @@ -71,8 +71,8 @@ FrMimeTypeDescription mime_type_desc[] = { { "application/x-7z-compressed-tar", ".tar.7z", N_("Tar compressed with 7z (.tar.7z)"), 0 }, { "application/x-ace", ".ace", N_("Ace (.ace)"), 0 }, { "application/x-alz", ".alz", N_("ALZip archive (.alz)"), 0 }, - { "application/x-ar", ".a", N_("Ar (.a)"), 0 }, - { "application/x-ar", ".ar", N_("Ar (.ar)"), 0 }, + { "application/x-archive", ".a", N_("Ar (.a)"), 0 }, + { "application/x-archive", ".ar", N_("Ar (.ar)"), 0 }, { "application/x-arj", ".arj", N_("Arj (.arj)"), 0 }, { "application/x-brotli", ".br", N_("brotli (.br)"), 0 }, { "application/x-brotli-compressed-tar", ".tar.br", N_("Tar compressed with brotli (.tar.br)"), 0 }, @@ -117,10 +117,10 @@ FrMimeTypeDescription mime_type_desc[] = { FrExtensionType file_ext_type[] = { { ".7z", "application/x-7z-compressed" }, - { ".a", "application/x-ar" }, + { ".a", "application/x-archive" }, { ".ace", "application/x-ace" }, { ".alz", "application/x-alz" }, - { ".ar", "application/x-ar" }, + { ".ar", "application/x-archive" }, { ".arj", "application/x-arj" }, { ".bin", "application/x-stuffit" }, { ".br", "application/x-brotli" }, -- cgit v1.2.1