git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 3/3] Use the new {real,absolute}_path function names

From
Carlos Martín Nieto <cmn@elego.de>
Date
Mar 16, 2011, 16:06 UTC
Message-ID
<1300291579-25852-4-git-send-email-cmn@elego.de>
In-Reply-To
<1300291579-25852-1-git-send-email-cmn@elego.de>

Use the new names for path functions in the code. Replace uses of make_absolute_path with real_path, make_nonrelative_path with absolute_path and make_relative_path with relative_path.

Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
---
 builtin/clone.c        |   12 ++++++------
 builtin/init-db.c      |    8 ++++----
 builtin/receive-pack.c |    2 +-
 dir.c                  |    4 ++--
 environment.c          |    4 ++--
 exec_cmd.c             |    2 +-
 lockfile.c             |    4 ++--
 setup.c                |   14 ++++++--------
 8 files changed, 24 insertions(+), 26 deletions(-)
diff --git a/builtin/clone.c b/builtin/clone.c
index 60d9a64..780809d 100644
--- a/builtin/clone.c
+++ b/builtin/clone.c
@@ -100,7 +100,7 @@ static char *get_repo_path(const char *repo, int *is_bundle)
 		path = mkpath("%s%s", repo, suffix[i]);
 		if (is_directory(path)) {
 			*is_bundle = 0;
-			return xstrdup(make_nonrelative_path(path));
+			return xstrdup(absolute_path(path));
 		}
 	}
 
@@ -109,7 +109,7 @@ static char *get_repo_path(const char *repo, int *is_bundle)
 		path = mkpath("%s%s", repo, bundle_suffix[i]);
 		if (!stat(path, &st) && S_ISREG(st.st_mode)) {
 			*is_bundle = 1;
-			return xstrdup(make_nonrelative_path(path));
+			return xstrdup(absolute_path(path));
 		}
 	}
 
@@ -203,7 +203,7 @@ static void setup_reference(const char *repo)
 	struct transport *transport;
 	const struct ref *extra;
 
-	ref_git = make_absolute_path(option_reference);
+	ref_git = real_path(option_reference);
 
 	if (is_directory(mkpath("%s/.git/objects", ref_git)))
 		ref_git = mkpath("%s/.git", ref_git);
@@ -411,9 +411,9 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
 
 	path = get_repo_path(repo_name, &is_bundle);
 	if (path)
-		repo = xstrdup(make_nonrelative_path(repo_name));
+		repo = xstrdup(absolute_path(repo_name));
 	else if (!strchr(repo_name, ':'))
-		repo = xstrdup(make_absolute_path(repo_name));
+		repo = xstrdup(real_path(repo_name));
 	else
 		repo = repo_name;
 	is_local = path && !is_bundle;
@@ -466,7 +466,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
 
 	if (safe_create_leading_directories_const(git_dir) < 0)
 		die("could not create leading directories of '%s'", git_dir);
-	set_git_dir(make_absolute_path(git_dir));
+	set_git_dir(real_path(git_dir));
 
 	if (0 <= option_verbosity)
 		printf("Cloning into %s%s...\n",
diff --git a/builtin/init-db.c b/builtin/init-db.c
index fbeb380..63cf259 100644
--- a/builtin/init-db.c
+++ b/builtin/init-db.c
@@ -501,7 +501,7 @@ int cmd_init_db(int argc, const char **argv, const char *prefix)
 		const char *git_dir_parent = strrchr(git_dir, '/');
 		if (git_dir_parent) {
 			char *rel = xstrndup(git_dir, git_dir_parent - git_dir);
-			git_work_tree_cfg = xstrdup(make_absolute_path(rel));
+			git_work_tree_cfg = xstrdup(real_path(rel));
 			free(rel);
 		}
 		if (!git_work_tree_cfg) {
@@ -510,7 +510,7 @@ int cmd_init_db(int argc, const char **argv, const char *prefix)
 				die_errno ("Cannot access current working directory");
 		}
 		if (work_tree)
-			set_git_work_tree(make_absolute_path(work_tree));
+		  set_git_work_tree(real_path(work_tree));
 		else
 			set_git_work_tree(git_work_tree_cfg);
 		if (access(get_git_work_tree(), X_OK))
@@ -519,10 +519,10 @@ int cmd_init_db(int argc, const char **argv, const char *prefix)
 	}
 	else {
 		if (work_tree)
-			set_git_work_tree(make_absolute_path(work_tree));
+			set_git_work_tree(real_path(work_tree));
 	}
 
