X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=string.c;h=ba744bff2da640eed755fe14775e4f72b849766f;hp=c0a1951d83fd934c019413dc985e3d70247b3566;hb=bcc0838f240081150a5d11f176326efe95a7d382;hpb=e3868dab3db27242f066bf52d95d0b3f2c0df7e3;ds=sidebyside diff --git a/string.c b/string.c index c0a1951d..ba744bff 100644 --- a/string.c +++ b/string.c @@ -399,20 +399,21 @@ int for_each_line(unsigned flags, char *buf, size_t size, } else end = next_cr; num_lines++; - if (flags & FELF_READ_ONLY) { - size_t s = end - start; - char *b = para_malloc(s + 1); - memcpy(b, start, s); - b[s] = '\0'; -// PARA_NOTICE_LOG("b: %s, start: %s\n", b, start); - ret = line_handler(b, private_data); - free(b); - } else { - *end = '\0'; - ret = line_handler(start, private_data); + if (!(flags & FELF_DISCARD_FIRST) || start != buf) { + if (flags & FELF_READ_ONLY) { + size_t s = end - start; + char *b = para_malloc(s + 1); + memcpy(b, start, s); + b[s] = '\0'; + ret = line_handler(b, private_data); + free(b); + } else { + *end = '\0'; + ret = line_handler(start, private_data); + } + if (ret < 0) + return ret; } - if (ret < 0) - return ret; start = ++end; } i = buf + size - start;