diff options
author | Carlos Martín Nieto <cmn@elego.de> | 2011-03-29 17:59:13 +0200 |
---|---|---|
committer | Carlos Martín Nieto <cmn@elego.de> | 2011-03-29 18:13:47 +0200 |
commit | 26faa3668fedf1ffc95ef747b28f08b7131870f4 (patch) | |
tree | 913201df4ca211c7245e98975af68f73cb0c6a5c | |
parent | e15afc8e7cf6f6508d402134e0df772c4012ce77 (diff) | |
download | libgit2-26faa3668fedf1ffc95ef747b28f08b7131870f4.tar.gz |
Add build_varname to make a full var name
Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
-rw-r--r-- | src/config.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/config.c b/src/config.c index 8d01d7ba7..5f0c34ab7 100644 --- a/src/config.c +++ b/src/config.c @@ -463,10 +463,25 @@ static int config_parse(git_config *cfg_file) return error; } +static const char *build_varname(const char *section, const char *name, int len) +{ + static char varname[1024]; /* TODO: What's the longest we should allow? */ + + if(strlen(section) + len + 2 > sizeof(varname)) + return NULL; + + strcpy(varname, section); + strcat(varname, "."); + strncat(varname, name, len); + + return varname; +} + static int parse_variable(git_config *cfg, const char *section_name, const char *line) { int error; int has_value = 1; + const char *varname; const char *var_end = NULL; const char *value_start = NULL; @@ -492,6 +507,8 @@ static int parse_variable(git_config *cfg, const char *section_name, const char goto error; } + varname = build_varname(section_name, line, var_end - line + 1); + return GIT_SUCCESS; error: |