void ds_sds_session_free(struct ds_sds_session *sds_session) { if (sds_session != NULL) { ds_sds_index_free(sds_session->index); if (sds_session->temp_dir != NULL) { oscap_acquire_cleanup_dir(&(sds_session->temp_dir)); } oscap_htable_free(sds_session->component_sources, (oscap_destruct_func) oscap_source_free); oscap_free(sds_session); } }
int main(int argc, char **argv) { if (argc != 2) { printf("Invalid arguments, usage: ./test_ds_sds_index FILE"); return 2; } struct ds_sds_index* idx = ds_sds_index_import(argv[1]); struct ds_stream_index_iterator* streams = ds_sds_index_get_streams(idx); // number of streams in the collection int nr_streams = 0; while (ds_stream_index_iterator_has_more(streams)) { struct ds_stream_index* stream = ds_stream_index_iterator_next(streams); nr_streams++; if (nr_streams == 1 && strcmp(ds_stream_index_get_id(stream), "scap_org.open-scap_datastream_from_xccdf_scap-fedora14-xccdf.xml") != 0) { printf("Failed to read datastream ID correctly. " "Expected 'scap_org.open-scap_datastream_from_xccdf_scap-fedora14-xccdf.xml', " "found '%s'.\n", ds_stream_index_get_id(stream)); return 1; } if (nr_streams == 2 && strcmp(ds_stream_index_get_id(stream), "scap_org.open-scap_datastream_from_xccdf_scap-fedora14-xccdf.xml_2") != 0) { printf("Failed to read datastream ID correctly. " "Expected 'scap_org.open-scap_datastream_from_xccdf_scap-fedora14-xccdf.xml_2', " "found '%s'.\n", ds_stream_index_get_id(stream)); return 1; } } ds_stream_index_iterator_free(streams); if (ds_sds_index_get_stream(idx, "scap_org.open-scap_datastream_from_xccdf_scap-fedora14-xccdf.xml") == NULL) { printf("Attempted to retrieve 'scap_org.open-scap_datastream_from_xccdf_scap-fedora14-xccdf.xml' " "by ID but got NULL as a result!\n"); return 1; } if (ds_sds_index_get_stream(idx, "scap_org.open-scap_datastream_from_xccdf_scap-fedora14-xccdf.xml_2") == NULL) { printf("Attempted to retrieve 'scap_org.open-scap_datastream_from_xccdf_scap-fedora14-xccdf.xml_2' " "by ID but got NULL as a result!\n"); return 1; } if (ds_sds_index_get_stream(idx, "nonexistant_rubbish") != NULL) { printf("Attempted to retrieve a nonexistant stream by ID but got a non-NULL result!\n"); return 1; } ds_sds_index_free(idx); if (nr_streams != 2) { printf("Expected to read 2 data-streams from the source datastream collection, " "instead read %i!\n", nr_streams); return 1; } return 0; }