Mercurial > hg > xemacs-beta
diff src/menubar.c @ 219:262b8bb4a523 r20-4b8
Import from CVS: tag r20-4b8
author | cvs |
---|---|
date | Mon, 13 Aug 2007 10:09:35 +0200 |
parents | acd284d43ca1 |
children | 677f6a0ee643 |
line wrap: on
line diff
--- a/src/menubar.c Mon Aug 13 10:08:36 2007 +0200 +++ b/src/menubar.c Mon Aug 13 10:09:35 2007 +0200 @@ -203,23 +203,31 @@ string_result = (Bufbyte *) alloca (end * MAX_EMCHAR_LEN); string_result_ptr = string_result; - for (i = 0; i < end ; i++) + for (i = 0; i < end; i++) { - elt = charptr_emchar_n (name_data, i); + elt = charptr_emchar (name_data); elt = DOWNCASE (buf, elt); - if (elt == '%') - expecting_underscore = 1; - else if (expecting_underscore) + if (expecting_underscore) { expecting_underscore = 0; - if (elt != '_') + switch (elt) { + case '%': + /* Allow `%%' to mean `%'. */ + string_result_ptr += set_charptr_emchar (string_result_ptr, '%'); + break; + case '_': + break; + default: string_result_ptr += set_charptr_emchar (string_result_ptr, '%'); string_result_ptr += set_charptr_emchar (string_result_ptr, elt); } } + else if (elt == '%') + expecting_underscore = 1; else string_result_ptr += set_charptr_emchar (string_result_ptr, elt); + INC_CHARPTR (name_data); } return make_string (string_result, string_result_ptr - string_result);