Branch Coverage

CSV_XS.xs
Criterion Covered Total %
branch 1635 3348 48.8


line true false branch
384 70143 923 while (xs_errors[i].xs_errno && xs_errors[i].xs_errno != xse) i++;
67475 2668 while (xs_errors[i].xs_errno && xs_errors[i].xs_errno != xse) i++;
385 3591 0 if ((err = newSVpv (xs_errors[i].xs_errstr, 0))) {
386 3591 0 (void)SvUPGRADE (err, SVt_PVIV);
403 6 1692 if (xse == 0) {
409 333 1365 if (xse == 2012) /* EOF */
411 284 1414 if (csv->auto_diag) {
412 284 0 unless (_is_hashref (pself))
0 284 unless (_is_hashref (pself))
0 0 unless (_is_hashref (pself))
122 162 unless (_is_hashref (pself))
0 122 unless (_is_hashref (pself))
415 0 284 PUSHMARK (SP);
416 0 284 XPUSHs (pself);
420 161 120 unless (pself == csv->pself)
439 22477 764 unless ((svp = hv_fetchs (hv, "_CACHE", FALSE)) && *svp)
0 22477 unless ((svp = hv_fetchs (hv, "_CACHE", FALSE)) && *svp)
442 22477 0 cache = (byte *)SvPV_nolen (*svp);
445 16683 5794 if (SvPOK (val))
446 16683 0 cp = SvPV (val, len);
447 5782 16695 if (SvIOK (val))
448 5782 0 iv = SvIV (val);
449 0 16695 else if (SvNOK (val)) /* Needed for 5.6.x but safe for 5.8.x+ */
450 0 0 iv = (IV)SvNV (val); /* uncoverable statement ancient perl required */
501 3223 0 csv->sep_len = len == 1 ? 0 : len;
506 3377 0 csv->quo_len = len == 1 ? 0 : len;
512 90 22 csv->eol_is_cr = len == 1 && *cp == CH_CR ? 1 : 0;
75 15 csv->eol_is_cr = len == 1 && *cp == CH_CR ? 1 : 0;
516 8 3 if (*cp) {
518 1 7 if (SvUTF8 (val))
528 1 1 csv->comment_str = *cp ? (byte *)cp : NULL;
532 1 0 if (cp && len) {
0 1 if (cp && len) {
572 1 1 unless ((svp = hv_fetchs (hv, "_CACHE", FALSE)) && *svp) {
0 1 unless ((svp = hv_fetchs (hv, "_CACHE", FALSE)) && *svp) {
577 1 0 cache = (byte *)SvPV_nolen (*svp);
612 1 0 if (csv->sep_len > 1)
615 1 0 if (csv->quo_len > 1)
617 0 1 if (csv->types_len)
622 1 0 if (csv->bptr)
624 1 0 if (csv->tmp && SvPOK (csv->tmp)) {
0 1 if (csv->tmp && SvPOK (csv->tmp)) {
625 0 0 char *s = SvPV_nolen (csv->tmp);
648 26453 823 if ((svp = hv_fetchs (self, "_CACHE", FALSE)) && *svp) {
26453 0 if ((svp = hv_fetchs (self, "_CACHE", FALSE)) && *svp) {
661 823 0 if ((svp = hv_fetchs (self, "sep_char", FALSE)) && *svp && SvOK (*svp))
823 0 if ((svp = hv_fetchs (self, "sep_char", FALSE)) && *svp && SvOK (*svp))
0 823 if ((svp = hv_fetchs (self, "sep_char", FALSE)) && *svp && SvOK (*svp))
0 0 if ((svp = hv_fetchs (self, "sep_char", FALSE)) && *svp && SvOK (*svp))
0 0 if ((svp = hv_fetchs (self, "sep_char", FALSE)) && *svp && SvOK (*svp))
662 823 0 CH_SEP = *SvPV (*svp, len);
663 224 599 if ((svp = hv_fetchs (self, "sep", FALSE)) && *svp && SvOK (*svp)) {
224 0 if ((svp = hv_fetchs (self, "sep", FALSE)) && *svp && SvOK (*svp)) {
0 224 if ((svp = hv_fetchs (self, "sep", FALSE)) && *svp && SvOK (*svp)) {
0 0 if ((svp = hv_fetchs (self, "sep", FALSE)) && *svp && SvOK (*svp)) {
0 0 if ((svp = hv_fetchs (self, "sep", FALSE)) && *svp && SvOK (*svp)) {
664 224 0 ptr = SvPV (*svp, len);
666 5 219 if (len > 1)
671 823 0 if ((svp = hv_fetchs (self, "quote_char", FALSE)) && *svp) {
823 0 if ((svp = hv_fetchs (self, "quote_char", FALSE)) && *svp) {
672 3 820 if (SvOK (*svp)) {
3 0 if (SvOK (*svp)) {
0 3 if (SvOK (*svp)) {
673 820 0 ptr = SvPV (*svp, len);
674 820 0 CH_QUOTE = len ? *ptr : (char)0;
679 6 817 if ((svp = hv_fetchs (self, "quote", FALSE)) && *svp && SvOK (*svp)) {
6 0 if ((svp = hv_fetchs (self, "quote", FALSE)) && *svp && SvOK (*svp)) {
1 5 if ((svp = hv_fetchs (self, "quote", FALSE)) && *svp && SvOK (*svp)) {
1 0 if ((svp = hv_fetchs (self, "quote", FALSE)) && *svp && SvOK (*svp)) {
0 1 if ((svp = hv_fetchs (self, "quote", FALSE)) && *svp && SvOK (*svp)) {
680 5 0 ptr = SvPV (*svp, len);
682 4 1 if (len > 1)
687 823 0 if ((svp = hv_fetchs (self, "escape_char", FALSE)) && *svp) {
823 0 if ((svp = hv_fetchs (self, "escape_char", FALSE)) && *svp) {
688 6 817 if (SvOK (*svp)) {
6 0 if (SvOK (*svp)) {
0 6 if (SvOK (*svp)) {
689 817 0 ptr = SvPV (*svp, len);
690 815 2 csv->escape_char = len ? *ptr : (char)0;
696 823 0 if ((svp = hv_fetchs (self, "eol", FALSE)) && *svp && SvOK (*svp)) {
823 0 if ((svp = hv_fetchs (self, "eol", FALSE)) && *svp && SvOK (*svp)) {
4 819 if ((svp = hv_fetchs (self, "eol", FALSE)) && *svp && SvOK (*svp)) {
4 0 if ((svp = hv_fetchs (self, "eol", FALSE)) && *svp && SvOK (*svp)) {
0 4 if ((svp = hv_fetchs (self, "eol", FALSE)) && *svp && SvOK (*svp)) {
697 819 0 char *eol = SvPV (*svp, len);
700 101 718 if (len == 1 && *csv->eol == CH_CR)
42 59 if (len == 1 && *csv->eol == CH_CR)
705 823 0 if ((svp = hv_fetchs (self, "undef_str", FALSE)) && *svp && SvOK (*svp)) {
823 0 if ((svp = hv_fetchs (self, "undef_str", FALSE)) && *svp && SvOK (*svp)) {
822 1 if ((svp = hv_fetchs (self, "undef_str", FALSE)) && *svp && SvOK (*svp)) {
822 0 if ((svp = hv_fetchs (self, "undef_str", FALSE)) && *svp && SvOK (*svp)) {
0 822 if ((svp = hv_fetchs (self, "undef_str", FALSE)) && *svp && SvOK (*svp)) {
708 1 0 csv->undef_str = (byte *)SvPV_nolen (*svp);
709 0 1 if (SvUTF8 (*svp))
715 823 0 if ((svp = hv_fetchs (self, "comment_str", FALSE)) && *svp && SvOK (*svp))
823 0 if ((svp = hv_fetchs (self, "comment_str", FALSE)) && *svp && SvOK (*svp))
811 12 if ((svp = hv_fetchs (self, "comment_str", FALSE)) && *svp && SvOK (*svp))
811 0 if ((svp = hv_fetchs (self, "comment_str", FALSE)) && *svp && SvOK (*svp))
0 811 if ((svp = hv_fetchs (self, "comment_str", FALSE)) && *svp && SvOK (*svp))
716 12 0 csv->comment_str = (byte *)SvPV_nolen (*svp);
720 1 822 if ((svp = hv_fetchs (self, "_types", FALSE)) && *svp && SvOK (*svp)) {
1 0 if ((svp = hv_fetchs (self, "_types", FALSE)) && *svp && SvOK (*svp)) {
0 1 if ((svp = hv_fetchs (self, "_types", FALSE)) && *svp && SvOK (*svp)) {
0 0 if ((svp = hv_fetchs (self, "_types", FALSE)) && *svp && SvOK (*svp)) {
0 0 if ((svp = hv_fetchs (self, "_types", FALSE)) && *svp && SvOK (*svp)) {
721 1 0 csv->types = SvPV (*svp, len);
725 4 819 if ((svp = hv_fetchs (self, "_is_bound", FALSE)) && *svp && SvOK (*svp))
4 0 if ((svp = hv_fetchs (self, "_is_bound", FALSE)) && *svp && SvOK (*svp))
0 4 if ((svp = hv_fetchs (self, "_is_bound", FALSE)) && *svp && SvOK (*svp))
0 0 if ((svp = hv_fetchs (self, "_is_bound", FALSE)) && *svp && SvOK (*svp))
0 0 if ((svp = hv_fetchs (self, "_is_bound", FALSE)) && *svp && SvOK (*svp))
726 4 0 csv->is_bound = SvIV (*svp);
727 823 0 if ((svp = hv_fetchs (self, "callbacks", FALSE)) && _is_hashref (*svp)) {
823 0 if ((svp = hv_fetchs (self, "callbacks", FALSE)) && _is_hashref (*svp)) {
0 823 if ((svp = hv_fetchs (self, "callbacks", FALSE)) && _is_hashref (*svp)) {
0 0 if ((svp = hv_fetchs (self, "callbacks", FALSE)) && _is_hashref (*svp)) {
301 522 if ((svp = hv_fetchs (self, "callbacks", FALSE)) && _is_hashref (*svp)) {
301 0 if ((svp = hv_fetchs (self, "callbacks", FALSE)) && _is_hashref (*svp)) {
729 9 292 if ((svp = hv_fetchs (cb, "after_parse", FALSE)) && _is_coderef (*svp))
9 0 if ((svp = hv_fetchs (cb, "after_parse", FALSE)) && _is_coderef (*svp))
0 9 if ((svp = hv_fetchs (cb, "after_parse", FALSE)) && _is_coderef (*svp))
0 0 if ((svp = hv_fetchs (cb, "after_parse", FALSE)) && _is_coderef (*svp))
9 0 if ((svp = hv_fetchs (cb, "after_parse", FALSE)) && _is_coderef (*svp))
9 0 if ((svp = hv_fetchs (cb, "after_parse", FALSE)) && _is_coderef (*svp))
731 1 300 if ((svp = hv_fetchs (cb, "before_print", FALSE)) && _is_coderef (*svp))
1 0 if ((svp = hv_fetchs (cb, "before_print", FALSE)) && _is_coderef (*svp))
0 1 if ((svp = hv_fetchs (cb, "before_print", FALSE)) && _is_coderef (*svp))
0 0 if ((svp = hv_fetchs (cb, "before_print", FALSE)) && _is_coderef (*svp))
1 0 if ((svp = hv_fetchs (cb, "before_print", FALSE)) && _is_coderef (*svp))
1 0 if ((svp = hv_fetchs (cb, "before_print", FALSE)) && _is_coderef (*svp))
735 823 0 csv->binary = bool_opt ("binary");
823 0 csv->binary = bool_opt ("binary");
823 0 csv->binary = bool_opt ("binary");
0 823 csv->binary = bool_opt ("binary");
0 0 csv->binary = bool_opt ("binary");
0 823 csv->binary = bool_opt ("binary");
0 0 csv->binary = bool_opt ("binary");
0 0 csv->binary = bool_opt ("binary");
0 823 csv->binary = bool_opt ("binary");
0 0 csv->binary = bool_opt ("binary");
0 0 csv->binary = bool_opt ("binary");
0 0 csv->binary = bool_opt ("binary");
0 0 csv->binary = bool_opt ("binary");
0 0 csv->binary = bool_opt ("binary");
823 0 csv->binary = bool_opt ("binary");
823 0 csv->binary = bool_opt ("binary");
289 534 csv->binary = bool_opt ("binary");
0 289 csv->binary = bool_opt ("binary");
0 0 csv->binary = bool_opt ("binary");
534 289 csv->binary = bool_opt ("binary");
0 0 csv->binary = bool_opt ("binary");
736 823 0 csv->decode_utf8 = bool_opt ("decode_utf8");
823 0 csv->decode_utf8 = bool_opt ("decode_utf8");
823 0 csv->decode_utf8 = bool_opt ("decode_utf8");
0 823 csv->decode_utf8 = bool_opt ("decode_utf8");
0 0 csv->decode_utf8 = bool_opt ("decode_utf8");
0 823 csv->decode_utf8 = bool_opt ("decode_utf8");
0 0 csv->decode_utf8 = bool_opt ("decode_utf8");
0 0 csv->decode_utf8 = bool_opt ("decode_utf8");
0 823 csv->decode_utf8 = bool_opt ("decode_utf8");
0 0 csv->decode_utf8 = bool_opt ("decode_utf8");
0 0 csv->decode_utf8 = bool_opt ("decode_utf8");
0 0 csv->decode_utf8 = bool_opt ("decode_utf8");
0 0 csv->decode_utf8 = bool_opt ("decode_utf8");
0 0 csv->decode_utf8 = bool_opt ("decode_utf8");
823 0 csv->decode_utf8 = bool_opt ("decode_utf8");
823 0 csv->decode_utf8 = bool_opt ("decode_utf8");
0 823 csv->decode_utf8 = bool_opt ("decode_utf8");
0 0 csv->decode_utf8 = bool_opt ("decode_utf8");
0 0 csv->decode_utf8 = bool_opt ("decode_utf8");
823 0 csv->decode_utf8 = bool_opt ("decode_utf8");
0 0 csv->decode_utf8 = bool_opt ("decode_utf8");
737 823 0 csv->always_quote = bool_opt ("always_quote");
823 0 csv->always_quote = bool_opt ("always_quote");
823 0 csv->always_quote = bool_opt ("always_quote");
0 823 csv->always_quote = bool_opt ("always_quote");
0 0 csv->always_quote = bool_opt ("always_quote");
0 823 csv->always_quote = bool_opt ("always_quote");
0 0 csv->always_quote = bool_opt ("always_quote");
0 0 csv->always_quote = bool_opt ("always_quote");
1 822 csv->always_quote = bool_opt ("always_quote");
1 0 csv->always_quote = bool_opt ("always_quote");
1 0 csv->always_quote = bool_opt ("always_quote");
1 0 csv->always_quote = bool_opt ("always_quote");
0 1 csv->always_quote = bool_opt ("always_quote");
0 1 csv->always_quote = bool_opt ("always_quote");
822 0 csv->always_quote = bool_opt ("always_quote");
822 0 csv->always_quote = bool_opt ("always_quote");
806 16 csv->always_quote = bool_opt ("always_quote");
0 806 csv->always_quote = bool_opt ("always_quote");
0 0 csv->always_quote = bool_opt ("always_quote");
16 806 csv->always_quote = bool_opt ("always_quote");
0 0 csv->always_quote = bool_opt ("always_quote");
738 823 0 csv->strict = bool_opt ("strict");
823 0 csv->strict = bool_opt ("strict");
823 0 csv->strict = bool_opt ("strict");
0 823 csv->strict = bool_opt ("strict");
0 0 csv->strict = bool_opt ("strict");
0 823 csv->strict = bool_opt ("strict");
0 0 csv->strict = bool_opt ("strict");
0 0 csv->strict = bool_opt ("strict");
0 823 csv->strict = bool_opt ("strict");
0 0 csv->strict = bool_opt ("strict");
0 0 csv->strict = bool_opt ("strict");
0 0 csv->strict = bool_opt ("strict");
0 0 csv->strict = bool_opt ("strict");
0 0 csv->strict = bool_opt ("strict");
823 0 csv->strict = bool_opt ("strict");
823 0 csv->strict = bool_opt ("strict");
815 8 csv->strict = bool_opt ("strict");
0 815 csv->strict = bool_opt ("strict");
0 0 csv->strict = bool_opt ("strict");
8 815 csv->strict = bool_opt ("strict");
0 0 csv->strict = bool_opt ("strict");
739 823 0 csv->quote_empty = bool_opt ("quote_empty");
823 0 csv->quote_empty = bool_opt ("quote_empty");
823 0 csv->quote_empty = bool_opt ("quote_empty");
0 823 csv->quote_empty = bool_opt ("quote_empty");
0 0 csv->quote_empty = bool_opt ("quote_empty");
0 823 csv->quote_empty = bool_opt ("quote_empty");
0 0 csv->quote_empty = bool_opt ("quote_empty");
0 0 csv->quote_empty = bool_opt ("quote_empty");
0 823 csv->quote_empty = bool_opt ("quote_empty");
0 0 csv->quote_empty = bool_opt ("quote_empty");
0 0 csv->quote_empty = bool_opt ("quote_empty");
0 0 csv->quote_empty = bool_opt ("quote_empty");
0 0 csv->quote_empty = bool_opt ("quote_empty");
0 0 csv->quote_empty = bool_opt ("quote_empty");
823 0 csv->quote_empty = bool_opt ("quote_empty");
823 0 csv->quote_empty = bool_opt ("quote_empty");
811 12 csv->quote_empty = bool_opt ("quote_empty");
0 811 csv->quote_empty = bool_opt ("quote_empty");
0 0 csv->quote_empty = bool_opt ("quote_empty");
12 811 csv->quote_empty = bool_opt ("quote_empty");
0 0 csv->quote_empty = bool_opt ("quote_empty");
740 823 0 csv->quote_space = bool_opt_def ("quote_space", 1);
823 0 csv->quote_space = bool_opt_def ("quote_space", 1);
823 0 csv->quote_space = bool_opt_def ("quote_space", 1);
0 823 csv->quote_space = bool_opt_def ("quote_space", 1);
0 0 csv->quote_space = bool_opt_def ("quote_space", 1);
0 823 csv->quote_space = bool_opt_def ("quote_space", 1);
0 0 csv->quote_space = bool_opt_def ("quote_space", 1);
0 0 csv->quote_space = bool_opt_def ("quote_space", 1);
0 823 csv->quote_space = bool_opt_def ("quote_space", 1);
0 0 csv->quote_space = bool_opt_def ("quote_space", 1);
0 0 csv->quote_space = bool_opt_def ("quote_space", 1);
0 0 csv->quote_space = bool_opt_def ("quote_space", 1);
0 0 csv->quote_space = bool_opt_def ("quote_space", 1);
0 0 csv->quote_space = bool_opt_def ("quote_space", 1);
823 0 csv->quote_space = bool_opt_def ("quote_space", 1);
823 0 csv->quote_space = bool_opt_def ("quote_space", 1);
6 817 csv->quote_space = bool_opt_def ("quote_space", 1);
0 6 csv->quote_space = bool_opt_def ("quote_space", 1);
0 0 csv->quote_space = bool_opt_def ("quote_space", 1);
817 6 csv->quote_space = bool_opt_def ("quote_space", 1);
0 0 csv->quote_space = bool_opt_def ("quote_space", 1);
741 823 0 csv->escape_null = bool_opt_def ("escape_null", 1);
823 0 csv->escape_null = bool_opt_def ("escape_null", 1);
823 0 csv->escape_null = bool_opt_def ("escape_null", 1);
0 823 csv->escape_null = bool_opt_def ("escape_null", 1);
0 0 csv->escape_null = bool_opt_def ("escape_null", 1);
0 823 csv->escape_null = bool_opt_def ("escape_null", 1);
0 0 csv->escape_null = bool_opt_def ("escape_null", 1);
0 0 csv->escape_null = bool_opt_def ("escape_null", 1);
0 823 csv->escape_null = bool_opt_def ("escape_null", 1);
0 0 csv->escape_null = bool_opt_def ("escape_null", 1);
0 0 csv->escape_null = bool_opt_def ("escape_null", 1);
0 0 csv->escape_null = bool_opt_def ("escape_null", 1);
0 0 csv->escape_null = bool_opt_def ("escape_null", 1);
0 0 csv->escape_null = bool_opt_def ("escape_null", 1);
823 0 csv->escape_null = bool_opt_def ("escape_null", 1);
823 0 csv->escape_null = bool_opt_def ("escape_null", 1);
302 521 csv->escape_null = bool_opt_def ("escape_null", 1);
0 302 csv->escape_null = bool_opt_def ("escape_null", 1);
0 0 csv->escape_null = bool_opt_def ("escape_null", 1);
521 302 csv->escape_null = bool_opt_def ("escape_null", 1);
0 0 csv->escape_null = bool_opt_def ("escape_null", 1);
742 823 0 csv->quote_binary = bool_opt_def ("quote_binary", 1);
823 0 csv->quote_binary = bool_opt_def ("quote_binary", 1);
823 0 csv->quote_binary = bool_opt_def ("quote_binary", 1);
0 823 csv->quote_binary = bool_opt_def ("quote_binary", 1);
0 0 csv->quote_binary = bool_opt_def ("quote_binary", 1);
0 823 csv->quote_binary = bool_opt_def ("quote_binary", 1);
0 0 csv->quote_binary = bool_opt_def ("quote_binary", 1);
0 0 csv->quote_binary = bool_opt_def ("quote_binary", 1);
0 823 csv->quote_binary = bool_opt_def ("quote_binary", 1);
0 0 csv->quote_binary = bool_opt_def ("quote_binary", 1);
0 0 csv->quote_binary = bool_opt_def ("quote_binary", 1);
0 0 csv->quote_binary = bool_opt_def ("quote_binary", 1);
0 0 csv->quote_binary = bool_opt_def ("quote_binary", 1);
0 0 csv->quote_binary = bool_opt_def ("quote_binary", 1);
823 0 csv->quote_binary = bool_opt_def ("quote_binary", 1);
823 0 csv->quote_binary = bool_opt_def ("quote_binary", 1);
0 823 csv->quote_binary = bool_opt_def ("quote_binary", 1);
0 0 csv->quote_binary = bool_opt_def ("quote_binary", 1);
0 0 csv->quote_binary = bool_opt_def ("quote_binary", 1);
823 0 csv->quote_binary = bool_opt_def ("quote_binary", 1);
0 0 csv->quote_binary = bool_opt_def ("quote_binary", 1);
743 823 0 csv->allow_loose_quotes = bool_opt ("allow_loose_quotes");
823 0 csv->allow_loose_quotes = bool_opt ("allow_loose_quotes");
823 0 csv->allow_loose_quotes = bool_opt ("allow_loose_quotes");
0 823 csv->allow_loose_quotes = bool_opt ("allow_loose_quotes");
0 0 csv->allow_loose_quotes = bool_opt ("allow_loose_quotes");
0 823 csv->allow_loose_quotes = bool_opt ("allow_loose_quotes");
0 0 csv->allow_loose_quotes = bool_opt ("allow_loose_quotes");
0 0 csv->allow_loose_quotes = bool_opt ("allow_loose_quotes");
0 823 csv->allow_loose_quotes = bool_opt ("allow_loose_quotes");
0 0 csv->allow_loose_quotes = bool_opt ("allow_loose_quotes");
0 0 csv->allow_loose_quotes = bool_opt ("allow_loose_quotes");
0 0 csv->allow_loose_quotes = bool_opt ("allow_loose_quotes");
0 0 csv->allow_loose_quotes = bool_opt ("allow_loose_quotes");
0 0 csv->allow_loose_quotes = bool_opt ("allow_loose_quotes");
823 0 csv->allow_loose_quotes = bool_opt ("allow_loose_quotes");
823 0 csv->allow_loose_quotes = bool_opt ("allow_loose_quotes");
819 4 csv->allow_loose_quotes = bool_opt ("allow_loose_quotes");
0 819 csv->allow_loose_quotes = bool_opt ("allow_loose_quotes");
0 0 csv->allow_loose_quotes = bool_opt ("allow_loose_quotes");
4 819 csv->allow_loose_quotes = bool_opt ("allow_loose_quotes");
0 0 csv->allow_loose_quotes = bool_opt ("allow_loose_quotes");
744 823 0 csv->allow_loose_escapes = bool_opt ("allow_loose_escapes");
823 0 csv->allow_loose_escapes = bool_opt ("allow_loose_escapes");
823 0 csv->allow_loose_escapes = bool_opt ("allow_loose_escapes");
0 823 csv->allow_loose_escapes = bool_opt ("allow_loose_escapes");
0 0 csv->allow_loose_escapes = bool_opt ("allow_loose_escapes");
0 823 csv->allow_loose_escapes = bool_opt ("allow_loose_escapes");
0 0 csv->allow_loose_escapes = bool_opt ("allow_loose_escapes");
0 0 csv->allow_loose_escapes = bool_opt ("allow_loose_escapes");
0 823 csv->allow_loose_escapes = bool_opt ("allow_loose_escapes");
0 0 csv->allow_loose_escapes = bool_opt ("allow_loose_escapes");
0 0 csv->allow_loose_escapes = bool_opt ("allow_loose_escapes");
0 0 csv->allow_loose_escapes = bool_opt ("allow_loose_escapes");
0 0 csv->allow_loose_escapes = bool_opt ("allow_loose_escapes");
0 0 csv->allow_loose_escapes = bool_opt ("allow_loose_escapes");
823 0 csv->allow_loose_escapes = bool_opt ("allow_loose_escapes");
823 0 csv->allow_loose_escapes = bool_opt ("allow_loose_escapes");
822 1 csv->allow_loose_escapes = bool_opt ("allow_loose_escapes");
0 822 csv->allow_loose_escapes = bool_opt ("allow_loose_escapes");
0 0 csv->allow_loose_escapes = bool_opt ("allow_loose_escapes");
1 822 csv->allow_loose_escapes = bool_opt ("allow_loose_escapes");
0 0 csv->allow_loose_escapes = bool_opt ("allow_loose_escapes");
745 823 0 csv->allow_unquoted_escape = bool_opt ("allow_unquoted_escape");
823 0 csv->allow_unquoted_escape = bool_opt ("allow_unquoted_escape");
823 0 csv->allow_unquoted_escape = bool_opt ("allow_unquoted_escape");
0 823 csv->allow_unquoted_escape = bool_opt ("allow_unquoted_escape");
0 0 csv->allow_unquoted_escape = bool_opt ("allow_unquoted_escape");
0 823 csv->allow_unquoted_escape = bool_opt ("allow_unquoted_escape");
0 0 csv->allow_unquoted_escape = bool_opt ("allow_unquoted_escape");
0 0 csv->allow_unquoted_escape = bool_opt ("allow_unquoted_escape");
0 823 csv->allow_unquoted_escape = bool_opt ("allow_unquoted_escape");
0 0 csv->allow_unquoted_escape = bool_opt ("allow_unquoted_escape");
0 0 csv->allow_unquoted_escape = bool_opt ("allow_unquoted_escape");
0 0 csv->allow_unquoted_escape = bool_opt ("allow_unquoted_escape");
0 0 csv->allow_unquoted_escape = bool_opt ("allow_unquoted_escape");
0 0 csv->allow_unquoted_escape = bool_opt ("allow_unquoted_escape");
823 0 csv->allow_unquoted_escape = bool_opt ("allow_unquoted_escape");
823 0 csv->allow_unquoted_escape = bool_opt ("allow_unquoted_escape");
822 1 csv->allow_unquoted_escape = bool_opt ("allow_unquoted_escape");
0 822 csv->allow_unquoted_escape = bool_opt ("allow_unquoted_escape");
0 0 csv->allow_unquoted_escape = bool_opt ("allow_unquoted_escape");
1 822 csv->allow_unquoted_escape = bool_opt ("allow_unquoted_escape");
0 0 csv->allow_unquoted_escape = bool_opt ("allow_unquoted_escape");
746 823 0 csv->allow_whitespace = bool_opt ("allow_whitespace");
823 0 csv->allow_whitespace = bool_opt ("allow_whitespace");
823 0 csv->allow_whitespace = bool_opt ("allow_whitespace");
0 823 csv->allow_whitespace = bool_opt ("allow_whitespace");
0 0 csv->allow_whitespace = bool_opt ("allow_whitespace");
0 823 csv->allow_whitespace = bool_opt ("allow_whitespace");
0 0 csv->allow_whitespace = bool_opt ("allow_whitespace");
0 0 csv->allow_whitespace = bool_opt ("allow_whitespace");
0 823 csv->allow_whitespace = bool_opt ("allow_whitespace");
0 0 csv->allow_whitespace = bool_opt ("allow_whitespace");
0 0 csv->allow_whitespace = bool_opt ("allow_whitespace");
0 0 csv->allow_whitespace = bool_opt ("allow_whitespace");
0 0 csv->allow_whitespace = bool_opt ("allow_whitespace");
0 0 csv->allow_whitespace = bool_opt ("allow_whitespace");
823 0 csv->allow_whitespace = bool_opt ("allow_whitespace");
823 0 csv->allow_whitespace = bool_opt ("allow_whitespace");
809 14 csv->allow_whitespace = bool_opt ("allow_whitespace");
0 809 csv->allow_whitespace = bool_opt ("allow_whitespace");
0 0 csv->allow_whitespace = bool_opt ("allow_whitespace");
14 809 csv->allow_whitespace = bool_opt ("allow_whitespace");
0 0 csv->allow_whitespace = bool_opt ("allow_whitespace");
747 823 0 csv->blank_is_undef = bool_opt ("blank_is_undef");
823 0 csv->blank_is_undef = bool_opt ("blank_is_undef");
823 0 csv->blank_is_undef = bool_opt ("blank_is_undef");
0 823 csv->blank_is_undef = bool_opt ("blank_is_undef");
0 0 csv->blank_is_undef = bool_opt ("blank_is_undef");
0 823 csv->blank_is_undef = bool_opt ("blank_is_undef");
0 0 csv->blank_is_undef = bool_opt ("blank_is_undef");
0 0 csv->blank_is_undef = bool_opt ("blank_is_undef");
0 823 csv->blank_is_undef = bool_opt ("blank_is_undef");
0 0 csv->blank_is_undef = bool_opt ("blank_is_undef");
0 0 csv->blank_is_undef = bool_opt ("blank_is_undef");
0 0 csv->blank_is_undef = bool_opt ("blank_is_undef");
0 0 csv->blank_is_undef = bool_opt ("blank_is_undef");
0 0 csv->blank_is_undef = bool_opt ("blank_is_undef");
823 0 csv->blank_is_undef = bool_opt ("blank_is_undef");
823 0 csv->blank_is_undef = bool_opt ("blank_is_undef");
817 6 csv->blank_is_undef = bool_opt ("blank_is_undef");
0 817 csv->blank_is_undef = bool_opt ("blank_is_undef");
0 0 csv->blank_is_undef = bool_opt ("blank_is_undef");
6 817 csv->blank_is_undef = bool_opt ("blank_is_undef");
0 0 csv->blank_is_undef = bool_opt ("blank_is_undef");
748 823 0 csv->empty_is_undef = bool_opt ("empty_is_undef");
823 0 csv->empty_is_undef = bool_opt ("empty_is_undef");
823 0 csv->empty_is_undef = bool_opt ("empty_is_undef");
0 823 csv->empty_is_undef = bool_opt ("empty_is_undef");
0 0 csv->empty_is_undef = bool_opt ("empty_is_undef");
0 823 csv->empty_is_undef = bool_opt ("empty_is_undef");
0 0 csv->empty_is_undef = bool_opt ("empty_is_undef");
0 0 csv->empty_is_undef = bool_opt ("empty_is_undef");
0 823 csv->empty_is_undef = bool_opt ("empty_is_undef");
0 0 csv->empty_is_undef = bool_opt ("empty_is_undef");
0 0 csv->empty_is_undef = bool_opt ("empty_is_undef");
0 0 csv->empty_is_undef = bool_opt ("empty_is_undef");
0 0 csv->empty_is_undef = bool_opt ("empty_is_undef");
0 0 csv->empty_is_undef = bool_opt ("empty_is_undef");
823 0 csv->empty_is_undef = bool_opt ("empty_is_undef");
823 0 csv->empty_is_undef = bool_opt ("empty_is_undef");
819 4 csv->empty_is_undef = bool_opt ("empty_is_undef");
0 819 csv->empty_is_undef = bool_opt ("empty_is_undef");
0 0 csv->empty_is_undef = bool_opt ("empty_is_undef");
4 819 csv->empty_is_undef = bool_opt ("empty_is_undef");
0 0 csv->empty_is_undef = bool_opt ("empty_is_undef");
749 823 0 csv->verbatim = bool_opt ("verbatim");
823 0 csv->verbatim = bool_opt ("verbatim");
823 0 csv->verbatim = bool_opt ("verbatim");
0 823 csv->verbatim = bool_opt ("verbatim");
0 0 csv->verbatim = bool_opt ("verbatim");
0 823 csv->verbatim = bool_opt ("verbatim");
0 0 csv->verbatim = bool_opt ("verbatim");
0 0 csv->verbatim = bool_opt ("verbatim");
0 823 csv->verbatim = bool_opt ("verbatim");
0 0 csv->verbatim = bool_opt ("verbatim");
0 0 csv->verbatim = bool_opt ("verbatim");
0 0 csv->verbatim = bool_opt ("verbatim");
0 0 csv->verbatim = bool_opt ("verbatim");
0 0 csv->verbatim = bool_opt ("verbatim");
823 0 csv->verbatim = bool_opt ("verbatim");
823 0 csv->verbatim = bool_opt ("verbatim");
822 1 csv->verbatim = bool_opt ("verbatim");
0 822 csv->verbatim = bool_opt ("verbatim");
0 0 csv->verbatim = bool_opt ("verbatim");
1 822 csv->verbatim = bool_opt ("verbatim");
0 0 csv->verbatim = bool_opt ("verbatim");
751 823 0 csv->auto_diag = num_opt ("auto_diag");
823 0 csv->auto_diag = num_opt ("auto_diag");
823 0 csv->auto_diag = num_opt ("auto_diag");
752 823 0 csv->diag_verbose = num_opt ("diag_verbose");
823 0 csv->diag_verbose = num_opt ("diag_verbose");
823 0 csv->diag_verbose = num_opt ("diag_verbose");
753 823 0 csv->keep_meta_info = num_opt ("keep_meta_info");
823 0 csv->keep_meta_info = num_opt ("keep_meta_info");
823 0 csv->keep_meta_info = num_opt ("keep_meta_info");
754 823 0 csv->skip_empty_rows = num_opt ("skip_empty_rows");
823 0 csv->skip_empty_rows = num_opt ("skip_empty_rows");
823 0 csv->skip_empty_rows = num_opt ("skip_empty_rows");
755 823 0 csv->formula = num_opt ("formula");
823 0 csv->formula = num_opt ("formula");
823 0 csv->formula = num_opt ("formula");
757 8 815 unless (csv->escape_char) csv->escape_null = 0;
773 27254 22 csv->first_safe_char = csv->quote_space ? 0x21 : 0x20;
775 83 27193 if (csv->is_bound) {
776 83 0 if ((svp = hv_fetchs (self, "_BOUND_COLUMNS", FALSE)) && _is_arrayref (*svp))
83 0 if ((svp = hv_fetchs (self, "_BOUND_COLUMNS", FALSE)) && _is_arrayref (*svp))
0 83 if ((svp = hv_fetchs (self, "_BOUND_COLUMNS", FALSE)) && _is_arrayref (*svp))
0 0 if ((svp = hv_fetchs (self, "_BOUND_COLUMNS", FALSE)) && _is_arrayref (*svp))
69 14 if ((svp = hv_fetchs (self, "_BOUND_COLUMNS", FALSE)) && _is_arrayref (*svp))
69 0 if ((svp = hv_fetchs (self, "_BOUND_COLUMNS", FALSE)) && _is_arrayref (*svp))
784 853 452 ? csv->verbatim || csv->eol_len >= 2
786 366 487 : csv->eol[0] == CH_CR || csv->eol[0] == CH_NL
788 52 314 : 1
789 1312 25964 : 0;
1305 7 : 0;
790 51 27225 if (csv->sep_len > 1 && is_utf8_string ((U8 *)(csv->sep), csv->sep_len))
51 0 if (csv->sep_len > 1 && is_utf8_string ((U8 *)(csv->sep), csv->sep_len))
792 27 27249 if (csv->quo_len > 1 && is_utf8_string ((U8 *)(csv->quo), csv->quo_len))
27 0 if (csv->quo_len > 1 && is_utf8_string ((U8 *)(csv->quo), csv->quo_len))
801 939877 1389 if (csv->useIO) {
804 0 939877 PUSHMARK (sp);
805 0 939877 EXTEND (sp, 2);
807 939649 228 if (csv->utf8) {
812 939649 0 ptr = SvPV (tmp, len);
813 1690511 0 while (len > 0 && !is_utf8_sv (tmp) && keep < 16) {
1690511 0 while (len > 0 && !is_utf8_sv (tmp) && keep < 16) {
750862 939649 while (len > 0 && !is_utf8_sv (tmp) && keep < 16) {
750862 0 while (len > 0 && !is_utf8_sv (tmp) && keep < 16) {
818 750862 939649 for (j = 0; j < keep; j++)
826 939877 0 if (result) {
827 939876 1 result = POPi;
828 1 939876 unless (result)
837 939674 1592 if (csv->utf8 && !csv->useIO && csv->decode_utf8
25 939649 if (csv->utf8 && !csv->useIO && csv->decode_utf8
25 0 if (csv->utf8 && !csv->useIO && csv->decode_utf8
838 25 0 && SvROK (dst) && is_utf8_sv (SvRV (dst)))
25 0 && SvROK (dst) && is_utf8_sv (SvRV (dst)))
24 1 && SvROK (dst) && is_utf8_sv (SvRV (dst)))
858 3 98 if (i >= csv->is_bound) {
863 98 0 if (sv && SvROK (sv)) {
98 0 if (sv && SvROK (sv)) {
867 98 0 if (sv && SvROK (sv)) {
98 0 if (sv && SvROK (sv)) {
869 14 84 if (keep)
872 83 1 unless (SvREADONLY (sv)) {
885 17 0 return (x && SvIOK (*x) && SvIV (*x) & CSV_FLAGS_QUO ? 1 : 0);
17 0 return (x && SvIOK (*x) && SvIV (*x) & CSV_FLAGS_QUO ? 1 : 0);
17 0 return (x && SvIOK (*x) && SvIV (*x) & CSV_FLAGS_QUO ? 1 : 0);
7 10 return (x && SvIOK (*x) && SvIV (*x) & CSV_FLAGS_QUO ? 1 : 0);
0 0 return (x && SvIOK (*x) && SvIV (*x) & CSV_FLAGS_QUO ? 1 : 0);
893 3 34 if (fa == 1) die ("Formulas are forbidden\n");
894 3 31 if (fa == 2) croak ("Formulas are forbidden\n");
896 6 25 if (fa == 3) {
897 6 0 char *ptr = SvPV_nolen (sv);
902 3 3 if (csv->recno) (void)sprintf (rec, " in record %lu", csv->recno + 1);
906 6 0 if ((svp = hv_fetchs (csv->self, "_COLUMN_NAMES", FALSE)) && _is_arrayref (*svp)) {
6 0 if ((svp = hv_fetchs (csv->self, "_COLUMN_NAMES", FALSE)) && _is_arrayref (*svp)) {
0 6 if ((svp = hv_fetchs (csv->self, "_COLUMN_NAMES", FALSE)) && _is_arrayref (*svp)) {
0 0 if ((svp = hv_fetchs (csv->self, "_COLUMN_NAMES", FALSE)) && _is_arrayref (*svp)) {
1 5 if ((svp = hv_fetchs (csv->self, "_COLUMN_NAMES", FALSE)) && _is_arrayref (*svp)) {
1 0 if ((svp = hv_fetchs (csv->self, "_COLUMN_NAMES", FALSE)) && _is_arrayref (*svp)) {
908 1 0 if (avp && av_len (avp) >= (f - 1)) {
1 0 if (avp && av_len (avp) >= (f - 1)) {
910 1 0 if (fnm && *fnm && SvOK (*fnm))
1 0 if (fnm && *fnm && SvOK (*fnm))
0 1 if (fnm && *fnm && SvOK (*fnm))
0 0 if (fnm && *fnm && SvOK (*fnm))
0 0 if (fnm && *fnm && SvOK (*fnm))
911 1 0 (void)sprintf (field, " (column: '%.100s')", SvPV_nolen (*fnm));
919 4 21 if (len) *len = 0;
921 5 20 if (fa == 4) {
922 3 2 unless (SvREADONLY (sv)) SvSetEmpty (sv);
926 5 15 if (fa == 5) {
927 3 2 unless (SvREADONLY (sv)) SvSetUndef (sv);
931 15 0 if (fa == 6) {
934 15 0 if (svp && _is_coderef (*svp)) {
15 0 if (svp && _is_coderef (*svp)) {
0 15 if (svp && _is_coderef (*svp)) {
0 0 if (svp && _is_coderef (*svp)) {
15 0 if (svp && _is_coderef (*svp)) {
15 0 if (svp && _is_coderef (*svp)) {
938 15 0 DEFSV = sv;
939 0 15 PUSHMARK (SP);
943 15 0 if (result)
948 0 15 return len ? SvPV (sv, *len) : SvPV_nolen (sv);
0 0 return len ? SvPV (sv, *len) : SvPV_nolen (sv);
9 6 return len ? SvPV (sv, *len) : SvPV_nolen (sv);
1038 6 21641 if (n < 0 && csv->is_bound) {
5 1 if (n < 0 && csv->is_bound) {
1043 2 21645 if (kmi >= 10) {
1045 2 0 if ((svp = hv_fetchs (csv->self, "_FFLAGS", FALSE)) && _is_arrayref (*svp)) {
2 0 if ((svp = hv_fetchs (csv->self, "_FFLAGS", FALSE)) && _is_arrayref (*svp)) {
0 2 if ((svp = hv_fetchs (csv->self, "_FFLAGS", FALSE)) && _is_arrayref (*svp)) {
0 0 if ((svp = hv_fetchs (csv->self, "_FFLAGS", FALSE)) && _is_arrayref (*svp)) {
2 0 if ((svp = hv_fetchs (csv->self, "_FFLAGS", FALSE)) && _is_arrayref (*svp)) {
2 0 if ((svp = hv_fetchs (csv->self, "_FFLAGS", FALSE)) && _is_arrayref (*svp)) {
1047 2 0 if (avp && av_len (avp) >= n)
2 0 if (avp && av_len (avp) >= n)
1052 53845 21636 for (i = 0; i <= n; i++) {
1057 32199 21646 if (i > 0) {
1058 0 32199 CSV_PUT (csv, dst, CH_SEP);
0 0 CSV_PUT (csv, dst, CH_SEP);
1059 10 32189 if (csv->sep_len) {
1061 20 10 for (x = 1; x < (int)csv->sep_len; x++)
1062 0 20 CSV_PUT (csv, dst, csv->sep[x]);
0 0 CSV_PUT (csv, dst, csv->sep[x]);
1066 14 53831 if (bound)
1070 53831 0 sv = svp && *svp ? *svp : NULL;
53831 0 sv = svp && *svp ? *svp : NULL;
1073 53845 0 if (sv && (SvOK (sv) || (
53 53792 if (sv && (SvOK (sv) || (
53 0 if (sv && (SvOK (sv) || (
53 0 if (sv && (SvOK (sv) || (
0 53 if (sv && (SvOK (sv) || (
1074 0 0 (SvGMAGICAL (sv) && (mg_get (sv), 1) && SvOK (sv))))) {
0 0 (SvGMAGICAL (sv) && (mg_get (sv), 1) && SvOK (sv))))) {
0 0 (SvGMAGICAL (sv) && (mg_get (sv), 1) && SvOK (sv))))) {
1078 32244 21548 ptr = SvPV (sv, len);
1080 16 53776 if (*ptr == '=' && csv->formula) {
10 6 if (*ptr == '=' && csv->formula) {
1081 2 4 unless (ptr = _formula (csv, sv, &len, i))
1084 1404 52382 if (len == 0)
1085 755 649 quoteMe = aq ? 1 : qe ? 1 : qm ? was_quoted (qm, i) : 0;
752 3 quoteMe = aq ? 1 : qe ? 1 : qm ? was_quoted (qm, i) : 0;
5 747 quoteMe = aq ? 1 : qe ? 1 : qm ? was_quoted (qm, i) : 0;
1088 20041 32341 if (SvUTF8 (sv)) {
1093 46759 5623 quoteMe = aq ? 1 : qm ? was_quoted (qm, i) : 0;
12 46747 quoteMe = aq ? 1 : qm ? was_quoted (qm, i) : 0;
1099 46754 5628 if (!quoteMe &&
25179 21575 if (!quoteMe &&
1100 25797 20957 ( quoteMe = (!SvIOK (sv) && !SvNOK (sv) && CH_QUOTE))) {
25182 615 ( quoteMe = (!SvIOK (sv) && !SvNOK (sv) && CH_QUOTE))) {
25179 3 ( quoteMe = (!SvIOK (sv) && !SvNOK (sv) && CH_QUOTE))) {
1108 83767 2049 for (ptr2 = ptr, l = len; l; ++ptr2, --l) {
1119 83767 0 if ((CH_QUOTE && c == CH_QUOTE) ||
83459 308 if ((CH_QUOTE && c == CH_QUOTE) ||
81456 2003 if ((CH_QUOTE && c == CH_QUOTE) ||
83074 10 if ((CH_QUOTE && c == CH_QUOTE) ||
1120 81305 151 (CH_SEP && c == CH_SEP) ||
83304 4 (CH_SEP && c == CH_SEP) ||
1121 83080 224 (csv->escape_char && c == csv->escape_char) ||
60629 22445 (csv->escape_char && c == csv->escape_char) ||
8 2 (csv->escape_char && c == csv->escape_char) ||
1122 40061 43013 (csv->quote_binary ? (x >= 0x7f && x <= 0xa0) ||
20040 20021 (csv->quote_binary ? (x >= 0x7f && x <= 0xa0) ||
2424 60629 (csv->quote_binary ? (x >= 0x7f && x <= 0xa0) ||
1124 10 0 : c == CH_NL || c == CH_CR ||
10 0 : c == CH_NL || c == CH_CR ||
5 5 : c == CH_NL || c == CH_CR ||
1125 3 2 (csv->quote_space && (
1126 0 3 c == CH_SPACE || c == CH_TAB)))) {
1137 29412 24374 if (quoteMe) {
1138 0 29412 CSV_PUT (csv, dst, CH_QUOTE);
0 0 CSV_PUT (csv, dst, CH_QUOTE);
1139 17 29395 if (csv->quo_len) {
1141 34 17 for (x = 1; x < (int)csv->quo_len; x++)
1142 0 34 CSV_PUT (csv, dst, csv->quo[x]);
0 0 CSV_PUT (csv, dst, csv->quo[x]);
1145 950361452 53779 while (len-- > 0) {
1149 755 950360697 if (!csv->binary && is_csv_binary (c)) {
738 17 if (!csv->binary && is_csv_binary (c)) {
0 738 if (!csv->binary && is_csv_binary (c)) {
7 10 if (!csv->binary && is_csv_binary (c)) {
1152 0 7 unless (hv_store (csv->self, "_ERROR_INPUT", 12, sv, 0))
1157 950361436 9 if (CH_QUOTE && (byte)c == CH_QUOTE && (csv->quo_len == 0 ||
3225 950358211 if (CH_QUOTE && (byte)c == CH_QUOTE && (csv->quo_len == 0 ||
9 3216 if (CH_QUOTE && (byte)c == CH_QUOTE && (csv->quo_len == 0 ||
1 8 if (CH_QUOTE && (byte)c == CH_QUOTE && (csv->quo_len == 0 ||
1161 2165 950356063 if (c == csv->escape_char && csv->escape_char)
2163 2 if (c == csv->escape_char && csv->escape_char)
1164 56 950356009 if (c == (char)0 && csv->escape_null) {
29 27 if (c == (char)0 && csv->escape_null) {
1168 5409 950356036 if (e && csv->escape_char)
5409 0 if (e && csv->escape_char)
1169 0 5409 CSV_PUT (csv, dst, csv->escape_char);
0 0 CSV_PUT (csv, dst, csv->escape_char);
1170 919632 949441813 CSV_PUT (csv, dst, c);
0 919632 CSV_PUT (csv, dst, c);
1172 29405 24374 if (quoteMe) {
1173 0 29405 CSV_PUT (csv, dst, CH_QUOTE);
0 0 CSV_PUT (csv, dst, CH_QUOTE);
1174 17 29388 if (csv->quo_len) {
1176 34 17 for (x = 1; x < (int)csv->quo_len; x++)
1177 0 34 CSV_PUT (csv, dst, csv->quo[x]);
0 0 CSV_PUT (csv, dst, csv->quo[x]);
1182 8 45 if (csv->undef_str) {
1186 3 5 if (csv->undef_flg) {
1191 20 8 while (len--)
1192 0 20 CSV_PUT (csv, dst, *ptr++);
0 0 CSV_PUT (csv, dst, *ptr++);
1196 249 21387 if (csv->eol_len) {
1200 447 249 while (len--)
1201 0 447 CSV_PUT (csv, dst, *ptr++);
0 0 CSV_PUT (csv, dst, *ptr++);
1203 21634 2 if (csv->used)
1212 299 0 if (csv->tmp) {
1214 299 0 if (hv_store (csv->self, "_ERROR_INPUT", 12, csv->tmp, 0))
1222 1518 3350 unless (csv->useIO)
1225 904 2446 if (csv->tmp && csv->eol_pos >= 0) {
348 556 if (csv->tmp && csv->eol_pos >= 0) {
1228 348 0 csv->bptr = SvPV (csv->tmp, csv->size);
1236 0 3002 PUSHMARK (sp);
1237 0 3002 EXTEND (sp, 1);
1243 3002 0 csv->tmp = result ? POPs : NULL;
1251 3002 0 if (csv->tmp && SvOK (csv->tmp)) {
549 2453 if (csv->tmp && SvOK (csv->tmp)) {
549 0 if (csv->tmp && SvOK (csv->tmp)) {
0 549 if (csv->tmp && SvOK (csv->tmp)) {
1253 2453 0 csv->bptr = SvPV (csv->tmp, tmp_len);
1256 358 2095 if (csv->eolx && csv->size >= csv->eol_len) {
358 0 if (csv->eolx && csv->size >= csv->eol_len) {
1258 1463 354 for (i = 1; i <= (int)csv->eol_len; i++) {
1259 4 1459 unless (csv->bptr[csv->size - i] == csv->eol[csv->eol_len - i]) {
1264 354 4 if (match) {
1269 351 3 unless (csv->verbatim)
1273 351 3 unless (csv->verbatim || csv->size)
6 345 unless (csv->verbatim || csv->size)
1277 70 2377 if (SvUTF8 (csv->tmp)) csv->utf8 = 1;
1278 2447 0 if (tmp_len)
1394 1723 0 char *s = SvPV (sv, len);
1395 1723 0 unless (s && len) return;
0 1723 unless (s && len) return;
1396 176 1723 while (s[len - 1] == CH_SPACE || s[len - 1] == CH_TAB)
0 1723 while (s[len - 1] == CH_SPACE || s[len - 1] == CH_TAB)
1445 183266 3462 while ((c = CSV_GET) != EOF) {
185991 737 while ((c = CSV_GET) != EOF) {
1447 22825 163166 NewField;
86 22739 NewField;
4 22821 NewField;
1459 11879 184842 if (is_SEP (c)) {
88 11791 if (is_SEP (c)) {
88 0 if (is_SEP (c)) {
30 58 if (is_SEP (c)) {
30 0 if (is_SEP (c)) {
1465 1173 10648 if (waitingForField) {
1469 1147 26 if (csv->blank_is_undef || csv->empty_is_undef)
24 1123 if (csv->blank_is_undef || csv->empty_is_undef)
1473 1173 0 unless (csv->is_bound)
1476 8 1165 if (csv->keep_meta_info && fflags)
8 0 if (csv->keep_meta_info && fflags)
1480 2194 8454 if (f & CSV_FLAGS_QUO) {
1484 0 2194 CSV_PUT_SV (c)
0 0 CSV_PUT_SV (c)
0 0 CSV_PUT_SV (c)
0 0 CSV_PUT_SV (c)
0 0 CSV_PUT_SV (c)
0 2194 CSV_PUT_SV (c)
0 0 CSV_PUT_SV (c)
0 0 CSV_PUT_SV (c)
0 0 CSV_PUT_SV (c)
0 2194 CSV_PUT_SV (c)
0 0 CSV_PUT_SV (c)
0 0 CSV_PUT_SV (c)
0 0 CSV_PUT_SV (c)
2194 0 CSV_PUT_SV (c)
144 2050 CSV_PUT_SV (c)
1490 8452 2 AV_PUSH;
90 8362 AV_PUSH;
90 0 AV_PUSH;
19 71 AV_PUSH;
2 8450 AV_PUSH;
2 0 AV_PUSH;
2 0 AV_PUSH;
0 2 AV_PUSH;
1635 6817 AV_PUSH;
1635 0 AV_PUSH;
34 8418 AV_PUSH;
34 0 AV_PUSH;
32 2 AV_PUSH;
32 0 AV_PUSH;
22 10 AV_PUSH;
5 8447 AV_PUSH;
8405 47 AV_PUSH;
21 8431 AV_PUSH;
21 0 AV_PUSH;
1494 183869 1031 if (is_QUOTE (c)) {
22836 161033 if (is_QUOTE (c)) {
86 22750 if (is_QUOTE (c)) {
86 0 if (is_QUOTE (c)) {
70 16 if (is_QUOTE (c)) {
70 0 if (is_QUOTE (c)) {
1500 10904 11916 if (waitingForField) {
1509 11850 66 if (f & CSV_FLAGS_QUO) {
1516 10529 1321 int c2 = CSV_GET;
1518 4240 7610 if (csv->allow_whitespace) {
1522 924 3406 while (is_whitespace (c2)) {
666 258 while (is_whitespace (c2)) {
666 0 while (is_whitespace (c2)) {
69 597 while (is_whitespace (c2)) {
21 576 while (is_whitespace (c2)) {
1523 1 89 if (csv->allow_loose_quotes &&
0 1 if (csv->allow_loose_quotes &&
1524 0 0 !(csv->escape_char && c2 == csv->escape_char)) {
1530 0 1 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 1 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 1 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
1 0 CSV_PUT_SV (c);
0 1 CSV_PUT_SV (c);
1533 87 3 c2 = CSV_GET;
1537 9011 2839 if (is_SEP (c2)) {
15 8996 if (is_SEP (c2)) {
15 0 if (is_SEP (c2)) {
15 0 if (is_SEP (c2)) {
15 0 if (is_SEP (c2)) {
1541 8311 700 AV_PUSH;
0 8311 AV_PUSH;
0 0 AV_PUSH;
0 0 AV_PUSH;
700 8311 AV_PUSH;
688 12 AV_PUSH;
0 688 AV_PUSH;
0 0 AV_PUSH;
3400 5599 AV_PUSH;
0 3400 AV_PUSH;
2150 6849 AV_PUSH;
2150 0 AV_PUSH;
2131 19 AV_PUSH;
2131 0 AV_PUSH;
895 1236 AV_PUSH;
0 9011 AV_PUSH;
9007 4 AV_PUSH;
45 8966 AV_PUSH;
45 0 AV_PUSH;
1545 2664 175 if (c2 == CH_NL || c2 == CH_EOLX) {
20 2644 if (c2 == CH_NL || c2 == CH_EOLX) {
1549 185 10 AV_PUSH;
0 185 AV_PUSH;
0 0 AV_PUSH;
0 0 AV_PUSH;
10 185 AV_PUSH;
10 0 AV_PUSH;
0 10 AV_PUSH;
0 0 AV_PUSH;
6 189 AV_PUSH;
0 6 AV_PUSH;
125 70 AV_PUSH;
125 0 AV_PUSH;
95 30 AV_PUSH;
95 0 AV_PUSH;
92 3 AV_PUSH;
0 195 AV_PUSH;
193 2 AV_PUSH;
1 194 AV_PUSH;
1 0 AV_PUSH;
1560 2627 17 if (csv->escape_char && c == csv->escape_char) {
1547 1080 if (csv->escape_char && c == csv->escape_char) {
1563 25 1522 if (c2 == '0') {
1567 25 0 CSV_PUT_SV (0)
0 25 CSV_PUT_SV (0)
1571 1522 0 if (is_QUOTE (c2)) {
1056 466 if (is_QUOTE (c2)) {
0 1056 if (is_QUOTE (c2)) {
0 0 if (is_QUOTE (c2)) {
0 0 if (is_QUOTE (c2)) {
0 0 if (is_QUOTE (c2)) {
1575 1 1055 if (csv->utf8)
1577 0 1056 CSV_PUT_SV (c2)
0 0 CSV_PUT_SV (c2)
0 0 CSV_PUT_SV (c2)
0 0 CSV_PUT_SV (c2)
0 0 CSV_PUT_SV (c2)
0 1056 CSV_PUT_SV (c2)
0 0 CSV_PUT_SV (c2)
0 0 CSV_PUT_SV (c2)
0 0 CSV_PUT_SV (c2)
0 1056 CSV_PUT_SV (c2)
0 0 CSV_PUT_SV (c2)
0 0 CSV_PUT_SV (c2)
0 0 CSV_PUT_SV (c2)
1056 0 CSV_PUT_SV (c2)
32 1024 CSV_PUT_SV (c2)
1581 3 463 if (csv->allow_loose_escapes && c2 != CH_CR) {
2 1 if (csv->allow_loose_escapes && c2 != CH_CR) {
1585 0 2 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 2 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 2 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
2 0 CSV_PUT_SV (c);
0 2 CSV_PUT_SV (c);
1591 200 1361 if (c2 == CH_CR) {
1594 102 98 if (csv->eol_is_cr) {
1598 98 4 AV_PUSH;
0 98 AV_PUSH;
0 0 AV_PUSH;
0 0 AV_PUSH;
4 98 AV_PUSH;
4 0 AV_PUSH;
0 4 AV_PUSH;
0 0 AV_PUSH;
18 84 AV_PUSH;
0 18 AV_PUSH;
82 20 AV_PUSH;
82 0 AV_PUSH;
82 0 AV_PUSH;
82 0 AV_PUSH;
82 0 AV_PUSH;
0 102 AV_PUSH;
102 0 AV_PUSH;
0 102 AV_PUSH;
0 0 AV_PUSH;
1602 93 5 c3 = CSV_GET;
1604 84 14 if (c3 == CH_NL) { /* \r is not optional before EOLX! */
1608 82 2 AV_PUSH;
0 82 AV_PUSH;
0 0 AV_PUSH;
0 0 AV_PUSH;
2 82 AV_PUSH;
2 0 AV_PUSH;
0 2 AV_PUSH;
0 0 AV_PUSH;
5 79 AV_PUSH;
0 5 AV_PUSH;
70 14 AV_PUSH;
70 0 AV_PUSH;
40 30 AV_PUSH;
40 0 AV_PUSH;
40 0 AV_PUSH;
0 84 AV_PUSH;
84 0 AV_PUSH;
0 84 AV_PUSH;
0 0 AV_PUSH;
1612 1 13 if (csv->useIO && csv->eol_len == 0) {
1 0 if (csv->useIO && csv->eol_len == 0) {
1613 0 1 if (c3 == CH_CR) { /* \r followed by an empty line */
1621 1 0 if (!is_csv_binary (c3)) {
0 1 if (!is_csv_binary (c3)) {
0 0 if (!is_csv_binary (c3)) {
1629 1 0 AV_PUSH;
0 1 AV_PUSH;
0 0 AV_PUSH;
0 0 AV_PUSH;
0 1 AV_PUSH;
0 0 AV_PUSH;
0 0 AV_PUSH;
0 0 AV_PUSH;
0 1 AV_PUSH;
0 0 AV_PUSH;
0 1 AV_PUSH;
0 0 AV_PUSH;
0 0 AV_PUSH;
0 0 AV_PUSH;
0 0 AV_PUSH;
0 1 AV_PUSH;
1 0 AV_PUSH;
0 1 AV_PUSH;
0 0 AV_PUSH;
1634 12 1 ParseError (csv, quoesc ? 2023 : 2010, csv->used - 2);
1638 1304 57 if (c2 == EOF) {
1642 1292 12 AV_PUSH;
0 1292 AV_PUSH;
0 0 AV_PUSH;
0 0 AV_PUSH;
12 1292 AV_PUSH;
12 0 AV_PUSH;
0 12 AV_PUSH;
0 0 AV_PUSH;
533 771 AV_PUSH;
0 533 AV_PUSH;
14 1290 AV_PUSH;
14 0 AV_PUSH;
9 5 AV_PUSH;
9 0 AV_PUSH;
7 2 AV_PUSH;
0 1304 AV_PUSH;
1304 0 AV_PUSH;
11 1293 AV_PUSH;
11 0 AV_PUSH;
1646 12 45 if (csv->allow_loose_quotes && !quoesc) {
10 2 if (csv->allow_loose_quotes && !quoesc) {
1650 0 10 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 10 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 10 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
10 0 CSV_PUT_SV (c);
2 8 CSV_PUT_SV (c);
1658 39 8 if (quoesc) {
1660 39 0 ERROR_INSIDE_QUOTES (2023);
1663 8 0 ERROR_INSIDE_QUOTES (2011);
1667 16 50 if (csv->allow_loose_quotes) { /* 1,foo "boo" d'uh,1 */
1669 0 16 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 16 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 16 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
16 0 CSV_PUT_SV (c);
0 16 CSV_PUT_SV (c);
1672 49 1 ERROR_INSIDE_FIELD (2034);
1675 4653 157427 if (c == csv->escape_char && csv->escape_char) {
4651 2 if (c == csv->escape_char && csv->escape_char) {
1682 33 4618 if (waitingForField) {
1684 3 30 if (csv->allow_unquoted_escape) {
1688 2 1 int c2 = CSV_GET;
1692 1 2 if (c2 == EOF) {
1694 1 0 ERROR_INSIDE_FIELD (2035);
1697 1 1 if (c2 == '0')
1698 1 0 CSV_PUT_SV (0)
0 1 CSV_PUT_SV (0)
1700 1 0 if ( is_QUOTE (c2) || is_SEP (c2) ||
0 1 if ( is_QUOTE (c2) || is_SEP (c2) ||
0 0 if ( is_QUOTE (c2) || is_SEP (c2) ||
0 0 if ( is_QUOTE (c2) || is_SEP (c2) ||
0 0 if ( is_QUOTE (c2) || is_SEP (c2) ||
0 0 if ( is_QUOTE (c2) || is_SEP (c2) ||
1 0 if ( is_QUOTE (c2) || is_SEP (c2) ||
0 1 if ( is_QUOTE (c2) || is_SEP (c2) ||
0 0 if ( is_QUOTE (c2) || is_SEP (c2) ||
0 0 if ( is_QUOTE (c2) || is_SEP (c2) ||
0 0 if ( is_QUOTE (c2) || is_SEP (c2) ||
0 0 if ( is_QUOTE (c2) || is_SEP (c2) ||
1701 0 0 c2 == csv->escape_char || csv->allow_loose_escapes) {
1702 0 1 if (csv->utf8)
1704 0 1 CSV_PUT_SV (c2)
0 0 CSV_PUT_SV (c2)
0 0 CSV_PUT_SV (c2)
0 0 CSV_PUT_SV (c2)
0 0 CSV_PUT_SV (c2)
0 1 CSV_PUT_SV (c2)
0 0 CSV_PUT_SV (c2)
0 0 CSV_PUT_SV (c2)
0 0 CSV_PUT_SV (c2)
0 1 CSV_PUT_SV (c2)
0 0 CSV_PUT_SV (c2)
0 0 CSV_PUT_SV (c2)
0 0 CSV_PUT_SV (c2)
1 0 CSV_PUT_SV (c2)
0 1 CSV_PUT_SV (c2)
1708 0 0 ERROR_INSIDE_QUOTES (2025);
1713 4610 8 if (f & CSV_FLAGS_QUO) {
1714 4607 3 int c2 = CSV_GET;
1716 3 4607 if (c2 == EOF) {
1718 3 0 ERROR_INSIDE_QUOTES (2024);
1721 2 4605 if (c2 == '0')
1722 2 0 CSV_PUT_SV (0)
0 2 CSV_PUT_SV (0)
1724 4605 0 if ( is_QUOTE (c2) || is_SEP (c2) ||
2411 2194 if ( is_QUOTE (c2) || is_SEP (c2) ||
1 2410 if ( is_QUOTE (c2) || is_SEP (c2) ||
1 0 if ( is_QUOTE (c2) || is_SEP (c2) ||
1 0 if ( is_QUOTE (c2) || is_SEP (c2) ||
1 0 if ( is_QUOTE (c2) || is_SEP (c2) ||
1 2193 if ( is_QUOTE (c2) || is_SEP (c2) ||
0 1 if ( is_QUOTE (c2) || is_SEP (c2) ||
0 0 if ( is_QUOTE (c2) || is_SEP (c2) ||
0 0 if ( is_QUOTE (c2) || is_SEP (c2) ||
0 0 if ( is_QUOTE (c2) || is_SEP (c2) ||
28 2165 if ( is_QUOTE (c2) || is_SEP (c2) ||
1725 2 26 c2 == csv->escape_char || csv->allow_loose_escapes) {
1726 1 4578 if (csv->utf8)
1728 0 4579 CSV_PUT_SV (c2)
0 0 CSV_PUT_SV (c2)
0 0 CSV_PUT_SV (c2)
0 0 CSV_PUT_SV (c2)
0 0 CSV_PUT_SV (c2)
0 4579 CSV_PUT_SV (c2)
0 0 CSV_PUT_SV (c2)
0 0 CSV_PUT_SV (c2)
0 0 CSV_PUT_SV (c2)
1 4578 CSV_PUT_SV (c2)
3 0 CSV_PUT_SV (c2)
0 3 CSV_PUT_SV (c2)
3 1 CSV_PUT_SV (c2)
4578 0 CSV_PUT_SV (c2)
292 4286 CSV_PUT_SV (c2)
1732 26 0 ERROR_INSIDE_QUOTES (2025);
1736 8 0 if (sv) {
1737 4 4 int c2 = CSV_GET;
1739 4 4 if (c2 == EOF) {
1741 4 0 ERROR_INSIDE_FIELD (2035);
1744 0 4 CSV_PUT_SV (c2);
0 0 CSV_PUT_SV (c2);
0 0 CSV_PUT_SV (c2);
0 0 CSV_PUT_SV (c2);
0 0 CSV_PUT_SV (c2);
0 4 CSV_PUT_SV (c2);
0 0 CSV_PUT_SV (c2);
0 0 CSV_PUT_SV (c2);
0 0 CSV_PUT_SV (c2);
0 4 CSV_PUT_SV (c2);
0 0 CSV_PUT_SV (c2);
0 0 CSV_PUT_SV (c2);
0 0 CSV_PUT_SV (c2);
4 0 CSV_PUT_SV (c2);
0 4 CSV_PUT_SV (c2);
1747 0 0 ERROR_INSIDE_FIELD (2036); /* uncoverable statement I think there's no way to get here */
1750 155588 1841 if (c == CH_NL || is_EOL (c)) {
334 155254 if (c == CH_NL || is_EOL (c)) {
1757 293 2342 if (fnum == 1 && f == 0 && SvCUR (sv) == 0 && csv->skip_empty_rows) {
210 83 if (fnum == 1 && f == 0 && SvCUR (sv) == 0 && csv->skip_empty_rows) {
101 109 if (fnum == 1 && f == 0 && SvCUR (sv) == 0 && csv->skip_empty_rows) {
59 42 if (fnum == 1 && f == 0 && SvCUR (sv) == 0 && csv->skip_empty_rows) {
1758 3 56 SkipEmptyRow;
3 53 SkipEmptyRow;
2 51 SkipEmptyRow;
41 10 SkipEmptyRow;
7 34 SkipEmptyRow;
39 2 SkipEmptyRow;
2 37 SkipEmptyRow;
2 2 SkipEmptyRow;
10 37 SkipEmptyRow;
10 0 SkipEmptyRow;
10 0 SkipEmptyRow;
0 10 SkipEmptyRow;
0 0 SkipEmptyRow;
10 0 SkipEmptyRow;
0 10 SkipEmptyRow;
10 0 SkipEmptyRow;
0 10 SkipEmptyRow;
0 10 SkipEmptyRow;
10 0 SkipEmptyRow;
0 10 SkipEmptyRow;
0 0 SkipEmptyRow;
8 2 SkipEmptyRow;
0 8 SkipEmptyRow;
0 8 SkipEmptyRow;
0 8 SkipEmptyRow;
0 8 SkipEmptyRow;
0 0 SkipEmptyRow;
32 0 SkipEmptyRow;
32 0 SkipEmptyRow;
32 0 SkipEmptyRow;
28 4 SkipEmptyRow;
32 0 SkipEmptyRow;
0 32 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 32 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 32 SkipEmptyRow;
0 0 SkipEmptyRow;
0 32 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 32 SkipEmptyRow;
32 0 SkipEmptyRow;
0 32 SkipEmptyRow;
0 0 SkipEmptyRow;
32 8 SkipEmptyRow;
1762 223 2353 if (waitingForField) {
1766 215 8 if (csv->blank_is_undef || csv->empty_is_undef)
8 207 if (csv->blank_is_undef || csv->empty_is_undef)
1770 223 0 unless (csv->is_bound)
1772 14 209 if (csv->keep_meta_info && fflags)
14 0 if (csv->keep_meta_info && fflags)
1777 744 1609 if (f & CSV_FLAGS_QUO) {
1782 19 725 unless (csv->binary)
1783 19 0 ERROR_INSIDE_QUOTES (2021);
1785 40 685 CSV_PUT_SV (c);
35 5 CSV_PUT_SV (c);
74 0 CSV_PUT_SV (c);
0 74 CSV_PUT_SV (c);
74 40 CSV_PUT_SV (c);
0 685 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 685 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
685 0 CSV_PUT_SV (c);
0 685 CSV_PUT_SV (c);
1788 9 1600 if (csv->verbatim) {
1793 1 8 unless (csv->binary)
1794 1 0 ERROR_INSIDE_FIELD (2030);
1796 2 6 CSV_PUT_SV (c);
0 2 CSV_PUT_SV (c);
6 0 CSV_PUT_SV (c);
1 5 CSV_PUT_SV (c);
6 2 CSV_PUT_SV (c);
0 6 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 6 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
6 0 CSV_PUT_SV (c);
0 6 CSV_PUT_SV (c);
1802 281 1319 if (csv->recno == 0 && csv->fld_idx == 1 && csv->useIO &&
28 253 if (csv->recno == 0 && csv->fld_idx == 1 && csv->useIO &&
28 0 if (csv->recno == 0 && csv->fld_idx == 1 && csv->useIO &&
23 5 if (csv->recno == 0 && csv->fld_idx == 1 && csv->useIO &&
1803 0 23 (csv->bptr[0] == 's' || csv->bptr[0] == 'S') &&
0 5 (csv->bptr[0] == 's' || csv->bptr[0] == 'S') &&
1804 0 0 (csv->bptr[1] == 'e' || csv->bptr[1] == 'E') &&
0 5 (csv->bptr[1] == 'e' || csv->bptr[1] == 'E') &&
1805 0 0 (csv->bptr[2] == 'p' || csv->bptr[2] == 'P') &&
5 0 (csv->bptr[2] == 'p' || csv->bptr[2] == 'P') &&
1809 4 1 if (lnu <= MAX_ATTR_LEN) {
1812 1 3 csv->sep_len = lnu == 1 ? 0 : lnu;
1820 1589 7 AV_PUSH;
4 1585 AV_PUSH;
4 0 AV_PUSH;
1 3 AV_PUSH;
7 1589 AV_PUSH;
7 0 AV_PUSH;
7 0 AV_PUSH;
0 7 AV_PUSH;
66 1530 AV_PUSH;
66 0 AV_PUSH;
82 1514 AV_PUSH;
82 0 AV_PUSH;
81 1 AV_PUSH;
81 0 AV_PUSH;
37 44 AV_PUSH;
1 1595 AV_PUSH;
1578 18 AV_PUSH;
9 1587 AV_PUSH;
9 0 AV_PUSH;
1825 1106 154148 if (c == CH_CR && !(csv->verbatim)) {
1103 3 if (c == CH_CR && !(csv->verbatim)) {
1830 114 989 if (waitingForField) {
1833 29 85 if (csv->eol_is_cr) {
1841 80 5 c2 = CSV_GET;
1843 5 80 if (c2 == EOF) {
1853 0 5 unless (seenSomething)
1858 70 10 if (c2 == CH_NL) { /* \r is not optional before EOLX! */
1866 5 5 if (csv->useIO && csv->eol_len == 0) {
5 0 if (csv->useIO && csv->eol_len == 0) {
1867 0 5 if (c2 == CH_CR) { /* \r followed by an empty line */
1877 2 3 if (!is_csv_binary (c2)) {
0 2 if (!is_csv_binary (c2)) {
0 3 if (!is_csv_binary (c2)) {
1885 1 1 if (fnum == 1 && f == 0 && SvCUR (sv) == 0 && csv->skip_empty_rows) {
1 0 if (fnum == 1 && f == 0 && SvCUR (sv) == 0 && csv->skip_empty_rows) {
1 0 if (fnum == 1 && f == 0 && SvCUR (sv) == 0 && csv->skip_empty_rows) {
1 0 if (fnum == 1 && f == 0 && SvCUR (sv) == 0 && csv->skip_empty_rows) {
1886 0 1 SkipEmptyRow;
0 1 SkipEmptyRow;
0 1 SkipEmptyRow;
1 0 SkipEmptyRow;
1 0 SkipEmptyRow;
1 0 SkipEmptyRow;
0 1 SkipEmptyRow;
0 0 SkipEmptyRow;
0 1 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
1889 0 1 AV_PUSH;
0 0 AV_PUSH;
0 0 AV_PUSH;
0 0 AV_PUSH;
1 0 AV_PUSH;
1 0 AV_PUSH;
1 0 AV_PUSH;
0 1 AV_PUSH;
0 1 AV_PUSH;
0 0 AV_PUSH;
0 1 AV_PUSH;
0 0 AV_PUSH;
0 0 AV_PUSH;
0 0 AV_PUSH;
0 0 AV_PUSH;
0 1 AV_PUSH;
1 0 AV_PUSH;
0 1 AV_PUSH;
0 0 AV_PUSH;
1898 8 0 ERROR_INSIDE_FIELD (2031);
1901 620 369 if (f & CSV_FLAGS_QUO) {
1906 70 550 unless (csv->binary)
1907 70 0 ERROR_INSIDE_QUOTES (2022);
1909 0 550 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 550 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 550 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
550 0 CSV_PUT_SV (c);
2 548 CSV_PUT_SV (c);
1914 181 188 if (csv->eol_is_cr) {
1921 183 5 c2 = CSV_GET;
1923 172 16 if (c2 == CH_NL) { /* \r is not optional before EOLX! */
1930 11 5 if (csv->useIO && csv->eol_len == 0) {
11 0 if (csv->useIO && csv->eol_len == 0) {
1931 4 7 if (!is_csv_binary (c2)
0 4 if (!is_csv_binary (c2)
7 0 if (!is_csv_binary (c2)
1936 1 6 || c2 == CH_CR) {
1943 0 5 if (fnum == 1 && f == 0 && SvCUR (sv) == 0 && csv->skip_empty_rows) {
0 0 if (fnum == 1 && f == 0 && SvCUR (sv) == 0 && csv->skip_empty_rows) {
0 0 if (fnum == 1 && f == 0 && SvCUR (sv) == 0 && csv->skip_empty_rows) {
0 0 if (fnum == 1 && f == 0 && SvCUR (sv) == 0 && csv->skip_empty_rows) {
1944 0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
0 0 SkipEmptyRow;
1947 5 0 AV_PUSH;
0 5 AV_PUSH;
0 0 AV_PUSH;
0 0 AV_PUSH;
0 5 AV_PUSH;
0 0 AV_PUSH;
0 0 AV_PUSH;
0 0 AV_PUSH;
0 5 AV_PUSH;
0 0 AV_PUSH;
0 5 AV_PUSH;
0 0 AV_PUSH;
0 0 AV_PUSH;
0 0 AV_PUSH;
0 0 AV_PUSH;
0 5 AV_PUSH;
5 0 AV_PUSH;
0 5 AV_PUSH;
0 0 AV_PUSH;
1955 11 0 ERROR_INSIDE_FIELD (2032);
1965 3646 150505 if (csv->eolx && c == CH_EOL &&
8 3638 if (csv->eolx && c == CH_EOL &&
8 0 if (csv->eolx && c == CH_EOL &&
1966 8 0 csv->size - csv->used >= (STRLEN)csv->eol_len - 1 &&
1967 8 0 !memcmp (csv->bptr + csv->used, csv->eol + 1, csv->eol_len - 1) &&
1976 10680 143463 if (waitingForField) {
1977 136 10544 if (csv->comment_str && !f && !spl && c == *csv->comment_str) {
136 0 if (csv->comment_str && !f && !spl && c == *csv->comment_str) {
84 52 if (csv->comment_str && !f && !spl && c == *csv->comment_str) {
24 60 if (csv->comment_str && !f && !spl && c == *csv->comment_str) {
1985 18 6 if (cl == 1 || (
18 0 if (cl == 1 || (
1986 18 0 (csv->size - csv->used >= cl - 1 &&
1987 18 0 !memcmp (csv->bptr + csv->used, csv->comment_str + 1, cl - 1) &&
1991 0 24 c = CSV_GET;
1999 1924 8732 if (csv->allow_whitespace && is_whitespace (c)) {
1924 0 if (csv->allow_whitespace && is_whitespace (c)) {
1924 0 if (csv->allow_whitespace && is_whitespace (c)) {
1924 0 if (csv->allow_whitespace && is_whitespace (c)) {
1723 201 if (csv->allow_whitespace && is_whitespace (c)) {
0 1723 if (csv->allow_whitespace && is_whitespace (c)) {
2001 310 1 c = CSV_GET;
2005 273 38 } while (is_whitespace (c));
241 32 } while (is_whitespace (c));
241 0 } while (is_whitespace (c));
110 131 } while (is_whitespace (c));
0 131 } while (is_whitespace (c));
2006 1 200 if (c == EOF)
2020 111032 32431 if (f & CSV_FLAGS_QUO) {
2021 110584 448 if (is_csv_binary (c)) {
3021 107563 if (is_csv_binary (c)) {
3454 15 if (is_csv_binary (c)) {
2023 31 3423 unless (csv->binary || csv->utf8)
5 26 unless (csv->binary || csv->utf8)
2024 5 0 ERROR_INSIDE_QUOTES (2026);
2026 0 111027 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 111027 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 111027 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
111027 0 CSV_PUT_SV (c);
4770 106257 CSV_PUT_SV (c);
2029 32393 38 if (is_csv_binary (c)) {
427 31966 if (is_csv_binary (c)) {
453 12 if (is_csv_binary (c)) {
2030 413 40 if (csv->useIO && c == EOF)
3 410 if (csv->useIO && c == EOF)
2033 9 441 unless (csv->binary || csv->utf8)
9 0 unless (csv->binary || csv->utf8)
2034 9 0 ERROR_INSIDE_FIELD (2037);
2036 0 32419 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 32419 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 32419 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
0 0 CSV_PUT_SV (c);
32419 0 CSV_PUT_SV (c);
269 32150 CSV_PUT_SV (c);
2041 119 161062 if (csv->verbatim && csv->useIO && csv->used == csv->size)
47 72 if (csv->verbatim && csv->useIO && csv->used == csv->size)
3 44 if (csv->verbatim && csv->useIO && csv->used == csv->size)
2045 366 380 if (waitingForField) {
2046 335 31 if (seenSomething || !csv->useIO) {
3 332 if (seenSomething || !csv->useIO) {
2047 33 1 NewField;
1 32 NewField;
0 33 NewField;
2048 30 4 if (csv->blank_is_undef || csv->empty_is_undef)
4 26 if (csv->blank_is_undef || csv->empty_is_undef)
2052 33 1 unless (csv->is_bound)
2054 3 31 if (csv->keep_meta_info && fflags)
3 0 if (csv->keep_meta_info && fflags)
2063 24 356 if (f & CSV_FLAGS_QUO)
2064 24 0 ERROR_INSIDE_QUOTES (2027);
2066 354 2 if (sv) {
2067 344 10 AV_PUSH;
40 304 AV_PUSH;
40 0 AV_PUSH;
7 33 AV_PUSH;
10 344 AV_PUSH;
10 0 AV_PUSH;
10 0 AV_PUSH;
0 10 AV_PUSH;
22 332 AV_PUSH;
22 0 AV_PUSH;
153 201 AV_PUSH;
153 0 AV_PUSH;
152 1 AV_PUSH;
152 0 AV_PUSH;
63 89 AV_PUSH;
1 353 AV_PUSH;
344 10 AV_PUSH;
1 353 AV_PUSH;
1 0 AV_PUSH;
2069 2 0 else if (f == 0 && fnum == 1 && csv->skip_empty_rows == 1)
2 0 else if (f == 0 && fnum == 1 && csv->skip_empty_rows == 1)
2 0 else if (f == 0 && fnum == 1 && csv->skip_empty_rows == 1)
2082 125 0 unless ((svp = hv_fetchs (hv, "callbacks", FALSE)) && _is_hashref (*svp))
125 0 unless ((svp = hv_fetchs (hv, "callbacks", FALSE)) && _is_hashref (*svp))
0 125 unless ((svp = hv_fetchs (hv, "callbacks", FALSE)) && _is_hashref (*svp))
0 0 unless ((svp = hv_fetchs (hv, "callbacks", FALSE)) && _is_hashref (*svp))
125 0 unless ((svp = hv_fetchs (hv, "callbacks", FALSE)) && _is_hashref (*svp))
0 125 unless ((svp = hv_fetchs (hv, "callbacks", FALSE)) && _is_hashref (*svp))
2087 125 0 unless (svp && _is_coderef (*svp))
125 0 unless (svp && _is_coderef (*svp))
0 125 unless (svp && _is_coderef (*svp))
0 0 unless (svp && _is_coderef (*svp))
125 0 unless (svp && _is_coderef (*svp))
0 125 unless (svp && _is_coderef (*svp))
2093 0 125 PUSHMARK (SP);
2094 0 125 mXPUSHs (newRV_inc ((SV *)hv));
2095 0 125 mXPUSHs (newRV_inc ((SV *)av));
2099 125 0 if (res) {
2101 64 61 if (SvROK (rv) && (rv = SvRV (rv)) && SvPOK (rv)) {
64 0 if (SvROK (rv) && (rv = SvRV (rv)) && SvPOK (rv)) {
64 0 if (SvROK (rv) && (rv = SvRV (rv)) && SvPOK (rv)) {
2102 64 0 if (strcmp (SvPV_nolen (rv), "skip") == 0)
64 0 if (strcmp (SvPV_nolen (rv), "skip") == 0)
2107 125 0 FREETMPS;
2119 4145 405 if (csv.eolx || csv.eol_is_cr) {
444 3701 if (csv.eolx || csv.eol_is_cr) {
2125 2622 1928 if ((csv.useIO = useIO)) {
2128 176 2446 if ((ahead = csv.has_ahead)) {
2130 176 0 if ((svp = hv_fetchs (hv, "_AHEAD", FALSE)) && *svp) {
176 0 if ((svp = hv_fetchs (hv, "_AHEAD", FALSE)) && *svp) {
2131 175 1 csv.bptr = SvPV (csv.tmp = *svp, csv.size);
2133 0 176 if (pos && SvIV (pos) > (IV)csv.size)
0 0 if (pos && SvIV (pos) > (IV)csv.size)
0 0 if (pos && SvIV (pos) > (IV)csv.size)
2134 0 0 sv_setiv (pos, SvIV (pos) - csv.size);
2141 1928 0 csv.bptr = SvPV (src, csv.size);
2143 217 4333 if (csv.has_error_input) {
2152 27 4512 if (csv.strict) {
2153 8 19 unless (csv.strict_n) csv.strict_n = (short)csv.fld_idx;
2154 12 15 if (csv.fld_idx != csv.strict_n) {
2155 8 4 unless (csv.useIO & useIO_EOF)
2157 8 4 if (last_error) /* an error callback can reset and accept */
2162 2614 1925 if (csv.useIO) {
2163 2614 0 if (csv.tmp && csv.used < csv.size && csv.has_ahead) {
413 2201 if (csv.tmp && csv.used < csv.size && csv.has_ahead) {
37 376 if (csv.tmp && csv.used < csv.size && csv.has_ahead) {
2169 549 2028 if (csv.useIO & useIO_EOF)
2175 1580 1034 if (avf) {
2176 11 1569 if (csv.keep_meta_info)
2187 3903 636 if (result && csv.types) {
2 3901 if (result && csv.types) {
2192 6 2 for (i = 0; i <= len && i <= csv.types_len; i++) {
6 0 for (i = 0; i <= len && i <= csv.types_len; i++) {
2193 6 0 if ((svp = av_fetch (av, i, FALSE)) && *svp && SvOK (*svp)) {
6 0 if ((svp = av_fetch (av, i, FALSE)) && *svp && SvOK (*svp)) {
0 6 if ((svp = av_fetch (av, i, FALSE)) && *svp && SvOK (*svp)) {
0 0 if ((svp = av_fetch (av, i, FALSE)) && *svp && SvOK (*svp)) {
0 0 if ((svp = av_fetch (av, i, FALSE)) && *svp && SvOK (*svp)) {
2197 0 2 sv_setiv (*svp, SvIV (*svp));
2208 0 2 sv_setnv (*svp, SvNV (*svp));
2235 3165 340 if (state && csv.has_hooks & HOOK_AFTER_PARSE)
5 3160 if (state && csv.has_hooks & HOOK_AFTER_PARSE)
2237 340 3165 return (state || !last_error);
2 338 return (state || !last_error);
2243 250 83 while (av_len (av) >= 0)
2256 278 56 if (SvOK (off)) {
278 0 if (SvOK (off)) {
0 278 if (SvOK (off)) {
2257 48 8 skip = SvIV (off);
2258 12 44 if (skip < 0) {
2263 290 44 if (SvOK (len))
290 0 if (SvOK (len))
0 290 if (SvOK (len))
2264 36 8 length = SvIV (len);
2266 738 296 while (c_xsParse (csv, hv, row, NULL, io, 1)) {
2270 20 718 if (skip > 0) {
2276 12 706 if (n++ >= tail) {
2281 117 601 if (csv.has_hooks & HOOK_AFTER_PARSE) {
2282 63 54 unless (hook (aTHX_ hv, "after_parse", row)) {
2289 52 603 if (n >= length && skip >= 0)
32 20 if (n >= length && skip >= 0)
2294 8 328 while (n > length) {
2313 260 21387 if (*csv.eol)
2316 20251 1396 if (useIO && csv.has_hooks & HOOK_BEFORE_PRINT)
3 20248 if (useIO && csv.has_hooks & HOOK_BEFORE_PRINT)
2322 21635 8 if (result && !useIO && csv.utf8)
1391 20244 if (result && !useIO && csv.utf8)
25 1366 if (result && !useIO && csv.utf8)
2343 0 2940 if (SvOK (self) && SvROK (self)) {
0 0 if (SvOK (self) && SvROK (self)) {
0 0 if (SvOK (self) && SvROK (self)) {
1047 1893 if (SvOK (self) && SvROK (self)) {
2344 1047 0 CSV_XS_SELF;
0 1047 CSV_XS_SELF;
0 0 CSV_XS_SELF;
0 0 CSV_XS_SELF;
1047 0 CSV_XS_SELF;
0 1047 CSV_XS_SELF;
2353 2017 923 if (xse && items > 2 && SvPOK (ST (2))) {
941 1076 if (xse && items > 2 && SvPOK (ST (2))) {
941 0 if (xse && items > 2 && SvPOK (ST (2))) {
2365 8 0 if (self && SvOK (self) && SvROK (self) && SvTYPE (SvRV (self)) == SVt_PVHV) {
1 7 if (self && SvOK (self) && SvROK (self) && SvTYPE (SvRV (self)) == SVt_PVHV) {
1 0 if (self && SvOK (self) && SvROK (self) && SvTYPE (SvRV (self)) == SVt_PVHV) {
0 1 if (self && SvOK (self) && SvROK (self) && SvTYPE (SvRV (self)) == SVt_PVHV) {
5 2 if (self && SvOK (self) && SvROK (self) && SvTYPE (SvRV (self)) == SVt_PVHV) {
4 1 if (self && SvOK (self) && SvROK (self) && SvTYPE (SvRV (self)) == SVt_PVHV) {
2368 1 3 if (SvOK (*sv))
1 0 if (SvOK (*sv))
0 1 if (SvOK (*sv))
2386 1396 0 CSV_XS_SELF;
0 1396 CSV_XS_SELF;
0 0 CSV_XS_SELF;
0 0 CSV_XS_SELF;
1396 0 CSV_XS_SELF;
0 1396 CSV_XS_SELF;
2388 1391 1 ST (0) = xsCombine (self, hv, av, dst, useIO) ? &PL_sv_yes : &PL_sv_undef;
2400 1928 0 CSV_XS_SELF;
0 1928 CSV_XS_SELF;
0 0 CSV_XS_SELF;
0 0 CSV_XS_SELF;
1928 0 CSV_XS_SELF;
0 1928 CSV_XS_SELF;
2404 1724 201 ST (0) = xsParse (self, hv, av, avf, src, 0) ? &PL_sv_yes : &PL_sv_no;
2415 20256 0 CSV_XS_SELF;
0 20256 CSV_XS_SELF;
0 0 CSV_XS_SELF;
0 0 CSV_XS_SELF;
20256 0 CSV_XS_SELF;
0 20256 CSV_XS_SELF;
2416 5 20251 if (fields == &PL_sv_undef)
2419 20251 0 unless (_is_arrayref (fields))
1 20250 unless (_is_arrayref (fields))
1 0 unless (_is_arrayref (fields))
20248 3 unless (_is_arrayref (fields))
2 20246 unless (_is_arrayref (fields))
2425 20244 7 ST (0) = xsCombine (self, hv, av, io, 1) ? &PL_sv_yes : &PL_sv_no;
2437 1582 0 CSV_XS_SELF;
0 1582 CSV_XS_SELF;
0 0 CSV_XS_SELF;
0 0 CSV_XS_SELF;
1582 0 CSV_XS_SELF;
0 1582 CSV_XS_SELF;
2442 1443 137 : &PL_sv_undef;
2453 334 0 CSV_XS_SELF;
0 334 CSV_XS_SELF;
0 0 CSV_XS_SELF;
0 0 CSV_XS_SELF;
334 0 CSV_XS_SELF;
0 334 CSV_XS_SELF;
2455 56 278 offset = items > 2 ? ST (2) : &PL_sv_undef;
2456 44 290 length = items > 3 ? ST (3) : &PL_sv_undef;
2468 23241 0 CSV_XS_SELF;
0 23241 CSV_XS_SELF;
0 0 CSV_XS_SELF;
0 0 CSV_XS_SELF;
23241 0 CSV_XS_SELF;
0 23241 CSV_XS_SELF;
2479 2 0 CSV_XS_SELF;
0 2 CSV_XS_SELF;
0 0 CSV_XS_SELF;
0 0 CSV_XS_SELF;
2 0 CSV_XS_SELF;
0 2 CSV_XS_SELF;