C: made it so column DIR* are not kept open to handle very large DMS

This commit is contained in:
Celine Mercier
2019-09-04 12:55:21 +02:00
parent f296517716
commit a7fabff1c7
3 changed files with 282 additions and 30 deletions

View File

@@ -177,15 +177,13 @@ OBIDMS_column_directory_p obi_open_column_directory(OBIDMS_p dms, const char* co
// Initialize the data structure
strcpy(column_directory->directory_name, column_directory_name);
strcpy(column_directory->column_name, column_name);
column_directory->directory = directory;
column_directory->dir_fd = dirfd(directory);
if (column_directory->dir_fd < 0)
if (closedir(directory) < 0)
{
obi_set_errno(OBICOLDIR_MEMORY_ERROR);
obidebug(1, "\nError allocating the memory for an OBIDMS column directory structure");
obidebug(1, "\nError closing a DIR after opening a column directory");
free(column_directory_name);
free(column_directory);
return NULL;
}
free(column_directory_name);
@@ -215,17 +213,7 @@ OBIDMS_column_directory_p obi_column_directory(OBIDMS_p dms, const char* column_
int obi_close_column_directory(OBIDMS_column_directory_p column_directory)
{
if (column_directory != NULL)
{
// Close the column directory
if (closedir(column_directory->directory) < 0)
{
obi_set_errno(OBICOLDIR_MEMORY_ERROR);
obidebug(1, "\nError closing a column directory");
free(column_directory);
return -1;
}
free(column_directory);
}
return 0;
}