From: Masamichi Hosoda <trueroad@trueroad.jp>
Date: Fri, 10 Mar 2017 12:45:36 +0000 (+0900)
Subject: Issue 5077/1: Fix build failure on GNU Hurd
X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=e632a63b594206ed96f34f75b813411857af6a49;p=lilypond.git

Issue 5077/1: Fix build failure on GNU Hurd

LilyPond failed to build on GNU Hurd
because Hurd does not have PATH_MAX.

This commit is based on the following patch by Debian.
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=761036

However, the patch raises an error on `make check`.
This commit has been fixed so that the error does not raise.
---

diff --git a/flower/file-name.cc b/flower/file-name.cc
index c65d8fc7ed..e5dd6f6160 100644
--- a/flower/file-name.cc
+++ b/flower/file-name.cc
@@ -77,9 +77,16 @@ dir_name (const string &file_name)
 string
 get_working_directory ()
 {
+#ifdef _GNU_SOURCE
+  char *cwd = get_current_dir_name();
+  string scwd(cwd);
+  free(cwd);
+  return scwd;
+#else
   char cwd[PATH_MAX];
   // getcwd returns NULL upon a failure, contents of cwd would be undefined!
   return string (getcwd (cwd, PATH_MAX));
+#endif
 }
 
 /* Join components to full file_name. */
diff --git a/flower/test-file-path.cc b/flower/test-file-path.cc
index a20364b98c..8a891afeea 100644
--- a/flower/test-file-path.cc
+++ b/flower/test-file-path.cc
@@ -1,4 +1,5 @@
 #include "file-path.hh"
+#include "file-name.hh"
 
 #include <limits.h>
 #include <unistd.h>
@@ -10,8 +11,7 @@ TEST (File_path, Find)
 {
   char const *extensions[] = {"ly", "", 0};
   string file = "init";
-  char cwd[PATH_MAX];
-  if (!getcwd (cwd, PATH_MAX))
+  if (get_working_directory().empty())
     {
       cerr << "Could not get current work directory\n";
       exit (1);