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 TailoringWindow::setProfileDescription(const QString& description) { struct oscap_text_iterator* descriptions = xccdf_profile_get_description(mProfile); struct oscap_text* descText = 0; while (oscap_text_iterator_has_more(descriptions)) { struct oscap_text* descCandidate = oscap_text_iterator_next(descriptions); if (!descText || strcmp(oscap_text_get_lang(descCandidate), OSCAP_LANG_DEFAULT) == 0) descText = descCandidate; } oscap_text_iterator_free(descriptions); if (descText) { oscap_text_set_text(descText, description.toUtf8().constData()); oscap_text_set_lang(descText, OSCAP_LANG_DEFAULT); } else { // FIXME: we cannot add new title using this API :-( throw TailoringWindowException("Not suitable oscap_text found that we could edit to change profile description."); } assert(getProfileDescription() == description); }
void TailoringWindow::setProfileTitle(const QString& title) { struct oscap_text_iterator* titles = xccdf_profile_get_title(mProfile); struct oscap_text* titleText = 0; while (oscap_text_iterator_has_more(titles)) { struct oscap_text* titleCandidate = oscap_text_iterator_next(titles); if (!titleText || strcmp(oscap_text_get_lang(titleCandidate), OSCAP_LANG_DEFAULT) == 0) titleText = titleCandidate; } oscap_text_iterator_free(titles); if (titleText) { oscap_text_set_text(titleText, title.toUtf8().constData()); oscap_text_set_lang(titleText, OSCAP_LANG_DEFAULT); } else { // FIXME: we cannot add new title using this API :-( throw TailoringWindowException("Not suitable oscap_text found that we could edit to change profile title."); } assert(getProfileTitle() == title); }
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); }