aboutsummaryrefslogtreecommitdiffstats
path: root/main.c
diff options
context:
space:
mode:
authorgotmor <gotmor@f2baff5b-bf2c-0410-a398-912abdc3d8b2>2007-06-02 00:00:29 +0000
committergotmor <gotmor@f2baff5b-bf2c-0410-a398-912abdc3d8b2>2007-06-02 00:00:29 +0000
commit1f7c6f9e62cbc09fa3c2a83311f239b9f6be67d0 (patch)
tree9c62ba9065f2c66d6caf6dc83e54eb8983885c5a /main.c
parent7acf1be658c224c5cbe91b716b8675d863360432 (diff)
downloaddzen-1f7c6f9e62cbc09fa3c2a83311f239b9f6be67d0.tar.gz
dzen-1f7c6f9e62cbc09fa3c2a83311f239b9f6be67d0.zip
fixed bug in chomp
git-svn-id: http://dzen.googlecode.com/svn/trunk@44 f2baff5b-bf2c-0410-a398-912abdc3d8b2
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))) {