struct oval_test *oval_definition_model_get_new_test(struct oval_definition_model *model, const char *id) { struct oval_test *test = oval_definition_model_get_test(model, id); if (test == NULL) { test = oval_test_new(model, id); } return test; }
struct oval_test *oval_test_clone(struct oval_definition_model *new_model, struct oval_test *old_test) { __attribute__nonnull__(old_test); struct oval_state_iterator *ste_itr; struct oval_test *new_test = oval_definition_model_get_test(new_model, old_test->id); if (new_test == NULL) { new_test = oval_test_new(new_model, old_test->id); oval_test_set_deprecated(new_test, old_test->deprecated); oval_test_set_version(new_test, old_test->version); oval_test_set_check(new_test, old_test->check); oval_test_set_existence(new_test, old_test->existence); oval_test_set_state_operator(new_test, old_test->state_operator); oval_test_set_subtype(new_test, old_test->subtype); oval_test_set_comment(new_test, old_test->comment); if (old_test->object) { struct oval_object *object = oval_object_clone(new_model, old_test->object); oval_test_set_object(new_test, object); } ste_itr = oval_test_get_states(old_test); while (oval_state_iterator_has_more(ste_itr)) { struct oval_state *ste; ste = oval_state_iterator_next(ste_itr); ste = oval_state_clone(new_model, ste); oval_test_add_state(new_test, ste); } oval_state_iterator_free(ste_itr); struct oval_string_iterator *notes = oval_test_get_notes(old_test); while (oval_string_iterator_has_more(notes)) { char *note = oval_string_iterator_next(notes); oval_test_add_note(new_test, note); } oval_string_iterator_free(notes); } return new_test; }