| line |
true |
false |
branch |
|
43
|
0 |
4 |
if (PL_signals & PERL_SIGNALS_UNSAFE_FLAG) |
|
47
|
0 |
4 |
if (signo == SIGCHLD && handler == (Sighandler_t) SIG_IGN) |
|
|
0 |
0 |
if (signo == SIGCHLD && handler == (Sighandler_t) SIG_IGN) |
|
78
|
3 |
1 |
return errno ? 0 : pid; |
|
89
|
1 |
0 |
if (ckWARN(WARN_EXEC)) |
|
107
|
0 |
1 |
Newx(argv, sp - mark + 1, const char*); |
|
111
|
4 |
1 |
while (++mark <= sp) { |
|
112
|
4 |
0 |
if (*mark) { |
|
120
|
0 |
1 |
if (really) { |
|
124
|
1 |
0 |
if ((!really && argv[0] && *argv[0] != '/') || |
|
|
1 |
0 |
if ((!really && argv[0] && *argv[0] != '/') || |
|
|
1 |
0 |
if ((!really && argv[0] && *argv[0] != '/') || |
|
|
0 |
1 |
if ((!really && argv[0] && *argv[0] != '/') || |
|
125
|
0 |
0 |
(really && *tmps != '/')) /* will posix_spawn use PATH? */ |
|
126
|
0 |
0 |
TAINT_ENV(); /* testing IFS here is overkill, probably */ |
|
128
|
0 |
1 |
if (really && *tmps) { |
|
|
0 |
0 |
if (really && *tmps) { |
|
131
|
1 |
0 |
} else if (argv[0]) { |
|
138
|
0 |
0 |
S_posix_spawn_failed(aTHX_ (really ? tmps : argv[0] ? argv[0] : "")); |
|
|
0 |
0 |
S_posix_spawn_failed(aTHX_ (really ? tmps : argv[0] ? argv[0] : "")); |
|
176
|
3 |
0 |
while (*cmd && isSPACE(*cmd)) |
|
|
0 |
3 |
while (*cmd && isSPACE(*cmd)) |
|
219
|
0 |
3 |
if (*cmd == '.' && isSPACE(cmd[1])) |
|
|
0 |
0 |
if (*cmd == '.' && isSPACE(cmd[1])) |
|
222
|
0 |
3 |
if (strBEGINs(cmd,"exec") && isSPACE(cmd[4])) |
|
|
0 |
0 |
if (strBEGINs(cmd,"exec") && isSPACE(cmd[4])) |
|
226
|
23 |
3 |
while (isWORDCHAR(*s)) |
|
228
|
0 |
3 |
if (*s == '=') |
|
231
|
49 |
1 |
for (s = cmd; *s; s++) { |
|
232
|
46 |
3 |
if (*s != ' ' && !isALPHA(*s) && |
|
|
7 |
39 |
if (*s != ' ' && !isALPHA(*s) && |
|
233
|
2 |
5 |
memCHRs("$&*(){}[]'\";\\|?<>~`\n",*s)) { |
|
234
|
0 |
2 |
if (*s == '\n' && !s[1]) { |
|
|
0 |
0 |
if (*s == '\n' && !s[1]) { |
|
239
|
0 |
2 |
if (*s == '>' && s[1] == '&' && s[2] == '1' |
|
|
0 |
0 |
if (*s == '>' && s[1] == '&' && s[2] == '1' |
|
|
0 |
0 |
if (*s == '>' && s[1] == '&' && s[2] == '1' |
|
240
|
0 |
0 |
&& s > cmd + 1 && s[-1] == '2' && isSPACE(s[-2]) |
|
|
0 |
0 |
&& s > cmd + 1 && s[-1] == '2' && isSPACE(s[-2]) |
|
|
0 |
0 |
&& s > cmd + 1 && s[-1] == '2' && isSPACE(s[-2]) |
|
241
|
0 |
0 |
&& (!s[3] || isSPACE(s[3]))) |
|
|
0 |
0 |
&& (!s[3] || isSPACE(s[3]))) |
|
245
|
0 |
0 |
while (*t && isSPACE(*t)) |
|
|
0 |
0 |
while (*t && isSPACE(*t)) |
|
247
|
0 |
0 |
if (!*t && (PerlLIO_dup2(1,2) != -1)) { |
|
|
0 |
0 |
if (!*t && (PerlLIO_dup2(1,2) != -1)) { |
|
256
|
2 |
0 |
if (pid) return pid; |
|
262
|
0 |
1 |
Newx(argv, (s - cmd) / 2 + 2, const char*); |
|
267
|
1 |
1 |
for (s = cmd; *s;) { |
|
268
|
0 |
1 |
while (isSPACE(*s)) |
|
270
|
1 |
0 |
if (*s) |
|
272
|
19 |
1 |
while (*s && !isSPACE(*s)) |
|
|
19 |
0 |
while (*s && !isSPACE(*s)) |
|
274
|
0 |
1 |
if (*s) |
|
278
|
0 |
1 |
if (argv[0]) { |
|
282
|
0 |
1 |
if (pid) return pid; |
|
283
|
0 |
1 |
if (errno == ENOEXEC) /* for system V NIH syndrome */ |
|
300
|
0 |
4 |
if (PL_tainting) { |
|
301
|
0 |
0 |
TAINT_ENV(); |
|
302
|
0 |
0 |
while (++MARK <= SP) { |
|
305
|
0 |
0 |
if (PL_tainted) |
|
309
|
0 |
0 |
TAINT_PROPER("spawn"); |
|
319
|
1 |
3 |
else if (SP - MARK != 1) |
|
326
|
2 |
2 |
XPUSHi(pid); |
|
|
0 |
4 |
XPUSHi(pid); |