To: vim-dev@vim.org Subject: Patch 7.2.167 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 7.2.167 Problem: Splint doesn't work well for checking the code. Solution: Add splint arguments in the Makefile. Exclude some code from splint that it can't handle. Tune splint arguments to give reasonable errors. Add a filter for removing false warnings from splint output. Many small changes to avoid warnings. More to follow... Files: Filelist, src/Makefile, src/buffer.c, src/charset.c, src/cleanlint.vim, src/digraph.c, src/edit.c, src/ex_cmds.c, src/globals.h, src/ops.c, src/os_unix.c, src/os_unix.h, src/proto/buffer.pro, src/proto/edit.pro, src/screen.c, src/structs.h *** ../vim-7.2.166/Filelist 2008-09-20 16:26:10.000000000 +0200 --- Filelist 2009-05-05 21:45:49.000000000 +0200 *************** *** 139,144 **** --- 139,145 ---- src/INSTALL \ src/INSTALLx.txt \ src/Makefile \ + src/cleanlint.vim \ src/auto/configure \ src/config.aap.in \ src/config.h.in \ *************** *** 683,691 **** runtime/spell/??/main.aap \ runtime/spell/yi/README.txt \ runtime/spell/main.aap \ - runtime/spell/cleanadd.vim \ runtime/spell/*.vim \ - runtime/spell/fixdup \ # generic language files, binary LANG_GEN_BIN = \ --- 684,690 ---- *** ../vim-7.2.166/src/Makefile 2009-04-29 18:44:45.000000000 +0200 --- src/Makefile 2009-05-06 00:23:15.000000000 +0200 *************** *** 551,557 **** # }}} # LINT - for running lint ! LINT_OPTIONS = -beprxzF # PROFILING - Uncomment the next two lines to do profiling with gcc and gprof. # Might not work with GUI or Perl. --- 551,562 ---- # }}} # LINT - for running lint ! # For standard lint ! #LINT = lint ! #LINT_OPTIONS = -beprxzF ! # For splint (see cleanlint.vim for filtering the output) ! LINT = splint ! LINT_OPTIONS = +unixlib -weak -macrovarprefixexclude -showfunc -linelen 9999 # PROFILING - Uncomment the next two lines to do profiling with gcc and gprof. # Might not work with GUI or Perl. *************** *** 1259,1274 **** # This is for cproto 3 patchlevel 8 or below # __inline, __attribute__ and __extension__ are not recognized by cproto # G_IMPLEMENT_INLINES is to avoid functions defined in glib/gutils.h. ! NO_ATTR = -D__inline= -D__inline__= -DG_IMPLEMENT_INLINES \ ! -D"__attribute__\\(x\\)=" -D"__asm__\\(x\\)=" \ ! -D__extension__= -D__restrict="" \ ! -D__gnuc_va_list=char -D__builtin_va_list=char # ! # This is for cproto 3 patchlevel 9 or above (currently 4.6) # __inline and __attribute__ are now recognized by cproto # -D"foo()=" is not supported by all compilers so do not use it ! # NO_ATTR= # # maybe the "/usr/bin/cc -E" has to be adjusted for some systems # This is for cproto 3.5 patchlevel 3: --- 1264,1279 ---- # This is for cproto 3 patchlevel 8 or below # __inline, __attribute__ and __extension__ are not recognized by cproto # G_IMPLEMENT_INLINES is to avoid functions defined in glib/gutils.h. ! #NO_ATTR = -D__inline= -D__inline__= -DG_IMPLEMENT_INLINES \ ! # -D"__attribute__\\(x\\)=" -D"__asm__\\(x\\)=" \ ! # -D__extension__= -D__restrict="" \ ! # -D__gnuc_va_list=char -D__builtin_va_list=char # ! # This is for cproto 3 patchlevel 9 or above (currently 4.6, 4.7g) # __inline and __attribute__ are now recognized by cproto # -D"foo()=" is not supported by all compilers so do not use it ! NO_ATTR= # # maybe the "/usr/bin/cc -E" has to be adjusted for some systems # This is for cproto 3.5 patchlevel 3: *************** *** 1432,1437 **** --- 1437,1443 ---- $(SNIFF_SRC) $(WORKSHOP_SRC) $(WSDEBUG_SRC) $(NETBEANS_SRC) #LINT_SRC = $(SRC) #LINT_SRC = $(ALL_SRC) + #LINT_SRC = $(BASIC_SRC) OBJ = \ objects/buffer.o \ *************** *** 2272,2283 **** # Run lint. Clean up the *.ln files that are sometimes left behind. lint: ! lint $(LINT_OPTIONS) $(LINT_CFLAGS) $(LINT_EXTRA) $(LINT_SRC) -rm -f *.ln # Check dosinst.c with lint. lintinstall: ! lint $(LINT_OPTIONS) -DWIN32 -DUNIX_LINT dosinst.c -rm -f dosinst.ln ########################################################################### --- 2279,2290 ---- # Run lint. Clean up the *.ln files that are sometimes left behind. lint: ! $(LINT) $(LINT_OPTIONS) $(LINT_CFLAGS) $(LINT_EXTRA) $(LINT_SRC) -rm -f *.ln # Check dosinst.c with lint. lintinstall: ! $(LINT) $(LINT_OPTIONS) -DWIN32 -DUNIX_LINT dosinst.c -rm -f dosinst.ln ########################################################################### *** ../vim-7.2.166/src/buffer.c 2009-02-22 00:01:42.000000000 +0100 --- src/buffer.c 2009-05-13 12:25:29.000000000 +0200 *************** *** 44,49 **** --- 44,50 ---- #ifdef FEAT_TITLE static int ti_change __ARGS((char_u *str, char_u **last)); #endif + static int append_arg_number __ARGS((win_T *wp, char_u *buf, int buflen, int add_file)); static void free_buffer __ARGS((buf_T *)); static void free_buffer_stuff __ARGS((buf_T *buf, int free_options)); static void clear_wininfo __ARGS((buf_T *buf)); *************** *** 1453,1465 **** #ifdef FEAT_KEYMAP if (curbuf->b_kmap_state & KEYMAP_INIT) ! keymap_init(); #endif #ifdef FEAT_SPELL /* May need to set the spell language. Can only do this after the buffer * has been properly setup. */ if (!curbuf->b_help && curwin->w_p_spell && *curbuf->b_p_spl != NUL) ! did_set_spelllang(curbuf); #endif redraw_later(NOT_VALID); --- 1454,1466 ---- #ifdef FEAT_KEYMAP if (curbuf->b_kmap_state & KEYMAP_INIT) ! (void)keymap_init(); #endif #ifdef FEAT_SPELL /* May need to set the spell language. Can only do this after the buffer * has been properly setup. */ if (!curbuf->b_help && curwin->w_p_spell && *curbuf->b_p_spl != NUL) ! (void)did_set_spelllang(curbuf); #endif redraw_later(NOT_VALID); *************** *** 2516,2522 **** buf_T *buf; { wininfo_T *wip; ! static pos_T no_position = {1, 0}; wip = find_wininfo(buf, FALSE); if (wip != NULL) --- 2517,2523 ---- buf_T *buf; { wininfo_T *wip; ! static pos_T no_position = INIT_POS_T(1, 0, 0); wip = find_wininfo(buf, FALSE); if (wip != NULL) *************** *** 2577,2584 **** { IObuff[len++] = ' '; } while (--i > 0 && len < IOSIZE - 18); ! vim_snprintf((char *)IObuff + len, IOSIZE - len, _("line %ld"), ! buf == curbuf ? curwin->w_cursor.lnum : (long)buflist_findlnum(buf)); msg_outtrans(IObuff); out_flush(); /* output one line at a time */ --- 2578,2585 ---- { IObuff[len++] = ' '; } while (--i > 0 && len < IOSIZE - 18); ! vim_snprintf((char *)IObuff + len, (size_t)(IOSIZE - len), ! _("line %ld"), buf == curbuf ? curwin->w_cursor.lnum : (long)buflist_findlnum(buf)); msg_outtrans(IObuff); out_flush(); /* output one line at a time */ *************** *** 2967,2973 **** if (fullname > 1) /* 2 CTRL-G: include buffer number */ { ! sprintf((char *)buffer, "buf %d: ", curbuf->b_fnum); p = buffer + STRLEN(buffer); } else --- 2968,2974 ---- if (fullname > 1) /* 2 CTRL-G: include buffer number */ { ! vim_snprintf((char *)buffer, IOSIZE, "buf %d: ", curbuf->b_fnum); p = buffer + STRLEN(buffer); } else *************** *** 3041,3051 **** (long)curbuf->b_ml.ml_line_count, n); validate_virtcol(); ! col_print(buffer + STRLEN(buffer), (int)curwin->w_cursor.col + 1, (int)curwin->w_virtcol + 1); } ! (void)append_arg_number(curwin, buffer, !shortmess(SHM_FILE), IOSIZE); if (dont_truncate) { --- 3042,3053 ---- (long)curbuf->b_ml.ml_line_count, n); validate_virtcol(); ! len = STRLEN(buffer); ! col_print(buffer + len, IOSIZE - len, (int)curwin->w_cursor.col + 1, (int)curwin->w_virtcol + 1); } ! (void)append_arg_number(curwin, buffer, IOSIZE, !shortmess(SHM_FILE)); if (dont_truncate) { *************** *** 3073,3087 **** } void ! col_print(buf, col, vcol) char_u *buf; int col; int vcol; { if (col == vcol) ! sprintf((char *)buf, "%d", col); else ! sprintf((char *)buf, "%d-%d", col, vcol); } #if defined(FEAT_TITLE) || defined(PROTO) --- 3075,3090 ---- } void ! col_print(buf, buflen, col, vcol) char_u *buf; + size_t buflen; int col; int vcol; { if (col == vcol) ! vim_snprintf((char *)buf, buflen, "%d", col); else ! vim_snprintf((char *)buf, buflen, "%d-%d", col, vcol); } #if defined(FEAT_TITLE) || defined(PROTO) *************** *** 3194,3211 **** if (p == buf + off) /* must be a help buffer */ vim_strncpy(buf + off, (char_u *)_("help"), ! IOSIZE - off - 1); else *p = NUL; /* translate unprintable chars */ p = transstr(buf + off); ! vim_strncpy(buf + off, p, IOSIZE - off - 1); vim_free(p); STRCAT(buf, ")"); } ! append_arg_number(curwin, buf, FALSE, IOSIZE); #if defined(FEAT_CLIENTSERVER) if (serverName != NULL) --- 3197,3214 ---- if (p == buf + off) /* must be a help buffer */ vim_strncpy(buf + off, (char_u *)_("help"), ! (size_t)(IOSIZE - off - 1)); else *p = NUL; /* translate unprintable chars */ p = transstr(buf + off); ! vim_strncpy(buf + off, p, (size_t)(IOSIZE - off - 1)); vim_free(p); STRCAT(buf, ")"); } ! append_arg_number(curwin, buf, IOSIZE, FALSE); #if defined(FEAT_CLIENTSERVER) if (serverName != NULL) *************** *** 3520,3526 **** n = (long)(p - t) - item[groupitem[groupdepth]].maxwid + 1; *t = '<'; ! mch_memmove(t + 1, t + n, p - (t + n)); p = p - n + 1; #ifdef FEAT_MBYTE /* Fill up space left over by half a double-wide char. */ --- 3523,3529 ---- n = (long)(p - t) - item[groupitem[groupdepth]].maxwid + 1; *t = '<'; ! mch_memmove(t + 1, t + n, (size_t)(p - (t + n))); p = p - n + 1; #ifdef FEAT_MBYTE /* Fill up space left over by half a double-wide char. */ *************** *** 3550,3556 **** else { /* fill by inserting characters */ ! mch_memmove(t + n - l, t, p - t); l = n - l; if (p + l >= out + outlen) l = (long)((out + outlen) - p - 1); --- 3553,3559 ---- else { /* fill by inserting characters */ ! mch_memmove(t + n - l, t, (size_t)(p - t)); l = n - l; if (p + l >= out + outlen) l = (long)((out + outlen) - p - 1); *************** *** 3686,3692 **** p = t; #ifdef FEAT_EVAL ! sprintf((char *)tmp, "%d", curbuf->b_fnum); set_internal_string_var((char_u *)"actual_curbuf", tmp); o_curbuf = curbuf; --- 3689,3695 ---- p = t; #ifdef FEAT_EVAL ! vim_snprintf((char *)tmp, sizeof(tmp), "%d", curbuf->b_fnum); set_internal_string_var((char_u *)"actual_curbuf", tmp); o_curbuf = curbuf; *************** *** 3753,3765 **** case STL_ALTPERCENT: str = tmp; ! get_rel_pos(wp, str); break; case STL_ARGLISTSTAT: fillable = FALSE; tmp[0] = 0; ! if (append_arg_number(wp, tmp, FALSE, (int)sizeof(tmp))) str = tmp; break; --- 3756,3768 ---- case STL_ALTPERCENT: str = tmp; ! get_rel_pos(wp, str, TMPLEN); break; case STL_ARGLISTSTAT: fillable = FALSE; tmp[0] = 0; ! if (append_arg_number(wp, tmp, (int)sizeof(tmp), FALSE)) str = tmp; break; *************** *** 3794,3800 **** case STL_BYTEVAL_X: base = 'X'; case STL_BYTEVAL: ! if (wp->w_cursor.col > STRLEN(linecont)) num = 0; else { --- 3797,3803 ---- case STL_BYTEVAL_X: base = 'X'; case STL_BYTEVAL: ! if (wp->w_cursor.col > (colnr_T)STRLEN(linecont)) num = 0; else { *************** *** 3967,3973 **** if (zeropad) *t++ = '0'; *t++ = '*'; ! *t++ = nbase == 16 ? base : (nbase == 8 ? 'o' : 'd'); *t = 0; for (n = num, l = 1; n >= nbase; n /= nbase) --- 3970,3976 ---- if (zeropad) *t++ = '0'; *t++ = '*'; ! *t++ = nbase == 16 ? base : (char_u)(nbase == 8 ? 'o' : 'd'); *t = 0; for (n = num, l = 1; n >= nbase; n /= nbase) *************** *** 4160,4172 **** #if defined(FEAT_STL_OPT) || defined(FEAT_CMDL_INFO) \ || defined(FEAT_GUI_TABLINE) || defined(PROTO) /* ! * Get relative cursor position in window into "str[]", in the form 99%, using ! * "Top", "Bot" or "All" when appropriate. */ void ! get_rel_pos(wp, str) win_T *wp; ! char_u *str; { long above; /* number of lines above window */ long below; /* number of lines below window */ --- 4163,4176 ---- #if defined(FEAT_STL_OPT) || defined(FEAT_CMDL_INFO) \ || defined(FEAT_GUI_TABLINE) || defined(PROTO) /* ! * Get relative cursor position in window into "buf[buflen]", in the form 99%, ! * using "Top", "Bot" or "All" when appropriate. */ void ! get_rel_pos(wp, buf, buflen) win_T *wp; ! char_u *buf; ! int buflen; { long above; /* number of lines above window */ long below; /* number of lines below window */ *************** *** 4177,4210 **** #endif below = wp->w_buffer->b_ml.ml_line_count - wp->w_botline + 1; if (below <= 0) ! STRCPY(str, above == 0 ? _("All") : _("Bot")); else if (above <= 0) ! STRCPY(str, _("Top")); else ! sprintf((char *)str, "%2d%%", above > 1000000L ? (int)(above / ((above + below) / 100L)) : (int)(above * 100L / (above + below))); } #endif /* ! * Append (file 2 of 8) to 'buf', if editing more than one file. * Return TRUE if it was appended. */ ! int ! append_arg_number(wp, buf, add_file, maxlen) win_T *wp; char_u *buf; int add_file; /* Add "file" before the arg number */ - int maxlen; /* maximum nr of chars in buf or zero*/ { char_u *p; if (ARGCOUNT <= 1) /* nothing to do */ return FALSE; ! p = buf + STRLEN(buf); /* go to the end of the buffer */ ! if (maxlen && p - buf + 35 >= maxlen) /* getting too long */ return FALSE; *p++ = ' '; *p++ = '('; --- 4181,4215 ---- #endif below = wp->w_buffer->b_ml.ml_line_count - wp->w_botline + 1; if (below <= 0) ! vim_strncpy(buf, (char_u *)(above == 0 ? _("All") : _("Bot")), ! (size_t)(buflen - 1)); else if (above <= 0) ! vim_strncpy(buf, (char_u *)_("Top"), (size_t)(buflen - 1)); else ! vim_snprintf((char *)buf, (size_t)buflen, "%2d%%", above > 1000000L ? (int)(above / ((above + below) / 100L)) : (int)(above * 100L / (above + below))); } #endif /* ! * Append (file 2 of 8) to "buf[buflen]", if editing more than one file. * Return TRUE if it was appended. */ ! static int ! append_arg_number(wp, buf, buflen, add_file) win_T *wp; char_u *buf; + int buflen; int add_file; /* Add "file" before the arg number */ { char_u *p; if (ARGCOUNT <= 1) /* nothing to do */ return FALSE; ! p = buf + STRLEN(buf); /* go to the end of the buffer */ ! if (p - buf + 35 >= buflen) /* getting too long */ return FALSE; *p++ = ' '; *p++ = '('; *************** *** 4213,4219 **** STRCPY(p, "file "); p += 5; } ! sprintf((char *)p, wp->w_arg_idx_invalid ? "(%d) of %d)" : "%d of %d)", wp->w_arg_idx + 1, ARGCOUNT); return TRUE; } --- 4218,4225 ---- STRCPY(p, "file "); p += 5; } ! vim_snprintf((char *)p, (size_t)(buflen - (p - buf)), ! wp->w_arg_idx_invalid ? "(%d) of %d)" : "%d of %d)", wp->w_arg_idx + 1, ARGCOUNT); return TRUE; } *************** *** 4996,5002 **** if (tab != NULL) { *tab++ = '\0'; ! col = atoi((char *)tab); tab = vim_strrchr(xline, '\t'); if (tab != NULL) { --- 5002,5008 ---- if (tab != NULL) { *tab++ = '\0'; ! col = (colnr_T)atoi((char *)tab); tab = vim_strrchr(xline, '\t'); if (tab != NULL) { *************** *** 5034,5039 **** --- 5040,5046 ---- #endif char_u *line; int max_buffers; + size_t len; if (find_viminfo_parameter('%') == NULL) return; *************** *** 5042,5048 **** max_buffers = get_viminfo_parameter('%'); /* Allocate room for the file name, lnum and col. */ ! line = alloc(MAXPATHL + 40); if (line == NULL) return; --- 5049,5056 ---- max_buffers = get_viminfo_parameter('%'); /* Allocate room for the file name, lnum and col. */ ! #define LINE_BUF_LEN (MAXPATHL + 40) ! line = alloc(LINE_BUF_LEN); if (line == NULL) return; *************** *** 5068,5074 **** break; putc('%', fp); home_replace(NULL, buf->b_ffname, line, MAXPATHL, TRUE); ! sprintf((char *)line + STRLEN(line), "\t%ld\t%d", (long)buf->b_last_cursor.lnum, buf->b_last_cursor.col); viminfo_writestring(fp, line); --- 5076,5083 ---- break; putc('%', fp); home_replace(NULL, buf->b_ffname, line, MAXPATHL, TRUE); ! len = STRLEN(line); ! vim_snprintf((char *)line + len, len - LINE_BUF_LEN, "\t%ld\t%d", (long)buf->b_last_cursor.lnum, buf->b_last_cursor.col); viminfo_writestring(fp, line); *************** *** 5226,5232 **** return; } ! int buf_change_sign_type(buf, markId, typenr) buf_T *buf; /* buffer to store sign in */ int markId; /* sign ID */ --- 5235,5241 ---- return; } ! linenr_T buf_change_sign_type(buf, markId, typenr) buf_T *buf; /* buffer to store sign in */ int markId; /* sign ID */ *************** *** 5243,5252 **** } } ! return 0; } ! int_u buf_getsigntype(buf, lnum, type) buf_T *buf; linenr_T lnum; --- 5252,5261 ---- } } ! return (linenr_T)0; } ! int buf_getsigntype(buf, lnum, type) buf_T *buf; linenr_T lnum; *** ../vim-7.2.166/src/charset.c 2008-07-24 21:30:44.000000000 +0200 --- src/charset.c 2009-05-05 18:17:11.000000000 +0200 *************** *** 17,23 **** static int win_nolbr_chartabsize __ARGS((win_T *wp, char_u *s, colnr_T col, int *headp)); #endif ! static int nr2hex __ARGS((int c)); static int chartab_initialized = FALSE; --- 17,23 ---- static int win_nolbr_chartabsize __ARGS((win_T *wp, char_u *s, colnr_T col, int *headp)); #endif ! static unsigned nr2hex __ARGS((unsigned c)); static int chartab_initialized = FALSE; *************** *** 664,670 **** } #endif buf[++i] = nr2hex((unsigned)c >> 4); ! buf[++i] = nr2hex(c); buf[++i] = '>'; buf[++i] = NUL; } --- 664,670 ---- } #endif buf[++i] = nr2hex((unsigned)c >> 4); ! buf[++i] = nr2hex((unsigned)c); buf[++i] = '>'; buf[++i] = NUL; } *************** *** 674,682 **** * Lower case letters are used to avoid the confusion of being 0xf1 or * function key 1. */ ! static int nr2hex(c) ! int c; { if ((c & 0xf) <= 9) return (c & 0xf) + '0'; --- 674,682 ---- * Lower case letters are used to avoid the confusion of being 0xf1 or * function key 1. */ ! static unsigned nr2hex(c) ! unsigned c; { if ((c & 0xf) <= 9) return (c & 0xf) + '0'; *************** *** 884,890 **** if (c >= 0x100) { if (enc_dbcs != 0) ! return dbcs_class((unsigned)c >> 8, c & 0xff) >= 2; if (enc_utf8) return utf_class(c) >= 2; } --- 884,890 ---- if (c >= 0x100) { if (enc_dbcs != 0) ! return dbcs_class((unsigned)c >> 8, (unsigned)(c & 0xff)) >= 2; if (enc_utf8) return utf_class(c) >= 2; } *************** *** 1090,1096 **** */ numberextra = win_col_off(wp); col2 = col; ! colmax = W_WIDTH(wp) - numberextra; if (col >= colmax) { n = colmax + win_col_off2(wp); --- 1090,1096 ---- */ numberextra = win_col_off(wp); col2 = col; ! colmax = (colnr_T)(W_WIDTH(wp) - numberextra); if (col >= colmax) { n = colmax + win_col_off2(wp); *************** *** 1201,1217 **** win_T *wp; colnr_T vcol; { ! colnr_T width1; /* width of first line (after line number) */ ! colnr_T width2; /* width of further lines */ #ifdef FEAT_VERTSPLIT if (wp->w_width == 0) /* there is no border */ return FALSE; #endif width1 = W_WIDTH(wp) - win_col_off(wp); ! if (vcol < width1 - 1) return FALSE; ! if (vcol == width1 - 1) return TRUE; width2 = width1 + win_col_off2(wp); return ((vcol - width1) % width2 == width2 - 1); --- 1201,1217 ---- win_T *wp; colnr_T vcol; { ! int width1; /* width of first line (after line number) */ ! int width2; /* width of further lines */ #ifdef FEAT_VERTSPLIT if (wp->w_width == 0) /* there is no border */ return FALSE; #endif width1 = W_WIDTH(wp) - win_col_off(wp); ! if ((int)vcol < width1 - 1) return FALSE; ! if ((int)vcol == width1 - 1) return TRUE; width2 = width1 + win_col_off2(wp); return ((vcol - width1) % width2 == width2 - 1); *************** *** 1396,1408 **** # ifdef FEAT_MBYTE /* Cannot put the cursor on part of a wide character. */ ptr = ml_get_buf(wp->w_buffer, pos->lnum, FALSE); ! if (pos->col < STRLEN(ptr)) { int c = (*mb_ptr2char)(ptr + pos->col); if (c != TAB && vim_isprintc(c)) { ! endadd = char2cells(c) - 1; if (coladd > endadd) /* past end of line */ endadd = 0; else --- 1396,1408 ---- # ifdef FEAT_MBYTE /* Cannot put the cursor on part of a wide character. */ ptr = ml_get_buf(wp->w_buffer, pos->lnum, FALSE); ! if (pos->col < (colnr_T)STRLEN(ptr)) { int c = (*mb_ptr2char)(ptr + pos->col); if (c != TAB && vim_isprintc(c)) { ! endadd = (colnr_T)(char2cells(c) - 1); if (coladd > endadd) /* past end of line */ endadd = 0; else *** ../vim-7.2.166/src/cleanlint.vim 2009-05-13 12:08:12.000000000 +0200 --- src/cleanlint.vim 2009-05-05 21:34:01.000000000 +0200 *************** *** 0 **** --- 1,27 ---- + " Vim tool: Filter output of splint + " + " Maintainer: Bram Moolenaar + " 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 *** ../vim-7.2.166/src/digraph.c 2008-06-25 00:26:41.000000000 +0200 --- src/digraph.c 2009-05-05 20:32:43.000000000 +0200 *************** *** 32,38 **** static void printdigraph __ARGS((digr_T *)); /* digraphs added by the user */ ! static garray_T user_digraphs = {0, 0, sizeof(digr_T), 10, NULL}; /* * Note: Characters marked with XX are not included literally, because some --- 32,38 ---- static void printdigraph __ARGS((digr_T *)); /* digraphs added by the user */ ! static garray_T user_digraphs = {0, 0, (int)sizeof(digr_T), 10, NULL}; /* * Note: Characters marked with XX are not included literally, because some *************** *** 2371,2380 **** } else #endif ! *p++ = dp->result; if (char2cells(dp->result) == 1) *p++ = ' '; ! sprintf((char *)p, " %3d", dp->result); msg_outtrans(buf); } } --- 2371,2380 ---- } else #endif ! *p++ = (char_u)dp->result; if (char2cells(dp->result) == 1) *p++ = ' '; ! vim_snprintf((char *)p, sizeof(buf) - (p - buf), " %3d", dp->result); msg_outtrans(buf); } } *************** *** 2395,2401 **** static void keymap_unload __ARGS((void)); /* ! * Set up key mapping tables for the 'keymap' option */ char_u * keymap_init() --- 2395,2404 ---- static void keymap_unload __ARGS((void)); /* ! * Set up key mapping tables for the 'keymap' option. ! * Returns NULL if OK, an error message for failure. This only needs to be ! * used when setting the option, not later when the value has already been ! * checked. */ char_u * keymap_init() *************** *** 2412,2436 **** else { char_u *buf; /* Source the keymap file. It will contain a ":loadkeymap" command * which will call ex_loadkeymap() below. */ ! buf = alloc((unsigned)(STRLEN(curbuf->b_p_keymap) # ifdef FEAT_MBYTE ! + STRLEN(p_enc) # endif ! + 14)); if (buf == NULL) return e_outofmem; # ifdef FEAT_MBYTE /* try finding "keymap/'keymap'_'encoding'.vim" in 'runtimepath' */ ! sprintf((char *)buf, "keymap/%s_%s.vim", curbuf->b_p_keymap, p_enc); if (source_runtime(buf, FALSE) == FAIL) # endif { /* try finding "keymap/'keymap'.vim" in 'runtimepath' */ ! sprintf((char *)buf, "keymap/%s.vim", curbuf->b_p_keymap); if (source_runtime(buf, FALSE) == FAIL) { vim_free(buf); --- 2415,2443 ---- else { char_u *buf; + size_t buflen; /* Source the keymap file. It will contain a ":loadkeymap" command * which will call ex_loadkeymap() below. */ ! buflen = STRLEN(curbuf->b_p_keymap) # ifdef FEAT_MBYTE ! + STRLEN(p_enc) # endif ! + 14; ! buf = alloc((unsigned)buflen); if (buf == NULL) return e_outofmem; # ifdef FEAT_MBYTE /* try finding "keymap/'keymap'_'encoding'.vim" in 'runtimepath' */ ! vim_snprintf((char *)buf, buflen, "keymap/%s_%s.vim", ! curbuf->b_p_keymap, p_enc); if (source_runtime(buf, FALSE) == FAIL) # endif { /* try finding "keymap/'keymap'.vim" in 'runtimepath' */ ! vim_snprintf((char *)buf, buflen, "keymap/%s.vim", ! curbuf->b_p_keymap); if (source_runtime(buf, FALSE) == FAIL) { vim_free(buf); *** ../vim-7.2.166/src/edit.c 2009-02-21 20:27:00.000000000 +0100 --- src/edit.c 2009-05-05 21:14:50.000000000 +0200 *************** *** 57,63 **** N_(" Keyword Local completion (^N^P)"), }; ! static char_u e_hitend[] = N_("Hit end of paragraph"); /* * Structure used to store one match for insert completion. --- 57,63 ---- N_(" Keyword Local completion (^N^P)"), }; ! static char e_hitend[] = N_("Hit end of paragraph"); /* * Structure used to store one match for insert completion. *************** *** 69,75 **** --- 69,79 ---- compl_T *cp_prev; char_u *cp_str; /* matched text */ char cp_icase; /* TRUE or FALSE: ignore case */ + #ifdef S_SPLINT_S /* splint can't handle array of pointers */ + char_u **cp_text; /* text for the menu */ + #else char_u *(cp_text[CPT_COUNT]); /* text for the menu */ + #endif char_u *cp_fname; /* file containing the match, allocated when * cp_flags has FREE_FNAME */ int cp_flags; /* ORIGINAL_TEXT, CONT_S_IPOS or FREE_FNAME */ *************** *** 306,312 **** int c = 0; char_u *ptr; int lastc; ! colnr_T mincol; static linenr_T o_lnum = 0; int i; int did_backspace = TRUE; /* previous char was backspace */ --- 310,316 ---- int c = 0; char_u *ptr; int lastc; ! int mincol; static linenr_T o_lnum = 0; int i; int did_backspace = TRUE; /* previous char was backspace */ *************** *** 387,393 **** if (startln) Insstart.col = 0; } ! Insstart_textlen = linetabsize(ml_get_curline()); Insstart_blank_vcol = MAXCOL; if (!did_ai) ai_col = 0; --- 391,397 ---- if (startln) Insstart.col = 0; } ! Insstart_textlen = (colnr_T)linetabsize(ml_get_curline()); Insstart_blank_vcol = MAXCOL; if (!did_ai) ai_col = 0; *************** *** 653,659 **** mincol = curwin->w_wcol; validate_cursor_col(); ! if ((int)curwin->w_wcol < (int)mincol - curbuf->b_p_ts && curwin->w_wrow == W_WINROW(curwin) + curwin->w_height - 1 - p_so && (curwin->w_cursor.lnum != curwin->w_topline --- 657,663 ---- mincol = curwin->w_wcol; validate_cursor_col(); ! if ((int)curwin->w_wcol < mincol - curbuf->b_p_ts && curwin->w_wrow == W_WINROW(curwin) + curwin->w_height - 1 - p_so && (curwin->w_cursor.lnum != curwin->w_topline *************** *** 1773,1779 **** * Compute the screen column where the cursor should be. */ vcol = get_indent() - vcol; ! curwin->w_virtcol = (vcol < 0) ? 0 : vcol; /* * Advance the cursor until we reach the right screen column. --- 1777,1783 ---- * Compute the screen column where the cursor should be. */ vcol = get_indent() - vcol; ! curwin->w_virtcol = (colnr_T)((vcol < 0) ? 0 : vcol); /* * Advance the cursor until we reach the right screen column. *************** *** 1800,1808 **** */ if (vcol != (int)curwin->w_virtcol) { ! curwin->w_cursor.col = new_cursor_col; i = (int)curwin->w_virtcol - vcol; ! ptr = alloc(i + 1); if (ptr != NULL) { new_cursor_col += i; --- 1804,1812 ---- */ if (vcol != (int)curwin->w_virtcol) { ! curwin->w_cursor.col = (colnr_T)new_cursor_col; i = (int)curwin->w_virtcol - vcol; ! ptr = alloc((unsigned)(i + 1)); if (ptr != NULL) { new_cursor_col += i; *************** *** 1826,1832 **** if (new_cursor_col <= 0) curwin->w_cursor.col = 0; else ! curwin->w_cursor.col = new_cursor_col; curwin->w_set_curswant = TRUE; changed_cline_bef_curs(); --- 1830,1836 ---- if (new_cursor_col <= 0) curwin->w_cursor.col = 0; else ! curwin->w_cursor.col = (colnr_T)new_cursor_col; curwin->w_set_curswant = TRUE; changed_cline_bef_curs(); *************** *** 1966,1972 **** #ifdef FEAT_MBYTE if (enc_utf8 && limit_col >= 0) { ! int ecol = curwin->w_cursor.col + 1; /* Make sure the cursor is at the start of a character, but * skip forward again when going too far back because of a --- 1970,1976 ---- #ifdef FEAT_MBYTE if (enc_utf8 && limit_col >= 0) { ! colnr_T ecol = curwin->w_cursor.col + 1; /* Make sure the cursor is at the start of a character, but * skip forward again when going too far back because of a *************** *** 1982,1988 **** } if (*ml_get_cursor() == NUL || curwin->w_cursor.col == ecol) return FALSE; ! del_bytes((long)(ecol - curwin->w_cursor.col), FALSE, TRUE); } else #endif --- 1986,1992 ---- } if (*ml_get_cursor() == NUL || curwin->w_cursor.col == ecol) return FALSE; ! del_bytes((long)((int)ecol - curwin->w_cursor.col), FALSE, TRUE); } else #endif *************** *** 2201,2207 **** actual_compl_length = compl_length; /* Allocate wide character array for the completion and fill it. */ ! wca = (int *)alloc(actual_len * sizeof(int)); if (wca != NULL) { p = str; --- 2205,2211 ---- actual_compl_length = compl_length; /* Allocate wide character array for the completion and fill it. */ ! wca = (int *)alloc((unsigned)(actual_len * sizeof(int))); if (wca != NULL) { p = str; *************** *** 2580,2586 **** */ void set_completion(startcol, list) ! int startcol; list_T *list; { /* If already doing completions stop it. */ --- 2584,2590 ---- */ void set_completion(startcol, list) ! colnr_T startcol; list_T *list; { /* If already doing completions stop it. */ *************** *** 2591,2600 **** if (stop_arrow() == FAIL) return; ! if (startcol > (int)curwin->w_cursor.col) startcol = curwin->w_cursor.col; compl_col = startcol; ! compl_length = curwin->w_cursor.col - startcol; /* compl_pattern doesn't need to be set */ compl_orig_text = vim_strnsave(ml_get_curline() + compl_col, compl_length); if (compl_orig_text == NULL || ins_compl_add(compl_orig_text, --- 2595,2604 ---- if (stop_arrow() == FAIL) return; ! if (startcol > curwin->w_cursor.col) startcol = curwin->w_cursor.col; compl_col = startcol; ! compl_length = (int)curwin->w_cursor.col - (int)startcol; /* compl_pattern doesn't need to be set */ compl_orig_text = vim_strnsave(ml_get_curline() + compl_col, compl_length); if (compl_orig_text == NULL || ins_compl_add(compl_orig_text, *************** *** 2860,2866 **** regmatch_T regmatch; char_u **files; int count; - int i; int save_p_scs; int dir = compl_direction; --- 2864,2869 ---- *************** *** 2892,2908 **** if (ctrl_x_mode == CTRL_X_WHOLE_LINE) { char_u *pat_esc = vim_strsave_escaped(pat, (char_u *)"\\"); if (pat_esc == NULL) goto theend; ! i = (int)STRLEN(pat_esc) + 10; ! ptr = alloc(i); if (ptr == NULL) { vim_free(pat_esc); goto theend; } ! vim_snprintf((char *)ptr, i, "^\\s*\\zs\\V%s", pat_esc); regmatch.regprog = vim_regcomp(ptr, RE_MAGIC); vim_free(pat_esc); vim_free(ptr); --- 2895,2912 ---- if (ctrl_x_mode == CTRL_X_WHOLE_LINE) { char_u *pat_esc = vim_strsave_escaped(pat, (char_u *)"\\"); + size_t len; if (pat_esc == NULL) goto theend; ! len = STRLEN(pat_esc) + 10; ! ptr = alloc((unsigned)len); if (ptr == NULL) { vim_free(pat_esc); goto theend; } ! vim_snprintf((char *)ptr, len, "^\\s*\\zs\\V%s", pat_esc); regmatch.regprog = vim_regcomp(ptr, RE_MAGIC); vim_free(pat_esc); vim_free(ptr); *************** *** 2993,2999 **** { vim_snprintf((char *)IObuff, IOSIZE, _("Scanning dictionary: %s"), (char *)files[i]); ! msg_trunc_attr(IObuff, TRUE, hl_attr(HLF_R)); } if (fp != NULL) --- 2997,3003 ---- { vim_snprintf((char *)IObuff, IOSIZE, _("Scanning dictionary: %s"), (char *)files[i]); ! (void)msg_trunc_attr(IObuff, TRUE, hl_attr(HLF_R)); } if (fp != NULL) *************** *** 3311,3317 **** static int ins_compl_len() { ! int off = curwin->w_cursor.col - compl_col; if (off < 0) return 0; --- 3315,3321 ---- static int ins_compl_len() { ! int off = (int)curwin->w_cursor.col - (int)compl_col; if (off < 0) return 0; *************** *** 3347,3353 **** vim_free(compl_leader); compl_leader = vim_strnsave(ml_get_curline() + compl_col, ! curwin->w_cursor.col - compl_col); if (compl_leader != NULL) ins_compl_new_leader(); } --- 3351,3357 ---- vim_free(compl_leader); compl_leader = vim_strnsave(ml_get_curline() + compl_col, ! (int)(curwin->w_cursor.col - compl_col)); if (compl_leader != NULL) ins_compl_new_leader(); } *************** *** 3395,3401 **** ins_compl_addfrommatch() { char_u *p; ! int len = curwin->w_cursor.col - compl_col; int c; compl_T *cp; --- 3399,3405 ---- ins_compl_addfrommatch() { char_u *p; ! int len = (int)curwin->w_cursor.col - (int)compl_col; int c; compl_T *cp; *************** *** 3961,3967 **** : ins_buf->b_sfname == NULL ? (char *)ins_buf->b_fname : (char *)ins_buf->b_sfname); ! msg_trunc_attr(IObuff, TRUE, hl_attr(HLF_R)); } else if (*e_cpt == NUL) break; --- 3965,3971 ---- : ins_buf->b_sfname == NULL ? (char *)ins_buf->b_fname : (char *)ins_buf->b_sfname); ! (void)msg_trunc_attr(IObuff, TRUE, hl_attr(HLF_R)); } else if (*e_cpt == NUL) break; *************** *** 3991,3997 **** { type = CTRL_X_TAGS; sprintf((char*)IObuff, _("Scanning tags.")); ! msg_trunc_attr(IObuff, TRUE, hl_attr(HLF_R)); } else type = -1; --- 3995,4001 ---- { type = CTRL_X_TAGS; sprintf((char*)IObuff, _("Scanning tags.")); ! (void)msg_trunc_attr(IObuff, TRUE, hl_attr(HLF_R)); } else type = -1; *************** *** 6320,6326 **** ins_need_undo = FALSE; } Insstart = curwin->w_cursor; /* new insertion starts here */ ! Insstart_textlen = linetabsize(ml_get_curline()); ai_col = 0; #ifdef FEAT_VREPLACE if (State & VREPLACE_FLAG) --- 6324,6330 ---- ins_need_undo = FALSE; } Insstart = curwin->w_cursor; /* new insertion starts here */ ! Insstart_textlen = (colnr_T)linetabsize(ml_get_curline()); ai_col = 0; #ifdef FEAT_VREPLACE if (State & VREPLACE_FLAG) *** ../vim-7.2.166/src/ex_cmds.c 2009-04-29 18:44:38.000000000 +0200 --- src/ex_cmds.c 2009-05-05 17:55:40.000000000 +0200 *************** *** 1789,1795 **** * overwrite a user's viminfo file after a "su root", with a * viminfo file that the user can't read. */ ! st_old.st_dev = 0; st_old.st_ino = 0; st_old.st_mode = 0600; if (mch_stat((char *)fname, &st_old) == 0 --- 1789,1795 ---- * overwrite a user's viminfo file after a "su root", with a * viminfo file that the user can't read. */ ! st_old.st_dev = (dev_t)0; st_old.st_ino = 0; st_old.st_mode = 0600; if (mch_stat((char *)fname, &st_old) == 0 *************** *** 3715,3721 **** /* If the window options were changed may need to set the spell language. * Can only do this after the buffer has been properly setup. */ if (did_get_winopts && curwin->w_p_spell && *curbuf->b_p_spl != NUL) ! did_set_spelllang(curbuf); #endif if (command == NULL) --- 3715,3721 ---- /* If the window options were changed may need to set the spell language. * Can only do this after the buffer has been properly setup. */ if (did_get_winopts && curwin->w_p_spell && *curbuf->b_p_spl != NUL) ! (void)did_set_spelllang(curbuf); #endif if (command == NULL) *************** *** 3788,3794 **** #ifdef FEAT_KEYMAP if (curbuf->b_kmap_state & KEYMAP_INIT) ! keymap_init(); #endif --RedrawingDisabled; --- 3788,3794 ---- #ifdef FEAT_KEYMAP if (curbuf->b_kmap_state & KEYMAP_INIT) ! (void)keymap_init(); #endif --RedrawingDisabled; *** ../vim-7.2.166/src/globals.h 2009-03-05 03:13:51.000000000 +0100 --- src/globals.h 2009-05-09 21:14:49.000000000 +0200 *************** *** 524,530 **** EXTERN win_T *prevwin INIT(= NULL); /* previous window */ # define W_NEXT(wp) ((wp)->w_next) # define FOR_ALL_WINDOWS(wp) for (wp = firstwin; wp != NULL; wp = wp->w_next) ! #define FOR_ALL_TAB_WINDOWS(tp, wp) \ for ((tp) = first_tabpage; (tp) != NULL; (tp) = (tp)->tp_next) \ for ((wp) = ((tp) == curtab) \ ? firstwin : (tp)->tp_firstwin; (wp); (wp) = (wp)->w_next) --- 524,530 ---- EXTERN win_T *prevwin INIT(= NULL); /* previous window */ # define W_NEXT(wp) ((wp)->w_next) # define FOR_ALL_WINDOWS(wp) for (wp = firstwin; wp != NULL; wp = wp->w_next) ! # define FOR_ALL_TAB_WINDOWS(tp, wp) \ for ((tp) = first_tabpage; (tp) != NULL; (tp) = (tp)->tp_next) \ for ((wp) = ((tp) == curtab) \ ? firstwin : (tp)->tp_firstwin; (wp); (wp) = (wp)->w_next) *************** *** 718,724 **** EXTERN pos_T saved_cursor /* w_cursor before formatting text. */ # ifdef DO_INIT ! = INIT_POS_T # endif ; --- 718,724 ---- EXTERN pos_T saved_cursor /* w_cursor before formatting text. */ # ifdef DO_INIT ! = INIT_POS_T(0, 0, 0) # endif ; *************** *** 1039,1045 **** EXTERN int did_cursorhold INIT(= FALSE); /* set when CursorHold t'gerd */ EXTERN pos_T last_cursormoved /* for CursorMoved event */ # ifdef DO_INIT ! = INIT_POS_T # endif ; #endif --- 1039,1045 ---- EXTERN int did_cursorhold INIT(= FALSE); /* set when CursorHold t'gerd */ EXTERN pos_T last_cursormoved /* for CursorMoved event */ # ifdef DO_INIT ! = INIT_POS_T(0, 0, 0) # endif ; #endif *** ../vim-7.2.166/src/ops.c 2009-04-29 17:39:17.000000000 +0200 --- src/ops.c 2009-05-13 12:41:02.000000000 +0200 *************** *** 6400,6406 **** { getvcols(curwin, &min_pos, &max_pos, &min_pos.col, &max_pos.col); ! sprintf((char *)buf1, _("%ld Cols; "), (long)(oparg.end_vcol - oparg.start_vcol + 1)); } else --- 6400,6406 ---- { getvcols(curwin, &min_pos, &max_pos, &min_pos.col, &max_pos.col); ! vim_snprintf((char *)buf1, sizeof(buf1), _("%ld Cols; "), (long)(oparg.end_vcol - oparg.start_vcol + 1)); } else *************** *** 6408,6420 **** if (char_count_cursor == byte_count_cursor && char_count == byte_count) ! sprintf((char *)IObuff, _("Selected %s%ld of %ld Lines; %ld of %ld Words; %ld of %ld Bytes"), buf1, line_count_selected, (long)curbuf->b_ml.ml_line_count, word_count_cursor, word_count, byte_count_cursor, byte_count); else ! sprintf((char *)IObuff, _("Selected %s%ld of %ld Lines; %ld of %ld Words; %ld of %ld Chars; %ld of %ld Bytes"), buf1, line_count_selected, (long)curbuf->b_ml.ml_line_count, word_count_cursor, word_count, --- 6408,6422 ---- if (char_count_cursor == byte_count_cursor && char_count == byte_count) ! vim_snprintf((char *)IObuff, IOSIZE, ! _("Selected %s%ld of %ld Lines; %ld of %ld Words; %ld of %ld Bytes"), buf1, line_count_selected, (long)curbuf->b_ml.ml_line_count, word_count_cursor, word_count, byte_count_cursor, byte_count); else ! vim_snprintf((char *)IObuff, IOSIZE, ! _("Selected %s%ld of %ld Lines; %ld of %ld Words; %ld of %ld Chars; %ld of %ld Bytes"), buf1, line_count_selected, (long)curbuf->b_ml.ml_line_count, word_count_cursor, word_count, *************** *** 6426,6445 **** { p = ml_get_curline(); validate_virtcol(); ! col_print(buf1, (int)curwin->w_cursor.col + 1, (int)curwin->w_virtcol + 1); ! col_print(buf2, (int)STRLEN(p), linetabsize(p)); if (char_count_cursor == byte_count_cursor && char_count == byte_count) ! sprintf((char *)IObuff, _("Col %s of %s; Line %ld of %ld; Word %ld of %ld; Byte %ld of %ld"), (char *)buf1, (char *)buf2, (long)curwin->w_cursor.lnum, (long)curbuf->b_ml.ml_line_count, word_count_cursor, word_count, byte_count_cursor, byte_count); else ! sprintf((char *)IObuff, _("Col %s of %s; Line %ld of %ld; Word %ld of %ld; Char %ld of %ld; Byte %ld of %ld"), (char *)buf1, (char *)buf2, (long)curwin->w_cursor.lnum, (long)curbuf->b_ml.ml_line_count, --- 6428,6449 ---- { p = ml_get_curline(); validate_virtcol(); ! col_print(buf1, sizeof(buf1), (int)curwin->w_cursor.col + 1, (int)curwin->w_virtcol + 1); ! col_print(buf2, sizeof(buf2), (int)STRLEN(p), linetabsize(p)); if (char_count_cursor == byte_count_cursor && char_count == byte_count) ! vim_snprintf((char *)IObuff, IOSIZE, ! _("Col %s of %s; Line %ld of %ld; Word %ld of %ld; Byte %ld of %ld"), (char *)buf1, (char *)buf2, (long)curwin->w_cursor.lnum, (long)curbuf->b_ml.ml_line_count, word_count_cursor, word_count, byte_count_cursor, byte_count); else ! vim_snprintf((char *)IObuff, IOSIZE, ! _("Col %s of %s; Line %ld of %ld; Word %ld of %ld; Char %ld of %ld; Byte %ld of %ld"), (char *)buf1, (char *)buf2, (long)curwin->w_cursor.lnum, (long)curbuf->b_ml.ml_line_count, *** ../vim-7.2.166/src/os_unix.c 2009-03-02 02:44:54.000000000 +0100 --- src/os_unix.c 2009-05-05 17:35:58.000000000 +0200 *************** *** 199,205 **** #endif #ifndef SIG_ERR ! # define SIG_ERR ((RETSIGTYPE (*)())-1) #endif /* volatile because it is used in signal handler sig_winch(). */ --- 199,207 ---- #endif #ifndef SIG_ERR ! # ifndef S_SPLINT_S ! # define SIG_ERR ((RETSIGTYPE (*)())-1) ! # endif #endif /* volatile because it is used in signal handler sig_winch(). */ *************** *** 441,447 **** #if defined(HAVE_TOTAL_MEM) || defined(PROTO) # ifdef HAVE_SYS_RESOURCE_H ! # include # endif # if defined(HAVE_SYS_SYSCTL_H) && defined(HAVE_SYSCTL) # include --- 443,451 ---- #if defined(HAVE_TOTAL_MEM) || defined(PROTO) # ifdef HAVE_SYS_RESOURCE_H ! # ifndef S_SPLINT_S /* splint crashes on bits/resource.h */ ! # include ! # endif # endif # if defined(HAVE_SYS_SYSCTL_H) && defined(HAVE_SYSCTL) # include *** ../vim-7.2.166/src/os_unix.h 2008-06-20 18:06:36.000000000 +0200 --- src/os_unix.h 2009-05-05 17:07:45.000000000 +0200 *************** *** 53,59 **** #endif #ifdef HAVE_UNISTD_H ! # include #endif #ifdef HAVE_LIBC_H --- 53,61 ---- #endif #ifdef HAVE_UNISTD_H ! # ifndef S_SPLINT_S /* splint crashes on bits/confname.h */ ! # include ! # endif #endif #ifdef HAVE_LIBC_H *** ../vim-7.2.166/src/proto/buffer.pro 2008-11-15 14:10:23.000000000 +0100 --- src/proto/buffer.pro 2009-05-13 12:23:41.000000000 +0200 *************** *** 37,49 **** int otherfile __ARGS((char_u *ffname)); void buf_setino __ARGS((buf_T *buf)); void fileinfo __ARGS((int fullname, int shorthelp, int dont_truncate)); ! void col_print __ARGS((char_u *buf, int col, int vcol)); void maketitle __ARGS((void)); void resettitle __ARGS((void)); void free_titles __ARGS((void)); int build_stl_str_hl __ARGS((win_T *wp, char_u *out, size_t outlen, char_u *fmt, int use_sandbox, int fillchar, int maxwidth, struct stl_hlrec *hltab, struct stl_hlrec *tabtab)); ! void get_rel_pos __ARGS((win_T *wp, char_u *str)); ! int append_arg_number __ARGS((win_T *wp, char_u *buf, int add_file, int maxlen)); char_u *fix_fname __ARGS((char_u *fname)); void fname_expand __ARGS((buf_T *buf, char_u **ffname, char_u **sfname)); char_u *alist_name __ARGS((aentry_T *aep)); --- 37,48 ---- int otherfile __ARGS((char_u *ffname)); void buf_setino __ARGS((buf_T *buf)); void fileinfo __ARGS((int fullname, int shorthelp, int dont_truncate)); ! void col_print __ARGS((char_u *buf, size_t buflen, int col, int vcol)); void maketitle __ARGS((void)); void resettitle __ARGS((void)); void free_titles __ARGS((void)); int build_stl_str_hl __ARGS((win_T *wp, char_u *out, size_t outlen, char_u *fmt, int use_sandbox, int fillchar, int maxwidth, struct stl_hlrec *hltab, struct stl_hlrec *tabtab)); ! void get_rel_pos __ARGS((win_T *wp, char_u *buf, int buflen)); char_u *fix_fname __ARGS((char_u *fname)); void fname_expand __ARGS((buf_T *buf, char_u **ffname, char_u **sfname)); char_u *alist_name __ARGS((aentry_T *aep)); *************** *** 54,61 **** void write_viminfo_bufferlist __ARGS((FILE *fp)); char *buf_spname __ARGS((buf_T *buf)); void buf_addsign __ARGS((buf_T *buf, int id, linenr_T lnum, int typenr)); ! int buf_change_sign_type __ARGS((buf_T *buf, int markId, int typenr)); ! int_u buf_getsigntype __ARGS((buf_T *buf, linenr_T lnum, int type)); linenr_T buf_delsign __ARGS((buf_T *buf, int id)); int buf_findsign __ARGS((buf_T *buf, int id)); int buf_findsign_id __ARGS((buf_T *buf, linenr_T lnum)); --- 53,60 ---- void write_viminfo_bufferlist __ARGS((FILE *fp)); char *buf_spname __ARGS((buf_T *buf)); void buf_addsign __ARGS((buf_T *buf, int id, linenr_T lnum, int typenr)); ! linenr_T buf_change_sign_type __ARGS((buf_T *buf, int markId, int typenr)); ! int buf_getsigntype __ARGS((buf_T *buf, linenr_T lnum, int type)); linenr_T buf_delsign __ARGS((buf_T *buf, int id)); int buf_findsign __ARGS((buf_T *buf, int id)); int buf_findsign_id __ARGS((buf_T *buf, linenr_T lnum)); *** ../vim-7.2.166/src/proto/edit.pro 2008-01-16 20:03:13.000000000 +0100 --- src/proto/edit.pro 2009-05-05 20:51:56.000000000 +0200 *************** *** 8,14 **** void backspace_until_column __ARGS((int col)); int vim_is_ctrl_x_key __ARGS((int c)); int ins_compl_add_infercase __ARGS((char_u *str, int len, int icase, char_u *fname, int dir, int flags)); ! void set_completion __ARGS((int startcol, list_T *list)); void ins_compl_show_pum __ARGS((void)); char_u *find_word_start __ARGS((char_u *ptr)); char_u *find_word_end __ARGS((char_u *ptr)); --- 8,14 ---- void backspace_until_column __ARGS((int col)); int vim_is_ctrl_x_key __ARGS((int c)); int ins_compl_add_infercase __ARGS((char_u *str, int len, int icase, char_u *fname, int dir, int flags)); ! void set_completion __ARGS((colnr_T startcol, list_T *list)); void ins_compl_show_pum __ARGS((void)); char_u *find_word_start __ARGS((char_u *ptr)); char_u *find_word_end __ARGS((char_u *ptr)); *** ../vim-7.2.166/src/screen.c 2009-03-18 19:07:09.000000000 +0100 --- src/screen.c 2009-05-05 17:42:45.000000000 +0200 *************** *** 9481,9493 **** win_T *wp; int always; { ! char_u buffer[70]; int row; int fillchar; int attr; int empty_line = FALSE; colnr_T virtcol; int i; int o; #ifdef FEAT_VERTSPLIT int this_ru_col; --- 9481,9495 ---- win_T *wp; int always; { ! #define RULER_BUF_LEN 70 ! char_u buffer[RULER_BUF_LEN]; int row; int fillchar; int attr; int empty_line = FALSE; colnr_T virtcol; int i; + size_t len; int o; #ifdef FEAT_VERTSPLIT int this_ru_col; *************** *** 9602,9612 **** * Some sprintfs return the length, some return a pointer. * To avoid portability problems we use strlen() here. */ ! sprintf((char *)buffer, "%ld,", (wp->w_buffer->b_ml.ml_flags & ML_EMPTY) ? 0L : (long)(wp->w_cursor.lnum)); ! col_print(buffer + STRLEN(buffer), empty_line ? 0 : (int)wp->w_cursor.col + 1, (int)virtcol + 1); --- 9604,9615 ---- * Some sprintfs return the length, some return a pointer. * To avoid portability problems we use strlen() here. */ ! vim_snprintf((char *)buffer, RULER_BUF_LEN, "%ld,", (wp->w_buffer->b_ml.ml_flags & ML_EMPTY) ? 0L : (long)(wp->w_cursor.lnum)); ! len = STRLEN(buffer); ! col_print(buffer + len, RULER_BUF_LEN - len, empty_line ? 0 : (int)wp->w_cursor.col + 1, (int)virtcol + 1); *************** *** 9616,9622 **** * screen up on some terminals). */ i = (int)STRLEN(buffer); ! get_rel_pos(wp, buffer + i + 1); o = i + vim_strsize(buffer + i + 1); #ifdef FEAT_WINDOWS if (wp->w_status_height == 0) /* can't use last char of screen */ --- 9619,9625 ---- * screen up on some terminals). */ i = (int)STRLEN(buffer); ! get_rel_pos(wp, buffer + i + 1, RULER_BUF_LEN - i - 1); o = i + vim_strsize(buffer + i + 1); #ifdef FEAT_WINDOWS if (wp->w_status_height == 0) /* can't use last char of screen */ *************** *** 9643,9649 **** buffer[i++] = fillchar; ++o; } ! get_rel_pos(wp, buffer + i); } /* Truncate at window boundary. */ #ifdef FEAT_MBYTE --- 9646,9652 ---- buffer[i++] = fillchar; ++o; } ! get_rel_pos(wp, buffer + i, RULER_BUF_LEN - i); } /* Truncate at window boundary. */ #ifdef FEAT_MBYTE *** ../vim-7.2.166/src/structs.h 2008-11-15 16:05:30.000000000 +0100 --- src/structs.h 2009-05-05 18:20:36.000000000 +0200 *************** *** 33,41 **** } pos_T; #ifdef FEAT_VIRTUALEDIT ! # define INIT_POS_T {0, 0, 0} #else ! # define INIT_POS_T {0, 0} #endif /* --- 33,41 ---- } pos_T; #ifdef FEAT_VIRTUALEDIT ! # define INIT_POS_T(l, c, ca) {l, c, ca} #else ! # define INIT_POS_T(l, c, ca) {l, c} #endif /* *************** *** 1166,1172 **** char_u *b_fname; /* current file name */ #ifdef UNIX ! int b_dev; /* device number (-1 if not set) */ ino_t b_ino; /* inode number */ #endif #ifdef FEAT_CW_EDITOR --- 1166,1172 ---- char_u *b_fname; /* current file name */ #ifdef UNIX ! dev_t b_dev; /* device number (-1 if not set) */ ino_t b_ino; /* inode number */ #endif #ifdef FEAT_CW_EDITOR *************** *** 1645,1651 **** --- 1645,1655 ---- #endif #ifdef FEAT_DIFF diff_T *tp_first_diff; + # ifdef S_SPLINT_S /* splint doesn't understand the array of pointers */ + buf_T **tp_diffbuf; + # else buf_T *(tp_diffbuf[DB_COUNT]); + # endif int tp_diff_invalid; /* list of diffs is outdated */ #endif frame_T *tp_snapshot; /* window layout snapshot */ *** ../vim-7.2.166/src/version.c 2009-04-29 18:44:38.000000000 +0200 --- src/version.c 2009-05-13 12:06:36.000000000 +0200 *************** *** 678,679 **** --- 678,681 ---- { /* Add new patch number below this line */ + /**/ + 167, /**/ -- Snoring is prohibited unless all bedroom windows are closed and securely locked. [real standing law in Massachusetts, 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 ///