996
|
1 # run the calculator
|
|
2
|
|
3 # Copyright (c) 2006-2008 Claudio Calvelli, all rights reserved.
|
|
4
|
|
5 # CLC-INTERCAL is copyrighted software. However, permission to use, modify,
|
|
6 # and distribute it is granted provided that the conditions set out in the
|
|
7 # licence agreement are met. See files README and COPYING in the distribution.
|
|
8
|
|
9 use IPC::Open3 qw(open3);
|
|
10
|
|
11 my @libs = map { "-I$_" } @INC;
|
|
12 #my $rcfile = undef;
|
|
13 #for my $inc (@INC) {
|
|
14 # my $f = "$inc/Language/INTERCAL/Include/system.sickrc";
|
|
15 # -f $f or next;
|
|
16 # $rcfile = $f;
|
|
17 # last;
|
|
18 #}
|
|
19 #defined $rcfile or die "Could not find default system.sickrc?\n";
|
|
20
|
|
21 sub run_calculator {
|
|
22 my ($mode, $language, @options) = @_;
|
|
23 my ($rfh, $wfh);
|
|
24 my @language = defined $language ? ("-l$language") : ();
|
|
25 push @language, map { "-o$_" } @options;
|
|
26 my $pid = open3($rfh, $wfh, $wfh, $^X, @libs,
|
|
27 'bin/intercalc', '--batch', "-m$mode", @language,
|
|
28 '--bug=0', '--ubug=0', '--nouserrc');
|
|
29 my $so = select $rfh;
|
|
30 $| = 1;
|
|
31 select $so;
|
|
32 ($pid, $rfh, $wfh);
|
|
33 }
|
|
34
|
|
35 1
|