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.
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. */
#include "file-path.hh"
+#include "file-name.hh"
#include <limits.h>
#include <unistd.h>
{
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);