-	set_git_dir(make_absolute_path(git_dir));
+	set_git_dir(real_path(git_dir));
 
 	return init_db(template_dir, flags);
 }
diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c
index 760817d..d883585 100644
--- a/builtin/receive-pack.c
+++ b/builtin/receive-pack.c
@@ -740,7 +740,7 @@ static int add_refs_from_alternate(struct alternate_object_database *e, void *un
 	const struct ref *extra;
 
 	e->name[-1] = '\0';
-	other = xstrdup(make_absolute_path(e->base));
+	other = xstrdup(real_path(e->base));
 	e->name[-1] = '/';
 	len = strlen(other);
 
diff --git a/dir.c b/dir.c
index 570b651..5a9372a 100644
--- a/dir.c
+++ b/dir.c
@@ -1023,8 +1023,8 @@ char *get_relative_cwd(char *buffer, int size, const char *dir)
 	if (!getcwd(buffer, size))
 		die_errno("can't find the current directory");
 
-	if (!is_absolute_path(dir))
-		dir = make_absolute_path(dir);
+	/* getcwd resolves links and gives us the real path */
+	dir = real_path(dir);
 
 	while (*dir && *dir == *cwd) {
 		dir++;
diff --git a/environment.c b/environment.c
index c3efbb9..cc670b1 100644
--- a/environment.c
+++ b/environment.c
@@ -139,7 +139,7 @@ static int git_work_tree_initialized;
 void set_git_work_tree(const char *new_work_tree)
 {
 	if (git_work_tree_initialized) {
-		new_work_tree = make_absolute_path(new_work_tree);
+		new_work_tree = real_path(new_work_tree);
 		if (strcmp(new_work_tree, work_tree))
 			die("internal error: work tree has already been set\n"
 			    "Current worktree: %s\nNew worktree: %s",
@@ -147,7 +147,7 @@ void set_git_work_tree(const char *new_work_tree)
 		return;
 	}
 	git_work_tree_initialized = 1;
-	work_tree = xstrdup(make_absolute_path(new_work_tree));
+	work_tree = xstrdup(real_path(new_work_tree));
 }
 
 const char *get_git_work_tree(void)
diff --git a/exec_cmd.c b/exec_cmd.c
index 38545e8..171e841 100644
--- a/exec_cmd.c
+++ b/exec_cmd.c
@@ -89,7 +89,7 @@ static void add_path(struct strbuf *out, const char *path)
 		if (is_absolute_path(path))
 			strbuf_addstr(out, path);
 		else
-			strbuf_addstr(out, make_nonrelative_path(path));
+			strbuf_addstr(out, absolute_path(path));
 
 		strbuf_addch(out, PATH_SEP);
 	}
diff --git a/lockfile.c b/lockfile.c
index b0d74cd..c6fb77b 100644
--- a/lockfile.c
+++ b/lockfile.c
@@ -164,10 +164,10 @@ static char *unable_to_lock_message(const char *path, int err)
 		    "If no other git process is currently running, this probably means a\n"
 		    "git process crashed in this repository earlier. Make sure no other git\n"
 		    "process is running and remove the file manually to continue.",
-			    make_nonrelative_path(path), strerror(err));
+			    absolute_path(path), strerror(err));
 	} else
 		strbuf_addf(&buf, "Unable to create '%s.lock': %s",
-			    make_nonrelative_path(path), strerror(err));
+			    absolute_path(path), strerror(err));
 	return strbuf_detach(&buf, NULL);
 }
 
