diff options
author | Bram Moolenaar <Bram@vim.org> | 2009-05-13 10:51:08 +0000 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2009-05-13 10:51:08 +0000 |
commit | 0ab2a8870cc335acd99f7f4d806f802818d97014 (patch) | |
tree | 604a7a94f20947c47cb08fb013fb84c62b6e9ca9 /src/buffer.c | |
parent | 3c65e314b432707440593d9ecf8d016b99e8ed8c (diff) | |
download | vim-0ab2a8870cc335acd99f7f4d806f802818d97014.zip |
updated for version 7.2-168
Diffstat (limited to 'src/buffer.c')
-rw-r--r-- | src/buffer.c | 91 |
1 files changed, 50 insertions, 41 deletions
diff --git a/src/buffer.c b/src/buffer.c index a052e12c6..e9243d456 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -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; |