예제 #1
0
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;
}
예제 #2
0
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;
}