diff options
Diffstat (limited to 'src/config_file.c')
| -rw-r--r-- | src/config_file.c | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/src/config_file.c b/src/config_file.c index 3c7c593ec..e1f4ef932 100644 --- a/src/config_file.c +++ b/src/config_file.c @@ -925,22 +925,18 @@ static int config_parse(diskfile_backend *cfg_file) static int write_section(git_filebuf *file, const char *key) { int error; - const char *fdot, *ldot; + const char *dot; git_buf buf = GIT_BUF_INIT; /* All of this just for [section "subsection"] */ - fdot = strchr(key, '.'); + dot = strchr(key, '.'); git_buf_putc(&buf, '['); - if (fdot == NULL) + if (dot == NULL) { git_buf_puts(&buf, key); - else - git_buf_put(&buf, key, fdot - key); - ldot = strrchr(key, '.'); - if (fdot != ldot && fdot != NULL) { - git_buf_putc(&buf, '"'); + } else { + git_buf_put(&buf, key, dot - key); /* TODO: escape */ - git_buf_put(&buf, fdot + 1, ldot - fdot - 1); - git_buf_putc(&buf, '"'); + git_buf_printf(&buf, " \"%s\"", dot + 1); } git_buf_puts(&buf, "]\n"); if (git_buf_oom(&buf)) |
