С момента создания сета транзакции мы можем обходить информацию об установленных пакетах в БД RPM с помощью итератора. Для создания итератора вызывается rpmtsInitIterator:
| 
 rpmdbMatchIterator rpmtsInitIterator(const rpmts ts,   | 
В вызове следует задать, какой тэг (какое поле, заданное его именем) мы будем перебирать. Как правило, это имя пакета, RPMTAG_NAME. Вместе с идентификатором поля мы должны передать имя пакета. keypointer изменяется в зависимости от того, какой тэг передан.
Для строковых данных можно передать 0 в параметре keylen. Например, ниже приводится конструкция, в которой rpmtsInitIterator ищет все пакеты, называющиеся sendmail:
| 
 rpmdbMatchIterator iter;   | 
rpmdbMatchIterator позволяет обходить множество пакетов, в данном случае обходятся пакеты, в именах которых имеется заданный шаблон. После вызова rpmtsInitIterator следующим шагом будет вызов rpmdbNextIterator:
| 
 Header rpmdbNextIterator(rpmdbMatchIterator iter);   | 
Эта функция возвращает следующий в итераторе объект хэдера. Если в итераторе больше нет пакетов, отвечающих условиям, вернется NULL.
Если Header - не NULL, из объекта можно получить записи, как было показано в предыдущих главах. Используйте цикл для обхода всех пакетов, отвечающих шаблону:
| 
 while ( (installed_header = rpmdbNextIterator(iter) ) != NULL) {   | 
Нет нужды освобождать объект после использования, так как каждый следующий вызов rpmdbNextIterator пересоздает Header.
Особенности работы итератора подлежат подстройке под ваши нужды. Для добавления шаблона в итератор используется rpmdbSetIteratorRE:
| 
 int rpmdbSetIteratorRE(rpmdbMatchIterator iter,   | 
Вызов rpmdbSetIteratorRE изменяет переданный итератор таким образом, чтобы использовался дополнительный шаблон. Параметр mode именует тип шаблона. Он может быть одним из:
| 
 Тип  | 
 Означает  | 
| 
 RPMMIRE_DEFAULT  | 
 То же, что и регулярное выражение, с добавлением \., .*, и ^..$  | 
| 
 RPMMIRE_GLOB  | 
 Шаблон в стиле glob с использованием fnmatch  | 
| 
 RPMMIRE_REGEX  | 
 Регулярное выражение с использованием regcomp  | 
| 
 RPMMIRE_STRCMP  | 
 Сравнение строк с использованием strcmp  | 
Для получения дополнительной информации по данным типам шаблонов воспользуйтесь man-ами для fnmatch(3), glob(7), regcomp(3), regex(7), и strcmp(3).
После использования итератор должен быть освобожден:
| 
 rpmdbMatchIterator rpmdbFreeIterator(rpmdbMatchIterator iter);   | 
Вызов rpmdbFreeIterator возвращает NULL.
 Далее - Сет зависимости 
 Назад - Программирование с БД RPM 
 Содержание