]> git.donarmstrong.com Git - lilypond.git/commitdiff
* flower/file-path.cc (find): Bugfix: Return name of file found.
authorjanneke <janneke>
Thu, 3 Nov 2005 20:52:45 +0000 (20:52 +0000)
committerjanneke <janneke>
Thu, 3 Nov 2005 20:52:45 +0000 (20:52 +0000)
* lily/main.cc (setup_paths): Bugfix for argv0 logic.
(setup_paths)[__CYGWIN__ || __MINGW32__ || ]: Normalize argv0.
(setup_paths)[__MINGW32__]: Also look for argv0 + .exe.

ChangeLog
flower/file-name.cc
flower/file-path.cc
lily/main.cc

index 8becc357f05ed26e3cbebc737305259ba34539d6..ccacdb8c0ae79b77bdc67ad452622d5f86595f44 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,10 @@
 2005-11-03  Jan Nieuwenhuizen  <janneke@gnu.org>
 
+       * flower/file-path.cc (find): Bugfix: Return name of file found.
+
        * lily/main.cc (setup_paths): Bugfix for argv0 logic.
+       (setup_paths)[__CYGWIN__ || __MINGW32__ || ]: Normalize argv0.
+       (setup_paths)[__MINGW32__]: Also look for argv0 + .exe.
 
 2005-11-03  Han-Wen Nienhuys  <hanwen@xs4all.nl>
 
index 2064e072613fa598908a01b467068f3d65512b69..74a45fd6514c93f8d1c45c5ad52601f8874b5c95 100644 (file)
@@ -23,7 +23,6 @@ using namespace std;
 #include <sys/cygwin.h>
 #endif
 
-/* We don't have multiple roots, set this to '\0'? */
 #ifndef ROOTSEP
 #define ROOTSEP ':'
 #endif
index c66909eae37de55333548cde84a50f414fe9d24c..b4478c23a0309bcaec4d182fb61cfd9bf55f2b55 100644 (file)
@@ -149,26 +149,23 @@ File_path::find (String name) const
 String
 File_path::find (String name, char const *extensions[])
 {
-  File_name file_name (name);
   if (name.is_empty () || name == "-")
-    file_name.base_ = "-";
-  else
+    return name;
+  
+  File_name file_name (name);
+  String orig_ext = file_name.ext_;
+  for (int i = 0; extensions[i]; i++)
     {
-      String orig_ext = file_name.ext_;
-      for (int i = 0; extensions[i]; i++)
-       {
-         file_name.ext_ = orig_ext;
-         if (*extensions[i] && !file_name.ext_.is_empty ())
-           file_name.ext_ += ".";
-         file_name.ext_ += extensions[i];
-         if (!find (file_name.to_string ()).is_empty ())
-           break;
-       }
-
-      /* Reshuffle extension */
-      file_name = File_name (file_name.to_string ());
+      file_name.ext_ = orig_ext;
+      if (*extensions[i] && !file_name.ext_.is_empty ())
+       file_name.ext_ += ".";
+      file_name.ext_ += extensions[i];
+      String found = find (file_name.to_string ());
+      if (!found.is_empty ())
+       return found;
     }
-  return file_name.to_string ();
+  
+  return "";
 }
 
 /** Append a directory, return false if failed.  */
index 9ffbc3e0e327686b7eae739b04e7687a5366bea0..f5bee67560d231c51015b19b935c320538032f47 100644 (file)
@@ -326,15 +326,28 @@ setup_paths (char const *argv0)
     be_verbose_global = true;
 
   /* Find absolute ARGV0 name, using PATH.  */
-  File_path p;
-  p.parse_path (getenv ("PATH"));
-  String argv0_abs = p.find (argv0);
+  File_path path;
+  path.parse_path (getenv ("PATH"));
+
+#if defined (__CYGWIN__) || defined (__MINGW32__)
+  String s = argv0;
+  s.substitute ('\\', '/');
+  argv0 = s.to_str0 ();
+#endif /* __CYGWIN__ || __MINGW32__ */
+
+#ifndef __MINGW32__
+  String argv0_abs = path.find (argv0);
+#else /* __MINGW32__ */
+  char const *ext[] = {"exe", "", 0 };
+  String argv0_abs = path.find (argv0, ext);
+#endif /* __MINGW32__ */
+
   if (argv0_abs.is_empty ())
     {
       File_name name (argv0);
       /* If NAME contains slashes and its DIR is not absolute, it can
         only be referenced from CWD.  */
-      if (name.to_string ().index ('/') >= 0 && name.dir_[0] != DIRSEP)
+      if (name.to_string ().index ('/') >= 0 && name.dir_[0] != '/')
        {
          char cwd[PATH_MAX];
          getcwd (cwd, PATH_MAX);