diff --git a/setup.c b/setup.c
index dadc666..8cb1ad3 100644
--- a/setup.c
+++ b/setup.c
@@ -216,9 +216,7 @@ void setup_work_tree(void)
 	if (initialized)
 		return;
 	work_tree = get_git_work_tree();
-	git_dir = get_git_dir();
-	if (!is_absolute_path(git_dir))
-		git_dir = make_absolute_path(git_dir);
+	git_dir = real_path(get_git_dir());
 	if (!work_tree || chdir(work_tree))
 		die("This operation must be run in a work tree");
 
@@ -229,7 +227,7 @@ void setup_work_tree(void)
 	if (getenv(GIT_WORK_TREE_ENVIRONMENT))
 		setenv(GIT_WORK_TREE_ENVIRONMENT, ".", 1);
 
-	set_git_dir(make_relative_path(git_dir, work_tree));
+	set_git_dir(relative_path(git_dir, work_tree));
 	initialized = 1;
 }
 
@@ -309,7 +307,7 @@ const char *read_gitfile_gently(const char *path)
 
 	if (!is_git_directory(dir))
 		die("Not a git repository: %s", dir);
-	path = make_absolute_path(dir);
+	path = real_path(dir);
 
 	free(buf);
 	return path;
@@ -389,7 +387,7 @@ static const char *setup_explicit_git_dir(const char *gitdirenv,
 
 	if (!prefixcmp(cwd, worktree) &&
 	    cwd[strlen(worktree)] == '/') { /* cwd inside worktree */
-		set_git_dir(make_absolute_path(gitdirenv));
+		set_git_dir(real_path(gitdirenv));
 		if (chdir(worktree))
 			die_errno("Could not chdir to '%s'", worktree);
 		cwd[len++] = '/';
@@ -414,7 +412,7 @@ static const char *setup_discovered_git_dir(const char *gitdir,
 	/* --work-tree is set without --git-dir; use discovered one */
 	if (getenv(GIT_WORK_TREE_ENVIRONMENT) || git_work_tree_cfg) {
 		if (offset != len && !is_absolute_path(gitdir))
-			gitdir = xstrdup(make_absolute_path(gitdir));
+			gitdir = xstrdup(real_path(gitdir));
 		if (chdir(cwd))
 			die_errno("Could not come back to cwd");
 		return setup_explicit_git_dir(gitdir, cwd, len, nongit_ok);
@@ -422,7 +420,7 @@ static const char *setup_discovered_git_dir(const char *gitdir,
 
 	/* #16.2, #17.2, #20.2, #21.2, #24, #25, #28, #29 (see t1510) */
 	if (is_bare_repository_cfg > 0) {
-		set_git_dir(offset == len ? gitdir : make_absolute_path(gitdir));
+		set_git_dir(offset == len ? gitdir : real_path(gitdir));
 		if (chdir(cwd))
 			die_errno("Could not come back to cwd");
 		return NULL;
-- 
1.7.4.1
Previous: Carlos Martín NietoNext: Erik Faye-Lund
Message 7 of 10 in “Rename make_*_path with clearer names”
  1. 0/3 Rename make_*_path with clearer namesCarlos Martín Nieto, Mar 16, 2011
  2. 1/3 make_absolute_path: return the input path if it points to our bufferCarlos Martín Nieto, Mar 16, 2011
  3. Junio C HamanoMar 16, 2011
  4. 2/3 Name make_*_path functions more accuratelyCarlos Martín Nieto, Mar 16, 2011
  5. Brian GernhardtMar 16, 2011
  6. Carlos Martín NietoMar 16, 2011
  7. 3/3 Use the new {real,absolute}_path function namesCarlos Martín Nieto, Mar 16, 2011
  8. Erik Faye-LundMar 16, 2011
  9. Carlos Martín NietoMar 16, 2011
  10. 3/3 Name make_*_path functions more accuratelyCarlos Martín Nieto, Mar 16, 2011

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.