Файл определения типов для команды file (UNIX)
/usr/share/misc/magic
ЗОСРВ «Нейтрино»
Команда file позволяет определить тип файла посредством проверки соответствия начальных символов файла определенному "магическому" числу (помимо прочих проверок). В файле /usr/share/misc/magic указаны "магические" числа для проверки, сообщение, которое будет выведено в случае обнаружения конкретного "магического" числа, а также дополнительная информация, извлекаемая из файла.
В каждой строке файла указана проверка, которую требуется выполнить. При проверке выполняется сопоставление данных, начинающихся с определенного смещения в файле, с 1-, 2- или 4-байтовым числовым значением или строкой. В случае успешного выполнения проверки выводится сообщение. Строка состоит из следующих полей:
& и числовое значение. Это значит, что перед сопоставлением к значению следует присоединить числовое значение. Значение u перед типом указывает, что сопоставления порядков должны быть беззнаковыми. = – значение из файла должно совпадать с указанным значением; < – значение из файла должно быть меньше указанного значения; > – значение из файла должно быть больше указанного значения; & – для значения из файла должны быть установлены все биты, установленные в указанном значении; ^ – значение из файла не должно содержать биты, установленные в указанном значении; x – подходит любое значение. =. =, < и > (но не &). Длина строки для сопоставления соответствует значению строкового аргумента в файле /usr/share/misc/magic. Это означает, что строка может соответствовать любой строке, затем эта строка будет выведена путем выполнения >\0 (поскольку все строки больше нулевой строки). Некоторые форматы файлов включают дополнительную информацию, которая выводится вместе с типом файла. В строке, которая начинается с символа >, определяются дополнительные проверки и выводимые сообщения. Число символов > в строке обозначает уровень проверки. Строка, в начале которой отсутствуют символы >, относится к уровню 0. Каждая строка на уровне n + 1 подчиняется строке на уровне n, наиболее близкой к ней в файле определения типов.
При успешном выполнении проверки строки на уровне n выполняются проверки, указанные во всех последующих строках на уровне n + 1. При успешном выполнении выводятся соответствующие сообщения. Процедура завершается следующей строкой на уровне n.
Если первым символом после последнего знака > является (, то следующая за круглой скобкой строка интерпретируется как непрямое смещение. Это означает, что число после круглой скобки используется в качестве смещения в файле. Значение при этом смещении считывается и снова используется как смещение в файле. Для непрямых смещений используется следующий формат: ((x[.[bsl]][+-][y]). В качестве смещения в файле используется значение x. При смещении считывается короткий или длинный байт в зависимости от спецификатора типа [bsl]. К этому номеру добавляется значение y, а результат используется в качестве смещения в файле. Если тип не указан, по умолчанию используется длинное значение.
Использование форматов long, belong, lelong, short, beshort, leshort, date, bedate и ledate зависит от особенностей системы. Может потребоваться указать формат в виде числа байт (2B, 4B и т.д.), т.к. распознаваемые файлы обычно передаются из системы, в которой эта длина является неизменяемой величиной.
В настоящее время данные с указанным порядком байт при непрямом смещении не поддерживаются.
Базовые подсистемы ЗОСРВ «Нейтрино», UNIX
Предыдущий раздел: Конфигурационные файлы