Added C functions to write .rdx, .tdx, .ndx binary taxonomy files from a
taxonomy C structure
This commit is contained in:
36
src/obidms.c
36
src/obidms.c
@ -497,6 +497,33 @@ OBIDMS_p obi_open_dms(const char* dms_path)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// Open the taxonomy directory
|
||||
dms->tax_directory = opendir_in_dms(dms, TAXONOMY_DIR_NAME);
|
||||
if (dms->tax_directory == NULL)
|
||||
{
|
||||
obi_set_errno(OBIDMS_UNKNOWN_ERROR);
|
||||
obidebug(1, "\nError opening the taxonomy directory");
|
||||
closedir(dms->indexer_directory);
|
||||
closedir(dms->view_directory);
|
||||
closedir(dms->directory);
|
||||
free(dms);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// Store the taxonomy directory's file descriptor
|
||||
dms->tax_dir_fd = dirfd(dms->tax_directory);
|
||||
if (dms->tax_dir_fd < 0)
|
||||
{
|
||||
obi_set_errno(OBIDMS_UNKNOWN_ERROR);
|
||||
obidebug(1, "\nError getting the file descriptor of the taxonomy directory");
|
||||
closedir(dms->indexer_directory);
|
||||
closedir(dms->tax_directory);
|
||||
closedir(dms->view_directory);
|
||||
closedir(dms->directory);
|
||||
free(dms);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// Initialize the list of opened columns
|
||||
dms->opened_columns = (Opened_columns_list_p) malloc(sizeof(Opened_columns_list_t));
|
||||
(dms->opened_columns)->nb_opened_columns = 0;
|
||||
@ -536,7 +563,7 @@ int obi_close_dms(OBIDMS_p dms)
|
||||
while ((dms->opened_columns)->nb_opened_columns > 0)
|
||||
obi_close_column(*((dms->opened_columns)->columns));
|
||||
|
||||
// Close dms, and view and indexer directories
|
||||
// Close dms, and view, indexer and taxonomy directories
|
||||
if (closedir(dms->indexer_directory) < 0)
|
||||
{
|
||||
obi_set_errno(OBI_INDEXER_ERROR);
|
||||
@ -551,6 +578,13 @@ int obi_close_dms(OBIDMS_p dms)
|
||||
free(dms);
|
||||
return -1;
|
||||
}
|
||||
if (closedir(dms->tax_directory) < 0)
|
||||
{
|
||||
obi_set_errno(OBIVIEW_ERROR);
|
||||
obidebug(1, "\nError closing a taxonomy directory");
|
||||
free(dms);
|
||||
return -1;
|
||||
}
|
||||
if (closedir(dms->directory) < 0)
|
||||
{
|
||||
obi_set_errno(OBIDMS_MEMORY_ERROR);
|
||||
|
Reference in New Issue
Block a user