3
0
mirror of https://github.com/pragma-/pbot.git synced 2024-11-26 05:49:27 +01:00

compiler_vm: Add $channel argument to separate snippet history into per-channel/nick files

This commit is contained in:
Pragmatic Software 2014-03-04 21:40:51 +00:00
parent 921c9917a5
commit a5ae7478e1
6 changed files with 67 additions and 60 deletions

View File

@ -13,7 +13,7 @@ use warnings;
# These are set automatically by the build/commit script # These are set automatically by the build/commit script
use constant { use constant {
BUILD_NAME => "PBot", BUILD_NAME => "PBot",
BUILD_REVISION => 502, BUILD_REVISION => 503,
BUILD_DATE => "2014-03-04", BUILD_DATE => "2014-03-04",
}; };

View File

@ -1851,10 +1851,10 @@ action: /say C89/C90 draft: http://flash-gordon.me.uk/ansi.c.txt or http://web.a
created_on: 1236861685 created_on: 1236861685
enabled: 1 enabled: 1
last_referenced_in: pragma- last_referenced_in: pragma-
last_referenced_on: 1393877069.42851 last_referenced_on: 1393946502.21155
owner: Wulf4 owner: Wulf4
rate_limit: 15 rate_limit: 15
ref_count: 97 ref_count: 98
ref_user: pragma-!~chaos@unaffiliated/pragmatic-chaos ref_user: pragma-!~chaos@unaffiliated/pragmatic-chaos
type: text type: text
@ -7185,34 +7185,34 @@ action_with_args: /say $nick, $answers
created_on: 1193948417 created_on: 1193948417
enabled: 1 enabled: 1
last_referenced_in: ##c last_referenced_in: ##c
last_referenced_on: 1393901895.20933 last_referenced_on: 1393945309.2847
owner: pragma_ owner: pragma_
rate_limit: 0 rate_limit: 0
ref_count: 1303 ref_count: 1304
ref_user: puish!~jgb@unaffiliated/jonbryan ref_user: cousteau!~cousteau@138.100.74.81
type: text type: text
<:(> <:(>
action: /call :) action: /call :)
created_on: 1180052710 created_on: 1180052710
enabled: 1 enabled: 1
last_referenced_on: 1390399438.41235 last_referenced_on: 1393961635.61896
owner: pragma_ owner: pragma_
rate_limit: 15 rate_limit: 15
ref_count: 27 ref_count: 28
ref_user: rie!~chatzilla@p2003004ACE51B43792E6BAFFFE5389F3.dip0.t-ipconnect.de ref_user: nCrazed!~nCrazed@5.2.16.190
type: text type: text
<:)> <:)>
action: /say $faces action: /say $faces
created_on: 1109365121 created_on: 1109365121
enabled: 1 enabled: 1
last_referenced_in: rob`` last_referenced_in: ##c
last_referenced_on: 1390851212.03434 last_referenced_on: 1393961635.63607
owner: pragma_ owner: pragma_
rate_limit: 15 rate_limit: 15
ref_count: 152 ref_count: 153
ref_user: rob``!~rob@gtng-4db047dd.pool.mediaWays.net ref_user: nCrazed!~nCrazed@5.2.16.190
type: text type: text
<:-(> <:-(>
@ -8557,11 +8557,11 @@ type: text
action: c11std.pl action: c11std.pl
created_on: 1326727233.54048 created_on: 1326727233.54048
enabled: 1 enabled: 1
last_referenced_in: ##c last_referenced_in: pragma-
last_referenced_on: 1393889491.09541 last_referenced_on: 1393959075.38608
owner: pragma_ owner: pragma_
rate_limit: 0 rate_limit: 0
ref_count: 1136 ref_count: 1141
ref_user: pragma-!~chaos@unaffiliated/pragmatic-chaos ref_user: pragma-!~chaos@unaffiliated/pragmatic-chaos
type: module type: module
@ -8703,14 +8703,16 @@ ref_user: pragma_
type: text type: text
<cc> <cc>
action: /call compiler $nick action: /call compiler $nick $channel
created_on: 1272176634 created_on: 1272176634
edited_by: pragma-!~chaos@unaffiliated/pragmatic-chaos
edited_on: 1393967703.12375
enabled: 1 enabled: 1
last_referenced_on: 1393921443.89722 last_referenced_on: 1393967711.47421
owner: pragma_ owner: pragma_
preserve_whitespace: 1 preserve_whitespace: 1
rate_limit: 4 rate_limit: 4
ref_count: 37728 ref_count: 37763
ref_user: pragma-!~chaos@unaffiliated/pragmatic-chaos ref_user: pragma-!~chaos@unaffiliated/pragmatic-chaos
type: text type: text
@ -8764,10 +8766,10 @@ type: text
action: /call factchange action: /call factchange
created_on: 1277259441.33026 created_on: 1277259441.33026
enabled: 1 enabled: 1
last_referenced_on: 1393300207.62137 last_referenced_on: 1393967703.11071
owner: pbot3 owner: pbot3
rate_limit: 15 rate_limit: 15
ref_count: 236 ref_count: 238
ref_user: pragma-!~chaos@unaffiliated/pragmatic-chaos ref_user: pragma-!~chaos@unaffiliated/pragmatic-chaos
type: text type: text
@ -8972,10 +8974,10 @@ action: compiler_client.pl
created_on: 1291939583.25391 created_on: 1291939583.25391
enabled: 1 enabled: 1
last_referenced_in: pragma- last_referenced_in: pragma-
last_referenced_on: 1393921443.9184 last_referenced_on: 1393967711.49546
owner: pragma_ owner: pragma_
rate_limit: 0 rate_limit: 0
ref_count: 30569 ref_count: 30604
ref_user: pragma-!~chaos@unaffiliated/pragmatic-chaos ref_user: pragma-!~chaos@unaffiliated/pragmatic-chaos
type: module type: module
@ -9637,11 +9639,11 @@ type: text
action: /call factfind action: /call factfind
created_on: 1277784994.65625 created_on: 1277784994.65625
enabled: 1 enabled: 1
last_referenced_on: 1393744259.21007 last_referenced_on: 1393951484.46497
owner: pbot3 owner: pbot3
rate_limit: 15 rate_limit: 15
ref_count: 358 ref_count: 359
ref_user: pragma-!~chaos@unaffiliated/pragmatic-chaos ref_user: lemonade`!~lemonade`@pool-108-28-100-56.washdc.fios.verizon.net
type: text type: text
<floating> <floating>
@ -10125,12 +10127,12 @@ action: /say To learn all about me, see http://www.iso-9899.info/wiki/Candide
action_with_args: /say To learn all about $args, see http://www.iso-9899.info/wiki/Candide#$args action_with_args: /say To learn all about $args, see http://www.iso-9899.info/wiki/Candide#$args
created_on: 1109792986 created_on: 1109792986
enabled: 1 enabled: 1
last_referenced_in: lemonade` last_referenced_in: ##c
last_referenced_on: 1393639199.45894 last_referenced_on: 1393933113.36018
owner: NeverDream owner: NeverDream
rate_limit: 0 rate_limit: 0
ref_count: 1224 ref_count: 1226
ref_user: lemonade`!~lemonade`@pool-108-28-100-56.washdc.fios.verizon.net ref_user: dozn!~dozn@24-207-52-240.eastlink.ca
type: text type: text
<herring> <herring>
@ -11010,12 +11012,12 @@ type: text
action: man.pl action: man.pl
created_on: 1107137901 created_on: 1107137901
enabled: 1 enabled: 1
last_referenced_in: puish last_referenced_in: ##c
last_referenced_on: 1393565259.68701 last_referenced_on: 1393945292.18739
owner: pragma_ owner: pragma_
rate_limit: 15 rate_limit: 15
ref_count: 1361 ref_count: 1362
ref_user: puish!~jgb@unaffiliated/jonbryan ref_user: cousteau!~cousteau@138.100.74.81
type: module type: module
<manpage> <manpage>
@ -12290,12 +12292,12 @@ type: text
action: /say $args action: /say $args
created_on: 1251663502 created_on: 1251663502
enabled: 1 enabled: 1
last_referenced_in: ##c last_referenced_in: pragma-
last_referenced_on: 1393702026.66878 last_referenced_on: 1393967745.99187
owner: pragma_ owner: pragma_
rate_limit: 0 rate_limit: 0
ref_count: 808 ref_count: 814
ref_user: fisted!~fisted@unaffiliated/fisted ref_user: pragma-!~chaos@unaffiliated/pragmatic-chaos
type: text type: text
<scheme> <scheme>
@ -12459,10 +12461,10 @@ type: regex
action: /call factshow action: /call factshow
created_on: 1277259146.86343 created_on: 1277259146.86343
enabled: 1 enabled: 1
last_referenced_on: 1393928620.05921 last_referenced_on: 1393967768.1747
owner: pbot3 owner: pbot3
rate_limit: 15 rate_limit: 15
ref_count: 186 ref_count: 194
ref_user: pragma-!~chaos@unaffiliated/pragmatic-chaos ref_user: pragma-!~chaos@unaffiliated/pragmatic-chaos
type: text type: text
@ -12933,11 +12935,11 @@ type: text
action: /call 8ball action: /call 8ball
created_on: 1360662740.86483 created_on: 1360662740.86483
enabled: 1 enabled: 1
last_referenced_on: 1389897389.91006 last_referenced_on: 1393945309.26443
owner: pragma- owner: pragma-
rate_limit: 15 rate_limit: 15
ref_count: 2 ref_count: 3
ref_user: zid`!zid@laiz.stalker.fi ref_user: cousteau!~cousteau@138.100.74.81
type: text type: text
<that's> <that's>
@ -13398,8 +13400,8 @@ ref_user: pragma-!~chaos@unaffiliated/pragmatic-chaos
type: text type: text
<version> <version>
action: /say PBot revision 494 2014-03-01 action: /say PBot revision 501 2014-03-04
created_on: 1393838096.62111 created_on: 1393968046.58128
enabled: 1 enabled: 1
last_referenced_in: lemonade` last_referenced_in: lemonade`
last_referenced_on: 1393639215.26177 last_referenced_on: 1393639215.26177
@ -13940,8 +13942,10 @@ ref_user: pragma-!~chaos@unaffiliated/pragmatic-chaos
type: text type: text
<{> <{>
action: /call compiler_block $nick action: /call compiler_block $nick $channel
created_on: 1329860884.76944 created_on: 1329860884.76944
edited_by: pragma-!~chaos@unaffiliated/pragmatic-chaos
edited_on: 1393967624.45297
enabled: 1 enabled: 1
last_referenced_in: pragma_ last_referenced_in: pragma_
last_referenced_on: 1393297892.74508 last_referenced_on: 1393297892.74508

View File

@ -21,6 +21,7 @@ if(not defined $sock) {
} }
my $nick = shift @ARGV; my $nick = shift @ARGV;
my $channel = shift @ARGV;
my $code = join ' ', @ARGV; my $code = join ' ', @ARGV;
#$code = "{ $code"; #$code = "{ $code";
@ -32,7 +33,7 @@ if($code =~ s/-lang=([^ ]+)//) {
$lang = uc $1; $lang = uc $1;
} }
print $sock "compile:$nick:$lang\n"; print $sock "compile:$nick:$channel:$lang\n";
print $sock "$code\n"; print $sock "$code\n";
print $sock "compile:end\n"; print $sock "compile:end\n";

View File

@ -21,6 +21,7 @@ if(not defined $sock) {
} }
my $nick = shift @ARGV; my $nick = shift @ARGV;
my $channel = shift @ARGV;
my $code = join ' ', @ARGV; my $code = join ' ', @ARGV;
my $lang = "C11"; my $lang = "C11";
@ -29,7 +30,7 @@ if($code =~ s/-lang=([^ ]+)//) {
$lang = uc $1; $lang = uc $1;
} }
print $sock "compile:$nick:$lang\n"; print $sock "compile:$nick:$channel:$lang\n";
print $sock "$code\n"; print $sock "$code\n";
print $sock "compile:end\n"; print $sock "compile:end\n";

