To: vim_dev@googlegroups.com Subject: Patch 7.3.273 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 7.3.273 Problem: A BOM in an error file is seen as text. (Aleksey Baibarin) Solution: Remove the BOM from the text before evaluating. (idea by Christian Brabandt) Files: src/quickfix.c, src/mbyte.c, src/proto/mbyte.pro, src/testdir/test10.in *** ../vim-7.3.272/src/quickfix.c 2011-05-19 17:42:54.000000000 +0200 --- src/quickfix.c 2011-08-10 12:56:15.000000000 +0200 *************** *** 561,566 **** --- 561,570 ---- break; IObuff[CMDBUFFSIZE - 2] = NUL; /* for very long lines */ + #ifdef FEAT_MBYTE + remove_bom(IObuff); + #endif + if ((efmp = vim_strrchr(IObuff, '\n')) != NULL) *efmp = NUL; #ifdef USE_CRNL *** ../vim-7.3.272/src/mbyte.c 2011-07-27 18:25:40.000000000 +0200 --- src/mbyte.c 2011-08-10 13:11:56.000000000 +0200 *************** *** 838,843 **** --- 838,864 ---- } /* + * Remove all BOM from "s" by moving remaining text. + */ + void + remove_bom(s) + char_u *s; + { + if (enc_utf8) + { + char_u *p = s; + + while ((p = vim_strbyte(p, 0xef)) != NULL) + { + if (p[1] == 0xbb && p[2] == 0xbf) + STRMOVE(p, p + 3); + else + ++p; + } + } + } + + /* * Get class of pointer: * 0 for blank or NUL * 1 for punctuation *** ../vim-7.3.272/src/proto/mbyte.pro 2011-07-07 15:08:53.000000000 +0200 --- src/proto/mbyte.pro 2011-08-10 12:50:44.000000000 +0200 *************** *** 2,7 **** --- 2,8 ---- int enc_canon_props __ARGS((char_u *name)); char_u *mb_init __ARGS((void)); int bomb_size __ARGS((void)); + void remove_bom __ARGS((char_u *s)); int mb_get_class __ARGS((char_u *p)); int dbcs_class __ARGS((unsigned lead, unsigned trail)); int latin_char2len __ARGS((int c)); *** ../vim-7.3.272/src/testdir/test10.in 2010-08-15 21:57:29.000000000 +0200 --- src/testdir/test10.in 2011-08-10 13:01:46.000000000 +0200 *************** *** 2,7 **** --- 2,10 ---- STARTTEST :so small.vim + :" Also test a BOM is ignored. + :so mbyte.vim + :set encoding=utf-8 :/start of errorfile/,/end of errorfile/w! Xerrorfile :/start of testfile/,/end of testfile/w! Xtestfile :cf Xerrorfile *************** *** 20,26 **** start of errorfile "Xtestfile", line 4.12: 1506-045 (S) Undeclared identifier fd_set. ! "Xtestfile", line 7 col 19; this is an error gcc -c -DHAVE_CONFIsing-prototypes -I/usr/X11R6/include version.c Xtestfile:13: parse error before `asd' make: *** [vim] Error 1 --- 23,29 ---- start of errorfile "Xtestfile", line 4.12: 1506-045 (S) Undeclared identifier fd_set. ! "Xtestfile", line 7 col 19; this is an error gcc -c -DHAVE_CONFIsing-prototypes -I/usr/X11R6/include version.c Xtestfile:13: parse error before `asd' make: *** [vim] Error 1 *** ../vim-7.3.272/src/version.c 2011-08-10 12:38:02.000000000 +0200 --- src/version.c 2011-08-10 13:14:35.000000000 +0200 *************** *** 711,712 **** --- 711,714 ---- { /* Add new patch number below this line */ + /**/ + 273, /**/ -- Compilation process failed successfully. /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///