+ if (getenv(GIT_DIR_ENVIRONMENT)) {
+ char path[PATH_MAX];
+ int len = strlen(getenv(GIT_DIR_ENVIRONMENT));
+ if (sizeof(path) - 40 < len)
+ die("'$%s' too big", GIT_DIR_ENVIRONMENT);
+ memcpy(path, getenv(GIT_DIR_ENVIRONMENT), len);
+
+ strcpy(path + len, "/refs");
+ if (access(path, X_OK))
+ goto bad_dir_environ;
+ strcpy(path + len, "/HEAD");
+ if (validate_symref(path))
+ goto bad_dir_environ;
+ if (getenv(DB_ENVIRONMENT)) {
+ if (access(getenv(DB_ENVIRONMENT), X_OK))
+ goto bad_dir_environ;
+ }
+ else {
+ strcpy(path + len, "/objects");
+ if (access(path, X_OK))
+ goto bad_dir_environ;
+ }