mirror of
https://git.proxmox.com/git/libgit2
synced 2025-08-04 13:05:35 +00:00
Fix adding variable to config file with no trailing newline
This can occur after a manual modification of a config file.
This commit is contained in:
parent
8a89aa1f57
commit
f8ede94808
@ -1182,6 +1182,10 @@ static int config_write(diskfile_backend *cfg, const char *key, const regex_t *p
|
||||
goto rewrite_fail;
|
||||
}
|
||||
|
||||
/* If we are here, there is at least a section line */
|
||||
if (*(cfg->reader.buffer.ptr + cfg->reader.buffer.size - 1) != '\n')
|
||||
git_filebuf_write(&file, "\n", 1);
|
||||
|
||||
git_filebuf_printf(&file, "\t%s = %s\n", name, value);
|
||||
}
|
||||
}
|
||||
|
@ -3,11 +3,13 @@
|
||||
void test_config_write__initialize(void)
|
||||
{
|
||||
cl_fixture_sandbox("config/config9");
|
||||
cl_fixture_sandbox("config/config17");
|
||||
}
|
||||
|
||||
void test_config_write__cleanup(void)
|
||||
{
|
||||
cl_fixture_cleanup("config9");
|
||||
cl_fixture_cleanup("config17");
|
||||
}
|
||||
|
||||
void test_config_write__replace_value(void)
|
||||
@ -136,3 +138,19 @@ void test_config_write__escape_value(void)
|
||||
cl_assert_equal_s(str, "this \"has\" quotes and \t");
|
||||
git_config_free(cfg);
|
||||
}
|
||||
|
||||
void test_config_write__add_value_in_file_with_no_clrf_at_the_end(void)
|
||||
{
|
||||
git_config *cfg;
|
||||
int i;
|
||||
|
||||
cl_git_pass(git_config_open_ondisk(&cfg, "config17"));
|
||||
cl_git_pass(git_config_set_int32(cfg, "core.newline", 7));
|
||||
git_config_free(cfg);
|
||||
|
||||
cl_git_pass(git_config_open_ondisk(&cfg, "config17"));
|
||||
cl_git_pass(git_config_get_int32(&i, cfg, "core.newline"));
|
||||
cl_assert_equal_i(7, i);
|
||||
|
||||
git_config_free(cfg);
|
||||
}
|
||||
|
3
tests-clar/resources/config/config17
Normal file
3
tests-clar/resources/config/config17
Normal file
@ -0,0 +1,3 @@
|
||||
[core]
|
||||
dummy2 = 7
|
||||
global = 17
|
Loading…
Reference in New Issue
Block a user