d7f220 | 2002-10-11 | Martin Nilsson | |
|
03c7b3 | 2002-10-08 | Martin Nilsson | |
|
26f3da | 2000-07-11 | Fredrik Hübinette (Hubbe) | | string fr;
|
907371 | 2000-03-26 | Fredrik Hübinette (Hubbe) | |
|
d178fe | 2001-01-23 | Fredrik Hübinette (Hubbe) | | array encoded=({});
|
22c94f | 2013-06-11 | Tobias S. Josefowitz | | private function werror = _static_modules._Stdio()->_stderr->write;
|
e3276e | 2004-07-04 | Stephen R. van den Berg | |
|
6ff6b8 | 2008-04-25 | Henrik Grubbström (Grubba) | | mapping get_default_module()
{
return 0;
}
|
0cd76f | 1998-10-22 | Fredrik Hübinette (Hubbe) | | void handle_error(mixed err)
{
|
d178fe | 2001-01-23 | Fredrik Hübinette (Hubbe) | | foreach(encoded, mixed o)
{
werror("***Failed to encode %t: %O\n",o,o);
#if constant(_describe)
_describe(o);
#endif
}
|
0cd76f | 1998-10-22 | Fredrik Hübinette (Hubbe) | | werror("%O\n",err);
}
|
907371 | 2000-03-26 | Fredrik Hübinette (Hubbe) | |
|
26f3da | 2000-07-11 | Fredrik Hübinette (Hubbe) | | void compile_error(string file,int line,string err)
|
907371 | 2000-03-26 | Fredrik Hübinette (Hubbe) | | {
|
57b226 | 2002-10-11 | Martin Nilsson | | werror("%s:%s:%s\n", file, line?(string)line:"-", err);
|
26f3da | 2000-07-11 | Fredrik Hübinette (Hubbe) | | }
|
907371 | 2000-03-26 | Fredrik Hübinette (Hubbe) | |
|
26f3da | 2000-07-11 | Fredrik Hübinette (Hubbe) | | string fakeroot(string s)
{
if(fr) s=fr+combine_path(getcwd(),s);
return s;
}
string read_file(string s)
{
|
22c94f | 2013-06-11 | Tobias S. Josefowitz | | return _static_modules._Stdio()->Fd(fakeroot(s),"r")->read();
|
907371 | 2000-03-26 | Fredrik Hübinette (Hubbe) | | }
|
0cd76f | 1998-10-22 | Fredrik Hübinette (Hubbe) | | program compile_file(string file)
{
|
907371 | 2000-03-26 | Fredrik Hübinette (Hubbe) | | return compile(cpp(read_file(file),file));
|
0cd76f | 1998-10-22 | Fredrik Hübinette (Hubbe) | | }
class Codec
{
|
ef0834 | 2006-03-17 | Henrik Grubbström (Grubba) | | mixed encode_object(object o)
{
if (o->_encode) return o->_encode();
werror("Can't encode object %O without _encode function.\n", o);
throw(({ "No _encode().\n", backtrace() }));
}
|
9cba79 | 2001-01-25 | Fredrik Hübinette (Hubbe) | | string nameof(mixed x)
|
0cd76f | 1998-10-22 | Fredrik Hübinette (Hubbe) | | {
if(mixed tmp=search(all_constants(),x)) return tmp;
|
9cba79 | 2001-01-25 | Fredrik Hübinette (Hubbe) | | switch(x)
{
#define CONST(X) case X: return #X
|
22c94f | 2013-06-11 | Tobias S. Josefowitz | | CONST(_static_modules._Stdio.Stat);
|
87f908 | 2001-03-12 | Fredrik Hübinette (Hubbe) | | CONST(_static_modules.Builtin.__backend);
|
9cba79 | 2001-01-25 | Fredrik Hübinette (Hubbe) | | }
|
d178fe | 2001-01-23 | Fredrik Hübinette (Hubbe) | | encoded+=({x});
|
0cd76f | 1998-10-22 | Fredrik Hübinette (Hubbe) | | return UNDEFINED;
}
}
|
57b226 | 2002-10-11 | Martin Nilsson | |
void _main(array(string) argv, array(string) env)
|
0cd76f | 1998-10-22 | Fredrik Hübinette (Hubbe) | | {
|
907371 | 2000-03-26 | Fredrik Hübinette (Hubbe) | | foreach(argv[1..sizeof(argv)-2], string f)
|
57b226 | 2002-10-11 | Martin Nilsson | | sscanf(f, "--fakeroot=%s", fr);
|
907371 | 2000-03-26 | Fredrik Hübinette (Hubbe) | |
|
0cd76f | 1998-10-22 | Fredrik Hübinette (Hubbe) | | program p=compile_file(argv[-1]);
string s=encode_value(p, Codec());
|
22c94f | 2013-06-11 | Tobias S. Josefowitz | | _static_modules._Stdio()->Fd(fakeroot(argv[-1]) + ".o","wct")->write(s);
|
0cd76f | 1998-10-22 | Fredrik Hübinette (Hubbe) | | exit(0);
}
|
cc0bf1 | 2000-01-31 | Fredrik Hübinette (Hubbe) | |
|
57b226 | 2002-10-11 | Martin Nilsson | | mixed resolv() { return UNDEFINED; }
|