Fix previous commit
[gruntmaster-daemon.git] / lib / Gruntmaster / Daemon / Format / CPP.pm
index 707af32bfc6b7c04bf7ad587783202b67cb02e24..96e9ddabcd4670979e4410ce54c6fee1f5ee3952 100644 (file)
@@ -4,7 +4,6 @@ use 5.014000;
 use strict;
 use warnings;
 
-use BSD::Resource qw/setrlimit RLIMIT_AS RLIMIT_FSIZE/;
 use POSIX qw//;
 use File::Basename qw/fileparse/;
 use Gruntmaster::Daemon::Constants qw/TLE OLE DIED NZX/;
@@ -26,11 +25,9 @@ sub prepare{
   get_logger->trace("Preparing file $name...");
 
   open my $devnull, devnull;
-  open my $errors, '>compile-error';
-  my $ret = open3 $devnull, $errors, $errors, 'g++', '-o', $basename, $name;
-  local $SIG{ALRM} = sub {kill KILL => $ret};
-  alarm 5;
-  wait;
+  open my $errors, '>>compile-error';
+  my $ret = open3 $devnull, $errors, undef, 'gruntmaster-compile', CPP => $basename, $name;
+  waitpid $ret, 0;
   close $devnull;
   close $errors;
   die 'Compile error' if $?
@@ -53,10 +50,9 @@ sub run{
        die [DIED, "Crash (SIG$signame)"] if $sig;
        die [NZX, "Non-zero exit status: " . ($? >> 8)] if $?;
   } else {
-       $^F = 50;
-       POSIX::close $_ for 0, 1, 3 .. $^F;
        my @fds = exists $args{fds} ? @{$args{fds}} : ();
-       get_logger->trace("Running $basename with fds ". join ' ', @fds);
+       $^F = 50;
+       POSIX::close $_ for 0 .. $^F;
        my $it = natatime 2, @fds;
        while (my ($fd, $file) = $it->()) {
          open my $fh, $file or die $!;
@@ -66,10 +62,7 @@ sub run{
                POSIX::close $oldfd or die $!;
          }
        }
-#      POSIX::close 2;
-       setrlimit RLIMIT_AS, $args{mlimit}, $args{mlimit} if exists $args{mlimit};
-       setrlimit RLIMIT_FSIZE, $args{olimit}, $args{olimit} if exists $args{olimit};
-       exec "./$basename", exists $args{args} ? @{$args{args}} : ();
+       exec 'gruntmaster-exec', $args{mlimit} // 0, $args{olimit} // 0, "./$basename", exists $args{args} ? @{$args{args}} : ();
   }
 }
 
This page took 0.010118 seconds and 4 git commands to generate.