Alexander Burger wrote:
Hi Cle,
Hi Alexander,
unfortunately, we see problems on Mac OS since quite some time. You'll see that if you search in the archive of this mailing list (http://www.mail-archive.com/picolisp@software-lab.de).
I had already seen this, but those problems dealt with being not able to build picoLisp though. Therefore I had the hope, that my problem perhaps is already solved! :-}
I don't have a Mac myself. So I'm still hoping that some of the Mac users fires up a debugger and helps, but no results so far :-(
Ok! Today I had give it a try and finally I was able to patch and build picoLisp to being runable under Snow Leopard passing all unit tests in lib/test.l and running doc/hello.l and doc/family.l too :-)
I have attached the patch necessary to fix all glitches for Snow Leopard. I have tested the changes against Snow Leopard and NetBSD and they work fine! I intend to have a look, if they run under Leopard (MacOS/X 10.5) tomorrow if I can manage to install Xcode on my PPC machine.
BTW: If you duplicate the OpenBSD section in the src/Makefile and replace OpenBSD by NetBSD, you can add another platform picoLisp is running onto :-D
The attached patch was made against the development version downloaded as picoLisp.tgz from your homepage. The patch was applied as:
tar xzf picoLisp.tgz cd picoLisp patch -p0 < ../picoLisp.patch (cd src; make clean picolisp) ./p lib/test.l -bye I hope, I did not break your coding style too much via the patch ... Best regards and thanks for picoLisp ... :-) Ciao, Cle. (...)
Index: src/Makefile =================================================================== --- src/Makefile +++ src/Makefile @@ -33,11 +33,11 @@ STRIP = strip else ifeq ($(shell uname), Darwin) OS = Darwin PICOLISP-FLAGS = -m32 -lc -lm -ldl - DYNAMIC-LIB-FLAGS = -dynamiclib -undefined dynamic_lookup + DYNAMIC-LIB-FLAGS = -dynamiclib -undefined dynamic_lookup -m32 STRIP = : else ifeq ($(shell uname -o), Cygwin) OS = Cygwin DYNAMIC-LIB-FLAGS = -shared Index: src/main.c =================================================================== --- src/main.c +++ src/main.c @@ -2,10 +2,31 @@ * (c) Software Lab. Alexander Burger */ #include "pico.h" +/* Globals declared in pico.h */ +int Signal, Chr, Slot, Spkr, Mic, Hear, Tell, Children, ExtN; +char **AV, *AV0, *Home; +child *Child; +heap *Heaps; +cell *Avail; +stkEnv Env; +catchFrame *CatchPtr; +struct termios OrgTermio, *Termio; +int InFDs, OutFDs; +inFile *InFile, **InFiles; +outFile *OutFile, **OutFiles; +int (*getBin)(void); +void (*putBin)(int); +any TheKey, TheCls, Thrown; +any Alarm, Line, Zero, One, Intern[IHASH], Transient[IHASH], Extern[EHASH]; +any ApplyArgs, ApplyBody, DbVal, DbTail; +any Nil, DB, Meth, Quote, T; +any Solo, PPid, Pid, At, At2, At3, This, Dbg, Zap, Ext, Scl, Class; +any Run, Hup, Sig1, Sig2, Up, Err, Msg, Uni, Led, Tsm, Adr, Fork, Bye; + /* Globals */ static int TtyPid; static word2 USec; static struct timeval Tv; static bool Tio, Jam; @@ -633,11 +654,11 @@ else { if (n) memcpy(buf, Home, n); strcpy(buf + n, "lib/"), strcpy(buf + n + 4, nm); } - if (!(h = dlopen(buf, RTLD_LAZY | RTLD_GLOBAL)) || !(h = dlsym(h,p))) + if (!(h = dlopen(buf, RTLD_NOW | RTLD_GLOBAL)) || !(h = dlsym(h,p))) return NO; val(x) = box(num(h)); } return YES; } @@ -1061,10 +1082,17 @@ if (*av[i] != '-') { if ((p = strrchr(av[i], '/')) && !(p == av[i]+1 && *av[i] == '.')) { Home = malloc(p - av[i] + 2); memcpy(Home, av[i], p - av[i] + 1); Home[p - av[i] + 1] = '\0'; + } + else if ((p = getcwd(NULL,0)) != NULL) { + int len = strlen(p); + Home = malloc(len + 2); + memcpy(Home, p, len); + Home[len] = '/'; + Home[len + 1] = '\0'; } break; } AV0 = *av++; AV = av; Index: src/pico.h =================================================================== --- src/pico.h +++ src/pico.h @@ -234,512 +234,512 @@ /* External symbol access */ #define Fetch(ex,x) if (isExt(x)) db(ex,x,1) #define Touch(ex,x) if (isExt(x)) db(ex,x,2) /* Globals */ -int Signal, Chr, Slot, Spkr, Mic, Hear, Tell, Children, ExtN; -char **AV, *AV0, *Home; -child *Child; -heap *Heaps; -cell *Avail; -stkEnv Env; -catchFrame *CatchPtr; -struct termios OrgTermio, *Termio; -int InFDs, OutFDs; -inFile *InFile, **InFiles; -outFile *OutFile, **OutFiles; -int (*getBin)(void); -void (*putBin)(int); -any TheKey, TheCls, Thrown; -any Alarm, Line, Zero, One, Intern[IHASH], Transient[IHASH], Extern[EHASH]; -any ApplyArgs, ApplyBody, DbVal, DbTail; -any Nil, DB, Meth, Quote, T; -any Solo, PPid, Pid, At, At2, At3, This, Dbg, Zap, Ext, Scl, Class; -any Run, Hup, Sig1, Sig2, Up, Err, Msg, Uni, Led, Tsm, Adr, Fork, Bye; +extern int Signal, Chr, Slot, Spkr, Mic, Hear, Tell, Children, ExtN; +extern char **AV, *AV0, *Home; +extern child *Child; +extern heap *Heaps; +extern cell *Avail; +extern stkEnv Env; +extern catchFrame *CatchPtr; +extern struct termios OrgTermio, *Termio; +extern int InFDs, OutFDs; +extern inFile *InFile, **InFiles; +extern outFile *OutFile, **OutFiles; +extern int (*getBin)(void); +extern void (*putBin)(int); +extern any TheKey, TheCls, Thrown; +extern any Alarm, Line, Zero, One, Intern[IHASH], Transient[IHASH], Extern[EHASH]; +extern any ApplyArgs, ApplyBody, DbVal, DbTail; +extern any Nil, DB, Meth, Quote, T; +extern any Solo, PPid, Pid, At, At2, At3, This, Dbg, Zap, Ext, Scl, Class; +extern any Run, Hup, Sig1, Sig2, Up, Err, Msg, Uni, Led, Tsm, Adr, Fork, Bye; /* Prototypes */ -void *alloc(void*,size_t); -any apply(any,any,bool,int,cell*); -void argError(any,any) __attribute__ ((noreturn)); -void atomError(any,any) __attribute__ ((noreturn)); -void begString(void); -void bigAdd(any,any); -int bigCompare(any,any); -any bigCopy(any); -void bigSub(any,any); -void binPrint(int,any); -any binRead(int); -adr blk64(any); -any boxChar(int,int*,any*); -any boxWord2(word2); -any brkLoad(any); -int bufSize(any); -void bufString(any,char*); -void bye(int) __attribute__ ((noreturn)); -void byteSym(int,int*,any*); -void cellError(any,any) __attribute__ ((noreturn)); -void charSym(int,int*,any*); -void closeInFile(int); -void closeOnExec(any,int); -void closeOutFile(int); -void cntError(any,any) __attribute__ ((noreturn)); -int compare(any,any); -any cons(any,any); -any consNum(word,any); -any consStr(any); -any consSym(any,any); -void newline(void); -void ctOpen(any,any,ctlFrame*); -void db(any,any,int); -int dbSize(any,any); -void digAdd(any,word); -void digDiv2(any); -void digMul2(any); -void digSub1(any); -any doubleToNum(double); -unsigned long ehash(any); -any endString(void); -bool eol(void); -bool equal(any,any); -void err(any,any,char*,...) __attribute__ ((noreturn)); -any evExpr(any,any); -long evCnt(any,any); -double evDouble(any,any); -any evList(any); -any evSym(any); -void execError(char*) __attribute__ ((noreturn)); -void extError(any,any) __attribute__ ((noreturn)); -any extOffs(int,any); -any findHash(any,any*); -int firstByte(any); -bool flush(outFile*); -void flushAll(void); -pid_t forkLisp(any); -any funq(any); -any get(any,any); -int getChar(void); -void getStdin(void); -void giveup(char*) __attribute__ ((noreturn)); -bool hashed(any,long,any*); -void heapAlloc(void); -any idx(any,any,int); -unsigned long ihash(any); -inFile *initInFile(int,char*); -outFile *initOutFile(int); -void initSymbols(void); -any intern(char*); -bool isBlank(any); -bool isLife(any); -void lstError(any,any) __attribute__ ((noreturn)); -any load(any,int,any); -any loadAll(any); -any method(any); -any mkChar(int); -any mkDat(int,int,int); -any mkName(char*); -any mkStr(char*); -any mkTime(int,int,int); -any name(any); -any new64(adr,any); -any newId(any,int); -int nonblocking(int); -int numBytes(any); -void numError(any,any) __attribute__ ((noreturn)); -double numToDouble(any); -any numToSym(any,int,int,int); -void outName(any); -void outNum(any); -void outString(char*); -void outWord(word); -void pack(any,int*,any*,cell*); -int pathSize(any); -void pathString(any,char*); -void pipeError(any,char*); -void popCtlFiles(void); -void popInFiles(void); -void popOutFiles(void); -void pr(int,any); -void prin(any); -void prin1(any); -void print(any); -void print1(any); -void prn(long); -void protError(any,any) __attribute__ ((noreturn)); -void pushInFiles(inFrame*); -void pushOutFiles(outFrame*); -void pushCtlFiles(ctlFrame*); -void put(any,any,any); -void putStdout(int); -void rdOpen(any,any,inFrame*); -any read1(int); -int rdBytes(int,byte*,int,bool); -int secondByte(any); -void setCooked(void); -void setRaw(void); -bool sharedLib(any); -void sighandler(any); -int slow(inFile*,bool); -void space(void); -bool subStr(any,any); -int symByte(any); -int symChar(any); -void symError(any,any) __attribute__ ((noreturn)); -any symToNum(any,int,int,int); -word2 unBoxWord2(any); -void undefined(any,any); -void unwind (catchFrame*); -void varError(any,any) __attribute__ ((noreturn)); -long waitFd(any,int,long); -bool wrBytes(int,byte*,int); -void wrOpen(any,any,outFrame*); -long xCnt(any,any); -any xSym(any); -void zapZero(any); - -any doAbs(any); -any doAccept(any); -any doAdd(any); -any doAlarm(any); -any doAll(any); -any doAnd(any); -any doAny(any); -any doAppend(any); -any doApply(any); -any doArg(any); -any doArgs(any); -any doArgv(any); -any doArrow(any); -any doAsoq(any); -any doAs(any); -any doAssoc(any); -any doAt(any); -any doAtom(any); -any doBind(any); -any doBitAnd(any); -any doBitOr(any); -any doBitQ(any); -any doBitXor(any); -any doBool(any); -any doBox(any); -any doBoxQ(any); -any doBreak(any); -any doBy(any); -any doBye(any) __attribute__ ((noreturn)); -any doCaaaar(any); -any doCaaadr(any); -any doCaaar(any); -any doCaadar(any); -any doCaaddr(any); -any doCaadr(any); -any doCaar(any); -any doCadaar(any); -any doCadadr(any); -any doCadar(any); -any doCaddar(any); -any doCadddr(any); -any doCaddr(any); -any doCadr(any); -any doCall(any); -any doCar(any); -any doCase(any); -any doCatch(any); -any doCdaaar(any); -any doCdaadr(any); -any doCdaar(any); -any doCdadar(any); -any doCdaddr(any); -any doCdadr(any); -any doCd(any); -any doCdar(any); -any doCddaar(any); -any doCddadr(any); -any doCddar(any); -any doCdddar(any); -any doCddddr(any); -any doCdddr(any); -any doCddr(any); -any doCdr(any); -any doChain(any); -any doChar(any); -any doChop(any); -any doCirc(any); -any doClip(any); -any doClose(any); -any doCmd(any); -any doCnt(any); -any doCol(any); -any doCommit(any); -any doCon(any); -any doConc(any); -any doCond(any); -any doConnect(any); -any doCons(any); -any doCopy(any); -any doCtl(any); -any doCtty(any); -any doCut(any); -any doDate(any); -any doDbck(any); -any doDe(any); -any doDec(any); -any doDef(any); -any doDefault(any); -any doDel(any); -any doDelete(any); -any doDelq(any); -any doDiff(any); -any doDir(any); -any doDiv(any); -any doDm(any); -any doDo(any); -any doE(any); -any doEcho(any); -any doEnv(any); -any doEof(any); -any doEol(any); -any doEq(any); -any doEq0(any); -any doEqT(any); -any doEqual(any); -any doEval(any); -any doExt(any); -any doExtern(any); -any doExtQ(any); -any doExtra(any); -any doExtract(any); -any doFifo(any); -any doFile(any); -any doFill(any); -any doFilter(any); -any doFin(any); -any doFinally(any); -any doFind(any); -any doFish(any); -any doFlgQ(any); -any doFlip(any); -any doFlush(any); -any doFold(any); -any doFor(any); -any doFork(any); -any doFormat(any); -any doFree(any); -any doFrom(any); -any doFull(any); -any doFunQ(any); -any doGc(any); -any doGe(any); -any doGe0(any); -any doGet(any); -any doGetd(any); -any doGetl(any); -any doGlue(any); -any doGt(any); -any doGt0(any); -any doHead(any); -any doHeap(any); -any doHear(any); -any doHide(any); -any doHost(any); -any doId(any); -any doIdx(any); -any doIf(any); -any doIf2(any); -any doIfn(any); -any doIn(any); -any doInc(any); -any doIndex(any); -any doInfo(any); -any doIntern(any); -any doIpid(any); -any doIsa(any); -any doJob(any); -any doJournal(any); -any doKey(any); -any doKill(any); -any doLast(any); -any doLe(any); -any doLength(any); -any doLet(any); -any doLetQ(any); -any doLieu(any); -any doLine(any); -any doLines(any); -any doLink(any); -any doList(any); -any doListen(any); -any doLit(any); -any doLstQ(any); -any doLoad(any); -any doLock(any); -any doLoop(any); -any doLowQ(any); -any doLowc(any); -any doLt(any); -any doLt0(any); -any doLup(any); -any doMade(any); -any doMake(any); -any doMap(any); -any doMapc(any); -any doMapcan(any); -any doMapcar(any); -any doMapcon(any); -any doMaplist(any); -any doMaps(any); -any doMark(any); -any doMatch(any); -any doMax(any); -any doMaxi(any); -any doMember(any); -any doMemq(any); -any doMeta(any); -any doMeth(any); -any doMethod(any); -any doMin(any); -any doMini(any); -any doMix(any); -any doMmeq(any); -any doMul(any); -any doMulDiv(any); -any doName(any); -any doNand(any); -any doNEq(any); -any doNEq0(any); -any doNEqT(any); -any doNEqual(any); -any doNeed(any); -any doNew(any); -any doNext(any); -any doNil(any); -any doNond(any); -any doNor(any); -any doNot(any); -any doNth(any); -any doNumQ(any); -any doOff(any); -any doOffset(any); -any doOn(any); -any doOne(any); -any doOnOff(any); -any doOpen(any); -any doOpid(any); -any doOpt(any); -any doOr(any); -any doOut(any); -any doPack(any); -any doPair(any); -any doPass(any); -any doPath(any); -any doPatQ(any); -any doPeek(any); -any doPick(any); -any doPid(any); -any doPipe(any); -any doPoll(any); -any doPool(any); -any doPop(any); -any doPort(any); -any doPr(any); -any doPreQ(any); -any doPrin(any); -any doPrinl(any); -any doPrint(any); -any doPrintln(any); -any doPrintsp(any); -any doProg(any); -any doProg1(any); -any doProg2(any); -any doProp(any); -any doPropCol(any); -any doProtect(any); -any doProve(any); -any doPush(any); -any doPush1(any); -any doPut(any); -any doPutl(any); -any doPwd(any); -any doQueue(any); -any doQuit(any); -any doQuote(any); -any doRand(any); -any doRange(any); -any doRank(any); -any doRaw(any); -any doRd(any); -any doRead(any); -any doRem(any); -any doReplace(any); -any doRest(any); -any doReverse(any); -any doRewind(any); -any doRollback(any); -any doRot(any); -any doRpc(any); -any doRun(any); -any doSect(any); -any doSeed(any); -any doSeek(any); -any doSemicol(any); -any doSend(any); -any doSeq(any); -any doSet(any); -any doSetCol(any); -any doSetq(any); -any doShift(any); -any doSize(any); -any doSkip(any); -any doSort(any); -any doSpace(any); -any doSplit(any); -any doSpQ(any); -any doState(any); -any doStem(any); -any doStr(any); -any doStrip(any); -any doStrQ(any); -any doSub(any); -any doSubQ(any); -any doSum(any); -any doSuper(any); -any doSym(any); -any doSymQ(any); -any doSync(any); -any doSys(any); -any doT(any); -any doTail(any); -any doTell(any); -any doText(any); -any doThrow(any); -any doTick(any); -any doTill(any); -any doTime(any); -any doTouch(any); -any doTrace(any); -any doTrim(any); -any doTry(any); -any doType(any); -any doUdp(any); -any doUnify(any); -any doUnless(any); -any doUntil(any); -any doUp(any); -any doUppQ(any); -any doUppc(any); -any doUse(any); -any doUsec(any); -any doVal(any); -any doWait(any); -any doWhen(any); -any doWhile(any); -any doWipe(any); -any doWith(any); -any doWr(any); -any doXchg(any); -any doXor(any); -any doYoke(any); -any doZap(any); -any doZero(any); +extern void *alloc(void*,size_t); +extern any apply(any,any,bool,int,cell*); +extern void argError(any,any) __attribute__ ((noreturn)); +extern void atomError(any,any) __attribute__ ((noreturn)); +extern void begString(void); +extern void bigAdd(any,any); +extern int bigCompare(any,any); +extern any bigCopy(any); +extern void bigSub(any,any); +extern void binPrint(int,any); +extern any binRead(int); +extern adr blk64(any); +extern any boxChar(int,int*,any*); +extern any boxWord2(word2); +extern any brkLoad(any); +extern int bufSize(any); +extern void bufString(any,char*); +extern void bye(int) __attribute__ ((noreturn)); +extern void byteSym(int,int*,any*); +extern void cellError(any,any) __attribute__ ((noreturn)); +extern void charSym(int,int*,any*); +extern void closeInFile(int); +extern void closeOnExec(any,int); +extern void closeOutFile(int); +extern void cntError(any,any) __attribute__ ((noreturn)); +extern int compare(any,any); +extern any cons(any,any); +extern any consNum(word,any); +extern any consStr(any); +extern any consSym(any,any); +extern void newline(void); +extern void ctOpen(any,any,ctlFrame*); +extern void db(any,any,int); +extern int dbSize(any,any); +extern void digAdd(any,word); +extern void digDiv2(any); +extern void digMul2(any); +extern void digSub1(any); +extern any doubleToNum(double); +extern unsigned long ehash(any); +extern any endString(void); +extern bool eol(void); +extern bool equal(any,any); +extern void err(any,any,char*,...) __attribute__ ((noreturn)); +extern any evExpr(any,any); +extern long evCnt(any,any); +extern double evDouble(any,any); +extern any evList(any); +extern any evSym(any); +extern void execError(char*) __attribute__ ((noreturn)); +extern void extError(any,any) __attribute__ ((noreturn)); +extern any extOffs(int,any); +extern any findHash(any,any*); +extern int firstByte(any); +extern bool flush(outFile*); +extern void flushAll(void); +extern pid_t forkLisp(any); +extern any funq(any); +extern any get(any,any); +extern int getChar(void); +extern void getStdin(void); +extern void giveup(char*) __attribute__ ((noreturn)); +extern bool hashed(any,long,any*); +extern void heapAlloc(void); +extern any idx(any,any,int); +extern unsigned long ihash(any); +extern inFile *initInFile(int,char*); +extern outFile *initOutFile(int); +extern void initSymbols(void); +extern any intern(char*); +extern bool isBlank(any); +extern bool isLife(any); +extern void lstError(any,any) __attribute__ ((noreturn)); +extern any load(any,int,any); +extern any loadAll(any); +extern any method(any); +extern any mkChar(int); +extern any mkDat(int,int,int); +extern any mkName(char*); +extern any mkStr(char*); +extern any mkTime(int,int,int); +extern any name(any); +extern any new64(adr,any); +extern any newId(any,int); +extern int nonblocking(int); +extern int numBytes(any); +extern void numError(any,any) __attribute__ ((noreturn)); +extern double numToDouble(any); +extern any numToSym(any,int,int,int); +extern void outName(any); +extern void outNum(any); +extern void outString(char*); +extern void outWord(word); +extern void pack(any,int*,any*,cell*); +extern int pathSize(any); +extern void pathString(any,char*); +extern void pipeError(any,char*); +extern void popCtlFiles(void); +extern void popInFiles(void); +extern void popOutFiles(void); +extern void pr(int,any); +extern void prin(any); +extern void prin1(any); +extern void print(any); +extern void print1(any); +extern void prn(long); +extern void protError(any,any) __attribute__ ((noreturn)); +extern void pushInFiles(inFrame*); +extern void pushOutFiles(outFrame*); +extern void pushCtlFiles(ctlFrame*); +extern void put(any,any,any); +extern void putStdout(int); +extern void rdOpen(any,any,inFrame*); +extern any read1(int); +extern int rdBytes(int,byte*,int,bool); +extern int secondByte(any); +extern void setCooked(void); +extern void setRaw(void); +extern bool sharedLib(any); +extern void sighandler(any); +extern int slow(inFile*,bool); +extern void space(void); +extern bool subStr(any,any); +extern int symByte(any); +extern int symChar(any); +extern void symError(any,any) __attribute__ ((noreturn)); +extern any symToNum(any,int,int,int); +extern word2 unBoxWord2(any); +extern void undefined(any,any); +extern void unwind (catchFrame*); +extern void varError(any,any) __attribute__ ((noreturn)); +extern long waitFd(any,int,long); +extern bool wrBytes(int,byte*,int); +extern void wrOpen(any,any,outFrame*); +extern long xCnt(any,any); +extern any xSym(any); +extern void zapZero(any); + +extern any doAbs(any); +extern any doAccept(any); +extern any doAdd(any); +extern any doAlarm(any); +extern any doAll(any); +extern any doAnd(any); +extern any doAny(any); +extern any doAppend(any); +extern any doApply(any); +extern any doArg(any); +extern any doArgs(any); +extern any doArgv(any); +extern any doArrow(any); +extern any doAsoq(any); +extern any doAs(any); +extern any doAssoc(any); +extern any doAt(any); +extern any doAtom(any); +extern any doBind(any); +extern any doBitAnd(any); +extern any doBitOr(any); +extern any doBitQ(any); +extern any doBitXor(any); +extern any doBool(any); +extern any doBox(any); +extern any doBoxQ(any); +extern any doBreak(any); +extern any doBy(any); +extern any doBye(any) __attribute__ ((noreturn)); +extern any doCaaaar(any); +extern any doCaaadr(any); +extern any doCaaar(any); +extern any doCaadar(any); +extern any doCaaddr(any); +extern any doCaadr(any); +extern any doCaar(any); +extern any doCadaar(any); +extern any doCadadr(any); +extern any doCadar(any); +extern any doCaddar(any); +extern any doCadddr(any); +extern any doCaddr(any); +extern any doCadr(any); +extern any doCall(any); +extern any doCar(any); +extern any doCase(any); +extern any doCatch(any); +extern any doCdaaar(any); +extern any doCdaadr(any); +extern any doCdaar(any); +extern any doCdadar(any); +extern any doCdaddr(any); +extern any doCdadr(any); +extern any doCd(any); +extern any doCdar(any); +extern any doCddaar(any); +extern any doCddadr(any); +extern any doCddar(any); +extern any doCdddar(any); +extern any doCddddr(any); +extern any doCdddr(any); +extern any doCddr(any); +extern any doCdr(any); +extern any doChain(any); +extern any doChar(any); +extern any doChop(any); +extern any doCirc(any); +extern any doClip(any); +extern any doClose(any); +extern any doCmd(any); +extern any doCnt(any); +extern any doCol(any); +extern any doCommit(any); +extern any doCon(any); +extern any doConc(any); +extern any doCond(any); +extern any doConnect(any); +extern any doCons(any); +extern any doCopy(any); +extern any doCtl(any); +extern any doCtty(any); +extern any doCut(any); +extern any doDate(any); +extern any doDbck(any); +extern any doDe(any); +extern any doDec(any); +extern any doDef(any); +extern any doDefault(any); +extern any doDel(any); +extern any doDelete(any); +extern any doDelq(any); +extern any doDiff(any); +extern any doDir(any); +extern any doDiv(any); +extern any doDm(any); +extern any doDo(any); +extern any doE(any); +extern any doEcho(any); +extern any doEnv(any); +extern any doEof(any); +extern any doEol(any); +extern any doEq(any); +extern any doEq0(any); +extern any doEqT(any); +extern any doEqual(any); +extern any doEval(any); +extern any doExt(any); +extern any doExtern(any); +extern any doExtQ(any); +extern any doExtra(any); +extern any doExtract(any); +extern any doFifo(any); +extern any doFile(any); +extern any doFill(any); +extern any doFilter(any); +extern any doFin(any); +extern any doFinally(any); +extern any doFind(any); +extern any doFish(any); +extern any doFlgQ(any); +extern any doFlip(any); +extern any doFlush(any); +extern any doFold(any); +extern any doFor(any); +extern any doFork(any); +extern any doFormat(any); +extern any doFree(any); +extern any doFrom(any); +extern any doFull(any); +extern any doFunQ(any); +extern any doGc(any); +extern any doGe(any); +extern any doGe0(any); +extern any doGet(any); +extern any doGetd(any); +extern any doGetl(any); +extern any doGlue(any); +extern any doGt(any); +extern any doGt0(any); +extern any doHead(any); +extern any doHeap(any); +extern any doHear(any); +extern any doHide(any); +extern any doHost(any); +extern any doId(any); +extern any doIdx(any); +extern any doIf(any); +extern any doIf2(any); +extern any doIfn(any); +extern any doIn(any); +extern any doInc(any); +extern any doIndex(any); +extern any doInfo(any); +extern any doIntern(any); +extern any doIpid(any); +extern any doIsa(any); +extern any doJob(any); +extern any doJournal(any); +extern any doKey(any); +extern any doKill(any); +extern any doLast(any); +extern any doLe(any); +extern any doLength(any); +extern any doLet(any); +extern any doLetQ(any); +extern any doLieu(any); +extern any doLine(any); +extern any doLines(any); +extern any doLink(any); +extern any doList(any); +extern any doListen(any); +extern any doLit(any); +extern any doLstQ(any); +extern any doLoad(any); +extern any doLock(any); +extern any doLoop(any); +extern any doLowQ(any); +extern any doLowc(any); +extern any doLt(any); +extern any doLt0(any); +extern any doLup(any); +extern any doMade(any); +extern any doMake(any); +extern any doMap(any); +extern any doMapc(any); +extern any doMapcan(any); +extern any doMapcar(any); +extern any doMapcon(any); +extern any doMaplist(any); +extern any doMaps(any); +extern any doMark(any); +extern any doMatch(any); +extern any doMax(any); +extern any doMaxi(any); +extern any doMember(any); +extern any doMemq(any); +extern any doMeta(any); +extern any doMeth(any); +extern any doMethod(any); +extern any doMin(any); +extern any doMini(any); +extern any doMix(any); +extern any doMmeq(any); +extern any doMul(any); +extern any doMulDiv(any); +extern any doName(any); +extern any doNand(any); +extern any doNEq(any); +extern any doNEq0(any); +extern any doNEqT(any); +extern any doNEqual(any); +extern any doNeed(any); +extern any doNew(any); +extern any doNext(any); +extern any doNil(any); +extern any doNond(any); +extern any doNor(any); +extern any doNot(any); +extern any doNth(any); +extern any doNumQ(any); +extern any doOff(any); +extern any doOffset(any); +extern any doOn(any); +extern any doOne(any); +extern any doOnOff(any); +extern any doOpen(any); +extern any doOpid(any); +extern any doOpt(any); +extern any doOr(any); +extern any doOut(any); +extern any doPack(any); +extern any doPair(any); +extern any doPass(any); +extern any doPath(any); +extern any doPatQ(any); +extern any doPeek(any); +extern any doPick(any); +extern any doPid(any); +extern any doPipe(any); +extern any doPoll(any); +extern any doPool(any); +extern any doPop(any); +extern any doPort(any); +extern any doPr(any); +extern any doPreQ(any); +extern any doPrin(any); +extern any doPrinl(any); +extern any doPrint(any); +extern any doPrintln(any); +extern any doPrintsp(any); +extern any doProg(any); +extern any doProg1(any); +extern any doProg2(any); +extern any doProp(any); +extern any doPropCol(any); +extern any doProtect(any); +extern any doProve(any); +extern any doPush(any); +extern any doPush1(any); +extern any doPut(any); +extern any doPutl(any); +extern any doPwd(any); +extern any doQueue(any); +extern any doQuit(any); +extern any doQuote(any); +extern any doRand(any); +extern any doRange(any); +extern any doRank(any); +extern any doRaw(any); +extern any doRd(any); +extern any doRead(any); +extern any doRem(any); +extern any doReplace(any); +extern any doRest(any); +extern any doReverse(any); +extern any doRewind(any); +extern any doRollback(any); +extern any doRot(any); +extern any doRpc(any); +extern any doRun(any); +extern any doSect(any); +extern any doSeed(any); +extern any doSeek(any); +extern any doSemicol(any); +extern any doSend(any); +extern any doSeq(any); +extern any doSet(any); +extern any doSetCol(any); +extern any doSetq(any); +extern any doShift(any); +extern any doSize(any); +extern any doSkip(any); +extern any doSort(any); +extern any doSpace(any); +extern any doSplit(any); +extern any doSpQ(any); +extern any doState(any); +extern any doStem(any); +extern any doStr(any); +extern any doStrip(any); +extern any doStrQ(any); +extern any doSub(any); +extern any doSubQ(any); +extern any doSum(any); +extern any doSuper(any); +extern any doSym(any); +extern any doSymQ(any); +extern any doSync(any); +extern any doSys(any); +extern any doT(any); +extern any doTail(any); +extern any doTell(any); +extern any doText(any); +extern any doThrow(any); +extern any doTick(any); +extern any doTill(any); +extern any doTime(any); +extern any doTouch(any); +extern any doTrace(any); +extern any doTrim(any); +extern any doTry(any); +extern any doType(any); +extern any doUdp(any); +extern any doUnify(any); +extern any doUnless(any); +extern any doUntil(any); +extern any doUp(any); +extern any doUppQ(any); +extern any doUppc(any); +extern any doUse(any); +extern any doUsec(any); +extern any doVal(any); +extern any doWait(any); +extern any doWhen(any); +extern any doWhile(any); +extern any doWipe(any); +extern any doWith(any); +extern any doWr(any); +extern any doXchg(any); +extern any doXor(any); +extern any doYoke(any); +extern any doZap(any); +extern any doZero(any); static inline long unBox(any x) { long n = unDig(x) / 2; return unDig(x) & 1? -n : n; } Index: test/lib.l =================================================================== --- test/lib.l +++ test/lib.l @@ -3,12 +3,12 @@ ### task ### (test (3 . 4) (let (*Run NIL *A NIL *B NIL) (task -10 0 (setq *A 3)) - (task (port T 4444) (eval (udp @))) - (udp "localhost" 4444 '(setq *B 4)) + (task (port T 4445) (eval (udp @))) + (udp "localhost" 4445 '(setq *B 4)) (wait NIL (and *A *B)) (cons *A *B) ) ) ### timeout ###