summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Martín Nieto <cmn@elego.de>2011-03-29 17:59:13 +0200
committerCarlos Martín Nieto <cmn@elego.de>2011-03-29 18:13:47 +0200
commit26faa3668fedf1ffc95ef747b28f08b7131870f4 (patch)
tree913201df4ca211c7245e98975af68f73cb0c6a5c
parente15afc8e7cf6f6508d402134e0df772c4012ce77 (diff)
downloadlibgit2-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.c17
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: