Teach shared-mime-info to recognize the stable PK local header whose first entry is atlas.json, distinguishing Atlas files from generic ZIP archives during content sniffing.
- commit
- 20ef01830e47b4bf915ed97e6d8959424b3acb27
- parent
- 5ba9814ea6b7adf9e54d85b2bb96154dc7307b06
- author
- Dami <dami.etoile@gmail.com>
| M | packaging/ | 8 | ++++++++ |
| M | tests/ | 8 | ++++++++ |
@@ -4,5 +4,13 @@
44 <comment>Atlas Volume</comment>55 <sub-class-of type="application/zip"/>66 <glob pattern="*.atlas" weight="80"/>7+ <!-- Native writers place atlas.json first, so its local ZIP header carries8+ the filename at byte 30. This distinguishes Atlas from ordinary ZIPs9+ when the desktop sniffs content instead of trusting the extension. -->10+ <magic priority="90">11+ <match type="string" offset="0" value="PK">12+ <match type="string" offset="30" value="atlas.json"/>13+ </match>14+ </magic>715 </mime-type>816 </mime-info>@@ -40,6 +40,14 @@ class NativePackagingTest(unittest.TestCase):
4040 self.assertEqual(glob.attrib["pattern"], f"*.{EXTENSION}")4141 subclass = mime_type.find("mime:sub-class-of", namespace)4242 self.assertEqual(subclass.attrib["type"], "application/zip")43+ magic = mime_type.find("mime:magic", namespace)44+ self.assertEqual(magic.attrib["priority"], "90")45+ signature = magic.find("mime:match", namespace)46+ self.assertEqual(signature.attrib["offset"], "0")47+ self.assertEqual(signature.attrib["value"], "PK")48+ bootstrap = signature.find("mime:match", namespace)49+ self.assertEqual(bootstrap.attrib["offset"], "30")50+ self.assertEqual(bootstrap.attrib["value"], "atlas.json")4351 4452 control = (ROOT / "packaging/linux/control").read_text()4553 self.assertIn("Package: atlas-desktop", control)