X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fwarn-scheme.cc;h=cd9efc9ad4014abb410bf10ec047de8bca40f3a1;hb=5d84bfad4626892bcffd05adcced53c8a2329047;hp=3b917b760e05da92beb3445cbd562927df302a78;hpb=c618987255838a2af9813a69eb1f4f20a8df6315;p=lilypond.git diff --git a/lily/warn-scheme.cc b/lily/warn-scheme.cc index 3b917b760e..cd9efc9ad4 100644 --- a/lily/warn-scheme.cc +++ b/lily/warn-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Jan Nieuwenhuizen + Copyright (C) 1998--2015 Jan Nieuwenhuizen Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify @@ -127,7 +127,7 @@ LY_DEFINE (ly_expect_warning, "ly:expect-warning", 1, 0, 1, (SCM str, SCM rest), "A Scheme callable function to register a warning to be expected" " and subsequently suppressed. If the warning is not encountered," - " a warning about the missing warning will be shown. The message" + " a warning about the missing warning will be shown. The message" " should be translated with @code{(_ ...)} and changing parameters" " given after the format string.") { @@ -152,7 +152,7 @@ LY_DEFINE (ly_translate_cpp_warning_scheme, "ly:translate-cpp-warning-scheme", { LY_ASSERT_TYPE (scm_is_string, str, 1); string s = _ (ly_scm2string (str).c_str ()); - + /* Now replace all printf placeholders by scheme placeholders (~a). * Guile's format syntax is pretty similar to C's printf, only with * a tilde as the placeholder instead of a percent sign. @@ -167,27 +167,32 @@ LY_DEFINE (ly_translate_cpp_warning_scheme, "ly:translate-cpp-warning-scheme", // In some cases (%%, %s) we need to do a lookahead. As the C string is // always \0-terminated the next char is never beyond the end of the // memory! - switch (*pos) { + switch (*pos) + { case '~': result += "~~"; break; case '%': - if (*(pos+1) == '%') { - result += "%"; - // Skip the second '%' - pos++; - } else if (*(pos+1) == 's' || *(pos+1) == 'd') { - // %s in C++ corresponds to ~a; ~s would add quotes! - // ~d is only supported by ice-9, use ~a instead - result += "~a"; - // Skip the following 's' - pos++; - } else + if (*(pos + 1) == '%') + { + result += "%"; + // Skip the second '%' + pos++; + } + else if (*(pos + 1) == 's' || *(pos + 1) == 'd') + { + // %s in C++ corresponds to ~a; ~s would add quotes! + // ~d is only supported by ice-9, use ~a instead + result += "~a"; + // Skip the following 's' + pos++; + } + else result += "~"; break; default: result += *pos; - } + } pos++; } return ly_string2scm (result);