]> git.donarmstrong.com Git - lilypond.git/commitdiff
(setup_paths): Bugfix for argv0 logic.
authorjanneke <janneke>
Thu, 3 Nov 2005 09:48:35 +0000 (09:48 +0000)
committerjanneke <janneke>
Thu, 3 Nov 2005 09:48:35 +0000 (09:48 +0000)
ChangeLog
lily/main.cc

index d7018dc68794b9b7857596024b6db7c6d4aaae82..8becc357f05ed26e3cbebc737305259ba34539d6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2005-11-03  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * lily/main.cc (setup_paths): Bugfix for argv0 logic.
+
 2005-11-03  Han-Wen Nienhuys  <hanwen@xs4all.nl>
 
        * GNUmakefile.in (SUBDIRS): remove debian/ directory.
index 5665abadd33182656eaf79bc694fe0094d0bd468..9ffbc3e0e327686b7eae739b04e7687a5366bea0 100644 (file)
@@ -325,13 +325,26 @@ setup_paths (char const *argv0)
   if (getenv ("LILYPOND_VERBOSE"))
     be_verbose_global = true;
 
-#if 1 /* Huh, argv0 is not absolute on windows?  ndef __MINGW32__ */
+  /* Find absolute ARGV0 name, using PATH.  */
   File_path p;
   p.parse_path (getenv ("PATH"));
-  String bindir = dir_name (p.find (argv0));
-#else /* __MINGW32__ */
-  String bindir = dir_name (argv0);
-#endif  
+  String argv0_abs = p.find (argv0);
+  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)
+       {
+         char cwd[PATH_MAX];
+         getcwd (cwd, PATH_MAX);
+         argv0_abs = String (cwd) + "/" + argv0;
+       }
+      else
+       programming_error ("can't find absolute argv0");
+    }
+    
+  String bindir = dir_name (argv0_abs);
   String argv0_prefix = dir_name (bindir);
   if (argv0_prefix != dir_name (dir_name (dir_name (prefix_directory))))
     {