implement Mashlib; ## Mashlib - All of the real work except for the parsing.# include "mash.m";include "mashparse.m"; Iobuf: import bufio;HashTable, HashVal: import hash; include "depends.b";include "dump.b";include "exec.b";include "expr.b";include "lex.b";include "misc.b";include "serve.b";include "symb.b";include "xeq.b"; lib: Mashlib; initmash(ctxt: ref Draw->Context, top: ref Tk->Toplevel, s: Sys, e: ref Env, l: Mashlib, p: Mashparse){ gctxt = ctxt; gtop = top; sys = s; lib = l; parse = p; if (top != nil) { tk = load Tk Tk->PATH; if (tk == nil) e.couldnot("load", Tk->PATH); } bufio = load Bufio Bufio->PATH; if (bufio == nil) e.couldnot("load", Bufio->PATH); hash = load Hash Hash->PATH; if (hash == nil) e.couldnot("load", Hash->PATH); str = load String String->PATH; if (str == nil) e.couldnot("load", String->PATH); initlex(); empty = "no" :: "value" :: nil; startserve = 0;} nonexistent(e: string): int{ errs := array[] of {"does not exist", "directory entry not found"}; for (i := 0; i < len errs; i++){ j := len errs[i]; if (j <= len e && e[len e-j:] == errs[i]) return 1; } return 0;}
implement Mashlib;
#
# Mashlib - All of the real work except for the parsing.
#
include "mash.m";
include "mashparse.m";
Iobuf: import bufio;
HashTable, HashVal: import hash;
include "depends.b";
include "dump.b";
include "exec.b";
include "expr.b";
include "lex.b";
include "misc.b";
include "serve.b";
include "symb.b";
include "xeq.b";
lib: Mashlib;
initmash(ctxt: ref Draw->Context, top: ref Tk->Toplevel, s: Sys, e: ref Env, l: Mashlib, p: Mashparse)
{
gctxt = ctxt;
gtop = top;
sys = s;
lib = l;
parse = p;
if (top != nil) {
tk = load Tk Tk->PATH;
if (tk == nil)
e.couldnot("load", Tk->PATH);
}
bufio = load Bufio Bufio->PATH;
if (bufio == nil)
e.couldnot("load", Bufio->PATH);
hash = load Hash Hash->PATH;
if (hash == nil)
e.couldnot("load", Hash->PATH);
str = load String String->PATH;
if (str == nil)
e.couldnot("load", String->PATH);
initlex();
empty = "no" :: "value" :: nil;
startserve = 0;
}
nonexistent(e: string): int
{
errs := array[] of {"does not exist", "directory entry not found"};
for (i := 0; i < len errs; i++){
j := len errs[i];
if (j <= len e && e[len e-j:] == errs[i])
return 1;
}
return 0;
}