__dead void irr_main(u_int32_t AS, int flags, char *outdir) { char *query; int r; if (pledge("stdio rpath wpath cpath inet dns", NULL) == -1) err(1, "pledge"); fprintf(stderr, "irrfilter for: %u, writing to %s\n", AS, outdir); irrflags = flags; irrverbose = 0; TAILQ_INIT(&router_head); /* send query for own AS, parse policy */ if (asprintf(&query, "AS%u", AS) == -1) err(1, "parse_policy asprintf"); if ((r = whois(query, QTYPE_OWNAS)) == -1) exit(1); if (r == 0) errx(1, "aut-num object %s not found", query); free(query); write_filters(outdir); exit(0); }
// функция запоминания расставленных галочек void Filter::save_checked(QTreeWidget *treewidget) { for (int i = 0; i < filters.size(); i++) { if (treewidget->topLevelItem(i)->checkState(0)) filters[i].is_on = true; else filters[i].is_on = false; } write_filters(); }
// удаление фильтра void Filter::del_filter() { save_checked(filers_list); // сохраним галочки for (int i = filters.size() - 1; i >= 0; i--) // идём от конца к началу, т.к. при удалении элемента размер списка уменьшается if (filers_list->topLevelItem(i)->isSelected()) filters.removeAt(i); /**/ write_filters(); show_filters(filers_list, filters); set_filters_header_label(); /**/ }
void Filter::add_filter() { QString help_str; bool add_this = true; if (!lineEdit->text().isEmpty()) { save_checked(filers_list); // сохраним галочки на случай если они будут изменены одновременно с изменением количества элементов help_str.clear(); help_str = lineEdit->text(); for (int i = 0; i < filters.size(); i++) { if (QString::compare(help_str, filters.at(i).title.simplified(), Qt::CaseInsensitive) == 0) { filter_hint->setText("Такой фильтр уже есть"); add_this = false; } } if (add_this) { filters_struct temp; // создаём элемент типа temp.title = QString("%1").arg(lineEdit->text()); // заносим в него данные if (settings->activate_filters->isChecked()) temp.is_on = true; else temp.is_on = false; filters.push_back(temp); // запихиваем элемент в контейнер filter_hint->setText("Фильтр добавлен"); /**/ write_filters(); show_filters(filers_list, filters); set_filters_header_label(); /**/ } } else filter_hint->setText("Нельзя добавить пустой фильтр"); }