clix/raw.lua

changeset 167
57bb6e03d239
parent 158
703fa6922493
child 168
75e8ca131178
equal deleted inserted replaced
166:b0c586241224 167:57bb6e03d239
1 local verse = require "verse"; 1 local verse = require "verse";
2 local envload = require "util.envload".envload;
2 local xml = require "util.xml"; 3 local xml = require "util.xml";
3 short_opts.i = "interactive"; 4 short_opts.i = "interactive";
4 short_opts.e = "echo"; 5 short_opts.e = "echo";
5 6
6 return function (opts, args) 7 return function (opts, args)
94 sandboxed = false; 95 sandboxed = false;
95 data = data:sub(2); 96 data = data:sub(2);
96 else 97 else
97 data = "return "..data; 98 data = "return "..data;
98 end 99 end
99 local chunk, err = loadstring(data, "@stdin"); 100 local chunk, err = envload(data, "@stdin", sandboxed and env or _G);
100 if not chunk then 101 if not chunk then
101 conn:error(err); 102 conn:error(err);
102 return; 103 return;
103 end 104 end
104 data = ""; 105 data = "";
105 if sandboxed then
106 setfenv(chunk, env);
107 end
108 local ok, ret = pcall(chunk); 106 local ok, ret = pcall(chunk);
109 if ok then 107 if ok then
110 data = ret 108 data = ret
111 else 109 else
112 conn:error(ret); 110 conn:error(ret);

mercurial