picolisp

Unnamed repository; edit this file to name it for gitweb.
git clone https://logand.com/git/picolisp.git/
Log | Files | Refs | README | LICENSE

commit 74c56b2b2f206bd532aaa3f03aa55143e250a64d
parent 3d703128f1d04ad705dc0f8f7d6ea2de36c9dac8
Author: Alexander Burger <abu@software-lab.de>
Date:   Tue, 17 Jul 2012 11:38:11 +0200

Namespace support also in Ersatz PicoLisp
Diffstat:
MCHANGES | 1+
Mersatz/fun.src | 36++++++++++++++++++++++++++++--------
Mersatz/lib.l | 14+++++++++++++-
Mersatz/mkJar | 28++++++++++++++--------------
Mersatz/picolisp.jar | 0
Mersatz/sys.src | 105++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------
Mlib/map | 80++++++++++++++++++++++++++++++++++++++++----------------------------------------
Msrc/vers.h | 2+-
Msrc64/tags | 144++++++++++++++++++++++++++++++++++++++++----------------------------------------
Msrc64/version.l | 4++--
10 files changed, 235 insertions(+), 179 deletions(-)

diff --git a/CHANGES b/CHANGES @@ -1,4 +1,5 @@ * DDmmm12 picoLisp-3.1.1 + Namespace support also in Ersatz PicoLisp JavaScript 'lisp' calls '+DbHint' gui prefix class Stack alignments (64-bit) diff --git a/ersatz/fun.src b/ersatz/fun.src @@ -1,4 +1,4 @@ -# 28jan12abu +# 17jul12abu # (c) Software Lab. Alexander Burger # Ersatz PicoLisp Functions @@ -1640,7 +1640,7 @@ name (x y s) y = (x = ex.Cdr).Car.eval(); if (!((x = x.Cdr) instanceof Cell)) return mkStr(y.name()); - if ((s = ((Symbol)y)).Name != null && Intern.get(s.Name) == s) + if ((s = ((Symbol)y)).Name != null && Env.intern().get(s.Name) == s) err(ex, s, "Can't rename"); if (Transient.get(((Symbol)y).Name) == y) Transient.remove(((Symbol)y).Name); @@ -1667,16 +1667,36 @@ getd (x) # (all ['T]) -> lst all () - return all(ex.Cdr.Car.eval() == Nil? Intern : Transient); + return all(ex.Cdr.Car.eval() == Nil? Env.intern() : Transient); + +# (symbols) -> sym +# (symbols 'sym1) -> sym2 +# (symbols 'sym1 'sym2) -> sym3 +symbols (s t) + if (ex.Cdr instanceof Cell) { + s = (Symbol)ex.Cdr.Car.eval(); + if (ex.Cdr.Cdr instanceof Cell) { + t = (Symbol)ex.Cdr.Cdr.Car.eval(); + if (!(t.Car instanceof Symbol) || !(((Symbol)t.Car).Obj instanceof Namespace)) + symNsError(ex, t); + s.Car = new Symbol(((Namespace)(((Symbol)t.Car).Obj)).clone()); + } + else if (!(s.Car instanceof Symbol) || !(((Symbol)s.Car).Obj instanceof Namespace)) + symNsError(ex, s); + t = Env.Intern; + Env.Intern = s; + return t; + } + return Env.Intern; # (intern 'sym) -> sym intern (s t str) s = (Symbol)ex.Cdr.Car.eval(); if ((str = s.name()).length() == 0 || str.equals("NIL")) return Nil; - if ((t = Intern.get(str)) != null) + if ((t = Env.intern().get(str)) != null) return t; - Intern.put(str, s); + Env.intern().put(str, s); return s; # (==== ['sym ..]) -> NIL @@ -1694,7 +1714,7 @@ box? (x) # (str? 'any) -> sym | NIL str? (x) - return ((x = ex.Cdr.Car.eval()) instanceof Symbol) && Intern.get(x.name()) != x? x : Nil; + return ((x = ex.Cdr.Car.eval()) instanceof Symbol) && Env.intern().get(x.name()) != x? x : Nil; # (ext? 'any) -> sym | NIL ext? T @@ -1703,8 +1723,8 @@ ext? T # (zap 'sym) -> sym zap (s) s = (Symbol)ex.Cdr.Car.eval(); - if (Intern.get(s.Name) == s) - Intern.remove(s.Name); + if (Env.intern().get(s.Name) == s) + Env.intern().remove(s.Name); return s; # (chop 'any) -> lst diff --git a/ersatz/lib.l b/ersatz/lib.l @@ -1,4 +1,4 @@ -# 09jul12abu +# 16jul12abu # (c) Software Lab. Alexander Burger (setq *OS (java (java "java.lang.System" "getProperty" "os.name"))) @@ -197,6 +197,14 @@ (loc S (car X)) (loc S (cdr X)) ) ) ) ) +(de local Lst + (mapc zap Lst) ) + +(de import Lst + (for Sym Lst + (unless (== Sym (intern Sym)) + (quit "Import conflict" Sym) ) ) ) + ### OOP ### (de class Lst (let L (val (setq *Class (car Lst))) @@ -1306,6 +1314,10 @@ ############ lib/debug.l ############ +# Prompt +(de *Prompt + (unless (== (symbols) 'pico) (symbols)) ) + # Browsing (de doc (Sym Browser) (call (or Browser (sys "BROWSER") 'w3m) diff --git a/ersatz/mkJar b/ersatz/mkJar @@ -1,12 +1,12 @@ #!./pil -# 20may11abu +# 17jul12abu # (c) Software Lab. Alexander Burger (load "../src64/version.l") # Build Ersatz PicoLisp -(de local (Vars Typ Lst) +(de declLocal (Vars Typ Lst) (when (filter '((S) (memq S Lst)) Vars) (prinl " " Typ " " (glue ", " @) ";") ) ) @@ -25,7 +25,7 @@ (inc 'Cnt) "\"), \"" Name - "\", Intern);" ) ) + "\", Pico);" ) ) (while (line)) (prin " ") (NIL (skip "#")) ) ) @@ -67,17 +67,17 @@ Cnt "(Any ex) { // " Name ) - (local Vars "int" '(i j k)) - (local Vars "char" '(c)) - (local Vars "long" '(n)) - (local Vars "Any" '(w x y z lst)) - (local Vars "Symbol" '(s t)) - (local Vars "Number" '(num)) - (local Vars "String" '(str txt)) - (local Vars "StringBuilder" '(sb)) - (local Vars "Any[]" '(v)) - (local Vars "Bind" '(bnd)) - (local Vars "Object" '(o)) + (declLocal Vars "int" '(i j k)) + (declLocal Vars "char" '(c)) + (declLocal Vars "long" '(n)) + (declLocal Vars "Any" '(w x y z lst)) + (declLocal Vars "Symbol" '(s t)) + (declLocal Vars "Number" '(num)) + (declLocal Vars "String" '(str txt)) + (declLocal Vars "StringBuilder" '(sb)) + (declLocal Vars "Any[]" '(v)) + (declLocal Vars "Bind" '(bnd)) + (declLocal Vars "Object" '(o)) (while (line) (prinl " " @) ) (prinl " }") diff --git a/ersatz/picolisp.jar b/ersatz/picolisp.jar Binary files differ. diff --git a/ersatz/sys.src b/ersatz/sys.src @@ -1,4 +1,4 @@ -// 17oct11abu +// 17jul12abu // (c) Software Lab. Alexander Burger import java.util.*; @@ -14,8 +14,8 @@ import java.lang.reflect.*; public class PicoLisp { final static Console Term = System.console(); final static StringBuffer Line = new StringBuffer(); - final static HashMap<String,Symbol> Intern = new HashMap<String,Symbol>(); - final static HashMap<String,Symbol> Transient = new HashMap<String,Symbol>(); + final static Namespace Pico = new Namespace(); + final static Namespace Transient = new Namespace(); final static byte MonLen[] = new byte[] {31,31,28,31,30,31,30,31,31,30,31,30,31}; final static byte Version[] = new byte[] {<VERSION>}; @@ -24,26 +24,27 @@ public class PicoLisp { final static Number Two = new Number(2); final static NilSym Nil = new NilSym(); - final static Symbol T = mkSymbol(null, "T", Intern); - final static Symbol Pid = mkSymbol(new Number(System.getProperty("PID")), "*Pid", Intern); - final static Symbol At = mkSymbol(Nil, "@", Intern); - final static Symbol At2 = mkSymbol(Nil, "@@", Intern); - final static Symbol At3 = mkSymbol(Nil, "@@@", Intern); - final static Symbol This = mkSymbol(Nil, "This", Intern); - final static Symbol Prompt = mkSymbol(Nil, "*Prompt", Intern); - final static Symbol Dbg = mkSymbol(Nil, "*Dbg", Intern); - final static Symbol Scl = mkSymbol(Zero, "*Scl", Intern); - final static Symbol Class = mkSymbol(Nil, "*Class", Intern); - final static Symbol Run = mkSymbol(Nil, "*Run", Intern); - final static Symbol Up = mkSymbol(Nil, "^", Intern); - final static Symbol Err = mkSymbol(Nil, "*Err", Intern); - final static Symbol Msg = mkSymbol(Nil, "*Msg", Intern); - final static Symbol Uni = mkSymbol(Nil, "*Uni", Intern); - final static Symbol Adr = mkSymbol(Nil, "*Adr", Intern); - final static Symbol Bye = mkSymbol(Nil, "*Bye", Intern); - - final static Symbol Quote = mkSymbol(Zero, "quote", Intern); - final static Symbol Meth = mkSymbol(One, "meth", Intern); + final static Symbol pico = mkSymbol(new Symbol(Pico), "pico", Pico); + final static Symbol T = mkSymbol(null, "T", Pico); + final static Symbol Pid = mkSymbol(new Number(System.getProperty("PID")), "*Pid", Pico); + final static Symbol At = mkSymbol(Nil, "@", Pico); + final static Symbol At2 = mkSymbol(Nil, "@@", Pico); + final static Symbol At3 = mkSymbol(Nil, "@@@", Pico); + final static Symbol This = mkSymbol(Nil, "This", Pico); + final static Symbol Prompt = mkSymbol(Nil, "*Prompt", Pico); + final static Symbol Dbg = mkSymbol(Nil, "*Dbg", Pico); + final static Symbol Scl = mkSymbol(Zero, "*Scl", Pico); + final static Symbol Class = mkSymbol(Nil, "*Class", Pico); + final static Symbol Run = mkSymbol(Nil, "*Run", Pico); + final static Symbol Up = mkSymbol(Nil, "^", Pico); + final static Symbol Err = mkSymbol(Nil, "*Err", Pico); + final static Symbol Msg = mkSymbol(Nil, "*Msg", Pico); + final static Symbol Uni = mkSymbol(Nil, "*Uni", Pico); + final static Symbol Adr = mkSymbol(Nil, "*Adr", Pico); + final static Symbol Bye = mkSymbol(Nil, "*Bye", Pico); + + final static Symbol Quote = mkSymbol(Zero, "quote", Pico); + final static Symbol Meth = mkSymbol(One, "meth", Pico); final static String Delim = " \t\n\r\"'(),[]`~{}"; @@ -395,6 +396,7 @@ public class PicoLisp { load(null, '?', Nil); } unwind(null); + Env.Intern = pico; Env.Args = null; Env.Next = 0; Env.Task = Env.Make = Env.Yoke = null; @@ -449,6 +451,7 @@ public class PicoLisp { final static Any execError(Any x) {return err(null, x, "Can't execute");} final static Any protError(Any x) {return err(null, x, "Protected symbol");} final static Any symError(Any x) {return err(null, x, "Symbol expected");} + final static Any symNsError(Any ex, Any x) {return err(ex, x, "Bad symbol namespace");} final static Any argError(Any ex, Any x) {return err(ex, x, "Bad argument");} final static Any cntError(Any ex, Any x) {return err(ex, x, "Small number expected");} final static void needVar(Any ex, Any x) {if (x instanceof Number) err(ex, x, "Variable expected");} @@ -459,6 +462,7 @@ public class PicoLisp { final static Any load(Any ex, char pr, Any x) { if (x instanceof Symbol && firstChar(x) == '-') return ((Symbol)x).parse(true,null).eval(); + Symbol ns = Env.Intern; Env.pushInFile(x.rdOpen(ex)); Transient.clear(); x = Nil; @@ -477,6 +481,7 @@ public class PicoLisp { InFile.Chr = 0; } if (y == Nil) { + Env.Intern = ns; Env.popInFiles(); Transient.clear(); return x; @@ -580,7 +585,7 @@ public class PicoLisp { final static Any mkStr(StringBuilder sb) {return mkStr(sb.toString());} final static Symbol mkSymbol(Any val) {return new Symbol(val, null);} - final static Symbol mkSymbol(Any val, String nm, HashMap<String,Symbol> table) { + final static Symbol mkSymbol(Any val, String nm, Namespace table) { Symbol sym; if ((sym = table.get(nm)) == null) { sym = new Symbol(val, nm); @@ -597,13 +602,6 @@ public class PicoLisp { return new Number((new BigDecimal(s)).setScale(scl, RoundingMode.HALF_UP).unscaledValue()); } - final static Any strToAtom(String s) { - if (s.equals("NIL")) - return Nil; - try {return strToNum(s, ((Number)Scl.Car).Cnt);} - catch (NumberFormatException e) {return mkSymbol(Nil, s, Intern);} - } - final static Any format(Any z, int scl, Any x) { char sep = '.', ign = '\0'; if (x instanceof Cell) { @@ -638,7 +636,7 @@ public class PicoLisp { return res; } - final static Any all(HashMap<String,Symbol> table) { + final static Any all(Namespace table) { Any x = Nil; for (Iterator<Symbol> it = table.values().iterator(); it.hasNext();) x = new Cell(it.next(), x); @@ -1446,15 +1444,31 @@ public class PicoLisp { } final Any rdAtom(int c) { + Namespace table = Env.intern(); StringBuilder sb = new StringBuilder(); sb.append((char)c); - while (Chr > 0 && Delim.indexOf(Chr) < 0) { - if (Chr == '\\') - get(); - sb.append((char)Chr); + while (Chr > 0) { + if (Chr == '~') { + Symbol s = mkSymbol(null, sb.toString(), table); + if (!(((Symbol)s.Car).Obj instanceof Namespace)) + symNsError(null, s); + table = (Namespace)((Symbol)s.Car).Obj; + sb = new StringBuilder(); + } + else { + if (Delim.indexOf(Chr) >= 0) + break; + if (Chr == '\\') + get(); + sb.append((char)Chr); + } get(); } - return strToAtom(sb.toString()); + String s = sb.toString(); + if (s.equals("NIL")) + return Nil; + try {return strToNum(s, ((Number)Scl.Car).Cnt);} + catch (NumberFormatException e) {return mkSymbol(Nil, s, table);} } final Any rdList() { @@ -1609,7 +1623,8 @@ public class PicoLisp { sb.append((char)Chr); while (get() >= '0' && Chr <= '9' || Chr == '.') sb.append((char)Chr); - return strToAtom(sb.toString()); + try {return strToNum(sb.toString(), ((Number)Scl.Car).Cnt);} + catch (NumberFormatException e) {} } String s = x.name(); if (Chr >= 'A' && Chr <= 'Z' || Chr == '\\' || Chr >= 'a' && Chr <= 'z' || s.indexOf(Chr) >= 0) { @@ -1623,7 +1638,7 @@ public class PicoLisp { sb.append((char)Chr); } s = sb.toString(); - return s.equals("NIL")? Nil : mkSymbol(Nil, s, Intern); + return s.equals("NIL")? Nil : mkSymbol(Nil, s, Env.intern()); } c = (char)Chr; get(); @@ -1690,15 +1705,17 @@ public class PicoLisp { final static class Env { int Next, ArgC, Trace; Bind Bind; + Symbol Intern; Any Arg, Args[], Cls, Key, Task, Make, Yoke; InFrame InFrames; OutFrame OutFrames; - Env() {} + Env() {Intern = pico;} Env(Env env) { Next = env.Next; ArgC = env.ArgC; Trace = env.Trace; Bind = env.Bind; + Intern = env.Intern; Arg = env.Arg; Args = env.Args; Cls = env.Cls; Key = env.Key; Task = env.Task; @@ -1706,6 +1723,10 @@ public class PicoLisp { InFrames = env.InFrames; OutFrames = env.OutFrames; } + final Namespace intern() { + return (Namespace)((Symbol)Intern.Car).Obj; + } + final void pushInFile(InFrame in) { InFrames = in; InFile = InFiles[in.Rd.Fd]; @@ -1777,6 +1798,8 @@ public class PicoLisp { } } + final static class Namespace extends HashMap<String,Symbol> {} + static abstract class Any { Any Car, Cdr; @@ -2400,7 +2423,7 @@ public class PicoLisp { return '$' + s; } - if (Intern.get(Name) == this) { + if (Env.intern().get(Name) == this) { if (Name.equals(".")) return "\\."; StringBuilder sb = new StringBuilder(); diff --git a/lib/map b/lib/map @@ -29,7 +29,7 @@ adr (585 . "@src64/main.l") alarm (471 . "@src64/main.l") all (788 . "@src64/sym.l") and (1613 . "@src64/flow.l") -any (3965 . "@src64/io.l") +any (3964 . "@src64/io.l") append (1338 . "@src64/subr.l") apply (713 . "@src64/apply.l") arg (2365 . "@src64/main.l") @@ -82,12 +82,12 @@ cdddr (245 . "@src64/subr.l") cddr (79 . "@src64/subr.l") cdr (17 . "@src64/subr.l") chain (1141 . "@src64/subr.l") -char (3447 . "@src64/io.l") +char (3446 . "@src64/io.l") chop (1219 . "@src64/sym.l") circ (816 . "@src64/subr.l") circ? (2402 . "@src64/subr.l") clip (1799 . "@src64/subr.l") -close (4378 . "@src64/io.l") +close (4377 . "@src64/io.l") cmd (2967 . "@src64/main.l") cnt (1413 . "@src64/apply.l") co (2537 . "@src64/flow.l") @@ -98,7 +98,7 @@ cond (1908 . "@src64/flow.l") connect (224 . "@src64/net.l") cons (747 . "@src64/subr.l") copy (1225 . "@src64/subr.l") -ctl (4251 . "@src64/io.l") +ctl (4250 . "@src64/io.l") ctty (2765 . "@src64/main.l") cut (1922 . "@src64/sym.l") date (2479 . "@src64/main.l") @@ -115,14 +115,14 @@ dir (2898 . "@src64/main.l") dm (545 . "@src64/flow.l") do (2130 . "@src64/flow.l") e (2911 . "@src64/flow.l") -echo (4409 . "@src64/io.l") +echo (4408 . "@src64/io.l") env (597 . "@src64/main.l") -eof (3524 . "@src64/io.l") -eol (3515 . "@src64/io.l") -err (4231 . "@src64/io.l") +eof (3523 . "@src64/io.l") +eol (3514 . "@src64/io.l") +err (4230 . "@src64/io.l") errno (1368 . "@src64/main.l") eval (175 . "@src64/flow.l") -ext (5143 . "@src64/io.l") +ext (5142 . "@src64/io.l") ext? (1157 . "@src64/sym.l") extern (1023 . "@src64/sym.l") extra (1258 . "@src64/flow.l") @@ -137,13 +137,13 @@ find (1322 . "@src64/apply.l") fish (1613 . "@src64/apply.l") flg? (2445 . "@src64/subr.l") flip (1699 . "@src64/subr.l") -flush (5118 . "@src64/io.l") +flush (5117 . "@src64/io.l") fold (3512 . "@src64/sym.l") for (2219 . "@src64/flow.l") fork (3253 . "@src64/flow.l") format (2089 . "@src64/big.l") free (2055 . "@src64/db.l") -from (3543 . "@src64/io.l") +from (3542 . "@src64/io.l") full (1075 . "@src64/subr.l") fun? (750 . "@src64/sym.l") gc (435 . "@src64/gc.l") @@ -156,14 +156,14 @@ gt0 (2718 . "@src64/big.l") hash (2976 . "@src64/big.l") head (1820 . "@src64/subr.l") heap (517 . "@src64/main.l") -hear (3228 . "@src64/io.l") +hear (3227 . "@src64/io.l") host (190 . "@src64/net.l") id (1028 . "@src64/db.l") idx (2162 . "@src64/sym.l") if (1794 . "@src64/flow.l") if2 (1813 . "@src64/flow.l") ifn (1854 . "@src64/flow.l") -in (4191 . "@src64/io.l") +in (4190 . "@src64/io.l") inc (2256 . "@src64/big.l") index (2637 . "@src64/subr.l") info (2802 . "@src64/main.l") @@ -172,7 +172,7 @@ ipid (3198 . "@src64/flow.l") isa (961 . "@src64/flow.l") job (1418 . "@src64/flow.l") journal (971 . "@src64/db.l") -key (3376 . "@src64/io.l") +key (3375 . "@src64/io.l") kill (3230 . "@src64/flow.l") last (2044 . "@src64/subr.l") le0 (2693 . "@src64/big.l") @@ -180,14 +180,14 @@ length (2741 . "@src64/subr.l") let (1468 . "@src64/flow.l") let? (1529 . "@src64/flow.l") lieu (1157 . "@src64/db.l") -line (3699 . "@src64/io.l") -lines (3852 . "@src64/io.l") +line (3698 . "@src64/io.l") +lines (3851 . "@src64/io.l") link (1172 . "@src64/subr.l") lisp (2037 . "@src64/main.l") list (887 . "@src64/subr.l") listen (157 . "@src64/net.l") lit (150 . "@src64/flow.l") -load (4168 . "@src64/io.l") +load (4167 . "@src64/io.l") lock (1185 . "@src64/db.l") loop (2162 . "@src64/flow.l") low? (3378 . "@src64/sym.l") @@ -237,30 +237,30 @@ offset (2677 . "@src64/subr.l") on (1708 . "@src64/sym.l") onOff (1738 . "@src64/sym.l") one (1771 . "@src64/sym.l") -open (4335 . "@src64/io.l") +open (4334 . "@src64/io.l") opid (3214 . "@src64/flow.l") opt (3088 . "@src64/main.l") or (1629 . "@src64/flow.l") -out (4211 . "@src64/io.l") +out (4210 . "@src64/io.l") pack (1270 . "@src64/sym.l") pair (2394 . "@src64/subr.l") pass (754 . "@src64/apply.l") pat? (736 . "@src64/sym.l") path (1244 . "@src64/io.l") -peek (3431 . "@src64/io.l") +peek (3430 . "@src64/io.l") pick (1369 . "@src64/apply.l") -pipe (4272 . "@src64/io.l") -poll (3320 . "@src64/io.l") +pipe (4271 . "@src64/io.l") +poll (3319 . "@src64/io.l") pool (651 . "@src64/db.l") pop (1898 . "@src64/sym.l") port (5 . "@src64/net.l") -pr (5226 . "@src64/io.l") +pr (5225 . "@src64/io.l") pre? (1536 . "@src64/sym.l") -prin (5042 . "@src64/io.l") -prinl (5056 . "@src64/io.l") -print (5082 . "@src64/io.l") -println (5113 . "@src64/io.l") -printsp (5098 . "@src64/io.l") +prin (5041 . "@src64/io.l") +prinl (5055 . "@src64/io.l") +print (5081 . "@src64/io.l") +println (5112 . "@src64/io.l") +printsp (5097 . "@src64/io.l") prior (2713 . "@src64/subr.l") prog (1749 . "@src64/flow.l") prog1 (1757 . "@src64/flow.l") @@ -280,12 +280,12 @@ rand (3003 . "@src64/big.l") range (997 . "@src64/subr.l") rank (3036 . "@src64/subr.l") raw (449 . "@src64/main.l") -rd (5160 . "@src64/io.l") -read (2656 . "@src64/io.l") +rd (5159 . "@src64/io.l") +read (2655 . "@src64/io.l") replace (1499 . "@src64/subr.l") rest (2394 . "@src64/main.l") reverse (1678 . "@src64/subr.l") -rewind (5126 . "@src64/io.l") +rewind (5125 . "@src64/io.l") rollback (1898 . "@src64/db.l") rot (848 . "@src64/subr.l") run (306 . "@src64/flow.l") @@ -298,33 +298,33 @@ set (1607 . "@src64/sym.l") setq (1640 . "@src64/sym.l") sigio (487 . "@src64/main.l") size (2809 . "@src64/subr.l") -skip (3501 . "@src64/io.l") +skip (3500 . "@src64/io.l") sort (3965 . "@src64/subr.l") sp? (727 . "@src64/sym.l") -space (5060 . "@src64/io.l") +space (5059 . "@src64/io.l") split (1592 . "@src64/subr.l") stack (546 . "@src64/main.l") state (1998 . "@src64/flow.l") stem (1989 . "@src64/subr.l") -str (4019 . "@src64/io.l") +str (4018 . "@src64/io.l") str? (1136 . "@src64/sym.l") strip (1576 . "@src64/subr.l") struct (1828 . "@src64/main.l") sub? (1569 . "@src64/sym.l") sum (1460 . "@src64/apply.l") super (1214 . "@src64/flow.l") -sym (4005 . "@src64/io.l") +sym (4004 . "@src64/io.l") sym? (2434 . "@src64/subr.l") symbols (942 . "@src64/sym.l") -sync (3188 . "@src64/io.l") +sync (3187 . "@src64/io.l") sys (3050 . "@src64/flow.l") t (1740 . "@src64/flow.l") tail (1911 . "@src64/subr.l") -tell (3260 . "@src64/io.l") +tell (3259 . "@src64/io.l") text (1398 . "@src64/sym.l") throw (2482 . "@src64/flow.l") tick (3166 . "@src64/flow.l") -till (3610 . "@src64/io.l") +till (3609 . "@src64/io.l") time (2612 . "@src64/main.l") touch (1172 . "@src64/sym.l") trim (1759 . "@src64/subr.l") @@ -341,12 +341,12 @@ use (1562 . "@src64/flow.l") usec (2717 . "@src64/main.l") val (1588 . "@src64/sym.l") version (3102 . "@src64/main.l") -wait (3150 . "@src64/io.l") +wait (3149 . "@src64/io.l") when (1873 . "@src64/flow.l") while (2050 . "@src64/flow.l") wipe (3253 . "@src64/sym.l") with (1321 . "@src64/flow.l") -wr (5243 . "@src64/io.l") +wr (5242 . "@src64/io.l") xchg (1663 . "@src64/sym.l") xor (1690 . "@src64/flow.l") x| (2887 . "@src64/big.l") diff --git a/src/vers.h b/src/vers.h @@ -1 +1 @@ -static byte Version[4] = {3,1,0,9}; +static byte Version[4] = {3,1,0,10}; diff --git a/src64/tags b/src64/tags @@ -559,7 +559,7 @@ doAdr main.l 585 doAlarm main.l 471 doAll sym.l 788 doAnd flow.l 1613 -doAny io.l 3965 +doAny io.l 3964 doAppend subr.l 1338 doApply apply.l 713 doArg main.l 2365 @@ -617,12 +617,12 @@ doCdddr subr.l 245 doCddr subr.l 79 doCdr subr.l 17 doChain subr.l 1141 -doChar io.l 3447 +doChar io.l 3446 doChop sym.l 1219 doCirc subr.l 816 doCircQ subr.l 2402 doClip subr.l 1799 -doClose io.l 4378 +doClose io.l 4377 doCmd main.l 2967 doCnt apply.l 1413 doCo flow.l 2537 @@ -634,7 +634,7 @@ doCond flow.l 1908 doConnect net.l 224 doCons subr.l 747 doCopy subr.l 1225 -doCtl io.l 4251 +doCtl io.l 4250 doCtty main.l 2765 doCut sym.l 1922 doDate main.l 2479 @@ -652,18 +652,18 @@ doDiv big.l 2513 doDm flow.l 545 doDo flow.l 2130 doE flow.l 2911 -doEcho io.l 4409 +doEcho io.l 4408 doEnv main.l 597 -doEof io.l 3524 -doEol io.l 3515 +doEof io.l 3523 +doEol io.l 3514 doEq subr.l 2059 doEq0 subr.l 2173 doEqT subr.l 2181 doEqual subr.l 2115 -doErr io.l 4231 +doErr io.l 4230 doErrno main.l 1368 doEval flow.l 175 -doExt io.l 5143 +doExt io.l 5142 doExtQ sym.l 1157 doExtern sym.l 1023 doExtra flow.l 1258 @@ -678,13 +678,13 @@ doFind apply.l 1322 doFish apply.l 1613 doFlgQ subr.l 2445 doFlip subr.l 1699 -doFlush io.l 5118 +doFlush io.l 5117 doFold sym.l 3512 doFor flow.l 2219 doFork flow.l 3253 doFormat big.l 2089 doFree db.l 2055 -doFrom io.l 3543 +doFrom io.l 3542 doFull subr.l 1075 doFunQ sym.l 750 doGc gc.l 435 @@ -699,7 +699,7 @@ doGt0 big.l 2718 doHash big.l 2976 doHead subr.l 1820 doHeap main.l 517 -doHear io.l 3228 +doHear io.l 3227 doHide sym.l 1090 doHost net.l 190 doId db.l 1028 @@ -707,7 +707,7 @@ doIdx sym.l 2162 doIf flow.l 1794 doIf2 flow.l 1813 doIfn flow.l 1854 -doIn io.l 4191 +doIn io.l 4190 doInc big.l 2256 doIndex subr.l 2637 doInfo main.l 2802 @@ -716,7 +716,7 @@ doIpid flow.l 3198 doIsa flow.l 961 doJob flow.l 1418 doJournal db.l 971 -doKey io.l 3376 +doKey io.l 3375 doKill flow.l 3230 doLast subr.l 2044 doLe subr.l 2237 @@ -725,14 +725,14 @@ doLength subr.l 2741 doLet flow.l 1468 doLetQ flow.l 1529 doLieu db.l 1157 -doLine io.l 3699 -doLines io.l 3852 +doLine io.l 3698 +doLines io.l 3851 doLink subr.l 1172 doLisp main.l 2037 doList subr.l 887 doListen net.l 157 doLit flow.l 150 -doLoad io.l 4168 +doLoad io.l 4167 doLock db.l 1185 doLoop flow.l 2162 doLowQ sym.l 3378 @@ -786,30 +786,30 @@ doOffset subr.l 2677 doOn sym.l 1708 doOnOff sym.l 1738 doOne sym.l 1771 -doOpen io.l 4335 +doOpen io.l 4334 doOpid flow.l 3214 doOpt main.l 3088 doOr flow.l 1629 -doOut io.l 4211 +doOut io.l 4210 doPack sym.l 1270 doPair subr.l 2394 doPass apply.l 754 doPatQ sym.l 736 doPath io.l 1244 -doPeek io.l 3431 +doPeek io.l 3430 doPick apply.l 1369 -doPipe io.l 4272 -doPoll io.l 3320 +doPipe io.l 4271 +doPoll io.l 3319 doPool db.l 651 doPop sym.l 1898 doPort net.l 5 -doPr io.l 5226 +doPr io.l 5225 doPreQ sym.l 1536 -doPrin io.l 5042 -doPrinl io.l 5056 -doPrint io.l 5082 -doPrintln io.l 5113 -doPrintsp io.l 5098 +doPrin io.l 5041 +doPrinl io.l 5055 +doPrint io.l 5081 +doPrintln io.l 5112 +doPrintsp io.l 5097 doPrior subr.l 2713 doProg flow.l 1749 doProg1 flow.l 1757 @@ -830,13 +830,13 @@ doRand big.l 3003 doRange subr.l 997 doRank subr.l 3036 doRaw main.l 449 -doRd io.l 5160 -doRead io.l 2656 +doRd io.l 5159 +doRead io.l 2655 doRem big.l 2572 doReplace subr.l 1499 doRest main.l 2394 doReverse subr.l 1678 -doRewind io.l 5126 +doRewind io.l 5125 doRollback db.l 1898 doRot subr.l 848 doRun flow.l 306 @@ -852,15 +852,15 @@ doSetq sym.l 1640 doShift big.l 2627 doSigio main.l 487 doSize subr.l 2809 -doSkip io.l 3501 +doSkip io.l 3500 doSort subr.l 3965 doSpQ sym.l 727 -doSpace io.l 5060 +doSpace io.l 5059 doSplit subr.l 1592 doStack main.l 546 doState flow.l 1998 doStem subr.l 1989 -doStr io.l 4019 +doStr io.l 4018 doStrQ sym.l 1136 doStrip subr.l 1576 doStruct main.l 1828 @@ -868,18 +868,18 @@ doSub big.l 2209 doSubQ sym.l 1569 doSum apply.l 1460 doSuper flow.l 1214 -doSym io.l 4005 +doSym io.l 4004 doSymQ subr.l 2434 doSymbols sym.l 942 -doSync io.l 3188 +doSync io.l 3187 doSys flow.l 3050 doT flow.l 1740 doTail subr.l 1911 -doTell io.l 3260 +doTell io.l 3259 doText sym.l 1398 doThrow flow.l 2482 doTick flow.l 3166 -doTill io.l 3610 +doTill io.l 3609 doTime main.l 2612 doTouch sym.l 1172 doTrace flow.l 2950 @@ -897,12 +897,12 @@ doUse flow.l 1562 doUsec main.l 2717 doVal sym.l 1588 doVersion main.l 3102 -doWait io.l 3150 +doWait io.l 3149 doWhen flow.l 1873 doWhile flow.l 2050 doWipe sym.l 3253 doWith flow.l 1321 -doWr io.l 5243 +doWr io.l 5242 doXchg sym.l 1663 doXor flow.l 1690 doYield flow.l 2706 @@ -911,7 +911,7 @@ doZap sym.l 1186 doZero sym.l 1756 endString_E main.l 2314 eofErr err.l 534 -eolA_F io.l 3684 +eolA_F io.l 3683 equalAE_F main.l 770 erOpenEXY io.l 1628 errEXYZ err.l 33 @@ -932,10 +932,10 @@ extErrEX err.l 434 extNmCE_X db.l 64 externX_E sym.l 266 extraXY_FCYZ flow.l 1285 -fdRdSetCZL io.l 2718 -fdSetCL_X io.l 2706 -fdSetC_Y io.l 3309 -fdWrSetCZL io.l 2725 +fdRdSetCZL io.l 2717 +fdSetCL_X io.l 2705 +fdSetC_Y io.l 3308 +fdWrSetCZL io.l 2724 fetchCharC_AC main.l 1871 fileObjE_AC db.l 237 fileObjX_AC db.l 211 @@ -974,7 +974,7 @@ idxDelXY_E sym.l 2292 idxGetXY_E sym.l 2205 idxPutXY_E sym.l 2222 ignLog db.l 924 -inReadyC_F io.l 2694 +inReadyC_F io.l 2693 incE_A big.l 1491 initInFileAC_A io.l 65 initInFileA_A io.l 63 @@ -998,7 +998,7 @@ jnlFileno_A db.l 344 joinLocalCX flow.l 2837 lisp main.l 2080 loadAllX_E main.l 162 -loadBEX_E io.l 4072 +loadBEX_E io.l 4071 lockErr err.l 607 lockFileAC io.l 28 lockJnl db.l 352 @@ -1038,7 +1038,7 @@ needVarAX err.l 346 needVarEX err.l 356 newBlock_X db.l 449 newIdEX_X db.l 492 -newline io.l 4665 +newline io.l 4664 noFdErrX err.l 529 nonblockingA_A io.l 51 numErrAX err.l 412 @@ -1046,20 +1046,20 @@ numErrEX err.l 414 oct3C_CA db.l 180 openErrEX err.l 500 oruAE_A big.l 394 -outAoA io.l 4714 -outNameE io.l 4738 -outNumE io.l 4674 -outOctA io.l 4701 -outStringC io.l 4728 -outStringS io.l 4726 -outWordA io.l 4681 +outAoA io.l 4713 +outNameE io.l 4737 +outNumE io.l 4673 +outOctA io.l 4700 +outStringC io.l 4727 +outStringS io.l 4725 +outWordA io.l 4680 packAoACX_CX db.l 108 packECX_CX sym.l 1303 packExtNmX_E db.l 87 packOctACX_CX db.l 120 pairErrAX err.l 438 pairErrEX err.l 440 -parseBCE_E io.l 3893 +parseBCE_E io.l 3892 pathStringE_SZ io.l 1172 pico glob.l 142 pipeErrX err.l 510 @@ -1070,14 +1070,14 @@ popOutFiles io.l 1914 prByteCEXY io.l 680 prCntCE io.l 703 prE io.l 728 -prExtNmX io.l 4693 -prNameX io.l 4746 +prExtNmX io.l 4692 +prNameX io.l 4745 prTellEZ io.l 722 preCEXY_F sym.l 1470 -prinE io.l 4987 -prinE_E io.l 4978 -printE io.l 4765 -printE_E io.l 4756 +prinE io.l 4986 +prinE_E io.l 4977 +printE io.l 4764 +printE_E io.l 4755 propEC_E sym.l 2745 protErrEX err.l 386 pushCtlFilesY io.l 1858 @@ -1087,7 +1087,7 @@ pushOutFilesY io.l 1842 putACE sym.l 2491 putBlockBZ db.l 612 putSrcEC_E flow.l 25 -putStdoutB io.l 4622 +putStdoutB io.l 4621 putStringB main.l 2291 putTellBZ io.l 996 putUdpBZ net.l 377 @@ -1098,14 +1098,14 @@ rdBlockZ_Z db.l 380 rdBytesCEX_F io.l 246 rdBytesNbCEX_F io.l 267 rdHear_FE io.l 1075 -rdList_E io.l 2170 +rdList_E io.l 2169 rdLockDb db.l 255 rdLockFileC io.l 26 rdOpenEXY io.l 1354 -rdSetCL_F io.l 2732 -rdSetRdyCL_F io.l 2742 -readA_E io.l 2308 -readC_E io.l 2492 +rdSetCL_F io.l 2731 +rdSetRdyCL_F io.l 2741 +readA_E io.l 2307 +readC_E io.l 2491 redefMsgEC flow.l 4 redefineCE flow.l 109 reentErrEX err.l 476 @@ -1150,7 +1150,7 @@ sizeCE_C subr.l 2929 skipC_A io.l 2007 slowNbC_FA io.l 207 slowZ_F io.l 185 -space io.l 4669 +space io.l 4668 stdinByte_A io.l 425 stkErr err.l 395 stkErrE err.l 397 @@ -1177,7 +1177,7 @@ testEscA_F io.l 2050 throwErrZX flow.l 2507 tmDateC_E main.l 2408 tmTimeY_E main.l 2595 -tokenCE_E io.l 2522 +tokenCE_E io.l 2521 trSyncErrX err.l 602 traceCY flow.l 3022 trimE_E subr.l 1769 @@ -1199,7 +1199,7 @@ unsync io.l 1058 unwindC_Z err.l 165 varErrAX err.l 456 varErrEX err.l 458 -waitFdCEX_A io.l 2764 +waitFdCEX_A io.l 2763 waitPidErrX err.l 520 wifsignaledS_F sys/x86-64.linux.code.l 27 wifstoppedS_F sys/x86-64.linux.code.l 22 @@ -1214,7 +1214,7 @@ wrLockDb db.l 262 wrLockFileC io.l 23 wrLogErr err.l 586 wrOpenEXY io.l 1495 -wrSetCL_F io.l 2737 +wrSetCL_F io.l 2736 wrSyncErrX err.l 575 wtermsigS_A sys/x86-64.linux.code.l 34 xCntAX_FA main.l 2262 diff --git a/src64/version.l b/src64/version.l @@ -1,6 +1,6 @@ -# 09jul12abu +# 17jul12abu # (c) Software Lab. Alexander Burger -(de *Version 3 1 0 9) +(de *Version 3 1 0 10) # vi:et:ts=3:sw=3