App-Greple-update
view release on metacpan or search on metacpan
lib/App/Greple/update.pm view on Meta::CPAN
234235236237238239240241242243244245246247248249250251252253254my
$fh
;
state
$fdpath
=
do
{
my
$fd
= DATA->
fileno
;
first { -r
"$_/$fd"
}
qw( /dev/fd /proc/self/fd )
;
};
if
(
$fdpath
and
$remember_data
) {
$fh
= new_tmpfile IO::File or
die
"new_tmpfile: $!\n"
;
$fh
->
binmode
(
':encoding(utf8)'
);
my
$fd
=
$fh
->
fcntl
(F_GETFD, 0) or
die
"fcntl F_GETFD: $!\n"
;
$fh
->
fcntl
(F_SETFD,
$fd
& ~FD_CLOEXEC) or
die
"fcntl F_SETFD: $!\n"
;
$fh
->printflush(
$contents
);
$fh
->
seek
(0, 0);
$orig
=
sprintf
"%s/%d"
,
$fdpath
,
$fh
->
fileno
;
}
@update_diffcmd
or confess
"Empty diff command"
;
exec
@update_diffcmd
,
$orig
,
"-"
;
die
"exec: $!\n"
;
t/runner/Runner.pm view on Meta::CPAN
35363738394041424344454647484950515253545556575859606162use
IO::File;
sub
run {
my
$obj
=
shift
;
my
$pid
= (
my
$fh
= new IO::File)->
open
(
'-|'
) //
die
"open: $@\n"
;
if
(
$pid
== 0) {
if
(
my
$stdin
=
$obj
->{STDIN}) {
open
STDIN,
"<&="
,
$stdin
->
fileno
or
die
"open: $!\n"
;
$stdin
->
fcntl
(F_SETFD, 0) or
die
"fcntl F_SETFD: $!\n"
;
binmode
STDIN,
':encoding(utf8)'
;
}
open
STDERR,
">&STDOUT"
;
$obj
->execute;
exit
1;
}
$obj
->{STDIN} =
undef
;
binmode
$fh
,
':encoding(utf8)'
;
$obj
->{stdout} =
do
{
local
$/; <
$fh
> };
my
$child
=
wait
;
$child
!=
$pid
and
die
"child = $child, pid = $pid"
;
$obj
->{pid} =
$pid
;
$obj
->{result} = $?;
$obj
;
}
sub
status {
my
$obj
=
shift
;
t/runner/Runner.pm view on Meta::CPAN
697071727374757677787980818283848586878889}
*result
= \
&stdout
;
# for backward compatibility
sub
setstdin {
my
$obj
=
shift
;
my
$data
=
shift
;
my
$stdin
=
$obj
->{STDIN} //=
do
{
my
$fh
= new_tmpfile IO::File or
die
"new_tmpfile: $!\n"
;
$fh
->
fcntl
(F_SETFD, 0) or
die
"fcntl F_SETFD: $!\n"
;
binmode
$fh
,
':encoding(utf8)'
;
$fh
;
};
$stdin
->
seek
(0, 0) or
die
"seek: $!\n"
;
$stdin
->
truncate
(0) or
die
"truncate: $!\n"
;
$stdin
->
(
$data
);
$stdin
->
seek
(0, 0) or
die
"seek: $!\n"
;
$obj
;
}
##
( run in 0.339 second using v1.01-cache-2.11-cpan-bf8d7bb2d05 )