| 534 | } |
| 535 | |
| 536 | static enum field_terminator |
| 537 | scan_mb_delim_field (mbbuf_t *mbbuf, bool *have_pending_line, |
| 538 | bool write_field, idx_t *n_bytes) |
| 539 | { |
| 540 | while (true) |
| 541 | { |
| 542 | mcel_t g = mbbuf_get_char (mbbuf); |
| 543 | if (g.ch == MBBUF_EOF) |
| 544 | return FIELD_EOF; |
| 545 | |
| 546 | *have_pending_line = true; |
| 547 | |
| 548 | if (g.ch == line_delim) |
| 549 | return FIELD_LINE_DELIMITER; |
| 550 | |
| 551 | if (delim_mcel.err ? g.err == delim_mcel.err : mcel_eq (g, delim_mcel)) |
| 552 | return FIELD_DELIMITER; |
| 553 | |
| 554 | if (n_bytes) |
| 555 | append_field_1_bytes (mbbuf, g, n_bytes); |
| 556 | else if (write_field) |
| 557 | write_bytes (mbbuf_char_offset (mbbuf, g), g.len); |
| 558 | } |
| 559 | } |
| 560 | |
| 561 | static inline enum field_terminator |
| 562 | scan_mb_field (mbbuf_t *mbbuf, struct mbfield_parser *parser, |
no test coverage detected