Branch Coverage

Spawn.xs
Criterion Covered Total %
branch 50 132 37.8


line true false branch
34 4 0 return errno ? 0 : pid;
46 0 0 if (ckWARN(WARN_EXEC))
64 0 1 Newx(argv, sp - mark + 1, const char*);
68 4 1 while (++mark <= sp) {
69 4 0 if (*mark) {
70 3 1 char *arg = savepv(SvPV_nolen_const(*mark));
77 0 1 if (really) {
78 0 0 tmps = savepv(SvPV_nolen_const(really));
81 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] != '/') ||
82 0 0 (really && *tmps != '/')) /* will posix_spawn use PATH? */
83 0 0 TAINT_ENV(); /* testing IFS here is overkill, probably */
85 0 1 if (really && *tmps) {
0 0 if (really && *tmps) {
88 1 0 } else if (argv[0]) {
95 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] : ""));
133 3 0 while (*cmd && isSPACE(*cmd))
0 3 while (*cmd && isSPACE(*cmd))
176 0 3 if (*cmd == '.' && isSPACE(cmd[1]))
0 0 if (*cmd == '.' && isSPACE(cmd[1]))
179 0 3 if (strBEGINs(cmd,"exec") && isSPACE(cmd[4]))
0 0 if (strBEGINs(cmd,"exec") && isSPACE(cmd[4]))
183 23 3 while (isWORDCHAR(*s))
185 0 3 if (*s == '=')
188 49 1 for (s = cmd; *s; s++) {
189 46 3 if (*s != ' ' && !isALPHA(*s) &&
7 39 if (*s != ' ' && !isALPHA(*s) &&
2 5 if (*s != ' ' && !isALPHA(*s) &&
191 0 2 if (*s == '\n' && !s[1]) {
0 0 if (*s == '\n' && !s[1]) {
196 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'
197 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])
198 0 0 && (!s[3] || isSPACE(s[3])))
0 0 && (!s[3] || isSPACE(s[3])))
202 0 0 while (*t && isSPACE(*t))
0 0 while (*t && isSPACE(*t))
204 0 0 if (!*t && (PerlLIO_dup2(1,2) != -1)) {
0 0 if (!*t && (PerlLIO_dup2(1,2) != -1)) {
213 2 0 if (pid) return pid;
219 0 1 Newx(argv, (s - cmd) / 2 + 2, const char*);
224 1 1 for (s = cmd; *s;) {
225 0 1 while (isSPACE(*s))
227 1 0 if (*s)
229 19 1 while (*s && !isSPACE(*s))
19 0 while (*s && !isSPACE(*s))
231 0 1 if (*s)
235 1 0 if (argv[0]) {
239 1 0 if (pid) return pid;
240 0 0 if (errno == ENOEXEC) /* for system V NIH syndrome */
257 0 4 if (PL_tainting) {
258 0 0 TAINT_ENV();
259 0 0 while (++MARK <= SP) {
261 0 0 (void)SvPV_nolen_const(*MARK);
262 0 0 if (PL_tainted)
266 0 0 TAINT_PROPER("spawn");
276 1 3 else if (SP - MARK != 1)
279 3 0 pid = do_posix_spawn1(aTHX_ SvPV_nolen(sv_mortalcopy(*SP)));
283 2 2 XPUSHi(pid);
0 4 XPUSHi(pid);