]> granicus.if.org Git - vim/commitdiff
updated for version 7.2-168
authorBram Moolenaar <Bram@vim.org>
Wed, 13 May 2009 10:51:08 +0000 (10:51 +0000)
committerBram Moolenaar <Bram@vim.org>
Wed, 13 May 2009 10:51:08 +0000 (10:51 +0000)
18 files changed:
Filelist
runtime/spell/fixdup [deleted file]
src/Makefile
src/buffer.c
src/charset.c
src/cleanlint.vim [new file with mode: 0644]
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
src/version.c

index 7e9f0bc3af7a26e16bf4b7f0e9bd99180efa00de..f6c78146893477b532b3fd67cac5ee56539c1391 100644 (file)
--- a/Filelist
+++ b/Filelist
@@ -139,6 +139,7 @@ SRC_UNIX =  \
                src/INSTALL \
                src/INSTALLx.txt \
                src/Makefile \
+               src/cleanlint.vim \
                src/auto/configure \
                src/config.aap.in \
                src/config.h.in \
@@ -683,9 +684,7 @@ LANG_GEN = \
                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 = \
diff --git a/runtime/spell/fixdup b/runtime/spell/fixdup
deleted file mode 100644 (file)
index 0dd532d..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-" Vim script to fix duplicate words in a .dic file  vim: set ft=vim:
-"
-" Usage: Edit the .dic file and source this script.
-
-let deleted = 0
-
-" Start below the word count.
-let lnum = 2
-while lnum <= line('$')
-  let word = getline(lnum)
-  if word !~ '/'
-    if search('^' . word . '/', 'w') != 0
-      let deleted += 1
-      exe lnum . "d"
-      continue         " don't increment lnum, it's already at the next word
-    endif
-  endif
-  let lnum += 1
-endwhile
-
-if deleted == 0
-  echomsg "No duplicate words found"
-elseif deleted == 1
-  echomsg "Deleted 1 duplicate word"
-else
-  echomsg printf("Deleted %d duplicate words", deleted)
-endif
index e27a6ce0b7fe4db7c831a0bc7d56a8d35b77d07a..c790662a18f48dcf4064e09b13c96955cbe0c896 100644 (file)
@@ -551,7 +551,12 @@ CClink = $(CC)
 # }}}
 
 # LINT - for running lint
-LINT_OPTIONS = -beprxzF
+#  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,16 +1264,16 @@ CPP_DEPEND = $(CC) -I$(srcdir) -M$(CPP_MM) \
 #     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
+#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)
+#     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=
+NO_ATTR=
 #
 #     maybe the "/usr/bin/cc -E" has to be adjusted for some systems
 # This is for cproto 3.5 patchlevel 3:
@@ -1432,6 +1437,7 @@ LINT_SRC = $(BASIC_SRC) $(GUI_SRC) $(HANGULIN_SRC) $(PYTHON_SRC) $(TCL_SRC) \
        $(SNIFF_SRC) $(WORKSHOP_SRC) $(WSDEBUG_SRC) $(NETBEANS_SRC)
 #LINT_SRC = $(SRC)
 #LINT_SRC = $(ALL_SRC)
+#LINT_SRC = $(BASIC_SRC)
 
 OBJ = \
        objects/buffer.o \
@@ -2272,12 +2278,12 @@ depend:
 
 # Run lint.  Clean up the *.ln files that are sometimes left behind.
 lint:
-       lint $(LINT_OPTIONS) $(LINT_CFLAGS) $(LINT_EXTRA) $(LINT_SRC)
+       $(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
+       $(LINT) $(LINT_OPTIONS) -DWIN32 -DUNIX_LINT dosinst.c
        -rm -f dosinst.ln
 
 ###########################################################################
index a052e12c64ae92e67153803af075067ef3a7aeb7..e9243d4569ba89bf405ae4efe31debe08bef3aad 100644 (file)
@@ -44,6 +44,7 @@ static int    otherfile_buf __ARGS((buf_T *buf, char_u *ffname));
 #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,13 +1454,13 @@ enter_buffer(buf)
 
 #ifdef FEAT_KEYMAP
     if (curbuf->b_kmap_state & KEYMAP_INIT)
-       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)
-       did_set_spelllang(curbuf);
+       (void)did_set_spelllang(curbuf);
 #endif
 
     redraw_later(NOT_VALID);
