|
Lines 219-230
grep_fgetln(struct file *f, size_t *lenp)
Link Here
|
| 219 |
if (bufrem == 0) |
219 |
if (bufrem == 0) |
| 220 |
/* EOF: return partial line */ |
220 |
/* EOF: return partial line */ |
| 221 |
break; |
221 |
break; |
| 222 |
if ((p = memchr(bufpos, '\n', bufrem)) == NULL) |
222 |
if ((p = memchr(bufpos, '\n', bufrem)) == NULL && filebehave != FILE_MMAP) |
| 223 |
continue; |
223 |
continue; |
| 224 |
/* got it: finish up the line (like code above) */ |
224 |
if (p == NULL) |
| 225 |
++p; |
225 |
/* mmap EOF: return partial line, consume rest of buffer */ |
| 226 |
diff = p - bufpos; |
226 |
diff = len; |
| 227 |
len += diff; |
227 |
else { |
|
|
228 |
/* got it: finish up the line (like code above) */ |
| 229 |
++p; |
| 230 |
diff = p - bufpos; |
| 231 |
len += diff; |
| 232 |
} |
| 228 |
if (grep_lnbufgrow(len)) |
233 |
if (grep_lnbufgrow(len)) |
| 229 |
goto error; |
234 |
goto error; |
| 230 |
memcpy(lnbuf + off, bufpos, diff); |
235 |
memcpy(lnbuf + off, bufpos, diff); |