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 5a1a9877c07d71c3ea9f58b258411ca5586858a0
parent fc875ca7562a1d6836af9af9014e87a577101cb0
Author: Alexander Burger <abu@software-lab.de>
Date:   Sat, 13 Oct 2012 16:05:48 +0200

Save 'reason' in error handler
Diffstat:
Msrc/main.c | 5++++-
Msrc64/err.l | 18++++++++++++------
Msrc64/tags | 184++++++++++++++++++++++++++++++++++++++++----------------------------------------
3 files changed, 108 insertions(+), 99 deletions(-)

diff --git a/src/main.c b/src/main.c @@ -1,4 +1,4 @@ -/* 01aug12abu +/* 13oct12abu * (c) Software Lab. Alexander Burger */ @@ -501,11 +501,14 @@ void err(any ex, any x, char *fmt, ...) { va_list ap; char msg[240]; outFrame f; + cell c1; va_start(ap,fmt); vsnprintf(msg, sizeof(msg), fmt, ap); va_end(ap); val(Up) = ex ?: Nil; + if (x) + Push(c1, x); if (msg[0]) { any y; catchFrame *p; diff --git a/src64/err.l b/src64/err.l @@ -1,4 +1,4 @@ -# 05oct12abu +# 13oct12abu # (c) Software Lab. Alexander Burger # Debug print routine @@ -31,10 +31,16 @@ # Y message format # Z message parameter (code 'errEXYZ) - link - push E # <L I> Save reason - link - sub S (+ 240 IV) # <S> Message buffer, <S 240> outFrame + null E # Reason? + if nz # Yes + link + push E # Save reason + link + else + push E # Push reason + sub S I # and dummy + end + sub S (+ 240 IV) # <S> Message, <S 240> outFrame, <S (+ 240 V)> reason cc snprintf(S 240 Y Z) # Build message null X # Error context? ld A Nil @@ -113,7 +119,7 @@ call printE # Print context call newline end - ld E (L I) # Get reason + ld E (S (+ 240 V)) # Get reason null E # any? if nz # Yes call printE # Print reason diff --git a/src64/tags b/src64/tags @@ -416,13 +416,13 @@ anduAE_A big.l 325 anonymousX_FE io.l 2085 applyVarXYZ_E apply.l 358 applyXYZ_E apply.l 4 -argErrAX err.l 406 -argErrEX err.l 408 -atomErrAX err.l 444 -atomErrEX err.l 446 -badDotErrE err.l 553 -badFdErrEX err.l 525 -badInputErrB err.l 545 +argErrAX err.l 412 +argErrEX err.l 414 +atomErrAX err.l 450 +atomErrEX err.l 452 +badDotErrE err.l 559 +badFdErrEX err.l 531 +badInputErrB err.l 551 balanceCEY sym.l 910 balanceXY sym.l 892 begString main.l 2305 @@ -437,7 +437,7 @@ boxNum_A gc.l 824 boxNum_C gc.l 836 boxNum_E gc.l 848 boxNum_X gc.l 860 -brkErrX err.l 494 +brkErrX err.l 500 brkLoadE_E flow.l 2856 bufAoAC_C db.l 956 bufStringE_SZ io.l 1143 @@ -472,15 +472,15 @@ cbl7 main.l 1965 cbl8 main.l 1969 cbl9 main.l 1973 charSymACX_CX io.l 1257 -checkVarAX err.l 365 -checkVarEX err.l 381 -checkVarYX err.l 373 +checkVarAX err.l 371 +checkVarEX err.l 387 +checkVarYX err.l 379 chopExtNmX_E db.l 133 circE_YF main.l 740 cleanUpY db.l 570 closeAX io.l 5 -closeErrEX err.l 506 -closeErrX err.l 504 +closeErrEX err.l 512 +closeErrX err.l 510 closeInFileA io.l 142 closeOnExecAX io.l 43 closeOutFileA io.l 164 @@ -490,9 +490,9 @@ cmpLongAX_F sym.l 5 cmpNumAE_F big.l 1567 cmpUserAX_F subr.l 4125 cmpuAE_F big.l 1587 -cntErrAX err.l 418 -cntErrCX err.l 420 -cntErrEX err.l 422 +cntErrAX err.l 424 +cntErrCX err.l 426 +cntErrEX err.l 428 compareAE_F main.l 905 consAC_E gc.l 786 consA_A gc.l 530 @@ -536,22 +536,22 @@ dateXYZ_E main.l 2420 dbAEX db.l 1331 dbFetchEX db.l 1319 dbFileBlkY_AC db.l 246 -dbRdErr err.l 628 -dbSizErr err.l 640 +dbRdErr err.l 634 +dbSizErr err.l 646 dbSizeX_A db.l 1224 -dbSyncErrX err.l 597 +dbSyncErrX err.l 603 dbTouchEX db.l 1445 -dbWrErr err.l 634 +dbWrErr err.l 640 dbZapE db.l 1477 dbfBuf_AF db.l 51 -dbfErrX err.l 613 +dbfErrX err.l 619 dbgS err.l 5 decE_A big.l 1504 divDone big.l 1255 -divErrX err.l 462 +divErrX err.l 468 divUnder big.l 1261 divuAE_A big.l 1045 -dlErrX err.l 697 +dlErrX err.l 703 doAbs big.l 2731 doAccept net.l 145 doAdd big.l 2171 @@ -910,7 +910,7 @@ doYoke subr.l 1196 doZap sym.l 1186 doZero sym.l 1756 endString_E main.l 2316 -eofErr err.l 534 +eofErr err.l 540 eolA_F io.l 3684 equalAE_F main.l 772 erOpenEXY io.l 1629 @@ -928,7 +928,7 @@ evSymX_E main.l 2214 evSymY_E main.l 2217 execE main.l 2128 execErrS main.l 187 -extErrEX err.l 434 +extErrEX err.l 440 extNmCE_X db.l 64 externX_E sym.l 266 extraXY_FCYZ flow.l 1285 @@ -951,7 +951,7 @@ fmtNum0AE_E big.l 1794 fmtNumAE_E big.l 1797 fmtScaleCX_CX big.l 2061 fmtWordACX_CX big.l 2046 -forkErrX err.l 515 +forkErrX err.l 521 forkLispX_FE flow.l 3266 fsyncDB db.l 932 funqE_FE main.l 2152 @@ -969,7 +969,7 @@ giveupX main.l 180 halfA_A big.l 87 heapAlloc main.l 217 iSignalCE main.l 192 -idErrXL err.l 623 +idErrXL err.l 629 idxDelXY_E sym.l 2292 idxGetXY_E sym.l 2205 idxPutXY_E sym.l 2222 @@ -982,24 +982,24 @@ initInFileCA_A io.l 67 initOutFileA_A io.l 106 initSeedE_E big.l 2927 internEXY_FE sym.l 75 -ipBindErrX err.l 672 -ipGetsocknameErrX err.l 657 -ipListenErrX err.l 677 -ipReuseaddrErrX err.l 667 -ipSocketErrX err.l 652 -ipV6onlyErrX err.l 662 +ipBindErrX err.l 678 +ipGetsocknameErrX err.l 663 +ipListenErrX err.l 683 +ipReuseaddrErrX err.l 673 +ipSocketErrX err.l 658 +ipV6onlyErrX err.l 668 isBlankE_F sym.l 704 isInternEXY_F sym.l 37 isLetterOrDigitA_F sym.l 3584 isLifeE_F db.l 525 isaCE_F flow.l 1012 -jnlErrX err.l 618 +jnlErrX err.l 624 jnlFileno_A db.l 344 joinLocalCX flow.l 2837 lisp main.l 2082 loadAllX_E main.l 162 loadBEX_E io.l 4072 -lockErr err.l 607 +lockErr err.l 613 lockFileAC io.l 28 lockJnl db.l 352 logBlock db.l 432 @@ -1007,11 +1007,11 @@ logFileno_A db.l 348 lookupCE_E subr.l 3872 loopX flow.l 2167 loopY_FE flow.l 2406 -lstErrAX err.l 450 -lstErrEX err.l 452 +lstErrAX err.l 456 +lstErrEX err.l 458 lupCE_E subr.l 3815 main main.l 33 -makeErrX err.l 471 +makeErrX err.l 477 markE gc.l 5 matchCE_F subr.l 3147 memberXY_FY main.l 1067 @@ -1021,9 +1021,9 @@ mkCharA_A sym.l 573 mkStrEZ_A sym.l 650 mkStrE_E sym.l 623 msec_A main.l 2330 -msgErrAX err.l 488 -msgErrEX err.l 490 -msgErrYX err.l 486 +msgErrAX err.l 494 +msgErrEX err.l 496 +msgErrYX err.l 492 muluAE_A big.l 859 nameA_A sym.l 469 nameE_E sym.l 477 @@ -1032,19 +1032,19 @@ nameY_Y sym.l 493 natBufACZ_CZ main.l 1582 natRetACE_CE main.l 1681 needC gc.l 54 -needSymAX err.l 323 -needSymEX err.l 335 -needVarAX err.l 346 -needVarEX err.l 356 +needSymAX err.l 329 +needSymEX err.l 341 +needVarAX err.l 352 +needVarEX err.l 362 newBlock_X db.l 449 newIdEX_X db.l 492 newline io.l 4665 -noFdErrX err.l 529 +noFdErrX err.l 535 nonblockingA_A io.l 51 -numErrAX err.l 412 -numErrEX err.l 414 +numErrAX err.l 418 +numErrEX err.l 420 oct3C_CA db.l 180 -openErrEX err.l 500 +openErrEX err.l 506 oruAE_A big.l 394 outAoA io.l 4714 outNameE io.l 4738 @@ -1057,12 +1057,12 @@ 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 +pairErrAX err.l 444 +pairErrEX err.l 446 parseBCE_E io.l 3893 pathStringE_SZ io.l 1173 pico glob.l 142 -pipeErrX err.l 510 +pipeErrX err.l 516 popCtlFiles io.l 1962 popErrFiles io.l 1955 popInFiles io.l 1864 @@ -1079,7 +1079,7 @@ prinE_E io.l 4978 printE io.l 4765 printE_E io.l 4756 propEC_E sym.l 2745 -protErrEX err.l 386 +protErrEX err.l 392 pushCtlFilesY io.l 1859 pushErrFilesY io.l 1854 pushInFilesY io.l 1819 @@ -1108,26 +1108,26 @@ readA_E io.l 2308 readC_E io.l 2492 redefMsgEC flow.l 4 redefineCE flow.l 109 -reentErrEX err.l 476 +reentErrEX err.l 482 remDone big.l 1479 remUnder big.l 1485 remuAE_A big.l 1266 -renErrEX err.l 467 +renErrEX err.l 473 restart main.l 154 resumeCoroutine flow.l 2563 -ret err.l 705 -retE_E err.l 728 -retNil err.l 722 -retNull err.l 719 -retT err.l 725 -retc err.l 707 -retnc err.l 710 -retnz err.l 716 -retz err.l 713 +ret err.l 711 +retE_E err.l 734 +retNil err.l 728 +retNull err.l 725 +retT err.l 731 +retc err.l 713 +retnc err.l 716 +retnz err.l 722 +retz err.l 719 rewindLog db.l 928 runE_E main.l 2140 rwUnlockDbA db.l 269 -selectErrX err.l 558 +selectErrX err.l 564 serverCEY_FE net.l 273 setAdrAS db.l 36 setAdrAZ db.l 22 @@ -1151,76 +1151,76 @@ slowNbC_FA io.l 207 slowZ_F io.l 185 space io.l 4669 stdinByte_A io.l 426 -stkErr err.l 395 -stkErrE err.l 397 -stkErrEX err.l 401 -stkErrX err.l 399 +stkErr err.l 401 +stkErrE err.l 403 +stkErrEX err.l 407 +stkErrX err.l 405 subAE_A big.l 1542 subStrAE_F sym.l 1485 subuAE_A big.l 682 -suparErrE err.l 540 +suparErrE err.l 546 symByteCX_FACX io.l 1089 symCharCX_FACX io.l 1110 -symErrAX err.l 426 -symErrEX err.l 430 -symErrYX err.l 428 -symNsErrEX err.l 390 +symErrAX err.l 432 +symErrEX err.l 436 +symErrYX err.l 434 +symNsErrEX err.l 396 symToNumXA_FE big.l 1681 tcSetC main.l 388 tcpAcceptA_FE net.l 109 tellBegZ_Z io.l 1005 tellEndAZ io.l 1012 -tellErr err.l 646 +tellErr err.l 652 tenfoldA_A big.l 157 testEscA_F io.l 2051 throwErrZX flow.l 2507 tmDateC_E main.l 2410 tmTimeY_E main.l 2597 tokenCE_E io.l 2522 -trSyncErrX err.l 602 +trSyncErrX err.l 608 traceCY flow.l 3022 trimE_E subr.l 1769 -truncErrX err.l 592 +truncErrX err.l 598 truncLog db.l 947 tryLockCE_FA db.l 299 twiceA_A big.l 47 twiceBigA_A big.l 57 -udpOvflErr err.l 682 +udpOvflErr err.l 688 unLockFileAC io.l 15 unLockJnl db.l 357 -undefinedCE err.l 689 -undefinedCX err.l 691 -undefinedEX err.l 693 +undefinedCE err.l 695 +undefinedCX err.l 697 +undefinedEX err.l 699 uniFillE_E subr.l 3886 unifyCEYZ_F subr.l 3364 uninternEXY sym.l 356 unsync io.l 1059 -unwindC_Z err.l 165 -varErrAX err.l 456 -varErrEX err.l 458 +unwindC_Z err.l 171 +varErrAX err.l 462 +varErrEX err.l 464 waitFdCEX_A io.l 2764 -waitPidErrX err.l 520 +waitPidErrX err.l 526 wifsignaledS_F sys/x86-64.linux.code.l 21 wifstoppedS_F sys/x86-64.linux.code.l 16 wipeE sym.l 3275 wrBlockZ db.l 398 wrBytesCEX_F io.l 317 -wrBytesErr err.l 563 +wrBytesErr err.l 569 wrChildCXY io.l 353 -wrChildErr err.l 569 -wrJnlErr err.l 580 +wrChildErr err.l 575 +wrJnlErr err.l 586 wrLockDb db.l 262 wrLockFileC io.l 23 -wrLogErr err.l 586 +wrLogErr err.l 592 wrOpenEXY io.l 1496 wrSetCL_F io.l 2737 -wrSyncErrX err.l 575 +wrSyncErrX err.l 581 wtermsigS_A sys/x86-64.linux.code.l 28 xCntAX_FA main.l 2264 xCntCX_FC main.l 2255 xCntEX_FE main.l 2246 xSymE_E main.l 2221 xoruAE_A big.l 465 -yieldErrEX err.l 482 -yieldErrX err.l 480 +yieldErrEX err.l 488 +yieldErrX err.l 486 zapZeroA_A big.l 6