checkout: die_if_checked_out: simplify strbuf management
[gitweb.git] / environment.c
index 050f1607d531460969e2f7d49d526c4176a9679b..8351007b30c7a7a1f74866f799efb8c2e9f38cfb 100644 (file)
@@ -142,6 +142,7 @@ static char *git_path_from_env(const char *envvar, const char *git_dir,
 
 static void setup_git_env(void)
 {
+       struct strbuf sb = STRBUF_INIT;
        const char *gitfile;
        const char *shallow_file;
 
@@ -150,12 +151,9 @@ static void setup_git_env(void)
                git_dir = DEFAULT_GIT_DIR_ENVIRONMENT;
        gitfile = read_gitfile(git_dir);
        git_dir = xstrdup(gitfile ? gitfile : git_dir);
-       git_common_dir = getenv(GIT_COMMON_DIR_ENVIRONMENT);
-       if (git_common_dir) {
+       if (get_common_dir(&sb, git_dir))
                git_common_dir_env = 1;
-               git_common_dir = xstrdup(git_common_dir);
-       } else
-               git_common_dir = git_dir;
+       git_common_dir = strbuf_detach(&sb, NULL);
        git_object_dir = git_path_from_env(DB_ENVIRONMENT, git_common_dir,
                                           "objects", &git_db_env);
        git_index_file = git_path_from_env(INDEX_ENVIRONMENT, git_dir,