Added SILC Thread Queue API
[crypto.git] / apps / irssi / src / perl / irssi-core.pl.h
1 const char *irssi_core_code =
2 "# NOTE: this is printed through printf()-like function,\n"
3 "# so no extra percent characters.\n"
4 "\n"
5 "# %%d : must be first - 1 if perl libraries are to be linked \n"
6 "#       statically with irssi binary, 0 if not\n"
7 "# %%s : must be second - use Irssi; use Irssi::Irc; etc..\n"
8 "package Irssi::Core;\n"
9 "\n"
10 "use Symbol;\n"
11 "\n"
12 "sub is_static {\n"
13 "  return %d;\n"
14 "}\n"
15 "\n"
16 "sub destroy {\n"
17 "  eval { $_[0]->UNLOAD() if $_[0]->can('UNLOAD'); };\n"
18 "  Symbol::delete_package($_[0]);\n"
19 "}\n"
20 "\n"
21 "sub eval_data {\n"
22 "  my ($data, $id) = @_;\n"
23 "  destroy(\"Irssi::Script::$id\");\n"
24 "\n"
25 "  my $package = \"Irssi::Script::$id\";\n"
26 "  my $eval = qq{package $package; %s sub handler { $data; }};\n"
27 "  {\n"
28 "      # hide our variables within this block\n"
29 "      my ($filename, $package, $data);\n"
30 "      eval $eval;\n"
31 "  }\n"
32 "  die $@ if $@;\n"
33 "\n"
34 "  my $ret;\n"
35 "  eval { $ret = $package->handler; };\n"
36 "  die $@ if $@;\n"
37 "  return $ret;\n"
38 "}\n"
39 "\n"
40 "sub eval_file {\n"
41 "  my ($filename, $id) = @_;\n"
42 "\n"
43 "  local *FH;\n"
44 "  open FH, $filename or die \"File not found: $filename\";\n"
45 "  local($/) = undef;\n"
46 "  my $data = <FH>;\n"
47 "  close FH;\n"
48 "  local($/) = \"\\n\";\n"
49 "\n"
50 "  eval_data($data, $id);\n"
51 "}\n"
52 ;