diff options
author | Vicent Marti <tanoku@gmail.com> | 2013-11-10 16:41:41 +0100 |
---|---|---|
committer | Vicent Marti <tanoku@gmail.com> | 2013-11-10 16:41:41 +0100 |
commit | a1d35ede189f6f3286102c53a499b5e486d86b79 (patch) | |
tree | 34ddd85010780d8d382bd3146f16780a851fbbe8 /src | |
parent | b9cb72c28a937a887676a553fef8e21bbc7be3f0 (diff) | |
download | libgit2-a1d35ede189f6f3286102c53a499b5e486d86b79.tar.gz |
config_file: style
Diffstat (limited to 'src')
-rw-r--r-- | src/config_file.c | 36 |
1 files changed, 18 insertions, 18 deletions
diff --git a/src/config_file.c b/src/config_file.c index 25ebd1c97..15c8de49c 100644 --- a/src/config_file.c +++ b/src/config_file.c @@ -1178,20 +1178,22 @@ static int write_section(git_filebuf *file, const char *key) return result; } -static int value_needs_surrounding_quote(const char *value) +static const char *quotes_for_value(const char *value) { - const char *ptr = value; - if (*value == ' ') - return 1; - while (*ptr) { + const char *ptr; + + if (value[0] == ' ' || value[0] == '\0') + return "\""; + + for (ptr = value; *ptr; ++ptr) { if (*ptr == ';' || *ptr == '#') - return 1; - ++ptr; + return "\""; } - if (ptr != value && *(--ptr) == ' ') - return 1; - return 0; + if (ptr[-1] == ' ') + return "\""; + + return ""; } /* @@ -1318,10 +1320,8 @@ static int config_write(diskfile_backend *cfg, const char *key, const regex_t *p /* Then replace the variable. If the value is NULL, it * means we want to delete it, so don't write anything. */ if (value != NULL) { - if (value_needs_surrounding_quote(value)) - git_filebuf_printf(&file, "\t%s = \"%s\"\n", name, value); - else - git_filebuf_printf(&file, "\t%s = %s\n", name, value); + const char *q = quotes_for_value(value); + git_filebuf_printf(&file, "\t%s = %s%s%s\n", name, q, value, q); } /* @@ -1362,6 +1362,8 @@ static int config_write(diskfile_backend *cfg, const char *key, const regex_t *p if (preg_replaced) { git_filebuf_printf(&file, "\n%s", write_start); } else { + const char *q; + git_filebuf_write(&file, reader->buffer.ptr, reader->buffer.size); /* And now if we just need to add a variable */ @@ -1381,10 +1383,8 @@ static int config_write(diskfile_backend *cfg, const char *key, const regex_t *p if (reader->buffer.size > 0 && *(reader->buffer.ptr + reader->buffer.size - 1) != '\n') git_filebuf_write(&file, "\n", 1); - if (value_needs_surrounding_quote(value)) - git_filebuf_printf(&file, "\t%s = \"%s\"\n", name, value); - else - git_filebuf_printf(&file, "\t%s = %s\n", name, value); + q = quotes_for_value(value); + git_filebuf_printf(&file, "\t%s = %s%s%s\n", name, q, value, q); } } |