Introduction
Introduction Statistics Contact Development Disclaimer Help
tlbuf: do not use an sbuf struct in lbuf_rd() - neatvi - [fork] simple vi-type …
git clone git://src.adamsgaard.dk/neatvi
Log
Files
Refs
README
---
commit d77ba570505085a2c006463b174d6fc6da62b3d5
parent d45220ca72fc434031d68ec33a553de6ebf0262e
Author: Ali Gholami Rudi <[email protected]>
Date: Thu, 11 Jun 2015 15:42:25 +0430
lbuf: do not use an sbuf struct in lbuf_rd()
Diffstat:
M lbuf.c | 19 ++++++++-----------
1 file changed, 8 insertions(+), 11 deletions(-)
---
diff --git a/lbuf.c b/lbuf.c
t@@ -79,20 +79,17 @@ static void lbuf_insertline(struct lbuf *lb, int pos, char…
/* low-level insertion */
static void lbuf_insert(struct lbuf *lb, int pos, char *s)
{
- int len = strlen(s);
- struct sbuf *sb;
int lb_len = lbuf_len(lb);
int beg = pos, end;
+ char *r;
int i;
- sb = sbuf_make();
- for (i = 0; i < len; i++) {
- sbuf_chr(sb, (unsigned char) s[i]);
- if (s[i] == '\n') {
- lbuf_insertline(lb, pos++, sbuf_done(sb));
- sb = sbuf_make();
- }
+ while ((r = strchr(s, '\n'))) {
+ char *n = malloc(r - s + 2);
+ memcpy(n, s, r - s + 1);
+ n[r - s + 1] = '\0';
+ lbuf_insertline(lb, pos++, n);
+ s = r + 1;
}
- sbuf_free(sb);
for (i = 0; i < LEN(lb->mark); i++) /* updating marks */
if (lb->mark[i] >= pos)
lb->mark[i] += lbuf_len(lb) - lb_len;
t@@ -152,7 +149,7 @@ static void lbuf_opt(struct lbuf *lb, int ins, int beg, in…
void lbuf_rd(struct lbuf *lbuf, int fd, int pos)
{
- char buf[1 << 8];
+ char buf[1 << 10];
struct sbuf *sb;
int nr;
sb = sbuf_make();
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.