]> git.donarmstrong.com Git - lilypond.git/blobdiff - flower/file-name.cc
lilypond-manuals.css: edit color scheme and some spacing
[lilypond.git] / flower / file-name.cc
index 1746c2c28d84adc5cbe8cd19f5e8d431dec10383..990e3d6d9161d983860b0c380e1a1139b17edf9c 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2015 Han-Wen Nienhuys <hanwen@xs4all.nl>
   Jan Nieuwenhuizen <janneke@gnu.org>
 
   LilyPond is free software: you can redistribute it and/or modify
@@ -33,10 +33,6 @@ using namespace std;
 #include <sys/stat.h>
 #endif
 
-#ifdef __CYGWIN__
-#include <sys/cygwin.h>
-#endif
-
 #ifndef ROOTSEP
 #define ROOTSEP ':'
 #endif
@@ -49,21 +45,6 @@ using namespace std;
 #define EXTSEP '.'
 #endif
 
-#ifdef __CYGWIN__
-static string
-dos_to_posix (const string &file_name)
-{
-  char buf[PATH_MAX] = "";
-  char s[PATH_MAX] = {0};
-  file_name.copy (s, PATH_MAX - 1);
-  /* ugh: char const* argument gets modified.  */
-  int fail = cygwin_conv_to_posix_path (s, buf);
-  if (!fail)
-    return buf;
-  return file_name;
-}
-#endif /* __CYGWIN__ */
-
 /** Use slash as directory separator.  On Windows, they can pretty
     much be exchanged.  */
 #if 0
@@ -96,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<char> cwd (PATH_MAX);
+#else
+  vector<char> 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. */
@@ -144,12 +137,6 @@ File_name::to_string () const
 
 File_name::File_name (string file_name)
 {
-#ifdef __CYGWIN__
-  /* All system functions would work, even if we do not convert to
-     posix file_name, but we would think that \foe\bar\baz.ly is in
-     the cwd.  */
-  file_name = dos_to_posix (file_name);
-#endif
 #ifdef __MINGW32__
   file_name = slashify (file_name);
 #endif