ini-diff - Сравнивает два ini файла (ну или похожих на ini) и выводит результат сравнения.
Под ini файлами понимаются файлы примерно такой конструкции:
[Section Name] param name = param value
Параметры комендной строки:
имя первого сравниваемого файла.
имя второго сравниваемого файла.
строка символов наличие которых в начале строки ini файла говорит о том, что это коментарий....
строка символов которые вставляются в начало каждой строки отчета.
разрешить множественные об[явления секций с одинаковыми именами....
игнорировать регистр имен секций и параметров при сравнении ini файлов...
игнорировать регистр значений параметров при сравнении ini файлов...
справка.
игнорировать коментарии во втором файле ( если добавляется новая секция и в ней есть коментарии то в отчете их не будет )
Предыстория написания такова:
Есть у нас некий комерческий софт с кучей ини-файлов, и без коментариев... Коментарии мы у себя конечно добавили, но софт вроде как развивается чего то дописывется, короче присылают обновления опять же с голыми конфигами... Ну и чтоб несколько автоматизировать переезд со старых конфигов на новые пришлось написать данный скрипт...
При включенной опции multi_s ( по умолчанию ) - при обработки нескольких секций с одинаковыми именами важна последовательность их следования в файлах ( порядок относительно секций с такими же именами...)
Параметр multi_s не влияет на множественные об[явления параметра внутри одной секции - нет разграничения на multi и не multe параметры...короче их всегда может быть множество с одинаковыми именами и с точки зрения скрипта они являются уникальными...
Пример: если в файле 1 описано [section1] param1=1 param1=2 а в файле 2 [section1] param1=2 то скрипт выдаст два предупреждения: 1 - на то что значения param1 различаются 2 - на то что во втором файле отсутствует param1
При чтении ини-файлов _НЕ ОБРАЩАЕМ ВНИМАНИЯ_ на закоментированность имен секций или параметров. Тоесть определить закоментированно или нет мы конейно пытаемся, но при генерации отчета работаем с данными секциями и параметрами так же как и не с закоментировааныи, с той лиш разницей что в отчете они быдут также с коментариями...
При включении опции icase_v атоматически включается опция icase.
Некоторые коментарии к тому, что пишется в отчете:
Absent section - данная секция отсутствует во втором ini файле.
Absent parameter - данный параметр отсутствует во втором ini файле.
Values of parameter differ - значения параметров различаются. ( Будет напечатано значение из файла f2 закоментированное d_char и оригинальная строка из файла f1 )
New parameter - во втором ini файле в данной секции присутствует данный параметр, которого нет в первом файле...
New section - во втором ини файле появилась новая секция ( все параметры описанные в данной секкции помечаются анолагичным образом )...
Okunev Igor V. mailto:igor@prv.mts-nn.ru http://www.mts-nn.ru/~gosha ICQ 106183300