OSCAP_FOR(oscap_text, child, oscap_iterator_new(child_list)) { if (oscap_text_get_overrides(child)) continue; OSCAP_FOR(oscap_text, parent, oscap_iterator_new(parent_list)) { if (oscap_streq(oscap_text_get_lang(child), oscap_text_get_lang(parent))) { char *text = oscap_sprintf("%s%s", oscap_text_get_text(parent), oscap_text_get_text(child)); oscap_text_set_text(child, text); free(text); if (more) more(child, parent); break; } } oscap_text_iterator_free(parent_iter); }
void xccdf_print_max_text(const struct oscap_text *txt, int max, const char *ellipsis) { if (txt == NULL) return; printf("[%c%c%c|%s] ", oscap_text_get_is_html(txt) ? 'h' : '-', oscap_text_get_can_override(txt) ? (oscap_text_get_overrides(txt) ? 'O' : 'o') : '-', oscap_text_get_can_substitute(txt) ? 's' : '-', oscap_text_get_lang(txt)); xccdf_print_max(oscap_text_get_text(txt), max, ellipsis); }
QString oscapItemGetReadableDescription(struct xccdf_item *item, struct xccdf_policy *policy, const QString& lang) { struct oscap_text_iterator* desc_it = xccdf_item_get_description(item); oscap_text* unresolved = oscap_textlist_get_preferred_text(desc_it, lang.isEmpty() ? NULL : lang.toUtf8().constData()); oscap_text_iterator_free(desc_it); if (!unresolved) return ""; char* resolved = xccdf_policy_substitute(oscap_text_get_text(unresolved), policy); const QString ret = QString::fromUtf8(resolved); free(resolved); return ret; }