Unverified Commit dcd00638 by Edward Thomson Committed by GitHub

Merge pull request #4898 from pks-t/pks/config-parent-is-file

config: fix adding files if their parent directory is a file
parents c97d302d 43cbe6b7
...@@ -109,7 +109,7 @@ int git_config_add_file_ondisk( ...@@ -109,7 +109,7 @@ int git_config_add_file_ondisk(
assert(cfg && path); assert(cfg && path);
res = p_stat(path, &st); res = p_stat(path, &st);
if (res < 0 && errno != ENOENT) { if (res < 0 && errno != ENOENT && errno != ENOTDIR) {
giterr_set(GITERR_CONFIG, "failed to stat '%s'", path); giterr_set(GITERR_CONFIG, "failed to stat '%s'", path);
return -1; return -1;
} }
......
...@@ -534,6 +534,26 @@ void test_config_read__fallback_from_local_to_global_and_from_global_to_system(v ...@@ -534,6 +534,26 @@ void test_config_read__fallback_from_local_to_global_and_from_global_to_system(v
git_config_free(cfg); git_config_free(cfg);
} }
void test_config_read__parent_dir_is_file(void)
{
git_config *cfg;
int count;
cl_git_pass(git_config_new(&cfg));
/*
* Verify we can add non-existing files when the parent directory is not
* a directory.
*/
cl_git_pass(git_config_add_file_ondisk(cfg, "/dev/null/.gitconfig",
GIT_CONFIG_LEVEL_SYSTEM, NULL, 0));
count = 0;
cl_git_pass(git_config_foreach(cfg, count_cfg_entries_and_compare_levels, &count));
cl_assert_equal_i(0, count);
git_config_free(cfg);
}
/* /*
* At the beginning of the test, config18 has: * At the beginning of the test, config18 has:
* int32global = 28 * int32global = 28
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment