preload configuration paths

This commit is contained in:
Edward Thomson 2013-07-11 17:09:15 -05:00
parent f2de67d589
commit 0a1c8f55b3
3 changed files with 25 additions and 5 deletions

View File

@ -627,6 +627,20 @@ static git_futils_dirs_guess_cb git_futils__dir_guess[GIT_FUTILS_DIR__MAX] = {
git_futils_guess_xdg_dirs,
};
int git_futils_dirs_global_init(void)
{
git_futils_dir_t i;
git_buf *path;
int error = 0;
for (i = 0; i < GIT_FUTILS_DIR__MAX; i++) {
if ((error = git_futils_dirs_get(&path, i)) < 0)
break;
}
return error;
}
static int git_futils_check_selector(git_futils_dir_t which)
{
if (which < GIT_FUTILS_DIR__MAX)

View File

@ -309,6 +309,13 @@ typedef enum {
GIT_FUTILS_DIR__MAX = 3,
} git_futils_dir_t;
/**
* Configures global data for configuration file search paths.
*
* @return 0 on success, <0 on failure
*/
extern int git_futils_dirs_global_init(void);
/**
* Get the search path for global/system/xdg files
*

View File

@ -65,10 +65,8 @@ int git_threads_init(void)
return -1;
/* Initialize any other subsystems that have global state */
if ((error = git_hash_global_init()) >= 0)
_tls_init = 1;
if (error == 0)
if ((error = git_hash_global_init()) >= 0 &&
(error = git_futils_dirs_global_init()) >= 0)
_tls_init = 1;
GIT_MEMORY_BARRIER;
@ -127,7 +125,8 @@ int git_threads_init(void)
pthread_key_create(&_tls_key, &cb__free_status);
/* Initialize any other subsystems that have global state */
if ((error = git_hash_global_init()) >= 0)
if ((error = git_hash_global_init()) >= 0 &&
(error = git_futils_dirs_global_init()) >= 0)
_tls_init = 1;
GIT_MEMORY_BARRIER;