summaryrefslogtreecommitdiffstats
path: root/vim/vim-7.2/7.2.169
diff options
context:
space:
mode:
Diffstat (limited to 'vim/vim-7.2/7.2.169')
-rw-r--r--vim/vim-7.2/7.2.1691214
1 files changed, 1214 insertions, 0 deletions
diff --git a/vim/vim-7.2/7.2.169 b/vim/vim-7.2/7.2.169
new file mode 100644
index 0000000..4ae90a5
--- /dev/null
+++ b/vim/vim-7.2/7.2.169
@@ -0,0 +1,1214 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.169
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.169
+Problem: Splint complains about a lot of things.
+Solution: Add type casts, #ifdefs and other changes to avoid warnings.
+ Change colnr_T from unsigned to int. Avoids mistakes with
+ subtracting columns.
+Files: src/cleanlint.vim, src/diff.c, src/edit.c, src/ex_cmds.c,
+ src/ex_cmds2.c, src/ex_docmd.c, src/proto/ex_cmds.pro,
+ src/proto/spell.pro, src/quickfix.c, src/spell.c, src/structs.h,
+ src/term.h, src/vim.h
+
+
+*** ../vim-7.2.168/src/cleanlint.vim 2009-05-13 12:46:36.000000000 +0200
+--- src/cleanlint.vim 2009-05-13 18:03:11.000000000 +0200
+***************
+*** 1,27 ****
+ " Vim tool: Filter output of splint
+ "
+ " Maintainer: Bram Moolenaar <Bram@vim.org>
+! " Last Change: 2009 May 05
+
+ " Usage: redirect output of "make lint" to a file, edit that file with Vim and
+ " :call CleanLint()
+ " This deletes irrelevant messages. What remains might be valid warnings.
+
+ fun! CleanLint()
+- g/^ Types are incompatible/lockmarks d
+ g/Assignment of dev_t to __dev_t:/lockmarks d
+ g/Assignment of __dev_t to dev_t:/lockmarks d
+ g/Operands of == have incompatible types (__dev_t, dev_t): /lockmarks d
+! g/Operands of == have incompatible types (unsigned int, int): /lockmarks d
+ g/Assignment of char to char_u: /lockmarks d
+ g/Assignment of unsigned int to int: /lockmarks d
+! g/Assignment of colnr_T to int: /lockmarks d
+ g/Assignment of int to char_u: /lockmarks d
+ g/Function .* expects arg . to be wint_t gets int: /lockmarks d
+! g/^digraph.c.*digraphdefault.*is type char, expects char_u:/lockmarks d
+ g/^digraph.c.*Additional initialization errors for digraphdefault not reported/lockmarks d
+ g/Function strncasecmp expects arg 3 to be int gets size_t: /lockmarks d
+ g/ To ignore signs in type comparisons use +ignoresigns/lockmarks d
+ g/ To allow arbitrary integral types to match any integral type, use +matchanyintegral./lockmarks d
+ g/ To allow arbitrary integral types to match long unsigned, use +longintegral./lockmarks d
+ endfun
+--- 1,32 ----
+ " Vim tool: Filter output of splint
+ "
+ " Maintainer: Bram Moolenaar <Bram@vim.org>
+! " Last Change: 2009 May 13
+
+ " Usage: redirect output of "make lint" to a file, edit that file with Vim and
+ " :call CleanLint()
+ " This deletes irrelevant messages. What remains might be valid warnings.
+
+ fun! CleanLint()
+ g/Assignment of dev_t to __dev_t:/lockmarks d
+ g/Assignment of __dev_t to dev_t:/lockmarks d
+ g/Operands of == have incompatible types (__dev_t, dev_t): /lockmarks d
+! g/Operands of == have incompatible types (char_u, int): /lockmarks d
+ g/Assignment of char to char_u: /lockmarks d
+ g/Assignment of unsigned int to int: /lockmarks d
+! g/Assignment of int to unsigned int: /lockmarks d
+! g/Assignment of unsigned int to long int: /lockmarks d
+ g/Assignment of int to char_u: /lockmarks d
+ g/Function .* expects arg . to be wint_t gets int: /lockmarks d
+! g/Function .* expects arg . to be size_t gets int: /lockmarks d
+! g/Initial value of .* is type char, expects char_u: /lockmarks d
+! g/^ex_cmds.h:.* Function types are inconsistent. Parameter 1 is implicitly temp, but unqualified in assigned function:/lockmarks d
+! g/^ex_docmd.c:.* nospec_str/lockmarks d
+ g/^digraph.c.*Additional initialization errors for digraphdefault not reported/lockmarks d
+ g/Function strncasecmp expects arg 3 to be int gets size_t: /lockmarks d
++ g/^ Types are incompatible/lockmarks d
+ g/ To ignore signs in type comparisons use +ignoresigns/lockmarks d
+ g/ To allow arbitrary integral types to match any integral type, use +matchanyintegral./lockmarks d
+ g/ To allow arbitrary integral types to match long unsigned, use +longintegral./lockmarks d
++ g+ A variable is declared but never used. Use /.@unused@./ in front of declaration to suppress message.+lockmarks d
+ endfun
+*** ../vim-7.2.168/src/diff.c 2009-03-11 12:45:44.000000000 +0100
+--- src/diff.c 2009-05-13 16:16:11.000000000 +0200
+***************
+*** 827,832 ****
+--- 827,833 ----
+ char_u *tmp_diff;
+ {
+ char_u *cmd;
++ size_t len;
+
+ #ifdef FEAT_EVAL
+ if (*p_dex != NUL)
+***************
+*** 835,842 ****
+ else
+ #endif
+ {
+! cmd = alloc((unsigned)(STRLEN(tmp_orig) + STRLEN(tmp_new)
+! + STRLEN(tmp_diff) + STRLEN(p_srr) + 27));
+ if (cmd != NULL)
+ {
+ /* We don't want $DIFF_OPTIONS to get in the way. */
+--- 836,844 ----
+ else
+ #endif
+ {
+! len = STRLEN(tmp_orig) + STRLEN(tmp_new)
+! + STRLEN(tmp_diff) + STRLEN(p_srr) + 27;
+! cmd = alloc((unsigned)len);
+ if (cmd != NULL)
+ {
+ /* We don't want $DIFF_OPTIONS to get in the way. */
+***************
+*** 846,852 ****
+ /* Build the diff command and execute it. Always use -a, binary
+ * differences are of no use. Ignore errors, diff returns
+ * non-zero when differences have been found. */
+! sprintf((char *)cmd, "diff %s%s%s%s%s %s",
+ diff_a_works == FALSE ? "" : "-a ",
+ #if defined(MSWIN) || defined(MSDOS)
+ diff_bin_works == TRUE ? "--binary " : "",
+--- 848,854 ----
+ /* Build the diff command and execute it. Always use -a, binary
+ * differences are of no use. Ignore errors, diff returns
+ * non-zero when differences have been found. */
+! vim_snprintf((char *)cmd, len, "diff %s%s%s%s%s %s",
+ diff_a_works == FALSE ? "" : "-a ",
+ #if defined(MSWIN) || defined(MSDOS)
+ diff_bin_works == TRUE ? "--binary " : "",
+***************
+*** 856,862 ****
+ (diff_flags & DIFF_IWHITE) ? "-b " : "",
+ (diff_flags & DIFF_ICASE) ? "-i " : "",
+ tmp_orig, tmp_new);
+! append_redir(cmd, p_srr, tmp_diff);
+ #ifdef FEAT_AUTOCMD
+ block_autocmds(); /* Avoid ShellCmdPost stuff */
+ #endif
+--- 858,864 ----
+ (diff_flags & DIFF_IWHITE) ? "-b " : "",
+ (diff_flags & DIFF_ICASE) ? "-i " : "",
+ tmp_orig, tmp_new);
+! append_redir(cmd, (int)len, p_srr, tmp_diff);
+ #ifdef FEAT_AUTOCMD
+ block_autocmds(); /* Avoid ShellCmdPost stuff */
+ #endif
+***************
+*** 881,886 ****
+--- 883,889 ----
+ char_u *tmp_orig; /* name of original temp file */
+ char_u *tmp_new; /* name of patched temp file */
+ char_u *buf = NULL;
++ size_t buflen;
+ win_T *old_curwin = curwin;
+ char_u *newname = NULL; /* name of patched file buffer */
+ #ifdef UNIX
+***************
+*** 920,930 ****
+ /* Get the absolute path of the patchfile, changing directory below. */
+ fullname = FullName_save(eap->arg, FALSE);
+ #endif
+! buf = alloc((unsigned)(STRLEN(tmp_orig) + (
+ # ifdef UNIX
+ fullname != NULL ? STRLEN(fullname) :
+ # endif
+! STRLEN(eap->arg)) + STRLEN(tmp_new) + 16));
+ if (buf == NULL)
+ goto theend;
+
+--- 923,934 ----
+ /* Get the absolute path of the patchfile, changing directory below. */
+ fullname = FullName_save(eap->arg, FALSE);
+ #endif
+! buflen = STRLEN(tmp_orig) + (
+ # ifdef UNIX
+ fullname != NULL ? STRLEN(fullname) :
+ # endif
+! STRLEN(eap->arg)) + STRLEN(tmp_new) + 16;
+! buf = alloc((unsigned)buflen);
+ if (buf == NULL)
+ goto theend;
+
+***************
+*** 961,967 ****
+ {
+ /* Build the patch command and execute it. Ignore errors. Switch to
+ * cooked mode to allow the user to respond to prompts. */
+! sprintf((char *)buf, "patch -o %s %s < \"%s\"", tmp_new, tmp_orig,
+ # ifdef UNIX
+ fullname != NULL ? fullname :
+ # endif
+--- 965,972 ----
+ {
+ /* Build the patch command and execute it. Ignore errors. Switch to
+ * cooked mode to allow the user to respond to prompts. */
+! vim_snprintf((char *)buf, buflen, "patch -o %s %s < \"%s\"",
+! tmp_new, tmp_orig,
+ # ifdef UNIX
+ fullname != NULL ? fullname :
+ # endif
+*** ../vim-7.2.168/src/edit.c 2009-05-13 12:46:36.000000000 +0200
+--- src/edit.c 2009-05-13 18:29:21.000000000 +0200
+***************
+*** 169,175 ****
+ static int ins_compl_key2count __ARGS((int c));
+ static int ins_compl_use_match __ARGS((int c));
+ static int ins_complete __ARGS((int c));
+! static int quote_meta __ARGS((char_u *dest, char_u *str, int len));
+ #endif /* FEAT_INS_EXPAND */
+
+ #define BACKSPACE_CHAR 1
+--- 169,175 ----
+ static int ins_compl_key2count __ARGS((int c));
+ static int ins_compl_use_match __ARGS((int c));
+ static int ins_complete __ARGS((int c));
+! static unsigned quote_meta __ARGS((char_u *dest, char_u *str, int len));
+ #endif /* FEAT_INS_EXPAND */
+
+ #define BACKSPACE_CHAR 1
+***************
+*** 757,763 ****
+ * there is nothing to add, CTRL-L works like CTRL-P then. */
+ if (c == Ctrl_L
+ && (ctrl_x_mode != CTRL_X_WHOLE_LINE
+! || STRLEN(compl_shown_match->cp_str)
+ > curwin->w_cursor.col - compl_col))
+ {
+ ins_compl_addfrommatch();
+--- 757,763 ----
+ * there is nothing to add, CTRL-L works like CTRL-P then. */
+ if (c == Ctrl_L
+ && (ctrl_x_mode != CTRL_X_WHOLE_LINE
+! || (int)STRLEN(compl_shown_match->cp_str)
+ > curwin->w_cursor.col - compl_col))
+ {
+ ins_compl_addfrommatch();
+***************
+*** 3837,3843 ****
+--- 3837,3847 ----
+ char_u *word;
+ int icase = FALSE;
+ int adup = FALSE;
++ #ifdef S_SPLINT_S /* splint doesn't parse array of pointers correctly */
++ char_u **cptext;
++ #else
+ char_u *(cptext[CPT_COUNT]);
++ #endif
+
+ if (tv->v_type == VAR_DICT && tv->vval.v_dict != NULL)
+ {
+***************
+*** 3994,4000 ****
+ else if (*e_cpt == ']' || *e_cpt == 't')
+ {
+ type = CTRL_X_TAGS;
+! sprintf((char*)IObuff, _("Scanning tags."));
+ (void)msg_trunc_attr(IObuff, TRUE, hl_attr(HLF_R));
+ }
+ else
+--- 3998,4004 ----
+ else if (*e_cpt == ']' || *e_cpt == 't')
+ {
+ type = CTRL_X_TAGS;
+! vim_snprintf((char *)IObuff, IOSIZE, _("Scanning tags."));
+ (void)msg_trunc_attr(IObuff, TRUE, hl_attr(HLF_R));
+ }
+ else
+***************
+*** 4093,4099 ****
+ case CTRL_X_SPELL:
+ #ifdef FEAT_SPELL
+ num_matches = expand_spelling(first_match_pos.lnum,
+! first_match_pos.col, compl_pattern, &matches);
+ if (num_matches > 0)
+ ins_compl_add_matches(num_matches, matches, p_ic);
+ #endif
+--- 4097,4103 ----
+ case CTRL_X_SPELL:
+ #ifdef FEAT_SPELL
+ num_matches = expand_spelling(first_match_pos.lnum,
+! compl_pattern, &matches);
+ if (num_matches > 0)
+ ins_compl_add_matches(num_matches, matches, p_ic);
+ #endif
+***************
+*** 4803,4812 ****
+ {
+ char_u *prefix = (char_u *)"\\<";
+
+! /* we need 3 extra chars, 1 for the NUL and
+! * 2 >= strlen(prefix) -- Acevedo */
+ compl_pattern = alloc(quote_meta(NULL, line + compl_col,
+! compl_length) + 3);
+ if (compl_pattern == NULL)
+ return FAIL;
+ if (!vim_iswordp(line + compl_col)
+--- 4807,4815 ----
+ {
+ char_u *prefix = (char_u *)"\\<";
+
+! /* we need up to 2 extra chars for the prefix */
+ compl_pattern = alloc(quote_meta(NULL, line + compl_col,
+! compl_length) + 2);
+ if (compl_pattern == NULL)
+ return FAIL;
+ if (!vim_iswordp(line + compl_col)
+***************
+*** 4881,4887 ****
+ else
+ {
+ compl_pattern = alloc(quote_meta(NULL, line + compl_col,
+! compl_length) + 3);
+ if (compl_pattern == NULL)
+ return FAIL;
+ STRCPY((char *)compl_pattern, "\\<");
+--- 4884,4890 ----
+ else
+ {
+ compl_pattern = alloc(quote_meta(NULL, line + compl_col,
+! compl_length) + 2);
+ if (compl_pattern == NULL)
+ return FAIL;
+ STRCPY((char *)compl_pattern, "\\<");
+***************
+*** 4963,4969 ****
+ if (col < 0)
+ col = curs_col;
+ compl_col = col;
+! if ((colnr_T)compl_col > curs_col)
+ compl_col = curs_col;
+
+ /* Setup variables for completion. Need to obtain "line" again,
+--- 4966,4972 ----
+ if (col < 0)
+ col = curs_col;
+ compl_col = col;
+! if (compl_col > curs_col)
+ compl_col = curs_col;
+
+ /* Setup variables for completion. Need to obtain "line" again,
+***************
+*** 5236,5250 ****
+ * a backslash) the metachars, and dest would be NUL terminated.
+ * Returns the length (needed) of dest
+ */
+! static int
+ quote_meta(dest, src, len)
+ char_u *dest;
+ char_u *src;
+ int len;
+ {
+! int m;
+
+! for (m = len; --len >= 0; src++)
+ {
+ switch (*src)
+ {
+--- 5239,5253 ----
+ * a backslash) the metachars, and dest would be NUL terminated.
+ * Returns the length (needed) of dest
+ */
+! static unsigned
+ quote_meta(dest, src, len)
+ char_u *dest;
+ char_u *src;
+ int len;
+ {
+! unsigned m = (unsigned)len + 1; /* one extra for the NUL */
+
+! for ( ; --len >= 0; src++)
+ {
+ switch (*src)
+ {
+***************
+*** 6073,6079 ****
+ * in 'formatoptions' and there is a single character before the cursor.
+ * Otherwise the line would be broken and when typing another non-white
+ * next they are not joined back together. */
+! wasatend = (pos.col == STRLEN(old));
+ if (*old != NUL && !trailblank && wasatend)
+ {
+ dec_cursor();
+--- 6076,6082 ----
+ * in 'formatoptions' and there is a single character before the cursor.
+ * Otherwise the line would be broken and when typing another non-white
+ * next they are not joined back together. */
+! wasatend = (pos.col == (colnr_T)STRLEN(old));
+ if (*old != NUL && !trailblank && wasatend)
+ {
+ dec_cursor();
+***************
+*** 6250,6256 ****
+ * three digits. */
+ if (VIM_ISDIGIT(c))
+ {
+! sprintf((char *)buf, "%03d", c);
+ AppendToRedobuff(buf);
+ }
+ else
+--- 6253,6259 ----
+ * three digits. */
+ if (VIM_ISDIGIT(c))
+ {
+! vim_snprintf((char *)buf, sizeof(buf), "%03d", c);
+ AppendToRedobuff(buf);
+ }
+ else
+***************
+*** 6453,6462 ****
+ * deleted characters. */
+ if (VIsual_active && VIsual.lnum == curwin->w_cursor.lnum)
+ {
+! cc = (int)STRLEN(ml_get_curline());
+! if (VIsual.col > (colnr_T)cc)
+ {
+! VIsual.col = cc;
+ # ifdef FEAT_VIRTUALEDIT
+ VIsual.coladd = 0;
+ # endif
+--- 6457,6467 ----
+ * deleted characters. */
+ if (VIsual_active && VIsual.lnum == curwin->w_cursor.lnum)
+ {
+! int len = (int)STRLEN(ml_get_curline());
+!
+! if (VIsual.col > len)
+ {
+! VIsual.col = len;
+ # ifdef FEAT_VIRTUALEDIT
+ VIsual.coladd = 0;
+ # endif
+***************
+*** 8315,8320 ****
+--- 8320,8326 ----
+ linenr_T lnum;
+ int cc;
+ int temp = 0; /* init for GCC */
++ colnr_T save_col;
+ colnr_T mincol;
+ int did_backspace = FALSE;
+ int in_indent;
+***************
+*** 8472,8484 ****
+ */
+ while (cc > 0)
+ {
+! temp = curwin->w_cursor.col;
+ #ifdef FEAT_MBYTE
+ mb_replace_pop_ins(cc);
+ #else
+ ins_char(cc);
+ #endif
+! curwin->w_cursor.col = temp;
+ cc = replace_pop();
+ }
+ /* restore the characters that NL replaced */
+--- 8478,8490 ----
+ */
+ while (cc > 0)
+ {
+! save_col = curwin->w_cursor.col;
+ #ifdef FEAT_MBYTE
+ mb_replace_pop_ins(cc);
+ #else
+ ins_char(cc);
+ #endif
+! curwin->w_cursor.col = save_col;
+ cc = replace_pop();
+ }
+ /* restore the characters that NL replaced */
+***************
+*** 8510,8520 ****
+ #endif
+ )
+ {
+! temp = curwin->w_cursor.col;
+ beginline(BL_WHITE);
+ if (curwin->w_cursor.col < (colnr_T)temp)
+ mincol = curwin->w_cursor.col;
+! curwin->w_cursor.col = temp;
+ }
+
+ /*
+--- 8516,8526 ----
+ #endif
+ )
+ {
+! save_col = curwin->w_cursor.col;
+ beginline(BL_WHITE);
+ if (curwin->w_cursor.col < (colnr_T)temp)
+ mincol = curwin->w_cursor.col;
+! curwin->w_cursor.col = save_col;
+ }
+
+ /*
+*** ../vim-7.2.168/src/ex_cmds.c 2009-05-13 12:46:36.000000000 +0200
+--- src/ex_cmds.c 2009-05-13 18:24:18.000000000 +0200
+***************
+*** 87,99 ****
+ ))
+ {
+ transchar_nonprint(buf3, c);
+! sprintf(buf1, " <%s>", (char *)buf3);
+ }
+ else
+ buf1[0] = NUL;
+ #ifndef EBCDIC
+ if (c >= 0x80)
+! sprintf(buf2, " <M-%s>", transchar(c & 0x7f));
+ else
+ #endif
+ buf2[0] = NUL;
+--- 87,100 ----
+ ))
+ {
+ transchar_nonprint(buf3, c);
+! vim_snprintf(buf1, sizeof(buf1), " <%s>", (char *)buf3);
+ }
+ else
+ buf1[0] = NUL;
+ #ifndef EBCDIC
+ if (c >= 0x80)
+! vim_snprintf(buf2, sizeof(buf2), " <M-%s>",
+! (char *)transchar(c & 0x7f));
+ else
+ #endif
+ buf2[0] = NUL;
+***************
+*** 358,364 ****
+ linenr_T lnum;
+ long maxlen = 0;
+ sorti_T *nrs;
+! size_t count = eap->line2 - eap->line1 + 1;
+ size_t i;
+ char_u *p;
+ char_u *s;
+--- 359,365 ----
+ linenr_T lnum;
+ long maxlen = 0;
+ sorti_T *nrs;
+! size_t count = (size_t)(eap->line2 - eap->line1 + 1);
+ size_t i;
+ char_u *p;
+ char_u *s;
+***************
+*** 957,963 ****
+ }
+ len += (int)STRLEN(prevcmd);
+ }
+! if ((t = alloc(len)) == NULL)
+ {
+ vim_free(newcmd);
+ return;
+--- 958,964 ----
+ }
+ len += (int)STRLEN(prevcmd);
+ }
+! if ((t = alloc((unsigned)len)) == NULL)
+ {
+ vim_free(newcmd);
+ return;
+***************
+*** 1548,1554 ****
+ * redirecting input and/or output.
+ */
+ if (itmp != NULL || otmp != NULL)
+! sprintf((char *)buf, "(%s)", (char *)cmd);
+ else
+ STRCPY(buf, cmd);
+ if (itmp != NULL)
+--- 1549,1555 ----
+ * redirecting input and/or output.
+ */
+ if (itmp != NULL || otmp != NULL)
+! vim_snprintf((char *)buf, len, "(%s)", (char *)cmd);
+ else
+ STRCPY(buf, cmd);
+ if (itmp != NULL)
+***************
+*** 1597,1633 ****
+ }
+ #endif
+ if (otmp != NULL)
+! append_redir(buf, p_srr, otmp);
+
+ return buf;
+ }
+
+ /*
+! * Append output redirection for file "fname" to the end of string buffer "buf"
+ * Works with the 'shellredir' and 'shellpipe' options.
+ * The caller should make sure that there is enough room:
+ * STRLEN(opt) + STRLEN(fname) + 3
+ */
+ void
+! append_redir(buf, opt, fname)
+ char_u *buf;
+ char_u *opt;
+ char_u *fname;
+ {
+ char_u *p;
+
+! buf += STRLEN(buf);
+ /* find "%s", skipping "%%" */
+ for (p = opt; (p = vim_strchr(p, '%')) != NULL; ++p)
+ if (p[1] == 's')
+ break;
+ if (p != NULL)
+ {
+! *buf = ' '; /* not really needed? Not with sh, ksh or bash */
+! sprintf((char *)buf + 1, (char *)opt, (char *)fname);
+ }
+ else
+! sprintf((char *)buf,
+ #ifdef FEAT_QUICKFIX
+ # ifndef RISCOS
+ opt != p_sp ? " %s%s" :
+--- 1598,1638 ----
+ }
+ #endif
+ if (otmp != NULL)
+! append_redir(buf, (int)len, p_srr, otmp);
+
+ return buf;
+ }
+
+ /*
+! * Append output redirection for file "fname" to the end of string buffer
+! * "buf[buflen]"
+ * Works with the 'shellredir' and 'shellpipe' options.
+ * The caller should make sure that there is enough room:
+ * STRLEN(opt) + STRLEN(fname) + 3
+ */
+ void
+! append_redir(buf, buflen, opt, fname)
+ char_u *buf;
++ int buflen;
+ char_u *opt;
+ char_u *fname;
+ {
+ char_u *p;
++ char_u *end;
+
+! end = buf + STRLEN(buf);
+ /* find "%s", skipping "%%" */
+ for (p = opt; (p = vim_strchr(p, '%')) != NULL; ++p)
+ if (p[1] == 's')
+ break;
+ if (p != NULL)
+ {
+! *end = ' '; /* not really needed? Not with sh, ksh or bash */
+! vim_snprintf((char *)end + 1, (size_t)(buflen - (end + 1 - buf)),
+! (char *)opt, (char *)fname);
+ }
+ else
+! vim_snprintf((char *)end, (size_t)(buflen - (end - buf)),
+ #ifdef FEAT_QUICKFIX
+ # ifndef RISCOS
+ opt != p_sp ? " %s%s" :
+***************
+*** 2390,2396 ****
+
+ if (curwin->w_p_nu || use_number)
+ {
+! sprintf((char *)numbuf, "%*ld ", number_width(curwin), (long)lnum);
+ msg_puts_attr(numbuf, hl_attr(HLF_N)); /* Highlight line nrs */
+ }
+ msg_prt_line(ml_get(lnum), list);
+--- 2395,2402 ----
+
+ if (curwin->w_p_nu || use_number)
+ {
+! vim_snprintf((char *)numbuf, sizeof(numbuf),
+! "%*ld ", number_width(curwin), (long)lnum);
+ msg_puts_attr(numbuf, hl_attr(HLF_N)); /* Highlight line nrs */
+ }
+ msg_prt_line(ml_get(lnum), list);
+***************
+*** 4486,4492 ****
+ char_u *p1;
+ int did_sub = FALSE;
+ int lastone;
+! unsigned len, needed_len;
+ long nmatch_tl = 0; /* nr of lines matched below lnum */
+ int do_again; /* do it again after joining lines */
+ int skip_match = FALSE;
+--- 4492,4498 ----
+ char_u *p1;
+ int did_sub = FALSE;
+ int lastone;
+! int len, copy_len, needed_len;
+ long nmatch_tl = 0; /* nr of lines matched below lnum */
+ int do_again; /* do it again after joining lines */
+ int skip_match = FALSE;
+***************
+*** 4631,4636 ****
+--- 4637,4644 ----
+
+ if (do_ask)
+ {
++ int typed;
++
+ /* change State to CONFIRM, so that the mouse works
+ * properly */
+ save_State = State;
+***************
+*** 4669,4675 ****
+ resp = getexmodeline('?', NULL, 0);
+ if (resp != NULL)
+ {
+! i = *resp;
+ vim_free(resp);
+ }
+ }
+--- 4677,4683 ----
+ resp = getexmodeline('?', NULL, 0);
+ if (resp != NULL)
+ {
+! typed = *resp;
+ vim_free(resp);
+ }
+ }
+***************
+*** 4721,4727 ****
+ #endif
+ ++no_mapping; /* don't map this key */
+ ++allow_keys; /* allow special keys */
+! i = plain_vgetc();
+ --allow_keys;
+ --no_mapping;
+
+--- 4729,4735 ----
+ #endif
+ ++no_mapping; /* don't map this key */
+ ++allow_keys; /* allow special keys */
+! typed = plain_vgetc();
+ --allow_keys;
+ --no_mapping;
+
+***************
+*** 4732,4766 ****
+ }
+
+ need_wait_return = FALSE; /* no hit-return prompt */
+! if (i == 'q' || i == ESC || i == Ctrl_C
+ #ifdef UNIX
+! || i == intr_char
+ #endif
+ )
+ {
+ got_quit = TRUE;
+ break;
+ }
+! if (i == 'n')
+ break;
+! if (i == 'y')
+ break;
+! if (i == 'l')
+ {
+ /* last: replace and then stop */
+ do_all = FALSE;
+ line2 = lnum;
+ break;
+ }
+! if (i == 'a')
+ {
+ do_ask = FALSE;
+ break;
+ }
+ #ifdef FEAT_INS_EXPAND
+! if (i == Ctrl_E)
+ scrollup_clamp();
+! else if (i == Ctrl_Y)
+ scrolldown_clamp();
+ #endif
+ }
+--- 4740,4774 ----
+ }
+
+ need_wait_return = FALSE; /* no hit-return prompt */
+! if (typed == 'q' || typed == ESC || typed == Ctrl_C
+ #ifdef UNIX
+! || typed == intr_char
+ #endif
+ )
+ {
+ got_quit = TRUE;
+ break;
+ }
+! if (typed == 'n')
+ break;
+! if (typed == 'y')
+ break;
+! if (typed == 'l')
+ {
+ /* last: replace and then stop */
+ do_all = FALSE;
+ line2 = lnum;
+ break;
+ }
+! if (typed == 'a')
+ {
+ do_ask = FALSE;
+ break;
+ }
+ #ifdef FEAT_INS_EXPAND
+! if (typed == Ctrl_E)
+ scrollup_clamp();
+! else if (typed == Ctrl_Y)
+ scrolldown_clamp();
+ #endif
+ }
+***************
+*** 4771,4777 ****
+ if (vim_strchr(p_cpo, CPO_UNDO) != NULL)
+ --no_u_sync;
+
+! if (i == 'n')
+ {
+ /* For a multi-line match, put matchcol at the NUL at
+ * the end of the line and set nmatch to one, so that
+--- 4779,4785 ----
+ if (vim_strchr(p_cpo, CPO_UNDO) != NULL)
+ --no_u_sync;
+
+! if (typed == 'n')
+ {
+ /* For a multi-line match, put matchcol at the NUL at
+ * the end of the line and set nmatch to one, so that
+***************
+*** 4822,4830 ****
+ p1 = ml_get(sub_firstlnum + nmatch - 1);
+ nmatch_tl += nmatch - 1;
+ }
+! i = regmatch.startpos[0].col - copycol;
+! needed_len = i + ((unsigned)STRLEN(p1) - regmatch.endpos[0].col)
+! + sublen + 1;
+ if (new_start == NULL)
+ {
+ /*
+--- 4830,4838 ----
+ p1 = ml_get(sub_firstlnum + nmatch - 1);
+ nmatch_tl += nmatch - 1;
+ }
+! copy_len = regmatch.startpos[0].col - copycol;
+! needed_len = copy_len + ((unsigned)STRLEN(p1)
+! - regmatch.endpos[0].col) + sublen + 1;
+ if (new_start == NULL)
+ {
+ /*
+***************
+*** 4847,4853 ****
+ */
+ len = (unsigned)STRLEN(new_start);
+ needed_len += len;
+! if (needed_len > new_start_len)
+ {
+ new_start_len = needed_len + 50;
+ if ((p1 = alloc_check(new_start_len)) == NULL)
+--- 4855,4861 ----
+ */
+ len = (unsigned)STRLEN(new_start);
+ needed_len += len;
+! if (needed_len > (int)new_start_len)
+ {
+ new_start_len = needed_len + 50;
+ if ((p1 = alloc_check(new_start_len)) == NULL)
+***************
+*** 4865,4872 ****
+ /*
+ * copy the text up to the part that matched
+ */
+! mch_memmove(new_end, sub_firstline + copycol, (size_t)i);
+! new_end += i;
+
+ (void)vim_regsub_multi(&regmatch,
+ sub_firstlnum - regmatch.startpos[0].lnum,
+--- 4873,4880 ----
+ /*
+ * copy the text up to the part that matched
+ */
+! mch_memmove(new_end, sub_firstline + copycol, (size_t)copy_len);
+! new_end += copy_len;
+
+ (void)vim_regsub_multi(&regmatch,
+ sub_firstlnum - regmatch.startpos[0].lnum,
+***************
+*** 5768,5773 ****
+--- 5776,5785 ----
+ {
+ char_u *s, *d;
+ int i;
++ #ifdef S_SPLINT_S /* splint doesn't understand array of pointers */
++ static char **mtable;
++ static char **rtable;
++ #else
+ static char *(mtable[]) = {"*", "g*", "[*", "]*", ":*",
+ "/*", "/\\*", "\"*", "**",
+ "/\\(\\)",
+***************
+*** 5782,5787 ****
+--- 5794,5800 ----
+ "/\\\\?", "/\\\\z(\\\\)", "\\\\=", ":s\\\\=",
+ "\\[count]", "\\[quotex]", "\\[range]",
+ "\\[pattern]", "\\\\bar", "/\\\\%\\$"};
++ #endif
+ int flags;
+
+ d = IObuff; /* assume IObuff is long enough! */
+***************
+*** 5790,5796 ****
+ * Recognize a few exceptions to the rule. Some strings that contain '*'
+ * with "star". Otherwise '*' is recognized as a wildcard.
+ */
+! for (i = sizeof(mtable) / sizeof(char *); --i >= 0; )
+ if (STRCMP(arg, mtable[i]) == 0)
+ {
+ STRCPY(d, rtable[i]);
+--- 5803,5809 ----
+ * Recognize a few exceptions to the rule. Some strings that contain '*'
+ * with "star". Otherwise '*' is recognized as a wildcard.
+ */
+! for (i = (int)(sizeof(mtable) / sizeof(char *)); --i >= 0; )
+ if (STRCMP(arg, mtable[i]) == 0)
+ {
+ STRCPY(d, rtable[i]);
+*** ../vim-7.2.168/src/ex_cmds2.c 2009-02-05 20:47:14.000000000 +0100
+--- src/ex_cmds2.c 2009-05-13 16:22:33.000000000 +0200
+***************
+*** 3373,3379 ****
+ p = skipwhite(sp->nextline);
+ if (*p != '\\')
+ break;
+! s = alloc((int)(STRLEN(line) + STRLEN(p)));
+ if (s == NULL) /* out of memory */
+ break;
+ STRCPY(s, line);
+--- 3373,3379 ----
+ p = skipwhite(sp->nextline);
+ if (*p != '\\')
+ break;
+! s = alloc((unsigned)(STRLEN(line) + STRLEN(p)));
+ if (s == NULL) /* out of memory */
+ break;
+ STRCPY(s, line);
+*** ../vim-7.2.168/src/ex_docmd.c 2009-04-29 18:44:38.000000000 +0200
+--- src/ex_docmd.c 2009-05-13 17:56:44.000000000 +0200
+***************
+*** 2737,2743 ****
+ int i;
+
+ for (i = 0; cmd[i] != NUL; ++i)
+! if (cmd[i] != (*pp)[i])
+ break;
+ if (i >= len && !isalpha((*pp)[i]))
+ {
+--- 2737,2743 ----
+ int i;
+
+ for (i = 0; cmd[i] != NUL; ++i)
+! if (((char_u *)cmd)[i] != (*pp)[i])
+ break;
+ if (i >= len && !isalpha((*pp)[i]))
+ {
+***************
+*** 2803,2809 ****
+ /* Check for ":dl", ":dell", etc. to ":deletel": that's
+ * :delete with the 'l' flag. Same for 'p'. */
+ for (i = 0; i < len; ++i)
+! if (eap->cmd[i] != "delete"[i])
+ break;
+ if (i == len - 1)
+ {
+--- 2803,2809 ----
+ /* Check for ":dl", ":dell", etc. to ":deletel": that's
+ * :delete with the 'l' flag. Same for 'p'. */
+ for (i = 0; i < len; ++i)
+! if (eap->cmd[i] != ((char_u *)"delete")[i])
+ break;
+ if (i == len - 1)
+ {
+***************
+*** 3823,3829 ****
+ char_u *cmd;
+ int *ctx; /* pointer to xp_context or NULL */
+ {
+! int delim;
+
+ while (vim_strchr((char_u *)" \t0123456789.$%'/?-+,;", *cmd) != NULL)
+ {
+--- 3823,3829 ----
+ char_u *cmd;
+ int *ctx; /* pointer to xp_context or NULL */
+ {
+! unsigned delim;
+
+ while (vim_strchr((char_u *)" \t0123456789.$%'/?-+,;", *cmd) != NULL)
+ {
+***************
+*** 9417,9423 ****
+ {
+ int len;
+ int i;
+! static char *(spec_str[]) = {
+ "%",
+ #define SPEC_PERC 0
+ "#",
+--- 9417,9429 ----
+ {
+ int len;
+ int i;
+! #ifdef S_SPLINT_S /* splint can't handle array of pointers */
+! static char **spec_str;
+! static char *(nospec_str[])
+! #else
+! static char *(spec_str[])
+! #endif
+! = {
+ "%",
+ #define SPEC_PERC 0
+ "#",
+***************
+*** 9443,9451 ****
+ # define SPEC_CLIENT 9
+ #endif
+ };
+- #define SPEC_COUNT (sizeof(spec_str) / sizeof(char *))
+
+! for (i = 0; i < SPEC_COUNT; ++i)
+ {
+ len = (int)STRLEN(spec_str[i]);
+ if (STRNCMP(src, spec_str[i], len) == 0)
+--- 9449,9456 ----
+ # define SPEC_CLIENT 9
+ #endif
+ };
+
+! for (i = 0; i < (int)(sizeof(spec_str) / sizeof(char *)); ++i)
+ {
+ len = (int)STRLEN(spec_str[i]);
+ if (STRNCMP(src, spec_str[i], len) == 0)
+***************
+*** 9796,9802 ****
+ }
+
+ /* allocate memory */
+! retval = alloc(len + 1);
+ if (retval == NULL)
+ break;
+ }
+--- 9801,9807 ----
+ }
+
+ /* allocate memory */
+! retval = alloc((unsigned)len + 1);
+ if (retval == NULL)
+ break;
+ }
+*** ../vim-7.2.168/src/proto/ex_cmds.pro 2009-04-29 18:44:38.000000000 +0200
+--- src/proto/ex_cmds.pro 2009-05-13 15:53:39.000000000 +0200
+***************
+*** 9,15 ****
+ void do_bang __ARGS((int addr_count, exarg_T *eap, int forceit, int do_in, int do_out));
+ void do_shell __ARGS((char_u *cmd, int flags));
+ char_u *make_filter_cmd __ARGS((char_u *cmd, char_u *itmp, char_u *otmp));
+! void append_redir __ARGS((char_u *buf, char_u *opt, char_u *fname));
+ int viminfo_error __ARGS((char *errnum, char *message, char_u *line));
+ int read_viminfo __ARGS((char_u *file, int flags));
+ void write_viminfo __ARGS((char_u *file, int forceit));
+--- 9,15 ----
+ void do_bang __ARGS((int addr_count, exarg_T *eap, int forceit, int do_in, int do_out));
+ void do_shell __ARGS((char_u *cmd, int flags));
+ char_u *make_filter_cmd __ARGS((char_u *cmd, char_u *itmp, char_u *otmp));
+! void append_redir __ARGS((char_u *buf, int buflen, char_u *opt, char_u *fname));
+ int viminfo_error __ARGS((char *errnum, char *message, char_u *line));
+ int read_viminfo __ARGS((char_u *file, int flags));
+ void write_viminfo __ARGS((char_u *file, int forceit));
+*** ../vim-7.2.168/src/proto/spell.pro 2007-05-05 19:19:19.000000000 +0200
+--- src/proto/spell.pro 2009-05-13 16:43:13.000000000 +0200
+***************
+*** 22,26 ****
+ char_u *spell_to_word_end __ARGS((char_u *start, buf_T *buf));
+ int spell_word_start __ARGS((int startcol));
+ void spell_expand_check_cap __ARGS((colnr_T col));
+! int expand_spelling __ARGS((linenr_T lnum, int col, char_u *pat, char_u ***matchp));
+ /* vim: set ft=c : */
+--- 22,26 ----
+ char_u *spell_to_word_end __ARGS((char_u *start, buf_T *buf));
+ int spell_word_start __ARGS((int startcol));
+ void spell_expand_check_cap __ARGS((colnr_T col));
+! int expand_spelling __ARGS((linenr_T lnum, char_u *pat, char_u ***matchp));
+ /* vim: set ft=c : */
+*** ../vim-7.2.168/src/quickfix.c 2009-04-29 11:49:57.000000000 +0200
+--- src/quickfix.c 2009-05-13 15:53:18.000000000 +0200
+***************
+*** 2774,2780 ****
+ sprintf((char *)cmd, "%s%s%s", (char *)p_shq, (char *)eap->arg,
+ (char *)p_shq);
+ if (*p_sp != NUL)
+! append_redir(cmd, p_sp, fname);
+ /*
+ * Output a newline if there's something else than the :make command that
+ * was typed (in which case the cursor is in column 0).
+--- 2774,2780 ----
+ sprintf((char *)cmd, "%s%s%s", (char *)p_shq, (char *)eap->arg,
+ (char *)p_shq);
+ if (*p_sp != NUL)
+! append_redir(cmd, len, p_sp, fname);
+ /*
+ * Output a newline if there's something else than the :make command that
+ * was typed (in which case the cursor is in column 0).
+*** ../vim-7.2.168/src/spell.c 2009-02-11 17:57:43.000000000 +0100
+--- src/spell.c 2009-05-13 16:31:15.000000000 +0200
+***************
+*** 16151,16161 ****
+ * Returns the number of matches. The matches are in "matchp[]", array of
+ * allocated strings.
+ */
+- /*ARGSUSED*/
+ int
+! expand_spelling(lnum, col, pat, matchp)
+ linenr_T lnum;
+- int col;
+ char_u *pat;
+ char_u ***matchp;
+ {
+--- 16151,16159 ----
+ * Returns the number of matches. The matches are in "matchp[]", array of
+ * allocated strings.
+ */
+ int
+! expand_spelling(lnum, pat, matchp)
+ linenr_T lnum;
+ char_u *pat;
+ char_u ***matchp;
+ {
+*** ../vim-7.2.168/src/structs.h 2009-05-13 12:46:36.000000000 +0200
+--- src/structs.h 2009-05-13 16:45:51.000000000 +0200
+***************
+*** 16,22 ****
+ */
+ #if defined(SASC) && SASC < 658
+ typedef long linenr_T;
+! typedef unsigned colnr_T;
+ typedef unsigned short short_u;
+ #endif
+
+--- 16,22 ----
+ */
+ #if defined(SASC) && SASC < 658
+ typedef long linenr_T;
+! typedef int colnr_T;
+ typedef unsigned short short_u;
+ #endif
+
+*** ../vim-7.2.168/src/term.h 2005-03-16 10:53:56.000000000 +0100
+--- src/term.h 2009-05-13 17:27:41.000000000 +0200
+***************
+*** 96,102 ****
+--- 96,106 ----
+ * - there should be code in term.c to obtain the value from the termcap
+ */
+
++ #ifdef S_SPLINT_S /* splint doesn't understand array of pointers */
++ extern char_u **term_strings; /* current terminal strings */
++ #else
+ extern char_u *(term_strings[]); /* current terminal strings */
++ #endif
+
+ /*
+ * strings used for terminal
+*** ../vim-7.2.168/src/vim.h 2009-04-29 18:44:38.000000000 +0200
+--- src/vim.h 2009-05-13 16:45:39.000000000 +0200
+***************
+*** 1460,1467 ****
+ # define PERROR(msg) perror(msg)
+ #endif
+
+! typedef long linenr_T; /* line number type */
+! typedef unsigned colnr_T; /* column number type */
+ typedef unsigned short disptick_T; /* display tick type */
+
+ #define MAXLNUM (0x7fffffffL) /* maximum (invalid) line number */
+--- 1460,1467 ----
+ # define PERROR(msg) perror(msg)
+ #endif
+
+! typedef long linenr_T; /* line number type */
+! typedef int colnr_T; /* column number type */
+ typedef unsigned short disptick_T; /* display tick type */
+
+ #define MAXLNUM (0x7fffffffL) /* maximum (invalid) line number */
+*** ../vim-7.2.168/src/version.c 2009-05-13 14:48:55.000000000 +0200
+--- src/version.c 2009-05-13 18:44:28.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 169,
+ /**/
+
+--
+Females are strictly forbidden to appear unshaven in public.
+ [real standing law in New Mexico, United States of America]
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///