В цикле производится построчное чтение файла условий.
При чтении одной строки файла условий находится соответствующее
поле записи и в переменные, описывающие границы(условия) фильтрации,
с необходимыми смещениями записываются заданные значения.
a) Строка, содержащая признак комментария - первый символ "#", пропускается.
b) Каждая прочитанная строка разбивается на лексемы. Обработка лексемы
зависит от места её появления.
- Считывается название поля, проверяется на корректность. Если поля
с таким названием нет, то завершение работы с возвращаемым
значением EXIT_FAILURE. По названию поля определяется
номер структуры, описывающей его с помощью функции
get_attr_num_by_name ( char *symbolic_name).
- Считывается тип поиска, проверяется на корректность значения
(может принимать только значения e, equal, i, interval. Если не
задано корректного значения, то работа функции завершается с
возвращаемым значением EXIT_FAILURE.
- Если условие задается на точное совпадение, считывается одно
значение, на диапазон - два.
- От строки берется часть, которая не содержит символа '.'
(с помощью strtok). Затем делается попытка аналогичным
образом отделить ещё одну часть этой же строки. Если вторая
строка пуста, то указанное значение не имеет символов '.', то
есть указано обычное число. Иначе, указанное значение является
IP адресом. В таком случае отделяются оставшиеся 2 его части и
числа, разделённые точками интерпретируются и записываются в
массивы как 4 символа.
c) Если в строке обнаружены лишние лексемы - завершение работы.
Возвращаемое значение: EXIT_FAILURE