View File

@ -178,6 +178,7 @@ sub compiler_server {
eval { eval {
my $lang; my $lang;
my $nick; my $nick;
my $channel;
my $code = ""; my $code = "";
local $SIG{ALRM} = sub { die 'Timed-out'; }; local $SIG{ALRM} = sub { die 'Timed-out'; };
@ -196,13 +197,10 @@ sub compiler_server {
last; last;
} }
$code = quotemeta($code);
print "Attempting compile...\n"; print "Attempting compile...\n";
alarm 0; alarm 0;
my $tnick = quotemeta($nick);
my $tlang = quotemeta($lang);
my ($ret, $result) = execute("./compiler_vm_client.pl $tnick -lang=$tlang $code"); my ($ret, $result) = execute("./compiler_vm_client.pl \Q$nick\E \Q$channel\E -lang=\Q$lang\E \Q$code\E");
if(not defined $ret) { if(not defined $ret) {
#print "parent continued\n"; #print "parent continued\n";
@ -234,9 +232,10 @@ sub compiler_server {
exit $ret; exit $ret;
} }
if($line =~ /compile:([^:]+):(.*)$/) { if($line =~ /compile:([^:]+):([^:]+):(.*)$/) {
$nick = $1; $nick = $1;
$lang = $2; $channel = $2;
$lang = $3;
$code = ""; $code = "";
next; next;
} }

View File

@ -29,9 +29,9 @@ my %languages = (
); );
my %preludes = ( my %preludes = (
'C99' => "#define _XOPEN_SOURCE 9001\n#define __USE_XOPEN\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <unistd.h>\n#include <math.h>\n#include <limits.h>\n#include <sys/types.h>\n#include <stdint.h>\n#include <stdbool.h>\n#include <stddef.h>\n#include <stdarg.h>\n#include <ctype.h>\n#include <inttypes.h>\n#include <float.h>\n#include <errno.h>\n#include <time.h>\n#include <assert.h>\n#include <prelude.h>\n\n", 'C99' => "#define _XOPEN_SOURCE 9001\n#define __USE_XOPEN\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <unistd.h>\n#include <math.h>\n#include <limits.h>\n#include <sys/types.h>\n#include <stdint.h>\n#include <stdbool.h>\n#include <stddef.h>\n#include <stdarg.h>\n#include <ctype.h>\n#include <inttypes.h>\n#include <float.h>\n#include <errno.h>\n#include <time.h>\n#include <assert.h>\n#include <signal.h>\n#include <prelude.h>\n\n",
'C11' => "#define _XOPEN_SOURCE 9001\n#define __USE_XOPEN\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <unistd.h>\n#include <math.h>\n#include <limits.h>\n#include <sys/types.h>\n#include <stdint.h>\n#include <stdbool.h>\n#include <stddef.h>\n#include <stdarg.h>\n#include <stdnoreturn.h>\n#include <stdalign.h>\n#include <ctype.h>\n#include <inttypes.h>\n#include <float.h>\n#include <errno.h>\n#include <time.h>\n#include <assert.h>\n#include <complex.h>\n#include <prelude.h>\n\n", 'C11' => "#define _XOPEN_SOURCE 9001\n#define __USE_XOPEN\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <unistd.h>\n#include <math.h>\n#include <limits.h>\n#include <sys/types.h>\n#include <stdint.h>\n#include <stdbool.h>\n#include <stddef.h>\n#include <stdarg.h>\n#include <stdnoreturn.h>\n#include <stdalign.h>\n#include <ctype.h>\n#include <inttypes.h>\n#include <float.h>\n#include <errno.h>\n#include <time.h>\n#include <assert.h>\n#include <complex.h>\n#include <signal.h>\n#include <prelude.h>\n\n",
'C89' => "#define _XOPEN_SOURCE 9001\n#define __USE_XOPEN\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <unistd.h>\n#include <math.h>\n#include <limits.h>\n#include <sys/types.h>\n#include <stdint.h>\n#include <errno.h>\n#include <ctype.h>\n#include <assert.h>\n#include <prelude.h>\n\n", 'C89' => "#define _XOPEN_SOURCE 9001\n#define __USE_XOPEN\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <unistd.h>\n#include <math.h>\n#include <limits.h>\n#include <sys/types.h>\n#include <stdint.h>\n#include <errno.h>\n#include <ctype.h>\n#include <assert.h>\n#include <signal.h>\n#include <prelude.h>\n\n",
); );
sub pretty { sub pretty {
@ -139,18 +139,20 @@ sub compile {
return $result; return $result;
} }
if($#ARGV < 1) { if($#ARGV < 2) {
print "Usage: cc [-compiler -options] <code> [-stdin=input]\n"; print "Usage: cc [-compiler -options] <code> [-stdin=input]\n";
# usage for shell: cc <nick> <channel> [-compiler -options] <code> [-stdin=input]
exit 0; exit 0;
} }
my $nick = shift @ARGV; my $nick = shift @ARGV;
my $channel = lc shift @ARGV;
my $code = join ' ', @ARGV; my $code = join ' ', @ARGV;
my @last_code; my @last_code;
print " code: [$code]\n" if $debug; print " code: [$code]\n" if $debug;
if(open FILE, "< last_code.txt") { if(open FILE, "< history/$channel.hist") {
while(my $line = <FILE>) { while(my $line = <FILE>) {
chomp $line; chomp $line;
push @last_code, $line; push @last_code, $line;
@ -598,7 +600,7 @@ if($save_last_code) {
unshift @last_code, $extracted_args . (length $args ? $args . ' ' . $code : $code); unshift @last_code, $extracted_args . (length $args ? $args . ' ' . $code : $code);
} }
open FILE, "> last_code.txt"; open FILE, "> history/$channel.hist";
my $i = 0; my $i = 0;
foreach my $line (@last_code) { foreach my $line (@last_code) {