#!/usr/bin/perl
# Fork.pm 
# Copyright (c) 2006 Jonathan Rockway <jrockway@cpan.org>

package TestApp::Controller::Fork;

use strict;
use warnings;
use base 'Catalyst::Controller';
use YAML;

sub system : Local {
    my ($self, $c, $ls) = @_;
    my ($result, $code) = (undef, 1);

    if(!-e $ls || !-x _){ 
	$result = 'skip';
	$code = 0;
    }
    else {
	$result = system($ls, $ls, $ls) || $!;
	$code = $?;
    }
    
    $c->response->body(Dump({result => $result, code => $code}));
}

sub backticks : Local {
    my ($self, $c, $ls) = @_;
    my ($result, $code) = (undef, 1);
    
    if(!-e $ls || !-x _){ 
	$result = 'skip';
	$code = 0;
    }
    else {
	$result = `$ls $ls $ls` || $!;
	$code = $?;
    }
    
    $c->response->body(Dump({result => $result, code => $code}));
}

sub fork : Local {
    my ($self, $c) = @_;
    my $pid;
    my $x = 0;
    
    if($pid = fork()){
	$x = "ok";
    }
    else {
	exit(0);
    }

    waitpid $pid,0 or die;
    
    $c->response->body(Dump({pid => $pid, result => $x}));
}

1;
