aboutsummaryrefslogtreecommitdiffstats
path: root/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'main.c')
-rw-r--r--main.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/main.c b/main.c
index c5472d5..3cf4cd9 100644
--- a/main.c
+++ b/main.c
@@ -53,11 +53,18 @@ setup_signal(int signr, sigfunc *shandler) {
return NULL;
}
+char *rem=NULL;
static int
chomp(char *inbuf, char *outbuf, int start, int len) {
int i=0;
int off=start;
+ if(rem) {
+ strncpy(outbuf, rem, strlen(rem));
+ i += strlen(rem);
+ free(rem);
+ rem = NULL;
+ }
while(off < len) {
if(inbuf[off] != '\n') {
outbuf[i++] = inbuf[off++];
@@ -66,7 +73,9 @@ chomp(char *inbuf, char *outbuf, int start, int len) {
return ++off;
}
}
+
outbuf[i] = '\0';
+ rem = estrdup(outbuf);
return 0;
}
@@ -81,7 +90,7 @@ free_buffer(void) {
static int
read_stdin(void *ptr) {
- char buf[1024], retbuf[1024];
+ char buf[1024], retbuf[2048];
ssize_t n, n_off=0;
if(!(n = read(STDIN_FILENO, buf, sizeof buf))) {