splitting things out
This commit is contained in:
parent
464de25980
commit
fd45ff4019
|
@ -1,5 +1,5 @@
|
||||||
BIN := ke
|
BIN := ke
|
||||||
OBJS := main.o
|
OBJS := main.o abuf.o
|
||||||
|
|
||||||
LDFLAGS :=
|
LDFLAGS :=
|
||||||
CFLAGS := -pedantic -Wall -Werror -Wextra -O0 -std=c99 -g
|
CFLAGS := -pedantic -Wall -Werror -Wextra -O0 -std=c99 -g
|
||||||
|
@ -10,8 +10,8 @@ all: build
|
||||||
.PHONY: build
|
.PHONY: build
|
||||||
build: $(BIN)
|
build: $(BIN)
|
||||||
|
|
||||||
$(BIN): main.c
|
$(BIN): $(OBJS)
|
||||||
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ main.c
|
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(OBJS)
|
||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
|
@ -30,4 +30,3 @@ install: $(BIN)
|
||||||
cp $(BIN) $(HOME)/bin/
|
cp $(BIN) $(HOME)/bin/
|
||||||
|
|
||||||
%.o: %.c
|
%.o: %.c
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "abuf.h"
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
ab_append(struct abuf *buf, const char *s, int len)
|
||||||
|
{
|
||||||
|
char *nc = realloc(buf->b, buf->len + len);
|
||||||
|
|
||||||
|
if (nc == NULL) {
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
|
||||||
|
memcpy(&nc[buf->len], s, len);
|
||||||
|
buf->b = nc;
|
||||||
|
buf->len += len; /* DANGER: overflow */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
ab_free(struct abuf *buf)
|
||||||
|
{
|
||||||
|
free(buf->b);
|
||||||
|
buf->b = NULL;
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
#ifndef KE_ABUF_H
|
||||||
|
#define KE_ABUF_H
|
||||||
|
|
||||||
|
struct abuf {
|
||||||
|
char *b;
|
||||||
|
int len;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define ABUF_INIT {NULL, 0}
|
||||||
|
|
||||||
|
|
||||||
|
void ab_append(struct abuf *buf, const char *s, int len);
|
||||||
|
void ab_free(struct abuf *buf);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* KE_ABUF_H */
|
33
ke/main.c
33
ke/main.c
|
@ -5,6 +5,7 @@
|
||||||
* https://viewsourcecode.org/snaptoken/kilo/
|
* https://viewsourcecode.org/snaptoken/kilo/
|
||||||
*/
|
*/
|
||||||
#include <sys/ioctl.h>
|
#include <sys/ioctl.h>
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
@ -17,6 +18,8 @@
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
|
#include "abuf.h"
|
||||||
|
|
||||||
|
|
||||||
#define KE_VERSION "0.0.1-pre"
|
#define KE_VERSION "0.0.1-pre"
|
||||||
#define ESCSEQ "\x1b["
|
#define ESCSEQ "\x1b["
|
||||||
|
@ -82,36 +85,6 @@ struct {
|
||||||
} editor;
|
} editor;
|
||||||
|
|
||||||
|
|
||||||
/* append buffer */
|
|
||||||
struct abuf {
|
|
||||||
char *b;
|
|
||||||
int len;
|
|
||||||
};
|
|
||||||
#define ABUF_INIT {NULL, 0}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
ab_append(struct abuf *buf, const char *s, int len)
|
|
||||||
{
|
|
||||||
char *nc = realloc(buf->b, buf->len + len);
|
|
||||||
|
|
||||||
if (nc == NULL) {
|
|
||||||
abort();
|
|
||||||
}
|
|
||||||
|
|
||||||
memcpy(&nc[buf->len], s, len);
|
|
||||||
buf->b = nc;
|
|
||||||
buf->len += len; /* DANGER: overflow */
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
ab_free(struct abuf *buf)
|
|
||||||
{
|
|
||||||
free(buf->b);
|
|
||||||
buf->b = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
die(const char *s)
|
die(const char *s)
|
||||||
|
|
Loading…
Reference in New Issue