Branch Coverage

CSV_XS.xs
Criterion Covered Total %
branch 1639 3356 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) {
600 1 0 if (csv->sep_len > 1)
603 1 0 if (csv->quo_len > 1)
605 0 1 if (csv->types_len)
610 1 0 if (csv->bptr)
612 1 0 if (csv->tmp && SvPOK (csv->tmp)) {
0 1 if (csv->tmp && SvPOK (csv->tmp)) {
613 0 0 char *s = SvPV_nolen (csv->tmp);
616 1 0 if (csv->cache)
629 1 1 unless ((svp = hv_fetchs (hv, "_CACHE", FALSE)) && *svp) {
0 1 unless ((svp = hv_fetchs (hv, "_CACHE", FALSE)) && *svp) {
634 1 0 cache = (byte *)SvPV_nolen (*svp);
657 26453 823 if ((svp = hv_fetchs (self, "_CACHE", FALSE)) && *svp) {
26453 0 if ((svp = hv_fetchs (self, "_CACHE", FALSE)) && *svp) {
670 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))
671 823 0 CH_SEP = *SvPV (*svp, len);
672 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)) {
673 224 0 ptr = SvPV (*svp, len);
675 5 219 if (len > 1)
680 823 0 if ((svp = hv_fetchs (self, "quote_char", FALSE)) && *svp) {
823 0 if ((svp = hv_fetchs (self, "quote_char", FALSE)) && *svp) {
681 3 820 if (SvOK (*svp)) {
3 0 if (SvOK (*svp)) {
0 3 if (SvOK (*svp)) {
682 820 0 ptr = SvPV (*svp, len);
683 820 0 CH_QUOTE = len ? *ptr : (char)0;
688 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)) {
689 5 0 ptr = SvPV (*svp, len);
691 4 1 if (len > 1)
696 823 0 if ((svp = hv_fetchs (self, "escape_char", FALSE)) && *svp) {
823 0 if ((svp = hv_fetchs (self, "escape_char", FALSE)) && *svp) {
697 6 817 if (SvOK (*svp)) {
6 0 if (SvOK (*svp)) {
0 6 if (SvOK (*svp)) {
698 817 0 ptr = SvPV (*svp, len);
699 815 2 csv->escape_char = len ? *ptr : (char)0;
705 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)) {
706 819 0 char *eol = SvPV (*svp, len);
709 101 718 if (len == 1 && *csv->eol == CH_CR)
42 59 if (len == 1 && *csv->eol == CH_CR)
714 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)) {
717 1 0 csv->undef_str = (byte *)SvPV_nolen (*svp);
718 0 1 if (SvUTF8 (*svp))
724 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))
725 12 0 csv->comment_str = (byte *)SvPV_nolen (*svp);
729 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)) {
730 1 0 csv->types = SvPV (*svp, len);
734 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))
735 4 0 csv->is_bound = SvIV (*svp);
736 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)) {
738 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))
740 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))
744 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");
745 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");
746 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");
747 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");
748 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");
749 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);
750 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);
751 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);
752 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");
753 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");
754 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");
755 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");
756 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");
757 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");
758 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");
760 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");
761 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");
762 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");
763 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");
764 823 0 csv->formula = num_opt ("formula");
823 0 csv->formula = num_opt ("formula");
823 0 csv->formula = num_opt ("formula");
766 8 815 unless (csv->escape_char) csv->escape_null = 0;
782 27254 22 csv->first_safe_char = csv->quote_space ? 0x21 : 0x20;
784 83 27193 if (csv->is_bound) {
785 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))
793 853 452 ? csv->verbatim || csv->eol_len >= 2
795 366 487 : csv->eol[0] == CH_CR || csv->eol[0] == CH_NL
797 52 314 : 1
798 1312 25964 : 0;
1305 7 : 0;
799 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))
801 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))
810 939877 1389 if (csv->useIO) {
813 0 939877 PUSHMARK (sp);
814 0 939877 EXTEND (sp, 2);
816 939649 228 if (csv->utf8) {
821 939649 0 ptr = SvPV (tmp, len);
822 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) {
827 750862 939649 for (j = 0; j < keep; j++)
835 939877 0 if (result) {
836 939876 1 result = POPi;
837 1 939876 unless (result)
846 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
847 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)))
867 3 98 if (i >= csv->is_bound) {
872 98 0 if (sv && SvROK (sv)) {
98 0 if (sv && SvROK (sv)) {
876 98 0 if (sv && SvROK (sv)) {
98 0 if (sv && SvROK (sv)) {
878 14 84 if (keep)
881 83 1 unless (SvREADONLY (sv)) {
894 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);
902 3 34 if (fa == 1) die ("Formulas are forbidden\n");
903 3 31 if (fa == 2) croak ("Formulas are forbidden\n");
905 6 25 if (fa == 3) {
906 6 0 char *ptr = SvPV_nolen (sv);
911 3 3 if (csv->recno) (void)sprintf (rec, " in record %lu", csv->recno + 1);
915 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)) {
917 1 0 if (avp && av_len (avp) >= (f - 1)) {
1 0 if (avp && av_len (avp) >= (f - 1)) {
919 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))
920 1 0 (void)sprintf (field, " (column: '%.100s')", SvPV_nolen (*fnm));
928 4 21 if (len) *len = 0;
930 5 20 if (fa == 4) {
931 3 2 unless (SvREADONLY (sv)) SvSetEmpty (sv);
935 5 15 if (fa == 5) {
936 3 2 unless (SvREADONLY (sv)) SvSetUndef (sv);
940 15 0 if (fa == 6) {
943 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)) {
947 15 0 DEFSV = sv;
948 0 15 PUSHMARK (SP);
952 15 0 if (result)
957 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);
1047 6 21641 if (n < 0 && csv->is_bound) {
5 1 if (n < 0 && csv->is_bound) {
1052 2 21645 if (kmi >= 10) {
1054 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)) {
1056 2 0 if (avp && av_len (avp) >= n)
2 0 if (avp && av_len (avp) >= n)
1061 53845 21636 for (i = 0; i <= n; i++) {
1066 32199 21646 if (i > 0) {
1067 0 32199 CSV_PUT (csv, dst, CH_SEP);
0 0 CSV_PUT (csv, dst, CH_SEP);
1068 10 32189 if (csv->sep_len) {
1070 20 10 for (x = 1; x < (int)csv->sep_len; x++)
1071 0 20 CSV_PUT (csv, dst, csv->sep[x]);
0 0 CSV_PUT (csv, dst, csv->sep[x]);
1075 14 53831 if (bound)
1079 53831 0 sv = svp && *svp ? *svp : NULL;
53831 0 sv = svp && *svp ? *svp : NULL;
1082 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) || (
1083 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))))) {
1087 32244 21548 ptr = SvPV (sv, len);
1089 16 53776 if (*ptr == '=' && csv->formula) {
10 6 if (*ptr == '=' && csv->formula) {
1090 2 4 unless (ptr = _formula (csv, sv, &len, i))
1093 1404 52382 if (len == 0)
1094 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;
1097 20041 32341 if (SvUTF8 (sv)) {
1102 46759 5623 quoteMe = aq ? 1 : qm ? was_quoted (qm, i) : 0;
12 46747 quoteMe = aq ? 1 : qm ? was_quoted (qm, i) : 0;
1108 46754 5628 if (!quoteMe &&
25179 21575 if (!quoteMe &&
1109 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))) {
1117 83767 2049 for (ptr2 = ptr, l = len; l; ++ptr2, --l) {
1128 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) ||
1129 81305 151 (CH_SEP && c == CH_SEP) ||
83304 4 (CH_SEP && c == CH_SEP) ||
1130 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) ||
1131 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) ||
1133 10 0 : c == CH_NL || c == CH_CR ||
10 0 : c == CH_NL || c == CH_CR ||
5 5 : c == CH_NL || c == CH_CR ||
1134 3 2 (csv->quote_space && (
1135 0 3 c == CH_SPACE || c == CH_TAB)))) {
1146 29412 24374 if (quoteMe) {
1147 0 29412 CSV_PUT (csv, dst, CH_QUOTE);
0 0 CSV_PUT (csv, dst, CH_QUOTE);
1148 17 29395 if (csv->quo_len) {
1150 34 17 for (x = 1; x < (int)csv->quo_len; x++)
1151 0 34 CSV_PUT (csv, dst, csv->quo[x]);
0 0 CSV_PUT (csv, dst, csv->quo[x]);
1154 950361452 53779 while (len-- > 0) {
1158 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)) {
1161 0 7 unless (hv_store (csv->self, "_ERROR_INPUT", 12, sv, 0))
1166 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 ||
1170 2165 950356063 if (c == csv->escape_char && csv->escape_char)
2163 2 if (c == csv->escape_char && csv->escape_char)
1173 56 950356009 if (c == (char)0 && csv->escape_null) {
29 27 if (c == (char)0 && csv->escape_null) {
1177 5409 950356036 if (e && csv->escape_char)
5409 0 if (e && csv->escape_char)
1178 0 5409 CSV_PUT (csv, dst, csv->escape_char);
0 0 CSV_PUT (csv, dst, csv->escape_char);
1179 919632 949441813 CSV_PUT (csv, dst, c);
0 919632 CSV_PUT (csv, dst, c);
1181 29405 24374 if (quoteMe) {
1182 0 29405 CSV_PUT (csv, dst, CH_QUOTE);
0 0 CSV_PUT (csv, dst, CH_QUOTE);
1183 17 29388 if (csv->quo_len) {
1185 34 17 for (x = 1; x < (int)csv->quo_len; x++)
1186 0 34 CSV_PUT (csv, dst, csv->quo[x]);
0 0 CSV_PUT (csv, dst, csv->quo[x]);
1191 8 45 if (csv->undef_str) {
1195 3 5 if (csv->undef_flg) {
1200 20 8 while (len--)
1201 0 20 CSV_PUT (csv, dst, *ptr++);
0 0 CSV_PUT (csv, dst, *ptr++);
1205 249 21387 if (csv->eol_len) {
1209 447 249 while (len--)
1210 0 447 CSV_PUT (csv, dst, *ptr++);
0 0 CSV_PUT (csv, dst, *ptr++);
1212 21634 2 if (csv->used)
1221 299 0 if (csv->tmp) {
1223 299 0 if (hv_store (csv->self, "_ERROR_INPUT", 12, csv->tmp, 0))
1231 1518 3350 unless (csv->useIO)
1234 904 2446 if (csv->tmp && csv->eol_pos >= 0) {
348 556 if (csv->tmp && csv->eol_pos >= 0) {
1237 348 0 csv->bptr = SvPV (csv->tmp, csv->size);
1245 0 3002 PUSHMARK (sp);
1246 0 3002 EXTEND (sp, 1);
1252 3002 0 csv->tmp = result ? POPs : NULL;
1260 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)) {
1262 2453 0 csv->bptr = SvPV (csv->tmp, tmp_len);
1265 358 2095 if (csv->eolx && csv->size >= csv->eol_len) {
358 0 if (csv->eolx && csv->size >= csv->eol_len) {
1267 1463 354 for (i = 1; i <= (int)csv->eol_len; i++) {
1268 4 1459 unless (csv->bptr[csv->size - i] == csv->eol[csv->eol_len - i]) {
1273 354 4 if (match) {
1278 351 3 unless (csv->verbatim)
1282 351 3 unless (csv->verbatim || csv->size)
6 345 unless (csv->verbatim || csv->size)
1286 70 2377 if (SvUTF8 (csv->tmp)) csv->utf8 = 1;
1287 2447 0 if (tmp_len)
1403 1723 0 char *s = SvPV (sv, len);
1404 1723 0 unless (s && len) return;
0 1723 unless (s && len) return;
1405 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)
1454 183266 3462 while ((c = CSV_GET) != EOF) {
185991 737 while ((c = CSV_GET) != EOF) {
1456 22825 163166 NewField;
86 22739 NewField;
4 22821 NewField;
1468 11876 184845 if (is_SEP (c)) {
88 11788 if (is_SEP (c)) {
88 0 if (is_SEP (c)) {
30 58 if (is_SEP (c)) {
30 0 if (is_SEP (c)) {
1474 1170 10648 if (waitingForField) {
1478 1144 26 if (csv->blank_is_undef || csv->empty_is_undef)
24 1120 if (csv->blank_is_undef || csv->empty_is_undef)
1482 1170 0 unless (csv->is_bound)
1485 8 1162 if (csv->keep_meta_info && fflags)
8 0 if (csv->keep_meta_info && fflags)
1489 2194 8454 if (f & CSV_FLAGS_QUO) {
1493 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)
1499 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;
1503 183872 1031 if (is_QUOTE (c)) {
22836 161036 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)) {
1509 10904 11916 if (waitingForField) {
1518 11850 66 if (f & CSV_FLAGS_QUO) {
1525 10529 1321 int c2 = CSV_GET;
1527 4240 7610 if (csv->allow_whitespace) {
1531 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)) {
1532 1 89 if (csv->allow_loose_quotes &&
0 1 if (csv->allow_loose_quotes &&
1533 0 0 !(csv->escape_char && c2 == csv->escape_char)) {
1539 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);
1542 87 3 c2 = CSV_GET;
1546 9014 2836 if (is_SEP (c2)) {
15 8999 if (is_SEP (c2)) {
15 0 if (is_SEP (c2)) {
15 0 if (is_SEP (c2)) {
15 0 if (is_SEP (c2)) {
1550 8314 700 AV_PUSH;
0 8314 AV_PUSH;
0 0 AV_PUSH;
0 0 AV_PUSH;
700 8314 AV_PUSH;
688 12 AV_PUSH;
0 688 AV_PUSH;
0 0 AV_PUSH;
3400 5602 AV_PUSH;
0 3400 AV_PUSH;
2150 6852 AV_PUSH;
2150 0 AV_PUSH;
2131 19 AV_PUSH;
2131 0 AV_PUSH;
895 1236 AV_PUSH;
0 9014 AV_PUSH;
9010 4 AV_PUSH;
45 8969 AV_PUSH;
45 0 AV_PUSH;
1554 2661 175 if (c2 == CH_NL || c2 == CH_EOLX) {
20 2641 if (c2 == CH_NL || c2 == CH_EOLX) {
1558 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;
1569 2624 17 if (csv->escape_char && c == csv->escape_char) {
1544 1080 if (csv->escape_char && c == csv->escape_char) {
1572 25 1519 if (c2 == '0') {
1576 25 0 CSV_PUT_SV (0)
0 25 CSV_PUT_SV (0)
1580 1519 0 if (is_QUOTE (c2)) {
1056 463 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)) {
1584 1 1055 if (csv->utf8)
1586 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)
1590 3 460 if (csv->allow_loose_escapes && c2 != CH_CR) {
2 1 if (csv->allow_loose_escapes && c2 != CH_CR) {
1594 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);
1600 197 1361 if (c2 == CH_CR) {
1603 102 95 if (csv->eol_is_cr) {
1607 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;
1611 90 5 c3 = CSV_GET;
1613 81 14 if (c3 == CH_NL) { /* \r is not optional before EOLX! */
1617 79 2 AV_PUSH;
0 79 AV_PUSH;
0 0 AV_PUSH;
0 0 AV_PUSH;
2 79 AV_PUSH;
2 0 AV_PUSH;
0 2 AV_PUSH;
0 0 AV_PUSH;
5 76 AV_PUSH;
0 5 AV_PUSH;
70 11 AV_PUSH;
70 0 AV_PUSH;
40 30 AV_PUSH;
40 0 AV_PUSH;
40 0 AV_PUSH;
0 81 AV_PUSH;
81 0 AV_PUSH;
0 81 AV_PUSH;
0 0 AV_PUSH;
1621 1 13 if (csv->useIO && csv->eol_len == 0) {
1 0 if (csv->useIO && csv->eol_len == 0) {
1622 0 1 if (c3 == CH_CR) { /* \r followed by an empty line */
1630 1 0 if (!is_csv_binary (c3)) {
0 1 if (!is_csv_binary (c3)) {
0 0 if (!is_csv_binary (c3)) {
1638 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;
1643 12 1 ParseError (csv, quoesc ? 2023 : 2010, csv->used - 2);
1647 1304 57 if (c2 == EOF) {
1651 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;
1655 12 45 if (csv->allow_loose_quotes && !quoesc) {
10 2 if (csv->allow_loose_quotes && !quoesc) {
1659 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);
1667 39 8 if (quoesc) {
1669 39 0 ERROR_INSIDE_QUOTES (2023);
1672 8 0 ERROR_INSIDE_QUOTES (2011);
1676 16 50 if (csv->allow_loose_quotes) { /* 1,foo "boo" d'uh,1 */
1678 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);
1681 49 1 ERROR_INSIDE_FIELD (2034);
1684 4653 157430 if (c == csv->escape_char && csv->escape_char) {
4651 2 if (c == csv->escape_char && csv->escape_char) {
1691 33 4618 if (waitingForField) {
1693 3 30 if (csv->allow_unquoted_escape) {
1697 2 1 int c2 = CSV_GET;
1701 1 2 if (c2 == EOF) {
1703 1 0 ERROR_INSIDE_FIELD (2035);
1706 1 1 if (c2 == '0')
1707 1 0 CSV_PUT_SV (0)
0 1 CSV_PUT_SV (0)
1709 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) ||
1710 0 0 c2 == csv->escape_char || csv->allow_loose_escapes) {
1711 0 1 if (csv->utf8)
1713 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)
1717 0 0 ERROR_INSIDE_QUOTES (2025);
1722 4610 8 if (f & CSV_FLAGS_QUO) {
1723 4607 3 int c2 = CSV_GET;
1725 3 4607 if (c2 == EOF) {
1727 3 0 ERROR_INSIDE_QUOTES (2024);
1730 2 4605 if (c2 == '0')
1731 2 0 CSV_PUT_SV (0)
0 2 CSV_PUT_SV (0)
1733 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) ||
1734 2 26 c2 == csv->escape_char || csv->allow_loose_escapes) {
1735 1 4578 if (csv->utf8)
1737 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)
1741 26 0 ERROR_INSIDE_QUOTES (2025);
1745 8 0 if (sv) {
1746 4 4 int c2 = CSV_GET;
1748 4 4 if (c2 == EOF) {
1750 4 0 ERROR_INSIDE_FIELD (2035);
1753 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);
1756 0 0 ERROR_INSIDE_FIELD (2036); /* uncoverable statement I think there's no way to get here */
1759 155591 1841 if (c == CH_NL || is_EOL (c)) {
334 155257 if (c == CH_NL || is_EOL (c)) {
1766 293 2345 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) {
1767 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;
1771 226 2353 if (waitingForField) {
1775 218 8 if (csv->blank_is_undef || csv->empty_is_undef)
8 210 if (csv->blank_is_undef || csv->empty_is_undef)
1779 226 0 unless (csv->is_bound)
1781 14 212 if (csv->keep_meta_info && fflags)
14 0 if (csv->keep_meta_info && fflags)
1786 744 1609 if (f & CSV_FLAGS_QUO) {
1791 19 725 unless (csv->binary)
1792 19 0 ERROR_INSIDE_QUOTES (2021);
1794 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);
1797 9 1600 if (csv->verbatim) {
1802 1 8 unless (csv->binary)
1803 1 0 ERROR_INSIDE_FIELD (2030);
1805 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);
1811 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 &&
1812 0 23 (csv->bptr[0] == 's' || csv->bptr[0] == 'S') &&
0 5 (csv->bptr[0] == 's' || csv->bptr[0] == 'S') &&
1813 0 0 (csv->bptr[1] == 'e' || csv->bptr[1] == 'E') &&
0 5 (csv->bptr[1] == 'e' || csv->bptr[1] == 'E') &&
1814 0 0 (csv->bptr[2] == 'p' || csv->bptr[2] == 'P') &&
5 0 (csv->bptr[2] == 'p' || csv->bptr[2] == 'P') &&
1818 4 1 if (lnu <= MAX_ATTR_LEN) {
1821 1 3 csv->sep_len = lnu == 1 ? 0 : lnu;
1829 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;
1834 1109 154148 if (c == CH_CR && !(csv->verbatim)) {
1106 3 if (c == CH_CR && !(csv->verbatim)) {
1839 117 989 if (waitingForField) {
1842 29 88 if (csv->eol_is_cr) {
1850 83 5 c2 = CSV_GET;
1852 5 83 if (c2 == EOF) {
1862 0 5 unless (seenSomething)
1867 73 10 if (c2 == CH_NL) { /* \r is not optional before EOLX! */
1875 5 5 if (csv->useIO && csv->eol_len == 0) {
5 0 if (csv->useIO && csv->eol_len == 0) {
1876 0 5 if (c2 == CH_CR) { /* \r followed by an empty line */
1886 2 3 if (!is_csv_binary (c2)) {
0 2 if (!is_csv_binary (c2)) {
0 3 if (!is_csv_binary (c2)) {
1894 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) {
1895 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;
1898 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;
1907 8 0 ERROR_INSIDE_FIELD (2031);
1910 620 369 if (f & CSV_FLAGS_QUO) {
1915 70 550 unless (csv->binary)
1916 70 0 ERROR_INSIDE_QUOTES (2022);
1918 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);
1923 181 188 if (csv->eol_is_cr) {
1930 183 5 c2 = CSV_GET;
1932 172 16 if (c2 == CH_NL) { /* \r is not optional before EOLX! */
1939 11 5 if (csv->useIO && csv->eol_len == 0) {
11 0 if (csv->useIO && csv->eol_len == 0) {
1940 4 7 if (!is_csv_binary (c2)
0 4 if (!is_csv_binary (c2)
7 0 if (!is_csv_binary (c2)
1945 1 6 || c2 == CH_CR) {
1952 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) {
1953 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;
1956 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;
1964 11 0 ERROR_INSIDE_FIELD (2032);
1974 3646 150505 if (csv->eolx && c == CH_EOL &&
8 3638 if (csv->eolx && c == CH_EOL &&
8 0 if (csv->eolx && c == CH_EOL &&
1975 8 0 csv->size - csv->used >= (STRLEN)csv->eol_len - 1 &&
1976 8 0 !memcmp (csv->bptr + csv->used, csv->eol + 1, csv->eol_len - 1) &&
1985 10680 143463 if (waitingForField) {
1986 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) {
1994 18 6 if (cl == 1 || (
18 0 if (cl == 1 || (
1995 18 0 (csv->size - csv->used >= cl - 1 &&
1996 18 0 !memcmp (csv->bptr + csv->used, csv->comment_str + 1, cl - 1) &&
2000 0 24 c = CSV_GET;
2008 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)) {
2010 310 1 c = CSV_GET;
2014 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));
2015 1 200 if (c == EOF)
2029 111032 32431 if (f & CSV_FLAGS_QUO) {
2030 110584 448 if (is_csv_binary (c)) {
3021 107563 if (is_csv_binary (c)) {
3454 15 if (is_csv_binary (c)) {
2032 31 3423 unless (csv->binary || csv->utf8)
5 26 unless (csv->binary || csv->utf8)
2033 5 0 ERROR_INSIDE_QUOTES (2026);
2035 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);
2038 32393 38 if (is_csv_binary (c)) {
427 31966 if (is_csv_binary (c)) {
453 12 if (is_csv_binary (c)) {
2039 413 40 if (csv->useIO && c == EOF)
3 410 if (csv->useIO && c == EOF)
2042 9 441 unless (csv->binary || csv->utf8)
9 0 unless (csv->binary || csv->utf8)
2043 9 0 ERROR_INSIDE_FIELD (2037);
2045 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);
2050 119 161059 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)
2054 366 380 if (waitingForField) {
2055 335 31 if (seenSomething || !csv->useIO) {
3 332 if (seenSomething || !csv->useIO) {
2056 33 1 NewField;
1 32 NewField;
0 33 NewField;
2057 30 4 if (csv->blank_is_undef || csv->empty_is_undef)
4 26 if (csv->blank_is_undef || csv->empty_is_undef)
2061 33 1 unless (csv->is_bound)
2063 3 31 if (csv->keep_meta_info && fflags)
3 0 if (csv->keep_meta_info && fflags)
2072 24 356 if (f & CSV_FLAGS_QUO)
2073 24 0 ERROR_INSIDE_QUOTES (2027);
2075 354 2 if (sv) {
2076 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;
2078 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)
2091 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))
2096 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))
2102 0 125 PUSHMARK (SP);
2103 0 125 mXPUSHs (newRV_inc ((SV *)hv));
2104 0 125 mXPUSHs (newRV_inc ((SV *)av));
2108 125 0 if (res) {
2110 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)) {
2111 64 0 if (strcmp (SvPV_nolen (rv), "skip") == 0)
64 0 if (strcmp (SvPV_nolen (rv), "skip") == 0)
2116 125 0 FREETMPS;
2128 4145 405 if (csv.eolx || csv.eol_is_cr) {
444 3701 if (csv.eolx || csv.eol_is_cr) {
2134 2622 1928 if ((csv.useIO = useIO)) {
2137 176 2446 if ((ahead = csv.has_ahead)) {
2139 176 0 if ((svp = hv_fetchs (hv, "_AHEAD", FALSE)) && *svp) {
176 0 if ((svp = hv_fetchs (hv, "_AHEAD", FALSE)) && *svp) {
2140 175 1 csv.bptr = SvPV (csv.tmp = *svp, csv.size);
2142 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)
2143 0 0 sv_setiv (pos, SvIV (pos) - csv.size);
2150 1928 0 csv.bptr = SvPV (src, csv.size);
2152 217 4333 if (csv.has_error_input) {
2161 27 4512 if (csv.strict) {
2162 8 19 unless (csv.strict_n) csv.strict_n = (short)csv.fld_idx;
2163 12 15 if (csv.fld_idx != csv.strict_n) {
2164 8 4 unless (csv.useIO & useIO_EOF)
2166 8 4 if (last_error) /* an error callback can reset and accept */
2171 2614 1925 if (csv.useIO) {
2172 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) {
2178 549 2028 if (csv.useIO & useIO_EOF)
2184 1580 1034 if (avf) {
2185 11 1569 if (csv.keep_meta_info)
2196 1925 0 if (svp && *svp)
1925 0 if (svp && *svp)
2197 1925 0 csv.cache = (byte *)SvPV_nolen (*svp);
2201 3903 636 if (result && csv.types) {
2 3901 if (result && csv.types) {
2206 6 2 for (i = 0; i <= len && i <= csv.types_len; i++) {
6 0 for (i = 0; i <= len && i <= csv.types_len; i++) {
2207 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)) {
2211 0 2 sv_setiv (*svp, SvIV (*svp));
2222 0 2 sv_setnv (*svp, SvNV (*svp));
2249 3165 340 if (state && csv.has_hooks & HOOK_AFTER_PARSE)
5 3160 if (state && csv.has_hooks & HOOK_AFTER_PARSE)
2251 340 3165 return (state || !last_error);
2 338 return (state || !last_error);
2257 250 83 while (av_len (av) >= 0)
2270 278 56 if (SvOK (off)) {
278 0 if (SvOK (off)) {
0 278 if (SvOK (off)) {
2271 48 8 skip = SvIV (off);
2272 12 44 if (skip < 0) {
2277 290 44 if (SvOK (len))
290 0 if (SvOK (len))
0 290 if (SvOK (len))
2278 36 8 length = SvIV (len);
2280 738 296 while (c_xsParse (csv, hv, row, NULL, io, 1)) {
2284 20 718 if (skip > 0) {
2290 12 706 if (n++ >= tail) {
2295 117 601 if (csv.has_hooks & HOOK_AFTER_PARSE) {
2296 63 54 unless (hook (aTHX_ hv, "after_parse", row)) {
2303 52 603 if (n >= length && skip >= 0)
32 20 if (n >= length && skip >= 0)
2308 8 328 while (n > length) {
2327 260 21387 if (*csv.eol)
2330 20251 1396 if (useIO && csv.has_hooks & HOOK_BEFORE_PRINT)
3 20248 if (useIO && csv.has_hooks & HOOK_BEFORE_PRINT)
2336 21635 8 if (result && !useIO && csv.utf8)
1391 20244 if (result && !useIO && csv.utf8)
25 1366 if (result && !useIO && csv.utf8)
2357 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)) {
2358 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;
2367 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))) {
2379 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) {
2382 1 3 if (SvOK (*sv))
1 0 if (SvOK (*sv))
0 1 if (SvOK (*sv))
2400 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;
2402 1391 1 ST (0) = xsCombine (self, hv, av, dst, useIO) ? &PL_sv_yes : &PL_sv_undef;
2414 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;
2418 1724 201 ST (0) = xsParse (self, hv, av, avf, src, 0) ? &PL_sv_yes : &PL_sv_no;
2429 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;
2430 5 20251 if (fields == &PL_sv_undef)
2433 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))
2439 20244 7 ST (0) = xsCombine (self, hv, av, io, 1) ? &PL_sv_yes : &PL_sv_no;
2451 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;
2456 1443 137 : &PL_sv_undef;
2467 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;
2469 56 278 offset = items > 2 ? ST (2) : &PL_sv_undef;
2470 44 290 length = items > 3 ? ST (3) : &PL_sv_undef;
2482 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;
2493 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;