diff options
author | gotmor <gotmor@f2baff5b-bf2c-0410-a398-912abdc3d8b2> | 2007-06-02 00:00:29 +0000 |
---|---|---|
committer | gotmor <gotmor@f2baff5b-bf2c-0410-a398-912abdc3d8b2> | 2007-06-02 00:00:29 +0000 |
commit | 1f7c6f9e62cbc09fa3c2a83311f239b9f6be67d0 (patch) | |
tree | 9c62ba9065f2c66d6caf6dc83e54eb8983885c5a /main.c | |
parent | 7acf1be658c224c5cbe91b716b8675d863360432 (diff) | |
download | dzen-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.c | 11 |
1 files changed, 10 insertions, 1 deletions
@@ -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))) { |