Merge branch 'bw/realpath-wo-chdir'

The implementation of "real_path()" was to go there with chdir(2)
and call getcwd(3), but this obviously wouldn't be usable in a
threaded environment.  Rewrite it to manually resolve relative
paths including symbolic links in path components.

* bw/realpath-wo-chdir:
  real_path: set errno when max number of symlinks is exceeded
  real_path: prevent redefinition of MAXSYMLINKS
diff --git a/dir.c b/dir.c
index 4ac63bc..65c3e68 100644
--- a/dir.c
+++ b/dir.c
@@ -2731,8 +2731,8 @@ void connect_work_tree_and_git_dir(const char *work_tree_, const char *git_dir_)
 {
 	struct strbuf file_name = STRBUF_INIT;
 	struct strbuf rel_path = STRBUF_INIT;
-	char *git_dir = xstrdup(real_path(git_dir_));
-	char *work_tree = xstrdup(real_path(work_tree_));
+	char *git_dir = real_pathdup(git_dir_);
+	char *work_tree = real_pathdup(work_tree_);
 
 	/* Update gitfile */
 	strbuf_addf(&file_name, "%s/.git", work_tree);