Вы можете использовать эту -m
опцию, чтобы указать альтернативный список магических файлов, и если вы включите свой собственный файл /usr/share/file/magic.mgc
в этот список до скомпилированного магического файла ( в моей системе), эти шаблоны будут проверены перед «глобальными». Вы можете создать функцию или псевдоним, чтобы всегда прозрачно использовать эту опцию, просто введя file
команду.
Язык, используемый в магическом файле, достаточно мощный, поэтому редко возникает необходимость вернуться к пользовательскому кодированию на Си. Единственный раз, когда я чувствовал склонность сделать это, было в 90-х годах, когда сопоставление файлов HTML и XML было трудным, потому что не было никакого способа (в то время) иметь гибкое сопоставление регистров и смещений, необходимое для возможности анализа <HTML
и < Html
и < html
с одним шаблоном , Я реализовал это в C как модификатор шаблона 'string', позволяющий игнорировать регистр и сжимать (необязательные) пробелы .
Эти изменения в C также потребовали адаптации магических файлов . И если с тех пор file
исходный код значительно не изменился, вам всегда нужно будет изменять (или предоставлять дополнительные) правила в magic
файлах, соответствующих этим изменениям кода C. Таким образом, вы могли бы также начать пытаться делать это с изменениями только в волшебных файлах и вернуться к изменению кода C, если это действительно не сработает.