diff --git a/file/sniffer.js b/file/sniffer.js index 1636f14..69046e1 100644 --- a/file/sniffer.js +++ b/file/sniffer.js @@ -13,6 +13,11 @@ const fileSignatures = { // Document formats. 'application/pdf': [[0x25, 0x50, 0x44, 0x46, 0x2d]], + // Archive formats: + 'application/x-tar': [ + [0x75, 0x73, 0x74, 0x61, 0x72, 0x00, 0x30, 0x30], + [0x75, 0x73, 0x74, 0x61, 0x72, 0x20, 0x20, 0x00], + ], // Compressed archive formats. 'application/x-7z-compressed': [[0x37, 0x7A, 0xBC, 0xAF, 0x27, 0x1C]], 'application/x-bzip2': [[0x42, 0x5A, 0x68]], diff --git a/tests/file-sniffer.spec.js b/tests/file-sniffer.spec.js index e231b89..5980027 100644 --- a/tests/file-sniffer.spec.js +++ b/tests/file-sniffer.spec.js @@ -34,4 +34,6 @@ describe('bitjs.file.sniffer', () => { it('MP3_3()', () => { sniffTest('audio/mpeg', [0xFF, 0xF2]); }); it('MP3_4()', () => { sniffTest('audio/mpeg', [0x49, 0x44, 0x33]); }); it('OGG', () => { sniffTest('application/ogg', [0x4F, 0x67, 0x67, 0x53]); }); + it('TAR_1', () => { sniffTest('application/x-tar', [0x75, 0x73, 0x74, 0x61, 0x72, 0x00, 0x30, 0x30]); }); + it('TAR_2', () => { sniffTest('application/x-tar', [0x75, 0x73, 0x74, 0x61, 0x72, 0x20, 0x20, 0x00]); }); });