ref: 9f76a7f6819ac04552b4fb6588156f3e4089d1d7
dir: /appl/cmd/mash/mashlib.b/
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;
}