@@ -2516,7 +2517,7 @@ buflist_findfpos(buf)
     buf_T      *buf;
 {
     wininfo_T  *wip;
-    static pos_T no_position = {1, 0};
+    static pos_T no_position = INIT_POS_T(1, 0, 0);
 
     wip = find_wininfo(buf, FALSE);
     if (wip != NULL)
@@ -2577,8 +2578,8 @@ buflist_list(eap)
        {
            IObuff[len++] = ' ';
        } while (--i > 0 && len < IOSIZE - 18);
-       vim_snprintf((char *)IObuff + len, IOSIZE - len, _("line %ld"),
-               buf == curbuf ? curwin->w_cursor.lnum
+       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,7 +2968,7 @@ fileinfo(fullname, shorthelp, dont_truncate)
 
     if (fullname > 1)      /* 2 CTRL-G: include buffer number */
     {
-       sprintf((char *)buffer, "buf %d: ", curbuf->b_fnum);
+       vim_snprintf((char *)buffer, IOSIZE, "buf %d: ", curbuf->b_fnum);
        p = buffer + STRLEN(buffer);
     }
     else
@@ -3041,11 +3042,12 @@ fileinfo(fullname, shorthelp, dont_truncate)
                (long)curbuf->b_ml.ml_line_count,
                n);
        validate_virtcol();
-       col_print(buffer + STRLEN(buffer),
+       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, !shortmess(SHM_FILE), IOSIZE);
+    (void)append_arg_number(curwin, buffer, IOSIZE, !shortmess(SHM_FILE));
 
     if (dont_truncate)
     {
@@ -3073,15 +3075,16 @@ fileinfo(fullname, shorthelp, dont_truncate)
 }
 
     void
-col_print(buf, col, vcol)
+col_print(buf, buflen, col, vcol)
     char_u  *buf;
+    size_t  buflen;
     int            col;
     int            vcol;
 {
     if (col == vcol)
-       sprintf((char *)buf, "%d", col);
+       vim_snprintf((char *)buf, buflen, "%d", col);
     else
-       sprintf((char *)buf, "%d-%d", col, vcol);
+       vim_snprintf((char *)buf, buflen, "%d-%d", col, vcol);
 }
 
 #if defined(FEAT_TITLE) || defined(PROTO)
@@ -3194,18 +3197,18 @@ maketitle()
                if (p == buf + off)
                    /* must be a help buffer */
                    vim_strncpy(buf + off, (char_u *)_("help"),
-                                                           IOSIZE - off - 1);
+                                                 (size_t)(IOSIZE - off - 1));
                else
                    *p = NUL;
 
                /* translate unprintable chars */
                p = transstr(buf + off);
-               vim_strncpy(buf + off, p, IOSIZE - off - 1);
+               vim_strncpy(buf + off, p, (size_t)(IOSIZE - off - 1));
                vim_free(p);
                STRCAT(buf, ")");
            }
 
-           append_arg_number(curwin, buf, FALSE, IOSIZE);
+           append_arg_number(curwin, buf, IOSIZE, FALSE);
 
 #if defined(FEAT_CLIENTSERVER)
            if (serverName != NULL)
