summaryrefslogtreecommitdiff
path: root/src/buffer.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2009-05-13 10:51:08 +0000
committerBram Moolenaar <Bram@vim.org>2009-05-13 10:51:08 +0000
commit0ab2a8870cc335acd99f7f4d806f802818d97014 (patch)
tree604a7a94f20947c47cb08fb013fb84c62b6e9ca9 /src/buffer.c
parent3c65e314b432707440593d9ecf8d016b99e8ed8c (diff)
downloadvim-0ab2a8870cc335acd99f7f4d806f802818d97014.zip
updated for version 7.2-168
Diffstat (limited to 'src/buffer.c')
-rw-r--r--src/buffer.c91
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;