QString oscapItemGetReadableTitle(struct xccdf_item *item, struct xccdf_policy *policy, const QString& lang) { char* readable_s = xccdf_policy_get_readable_item_title(policy, item, lang.isEmpty() ? NULL : lang.toUtf8().constData()); const QString ret(readable_s != NULL ? QString::fromUtf8(readable_s) : QObject::tr("(none)")); free(readable_s); return ret; }
static int callback_scr_rule(struct xccdf_rule *rule, void *arg) { const char * rule_id = xccdf_rule_get_id(rule); /* is rule selected? we print only selected rules */ const bool selected = xccdf_policy_is_item_selected((struct xccdf_policy *) arg, rule_id); if (!selected) return 0; const char *title = xccdf_policy_get_readable_item_title((struct xccdf_policy *)arg, (struct xccdf_item *) rule, NULL); /* print */ if (isatty(1)) printf("Title\r\t\033[1m%s\033[0;0m\n", title); else printf("Title\r\t%s\n", title); free((char *)title); printf("Rule\r\t%s\n", rule_id); struct xccdf_ident_iterator *idents = xccdf_rule_get_idents(rule); while (xccdf_ident_iterator_has_more(idents)) { const struct xccdf_ident *ident = xccdf_ident_iterator_next(idents); const char *ident_id = xccdf_ident_get_id(ident); printf("Ident\r\t%s\n", ident_id); } xccdf_ident_iterator_free(idents); printf("Result\r\t"); fflush(stdout); return 0; }