@@ -3520,7 +3523,7 @@ build_stl_str_hl(wp, out, outlen, fmt, use_sandbox, fillchar, maxwidth, hltab, t
                    n = (long)(p - t) - item[groupitem[groupdepth]].maxwid + 1;
 
                *t = '<';
-               mch_memmove(t + 1, t + n, p - (t + n));
+               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,7 +3553,7 @@ build_stl_str_hl(wp, out, outlen, fmt, use_sandbox, fillchar, maxwidth, hltab, t
                else
                {
                    /* fill by inserting characters */
-                   mch_memmove(t + n - l, t, p - t);
+                   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,7 +3689,7 @@ build_stl_str_hl(wp, out, outlen, fmt, use_sandbox, fillchar, maxwidth, hltab, t
            p = t;
 
 #ifdef FEAT_EVAL
-           sprintf((char *)tmp, "%d", curbuf->b_fnum);
+           vim_snprintf((char *)tmp, sizeof(tmp), "%d", curbuf->b_fnum);
            set_internal_string_var((char_u *)"actual_curbuf", tmp);
 
            o_curbuf = curbuf;
@@ -3753,13 +3756,13 @@ build_stl_str_hl(wp, out, outlen, fmt, use_sandbox, fillchar, maxwidth, hltab, t
 
        case STL_ALTPERCENT:
            str = tmp;
-           get_rel_pos(wp, str);
+           get_rel_pos(wp, str, TMPLEN);
            break;
 
        case STL_ARGLISTSTAT:
            fillable = FALSE;
            tmp[0] = 0;
-           if (append_arg_number(wp, tmp, FALSE, (int)sizeof(tmp)))
+           if (append_arg_number(wp, tmp, (int)sizeof(tmp), FALSE))
                str = tmp;
            break;
 
@@ -3794,7 +3797,7 @@ build_stl_str_hl(wp, out, outlen, fmt, use_sandbox, fillchar, maxwidth, hltab, t
        case STL_BYTEVAL_X:
            base = 'X';
        case STL_BYTEVAL:
-           if (wp->w_cursor.col > STRLEN(linecont))
+           if (wp->w_cursor.col > (colnr_T)STRLEN(linecont))
                num = 0;
            else
            {
@@ -3967,7 +3970,7 @@ build_stl_str_hl(wp, out, outlen, fmt, use_sandbox, fillchar, maxwidth, hltab, t
            if (zeropad)
                *t++ = '0';
            *t++ = '*';
-           *t++ = nbase == 16 ? base : (nbase == 8 ? 'o' : 'd');
+           *t++ = nbase == 16 ? base : (char_u)(nbase == 8 ? 'o' : 'd');
            *t = 0;
 
            for (n = num, l = 1; n >= nbase; n /= nbase)
@@ -4160,13 +4163,14 @@ build_stl_str_hl(wp, out, outlen, fmt, use_sandbox, fillchar, maxwidth, hltab, t
 #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.
+ * 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, str)
+get_rel_pos(wp, buf, buflen)
     win_T      *wp;
-    char_u     *str;
+    char_u     *buf;
+    int                buflen;
 {
     long       above; /* number of lines above window */
     long       below; /* number of lines below window */
@@ -4177,34 +4181,35 @@ get_rel_pos(wp, str)
 #endif
     below = wp->w_buffer->b_ml.ml_line_count - wp->w_botline + 1;
     if (below <= 0)
-       STRCPY(str, above == 0 ? _("All") : _("Bot"));
+       vim_strncpy(buf, (char_u *)(above == 0 ? _("All") : _("Bot")),
+                                                       (size_t)(buflen - 1));
     else if (above <= 0)
-       STRCPY(str, _("Top"));
+       vim_strncpy(buf, (char_u *)_("Top"), (size_t)(buflen - 1));
     else
-       sprintf((char *)str, "%2d%%", above > 1000000L
+       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', if editing more than one file.
+ * Append (file 2 of 8) to "buf[buflen]", if editing more than one file.
  * Return TRUE if it was appended.
  */
-    int
-append_arg_number(wp, buf, add_file, maxlen)
+    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 */
-    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 */
+    p = buf + STRLEN(buf);     /* go to the end of the buffer */
+    if (p - buf + 35 >= buflen)        /* getting too long */
        return FALSE;
     *p++ = ' ';
     *p++ = '(';
@@ -4213,7 +4218,8 @@ append_arg_number(wp, buf, add_file, maxlen)
        STRCPY(p, "file ");
        p += 5;
     }
-    sprintf((char *)p, wp->w_arg_idx_invalid ? "(%d) of %d)"
+    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,7 +5002,7 @@ read_viminfo_bufferlist(virp, writing)
        if (tab != NULL)
        {
            *tab++ = '\0';
-           col = atoi((char *)tab);
+           col = (colnr_T)atoi((char *)tab);
            tab = vim_strrchr(xline, '\t');
            if (tab != NULL)
            {
@@ -5034,6 +5040,7 @@ write_viminfo_bufferlist(fp)
 #endif
     char_u     *line;
     int                max_buffers;
+    size_t     len;
 
     if (find_viminfo_parameter('%') == NULL)
        return;
@@ -5042,7 +5049,8 @@ write_viminfo_bufferlist(fp)
     max_buffers = get_viminfo_parameter('%');
 
     /* Allocate room for the file name, lnum and col. */
-    line = alloc(MAXPATHL + 40);
+#define LINE_BUF_LEN (MAXPATHL + 40)
+    line = alloc(LINE_BUF_LEN);
     if (line == NULL)
        return;
 
@@ -5068,7 +5076,8 @@ write_viminfo_bufferlist(fp)
            break;
        putc('%', fp);
        home_replace(NULL, buf->b_ffname, line, MAXPATHL, TRUE);
-       sprintf((char *)line + STRLEN(line), "\t%ld\t%d",
+       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,7 +5235,7 @@ buf_addsign(buf, id, lnum, typenr)
     return;
 }
 
-    int
+    linenr_T
 buf_change_sign_type(buf, markId, typenr)
     buf_T      *buf;           /* buffer to store sign in */
     int                markId;         /* sign ID */
@@ -5243,10 +5252,10 @@ buf_change_sign_type(buf, markId, typenr)
        }
     }
 
-    return 0;
+    return (linenr_T)0;
 }
 
-    int_u
+    int
 buf_getsigntype(buf, lnum, type)
     buf_T      *buf;
     linenr_T   lnum;
index 0f4b0b99277c1e3ef728fc14171293bf1b6c0179..9bf74a872ee90dc371456af5342d86514668d289 100644 (file)
@@ -17,7 +17,7 @@ static int win_chartabsize __ARGS((win_T *wp, char_u *p, colnr_T col));
 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 unsigned nr2hex __ARGS((unsigned c));
 
 static int    chartab_initialized = FALSE;
 
@@ -664,7 +664,7 @@ transchar_hex(buf, c)
     }
 #endif
     buf[++i] = nr2hex((unsigned)c >> 4);
-    buf[++i] = nr2hex(c);
+    buf[++i] = nr2hex((unsigned)c);
     buf[++i] = '>';
     buf[++i] = NUL;
 }
@@ -674,9 +674,9 @@ transchar_hex(buf, c)
  * Lower case letters are used to avoid the confusion of <F1> being 0xf1 or
  * function key 1.
  */
-    static int
+    static unsigned
 nr2hex(c)
-    int                c;
+    unsigned   c;
 {
     if ((c & 0xf) <= 9)
        return (c & 0xf) + '0';
@@ -884,7 +884,7 @@ vim_iswordc(c)
     if (c >= 0x100)
     {
        if (enc_dbcs != 0)
-           return dbcs_class((unsigned)c >> 8, c & 0xff) >= 2;
+           return dbcs_class((unsigned)c >> 8, (unsigned)(c & 0xff)) >= 2;
        if (enc_utf8)
            return utf_class(c) >= 2;
     }
@@ -1090,7 +1090,7 @@ win_lbr_chartabsize(wp, s, col, headp)
         */
        numberextra = win_col_off(wp);
        col2 = col;
-       colmax = W_WIDTH(wp) - numberextra;
+       colmax = (colnr_T)(W_WIDTH(wp) - numberextra);
        if (col >= colmax)
        {
            n = colmax + win_col_off2(wp);
@@ -1201,17 +1201,17 @@ in_win_border(wp, vcol)
     win_T      *wp;
     colnr_T    vcol;
 {
-    colnr_T    width1;         /* width of first line (after line number) */
-    colnr_T    width2;         /* width of further lines */
+    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 (vcol < width1 - 1)
+    if ((int)vcol < width1 - 1)
        return FALSE;
-    if (vcol == width1 - 1)
+    if ((int)vcol == width1 - 1)
        return TRUE;
     width2 = width1 + win_col_off2(wp);
     return ((vcol - width1) % width2 == width2 - 1);
@@ -1396,13 +1396,13 @@ getvvcol(wp, pos, start, cursor, end)
 # 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))
+       if (pos->col < (colnr_T)STRLEN(ptr))
        {
            int c = (*mb_ptr2char)(ptr + pos->col);
 
            if (c != TAB && vim_isprintc(c))
            {
-               endadd = char2cells(c) - 1;
+               endadd = (colnr_T)(char2cells(c) - 1);
                if (coladd > endadd)    /* past end of line */
                    endadd = 0;
                else
@@ -1573,10 +1573,16 @@ vim_isxdigit(c)
 #define LATIN1LOWER 'l'
 #define LATIN1UPPER 'U'
 
+#ifdef S_SPLINT_S   /* splint can't handle some 8 bit chars */
+static char_u latin1flags[] = (char_u *)" ";
+static char_u latin1upper[] = (char_u *)" ";
+static char_u latin1lower[] = (char_u *)" ";
+#else
 /*                                                                 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]%_'abcdefghijklmnopqrstuvwxyz{|}~                                  ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ */
 static char_u latin1flags[257] = "                                                                 UUUUUUUUUUUUUUUUUUUUUUUUUU      llllllllllllllllllllllllll                                                                     UUUUUUUUUUUUUUUUUUUUUUU UUUUUUUllllllllllllllllllllllll llllllll";
 static char_u latin1upper[257] = "                                 !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~\7f\80\81\82\83\84\85\86\87\88\89\8a\8b\8c\8d\8e\8f\90\91\92\93\94\95\96\97\98\99\9a\9b\9c\9d\9e\9f ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ÷ØÙÚÛÜÝÞÿ";
 static char_u latin1lower[257] = "                                 !\"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\7f\80\81\82\83\84\85\86\87\88\89\8a\8b\8c\8d\8e\8f\90\91\92\93\94\95\96\97\98\99\9a\9b\9c\9d\9e\9f ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿àáâãäåæçèéêëìíîïðñòóôõö×øùúûüýþßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ";
+#endif
 
     int
 vim_islower(c)
diff --git a/src/cleanlint.vim b/src/cleanlint.vim
new file mode 100644 (file)
index 0000000..116a9e1
--- /dev/null
@@ -0,0 +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
index b867598a627cf211250c182c253a2924b69dc116..74b7fb219005124eda146c004b750ec3ecac1935 100644 (file)
@@ -32,7 +32,7 @@ static int getexactdigraph __ARGS((int, int, int));
 static void printdigraph __ARGS((digr_T *));
 
 /* digraphs added by the user */
-static garray_T        user_digraphs = {0, 0, sizeof(digr_T), 10, NULL};
+static garray_T        user_digraphs = {0, 0, (int)sizeof(digr_T), 10, NULL};
 
 /*
  * Note: Characters marked with XX are not included literally, because some
@@ -481,7 +481,7 @@ static digr_T digraphdefault[] =
        {'\'', ' ', 213},       /* ' */
        {'-', ':', 214},        /* ÷ */
        {'D', 'I', 215},        /* × */
-       {'y', ':', 216},        /* ÿ */
+       {'y', ':', 216},        /* <8e> */
        {'Y', ':', 217},        /* \8d */
        {'/', '/', 218},        /* \8e */
        {'E', '=', 219},        /* ¤ Euro System >=8.5 */
@@ -2371,10 +2371,10 @@ printdigraph(dp)
        }
        else
 #endif
-           *p++ = dp->result;
+           *p++ = (char_u)dp->result;
        if (char2cells(dp->result) == 1)
            *p++ = ' ';
-       sprintf((char *)p, " %3d", dp->result);
+       vim_snprintf((char *)p, sizeof(buf) - (p - buf), " %3d", dp->result);
        msg_outtrans(buf);
     }
 }
@@ -2395,7 +2395,10 @@ typedef struct
 static void keymap_unload __ARGS((void));
 
 /*
- * Set up key mapping tables for the 'keymap' option
+ * 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,25 +2415,29 @@ keymap_init()
     else
     {
        char_u  *buf;
+       size_t  buflen;
 
        /* Source the keymap file.  It will contain a ":loadkeymap" command
         * which will call ex_loadkeymap() below. */
-       buf = alloc((unsigned)(STRLEN(curbuf->b_p_keymap)
+       buflen = STRLEN(curbuf->b_p_keymap)
 # ifdef FEAT_MBYTE
-                                                      + STRLEN(p_enc)
+                                          + STRLEN(p_enc)
 # endif
-                                                      + 14));
+                                                      + 14;
+       buf = alloc((unsigned)buflen);
        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);
+       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'  */
-           sprintf((char *)buf, "keymap/%s.vim", curbuf->b_p_keymap);
+           vim_snprintf((char *)buf, buflen, "keymap/%s.vim",
+                                                         curbuf->b_p_keymap);
            if (source_runtime(buf, FALSE) == FAIL)
            {
                vim_free(buf);
index b998f8dfb27a2909b9661f34b36e7642e171716c..65a94a2b06d60fbc21dbf6b6bbebd8e58bdcea29 100644 (file)
@@ -57,7 +57,7 @@ static char *ctrl_x_msgs[] =
     N_(" Keyword Local completion (^N^P)"),
 };
 
-static char_u e_hitend[] = N_("Hit end of paragraph");
+static char e_hitend[] = N_("Hit end of paragraph");
 
 /*
  * Structure used to store one match for insert completion.
@@ -69,7 +69,11 @@ struct compl_S
     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,7 +310,7 @@ edit(cmdchar, startln, count)
     int                c = 0;
     char_u     *ptr;
     int                lastc;
-    colnr_T    mincol;
+    int                mincol;
     static linenr_T o_lnum = 0;
     int                i;
     int                did_backspace = TRUE;       /* previous char was backspace */
@@ -387,7 +391,7 @@ edit(cmdchar, startln, count)
        if (startln)
            Insstart.col = 0;
     }
-    Insstart_textlen = linetabsize(ml_get_curline());
+    Insstart_textlen = (colnr_T)linetabsize(ml_get_curline());
     Insstart_blank_vcol = MAXCOL;
     if (!did_ai)
        ai_col = 0;
@@ -653,7 +657,7 @@ edit(cmdchar, startln, count)
            mincol = curwin->w_wcol;
            validate_cursor_col();
 
-           if ((int)curwin->w_wcol < (int)mincol - curbuf->b_p_ts
+           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,7 +1777,7 @@ change_indent(type, amount, round, replaced, call_changed_bytes)
         * Compute the screen column where the cursor should be.
         */
        vcol = get_indent() - vcol;
-       curwin->w_virtcol = (vcol < 0) ? 0 : vcol;
+       curwin->w_virtcol = (colnr_T)((vcol < 0) ? 0 : vcol);
 
        /*
         * Advance the cursor until we reach the right screen column.
@@ -1800,9 +1804,9 @@ change_indent(type, amount, round, replaced, call_changed_bytes)
         */
        if (vcol != (int)curwin->w_virtcol)
        {
-           curwin->w_cursor.col = new_cursor_col;
+           curwin->w_cursor.col = (colnr_T)new_cursor_col;
            i = (int)curwin->w_virtcol - vcol;
-           ptr = alloc(i + 1);
+           ptr = alloc((unsigned)(i + 1));
            if (ptr != NULL)
            {
                new_cursor_col += i;
@@ -1826,7 +1830,7 @@ change_indent(type, amount, round, replaced, call_changed_bytes)
     if (new_cursor_col <= 0)
        curwin->w_cursor.col = 0;
     else
-       curwin->w_cursor.col = new_cursor_col;
+       curwin->w_cursor.col = (colnr_T)new_cursor_col;
     curwin->w_set_curswant = TRUE;
     changed_cline_bef_curs();
 
@@ -1966,7 +1970,7 @@ del_char_after_col(limit_col)
 #ifdef FEAT_MBYTE
     if (enc_utf8 && limit_col >= 0)
     {
-       int ecol = curwin->w_cursor.col + 1;
+       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,7 +1986,7 @@ del_char_after_col(limit_col)
        }
        if (*ml_get_cursor() == NUL || curwin->w_cursor.col == ecol)
            return FALSE;
-       del_bytes((long)(ecol - curwin->w_cursor.col), FALSE, TRUE);
+       del_bytes((long)((int)ecol - curwin->w_cursor.col), FALSE, TRUE);
     }
     else
 #endif
@@ -2201,7 +2205,7 @@ ins_compl_add_infercase(str, len, icase, fname, dir, flags)
            actual_compl_length = compl_length;
 
        /* Allocate wide character array for the completion and fill it. */
-       wca = (int *)alloc(actual_len * sizeof(int));
+       wca = (int *)alloc((unsigned)(actual_len * sizeof(int)));
        if (wca != NULL)
        {
            p = str;
@@ -2580,7 +2584,7 @@ ins_compl_make_cyclic()
  */
     void
 set_completion(startcol, list)
-    int            startcol;
+    colnr_T startcol;
     list_T  *list;
 {
     /* If already doing completions stop it. */
@@ -2591,10 +2595,10 @@ set_completion(startcol, list)
     if (stop_arrow() == FAIL)
        return;
 
-    if (startcol > (int)curwin->w_cursor.col)
+    if (startcol > curwin->w_cursor.col)
        startcol = curwin->w_cursor.col;
     compl_col = startcol;
-    compl_length = curwin->w_cursor.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,7 +2864,6 @@ ins_compl_dictionaries(dict_start, pat, flags, thesaurus)
     regmatch_T regmatch;
     char_u     **files;
     int                count;
-    int                i;
     int                save_p_scs;
     int                dir = compl_direction;
 
@@ -2892,17 +2895,18 @@ ins_compl_dictionaries(dict_start, pat, flags, thesaurus)
     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;
-       i = (int)STRLEN(pat_esc) + 10;
-       ptr = alloc(i);
+       len = STRLEN(pat_esc) + 10;
+       ptr = alloc((unsigned)len);
        if (ptr == NULL)
        {
            vim_free(pat_esc);
            goto theend;
        }
-       vim_snprintf((char *)ptr, i, "^\\s*\\zs\\V%s", pat_esc);
+       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,7 +2997,7 @@ ins_compl_files(count, files, thesaurus, flags, regmatch, buf, dir)
        {
            vim_snprintf((char *)IObuff, IOSIZE,
                              _("Scanning dictionary: %s"), (char *)files[i]);
-           msg_trunc_attr(IObuff, TRUE, hl_attr(HLF_R));
+           (void)msg_trunc_attr(IObuff, TRUE, hl_attr(HLF_R));
        }
 
        if (fp != NULL)
@@ -3311,7 +3315,7 @@ ins_compl_new_leader()
     static int
 ins_compl_len()
 {
-    int off = curwin->w_cursor.col - compl_col;
+    int off = (int)curwin->w_cursor.col - (int)compl_col;
 
     if (off < 0)
        return 0;
@@ -3347,7 +3351,7 @@ ins_compl_addleader(c)
 
     vim_free(compl_leader);
     compl_leader = vim_strnsave(ml_get_curline() + compl_col,
-                                           curwin->w_cursor.col - compl_col);
+                                    (int)(curwin->w_cursor.col - compl_col));
     if (compl_leader != NULL)
        ins_compl_new_leader();
 }
@@ -3395,7 +3399,7 @@ ins_compl_set_original_text(str)
 ins_compl_addfrommatch()
 {
     char_u     *p;
-    int                len = curwin->w_cursor.col - compl_col;
+    int                len = (int)curwin->w_cursor.col - (int)compl_col;
     int                c;
     compl_T    *cp;
 
@@ -3961,7 +3965,7 @@ ins_compl_get_exp(ini)
                            : ins_buf->b_sfname == NULL
                                ? (char *)ins_buf->b_fname
                                : (char *)ins_buf->b_sfname);
-               msg_trunc_attr(IObuff, TRUE, hl_attr(HLF_R));
+               (void)msg_trunc_attr(IObuff, TRUE, hl_attr(HLF_R));
            }
            else if (*e_cpt == NUL)
                break;
@@ -3991,7 +3995,7 @@ ins_compl_get_exp(ini)
                {
                    type = CTRL_X_TAGS;
                    sprintf((char*)IObuff, _("Scanning tags."));
-                   msg_trunc_attr(IObuff, TRUE, hl_attr(HLF_R));
+                   (void)msg_trunc_attr(IObuff, TRUE, hl_attr(HLF_R));
                }
                else
                    type = -1;
@@ -6320,7 +6324,7 @@ stop_arrow()
            ins_need_undo = FALSE;
        }
        Insstart = curwin->w_cursor;    /* new insertion starts here */
-       Insstart_textlen = linetabsize(ml_get_curline());
+       Insstart_textlen = (colnr_T)linetabsize(ml_get_curline());
        ai_col = 0;
 #ifdef FEAT_VREPLACE
        if (State & VREPLACE_FLAG)
index 250050e917051e02c3bd413249e16498cc2e18ba..e83c6d6286b8d452738f51a20330d9870d7d0052 100644 (file)
@@ -1789,7 +1789,7 @@ write_viminfo(file, forceit)
         * 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_dev = (dev_t)0;
        st_old.st_ino = 0;
        st_old.st_mode = 0600;
        if (mch_stat((char *)fname, &st_old) == 0
@@ -3715,7 +3715,7 @@ do_ecmd(fnum, ffname, sfname, eap, newlnum, flags, oldwin)
     /* 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);
+       (void)did_set_spelllang(curbuf);
 #endif
 
     if (command == NULL)
@@ -3788,7 +3788,7 @@ do_ecmd(fnum, ffname, sfname, eap, newlnum, flags, oldwin)
 
 #ifdef FEAT_KEYMAP
     if (curbuf->b_kmap_state & KEYMAP_INIT)
-       keymap_init();
+       (void)keymap_init();
 #endif
 
     --RedrawingDisabled;
index 548927afdbf8b0d1ce28e66b1a56187feffff090..b870962d4931fda011f3f0e2efe9e14f1bfa781e 100644 (file)
@@ -524,7 +524,7 @@ EXTERN win_T        *lastwin;               /* last window */
 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) \
+# 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,7 +718,7 @@ EXTERN int  can_si_back INIT(= FALSE);
 
 EXTERN pos_T   saved_cursor            /* w_cursor before formatting text. */
 # ifdef DO_INIT
-       = INIT_POS_T
+       = INIT_POS_T(0, 0, 0)
 # endif
        ;
 
@@ -1039,7 +1039,7 @@ EXTERN char_u     *autocmd_match INIT(= NULL); /* name for <amatch> on cmdline */
 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
+                       = INIT_POS_T(0, 0, 0)
 # endif
                        ;
 #endif
index da9fafb7914df1d8f46cea3da636c89a14e719ba..c4318da5ecf05fa14e70140d1b5e600d127331d9 100644 (file)
--- a/src/ops.c
+++ b/src/ops.c
@@ -6400,7 +6400,7 @@ cursor_pos_info()
            {
                getvcols(curwin, &min_pos, &max_pos, &min_pos.col,
                                                                &max_pos.col);
-               sprintf((char *)buf1, _("%ld Cols; "),
+               vim_snprintf((char *)buf1, sizeof(buf1), _("%ld Cols; "),
                        (long)(oparg.end_vcol - oparg.start_vcol + 1));
            }
            else
@@ -6408,13 +6408,15 @@ cursor_pos_info()
 
            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"),
+               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
-               sprintf((char *)IObuff, _("Selected %s%ld of %ld Lines; %ld of %ld Words; %ld of %ld Chars; %ld of %ld Bytes"),
+               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,20 +6428,22 @@ cursor_pos_info()
        {
            p = ml_get_curline();
            validate_virtcol();
-           col_print(buf1, (int)curwin->w_cursor.col + 1,
+           col_print(buf1, sizeof(buf1), (int)curwin->w_cursor.col + 1,
                    (int)curwin->w_virtcol + 1);
-           col_print(buf2, (int)STRLEN(p), linetabsize(p));
+           col_print(buf2, sizeof(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"),
+               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
-               sprintf((char *)IObuff, _("Col %s of %s; Line %ld of %ld; Word %ld of %ld; Char %ld of %ld; Byte %ld of %ld"),
+               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,
index 703b93231c0e0a08c6e125430e7bc020f9ddb26d..d5e681281d68ded8bf97d11fc57e73117b565d0d 100644 (file)
@@ -199,7 +199,9 @@ static int save_patterns __ARGS((int num_pat, char_u **pat, int *num_file, char_
 #endif
 
 #ifndef SIG_ERR
-# define SIG_ERR       ((RETSIGTYPE (*)())-1)
+# ifndef S_SPLINT_S
+#  define SIG_ERR      ((RETSIGTYPE (*)())-1)
+# endif
 #endif
 
 /* volatile because it is used in signal handler sig_winch(). */
@@ -441,7 +443,9 @@ mch_char_avail()
 
 #if defined(HAVE_TOTAL_MEM) || defined(PROTO)
 # ifdef HAVE_SYS_RESOURCE_H
-#  include <sys/resource.h>
+#  ifndef S_SPLINT_S  /* splint crashes on bits/resource.h */
+#   include <sys/resource.h>
+#  endif
 # endif
 # if defined(HAVE_SYS_SYSCTL_H) && defined(HAVE_SYSCTL)
 #  include <sys/sysctl.h>
index a337183c4a07c8ada68afaf1800822d7015501e1..0a37763c1dbde8662dd06d72deb3b3c207df58df 100644 (file)
@@ -53,7 +53,9 @@
 #endif
 
 #ifdef HAVE_UNISTD_H
-# include <unistd.h>
+# ifndef S_SPLINT_S  /* splint crashes on bits/confname.h */
+#  include <unistd.h>
+# endif
 #endif
 
 #ifdef HAVE_LIBC_H
index e14ee8f4c99fdec8244b69e11f71a07d267f1685..a5fe42ff839bc2c133e8e705ca795afad8bb5218 100644 (file)
@@ -37,13 +37,12 @@ void buflist_altfpos __ARGS((win_T *win));
 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 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 *str));
-int append_arg_number __ARGS((win_T *wp, char_u *buf, int add_file, int maxlen));
+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,8 +53,8 @@ int read_viminfo_bufferlist __ARGS((vir_T *virp, int writing));
 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_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));
index 0fb787fad8d6b930ef3543db3ca27c2de0b68e94..e2398c452b0fd262532f983f4b645fc3a209fecd 100644 (file)
@@ -8,7 +8,7 @@ void truncate_spaces __ARGS((char_u *line));
 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 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));
index 6455f112dc3fe734044c9d66e6f47f7c3861766c..c2d7c20299bb24495fc49b2a5ffded0b6de68aae 100644 (file)
@@ -9481,13 +9481,15 @@ win_redr_ruler(wp, always)
     win_T      *wp;
     int                always;
 {
-    char_u     buffer[70];
+#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,11 +9604,12 @@ win_redr_ruler(wp, always)
         * Some sprintfs return the length, some return a pointer.
         * To avoid portability problems we use strlen() here.
         */
-       sprintf((char *)buffer, "%ld,",
+       vim_snprintf((char *)buffer, RULER_BUF_LEN, "%ld,",
                (wp->w_buffer->b_ml.ml_flags & ML_EMPTY)
                    ? 0L
                    : (long)(wp->w_cursor.lnum));
-       col_print(buffer + STRLEN(buffer),
+       len = STRLEN(buffer);
+       col_print(buffer + len, RULER_BUF_LEN - len,
                        empty_line ? 0 : (int)wp->w_cursor.col + 1,
                        (int)virtcol + 1);
 
@@ -9616,7 +9619,7 @@ win_redr_ruler(wp, always)
         * screen up on some terminals).
         */
        i = (int)STRLEN(buffer);
-       get_rel_pos(wp, buffer + i + 1);
+       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,7 +9646,7 @@ win_redr_ruler(wp, always)
                    buffer[i++] = fillchar;
                ++o;
            }
-           get_rel_pos(wp, buffer + i);
+           get_rel_pos(wp, buffer + i, RULER_BUF_LEN - i);
        }
        /* Truncate at window boundary. */
 #ifdef FEAT_MBYTE
index 329676e594a0ba6899f4946d8391c3e6cb48490c..f4f1a877f3a6c1600b3e63d11ced22a78b1b12ef 100644 (file)
@@ -33,9 +33,9 @@ typedef struct
 } pos_T;
 
 #ifdef FEAT_VIRTUALEDIT
-# define INIT_POS_T {0, 0, 0}
+# define INIT_POS_T(l, c, ca) {l, c, ca}
 #else
-# define INIT_POS_T {0, 0}
+# define INIT_POS_T(l, c, ca) {l, c}
 #endif
 
 /*
@@ -1166,7 +1166,7 @@ struct file_buffer
     char_u     *b_fname;       /* current file name */
 
 #ifdef UNIX
-    int                b_dev;          /* device number (-1 if not set) */
+    dev_t      b_dev;          /* device number (-1 if not set) */
     ino_t      b_ino;          /* inode number */
 #endif
 #ifdef FEAT_CW_EDITOR
@@ -1645,7 +1645,11 @@ struct tabpage_S
 #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 */
index 8aa0729de0073db620747e41ec8985e12ad6abc4..028a49ea51b2319467cdf5b2387478d916bf537e 100644 (file)
@@ -676,6 +676,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    167,
 /**/
     166,
 /**/