[NOT-SERIOUS PATCH] Make get_relative_cwd() not accept NULL for a directory

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Earlier, get_relative_cwd() interpreted "dir == NULL" as "outside of the dir",
and therefore returned NULL.  Be more strict now.

Signed-off-by: Johannes Schindelin <johannes.schindelin@xxxxxx>
---

	As promised.

	Okay, I made up my mind.  Allowing "dir == NULL" is not only a matter of
	convenience.  It is the most natural way to say that "dir" is an invalid
	or non-existing directory.

	Besides, this patch adds 14.286% more lines than it removes ;-)

	But ultimately, it is your decision, Junio, and I am d'accord with 
	what you choose.

 dir.c   |    3 ---
 setup.c |   10 +++++++---
 2 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/dir.c b/dir.c
index b3329f4..cfcde13 100644
--- a/dir.c
+++ b/dir.c
@@ -646,7 +646,6 @@ file_exists(const char *f)
 /*
  * get_relative_cwd() gets the prefix of the current working directory
  * relative to 'dir'.  If we are not inside 'dir', it returns NULL.
- * As a convenience, it also returns NULL if 'dir' is already NULL.
  */
 char *get_relative_cwd(char *buffer, int size, const char *dir)
 {
@@ -656,8 +655,6 @@ char *get_relative_cwd(char *buffer, int size, const char *dir)
 	 * a lazy caller can pass a NULL returned from get_git_work_tree()
 	 * and rely on this function to return NULL.
 	 */
-	if (!dir)
-		return NULL;
 	if (!getcwd(buffer, size))
 		die("can't find the current directory: %s", strerror(errno));
 
diff --git a/setup.c b/setup.c
index 3653092..2f720f8 100644
--- a/setup.c
+++ b/setup.c
@@ -183,8 +183,10 @@ int is_inside_git_dir(void)
 
 int is_inside_work_tree(void)
 {
-	if (inside_work_tree < 0)
-		inside_work_tree = is_inside_dir(get_git_work_tree());
+	if (inside_work_tree < 0) {
+		const char *work_tree = get_git_work_tree();
+		inside_work_tree = work_tree ? is_inside_dir(work_tree) : 0;
+	}
 	return inside_work_tree;
 }
 
@@ -370,10 +372,12 @@ const char *setup_git_directory(void)
 	/* If the work tree is not the default one, recompute prefix */
 	if (inside_work_tree < 0) {
 		static char buffer[PATH_MAX + 1];
+		const char *work_tree;
 		char *rel;
 		if (retval && chdir(retval))
 			die ("Could not jump back into original cwd");
-		rel = get_relative_cwd(buffer, PATH_MAX, get_git_work_tree());
+		work_tree = get_git_work_tree();
+		rel = work_tree ? get_relative_cwd(buffer, PATH_MAX, work_tree) : NULL;
 		return rel && *rel ? strcat(rel, "/") : NULL;
 	}
 
-- 
1.5.3.rc3.112.gf60b6


-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux