POSIX-Run-Capture
view release on metacpan or search on metacpan
&& SvTYPE(SvRV(val)) == SVt_PVAV) {
argv = XS_unpack_ARGV(val);
} else
croak("argv must be an array ref");
} else if (strcmp(kw, "env") == 0) {
if (SvROK(val)
&& SvTYPE(SvRV(val)) == SVt_PVAV) {
env = XS_unpack_ARGV(val);
} else
croak("env must be an array ref");
} else if (strcmp(kw, "stdout") == 0
|| strcmp(kw, "stderr") == 0) {
cb[kw[3] == 'o' ? 0 : 1] = val;
} else if (strcmp(kw, "timeout") == 0) {
if (SvIOK(val)) {
timeout = SvUV(val);
} else
croak("timeout must be a number of seconds");
} else if (strcmp(kw, "program") == 0) {
if (SvROK(val))
croak("program argument is not a scalar");
else
prog = val;
} else if (strcmp(kw, "input") == 0
|| strcmp(kw, "stdin") == 0) {
input = val;
} else
croak("unknown keyword argument %s", kw);
}
}
RETVAL = capture_new(prog, argv, env, timeout, cb, input);
OUTPUT:
RETVAL
void
capture_DESTROY(cp)
POSIX::Run::Capture cp;
=head2 $obj->set_argv_ref($aref)
Sets command argument vector. The B<$aref> parameter is an array reference.
This is an auxiliary method. Use B<set_argv> instead.
=cut
void
capture_set_argv_ref(cp, argv)
POSIX::Run::Capture cp;
ARGV argv;
void
capture_set_env_ref(cp, env)
POSIX::Run::Capture cp;
ARGV env;
void
capture_set_program(cp, prog)
POSIX::Run::Capture cp;
char *prog = NO_INIT;
PPCODE:
if (cp->program != &PL_sv_undef)
SvREFCNT_dec(cp->program);
cp->program = ST(1);
if (cp->program != &PL_sv_undef) {
SvREFCNT_inc(cp->program);
cp->rc.rc_program = SvPV_nolen(cp->program);
cp->flags |= RCF_PROGRAM;
} else
cp->flags &= ~RCF_PROGRAM;
void
capture_set_timeout(cp, timeout)
POSIX::Run::Capture cp;
unsigned timeout;
CODE:
if (timeout) {
cp->rc.rc_timeout = timeout;
cp->flags |= RCF_TIMEOUT;
} else {
cp->flags &= ~RCF_TIMEOUT;
}
void
capture_set_input(cp, inp)
POSIX::Run::Capture cp;
SV *inp;
ARGV
capture_argv(cp)
POSIX::Run::Capture cp;
CODE:
RETVAL = cp->rc.rc_argv;
OUTPUT:
RETVAL
ARGV
capture_env(cp)
POSIX::Run::Capture cp;
CODE:
RETVAL = cp->rc.rc_env;
OUTPUT:
RETVAL
void
capture_program(cp)
POSIX::Run::Capture cp;
PPCODE:
if (cp->program == &PL_sv_undef && cp->rc.rc_argv) {
ST(0) = newSVpv(cp->rc.rc_argv[0], 0);
sv_2mortal(ST(0));
} else
ST(0) = cp->program;
XSRETURN(1);
unsigned
capture_timeout(cp)
POSIX::Run::Capture cp;
CODE:
RETVAL = (cp->flags & RCF_TIMEOUT) ? cp->rc.rc_timeout : 0;
OUTPUT:
RETVAL
int
capture_run(cp)
POSIX::Run::Capture cp;
int
capture_status(cp)
POSIX::Run::Capture cp;
CODE:
RETVAL = cp->rc.rc_status;
OUTPUT:
RETVAL
int
capture_errno(cp)
POSIX::Run::Capture cp;
CODE:
RETVAL = cp->rc.rc_errno;
OUTPUT:
RETVAL
size_t
capture_nlines(cp, n)
POSIX::Run::Capture cp;
int n;
CODE:
if (n != RUNCAP_STDOUT && n != RUNCAP_STDERR) {
croak("invalid stream number: %d", n);
}
RETVAL = cp->rc.rc_cap[n].sc_nlines;
OUTPUT:
RETVAL
size_t
capture_length(cp, n)
POSIX::Run::Capture cp;
int n;
CODE:
if (n != RUNCAP_STDOUT && n != RUNCAP_STDERR) {
croak("invalid stream number: %d", n);
}
RETVAL = cp->rc.rc_cap[n].sc_leng;
OUTPUT:
RETVAL
char *
( run in 0.491 second using v1.01-cache-2.11-cpan-5511b514fd6 )