abufs should have a capacity
This commit is contained in:
parent
e9fcf3842f
commit
f680d078b6
|
@ -21,7 +21,7 @@ then
|
|||
fi
|
||||
if [ -e "/usr/lib/libefence.a" ]
|
||||
then
|
||||
OS_LIBS="${OS_LIBS} -lefence"
|
||||
OS_LIBS="${OS_LIBS}" # -lefence"
|
||||
fi
|
||||
else
|
||||
OS_CFLAGS=""
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
#include <stdlib.h>
|
||||
#include <termios.h>
|
||||
#include <unistd.h>
|
||||
#include <wctype.h>
|
||||
|
||||
|
||||
struct termios orig_termios;
|
||||
|
@ -33,15 +34,16 @@ main()
|
|||
{
|
||||
enableRawMode();
|
||||
|
||||
char c;
|
||||
while (read(STDIN_FILENO, &c, 1) == 1 && c != 'q') {
|
||||
if (iscntrl(c)) {
|
||||
wchar_t c;
|
||||
while (read(STDIN_FILENO, &c, sizeof(c)) > 0 && c != 'q') {
|
||||
if (iswcntrl(c)) {
|
||||
printf("$%02x\n", c);
|
||||
} else {
|
||||
printf("$%02x ('%c')\n", c, c);
|
||||
printf("$%02x ('%lc')\n", c, c);
|
||||
}
|
||||
}
|
||||
|
||||
perror("read");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
20
ke/main.c
20
ke/main.c
|
@ -51,8 +51,9 @@
|
|||
struct abuf {
|
||||
char *b;
|
||||
int len;
|
||||
int cap;
|
||||
};
|
||||
#define ABUF_INIT {NULL, 0}
|
||||
#define ABUF_INIT {NULL, 0, 0}
|
||||
|
||||
void ab_append(struct abuf *buf, const char *s, int len);
|
||||
void ab_free(struct abuf *buf);
|
||||
|
@ -157,10 +158,19 @@ struct editor_t {
|
|||
void
|
||||
ab_append(struct abuf *buf, const char *s, int len)
|
||||
{
|
||||
char *nc = realloc(buf->b, buf->len + len);
|
||||
char *nc = buf->b;
|
||||
int sz = buf->len + len;
|
||||
|
||||
if (nc == NULL) {
|
||||
abort();
|
||||
if (sz >= buf->cap) {
|
||||
while (sz > buf->cap) {
|
||||
if (buf->cap == 0) {
|
||||
buf->cap = 1;
|
||||
} else {
|
||||
buf->cap *= 2;
|
||||
}
|
||||
}
|
||||
nc = realloc(nc, buf->cap);
|
||||
assert(nc != NULL);
|
||||
}
|
||||
|
||||
memcpy(&nc[buf->len], s, len);
|
||||
|
@ -174,6 +184,8 @@ ab_free(struct abuf *buf)
|
|||
{
|
||||
free(buf->b);
|
||||
buf->b = NULL;
|
||||
buf->len = 0;
|
||||
buf->cap = 0;
|
||||
}
|
||||
|
||||
char
|
||||
|
|
Loading…
Reference in New Issue