// cut trailing path separator from path (but not if path is root directory)
if (strSuffix(main_data_path, "/") && !strEqual(main_data_path, "/"))
main_data_path[strlen(main_data_path) - 1] = '\0';
+
+ // replace empty path with current directory
+ if (strEqual(main_data_path, ""))
+ main_data_path = ".";
#endif
return main_data_path;
char **ignore_tokens,
int num_file_list_entries)
{
+ SetupFileHash *ignore_tokens_hash;
struct FileInfo *file_list;
int num_file_list_entries_found = 0;
int num_suffix_list_entries = 0;
int list_pos;
int i, j;
+ /* create hash from list of tokens to be ignored (for quick access) */
+ ignore_tokens_hash = newSetupFileHash();
+ for (i = 0; ignore_tokens[i] != NULL; i++)
+ setHashEntry(ignore_tokens_hash, ignore_tokens[i], "");
+
file_list = checked_calloc(num_file_list_entries * sizeof(struct FileInfo));
for (i = 0; suffix_list[i].token != NULL; i++)
}
/* the following tokens are no file definitions, but other config tokens */
- for (j = 0; ignore_tokens[j] != NULL; j++)
- if (strEqual(config_list[i].token, ignore_tokens[j]))
- is_file_entry = FALSE;
+ if (getHashEntry(ignore_tokens_hash, config_list[i].token) != NULL)
+ is_file_entry = FALSE;
if (is_file_entry)
{
Error(ERR_EXIT, "please fix");
}
+ freeSetupFileHash(ignore_tokens_hash);
+
return file_list;
}