From: Jan Nieuwenhuizen Date: Thu, 3 Nov 2005 09:48:35 +0000 (+0000) Subject: (setup_paths): Bugfix for argv0 logic. X-Git-Tag: release/2.7.17~55 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=a05473991227d235087a751b778e78d1c3991ac6;p=lilypond.git (setup_paths): Bugfix for argv0 logic. --- diff --git a/ChangeLog b/ChangeLog index d7018dc687..8becc357f0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2005-11-03 Jan Nieuwenhuizen + + * lily/main.cc (setup_paths): Bugfix for argv0 logic. + 2005-11-03 Han-Wen Nienhuys * GNUmakefile.in (SUBDIRS): remove debian/ directory. diff --git a/lily/main.cc b/lily/main.cc index 5665abadd3..9ffbc3e0e3 100644 --- a/lily/main.cc +++ b/lily/main.cc @@ -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)))) {