transport: use strbufs for status table "quickref" strings
[gitweb.git] / environment.c
index 01cb28dda922a3ce36836d19d30467381c561f51..c5b65f5e231e02f315d8a24ee48034aede3ad5e8 100644 (file)
@@ -143,11 +143,8 @@ static char *git_path_from_env(const char *envvar, const char *git_dir,
                               const char *path, int *fromenv)
 {
        const char *value = getenv(envvar);
-       if (!value) {
-               char *buf = xmalloc(strlen(git_dir) + strlen(path) + 2);
-               sprintf(buf, "%s/%s", git_dir, path);
-               return buf;
-       }
+       if (!value)
+               return xstrfmt("%s/%s", git_dir, path);
        if (fromenv)
                *fromenv = 1;
        return xstrdup(value);
@@ -237,6 +234,8 @@ void set_git_work_tree(const char *new_work_tree)
        }
        git_work_tree_initialized = 1;
        work_tree = xstrdup(real_path(new_work_tree));
+       if (setenv(GIT_WORK_TREE_ENVIRONMENT, work_tree, 1))
+               die("could not set GIT_WORK_TREE to '%s'", work_tree);
 }
 
 const char *get_git_work_tree(void)