X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=flower%2Ffile-name.cc;h=990e3d6d9161d983860b0c380e1a1139b17edf9c;hb=b872748c6aa8bb721ced458691b38ac2fac5dfc8;hp=24db2021b0600edc3d5451cbe462ae9b2ab5078c;hpb=59a6d1a06432fc0ca88c3023c646182f389ec1b5;p=lilypond.git diff --git a/flower/file-name.cc b/flower/file-name.cc index 24db2021b0..990e3d6d91 100644 --- a/flower/file-name.cc +++ b/flower/file-name.cc @@ -25,6 +25,7 @@ #include #include +using namespace std; #include "config.hh" @@ -32,9 +33,6 @@ #include #endif -using std::string; -using std::vector; - #ifndef ROOTSEP #define ROOTSEP ':' #endif @@ -79,9 +77,21 @@ dir_name (const string &file_name) string get_working_directory () { - char cwd[PATH_MAX]; - // getcwd returns NULL upon a failure, contents of cwd would be undefined! - return string (getcwd (cwd, PATH_MAX)); +#ifdef PATH_MAX + vector cwd (PATH_MAX); +#else + vector cwd (1024); +#endif + while (getcwd (cwd.data (), cwd.size ()) == NULL) + { + if (errno != ERANGE) + { + // getcwd () fails. + return ""; + } + cwd.resize (cwd.size () * 2); + } + return string (cwd.data ()); } /* Join components to full file_name. */