https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119684
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |dmalcolm at gcc dot gnu.org --- Comment #10 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Is it just about nice to have verification or does msgfmt etc. refuse to include translations which contain unknown format specifiers? Looking at the 4.3 to trunk diff of just pretty-print.{c,cc} documented format string specifiers, I see: %ld, %li, %lo, %lu, %lx: long versions of the above. %lld, %lli, %llo, %llu, %llx: long long versions. %wd, %wi, %wo, %wu, %wx: HOST_WIDE_INT versions. + %zd, %zi, %zo, %zu, %zx: size_t versions. + %td, %ti, %to, %tu, %tx: ptrdiff_t versions. + %f: double %c: character. %s: string. - %p: pointer. + %p: pointer (printed in a host-dependent manner). + %r: if pp_show_color(pp), switch to color identified by const char *. + %R: if pp_show_color(pp), reset color. %m: strerror(text->err_no) - does not consume a value from args_ptr. %%: '%'. %<: opening quote. %>: closing quote. + %{: URL start. Consumes a const char * argument for the URL. + %}: URL end. Does not consume any arguments. %': apostrophe (should only be used in untranslated messages; translations should use appropriate punctuation directly). + %@: diagnostic_event_id_ptr, for which event_id->known_p () must be true. %.*s: a substring the length of which is specified by an argument integer. %Ns: likewise, but length specified as constant in the format string. - %H: location_t. - %J: a decl tree, from which DECL_SOURCE_LOCATION will be recorded. - %K: a statement, from which EXPR_LOCATION and TREE_BLOCK will be recorded. Flag 'q': quote formatted text (must come immediately after '%'). + %Z: Requires two arguments - array of int, and len. Prints elements + of the array. + + %e: Consumes a pp_element * argument. The z/t stuff above is what my patch above attempts to solve (for gcc-internal-format only, we need it for gfc as well, or ideally somehow simplify the two so that it handles the common subset by the same code). %f, %r, %R, %{, %}, %@, %Z and %e are documented additions, %H/%J/%K were removed but AFAIK not reused, so the support can be kept in gettext.