X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Frelocate.cc;h=698f06ac64373bfd0475c882d0e990e62c4b4892;hb=60d641c51caa5a53b185d40b6f6825417670887e;hp=2ff9fc44d37e7721780bf791d07d4398ac588f1e;hpb=fe3687d66d2a768c83fede50ce901c6ef1b4969e;p=lilypond.git diff --git a/lily/relocate.cc b/lily/relocate.cc index 2ff9fc44d3..698f06ac64 100644 --- a/lily/relocate.cc +++ b/lily/relocate.cc @@ -1,10 +1,20 @@ /* - relocate.cc -- implement relocation based on argv0 + This file is part of LilyPond, the GNU music typesetter. - source file of the GNU LilyPond music typesetter + Copyright (C) 2005--2010 Han-Wen Nienhuys - (c) 2005--2007 Han-Wen Nienhuys + LilyPond is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + LilyPond is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with LilyPond. If not, see . */ #include "relocate.hh" @@ -230,12 +240,8 @@ setup_paths (char const *argv0_ptr) if (char const *env = getenv ("LILYPOND_DATADIR")) { -#ifdef __MINGW32__ /* Normalize file name. */ lilypond_datadir = File_name (env).to_string (); -#else - lilypond_datadir = env; -#endif } /* When running from build dir, a full LILYPOND_DATADIR is set-up at @@ -245,6 +251,9 @@ setup_paths (char const *argv0_ptr) if (!is_dir (lilypond_datadir.c_str ()) && is_dir (build_datadir_current.c_str ())) lilypond_datadir = build_datadir_current; + + + lilypond_datadir = File_name (lilypond_datadir).canonicalized().to_string(); global_path.append (""); @@ -270,20 +279,20 @@ setup_paths (char const *argv0_ptr) string expand_environment_variables (string orig) { - const char *start_ptr = orig.c_str (); - const char *ptr = orig.c_str (); + char const *start_ptr = orig.c_str (); + char const *ptr = orig.c_str (); size_t len = orig.length (); string out; while (ptr < start_ptr + len) { - char *dollar = strchr (ptr, '$'); + char const *dollar = strchr (ptr, '$'); if (dollar != NULL) { - char *start_var = dollar + 1; - char *end_var = start_var; - char *start_next = end_var; + char const *start_var = dollar + 1; + char const *end_var = start_var; + char const *start_next = end_var; out += string (ptr, dollar - ptr); ptr = dollar; @@ -320,7 +329,7 @@ expand_environment_variables (string orig) if (start_var < end_var) { string var_name (start_var, end_var - start_var); - const char *value = getenv (var_name.c_str ()); + char const *value = getenv (var_name.c_str ()); if (value != NULL) out += string (value); @@ -337,7 +346,7 @@ expand_environment_variables (string orig) return out; } - +// Ugh - very inefficient, but safer than fgets. static string read_line (FILE *f) { @@ -345,7 +354,7 @@ read_line (FILE *f) int c = 0; while ((c = fgetc (f)) != EOF && c != '\n') - out += c; + out += char(c); return out; }