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); |