line |
true |
false |
branch |
38
|
13 |
5 |
for (i = 0; i < items; i++) { |
41
|
0 |
13 |
if (SvROK(ST(i))) croak("not a string"); |
43
|
1 |
12 |
if (SvUTF8(ST(i))) isutf8 = YES; |
46
|
1 |
12 |
if (svt == SVt_NULL) { |
52
|
7 |
5 |
char *string = SvPV(ST(i), length); |
53
|
0 |
12 |
if (string == NULL) croak("could not find a string for argument %d", i + 1); |
56
|
1 |
11 |
if (length == 0) { |
65
|
40 |
11 |
for (ptr = string; *ptr != '\0'; ptr++) { |
66
|
34 |
6 |
if (!isdigit(*ptr)) { |
72
|
35 |
5 |
if (csvtype == CSV_STRING && *ptr == '"') length++; |
|
2 |
33 |
if (csvtype == CSV_STRING && *ptr == '"') length++; |
79
|
6 |
5 |
if (csvtype == CSV_STRING) finallength += 2; // beginning and trailing quote |
90
|
13 |
5 |
for (i = 0; i < items; i++) { |
92
|
8 |
5 |
if (i != 0) { |
99
|
7 |
6 |
if (field.type == CSV_STRING) *optr++ = '"'; |
101
|
11 |
2 |
if (field.string != NULL) { |
103
|
40 |
11 |
for (ptr = field.string; *ptr != '\0'; ptr++) { |
107
|
2 |
38 |
if (*ptr == '"') { |
114
|
7 |
6 |
if (field.type == CSV_STRING) *optr++ = '"'; |
122
|
1 |
4 |
if (isutf8) SvUTF8_on(retval); |
134
|
0 |
25 |
if (SvROK(string)) croak("not a string"); |
138
|
25 |
0 |
char *str = SvPV(string, len); |
139
|
0 |
25 |
if (len == 0) XSRETURN(0); |
149
|
214 |
13 |
for ( ptr = str; *ptr != '\0'; ptr++ ) { |
150
|
53 |
161 |
if ( field == NULL ) { |
156
|
19 |
34 |
if (*ptr == '"') { |
163
|
1 |
33 |
else if (*ptr == ',') { |
164
|
1 |
0 |
EXTEND( SP, st_pos + 1 ); |
|
0 |
1 |
EXTEND( SP, st_pos + 1 ); |
170
|
1 |
32 |
else if ( |
171
|
0 |
1 |
( *ptr == '\n' && *(ptr+1) == '\0' ) |
172
|
3 |
29 |
|| ( *ptr == '\r' && *(ptr+1) == '\n' && *(ptr+2) == '\0' ) |
|
3 |
0 |
|| ( *ptr == '\r' && *(ptr+1) == '\n' && *(ptr+2) == '\0' ) |
|
3 |
0 |
|| ( *ptr == '\r' && *(ptr+1) == '\n' && *(ptr+2) == '\0' ) |
184
|
100 |
90 |
if ( !quoted ) { |
187
|
21 |
0 |
EXTEND( SP, st_pos + 1 ); |
|
0 |
21 |
EXTEND( SP, st_pos + 1 ); |
196
|
2 |
1 |
if (*(ptr+1) == '\0') { |
198
|
2 |
0 |
if (ptr > field && *(ptr-1) == '\r') { |
|
1 |
1 |
if (ptr > field && *(ptr-1) == '\r') { |
217
|
26 |
64 |
if ( *ptr == '"' ) { |
219
|
8 |
18 |
if ( *(ptr + 1) == '"' ) { |
225
|
14 |
4 |
else if ( *(ptr + 1) == ',' |
226
|
5 |
9 |
|| *(ptr + 1) == '\0' |
227
|
2 |
3 |
|| ( *(ptr + 1) == '\n' && *(ptr + 2) == '\0' ) // trailing newline |
|
0 |
2 |
|| ( *(ptr + 1) == '\n' && *(ptr + 2) == '\0' ) // trailing newline |
228
|
2 |
1 |
|| ( *(ptr + 1) == '\r' && *(ptr + 2) == '\n' && *(ptr + 3) == '\0' ) // trailing CRLF |
|
2 |
0 |
|| ( *(ptr + 1) == '\r' && *(ptr + 2) == '\n' && *(ptr + 3) == '\0' ) // trailing CRLF |
|
2 |
0 |
|| ( *(ptr + 1) == '\r' && *(ptr + 2) == '\n' && *(ptr + 3) == '\0' ) // trailing CRLF |
230
|
13 |
4 |
if (!requires_unescape) { |
233
|
2 |
11 |
if (isutf8) SvUTF8_on(tmp); |
234
|
13 |
0 |
EXTEND( SP, st_pos + 1 ); |
|
0 |
13 |
EXTEND( SP, st_pos + 1 ); |
246
|
34 |
4 |
for (i = 0, fieldptr = field; fieldptr < ptr; fieldptr++) { |
248
|
8 |
26 |
if (*fieldptr == '"') { |
255
|
1 |
3 |
if (isutf8) SvUTF8_on(tmpsv); |
256
|
4 |
0 |
EXTEND( SP, st_pos + 1 ); |
|
0 |
4 |
EXTEND( SP, st_pos + 1 ); |
265
|
2 |
15 |
if (*(ptr+1) == '\n') break; |
268
|
4 |
11 |
if (*(ptr+1) == ',') ptr++; |
285
|
6 |
15 |
if (field != NULL && !quoted) { |
|
5 |
1 |
if (field != NULL && !quoted) { |
286
|
5 |
0 |
EXTEND( SP, st_pos + 1 ); |
|
0 |
5 |
EXTEND( SP, st_pos + 1 ); |
290
|
1 |
15 |
else if (field != NULL) { |
294
|
2 |
13 |
else if (*(ptr-1) == ',') { |
295
|
2 |
0 |
EXTEND( SP, st_pos + 1 ); |
|
0 |
2 |
EXTEND( SP, st_pos + 1 ); |