home *** CD-ROM | disk | FTP | other *** search
open in:
MacOS 8.1
|
Win98
|
DOS
browse contents |
view JSON data
|
view as text
This file was processed as: SHell self-extracting ARchive
(archive/shar).
Confidence | Program | Detection | Match Type | Support
|
---|
100%
| dexvert
| SHell self-extracting ARchive (archive/shar)
| magic
| Supported |
1%
| dexvert
| Text File (text/txt)
| fallback
| Supported |
100%
| file
| ASCII text
| default
| |
100%
| checkBytes
| Printable ASCII
| default
| |
100%
| perlTextCheck
| Likely Text (Perl)
| default
| |
100%
| siegfried
| fmt/329 Shell Archive Format
| default
| |
100%
| detectItEasy
| Format: plain text[LF]
| default (weak)
|
|
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 4e 65 77 73 67 72 6f 75 | 70 73 3a 20 63 6f 6d 70 |Newsgrou|ps: comp|
|00000010| 2e 73 6f 75 72 63 65 73 | 2e 6d 69 73 63 0a 6f 72 |.sources|.misc.or|
|00000020| 67 61 6e 69 7a 61 74 69 | 6f 6e 3a 20 43 6f 67 6e |ganizati|on: Cogn|
|00000030| 6f 73 20 49 6e 63 2e 2c | 20 4f 74 74 61 77 61 2c |os Inc.,| Ottawa,|
|00000040| 20 43 61 6e 61 64 61 0a | 73 75 62 6a 65 63 74 3a | Canada.|subject:|
|00000050| 20 76 31 30 69 30 39 34 | 3a 20 58 4c 69 73 50 20 | v10i094|: XLisP |
|00000060| 32 2e 31 20 73 6f 75 72 | 63 65 73 20 34 61 20 28 |2.1 sour|ces 4a (|
|00000070| 31 2f 32 29 20 2f 20 35 | 0a 46 72 6f 6d 3a 20 67 |1/2) / 5|.From: g|
|00000080| 61 72 79 6d 40 63 6f 67 | 6e 6f 73 2e 55 55 43 50 |arym@cog|nos.UUCP|
|00000090| 20 28 47 61 72 79 20 4d | 75 72 70 68 79 29 0a 53 | (Gary M|urphy).S|
|000000a0| 65 6e 64 65 72 3a 20 61 | 6c 6c 62 65 72 79 40 75 |ender: a|llbery@u|
|000000b0| 75 6e 65 74 2e 55 55 2e | 4e 45 54 20 28 42 72 61 |unet.UU.|NET (Bra|
|000000c0| 6e 64 6f 6e 20 53 2e 20 | 41 6c 6c 62 65 72 79 20 |ndon S. |Allbery |
|000000d0| 2d 20 63 6f 6d 70 2e 73 | 6f 75 72 63 65 73 2e 6d |- comp.s|ources.m|
|000000e0| 69 73 63 29 0a 0a 50 6f | 73 74 69 6e 67 2d 6e 75 |isc)..Po|sting-nu|
|000000f0| 6d 62 65 72 3a 20 56 6f | 6c 75 6d 65 20 31 30 2c |mber: Vo|lume 10,|
|00000100| 20 49 73 73 75 65 20 39 | 34 0a 53 75 62 6d 69 74 | Issue 9|4.Submit|
|00000110| 74 65 64 2d 62 79 3a 20 | 67 61 72 79 6d 40 63 6f |ted-by: |garym@co|
|00000120| 67 6e 6f 73 2e 55 55 43 | 50 20 28 47 61 72 79 20 |gnos.UUC|P (Gary |
|00000130| 4d 75 72 70 68 79 29 0a | 41 72 63 68 69 76 65 2d |Murphy).|Archive-|
|00000140| 6e 61 6d 65 3a 20 78 6c | 69 73 70 32 31 2f 70 61 |name: xl|isp21/pa|
|00000150| 72 74 30 37 0a 0a 23 21 | 2f 62 69 6e 2f 73 68 0a |rt07..#!|/bin/sh.|
|00000160| 23 20 54 68 69 73 20 69 | 73 20 61 20 73 68 65 6c |# This i|s a shel|
|00000170| 6c 20 61 72 63 68 69 76 | 65 2c 20 6d 65 61 6e 69 |l archiv|e, meani|
|00000180| 6e 67 3a 0a 23 20 31 2e | 20 52 65 6d 6f 76 65 20 |ng:.# 1.| Remove |
|00000190| 65 76 65 72 79 74 68 69 | 6e 67 20 61 62 6f 76 65 |everythi|ng above|
|000001a0| 20 74 68 65 20 23 21 2f | 62 69 6e 2f 73 68 20 6c | the #!/|bin/sh l|
|000001b0| 69 6e 65 2e 0a 23 20 32 | 2e 20 53 61 76 65 20 74 |ine..# 2|. Save t|
|000001c0| 68 65 20 72 65 73 75 6c | 74 69 6e 67 20 74 65 78 |he resul|ting tex|
|000001d0| 74 20 69 6e 20 61 20 66 | 69 6c 65 2e 0a 23 20 33 |t in a f|ile..# 3|
|000001e0| 2e 20 45 78 65 63 75 74 | 65 20 74 68 65 20 66 69 |. Execut|e the fi|
|000001f0| 6c 65 20 77 69 74 68 20 | 2f 62 69 6e 2f 73 68 20 |le with |/bin/sh |
|00000200| 28 6e 6f 74 20 63 73 68 | 29 20 74 6f 20 63 72 65 |(not csh|) to cre|
|00000210| 61 74 65 20 74 68 65 20 | 66 69 6c 65 73 3a 0a 23 |ate the |files:.#|
|00000220| 09 78 6c 6a 75 6d 70 2e | 63 0a 23 09 78 6c 6c 69 |.xljump.|c.#.xlli|
|00000230| 73 74 2e 63 0a 23 09 78 | 6c 6d 61 74 68 2e 63 0a |st.c.#.x|lmath.c.|
|00000240| 23 09 78 6c 6f 62 6a 2e | 63 0a 23 09 78 6c 70 70 |#.xlobj.|c.#.xlpp|
|00000250| 2e 63 0a 23 09 78 6c 70 | 72 69 6e 2e 63 0a 23 20 |.c.#.xlp|rin.c.# |
|00000260| 54 68 69 73 20 61 72 63 | 68 69 76 65 20 63 72 65 |This arc|hive cre|
|00000270| 61 74 65 64 3a 20 53 75 | 6e 20 46 65 62 20 31 38 |ated: Su|n Feb 18|
|00000280| 20 32 33 3a 34 30 3a 31 | 31 20 31 39 39 30 0a 23 | 23:40:1|1 1990.#|
|00000290| 20 42 79 3a 09 47 61 72 | 79 20 4d 75 72 70 68 79 | By:.Gar|y Murphy|
|000002a0| 20 28 29 0a 65 78 70 6f | 72 74 20 50 41 54 48 3b | ().expo|rt PATH;|
|000002b0| 20 50 41 54 48 3d 2f 62 | 69 6e 3a 24 50 41 54 48 | PATH=/b|in:$PATH|
|000002c0| 0a 65 63 68 6f 20 73 68 | 61 72 3a 20 65 78 74 72 |.echo sh|ar: extr|
|000002d0| 61 63 74 69 6e 67 20 22 | 27 78 6c 6a 75 6d 70 2e |acting "|'xljump.|
|000002e0| 63 27 22 20 27 28 33 38 | 38 39 20 63 68 61 72 61 |c'" '(38|89 chara|
|000002f0| 63 74 65 72 73 29 27 0a | 69 66 20 74 65 73 74 20 |cters)'.|if test |
|00000300| 2d 66 20 27 78 6c 6a 75 | 6d 70 2e 63 27 0a 74 68 |-f 'xlju|mp.c'.th|
|00000310| 65 6e 0a 09 65 63 68 6f | 20 73 68 61 72 3a 20 6f |en..echo| shar: o|
|00000320| 76 65 72 2d 77 72 69 74 | 69 6e 67 20 65 78 69 73 |ver-writ|ing exis|
|00000330| 74 69 6e 67 20 66 69 6c | 65 20 22 27 78 6c 6a 75 |ting fil|e "'xlju|
|00000340| 6d 70 2e 63 27 22 0a 66 | 69 0a 73 65 64 20 27 73 |mp.c'".f|i.sed 's|
|00000350| 2f 5e 58 2f 2f 27 20 3c | 3c 20 5c 53 48 41 52 5f |/^X//' <|< \SHAR_|
|00000360| 45 4f 46 20 3e 20 27 78 | 6c 6a 75 6d 70 2e 63 27 |EOF > 'x|ljump.c'|
|00000370| 0a 58 2f 2a 20 78 6c 6a | 75 6d 70 20 2d 20 65 78 |.X/* xlj|ump - ex|
|00000380| 65 63 75 74 69 6f 6e 20 | 63 6f 6e 74 65 78 74 20 |ecution |context |
|00000390| 72 6f 75 74 69 6e 65 73 | 20 2a 2f 0a 58 2f 2a 09 |routines| */.X/*.|
|000003a0| 43 6f 70 79 72 69 67 68 | 74 20 28 63 29 20 31 39 |Copyrigh|t (c) 19|
|000003b0| 38 35 2c 20 62 79 20 44 | 61 76 69 64 20 4d 69 63 |85, by D|avid Mic|
|000003c0| 68 61 65 6c 20 42 65 74 | 7a 0a 58 09 41 6c 6c 20 |hael Bet|z.X.All |
|000003d0| 52 69 67 68 74 73 20 52 | 65 73 65 72 76 65 64 0a |Rights R|eserved.|
|000003e0| 58 09 50 65 72 6d 69 73 | 73 69 6f 6e 20 69 73 20 |X.Permis|sion is |
|000003f0| 67 72 61 6e 74 65 64 20 | 66 6f 72 20 75 6e 72 65 |granted |for unre|
|00000400| 73 74 72 69 63 74 65 64 | 20 6e 6f 6e 2d 63 6f 6d |stricted| non-com|
|00000410| 6d 65 72 63 69 61 6c 20 | 75 73 65 09 2a 2f 0a 58 |mercial |use.*/.X|
|00000420| 0a 58 23 69 6e 63 6c 75 | 64 65 20 22 78 6c 69 73 |.X#inclu|de "xlis|
|00000430| 70 2e 68 22 0a 58 0a 58 | 2f 2a 20 65 78 74 65 72 |p.h".X.X|/* exter|
|00000440| 6e 61 6c 20 76 61 72 69 | 61 62 6c 65 73 20 2a 2f |nal vari|ables */|
|00000450| 0a 58 65 78 74 65 72 6e | 20 43 4f 4e 54 45 58 54 |.Xextern| CONTEXT|
|00000460| 20 2a 78 6c 63 6f 6e 74 | 65 78 74 2c 2a 78 6c 74 | *xlcont|ext,*xlt|
|00000470| 61 72 67 65 74 3b 0a 58 | 65 78 74 65 72 6e 20 4c |arget;.X|extern L|
|00000480| 56 41 4c 20 78 6c 76 61 | 6c 75 65 2c 78 6c 65 6e |VAL xlva|lue,xlen|
|00000490| 76 2c 78 6c 66 65 6e 76 | 2c 78 6c 64 65 6e 76 3b |v,xlfenv|,xldenv;|
|000004a0| 0a 58 65 78 74 65 72 6e | 20 69 6e 74 20 78 6c 6d |.Xextern| int xlm|
|000004b0| 61 73 6b 3b 0a 58 0a 58 | 2f 2a 20 78 6c 62 65 67 |ask;.X.X|/* xlbeg|
|000004c0| 69 6e 20 2d 20 62 65 67 | 69 6e 6e 69 6e 67 20 6f |in - beg|inning o|
|000004d0| 66 20 61 6e 20 65 78 65 | 63 75 74 69 6f 6e 20 63 |f an exe|cution c|
|000004e0| 6f 6e 74 65 78 74 20 2a | 2f 0a 58 78 6c 62 65 67 |ontext *|/.Xxlbeg|
|000004f0| 69 6e 28 63 70 74 72 2c | 66 6c 61 67 73 2c 65 78 |in(cptr,|flags,ex|
|00000500| 70 72 29 0a 58 20 20 43 | 4f 4e 54 45 58 54 20 2a |pr).X C|ONTEXT *|
|00000510| 63 70 74 72 3b 20 69 6e | 74 20 66 6c 61 67 73 3b |cptr; in|t flags;|
|00000520| 20 4c 56 41 4c 20 65 78 | 70 72 3b 0a 58 7b 0a 58 | LVAL ex|pr;.X{.X|
|00000530| 20 20 20 20 63 70 74 72 | 2d 3e 63 5f 66 6c 61 67 | cptr|->c_flag|
|00000540| 73 20 3d 20 66 6c 61 67 | 73 3b 0a 58 20 20 20 20 |s = flag|s;.X |
|00000550| 63 70 74 72 2d 3e 63 5f | 65 78 70 72 20 3d 20 65 |cptr->c_|expr = e|
|00000560| 78 70 72 3b 0a 58 20 20 | 20 20 63 70 74 72 2d 3e |xpr;.X | cptr->|
|00000570| 63 5f 78 6c 73 74 61 63 | 6b 20 3d 20 78 6c 73 74 |c_xlstac|k = xlst|
|00000580| 61 63 6b 3b 0a 58 20 20 | 20 20 63 70 74 72 2d 3e |ack;.X | cptr->|
|00000590| 63 5f 78 6c 65 6e 76 20 | 3d 20 78 6c 65 6e 76 3b |c_xlenv |= xlenv;|
|000005a0| 0a 58 20 20 20 20 63 70 | 74 72 2d 3e 63 5f 78 6c |.X cp|tr->c_xl|
|000005b0| 66 65 6e 76 20 3d 20 78 | 6c 66 65 6e 76 3b 0a 58 |fenv = x|lfenv;.X|
|000005c0| 20 20 20 20 63 70 74 72 | 2d 3e 63 5f 78 6c 64 65 | cptr|->c_xlde|
|000005d0| 6e 76 20 3d 20 78 6c 64 | 65 6e 76 3b 0a 58 20 20 |nv = xld|env;.X |
|000005e0| 20 20 63 70 74 72 2d 3e | 63 5f 78 6c 63 6f 6e 74 | cptr->|c_xlcont|
|000005f0| 65 78 74 20 3d 20 78 6c | 63 6f 6e 74 65 78 74 3b |ext = xl|context;|
|00000600| 0a 58 20 20 20 20 63 70 | 74 72 2d 3e 63 5f 78 6c |.X cp|tr->c_xl|
|00000610| 61 72 67 76 20 3d 20 78 | 6c 61 72 67 76 3b 0a 58 |argv = x|largv;.X|
|00000620| 20 20 20 20 63 70 74 72 | 2d 3e 63 5f 78 6c 61 72 | cptr|->c_xlar|
|00000630| 67 63 20 3d 20 78 6c 61 | 72 67 63 3b 0a 58 20 20 |gc = xla|rgc;.X |
|00000640| 20 20 63 70 74 72 2d 3e | 63 5f 78 6c 66 70 20 3d | cptr->|c_xlfp =|
|00000650| 20 78 6c 66 70 3b 0a 58 | 20 20 20 20 63 70 74 72 | xlfp;.X| cptr|
|00000660| 2d 3e 63 5f 78 6c 73 70 | 20 3d 20 78 6c 73 70 3b |->c_xlsp| = xlsp;|
|00000670| 0a 58 20 20 20 20 78 6c | 63 6f 6e 74 65 78 74 20 |.X xl|context |
|00000680| 3d 20 63 70 74 72 3b 0a | 58 7d 0a 58 0a 58 2f 2a |= cptr;.|X}.X.X/*|
|00000690| 20 78 6c 65 6e 64 20 2d | 20 65 6e 64 20 6f 66 20 | xlend -| end of |
|000006a0| 61 6e 20 65 78 65 63 75 | 74 69 6f 6e 20 63 6f 6e |an execu|tion con|
|000006b0| 74 65 78 74 20 2a 2f 0a | 58 78 6c 65 6e 64 28 63 |text */.|Xxlend(c|
|000006c0| 70 74 72 29 0a 58 20 20 | 43 4f 4e 54 45 58 54 20 |ptr).X |CONTEXT |
|000006d0| 2a 63 70 74 72 3b 0a 58 | 7b 0a 58 20 20 20 20 78 |*cptr;.X|{.X x|
|000006e0| 6c 63 6f 6e 74 65 78 74 | 20 3d 20 63 70 74 72 2d |lcontext| = cptr-|
|000006f0| 3e 63 5f 78 6c 63 6f 6e | 74 65 78 74 3b 0a 58 7d |>c_xlcon|text;.X}|
|00000700| 0a 58 0a 58 2f 2a 20 78 | 6c 67 6f 20 2d 20 67 6f |.X.X/* x|lgo - go|
|00000710| 20 74 6f 20 61 20 6c 61 | 62 65 6c 20 2a 2f 0a 58 | to a la|bel */.X|
|00000720| 78 6c 67 6f 28 6c 61 62 | 65 6c 29 0a 58 20 20 4c |xlgo(lab|el).X L|
|00000730| 56 41 4c 20 6c 61 62 65 | 6c 3b 0a 58 7b 0a 58 20 |VAL labe|l;.X{.X |
|00000740| 20 20 20 43 4f 4e 54 45 | 58 54 20 2a 63 70 74 72 | CONTE|XT *cptr|
|00000750| 3b 0a 58 20 20 20 20 4c | 56 41 4c 20 2a 61 72 67 |;.X L|VAL *arg|
|00000760| 76 3b 0a 58 20 20 20 20 | 69 6e 74 20 61 72 67 63 |v;.X |int argc|
|00000770| 3b 0a 58 0a 58 20 20 20 | 20 2f 2a 20 66 69 6e 64 |;.X.X | /* find|
|00000780| 20 61 20 74 61 67 62 6f | 64 79 20 63 6f 6e 74 65 | a tagbo|dy conte|
|00000790| 78 74 20 2a 2f 0a 58 20 | 20 20 20 66 6f 72 20 28 |xt */.X | for (|
|000007a0| 63 70 74 72 20 3d 20 78 | 6c 63 6f 6e 74 65 78 74 |cptr = x|lcontext|
|000007b0| 3b 20 63 70 74 72 3b 20 | 63 70 74 72 20 3d 20 63 |; cptr; |cptr = c|
|000007c0| 70 74 72 2d 3e 63 5f 78 | 6c 63 6f 6e 74 65 78 74 |ptr->c_x|lcontext|
|000007d0| 29 0a 58 09 69 66 20 28 | 63 70 74 72 2d 3e 63 5f |).X.if (|cptr->c_|
|000007e0| 66 6c 61 67 73 20 26 20 | 43 46 5f 47 4f 29 20 7b |flags & |CF_GO) {|
|000007f0| 0a 58 09 20 20 20 20 61 | 72 67 63 20 3d 20 63 70 |.X. a|rgc = cp|
|00000800| 74 72 2d 3e 63 5f 78 6c | 61 72 67 63 3b 0a 58 09 |tr->c_xl|argc;.X.|
|00000810| 20 20 20 20 61 72 67 76 | 20 3d 20 63 70 74 72 2d | argv| = cptr-|
|00000820| 3e 63 5f 78 6c 61 72 67 | 76 3b 0a 58 09 20 20 20 |>c_xlarg|v;.X. |
|00000830| 20 77 68 69 6c 65 20 28 | 2d 2d 61 72 67 63 20 3e | while (|--argc >|
|00000840| 3d 20 30 29 0a 58 09 09 | 69 66 20 28 2a 61 72 67 |= 0).X..|if (*arg|
|00000850| 76 2b 2b 20 3d 3d 20 6c | 61 62 65 6c 29 20 7b 0a |v++ == l|abel) {.|
|00000860| 58 09 09 20 20 20 20 63 | 70 74 72 2d 3e 63 5f 78 |X.. c|ptr->c_x|
|00000870| 6c 61 72 67 63 20 3d 20 | 61 72 67 63 3b 0a 58 09 |largc = |argc;.X.|
|00000880| 09 20 20 20 20 63 70 74 | 72 2d 3e 63 5f 78 6c 61 |. cpt|r->c_xla|
|00000890| 72 67 76 20 3d 20 61 72 | 67 76 3b 0a 58 09 09 20 |rgv = ar|gv;.X.. |
|000008a0| 20 20 20 78 6c 6a 75 6d | 70 28 63 70 74 72 2c 43 | xljum|p(cptr,C|
|000008b0| 46 5f 47 4f 2c 4e 49 4c | 29 3b 0a 58 09 09 7d 0a |F_GO,NIL|);.X..}.|
|000008c0| 58 09 7d 0a 58 20 20 20 | 20 78 6c 66 61 69 6c 28 |X.}.X | xlfail(|
|000008d0| 22 6e 6f 20 74 61 72 67 | 65 74 20 66 6f 72 20 47 |"no targ|et for G|
|000008e0| 4f 22 29 3b 0a 58 7d 0a | 58 0a 58 2f 2a 20 78 6c |O");.X}.|X.X/* xl|
|000008f0| 72 65 74 75 72 6e 20 2d | 20 72 65 74 75 72 6e 20 |return -| return |
|00000900| 66 72 6f 6d 20 61 20 62 | 6c 6f 63 6b 20 2a 2f 0a |from a b|lock */.|
|00000910| 58 78 6c 72 65 74 75 72 | 6e 28 6e 61 6d 65 2c 76 |Xxlretur|n(name,v|
|00000920| 61 6c 29 0a 58 20 20 4c | 56 41 4c 20 6e 61 6d 65 |al).X L|VAL name|
|00000930| 2c 76 61 6c 3b 0a 58 7b | 0a 58 20 20 20 20 43 4f |,val;.X{|.X CO|
|00000940| 4e 54 45 58 54 20 2a 63 | 70 74 72 3b 0a 58 0a 58 |NTEXT *c|ptr;.X.X|
|00000950| 20 20 20 20 2f 2a 20 66 | 69 6e 64 20 61 20 62 6c | /* f|ind a bl|
|00000960| 6f 63 6b 20 63 6f 6e 74 | 65 78 74 20 2a 2f 0a 58 |ock cont|ext */.X|
|00000970| 20 20 20 20 66 6f 72 20 | 28 63 70 74 72 20 3d 20 | for |(cptr = |
|00000980| 78 6c 63 6f 6e 74 65 78 | 74 3b 20 63 70 74 72 3b |xlcontex|t; cptr;|
|00000990| 20 63 70 74 72 20 3d 20 | 63 70 74 72 2d 3e 63 5f | cptr = |cptr->c_|
|000009a0| 78 6c 63 6f 6e 74 65 78 | 74 29 0a 58 09 69 66 20 |xlcontex|t).X.if |
|000009b0| 28 63 70 74 72 2d 3e 63 | 5f 66 6c 61 67 73 20 26 |(cptr->c|_flags &|
|000009c0| 20 43 46 5f 52 45 54 55 | 52 4e 20 26 26 20 63 70 | CF_RETU|RN && cp|
|000009d0| 74 72 2d 3e 63 5f 65 78 | 70 72 20 3d 3d 20 6e 61 |tr->c_ex|pr == na|
|000009e0| 6d 65 29 0a 58 09 20 20 | 20 20 78 6c 6a 75 6d 70 |me).X. | xljump|
|000009f0| 28 63 70 74 72 2c 43 46 | 5f 52 45 54 55 52 4e 2c |(cptr,CF|_RETURN,|
|00000a00| 76 61 6c 29 3b 0a 58 20 | 20 20 20 78 6c 66 61 69 |val);.X | xlfai|
|00000a10| 6c 28 22 6e 6f 20 74 61 | 72 67 65 74 20 66 6f 72 |l("no ta|rget for|
|00000a20| 20 52 45 54 55 52 4e 22 | 29 3b 0a 58 7d 0a 58 0a | RETURN"|);.X}.X.|
|00000a30| 58 2f 2a 20 78 6c 74 68 | 72 6f 77 20 2d 20 74 68 |X/* xlth|row - th|
|00000a40| 72 6f 77 20 74 6f 20 61 | 20 63 61 74 63 68 20 2a |row to a| catch *|
|00000a50| 2f 0a 58 78 6c 74 68 72 | 6f 77 28 74 61 67 2c 76 |/.Xxlthr|ow(tag,v|
|00000a60| 61 6c 29 0a 58 20 20 4c | 56 41 4c 20 74 61 67 2c |al).X L|VAL tag,|
|00000a70| 76 61 6c 3b 0a 58 7b 0a | 58 20 20 20 20 43 4f 4e |val;.X{.|X CON|
|00000a80| 54 45 58 54 20 2a 63 70 | 74 72 3b 0a 58 0a 58 20 |TEXT *cp|tr;.X.X |
|00000a90| 20 20 20 2f 2a 20 66 69 | 6e 64 20 61 20 63 61 74 | /* fi|nd a cat|
|00000aa0| 63 68 20 63 6f 6e 74 65 | 78 74 20 2a 2f 0a 58 20 |ch conte|xt */.X |
|00000ab0| 20 20 20 66 6f 72 20 28 | 63 70 74 72 20 3d 20 78 | for (|cptr = x|
|00000ac0| 6c 63 6f 6e 74 65 78 74 | 3b 20 63 70 74 72 3b 20 |lcontext|; cptr; |
|00000ad0| 63 70 74 72 20 3d 20 63 | 70 74 72 2d 3e 63 5f 78 |cptr = c|ptr->c_x|
|00000ae0| 6c 63 6f 6e 74 65 78 74 | 29 0a 58 09 69 66 20 28 |lcontext|).X.if (|
|00000af0| 28 63 70 74 72 2d 3e 63 | 5f 66 6c 61 67 73 20 26 |(cptr->c|_flags &|
|00000b00| 20 43 46 5f 54 48 52 4f | 57 29 20 26 26 20 63 70 | CF_THRO|W) && cp|
|00000b10| 74 72 2d 3e 63 5f 65 78 | 70 72 20 3d 3d 20 74 61 |tr->c_ex|pr == ta|
|00000b20| 67 29 0a 58 09 20 20 20 | 20 78 6c 6a 75 6d 70 28 |g).X. | xljump(|
|00000b30| 63 70 74 72 2c 43 46 5f | 54 48 52 4f 57 2c 76 61 |cptr,CF_|THROW,va|
|00000b40| 6c 29 3b 0a 58 20 20 20 | 20 78 6c 66 61 69 6c 28 |l);.X | xlfail(|
|00000b50| 22 6e 6f 20 74 61 72 67 | 65 74 20 66 6f 72 20 54 |"no targ|et for T|
|00000b60| 48 52 4f 57 22 29 3b 0a | 58 7d 0a 58 0a 58 2f 2a |HROW");.|X}.X.X/*|
|00000b70| 20 78 6c 73 69 67 6e 61 | 6c 20 2d 20 73 69 67 6e | xlsigna|l - sign|
|00000b80| 61 6c 20 61 6e 20 65 72 | 72 6f 72 20 2a 2f 0a 58 |al an er|ror */.X|
|00000b90| 78 6c 73 69 67 6e 61 6c | 28 65 6d 73 67 2c 61 72 |xlsignal|(emsg,ar|
|00000ba0| 67 29 0a 58 20 20 63 68 | 61 72 20 2a 65 6d 73 67 |g).X ch|ar *emsg|
|00000bb0| 3b 20 4c 56 41 4c 20 61 | 72 67 3b 0a 58 7b 0a 58 |; LVAL a|rg;.X{.X|
|00000bc0| 20 20 20 20 43 4f 4e 54 | 45 58 54 20 2a 63 70 74 | CONT|EXT *cpt|
|00000bd0| 72 3b 0a 58 0a 58 20 20 | 20 20 2f 2a 20 66 69 6e |r;.X.X | /* fin|
|00000be0| 64 20 61 6e 20 65 72 72 | 6f 72 20 63 61 74 63 68 |d an err|or catch|
|00000bf0| 65 72 20 2a 2f 0a 58 20 | 20 20 20 66 6f 72 20 28 |er */.X | for (|
|00000c00| 63 70 74 72 20 3d 20 78 | 6c 63 6f 6e 74 65 78 74 |cptr = x|lcontext|
|00000c10| 3b 20 63 70 74 72 3b 20 | 63 70 74 72 20 3d 20 63 |; cptr; |cptr = c|
|00000c20| 70 74 72 2d 3e 63 5f 78 | 6c 63 6f 6e 74 65 78 74 |ptr->c_x|lcontext|
|00000c30| 29 0a 58 09 69 66 20 28 | 63 70 74 72 2d 3e 63 5f |).X.if (|cptr->c_|
|00000c40| 66 6c 61 67 73 20 26 20 | 43 46 5f 45 52 52 4f 52 |flags & |CF_ERROR|
|00000c50| 29 20 7b 0a 58 09 20 20 | 20 20 69 66 20 28 63 70 |) {.X. | if (cp|
|00000c60| 74 72 2d 3e 63 5f 65 78 | 70 72 20 26 26 20 65 6d |tr->c_ex|pr && em|
|00000c70| 73 67 29 0a 58 09 09 78 | 6c 65 72 72 70 72 69 6e |sg).X..x|lerrprin|
|00000c80| 74 28 22 65 72 72 6f 72 | 22 2c 4e 55 4c 4c 2c 65 |t("error|",NULL,e|
|00000c90| 6d 73 67 2c 61 72 67 29 | 3b 0a 58 09 20 20 20 20 |msg,arg)|;.X. |
|00000ca0| 78 6c 6a 75 6d 70 28 63 | 70 74 72 2c 43 46 5f 45 |xljump(c|ptr,CF_E|
|00000cb0| 52 52 4f 52 2c 4e 49 4c | 29 3b 0a 58 09 7d 0a 58 |RROR,NIL|);.X.}.X|
|00000cc0| 7d 0a 58 0a 58 2f 2a 20 | 78 6c 74 6f 70 6c 65 76 |}.X.X/* |xltoplev|
|00000cd0| 65 6c 20 2d 20 67 6f 20 | 62 61 63 6b 20 74 6f 20 |el - go |back to |
|00000ce0| 74 68 65 20 74 6f 70 20 | 6c 65 76 65 6c 20 2a 2f |the top |level */|
|00000cf0| 0a 58 78 6c 74 6f 70 6c | 65 76 65 6c 28 29 0a 58 |.Xxltopl|evel().X|
|00000d00| 7b 0a 58 20 20 20 20 73 | 74 64 70 75 74 73 74 72 |{.X s|tdputstr|
|00000d10| 28 22 5b 20 62 61 63 6b | 20 74 6f 20 74 6f 70 20 |("[ back| to top |
|00000d20| 6c 65 76 65 6c 20 5d 5c | 6e 22 29 3b 0a 58 20 20 |level ]\|n");.X |
|00000d30| 20 20 66 69 6e 64 61 6e | 64 6a 75 6d 70 28 43 46 | findan|djump(CF|
|00000d40| 5f 54 4f 50 4c 45 56 45 | 4c 2c 22 6e 6f 20 74 6f |_TOPLEVE|L,"no to|
|00000d50| 70 20 6c 65 76 65 6c 22 | 29 3b 0a 58 7d 0a 58 0a |p level"|);.X}.X.|
|00000d60| 58 2f 2a 20 78 6c 62 72 | 6b 6c 65 76 65 6c 20 2d |X/* xlbr|klevel -|
|00000d70| 20 67 6f 20 62 61 63 6b | 20 74 6f 20 74 68 65 20 | go back| to the |
|00000d80| 70 72 65 76 69 6f 75 73 | 20 62 72 65 61 6b 20 6c |previous| break l|
|00000d90| 65 76 65 6c 20 2a 2f 0a | 58 78 6c 62 72 6b 6c 65 |evel */.|Xxlbrkle|
|00000da0| 76 65 6c 28 29 0a 58 7b | 0a 58 20 20 20 20 66 69 |vel().X{|.X fi|
|00000db0| 6e 64 61 6e 64 6a 75 6d | 70 28 43 46 5f 42 52 4b |ndandjum|p(CF_BRK|
|00000dc0| 4c 45 56 45 4c 2c 22 6e | 6f 20 70 72 65 76 69 6f |LEVEL,"n|o previo|
|00000dd0| 75 73 20 62 72 65 61 6b | 20 6c 65 76 65 6c 22 29 |us break| level")|
|00000de0| 3b 0a 58 7d 0a 58 0a 58 | 2f 2a 20 78 6c 63 6c 65 |;.X}.X.X|/* xlcle|
|00000df0| 61 6e 75 70 20 2d 20 63 | 6c 65 61 6e 2d 75 70 20 |anup - c|lean-up |
|00000e00| 61 66 74 65 72 20 61 6e | 20 65 72 72 6f 72 20 2a |after an| error *|
|00000e10| 2f 0a 58 78 6c 63 6c 65 | 61 6e 75 70 28 29 0a 58 |/.Xxlcle|anup().X|
|00000e20| 7b 0a 58 20 20 20 20 73 | 74 64 70 75 74 73 74 72 |{.X s|tdputstr|
|00000e30| 28 22 5b 20 62 61 63 6b | 20 74 6f 20 70 72 65 76 |("[ back| to prev|
|00000e40| 69 6f 75 73 20 62 72 65 | 61 6b 20 6c 65 76 65 6c |ious bre|ak level|
|00000e50| 20 5d 5c 6e 22 29 3b 0a | 58 20 20 20 20 66 69 6e | ]\n");.|X fin|
|00000e60| 64 61 6e 64 6a 75 6d 70 | 28 43 46 5f 43 4c 45 41 |dandjump|(CF_CLEA|
|00000e70| 4e 55 50 2c 22 6e 6f 74 | 20 69 6e 20 61 20 62 72 |NUP,"not| in a br|
|00000e80| 65 61 6b 20 6c 6f 6f 70 | 22 29 3b 0a 58 7d 0a 58 |eak loop|");.X}.X|
|00000e90| 0a 58 2f 2a 20 78 6c 63 | 6f 6e 74 69 6e 75 65 20 |.X/* xlc|ontinue |
|00000ea0| 2d 20 63 6f 6e 74 69 6e | 75 65 20 66 72 6f 6d 20 |- contin|ue from |
|00000eb0| 61 6e 20 65 72 72 6f 72 | 20 2a 2f 0a 58 78 6c 63 |an error| */.Xxlc|
|00000ec0| 6f 6e 74 69 6e 75 65 28 | 29 0a 58 7b 0a 58 20 20 |ontinue(|).X{.X |
|00000ed0| 20 20 66 69 6e 64 61 6e | 64 6a 75 6d 70 28 43 46 | findan|djump(CF|
|00000ee0| 5f 43 4f 4e 54 49 4e 55 | 45 2c 22 6e 6f 74 20 69 |_CONTINU|E,"not i|
|00000ef0| 6e 20 61 20 62 72 65 61 | 6b 20 6c 6f 6f 70 22 29 |n a brea|k loop")|
|00000f00| 3b 0a 58 7d 0a 58 0a 58 | 2f 2a 20 78 6c 6a 75 6d |;.X}.X.X|/* xljum|
|00000f10| 70 20 2d 20 6a 75 6d 70 | 20 74 6f 20 61 20 73 61 |p - jump| to a sa|
|00000f20| 76 65 64 20 65 78 65 63 | 75 74 69 6f 6e 20 63 6f |ved exec|ution co|
|00000f30| 6e 74 65 78 74 20 2a 2f | 0a 58 78 6c 6a 75 6d 70 |ntext */|.Xxljump|
|00000f40| 28 74 61 72 67 65 74 2c | 6d 61 73 6b 2c 76 61 6c |(target,|mask,val|
|00000f50| 29 0a 58 20 20 43 4f 4e | 54 45 58 54 20 2a 74 61 |).X CON|TEXT *ta|
|00000f60| 72 67 65 74 3b 20 69 6e | 74 20 6d 61 73 6b 3b 20 |rget; in|t mask; |
|00000f70| 4c 56 41 4c 20 76 61 6c | 3b 0a 58 7b 0a 58 20 20 |LVAL val|;.X{.X |
|00000f80| 20 20 2f 2a 20 75 6e 77 | 69 6e 64 20 74 68 65 20 | /* unw|ind the |
|00000f90| 65 78 65 63 75 74 69 6f | 6e 20 73 74 61 63 6b 20 |executio|n stack |
|00000fa0| 2a 2f 0a 58 20 20 20 20 | 66 6f 72 20 28 3b 20 78 |*/.X |for (; x|
|00000fb0| 6c 63 6f 6e 74 65 78 74 | 20 21 3d 20 74 61 72 67 |lcontext| != targ|
|00000fc0| 65 74 3b 20 78 6c 63 6f | 6e 74 65 78 74 20 3d 20 |et; xlco|ntext = |
|00000fd0| 78 6c 63 6f 6e 74 65 78 | 74 2d 3e 63 5f 78 6c 63 |xlcontex|t->c_xlc|
|00000fe0| 6f 6e 74 65 78 74 29 0a | 58 0a 58 09 2f 2a 20 63 |ontext).|X.X./* c|
|00000ff0| 68 65 63 6b 20 66 6f 72 | 20 61 6e 20 55 4e 57 49 |heck for| an UNWI|
|00001000| 4e 44 2d 50 52 4f 54 45 | 43 54 20 2a 2f 0a 58 09 |ND-PROTE|CT */.X.|
|00001010| 69 66 20 28 28 78 6c 63 | 6f 6e 74 65 78 74 2d 3e |if ((xlc|ontext->|
|00001020| 63 5f 66 6c 61 67 73 20 | 26 20 43 46 5f 55 4e 57 |c_flags |& CF_UNW|
|00001030| 49 4e 44 29 29 20 7b 0a | 58 09 20 20 20 20 78 6c |IND)) {.|X. xl|
|00001040| 74 61 72 67 65 74 20 3d | 20 74 61 72 67 65 74 3b |target =| target;|
|00001050| 0a 58 09 20 20 20 20 78 | 6c 6d 61 73 6b 20 3d 20 |.X. x|lmask = |
|00001060| 6d 61 73 6b 3b 0a 58 09 | 20 20 20 20 62 72 65 61 |mask;.X.| brea|
|00001070| 6b 3b 0a 58 09 7d 0a 58 | 09 20 20 20 0a 58 20 20 |k;.X.}.X|. .X |
|00001080| 20 20 2f 2a 20 72 65 73 | 74 6f 72 65 20 74 68 65 | /* res|tore the|
|00001090| 20 73 74 61 74 65 20 2a | 2f 0a 58 20 20 20 20 78 | state *|/.X x|
|000010a0| 6c 73 74 61 63 6b 20 3d | 20 78 6c 63 6f 6e 74 65 |lstack =| xlconte|
|000010b0| 78 74 2d 3e 63 5f 78 6c | 73 74 61 63 6b 3b 0a 58 |xt->c_xl|stack;.X|
|000010c0| 20 20 20 20 78 6c 65 6e | 76 20 3d 20 78 6c 63 6f | xlen|v = xlco|
|000010d0| 6e 74 65 78 74 2d 3e 63 | 5f 78 6c 65 6e 76 3b 0a |ntext->c|_xlenv;.|
|000010e0| 58 20 20 20 20 78 6c 66 | 65 6e 76 20 3d 20 78 6c |X xlf|env = xl|
|000010f0| 63 6f 6e 74 65 78 74 2d | 3e 63 5f 78 6c 66 65 6e |context-|>c_xlfen|
|00001100| 76 3b 0a 58 20 20 20 20 | 78 6c 75 6e 62 69 6e 64 |v;.X |xlunbind|
|00001110| 28 78 6c 63 6f 6e 74 65 | 78 74 2d 3e 63 5f 78 6c |(xlconte|xt->c_xl|
|00001120| 64 65 6e 76 29 3b 0a 58 | 20 20 20 20 78 6c 61 72 |denv);.X| xlar|
|00001130| 67 76 20 3d 20 78 6c 63 | 6f 6e 74 65 78 74 2d 3e |gv = xlc|ontext->|
|00001140| 63 5f 78 6c 61 72 67 76 | 3b 0a 58 20 20 20 20 78 |c_xlargv|;.X x|
|00001150| 6c 61 72 67 63 20 3d 20 | 78 6c 63 6f 6e 74 65 78 |largc = |xlcontex|
|00001160| 74 2d 3e 63 5f 78 6c 61 | 72 67 63 3b 0a 58 20 20 |t->c_xla|rgc;.X |
|00001170| 20 20 78 6c 66 70 20 3d | 20 78 6c 63 6f 6e 74 65 | xlfp =| xlconte|
|00001180| 78 74 2d 3e 63 5f 78 6c | 66 70 3b 0a 58 20 20 20 |xt->c_xl|fp;.X |
|00001190| 20 78 6c 73 70 20 3d 20 | 78 6c 63 6f 6e 74 65 78 | xlsp = |xlcontex|
|000011a0| 74 2d 3e 63 5f 78 6c 73 | 70 3b 0a 58 20 20 20 20 |t->c_xls|p;.X |
|000011b0| 78 6c 76 61 6c 75 65 20 | 3d 20 76 61 6c 3b 0a 58 |xlvalue |= val;.X|
|000011c0| 0a 58 20 20 20 20 2f 2a | 20 63 61 6c 6c 20 74 68 |.X /*| call th|
|000011d0| 65 20 68 61 6e 64 6c 65 | 72 20 2a 2f 0a 58 20 20 |e handle|r */.X |
|000011e0| 20 20 6c 6f 6e 67 6a 6d | 70 28 78 6c 63 6f 6e 74 | longjm|p(xlcont|
|000011f0| 65 78 74 2d 3e 63 5f 6a | 6d 70 62 75 66 2c 6d 61 |ext->c_j|mpbuf,ma|
|00001200| 73 6b 29 3b 0a 58 7d 0a | 58 0a 58 2f 2a 20 66 69 |sk);.X}.|X.X/* fi|
|00001210| 6e 64 61 6e 64 6a 75 6d | 70 20 2d 20 66 69 6e 64 |ndandjum|p - find|
|00001220| 20 61 20 74 61 72 67 65 | 74 20 63 6f 6e 74 65 78 | a targe|t contex|
|00001230| 74 20 66 72 61 6d 65 20 | 61 6e 64 20 6a 75 6d 70 |t frame |and jump|
|00001240| 20 74 6f 20 69 74 20 2a | 2f 0a 58 4c 4f 43 41 4c | to it *|/.XLOCAL|
|00001250| 20 66 69 6e 64 61 6e 64 | 6a 75 6d 70 28 6d 61 73 | findand|jump(mas|
|00001260| 6b 2c 65 72 72 6f 72 29 | 0a 58 20 20 69 6e 74 20 |k,error)|.X int |
|00001270| 6d 61 73 6b 3b 20 63 68 | 61 72 20 2a 65 72 72 6f |mask; ch|ar *erro|
|00001280| 72 3b 0a 58 7b 0a 58 20 | 20 20 20 43 4f 4e 54 45 |r;.X{.X | CONTE|
|00001290| 58 54 20 2a 63 70 74 72 | 3b 0a 58 0a 58 20 20 20 |XT *cptr|;.X.X |
|000012a0| 20 2f 2a 20 66 69 6e 64 | 20 61 20 62 6c 6f 63 6b | /* find| a block|
|000012b0| 20 63 6f 6e 74 65 78 74 | 20 2a 2f 0a 58 20 20 20 | context| */.X |
|000012c0| 20 66 6f 72 20 28 63 70 | 74 72 20 3d 20 78 6c 63 | for (cp|tr = xlc|
|000012d0| 6f 6e 74 65 78 74 3b 20 | 63 70 74 72 3b 20 63 70 |ontext; |cptr; cp|
|000012e0| 74 72 20 3d 20 63 70 74 | 72 2d 3e 63 5f 78 6c 63 |tr = cpt|r->c_xlc|
|000012f0| 6f 6e 74 65 78 74 29 0a | 58 09 69 66 20 28 63 70 |ontext).|X.if (cp|
|00001300| 74 72 2d 3e 63 5f 66 6c | 61 67 73 20 26 20 6d 61 |tr->c_fl|ags & ma|
|00001310| 73 6b 29 0a 58 09 20 20 | 20 20 78 6c 6a 75 6d 70 |sk).X. | xljump|
|00001320| 28 63 70 74 72 2c 6d 61 | 73 6b 2c 4e 49 4c 29 3b |(cptr,ma|sk,NIL);|
|00001330| 0a 58 20 20 20 20 78 6c | 61 62 6f 72 74 28 65 72 |.X xl|abort(er|
|00001340| 72 6f 72 29 3b 0a 58 7d | 0a 58 0a 53 48 41 52 5f |ror);.X}|.X.SHAR_|
|00001350| 45 4f 46 0a 69 66 20 74 | 65 73 74 20 33 38 38 39 |EOF.if t|est 3889|
|00001360| 20 2d 6e 65 20 22 60 77 | 63 20 2d 63 20 27 78 6c | -ne "`w|c -c 'xl|
|00001370| 6a 75 6d 70 2e 63 27 60 | 22 0a 74 68 65 6e 0a 09 |jump.c'`|".then..|
|00001380| 65 63 68 6f 20 73 68 61 | 72 3a 20 65 72 72 6f 72 |echo sha|r: error|
|00001390| 20 74 72 61 6e 73 6d 69 | 74 74 69 6e 67 20 22 27 | transmi|tting "'|
|000013a0| 78 6c 6a 75 6d 70 2e 63 | 27 22 20 27 28 73 68 6f |xljump.c|'" '(sho|
|000013b0| 75 6c 64 20 68 61 76 65 | 20 62 65 65 6e 20 33 38 |uld have| been 38|
|000013c0| 38 39 20 63 68 61 72 61 | 63 74 65 72 73 29 27 0a |89 chara|cters)'.|
|000013d0| 66 69 0a 65 63 68 6f 20 | 73 68 61 72 3a 20 65 78 |fi.echo |shar: ex|
|000013e0| 74 72 61 63 74 69 6e 67 | 20 22 27 78 6c 6c 69 73 |tracting| "'xllis|
|000013f0| 74 2e 63 27 22 20 27 28 | 31 38 37 36 31 20 63 68 |t.c'" '(|18761 ch|
|00001400| 61 72 61 63 74 65 72 73 | 29 27 0a 69 66 20 74 65 |aracters|)'.if te|
|00001410| 73 74 20 2d 66 20 27 78 | 6c 6c 69 73 74 2e 63 27 |st -f 'x|llist.c'|
|00001420| 0a 74 68 65 6e 0a 09 65 | 63 68 6f 20 73 68 61 72 |.then..e|cho shar|
|00001430| 3a 20 6f 76 65 72 2d 77 | 72 69 74 69 6e 67 20 65 |: over-w|riting e|
|00001440| 78 69 73 74 69 6e 67 20 | 66 69 6c 65 20 22 27 78 |xisting |file "'x|
|00001450| 6c 6c 69 73 74 2e 63 27 | 22 0a 66 69 0a 73 65 64 |llist.c'|".fi.sed|
|00001460| 20 27 73 2f 5e 58 2f 2f | 27 20 3c 3c 20 5c 53 48 | 's/^X//|' << \SH|
|00001470| 41 52 5f 45 4f 46 20 3e | 20 27 78 6c 6c 69 73 74 |AR_EOF >| 'xllist|
|00001480| 2e 63 27 0a 58 2f 2a 20 | 78 6c 6c 69 73 74 2e 63 |.c'.X/* |xllist.c|
|00001490| 20 2d 20 78 6c 69 73 70 | 20 62 75 69 6c 74 2d 69 | - xlisp| built-i|
|000014a0| 6e 20 6c 69 73 74 20 66 | 75 6e 63 74 69 6f 6e 73 |n list f|unctions|
|000014b0| 20 2a 2f 0a 58 2f 2a 09 | 43 6f 70 79 72 69 67 68 | */.X/*.|Copyrigh|
|000014c0| 74 20 28 63 29 20 31 39 | 38 35 2c 20 62 79 20 44 |t (c) 19|85, by D|
|000014d0| 61 76 69 64 20 4d 69 63 | 68 61 65 6c 20 42 65 74 |avid Mic|hael Bet|
|000014e0| 7a 0a 58 09 41 6c 6c 20 | 52 69 67 68 74 73 20 52 |z.X.All |Rights R|
|000014f0| 65 73 65 72 76 65 64 0a | 58 09 50 65 72 6d 69 73 |eserved.|X.Permis|
|00001500| 73 69 6f 6e 20 69 73 20 | 67 72 61 6e 74 65 64 20 |sion is |granted |
|00001510| 66 6f 72 20 75 6e 72 65 | 73 74 72 69 63 74 65 64 |for unre|stricted|
|00001520| 20 6e 6f 6e 2d 63 6f 6d | 6d 65 72 63 69 61 6c 20 | non-com|mercial |
|00001530| 75 73 65 09 2a 2f 0a 58 | 0a 58 23 69 6e 63 6c 75 |use.*/.X|.X#inclu|
|00001540| 64 65 20 22 78 6c 69 73 | 70 2e 68 22 0a 58 0a 58 |de "xlis|p.h".X.X|
|00001550| 2f 2a 20 66 6f 72 77 61 | 72 64 20 64 65 63 6c 61 |/* forwa|rd decla|
|00001560| 72 61 74 69 6f 6e 73 20 | 2a 2f 0a 58 46 4f 52 57 |rations |*/.XFORW|
|00001570| 41 52 44 20 4c 56 41 4c | 20 63 78 72 28 29 3b 0a |ARD LVAL| cxr();.|
|00001580| 58 46 4f 52 57 41 52 44 | 20 4c 56 41 4c 20 6e 74 |XFORWARD| LVAL nt|
|00001590| 68 28 29 2c 61 73 73 6f | 63 28 29 3b 0a 58 46 4f |h(),asso|c();.XFO|
|000015a0| 52 57 41 52 44 20 4c 56 | 41 4c 20 73 75 62 73 74 |RWARD LV|AL subst|
|000015b0| 28 29 2c 73 75 62 6c 69 | 73 28 29 2c 6d 61 70 28 |(),subli|s(),map(|
|000015c0| 29 3b 0a 58 0a 58 2f 2a | 20 78 63 61 72 20 2d 20 |);.X.X/*| xcar - |
|000015d0| 74 61 6b 65 20 74 68 65 | 20 63 61 72 20 6f 66 20 |take the| car of |
|000015e0| 61 20 63 6f 6e 73 20 63 | 65 6c 6c 20 2a 2f 0a 58 |a cons c|ell */.X|
|000015f0| 4c 56 41 4c 20 78 63 61 | 72 28 29 0a 58 7b 0a 58 |LVAL xca|r().X{.X|
|00001600| 20 20 20 20 4c 56 41 4c | 20 6c 69 73 74 3b 0a 58 | LVAL| list;.X|
|00001610| 20 20 20 20 6c 69 73 74 | 20 3d 20 78 6c 67 61 6c | list| = xlgal|
|00001620| 69 73 74 28 29 3b 0a 58 | 20 20 20 20 78 6c 6c 61 |ist();.X| xlla|
|00001630| 73 74 61 72 67 28 29 3b | 0a 58 20 20 20 20 72 65 |starg();|.X re|
|00001640| 74 75 72 6e 20 28 6c 69 | 73 74 20 3f 20 63 61 72 |turn (li|st ? car|
|00001650| 28 6c 69 73 74 29 20 3a | 20 4e 49 4c 29 3b 0a 58 |(list) :| NIL);.X|
|00001660| 7d 0a 58 0a 58 2f 2a 20 | 78 63 64 72 20 2d 20 74 |}.X.X/* |xcdr - t|
|00001670| 61 6b 65 20 74 68 65 20 | 63 64 72 20 6f 66 20 61 |ake the |cdr of a|
|00001680| 20 63 6f 6e 73 20 63 65 | 6c 6c 20 2a 2f 0a 58 4c | cons ce|ll */.XL|
|00001690| 56 41 4c 20 78 63 64 72 | 28 29 0a 58 7b 0a 58 20 |VAL xcdr|().X{.X |
|000016a0| 20 20 20 4c 56 41 4c 20 | 6c 69 73 74 3b 0a 58 20 | LVAL |list;.X |
|000016b0| 20 20 20 6c 69 73 74 20 | 3d 20 78 6c 67 61 6c 69 | list |= xlgali|
|000016c0| 73 74 28 29 3b 0a 58 20 | 20 20 20 78 6c 6c 61 73 |st();.X | xllas|
|000016d0| 74 61 72 67 28 29 3b 0a | 58 20 20 20 20 72 65 74 |targ();.|X ret|
|000016e0| 75 72 6e 20 28 6c 69 73 | 74 20 3f 20 63 64 72 28 |urn (lis|t ? cdr(|
|000016f0| 6c 69 73 74 29 20 3a 20 | 4e 49 4c 29 3b 0a 58 7d |list) : |NIL);.X}|
|00001700| 0a 58 0a 58 2f 2a 20 63 | 78 78 72 20 66 75 6e 63 |.X.X/* c|xxr func|
|00001710| 74 69 6f 6e 73 20 2a 2f | 0a 58 4c 56 41 4c 20 78 |tions */|.XLVAL x|
|00001720| 63 61 61 72 28 29 20 7b | 20 72 65 74 75 72 6e 20 |caar() {| return |
|00001730| 28 63 78 72 28 22 61 61 | 22 29 29 3b 20 7d 0a 58 |(cxr("aa|")); }.X|
|00001740| 4c 56 41 4c 20 78 63 61 | 64 72 28 29 20 7b 20 72 |LVAL xca|dr() { r|
|00001750| 65 74 75 72 6e 20 28 63 | 78 72 28 22 64 61 22 29 |eturn (c|xr("da")|
|00001760| 29 3b 20 7d 0a 58 4c 56 | 41 4c 20 78 63 64 61 72 |); }.XLV|AL xcdar|
|00001770| 28 29 20 7b 20 72 65 74 | 75 72 6e 20 28 63 78 72 |() { ret|urn (cxr|
|00001780| 28 22 61 64 22 29 29 3b | 20 7d 0a 58 4c 56 41 4c |("ad"));| }.XLVAL|
|00001790| 20 78 63 64 64 72 28 29 | 20 7b 20 72 65 74 75 72 | xcddr()| { retur|
|000017a0| 6e 20 28 63 78 72 28 22 | 64 64 22 29 29 3b 20 7d |n (cxr("|dd")); }|
|000017b0| 0a 58 0a 58 2f 2a 20 63 | 78 78 78 72 20 66 75 6e |.X.X/* c|xxxr fun|
|000017c0| 63 74 69 6f 6e 73 20 2a | 2f 0a 58 4c 56 41 4c 20 |ctions *|/.XLVAL |
|000017d0| 78 63 61 61 61 72 28 29 | 20 7b 20 72 65 74 75 72 |xcaaar()| { retur|
|000017e0| 6e 20 28 63 78 72 28 22 | 61 61 61 22 29 29 3b 20 |n (cxr("|aaa")); |
|000017f0| 7d 0a 58 4c 56 41 4c 20 | 78 63 61 61 64 72 28 29 |}.XLVAL |xcaadr()|
|00001800| 20 7b 20 72 65 74 75 72 | 6e 20 28 63 78 72 28 22 | { retur|n (cxr("|
|00001810| 64 61 61 22 29 29 3b 20 | 7d 0a 58 4c 56 41 4c 20 |daa")); |}.XLVAL |
|00001820| 78 63 61 64 61 72 28 29 | 20 7b 20 72 65 74 75 72 |xcadar()| { retur|
|00001830| 6e 20 28 63 78 72 28 22 | 61 64 61 22 29 29 3b 20 |n (cxr("|ada")); |
|00001840| 7d 0a 58 4c 56 41 4c 20 | 78 63 61 64 64 72 28 29 |}.XLVAL |xcaddr()|
|00001850| 20 7b 20 72 65 74 75 72 | 6e 20 28 63 78 72 28 22 | { retur|n (cxr("|
|00001860| 64 64 61 22 29 29 3b 20 | 7d 0a 58 4c 56 41 4c 20 |dda")); |}.XLVAL |
|00001870| 78 63 64 61 61 72 28 29 | 20 7b 20 72 65 74 75 72 |xcdaar()| { retur|
|00001880| 6e 20 28 63 78 72 28 22 | 61 61 64 22 29 29 3b 20 |n (cxr("|aad")); |
|00001890| 7d 0a 58 4c 56 41 4c 20 | 78 63 64 61 64 72 28 29 |}.XLVAL |xcdadr()|
|000018a0| 20 7b 20 72 65 74 75 72 | 6e 20 28 63 78 72 28 22 | { retur|n (cxr("|
|000018b0| 64 61 64 22 29 29 3b 20 | 7d 0a 58 4c 56 41 4c 20 |dad")); |}.XLVAL |
|000018c0| 78 63 64 64 61 72 28 29 | 20 7b 20 72 65 74 75 72 |xcddar()| { retur|
|000018d0| 6e 20 28 63 78 72 28 22 | 61 64 64 22 29 29 3b 20 |n (cxr("|add")); |
|000018e0| 7d 0a 58 4c 56 41 4c 20 | 78 63 64 64 64 72 28 29 |}.XLVAL |xcdddr()|
|000018f0| 20 7b 20 72 65 74 75 72 | 6e 20 28 63 78 72 28 22 | { retur|n (cxr("|
|00001900| 64 64 64 22 29 29 3b 20 | 7d 0a 58 0a 58 2f 2a 20 |ddd")); |}.X.X/* |
|00001910| 63 78 78 78 78 72 20 66 | 75 6e 63 74 69 6f 6e 73 |cxxxxr f|unctions|
|00001920| 20 2a 2f 0a 58 4c 56 41 | 4c 20 78 63 61 61 61 61 | */.XLVA|L xcaaaa|
|00001930| 72 28 29 20 7b 20 72 65 | 74 75 72 6e 20 28 63 78 |r() { re|turn (cx|
|00001940| 72 28 22 61 61 61 61 22 | 29 29 3b 20 7d 0a 58 4c |r("aaaa"|)); }.XL|
|00001950| 56 41 4c 20 78 63 61 61 | 61 64 72 28 29 20 7b 20 |VAL xcaa|adr() { |
|00001960| 72 65 74 75 72 6e 20 28 | 63 78 72 28 22 64 61 61 |return (|cxr("daa|
|00001970| 61 22 29 29 3b 20 7d 0a | 58 4c 56 41 4c 20 78 63 |a")); }.|XLVAL xc|
|00001980| 61 61 64 61 72 28 29 20 | 7b 20 72 65 74 75 72 6e |aadar() |{ return|
|00001990| 20 28 63 78 72 28 22 61 | 64 61 61 22 29 29 3b 20 | (cxr("a|daa")); |
|000019a0| 7d 0a 58 4c 56 41 4c 20 | 78 63 61 61 64 64 72 28 |}.XLVAL |xcaaddr(|
|000019b0| 29 20 7b 20 72 65 74 75 | 72 6e 20 28 63 78 72 28 |) { retu|rn (cxr(|
|000019c0| 22 64 64 61 61 22 29 29 | 3b 20 7d 0a 58 4c 56 41 |"ddaa"))|; }.XLVA|
|000019d0| 4c 20 78 63 61 64 61 61 | 72 28 29 20 7b 20 72 65 |L xcadaa|r() { re|
|000019e0| 74 75 72 6e 20 28 63 78 | 72 28 22 61 61 64 61 22 |turn (cx|r("aada"|
|000019f0| 29 29 3b 20 7d 0a 58 4c | 56 41 4c 20 78 63 61 64 |)); }.XL|VAL xcad|
|00001a00| 61 64 72 28 29 20 7b 20 | 72 65 74 75 72 6e 20 28 |adr() { |return (|
|00001a10| 63 78 72 28 22 64 61 64 | 61 22 29 29 3b 20 7d 0a |cxr("dad|a")); }.|
|00001a20| 58 4c 56 41 4c 20 78 63 | 61 64 64 61 72 28 29 20 |XLVAL xc|addar() |
|00001a30| 7b 20 72 65 74 75 72 6e | 20 28 63 78 72 28 22 61 |{ return| (cxr("a|
|00001a40| 64 64 61 22 29 29 3b 20 | 7d 0a 58 4c 56 41 4c 20 |dda")); |}.XLVAL |
|00001a50| 78 63 61 64 64 64 72 28 | 29 20 7b 20 72 65 74 75 |xcadddr(|) { retu|
|00001a60| 72 6e 20 28 63 78 72 28 | 22 64 64 64 61 22 29 29 |rn (cxr(|"ddda"))|
|00001a70| 3b 20 7d 0a 58 4c 56 41 | 4c 20 78 63 64 61 61 61 |; }.XLVA|L xcdaaa|
|00001a80| 72 28 29 20 7b 20 72 65 | 74 75 72 6e 20 28 63 78 |r() { re|turn (cx|
|00001a90| 72 28 22 61 61 61 64 22 | 29 29 3b 20 7d 0a 58 4c |r("aaad"|)); }.XL|
|00001aa0| 56 41 4c 20 78 63 64 61 | 61 64 72 28 29 20 7b 20 |VAL xcda|adr() { |
|00001ab0| 72 65 74 75 72 6e 20 28 | 63 78 72 28 22 64 61 61 |return (|cxr("daa|
|00001ac0| 64 22 29 29 3b 20 7d 0a | 58 4c 56 41 4c 20 78 63 |d")); }.|XLVAL xc|
|00001ad0| 64 61 64 61 72 28 29 20 | 7b 20 72 65 74 75 72 6e |dadar() |{ return|
|00001ae0| 20 28 63 78 72 28 22 61 | 64 61 64 22 29 29 3b 20 | (cxr("a|dad")); |
|00001af0| 7d 0a 58 4c 56 41 4c 20 | 78 63 64 61 64 64 72 28 |}.XLVAL |xcdaddr(|
|00001b00| 29 20 7b 20 72 65 74 75 | 72 6e 20 28 63 78 72 28 |) { retu|rn (cxr(|
|00001b10| 22 64 64 61 64 22 29 29 | 3b 20 7d 0a 58 4c 56 41 |"ddad"))|; }.XLVA|
|00001b20| 4c 20 78 63 64 64 61 61 | 72 28 29 20 7b 20 72 65 |L xcddaa|r() { re|
|00001b30| 74 75 72 6e 20 28 63 78 | 72 28 22 61 61 64 64 22 |turn (cx|r("aadd"|
|00001b40| 29 29 3b 20 7d 0a 58 4c | 56 41 4c 20 78 63 64 64 |)); }.XL|VAL xcdd|
|00001b50| 61 64 72 28 29 20 7b 20 | 72 65 74 75 72 6e 20 28 |adr() { |return (|
|00001b60| 63 78 72 28 22 64 61 64 | 64 22 29 29 3b 20 7d 0a |cxr("dad|d")); }.|
|00001b70| 58 4c 56 41 4c 20 78 63 | 64 64 64 61 72 28 29 20 |XLVAL xc|dddar() |
|00001b80| 7b 20 72 65 74 75 72 6e | 20 28 63 78 72 28 22 61 |{ return| (cxr("a|
|00001b90| 64 64 64 22 29 29 3b 20 | 7d 0a 58 4c 56 41 4c 20 |ddd")); |}.XLVAL |
|00001ba0| 78 63 64 64 64 64 72 28 | 29 20 7b 20 72 65 74 75 |xcddddr(|) { retu|
|00001bb0| 72 6e 20 28 63 78 72 28 | 22 64 64 64 64 22 29 29 |rn (cxr(|"dddd"))|
|00001bc0| 3b 20 7d 0a 58 0a 58 2f | 2a 20 63 78 72 20 2d 20 |; }.X.X/|* cxr - |
|00001bd0| 63 6f 6d 6d 6f 6e 20 63 | 61 72 2f 63 64 72 20 72 |common c|ar/cdr r|
|00001be0| 6f 75 74 69 6e 65 20 2a | 2f 0a 58 4c 4f 43 41 4c |outine *|/.XLOCAL|
|00001bf0| 20 4c 56 41 4c 20 63 78 | 72 28 61 64 73 74 72 29 | LVAL cx|r(adstr)|
|00001c00| 0a 58 20 20 63 68 61 72 | 20 2a 61 64 73 74 72 3b |.X char| *adstr;|
|00001c10| 0a 58 7b 0a 58 20 20 20 | 20 4c 56 41 4c 20 6c 69 |.X{.X | LVAL li|
|00001c20| 73 74 3b 0a 58 0a 58 20 | 20 20 20 2f 2a 20 67 65 |st;.X.X | /* ge|
|00001c30| 74 20 74 68 65 20 6c 69 | 73 74 20 2a 2f 0a 58 20 |t the li|st */.X |
|00001c40| 20 20 20 6c 69 73 74 20 | 3d 20 78 6c 67 61 6c 69 | list |= xlgali|
|00001c50| 73 74 28 29 3b 0a 58 20 | 20 20 20 78 6c 6c 61 73 |st();.X | xllas|
|00001c60| 74 61 72 67 28 29 3b 0a | 58 0a 58 20 20 20 20 2f |targ();.|X.X /|
|00001c70| 2a 20 70 65 72 66 6f 72 | 6d 20 74 68 65 20 63 61 |* perfor|m the ca|
|00001c80| 72 2f 63 64 72 20 6f 70 | 65 72 61 74 69 6f 6e 73 |r/cdr op|erations|
|00001c90| 20 2a 2f 0a 58 20 20 20 | 20 77 68 69 6c 65 20 28 | */.X | while (|
|00001ca0| 2a 61 64 73 74 72 20 26 | 26 20 63 6f 6e 73 70 28 |*adstr &|& consp(|
|00001cb0| 6c 69 73 74 29 29 0a 58 | 09 6c 69 73 74 20 3d 20 |list)).X|.list = |
|00001cc0| 28 2a 61 64 73 74 72 2b | 2b 20 3d 3d 20 27 61 27 |(*adstr+|+ == 'a'|
|00001cd0| 20 3f 20 63 61 72 28 6c | 69 73 74 29 20 3a 20 63 | ? car(l|ist) : c|
|00001ce0| 64 72 28 6c 69 73 74 29 | 29 3b 0a 58 0a 58 20 20 |dr(list)|);.X.X |
|00001cf0| 20 20 2f 2a 20 6d 61 6b | 65 20 73 75 72 65 20 74 | /* mak|e sure t|
|00001d00| 68 65 20 6f 70 65 72 61 | 74 69 6f 6e 20 73 75 63 |he opera|tion suc|
|00001d10| 63 65 65 64 65 64 20 2a | 2f 0a 58 20 20 20 20 69 |ceeded *|/.X i|
|00001d20| 66 20 28 2a 61 64 73 74 | 72 20 26 26 20 6c 69 73 |f (*adst|r && lis|
|00001d30| 74 29 0a 58 09 78 6c 66 | 61 69 6c 28 22 62 61 64 |t).X.xlf|ail("bad|
|00001d40| 20 61 72 67 75 6d 65 6e | 74 22 29 3b 0a 58 0a 58 | argumen|t");.X.X|
|00001d50| 20 20 20 20 2f 2a 20 72 | 65 74 75 72 6e 20 74 68 | /* r|eturn th|
|00001d60| 65 20 72 65 73 75 6c 74 | 20 2a 2f 0a 58 20 20 20 |e result| */.X |
|00001d70| 20 72 65 74 75 72 6e 20 | 28 6c 69 73 74 29 3b 0a | return |(list);.|
|00001d80| 58 7d 0a 58 0a 58 2f 2a | 20 78 63 6f 6e 73 20 2d |X}.X.X/*| xcons -|
|00001d90| 20 63 6f 6e 73 74 72 75 | 63 74 20 61 20 6e 65 77 | constru|ct a new|
|00001da0| 20 6c 69 73 74 20 63 65 | 6c 6c 20 2a 2f 0a 58 4c | list ce|ll */.XL|
|00001db0| 56 41 4c 20 78 63 6f 6e | 73 28 29 0a 58 7b 0a 58 |VAL xcon|s().X{.X|
|00001dc0| 20 20 20 20 4c 56 41 4c | 20 61 72 67 31 2c 61 72 | LVAL| arg1,ar|
|00001dd0| 67 32 3b 0a 58 0a 58 20 | 20 20 20 2f 2a 20 67 65 |g2;.X.X | /* ge|
|00001de0| 74 20 74 68 65 20 74 77 | 6f 20 61 72 67 75 6d 65 |t the tw|o argume|
|00001df0| 6e 74 73 20 2a 2f 0a 58 | 20 20 20 20 61 72 67 31 |nts */.X| arg1|
|00001e00| 20 3d 20 78 6c 67 65 74 | 61 72 67 28 29 3b 0a 58 | = xlget|arg();.X|
|00001e10| 20 20 20 20 61 72 67 32 | 20 3d 20 78 6c 67 65 74 | arg2| = xlget|
|00001e20| 61 72 67 28 29 3b 0a 58 | 20 20 20 20 78 6c 6c 61 |arg();.X| xlla|
|00001e30| 73 74 61 72 67 28 29 3b | 0a 58 0a 58 20 20 20 20 |starg();|.X.X |
|00001e40| 2f 2a 20 63 6f 6e 73 74 | 72 75 63 74 20 61 20 6e |/* const|ruct a n|
|00001e50| 65 77 20 6c 69 73 74 20 | 65 6c 65 6d 65 6e 74 20 |ew list |element |
|00001e60| 2a 2f 0a 58 20 20 20 20 | 72 65 74 75 72 6e 20 28 |*/.X |return (|
|00001e70| 63 6f 6e 73 28 61 72 67 | 31 2c 61 72 67 32 29 29 |cons(arg|1,arg2))|
|00001e80| 3b 0a 58 7d 0a 58 0a 58 | 2f 2a 20 78 6c 69 73 74 |;.X}.X.X|/* xlist|
|00001e90| 20 2d 20 62 75 69 6c 74 | 20 61 20 6c 69 73 74 20 | - built| a list |
|00001ea0| 6f 66 20 74 68 65 20 61 | 72 67 75 6d 65 6e 74 73 |of the a|rguments|
|00001eb0| 20 2a 2f 0a 58 4c 56 41 | 4c 20 78 6c 69 73 74 28 | */.XLVA|L xlist(|
|00001ec0| 29 0a 58 7b 0a 58 20 20 | 20 20 4c 56 41 4c 20 6c |).X{.X | LVAL l|
|00001ed0| 61 73 74 2c 6e 65 78 74 | 2c 76 61 6c 3b 0a 58 0a |ast,next|,val;.X.|
|00001ee0| 58 20 20 20 20 2f 2a 20 | 70 72 6f 74 65 63 74 20 |X /* |protect |
|00001ef0| 73 6f 6d 65 20 70 6f 69 | 6e 74 65 72 73 20 2a 2f |some poi|nters */|
|00001f00| 0a 58 20 20 20 20 78 6c | 73 61 76 65 31 28 76 61 |.X xl|save1(va|
|00001f10| 6c 29 3b 0a 58 0a 58 20 | 20 20 20 2f 2a 20 61 64 |l);.X.X | /* ad|
|00001f20| 64 20 65 61 63 68 20 61 | 72 67 75 6d 65 6e 74 20 |d each a|rgument |
|00001f30| 74 6f 20 74 68 65 20 6c | 69 73 74 20 2a 2f 0a 58 |to the l|ist */.X|
|00001f40| 20 20 20 20 66 6f 72 20 | 28 76 61 6c 20 3d 20 4e | for |(val = N|
|00001f50| 49 4c 3b 20 6d 6f 72 65 | 61 72 67 73 28 29 3b 20 |IL; more|args(); |
|00001f60| 29 20 7b 0a 58 0a 58 09 | 2f 2a 20 61 70 70 65 6e |) {.X.X.|/* appen|
|00001f70| 64 20 74 68 69 73 20 61 | 72 67 75 6d 65 6e 74 20 |d this a|rgument |
|00001f80| 74 6f 20 74 68 65 20 65 | 6e 64 20 6f 66 20 74 68 |to the e|nd of th|
|00001f90| 65 20 6c 69 73 74 20 2a | 2f 0a 58 09 6e 65 78 74 |e list *|/.X.next|
|00001fa0| 20 3d 20 63 6f 6e 73 61 | 28 6e 65 78 74 61 72 67 | = consa|(nextarg|
|00001fb0| 28 29 29 3b 0a 58 09 69 | 66 20 28 76 61 6c 29 20 |());.X.i|f (val) |
|00001fc0| 72 70 6c 61 63 64 28 6c | 61 73 74 2c 6e 65 78 74 |rplacd(l|ast,next|
|00001fd0| 29 3b 0a 58 09 65 6c 73 | 65 20 76 61 6c 20 3d 20 |);.X.els|e val = |
|00001fe0| 6e 65 78 74 3b 0a 58 09 | 6c 61 73 74 20 3d 20 6e |next;.X.|last = n|
|00001ff0| 65 78 74 3b 0a 58 20 20 | 20 20 7d 0a 58 0a 58 20 |ext;.X | }.X.X |
|00002000| 20 20 20 2f 2a 20 72 65 | 73 74 6f 72 65 20 74 68 | /* re|store th|
|00002010| 65 20 73 74 61 63 6b 20 | 2a 2f 0a 58 20 20 20 20 |e stack |*/.X |
|00002020| 78 6c 70 6f 70 28 29 3b | 0a 58 0a 58 20 20 20 20 |xlpop();|.X.X |
|00002030| 2f 2a 20 72 65 74 75 72 | 6e 20 74 68 65 20 6c 69 |/* retur|n the li|
|00002040| 73 74 20 2a 2f 0a 58 20 | 20 20 20 72 65 74 75 72 |st */.X | retur|
|00002050| 6e 20 28 76 61 6c 29 3b | 0a 58 7d 0a 58 0a 58 2f |n (val);|.X}.X.X/|
|00002060| 2a 20 78 61 70 70 65 6e | 64 20 2d 20 62 75 69 6c |* xappen|d - buil|
|00002070| 74 2d 69 6e 20 66 75 6e | 63 74 69 6f 6e 20 61 70 |t-in fun|ction ap|
|00002080| 70 65 6e 64 20 2a 2f 0a | 58 4c 56 41 4c 20 78 61 |pend */.|XLVAL xa|
|00002090| 70 70 65 6e 64 28 29 0a | 58 7b 0a 58 20 20 20 20 |ppend().|X{.X |
|000020a0| 4c 56 41 4c 20 6c 69 73 | 74 2c 6c 61 73 74 2c 6e |LVAL lis|t,last,n|
|000020b0| 65 78 74 2c 76 61 6c 3b | 0a 58 0a 58 20 20 20 20 |ext,val;|.X.X |
|000020c0| 2f 2a 20 70 72 6f 74 65 | 63 74 20 73 6f 6d 65 20 |/* prote|ct some |
|000020d0| 70 6f 69 6e 74 65 72 73 | 20 2a 2f 0a 58 20 20 20 |pointers| */.X |
|000020e0| 20 78 6c 73 61 76 65 31 | 28 76 61 6c 29 3b 0a 58 | xlsave1|(val);.X|
|000020f0| 0a 58 20 20 20 20 2f 2a | 20 69 6e 69 74 69 61 6c |.X /*| initial|
|00002100| 69 7a 65 20 2a 2f 0a 58 | 20 20 20 20 76 61 6c 20 |ize */.X| val |
|00002110| 3d 20 4e 49 4c 3b 0a 58 | 20 20 20 20 0a 58 20 20 |= NIL;.X| .X |
|00002120| 20 20 2f 2a 20 61 70 70 | 65 6e 64 20 65 61 63 68 | /* app|end each|
|00002130| 20 61 72 67 75 6d 65 6e | 74 20 2a 2f 0a 58 20 20 | argumen|t */.X |
|00002140| 20 20 69 66 20 28 6d 6f | 72 65 61 72 67 73 28 29 | if (mo|reargs()|
|00002150| 29 20 7b 0a 58 09 77 68 | 69 6c 65 20 28 78 6c 61 |) {.X.wh|ile (xla|
|00002160| 72 67 63 20 3e 20 31 29 | 20 7b 0a 58 0a 58 09 20 |rgc > 1)| {.X.X. |
|00002170| 20 20 20 2f 2a 20 61 70 | 70 65 6e 64 20 65 61 63 | /* ap|pend eac|
|00002180| 68 20 65 6c 65 6d 65 6e | 74 20 6f 66 20 74 68 69 |h elemen|t of thi|
|00002190| 73 20 6c 69 73 74 20 74 | 6f 20 74 68 65 20 72 65 |s list t|o the re|
|000021a0| 73 75 6c 74 20 6c 69 73 | 74 20 2a 2f 0a 58 09 20 |sult lis|t */.X. |
|000021b0| 20 20 20 66 6f 72 20 28 | 6c 69 73 74 20 3d 20 6e | for (|list = n|
|000021c0| 65 78 74 61 72 67 28 29 | 3b 20 63 6f 6e 73 70 28 |extarg()|; consp(|
|000021d0| 6c 69 73 74 29 3b 20 6c | 69 73 74 20 3d 20 63 64 |list); l|ist = cd|
|000021e0| 72 28 6c 69 73 74 29 29 | 20 7b 0a 58 09 09 6e 65 |r(list))| {.X..ne|
|000021f0| 78 74 20 3d 20 63 6f 6e | 73 61 28 63 61 72 28 6c |xt = con|sa(car(l|
|00002200| 69 73 74 29 29 3b 0a 58 | 09 09 69 66 20 28 76 61 |ist));.X|..if (va|
|00002210| 6c 29 20 72 70 6c 61 63 | 64 28 6c 61 73 74 2c 6e |l) rplac|d(last,n|
|00002220| 65 78 74 29 3b 0a 58 09 | 09 65 6c 73 65 20 76 61 |ext);.X.|.else va|
|00002230| 6c 20 3d 20 6e 65 78 74 | 3b 0a 58 09 09 6c 61 73 |l = next|;.X..las|
|00002240| 74 20 3d 20 6e 65 78 74 | 3b 0a 58 09 20 20 20 20 |t = next|;.X. |
|00002250| 7d 0a 58 09 7d 0a 58 0a | 58 09 2f 2a 20 68 61 6e |}.X.}.X.|X./* han|
|00002260| 64 6c 65 20 74 68 65 20 | 6c 61 73 74 20 61 72 67 |dle the |last arg|
|00002270| 75 6d 65 6e 74 20 2a 2f | 0a 58 09 69 66 20 28 76 |ument */|.X.if (v|
|00002280| 61 6c 29 20 72 70 6c 61 | 63 64 28 6c 61 73 74 2c |al) rpla|cd(last,|
|00002290| 6e 65 78 74 61 72 67 28 | 29 29 3b 0a 58 09 65 6c |nextarg(|));.X.el|
|000022a0| 73 65 20 76 61 6c 20 3d | 20 6e 65 78 74 61 72 67 |se val =| nextarg|
|000022b0| 28 29 3b 0a 58 20 20 20 | 20 7d 0a 58 0a 58 20 20 |();.X | }.X.X |
|000022c0| 20 20 2f 2a 20 72 65 73 | 74 6f 72 65 20 74 68 65 | /* res|tore the|
|000022d0| 20 73 74 61 63 6b 20 2a | 2f 0a 58 20 20 20 20 78 | stack *|/.X x|
|000022e0| 6c 70 6f 70 28 29 3b 0a | 58 0a 58 20 20 20 20 2f |lpop();.|X.X /|
|000022f0| 2a 20 72 65 74 75 72 6e | 20 74 68 65 20 6c 69 73 |* return| the lis|
|00002300| 74 20 2a 2f 0a 58 20 20 | 20 20 72 65 74 75 72 6e |t */.X | return|
|00002310| 20 28 76 61 6c 29 3b 0a | 58 7d 0a 58 0a 58 2f 2a | (val);.|X}.X.X/*|
|00002320| 20 78 72 65 76 65 72 73 | 65 20 2d 20 62 75 69 6c | xrevers|e - buil|
|00002330| 74 2d 69 6e 20 66 75 6e | 63 74 69 6f 6e 20 72 65 |t-in fun|ction re|
|00002340| 76 65 72 73 65 20 2a 2f | 0a 58 4c 56 41 4c 20 78 |verse */|.XLVAL x|
|00002350| 72 65 76 65 72 73 65 28 | 29 0a 58 7b 0a 58 20 20 |reverse(|).X{.X |
|00002360| 20 20 4c 56 41 4c 20 6c | 69 73 74 2c 76 61 6c 3b | LVAL l|ist,val;|
|00002370| 0a 58 0a 58 20 20 20 20 | 2f 2a 20 70 72 6f 74 65 |.X.X |/* prote|
|00002380| 63 74 20 73 6f 6d 65 20 | 70 6f 69 6e 74 65 72 73 |ct some |pointers|
|00002390| 20 2a 2f 0a 58 20 20 20 | 20 78 6c 73 61 76 65 31 | */.X | xlsave1|
|000023a0| 28 76 61 6c 29 3b 0a 58 | 0a 58 20 20 20 20 2f 2a |(val);.X|.X /*|
|000023b0| 20 67 65 74 20 74 68 65 | 20 6c 69 73 74 20 74 6f | get the| list to|
|000023c0| 20 72 65 76 65 72 73 65 | 20 2a 2f 0a 58 20 20 20 | reverse| */.X |
|000023d0| 20 6c 69 73 74 20 3d 20 | 78 6c 67 61 6c 69 73 74 | list = |xlgalist|
|000023e0| 28 29 3b 0a 58 20 20 20 | 20 78 6c 6c 61 73 74 61 |();.X | xllasta|
|000023f0| 72 67 28 29 3b 0a 58 0a | 58 20 20 20 20 2f 2a 20 |rg();.X.|X /* |
|00002400| 61 70 70 65 6e 64 20 65 | 61 63 68 20 65 6c 65 6d |append e|ach elem|
|00002410| 65 6e 74 20 74 6f 20 74 | 68 65 20 68 65 61 64 20 |ent to t|he head |
|00002420| 6f 66 20 74 68 65 20 72 | 65 73 75 6c 74 20 6c 69 |of the r|esult li|
|00002430| 73 74 20 2a 2f 0a 58 20 | 20 20 20 66 6f 72 20 28 |st */.X | for (|
|00002440| 76 61 6c 20 3d 20 4e 49 | 4c 3b 20 63 6f 6e 73 70 |val = NI|L; consp|
|00002450| 28 6c 69 73 74 29 3b 20 | 6c 69 73 74 20 3d 20 63 |(list); |list = c|
|00002460| 64 72 28 6c 69 73 74 29 | 29 0a 58 09 76 61 6c 20 |dr(list)|).X.val |
|00002470| 3d 20 63 6f 6e 73 28 63 | 61 72 28 6c 69 73 74 29 |= cons(c|ar(list)|
|00002480| 2c 76 61 6c 29 3b 0a 58 | 0a 58 20 20 20 20 2f 2a |,val);.X|.X /*|
|00002490| 20 72 65 73 74 6f 72 65 | 20 74 68 65 20 73 74 61 | restore| the sta|
|000024a0| 63 6b 20 2a 2f 0a 58 20 | 20 20 20 78 6c 70 6f 70 |ck */.X | xlpop|
|000024b0| 28 29 3b 0a 58 0a 58 20 | 20 20 20 2f 2a 20 72 65 |();.X.X | /* re|
|000024c0| 74 75 72 6e 20 74 68 65 | 20 6c 69 73 74 20 2a 2f |turn the| list */|
|000024d0| 0a 58 20 20 20 20 72 65 | 74 75 72 6e 20 28 76 61 |.X re|turn (va|
|000024e0| 6c 29 3b 0a 58 7d 0a 58 | 0a 58 2f 2a 20 78 6c 61 |l);.X}.X|.X/* xla|
|000024f0| 73 74 20 2d 20 72 65 74 | 75 72 6e 20 74 68 65 20 |st - ret|urn the |
|00002500| 6c 61 73 74 20 63 6f 6e | 73 20 6f 66 20 61 20 6c |last con|s of a l|
|00002510| 69 73 74 20 2a 2f 0a 58 | 4c 56 41 4c 20 78 6c 61 |ist */.X|LVAL xla|
|00002520| 73 74 28 29 0a 58 7b 0a | 58 20 20 20 20 4c 56 41 |st().X{.|X LVA|
|00002530| 4c 20 6c 69 73 74 3b 0a | 58 0a 58 20 20 20 20 2f |L list;.|X.X /|
|00002540| 2a 20 67 65 74 20 74 68 | 65 20 6c 69 73 74 20 2a |* get th|e list *|
|00002550| 2f 0a 58 20 20 20 20 6c | 69 73 74 20 3d 20 78 6c |/.X l|ist = xl|
|00002560| 67 61 6c 69 73 74 28 29 | 3b 0a 58 20 20 20 20 78 |galist()|;.X x|
|00002570| 6c 6c 61 73 74 61 72 67 | 28 29 3b 0a 58 0a 58 20 |llastarg|();.X.X |
|00002580| 20 20 20 2f 2a 20 66 69 | 6e 64 20 74 68 65 20 6c | /* fi|nd the l|
|00002590| 61 73 74 20 63 6f 6e 73 | 20 2a 2f 0a 58 20 20 20 |ast cons| */.X |
|000025a0| 20 77 68 69 6c 65 20 28 | 63 6f 6e 73 70 28 6c 69 | while (|consp(li|
|000025b0| 73 74 29 20 26 26 20 63 | 64 72 28 6c 69 73 74 29 |st) && c|dr(list)|
|000025c0| 29 0a 58 09 6c 69 73 74 | 20 3d 20 63 64 72 28 6c |).X.list| = cdr(l|
|000025d0| 69 73 74 29 3b 0a 58 0a | 58 20 20 20 20 2f 2a 20 |ist);.X.|X /* |
|000025e0| 72 65 74 75 72 6e 20 74 | 68 65 20 6c 61 73 74 20 |return t|he last |
|000025f0| 65 6c 65 6d 65 6e 74 20 | 2a 2f 0a 58 20 20 20 20 |element |*/.X |
|00002600| 72 65 74 75 72 6e 20 28 | 6c 69 73 74 29 3b 0a 58 |return (|list);.X|
|00002610| 7d 0a 58 0a 58 2f 2a 20 | 78 6d 65 6d 62 65 72 20 |}.X.X/* |xmember |
|00002620| 2d 20 62 75 69 6c 74 2d | 69 6e 20 66 75 6e 63 74 |- built-|in funct|
|00002630| 69 6f 6e 20 27 6d 65 6d | 62 65 72 27 20 2a 2f 0a |ion 'mem|ber' */.|
|00002640| 58 4c 56 41 4c 20 78 6d | 65 6d 62 65 72 28 29 0a |XLVAL xm|ember().|
|00002650| 58 7b 0a 58 20 20 20 20 | 4c 56 41 4c 20 78 2c 6c |X{.X |LVAL x,l|
|00002660| 69 73 74 2c 66 63 6e 2c | 76 61 6c 3b 0a 58 20 20 |ist,fcn,|val;.X |
|00002670| 20 20 69 6e 74 20 74 72 | 65 73 75 6c 74 3b 0a 58 | int tr|esult;.X|
|00002680| 0a 58 20 20 20 20 2f 2a | 20 70 72 6f 74 65 63 74 |.X /*| protect|
|00002690| 20 73 6f 6d 65 20 70 6f | 69 6e 74 65 72 73 20 2a | some po|inters *|
|000026a0| 2f 0a 58 20 20 20 20 78 | 6c 73 61 76 65 31 28 66 |/.X x|lsave1(f|
|000026b0| 63 6e 29 3b 0a 58 0a 58 | 20 20 20 20 2f 2a 20 67 |cn);.X.X| /* g|
|000026c0| 65 74 20 74 68 65 20 65 | 78 70 72 65 73 73 69 6f |et the e|xpressio|
|000026d0| 6e 20 74 6f 20 6c 6f 6f | 6b 20 66 6f 72 20 61 6e |n to loo|k for an|
|000026e0| 64 20 74 68 65 20 6c 69 | 73 74 20 2a 2f 0a 58 20 |d the li|st */.X |
|000026f0| 20 20 20 78 20 3d 20 78 | 6c 67 65 74 61 72 67 28 | x = x|lgetarg(|
|00002700| 29 3b 0a 58 20 20 20 20 | 6c 69 73 74 20 3d 20 78 |);.X |list = x|
|00002710| 6c 67 61 6c 69 73 74 28 | 29 3b 0a 58 20 20 20 20 |lgalist(|);.X |
|00002720| 78 6c 74 65 73 74 28 26 | 66 63 6e 2c 26 74 72 65 |xltest(&|fcn,&tre|
|00002730| 73 75 6c 74 29 3b 0a 58 | 0a 58 20 20 20 20 2f 2a |sult);.X|.X /*|
|00002740| 20 6c 6f 6f 6b 20 66 6f | 72 20 74 68 65 20 65 78 | look fo|r the ex|
|00002750| 70 72 65 73 73 69 6f 6e | 20 2a 2f 0a 58 20 20 20 |pression| */.X |
|00002760| 20 66 6f 72 20 28 76 61 | 6c 20 3d 20 4e 49 4c 3b | for (va|l = NIL;|
|00002770| 20 63 6f 6e 73 70 28 6c | 69 73 74 29 3b 20 6c 69 | consp(l|ist); li|
|00002780| 73 74 20 3d 20 63 64 72 | 28 6c 69 73 74 29 29 0a |st = cdr|(list)).|
|00002790| 58 09 69 66 20 28 64 6f | 74 65 73 74 32 28 78 2c |X.if (do|test2(x,|
|000027a0| 63 61 72 28 6c 69 73 74 | 29 2c 66 63 6e 29 20 3d |car(list|),fcn) =|
|000027b0| 3d 20 74 72 65 73 75 6c | 74 29 20 7b 0a 58 09 20 |= tresul|t) {.X. |
|000027c0| 20 20 20 76 61 6c 20 3d | 20 6c 69 73 74 3b 0a 58 | val =| list;.X|
|000027d0| 09 20 20 20 20 62 72 65 | 61 6b 3b 0a 58 09 7d 0a |. bre|ak;.X.}.|
|000027e0| 58 0a 58 20 20 20 20 2f | 2a 20 72 65 73 74 6f 72 |X.X /|* restor|
|000027f0| 65 20 74 68 65 20 73 74 | 61 63 6b 20 2a 2f 0a 58 |e the st|ack */.X|
|00002800| 20 20 20 20 78 6c 70 6f | 70 28 29 3b 0a 58 0a 58 | xlpo|p();.X.X|
|00002810| 20 20 20 20 2f 2a 20 72 | 65 74 75 72 6e 20 74 68 | /* r|eturn th|
|00002820| 65 20 72 65 73 75 6c 74 | 20 2a 2f 0a 58 20 20 20 |e result| */.X |
|00002830| 20 72 65 74 75 72 6e 20 | 28 76 61 6c 29 3b 0a 58 | return |(val);.X|
|00002840| 7d 0a 58 0a 58 2f 2a 20 | 78 61 73 73 6f 63 20 2d |}.X.X/* |xassoc -|
|00002850| 20 62 75 69 6c 74 2d 69 | 6e 20 66 75 6e 63 74 69 | built-i|n functi|
|00002860| 6f 6e 20 27 61 73 73 6f | 63 27 20 2a 2f 0a 58 4c |on 'asso|c' */.XL|
|00002870| 56 41 4c 20 78 61 73 73 | 6f 63 28 29 0a 58 7b 0a |VAL xass|oc().X{.|
|00002880| 58 20 20 20 20 4c 56 41 | 4c 20 78 2c 61 6c 69 73 |X LVA|L x,alis|
|00002890| 74 2c 66 63 6e 2c 70 61 | 69 72 2c 76 61 6c 3b 0a |t,fcn,pa|ir,val;.|
|000028a0| 58 20 20 20 20 69 6e 74 | 20 74 72 65 73 75 6c 74 |X int| tresult|
|000028b0| 3b 0a 58 0a 58 20 20 20 | 20 2f 2a 20 70 72 6f 74 |;.X.X | /* prot|
|000028c0| 65 63 74 20 73 6f 6d 65 | 20 70 6f 69 6e 74 65 72 |ect some| pointer|
|000028d0| 73 20 2a 2f 0a 58 20 20 | 20 20 78 6c 73 61 76 65 |s */.X | xlsave|
|000028e0| 31 28 66 63 6e 29 3b 0a | 58 0a 58 20 20 20 20 2f |1(fcn);.|X.X /|
|000028f0| 2a 20 67 65 74 20 74 68 | 65 20 65 78 70 72 65 73 |* get th|e expres|
|00002900| 73 69 6f 6e 20 74 6f 20 | 6c 6f 6f 6b 20 66 6f 72 |sion to |look for|
|00002910| 20 61 6e 64 20 74 68 65 | 20 61 73 73 6f 63 69 61 | and the| associa|
|00002920| 74 69 6f 6e 20 6c 69 73 | 74 20 2a 2f 0a 58 20 20 |tion lis|t */.X |
|00002930| 20 20 78 20 3d 20 78 6c | 67 65 74 61 72 67 28 29 | x = xl|getarg()|
|00002940| 3b 0a 58 20 20 20 20 61 | 6c 69 73 74 20 3d 20 78 |;.X a|list = x|
|00002950| 6c 67 61 6c 69 73 74 28 | 29 3b 0a 58 20 20 20 20 |lgalist(|);.X |
|00002960| 78 6c 74 65 73 74 28 26 | 66 63 6e 2c 26 74 72 65 |xltest(&|fcn,&tre|
|00002970| 73 75 6c 74 29 3b 0a 58 | 0a 58 20 20 20 20 2f 2a |sult);.X|.X /*|
|00002980| 20 6c 6f 6f 6b 20 66 6f | 72 20 74 68 65 20 65 78 | look fo|r the ex|
|00002990| 70 72 65 73 73 69 6f 6e | 20 2a 2f 0a 58 20 20 20 |pression| */.X |
|000029a0| 20 66 6f 72 20 28 76 61 | 6c 20 3d 20 4e 49 4c 3b | for (va|l = NIL;|
|000029b0| 20 63 6f 6e 73 70 28 61 | 6c 69 73 74 29 3b 20 61 | consp(a|list); a|
|000029c0| 6c 69 73 74 20 3d 20 63 | 64 72 28 61 6c 69 73 74 |list = c|dr(alist|
|000029d0| 29 29 0a 58 09 69 66 20 | 28 28 70 61 69 72 20 3d |)).X.if |((pair =|
|000029e0| 20 63 61 72 28 61 6c 69 | 73 74 29 29 20 26 26 20 | car(ali|st)) && |
|000029f0| 63 6f 6e 73 70 28 70 61 | 69 72 29 29 0a 58 09 20 |consp(pa|ir)).X. |
|00002a00| 20 20 20 69 66 20 28 64 | 6f 74 65 73 74 32 28 78 | if (d|otest2(x|
|00002a10| 2c 63 61 72 28 70 61 69 | 72 29 2c 66 63 6e 29 20 |,car(pai|r),fcn) |
|00002a20| 3d 3d 20 74 72 65 73 75 | 6c 74 29 20 7b 0a 58 09 |== tresu|lt) {.X.|
|00002a30| 09 76 61 6c 20 3d 20 70 | 61 69 72 3b 0a 58 09 09 |.val = p|air;.X..|
|00002a40| 62 72 65 61 6b 3b 0a 58 | 09 20 20 20 20 7d 0a 58 |break;.X|. }.X|
|00002a50| 0a 58 20 20 20 20 2f 2a | 20 72 65 73 74 6f 72 65 |.X /*| restore|
|00002a60| 20 74 68 65 20 73 74 61 | 63 6b 20 2a 2f 0a 58 20 | the sta|ck */.X |
|00002a70| 20 20 20 78 6c 70 6f 70 | 28 29 3b 0a 58 0a 58 20 | xlpop|();.X.X |
|00002a80| 20 20 20 2f 2a 20 72 65 | 74 75 72 6e 20 72 65 73 | /* re|turn res|
|00002a90| 75 6c 74 20 2a 2f 0a 58 | 20 20 20 20 72 65 74 75 |ult */.X| retu|
|00002aa0| 72 6e 20 28 76 61 6c 29 | 3b 0a 58 7d 0a 58 0a 58 |rn (val)|;.X}.X.X|
|00002ab0| 2f 2a 20 78 73 75 62 73 | 74 20 2d 20 73 75 62 73 |/* xsubs|t - subs|
|00002ac0| 74 69 74 75 74 65 20 6f | 6e 65 20 65 78 70 72 65 |titute o|ne expre|
|00002ad0| 73 73 69 6f 6e 20 66 6f | 72 20 61 6e 6f 74 68 65 |ssion fo|r anothe|
|00002ae0| 72 20 2a 2f 0a 58 4c 56 | 41 4c 20 78 73 75 62 73 |r */.XLV|AL xsubs|
|00002af0| 74 28 29 0a 58 7b 0a 58 | 20 20 20 20 4c 56 41 4c |t().X{.X| LVAL|
|00002b00| 20 74 6f 2c 66 72 6f 6d | 2c 65 78 70 72 2c 66 63 | to,from|,expr,fc|
|00002b10| 6e 2c 76 61 6c 3b 0a 58 | 20 20 20 20 69 6e 74 20 |n,val;.X| int |
|00002b20| 74 72 65 73 75 6c 74 3b | 0a 58 0a 58 20 20 20 20 |tresult;|.X.X |
|00002b30| 2f 2a 20 70 72 6f 74 65 | 63 74 20 73 6f 6d 65 20 |/* prote|ct some |
|00002b40| 70 6f 69 6e 74 65 72 73 | 20 2a 2f 0a 58 20 20 20 |pointers| */.X |
|00002b50| 20 78 6c 73 61 76 65 31 | 28 66 63 6e 29 3b 0a 58 | xlsave1|(fcn);.X|
|00002b60| 0a 58 20 20 20 20 2f 2a | 20 67 65 74 20 74 68 65 |.X /*| get the|
|00002b70| 20 74 6f 20 76 61 6c 75 | 65 2c 20 74 68 65 20 66 | to valu|e, the f|
|00002b80| 72 6f 6d 20 76 61 6c 75 | 65 20 61 6e 64 20 74 68 |rom valu|e and th|
|00002b90| 65 20 65 78 70 72 65 73 | 73 69 6f 6e 20 2a 2f 0a |e expres|sion */.|
|00002ba0| 58 20 20 20 20 74 6f 20 | 3d 20 78 6c 67 65 74 61 |X to |= xlgeta|
|00002bb0| 72 67 28 29 3b 0a 58 20 | 20 20 20 66 72 6f 6d 20 |rg();.X | from |
|00002bc0| 3d 20 78 6c 67 65 74 61 | 72 67 28 29 3b 0a 58 20 |= xlgeta|rg();.X |
|00002bd0| 20 20 20 65 78 70 72 20 | 3d 20 78 6c 67 65 74 61 | expr |= xlgeta|
|00002be0| 72 67 28 29 3b 0a 58 20 | 20 20 20 78 6c 74 65 73 |rg();.X | xltes|
|00002bf0| 74 28 26 66 63 6e 2c 26 | 74 72 65 73 75 6c 74 29 |t(&fcn,&|tresult)|
|00002c00| 3b 0a 58 0a 58 20 20 20 | 20 2f 2a 20 64 6f 20 74 |;.X.X | /* do t|
|00002c10| 68 65 20 73 75 62 73 74 | 69 74 75 74 69 6f 6e 20 |he subst|itution |
|00002c20| 2a 2f 0a 58 20 20 20 20 | 76 61 6c 20 3d 20 73 75 |*/.X |val = su|
|00002c30| 62 73 74 28 74 6f 2c 66 | 72 6f 6d 2c 65 78 70 72 |bst(to,f|rom,expr|
|00002c40| 2c 66 63 6e 2c 74 72 65 | 73 75 6c 74 29 3b 0a 58 |,fcn,tre|sult);.X|
|00002c50| 0a 58 20 20 20 20 2f 2a | 20 72 65 73 74 6f 72 65 |.X /*| restore|
|00002c60| 20 74 68 65 20 73 74 61 | 63 6b 20 2a 2f 0a 58 20 | the sta|ck */.X |
|00002c70| 20 20 20 78 6c 70 6f 70 | 28 29 3b 0a 58 0a 58 20 | xlpop|();.X.X |
|00002c80| 20 20 20 2f 2a 20 72 65 | 74 75 72 6e 20 74 68 65 | /* re|turn the|
|00002c90| 20 72 65 73 75 6c 74 20 | 2a 2f 0a 58 20 20 20 20 | result |*/.X |
|00002ca0| 72 65 74 75 72 6e 20 28 | 76 61 6c 29 3b 0a 58 7d |return (|val);.X}|
|00002cb0| 0a 58 0a 58 2f 2a 20 73 | 75 62 73 74 20 2d 20 73 |.X.X/* s|ubst - s|
|00002cc0| 75 62 73 74 69 74 75 74 | 65 20 6f 6e 65 20 65 78 |ubstitut|e one ex|
|00002cd0| 70 72 65 73 73 69 6f 6e | 20 66 6f 72 20 61 6e 6f |pression| for ano|
|00002ce0| 74 68 65 72 20 2a 2f 0a | 58 4c 4f 43 41 4c 20 4c |ther */.|XLOCAL L|
|00002cf0| 56 41 4c 20 73 75 62 73 | 74 28 74 6f 2c 66 72 6f |VAL subs|t(to,fro|
|00002d00| 6d 2c 65 78 70 72 2c 66 | 63 6e 2c 74 72 65 73 75 |m,expr,f|cn,tresu|
|00002d10| 6c 74 29 0a 58 20 20 4c | 56 41 4c 20 74 6f 2c 66 |lt).X L|VAL to,f|
|00002d20| 72 6f 6d 2c 65 78 70 72 | 2c 66 63 6e 3b 20 69 6e |rom,expr|,fcn; in|
|00002d30| 74 20 74 72 65 73 75 6c | 74 3b 0a 58 7b 0a 58 20 |t tresul|t;.X{.X |
|00002d40| 20 20 20 4c 56 41 4c 20 | 63 61 72 76 61 6c 2c 63 | LVAL |carval,c|
|00002d50| 64 72 76 61 6c 3b 0a 58 | 0a 58 20 20 20 20 69 66 |drval;.X|.X if|
|00002d60| 20 28 64 6f 74 65 73 74 | 32 28 65 78 70 72 2c 66 | (dotest|2(expr,f|
|00002d70| 72 6f 6d 2c 66 63 6e 29 | 20 3d 3d 20 74 72 65 73 |rom,fcn)| == tres|
|00002d80| 75 6c 74 29 0a 58 09 72 | 65 74 75 72 6e 20 28 74 |ult).X.r|eturn (t|
|00002d90| 6f 29 3b 0a 58 20 20 20 | 20 65 6c 73 65 20 69 66 |o);.X | else if|
|00002da0| 20 28 63 6f 6e 73 70 28 | 65 78 70 72 29 29 20 7b | (consp(|expr)) {|
|00002db0| 0a 58 09 78 6c 73 61 76 | 65 31 28 63 61 72 76 61 |.X.xlsav|e1(carva|
|00002dc0| 6c 29 3b 0a 58 09 63 61 | 72 76 61 6c 20 3d 20 73 |l);.X.ca|rval = s|
|00002dd0| 75 62 73 74 28 74 6f 2c | 66 72 6f 6d 2c 63 61 72 |ubst(to,|from,car|
|00002de0| 28 65 78 70 72 29 2c 66 | 63 6e 2c 74 72 65 73 75 |(expr),f|cn,tresu|
|00002df0| 6c 74 29 3b 0a 58 09 63 | 64 72 76 61 6c 20 3d 20 |lt);.X.c|drval = |
|00002e00| 73 75 62 73 74 28 74 6f | 2c 66 72 6f 6d 2c 63 64 |subst(to|,from,cd|
|00002e10| 72 28 65 78 70 72 29 2c | 66 63 6e 2c 74 72 65 73 |r(expr),|fcn,tres|
|00002e20| 75 6c 74 29 3b 0a 58 09 | 78 6c 70 6f 70 28 29 3b |ult);.X.|xlpop();|
|00002e30| 0a 58 09 72 65 74 75 72 | 6e 20 28 63 6f 6e 73 28 |.X.retur|n (cons(|
|00002e40| 63 61 72 76 61 6c 2c 63 | 64 72 76 61 6c 29 29 3b |carval,c|drval));|
|00002e50| 0a 58 20 20 20 20 7d 0a | 58 20 20 20 20 65 6c 73 |.X }.|X els|
|00002e60| 65 0a 58 09 72 65 74 75 | 72 6e 20 28 65 78 70 72 |e.X.retu|rn (expr|
|00002e70| 29 3b 0a 58 7d 0a 58 0a | 58 2f 2a 20 78 73 75 62 |);.X}.X.|X/* xsub|
|00002e80| 6c 69 73 20 2d 20 73 75 | 62 73 74 69 74 75 74 65 |lis - su|bstitute|
|00002e90| 20 75 73 69 6e 67 20 61 | 6e 20 61 73 73 6f 63 69 | using a|n associ|
|00002ea0| 61 74 69 6f 6e 20 6c 69 | 73 74 20 2a 2f 0a 58 4c |ation li|st */.XL|
|00002eb0| 56 41 4c 20 78 73 75 62 | 6c 69 73 28 29 0a 58 7b |VAL xsub|lis().X{|
|00002ec0| 0a 58 20 20 20 20 4c 56 | 41 4c 20 61 6c 69 73 74 |.X LV|AL alist|
|00002ed0| 2c 65 78 70 72 2c 66 63 | 6e 2c 76 61 6c 3b 0a 58 |,expr,fc|n,val;.X|
|00002ee0| 20 20 20 20 69 6e 74 20 | 74 72 65 73 75 6c 74 3b | int |tresult;|
|00002ef0| 0a 58 0a 58 20 20 20 20 | 2f 2a 20 70 72 6f 74 65 |.X.X |/* prote|
|00002f00| 63 74 20 73 6f 6d 65 20 | 70 6f 69 6e 74 65 72 73 |ct some |pointers|
|00002f10| 20 2a 2f 0a 58 20 20 20 | 20 78 6c 73 61 76 65 31 | */.X | xlsave1|
|00002f20| 28 66 63 6e 29 3b 0a 58 | 0a 58 20 20 20 20 2f 2a |(fcn);.X|.X /*|
|00002f30| 20 67 65 74 20 74 68 65 | 20 61 73 73 6f 63 61 74 | get the| assocat|
|00002f40| 69 6f 6e 20 6c 69 73 74 | 20 61 6e 64 20 74 68 65 |ion list| and the|
|00002f50| 20 65 78 70 72 65 73 73 | 69 6f 6e 20 2a 2f 0a 58 | express|ion */.X|
|00002f60| 20 20 20 20 61 6c 69 73 | 74 20 3d 20 78 6c 67 61 | alis|t = xlga|
|00002f70| 6c 69 73 74 28 29 3b 0a | 58 20 20 20 20 65 78 70 |list();.|X exp|
|00002f80| 72 20 3d 20 78 6c 67 65 | 74 61 72 67 28 29 3b 0a |r = xlge|targ();.|
|00002f90| 58 20 20 20 20 78 6c 74 | 65 73 74 28 26 66 63 6e |X xlt|est(&fcn|
|00002fa0| 2c 26 74 72 65 73 75 6c | 74 29 3b 0a 58 0a 58 20 |,&tresul|t);.X.X |
|00002fb0| 20 20 20 2f 2a 20 64 6f | 20 74 68 65 20 73 75 62 | /* do| the sub|
|00002fc0| 73 74 69 74 75 74 69 6f | 6e 20 2a 2f 0a 58 20 20 |stitutio|n */.X |
|00002fd0| 20 20 76 61 6c 20 3d 20 | 73 75 62 6c 69 73 28 61 | val = |sublis(a|
|00002fe0| 6c 69 73 74 2c 65 78 70 | 72 2c 66 63 6e 2c 74 72 |list,exp|r,fcn,tr|
|00002ff0| 65 73 75 6c 74 29 3b 0a | 58 0a 58 20 20 20 20 2f |esult);.|X.X /|
|00003000| 2a 20 72 65 73 74 6f 72 | 65 20 74 68 65 20 73 74 |* restor|e the st|
|00003010| 61 63 6b 20 2a 2f 0a 58 | 20 20 20 20 78 6c 70 6f |ack */.X| xlpo|
|00003020| 70 28 29 3b 0a 58 0a 58 | 20 20 20 20 2f 2a 20 72 |p();.X.X| /* r|
|00003030| 65 74 75 72 6e 20 74 68 | 65 20 72 65 73 75 6c 74 |eturn th|e result|
|00003040| 20 2a 2f 0a 58 20 20 20 | 20 72 65 74 75 72 6e 20 | */.X | return |
|00003050| 28 76 61 6c 29 3b 0a 58 | 7d 0a 58 0a 58 2f 2a 20 |(val);.X|}.X.X/* |
|00003060| 73 75 62 6c 69 73 20 2d | 20 73 75 62 73 74 69 74 |sublis -| substit|
|00003070| 75 74 65 20 75 73 69 6e | 67 20 61 6e 20 61 73 73 |ute usin|g an ass|
|00003080| 6f 63 69 61 74 69 6f 6e | 20 6c 69 73 74 20 2a 2f |ociation| list */|
|00003090| 0a 58 4c 4f 43 41 4c 20 | 4c 56 41 4c 20 73 75 62 |.XLOCAL |LVAL sub|
|000030a0| 6c 69 73 28 61 6c 69 73 | 74 2c 65 78 70 72 2c 66 |lis(alis|t,expr,f|
|000030b0| 63 6e 2c 74 72 65 73 75 | 6c 74 29 0a 58 20 20 4c |cn,tresu|lt).X L|
|000030c0| 56 41 4c 20 61 6c 69 73 | 74 2c 65 78 70 72 2c 66 |VAL alis|t,expr,f|
|000030d0| 63 6e 3b 20 69 6e 74 20 | 74 72 65 73 75 6c 74 3b |cn; int |tresult;|
|000030e0| 0a 58 7b 0a 58 20 20 20 | 20 4c 56 41 4c 20 63 61 |.X{.X | LVAL ca|
|000030f0| 72 76 61 6c 2c 63 64 72 | 76 61 6c 2c 70 61 69 72 |rval,cdr|val,pair|
|00003100| 3b 0a 58 0a 58 20 20 20 | 20 69 66 20 28 70 61 69 |;.X.X | if (pai|
|00003110| 72 20 3d 20 61 73 73 6f | 63 28 65 78 70 72 2c 61 |r = asso|c(expr,a|
|00003120| 6c 69 73 74 2c 66 63 6e | 2c 74 72 65 73 75 6c 74 |list,fcn|,tresult|
|00003130| 29 29 0a 58 09 72 65 74 | 75 72 6e 20 28 63 64 72 |)).X.ret|urn (cdr|
|00003140| 28 70 61 69 72 29 29 3b | 0a 58 20 20 20 20 65 6c |(pair));|.X el|
|00003150| 73 65 20 69 66 20 28 63 | 6f 6e 73 70 28 65 78 70 |se if (c|onsp(exp|
|00003160| 72 29 29 20 7b 0a 58 09 | 78 6c 73 61 76 65 31 28 |r)) {.X.|xlsave1(|
|00003170| 63 61 72 76 61 6c 29 3b | 0a 58 09 63 61 72 76 61 |carval);|.X.carva|
|00003180| 6c 20 3d 20 73 75 62 6c | 69 73 28 61 6c 69 73 74 |l = subl|is(alist|
|00003190| 2c 63 61 72 28 65 78 70 | 72 29 2c 66 63 6e 2c 74 |,car(exp|r),fcn,t|
|000031a0| 72 65 73 75 6c 74 29 3b | 0a 58 09 63 64 72 76 61 |result);|.X.cdrva|
|000031b0| 6c 20 3d 20 73 75 62 6c | 69 73 28 61 6c 69 73 74 |l = subl|is(alist|
|000031c0| 2c 63 64 72 28 65 78 70 | 72 29 2c 66 63 6e 2c 74 |,cdr(exp|r),fcn,t|
|000031d0| 72 65 73 75 6c 74 29 3b | 0a 58 09 78 6c 70 6f 70 |result);|.X.xlpop|
|000031e0| 28 29 3b 0a 58 09 72 65 | 74 75 72 6e 20 28 63 6f |();.X.re|turn (co|
|000031f0| 6e 73 28 63 61 72 76 61 | 6c 2c 63 64 72 76 61 6c |ns(carva|l,cdrval|
|00003200| 29 29 3b 0a 58 20 20 20 | 20 7d 0a 58 20 20 20 20 |));.X | }.X |
|00003210| 65 6c 73 65 0a 58 09 72 | 65 74 75 72 6e 20 28 65 |else.X.r|eturn (e|
|00003220| 78 70 72 29 3b 0a 58 7d | 0a 58 0a 58 2f 2a 20 61 |xpr);.X}|.X.X/* a|
|00003230| 73 73 6f 63 20 2d 20 66 | 69 6e 64 20 61 20 70 61 |ssoc - f|ind a pa|
|00003240| 69 72 20 69 6e 20 61 6e | 20 61 73 73 6f 63 69 61 |ir in an| associa|
|00003250| 74 69 6f 6e 20 6c 69 73 | 74 20 2a 2f 0a 58 4c 4f |tion lis|t */.XLO|
|00003260| 43 41 4c 20 4c 56 41 4c | 20 61 73 73 6f 63 28 65 |CAL LVAL| assoc(e|
|00003270| 78 70 72 2c 61 6c 69 73 | 74 2c 66 63 6e 2c 74 72 |xpr,alis|t,fcn,tr|
|00003280| 65 73 75 6c 74 29 0a 58 | 20 20 4c 56 41 4c 20 65 |esult).X| LVAL e|
|00003290| 78 70 72 2c 61 6c 69 73 | 74 2c 66 63 6e 3b 20 69 |xpr,alis|t,fcn; i|
|000032a0| 6e 74 20 74 72 65 73 75 | 6c 74 3b 0a 58 7b 0a 58 |nt tresu|lt;.X{.X|
|000032b0| 20 20 20 20 4c 56 41 4c | 20 70 61 69 72 3b 0a 58 | LVAL| pair;.X|
|000032c0| 0a 58 20 20 20 20 66 6f | 72 20 28 3b 20 63 6f 6e |.X fo|r (; con|
|000032d0| 73 70 28 61 6c 69 73 74 | 29 3b 20 61 6c 69 73 74 |sp(alist|); alist|
|000032e0| 20 3d 20 63 64 72 28 61 | 6c 69 73 74 29 29 0a 58 | = cdr(a|list)).X|
|000032f0| 09 69 66 20 28 28 70 61 | 69 72 20 3d 20 63 61 72 |.if ((pa|ir = car|
|00003300| 28 61 6c 69 73 74 29 29 | 20 26 26 20 63 6f 6e 73 |(alist))| && cons|
|00003310| 70 28 70 61 69 72 29 29 | 0a 58 09 20 20 20 20 69 |p(pair))|.X. i|
|00003320| 66 20 28 64 6f 74 65 73 | 74 32 28 65 78 70 72 2c |f (dotes|t2(expr,|
|00003330| 63 61 72 28 70 61 69 72 | 29 2c 66 63 6e 29 20 3d |car(pair|),fcn) =|
|00003340| 3d 20 74 72 65 73 75 6c | 74 29 0a 58 09 09 72 65 |= tresul|t).X..re|
|00003350| 74 75 72 6e 20 28 70 61 | 69 72 29 3b 0a 58 20 20 |turn (pa|ir);.X |
|00003360| 20 20 72 65 74 75 72 6e | 20 28 4e 49 4c 29 3b 0a | return| (NIL);.|
|00003370| 58 7d 0a 58 0a 58 2f 2a | 20 78 72 65 6d 6f 76 65 |X}.X.X/*| xremove|
|00003380| 20 2d 20 62 75 69 6c 74 | 2d 69 6e 20 66 75 6e 63 | - built|-in func|
|00003390| 74 69 6f 6e 20 27 72 65 | 6d 6f 76 65 27 20 2a 2f |tion 're|move' */|
|000033a0| 0a 58 4c 56 41 4c 20 78 | 72 65 6d 6f 76 65 28 29 |.XLVAL x|remove()|
|000033b0| 0a 58 7b 0a 58 20 20 20 | 20 4c 56 41 4c 20 78 2c |.X{.X | LVAL x,|
|000033c0| 6c 69 73 74 2c 66 63 6e | 2c 76 61 6c 2c 6c 61 73 |list,fcn|,val,las|
|000033d0| 74 2c 6e 65 78 74 3b 0a | 58 20 20 20 20 69 6e 74 |t,next;.|X int|
|000033e0| 20 74 72 65 73 75 6c 74 | 3b 0a 58 0a 58 20 20 20 | tresult|;.X.X |
|000033f0| 20 2f 2a 20 70 72 6f 74 | 65 63 74 20 73 6f 6d 65 | /* prot|ect some|
|00003400| 20 70 6f 69 6e 74 65 72 | 73 20 2a 2f 0a 58 20 20 | pointer|s */.X |
|00003410| 20 20 78 6c 73 74 6b 63 | 68 65 63 6b 28 32 29 3b | xlstkc|heck(2);|
|00003420| 0a 58 20 20 20 20 78 6c | 73 61 76 65 28 66 63 6e |.X xl|save(fcn|
|00003430| 29 3b 0a 58 20 20 20 20 | 78 6c 73 61 76 65 28 76 |);.X |xlsave(v|
|00003440| 61 6c 29 3b 0a 58 0a 58 | 20 20 20 20 2f 2a 20 67 |al);.X.X| /* g|
|00003450| 65 74 20 74 68 65 20 65 | 78 70 72 65 73 73 69 6f |et the e|xpressio|
|00003460| 6e 20 74 6f 20 72 65 6d | 6f 76 65 20 61 6e 64 20 |n to rem|ove and |
|00003470| 74 68 65 20 6c 69 73 74 | 20 2a 2f 0a 58 20 20 20 |the list| */.X |
|00003480| 20 78 20 3d 20 78 6c 67 | 65 74 61 72 67 28 29 3b | x = xlg|etarg();|
|00003490| 0a 58 20 20 20 20 6c 69 | 73 74 20 3d 20 78 6c 67 |.X li|st = xlg|
|000034a0| 61 6c 69 73 74 28 29 3b | 0a 58 20 20 20 20 78 6c |alist();|.X xl|
|000034b0| 74 65 73 74 28 26 66 63 | 6e 2c 26 74 72 65 73 75 |test(&fc|n,&tresu|
|000034c0| 6c 74 29 3b 0a 58 0a 58 | 20 20 20 20 2f 2a 20 72 |lt);.X.X| /* r|
|000034d0| 65 6d 6f 76 65 20 6d 61 | 74 63 68 65 73 20 2a 2f |emove ma|tches */|
|000034e0| 0a 58 20 20 20 20 66 6f | 72 20 28 3b 20 63 6f 6e |.X fo|r (; con|
|000034f0| 73 70 28 6c 69 73 74 29 | 3b 20 6c 69 73 74 20 3d |sp(list)|; list =|
|00003500| 20 63 64 72 28 6c 69 73 | 74 29 29 0a 58 0a 58 09 | cdr(lis|t)).X.X.|
|00003510| 2f 2a 20 63 68 65 63 6b | 20 74 6f 20 73 65 65 20 |/* check| to see |
|00003520| 69 66 20 74 68 69 73 20 | 65 6c 65 6d 65 6e 74 20 |if this |element |
|00003530| 73 68 6f 75 6c 64 20 62 | 65 20 64 65 6c 65 74 65 |should b|e delete|
|00003540| 64 20 2a 2f 0a 58 09 69 | 66 20 28 64 6f 74 65 73 |d */.X.i|f (dotes|
|00003550| 74 32 28 78 2c 63 61 72 | 28 6c 69 73 74 29 2c 66 |t2(x,car|(list),f|
|00003560| 63 6e 29 20 21 3d 20 74 | 72 65 73 75 6c 74 29 20 |cn) != t|result) |
|00003570| 7b 0a 58 09 20 20 20 20 | 6e 65 78 74 20 3d 20 63 |{.X. |next = c|
|00003580| 6f 6e 73 61 28 63 61 72 | 28 6c 69 73 74 29 29 3b |onsa(car|(list));|
|00003590| 0a 58 09 20 20 20 20 69 | 66 20 28 76 61 6c 29 20 |.X. i|f (val) |
|000035a0| 72 70 6c 61 63 64 28 6c | 61 73 74 2c 6e 65 78 74 |rplacd(l|ast,next|
|000035b0| 29 3b 0a 58 09 20 20 20 | 20 65 6c 73 65 20 76 61 |);.X. | else va|
|000035c0| 6c 20 3d 20 6e 65 78 74 | 3b 0a 58 09 20 20 20 20 |l = next|;.X. |
|000035d0| 6c 61 73 74 20 3d 20 6e | 65 78 74 3b 0a 58 09 7d |last = n|ext;.X.}|
|000035e0| 0a 58 0a 58 20 20 20 20 | 2f 2a 20 72 65 73 74 6f |.X.X |/* resto|
|000035f0| 72 65 20 74 68 65 20 73 | 74 61 63 6b 20 2a 2f 0a |re the s|tack */.|
|00003600| 58 20 20 20 20 78 6c 70 | 6f 70 6e 28 32 29 3b 0a |X xlp|opn(2);.|
|00003610| 58 0a 58 20 20 20 20 2f | 2a 20 72 65 74 75 72 6e |X.X /|* return|
|00003620| 20 74 68 65 20 75 70 64 | 61 74 65 64 20 6c 69 73 | the upd|ated lis|
|00003630| 74 20 2a 2f 0a 58 20 20 | 20 20 72 65 74 75 72 6e |t */.X | return|
|00003640| 20 28 76 61 6c 29 3b 0a | 58 7d 0a 58 0a 58 2f 2a | (val);.|X}.X.X/*|
|00003650| 20 78 72 65 6d 69 66 20 | 2d 20 62 75 69 6c 74 2d | xremif |- built-|
|00003660| 69 6e 20 66 75 6e 63 74 | 69 6f 6e 20 27 72 65 6d |in funct|ion 'rem|
|00003670| 6f 76 65 2d 69 66 27 20 | 2a 2f 0a 58 4c 56 41 4c |ove-if' |*/.XLVAL|
|00003680| 20 78 72 65 6d 69 66 28 | 29 0a 58 7b 0a 58 20 20 | xremif(|).X{.X |
|00003690| 20 20 4c 56 41 4c 20 72 | 65 6d 69 66 28 29 3b 0a | LVAL r|emif();.|
|000036a0| 58 20 20 20 20 72 65 74 | 75 72 6e 20 28 72 65 6d |X ret|urn (rem|
|000036b0| 69 66 28 54 52 55 45 29 | 29 3b 0a 58 7d 0a 58 0a |if(TRUE)|);.X}.X.|
|000036c0| 58 2f 2a 20 78 72 65 6d | 69 66 6e 6f 74 20 2d 20 |X/* xrem|ifnot - |
|000036d0| 62 75 69 6c 74 2d 69 6e | 20 66 75 6e 63 74 69 6f |built-in| functio|
|000036e0| 6e 20 27 72 65 6d 6f 76 | 65 2d 69 66 2d 6e 6f 74 |n 'remov|e-if-not|
|000036f0| 27 20 2a 2f 0a 58 4c 56 | 41 4c 20 78 72 65 6d 69 |' */.XLV|AL xremi|
|00003700| 66 6e 6f 74 28 29 0a 58 | 7b 0a 58 20 20 20 20 4c |fnot().X|{.X L|
|00003710| 56 41 4c 20 72 65 6d 69 | 66 28 29 3b 0a 58 20 20 |VAL remi|f();.X |
|00003720| 20 20 72 65 74 75 72 6e | 20 28 72 65 6d 69 66 28 | return| (remif(|
|00003730| 46 41 4c 53 45 29 29 3b | 0a 58 7d 0a 58 0a 58 2f |FALSE));|.X}.X.X/|
|00003740| 2a 20 72 65 6d 69 66 20 | 2d 20 63 6f 6d 6d 6f 6e |* remif |- common|
|00003750| 20 63 6f 64 65 20 66 6f | 72 20 27 72 65 6d 6f 76 | code fo|r 'remov|
|00003760| 65 2d 69 66 27 20 61 6e | 64 20 27 72 65 6d 6f 76 |e-if' an|d 'remov|
|00003770| 65 2d 69 66 2d 6e 6f 74 | 27 20 2a 2f 0a 58 4c 4f |e-if-not|' */.XLO|
|00003780| 43 41 4c 20 4c 56 41 4c | 20 72 65 6d 69 66 28 74 |CAL LVAL| remif(t|
|00003790| 72 65 73 75 6c 74 29 0a | 58 20 20 69 6e 74 20 74 |result).|X int t|
|000037a0| 72 65 73 75 6c 74 3b 0a | 58 7b 0a 58 20 20 20 20 |result;.|X{.X |
|000037b0| 4c 56 41 4c 20 6c 69 73 | 74 2c 66 63 6e 2c 76 61 |LVAL lis|t,fcn,va|
|000037c0| 6c 2c 6c 61 73 74 2c 6e | 65 78 74 3b 0a 58 0a 58 |l,last,n|ext;.X.X|
|000037d0| 20 20 20 20 2f 2a 20 70 | 72 6f 74 65 63 74 20 73 | /* p|rotect s|
|000037e0| 6f 6d 65 20 70 6f 69 6e | 74 65 72 73 20 2a 2f 0a |ome poin|ters */.|
|000037f0| 58 20 20 20 20 78 6c 73 | 74 6b 63 68 65 63 6b 28 |X xls|tkcheck(|
|00003800| 32 29 3b 0a 58 20 20 20 | 20 78 6c 73 61 76 65 28 |2);.X | xlsave(|
|00003810| 66 63 6e 29 3b 0a 58 20 | 20 20 20 78 6c 73 61 76 |fcn);.X | xlsav|
|00003820| 65 28 76 61 6c 29 3b 0a | 58 0a 58 20 20 20 20 2f |e(val);.|X.X /|
|00003830| 2a 20 67 65 74 20 74 68 | 65 20 65 78 70 72 65 73 |* get th|e expres|
|00003840| 73 69 6f 6e 20 74 6f 20 | 72 65 6d 6f 76 65 20 61 |sion to |remove a|
|00003850| 6e 64 20 74 68 65 20 6c | 69 73 74 20 2a 2f 0a 58 |nd the l|ist */.X|
|00003860| 20 20 20 20 66 63 6e 20 | 3d 20 78 6c 67 65 74 61 | fcn |= xlgeta|
|00003870| 72 67 28 29 3b 0a 58 20 | 20 20 20 6c 69 73 74 20 |rg();.X | list |
|00003880| 3d 20 78 6c 67 61 6c 69 | 73 74 28 29 3b 0a 58 20 |= xlgali|st();.X |
|00003890| 20 20 20 78 6c 6c 61 73 | 74 61 72 67 28 29 3b 0a | xllas|targ();.|
|000038a0| 58 0a 58 20 20 20 20 2f | 2a 20 72 65 6d 6f 76 65 |X.X /|* remove|
|000038b0| 20 6d 61 74 63 68 65 73 | 20 2a 2f 0a 58 20 20 20 | matches| */.X |
|000038c0| 20 66 6f 72 20 28 3b 20 | 63 6f 6e 73 70 28 6c 69 | for (; |consp(li|
|000038d0| 73 74 29 3b 20 6c 69 73 | 74 20 3d 20 63 64 72 28 |st); lis|t = cdr(|
|000038e0| 6c 69 73 74 29 29 0a 58 | 0a 58 09 2f 2a 20 63 68 |list)).X|.X./* ch|
|000038f0| 65 63 6b 20 74 6f 20 73 | 65 65 20 69 66 20 74 68 |eck to s|ee if th|
|00003900| 69 73 20 65 6c 65 6d 65 | 6e 74 20 73 68 6f 75 6c |is eleme|nt shoul|
|00003910| 64 20 62 65 20 64 65 6c | 65 74 65 64 20 2a 2f 0a |d be del|eted */.|
|00003920| 58 09 69 66 20 28 64 6f | 74 65 73 74 31 28 63 61 |X.if (do|test1(ca|
|00003930| 72 28 6c 69 73 74 29 2c | 66 63 6e 29 20 21 3d 20 |r(list),|fcn) != |
|00003940| 74 72 65 73 75 6c 74 29 | 20 7b 0a 58 09 20 20 20 |tresult)| {.X. |
|00003950| 20 6e 65 78 74 20 3d 20 | 63 6f 6e 73 61 28 63 61 | next = |consa(ca|
|00003960| 72 28 6c 69 73 74 29 29 | 3b 0a 58 09 20 20 20 20 |r(list))|;.X. |
|00003970| 69 66 20 28 76 61 6c 29 | 20 72 70 6c 61 63 64 28 |if (val)| rplacd(|
|00003980| 6c 61 73 74 2c 6e 65 78 | 74 29 3b 0a 58 09 20 20 |last,nex|t);.X. |
|00003990| 20 20 65 6c 73 65 20 76 | 61 6c 20 3d 20 6e 65 78 | else v|al = nex|
|000039a0| 74 3b 0a 58 09 20 20 20 | 20 6c 61 73 74 20 3d 20 |t;.X. | last = |
|000039b0| 6e 65 78 74 3b 0a 58 09 | 7d 0a 58 0a 58 20 20 20 |next;.X.|}.X.X |
|000039c0| 20 2f 2a 20 72 65 73 74 | 6f 72 65 20 74 68 65 20 | /* rest|ore the |
|000039d0| 73 74 61 63 6b 20 2a 2f | 0a 58 20 20 20 20 78 6c |stack */|.X xl|
|000039e0| 70 6f 70 6e 28 32 29 3b | 0a 58 0a 58 20 20 20 20 |popn(2);|.X.X |
|000039f0| 2f 2a 20 72 65 74 75 72 | 6e 20 74 68 65 20 75 70 |/* retur|n the up|
|00003a00| 64 61 74 65 64 20 6c 69 | 73 74 20 2a 2f 0a 58 20 |dated li|st */.X |
|00003a10| 20 20 20 72 65 74 75 72 | 6e 20 28 76 61 6c 29 3b | retur|n (val);|
|00003a20| 0a 58 7d 0a 58 0a 58 2f | 2a 20 64 6f 74 65 73 74 |.X}.X.X/|* dotest|
|00003a30| 31 20 2d 20 63 61 6c 6c | 20 61 20 74 65 73 74 20 |1 - call| a test |
|00003a40| 66 75 6e 63 74 69 6f 6e | 20 77 69 74 68 20 6f 6e |function| with on|
|00003a50| 65 20 61 72 67 75 6d 65 | 6e 74 20 2a 2f 0a 58 69 |e argume|nt */.Xi|
|00003a60| 6e 74 20 64 6f 74 65 73 | 74 31 28 61 72 67 2c 66 |nt dotes|t1(arg,f|
|00003a70| 75 6e 29 0a 58 20 20 4c | 56 41 4c 20 61 72 67 2c |un).X L|VAL arg,|
|00003a80| 66 75 6e 3b 0a 58 7b 0a | 58 20 20 20 20 4c 56 41 |fun;.X{.|X LVA|
|00003a90| 4c 20 2a 6e 65 77 66 70 | 3b 0a 58 0a 58 20 20 20 |L *newfp|;.X.X |
|00003aa0| 20 2f 2a 20 63 72 65 61 | 74 65 20 74 68 65 20 6e | /* crea|te the n|
|00003ab0| 65 77 20 63 61 6c 6c 20 | 66 72 61 6d 65 20 2a 2f |ew call |frame */|
|00003ac0| 0a 58 20 20 20 20 6e 65 | 77 66 70 20 3d 20 78 6c |.X ne|wfp = xl|
|00003ad0| 73 70 3b 0a 58 20 20 20 | 20 70 75 73 68 61 72 67 |sp;.X | pusharg|
|00003ae0| 28 63 76 66 69 78 6e 75 | 6d 28 28 46 49 58 54 59 |(cvfixnu|m((FIXTY|
|00003af0| 50 45 29 28 6e 65 77 66 | 70 20 2d 20 78 6c 66 70 |PE)(newf|p - xlfp|
|00003b00| 29 29 29 3b 0a 58 20 20 | 20 20 70 75 73 68 61 72 |)));.X | pushar|
|00003b10| 67 28 66 75 6e 29 3b 0a | 58 20 20 20 20 70 75 73 |g(fun);.|X pus|
|00003b20| 68 61 72 67 28 63 76 66 | 69 78 6e 75 6d 28 28 46 |harg(cvf|ixnum((F|
|00003b30| 49 58 54 59 50 45 29 31 | 29 29 3b 0a 58 20 20 20 |IXTYPE)1|));.X |
|00003b40| 20 70 75 73 68 61 72 67 | 28 61 72 67 29 3b 0a 58 | pusharg|(arg);.X|
|00003b50| 20 20 20 20 78 6c 66 70 | 20 3d 20 6e 65 77 66 70 | xlfp| = newfp|
|00003b60| 3b 0a 58 0a 58 20 20 20 | 20 2f 2a 20 72 65 74 75 |;.X.X | /* retu|
|00003b70| 72 6e 20 74 68 65 20 72 | 65 73 75 6c 74 20 6f 66 |rn the r|esult of|
|00003b80| 20 61 70 70 6c 79 69 6e | 67 20 74 68 65 20 74 65 | applyin|g the te|
|00003b90| 73 74 20 66 75 6e 63 74 | 69 6f 6e 20 2a 2f 0a 58 |st funct|ion */.X|
|00003ba0| 20 20 20 20 72 65 74 75 | 72 6e 20 28 78 6c 61 70 | retu|rn (xlap|
|00003bb0| 70 6c 79 28 31 29 20 21 | 3d 20 4e 49 4c 29 3b 0a |ply(1) !|= NIL);.|
|00003bc0| 58 0a 58 7d 0a 58 0a 58 | 2f 2a 20 64 6f 74 65 73 |X.X}.X.X|/* dotes|
|00003bd0| 74 32 20 2d 20 63 61 6c | 6c 20 61 20 74 65 73 74 |t2 - cal|l a test|
|00003be0| 20 66 75 6e 63 74 69 6f | 6e 20 77 69 74 68 20 74 | functio|n with t|
|00003bf0| 77 6f 20 61 72 67 75 6d | 65 6e 74 73 20 2a 2f 0a |wo argum|ents */.|
|00003c00| 58 69 6e 74 20 64 6f 74 | 65 73 74 32 28 61 72 67 |Xint dot|est2(arg|
|00003c10| 31 2c 61 72 67 32 2c 66 | 75 6e 29 0a 58 20 20 4c |1,arg2,f|un).X L|
|00003c20| 56 41 4c 20 61 72 67 31 | 2c 61 72 67 32 2c 66 75 |VAL arg1|,arg2,fu|
|00003c30| 6e 3b 0a 58 7b 0a 58 20 | 20 20 20 4c 56 41 4c 20 |n;.X{.X | LVAL |
|00003c40| 2a 6e 65 77 66 70 3b 0a | 58 0a 58 20 20 20 20 2f |*newfp;.|X.X /|
|00003c50| 2a 20 63 72 65 61 74 65 | 20 74 68 65 20 6e 65 77 |* create| the new|
|00003c60| 20 63 61 6c 6c 20 66 72 | 61 6d 65 20 2a 2f 0a 58 | call fr|ame */.X|
|00003c70| 20 20 20 20 6e 65 77 66 | 70 20 3d 20 78 6c 73 70 | newf|p = xlsp|
|00003c80| 3b 0a 58 20 20 20 20 70 | 75 73 68 61 72 67 28 63 |;.X p|usharg(c|
|00003c90| 76 66 69 78 6e 75 6d 28 | 28 46 49 58 54 59 50 45 |vfixnum(|(FIXTYPE|
|00003ca0| 29 28 6e 65 77 66 70 20 | 2d 20 78 6c 66 70 29 29 |)(newfp |- xlfp))|
|00003cb0| 29 3b 0a 58 20 20 20 20 | 70 75 73 68 61 72 67 28 |);.X |pusharg(|
|00003cc0| 66 75 6e 29 3b 0a 58 20 | 20 20 20 70 75 73 68 61 |fun);.X | pusha|
|00003cd0| 72 67 28 63 76 66 69 78 | 6e 75 6d 28 28 46 49 58 |rg(cvfix|num((FIX|
|00003ce0| 54 59 50 45 29 32 29 29 | 3b 0a 58 20 20 20 20 70 |TYPE)2))|;.X p|
|00003cf0| 75 73 68 61 72 67 28 61 | 72 67 31 29 3b 0a 58 20 |usharg(a|rg1);.X |
|00003d00| 20 20 20 70 75 73 68 61 | 72 67 28 61 72 67 32 29 | pusha|rg(arg2)|
|00003d10| 3b 0a 58 20 20 20 20 78 | 6c 66 70 20 3d 20 6e 65 |;.X x|lfp = ne|
|00003d20| 77 66 70 3b 0a 58 0a 58 | 20 20 20 20 2f 2a 20 72 |wfp;.X.X| /* r|
|00003d30| 65 74 75 72 6e 20 74 68 | 65 20 72 65 73 75 6c 74 |eturn th|e result|
|00003d40| 20 6f 66 20 61 70 70 6c | 79 69 6e 67 20 74 68 65 | of appl|ying the|
|00003d50| 20 74 65 73 74 20 66 75 | 6e 63 74 69 6f 6e 20 2a | test fu|nction *|
|00003d60| 2f 0a 58 20 20 20 20 72 | 65 74 75 72 6e 20 28 78 |/.X r|eturn (x|
|00003d70| 6c 61 70 70 6c 79 28 32 | 29 20 21 3d 20 4e 49 4c |lapply(2|) != NIL|
|00003d80| 29 3b 0a 58 0a 58 7d 0a | 58 0a 58 2f 2a 20 78 6e |);.X.X}.|X.X/* xn|
|00003d90| 74 68 20 2d 20 72 65 74 | 75 72 6e 20 74 68 65 20 |th - ret|urn the |
|00003da0| 6e 74 68 20 65 6c 65 6d | 65 6e 74 20 6f 66 20 61 |nth elem|ent of a|
|00003db0| 20 6c 69 73 74 20 2a 2f | 0a 58 4c 56 41 4c 20 78 | list */|.XLVAL x|
|00003dc0| 6e 74 68 28 29 0a 58 7b | 0a 58 20 20 20 20 72 65 |nth().X{|.X re|
|00003dd0| 74 75 72 6e 20 28 6e 74 | 68 28 54 52 55 45 29 29 |turn (nt|h(TRUE))|
|00003de0| 3b 0a 58 7d 0a 58 0a 58 | 2f 2a 20 78 6e 74 68 63 |;.X}.X.X|/* xnthc|
|00003df0| 64 72 20 2d 20 72 65 74 | 75 72 6e 20 74 68 65 20 |dr - ret|urn the |
|00003e00| 6e 74 68 20 63 64 72 20 | 6f 66 20 61 20 6c 69 73 |nth cdr |of a lis|
|00003e10| 74 20 2a 2f 0a 58 4c 56 | 41 4c 20 78 6e 74 68 63 |t */.XLV|AL xnthc|
|00003e20| 64 72 28 29 0a 58 7b 0a | 58 20 20 20 20 72 65 74 |dr().X{.|X ret|
|00003e30| 75 72 6e 20 28 6e 74 68 | 28 46 41 4c 53 45 29 29 |urn (nth|(FALSE))|
|00003e40| 3b 0a 58 7d 0a 58 0a 58 | 2f 2a 20 6e 74 68 20 2d |;.X}.X.X|/* nth -|
|00003e50| 20 69 6e 74 65 72 6e 61 | 6c 20 6e 74 68 20 66 75 | interna|l nth fu|
|00003e60| 6e 63 74 69 6f 6e 20 2a | 2f 0a 58 4c 4f 43 41 4c |nction *|/.XLOCAL|
|00003e70| 20 4c 56 41 4c 20 6e 74 | 68 28 63 61 72 66 6c 61 | LVAL nt|h(carfla|
|00003e80| 67 29 0a 58 20 20 69 6e | 74 20 63 61 72 66 6c 61 |g).X in|t carfla|
|00003e90| 67 3b 0a 58 7b 0a 58 20 | 20 20 20 4c 56 41 4c 20 |g;.X{.X | LVAL |
|00003ea0| 6c 69 73 74 2c 6e 75 6d | 3b 0a 58 20 20 20 20 46 |list,num|;.X F|
|00003eb0| 49 58 54 59 50 45 20 6e | 3b 0a 58 0a 58 20 20 20 |IXTYPE n|;.X.X |
|00003ec0| 20 2f 2a 20 67 65 74 20 | 6e 20 61 6e 64 20 74 68 | /* get |n and th|
|00003ed0| 65 20 6c 69 73 74 20 2a | 2f 0a 58 20 20 20 20 6e |e list *|/.X n|
|00003ee0| 75 6d 20 3d 20 78 6c 67 | 61 66 69 78 6e 75 6d 28 |um = xlg|afixnum(|
|00003ef0| 29 3b 0a 58 20 20 20 20 | 6c 69 73 74 20 3d 20 78 |);.X |list = x|
|00003f00| 6c 67 61 63 6f 6e 73 28 | 29 3b 0a 58 20 20 20 20 |lgacons(|);.X |
|00003f10| 78 6c 6c 61 73 74 61 72 | 67 28 29 3b 0a 58 0a 58 |xllastar|g();.X.X|
|00003f20| 20 20 20 20 2f 2a 20 6d | 61 6b 65 20 73 75 72 65 | /* m|ake sure|
|00003f30| 20 74 68 65 20 6e 75 6d | 62 65 72 20 69 73 6e 27 | the num|ber isn'|
|00003f40| 74 20 6e 65 67 61 74 69 | 76 65 20 2a 2f 0a 58 20 |t negati|ve */.X |
|00003f50| 20 20 20 69 66 20 28 28 | 6e 20 3d 20 67 65 74 66 | if ((|n = getf|
|00003f60| 69 78 6e 75 6d 28 6e 75 | 6d 29 29 20 3c 20 30 29 |ixnum(nu|m)) < 0)|
|00003f70| 0a 58 09 78 6c 66 61 69 | 6c 28 22 62 61 64 20 61 |.X.xlfai|l("bad a|
|00003f80| 72 67 75 6d 65 6e 74 22 | 29 3b 0a 58 0a 58 20 20 |rgument"|);.X.X |
|00003f90| 20 20 2f 2a 20 66 69 6e | 64 20 74 68 65 20 6e 74 | /* fin|d the nt|
|00003fa0| 68 20 65 6c 65 6d 65 6e | 74 20 2a 2f 0a 58 20 20 |h elemen|t */.X |
|00003fb0| 20 20 77 68 69 6c 65 20 | 28 63 6f 6e 73 70 28 6c | while |(consp(l|
|00003fc0| 69 73 74 29 20 26 26 20 | 2d 2d 6e 20 3e 3d 20 30 |ist) && |--n >= 0|
|00003fd0| 29 0a 58 09 6c 69 73 74 | 20 3d 20 63 64 72 28 6c |).X.list| = cdr(l|
|00003fe0| 69 73 74 29 3b 0a 58 0a | 58 20 20 20 20 2f 2a 20 |ist);.X.|X /* |
|00003ff0| 72 65 74 75 72 6e 20 74 | 68 65 20 6c 69 73 74 20 |return t|he list |
|00004000| 62 65 67 69 6e 6e 69 6e | 67 20 61 74 20 74 68 65 |beginnin|g at the|
|00004010| 20 6e 74 68 20 65 6c 65 | 6d 65 6e 74 20 2a 2f 0a | nth ele|ment */.|
|00004020| 58 20 20 20 20 72 65 74 | 75 72 6e 20 28 63 61 72 |X ret|urn (car|
|00004030| 66 6c 61 67 20 26 26 20 | 63 6f 6e 73 70 28 6c 69 |flag && |consp(li|
|00004040| 73 74 29 20 3f 20 63 61 | 72 28 6c 69 73 74 29 20 |st) ? ca|r(list) |
|00004050| 3a 20 6c 69 73 74 29 3b | 0a 58 7d 0a 58 0a 58 2f |: list);|.X}.X.X/|
|00004060| 2a 20 78 6c 65 6e 67 74 | 68 20 2d 20 72 65 74 75 |* xlengt|h - retu|
|00004070| 72 6e 20 74 68 65 20 6c | 65 6e 67 74 68 20 6f 66 |rn the l|ength of|
|00004080| 20 61 20 6c 69 73 74 20 | 6f 72 20 73 74 72 69 6e | a list |or strin|
|00004090| 67 20 2a 2f 0a 58 4c 56 | 41 4c 20 78 6c 65 6e 67 |g */.XLV|AL xleng|
|000040a0| 74 68 28 29 0a 58 7b 0a | 58 20 20 20 20 46 49 58 |th().X{.|X FIX|
|000040b0| 54 59 50 45 20 6e 3b 0a | 58 20 20 20 20 4c 56 41 |TYPE n;.|X LVA|
|000040c0| 4c 20 61 72 67 3b 0a 58 | 0a 58 20 20 20 20 2f 2a |L arg;.X|.X /*|
|000040d0| 20 67 65 74 20 74 68 65 | 20 6c 69 73 74 20 6f 72 | get the| list or|
|000040e0| 20 73 74 72 69 6e 67 20 | 2a 2f 0a 58 20 20 20 20 | string |*/.X |
|000040f0| 61 72 67 20 3d 20 78 6c | 67 65 74 61 72 67 28 29 |arg = xl|getarg()|
|00004100| 3b 0a 58 20 20 20 20 78 | 6c 6c 61 73 74 61 72 67 |;.X x|llastarg|
|00004110| 28 29 3b 0a 58 0a 58 20 | 20 20 20 2f 2a 20 66 69 |();.X.X | /* fi|
|00004120| 6e 64 20 74 68 65 20 6c | 65 6e 67 74 68 20 6f 66 |nd the l|ength of|
|00004130| 20 61 20 6c 69 73 74 20 | 2a 2f 0a 58 20 20 20 20 | a list |*/.X |
|00004140| 69 66 20 28 6c 69 73 74 | 70 28 61 72 67 29 29 0a |if (list|p(arg)).|
|00004150| 58 09 66 6f 72 20 28 6e | 20 3d 20 30 3b 20 63 6f |X.for (n| = 0; co|
|00004160| 6e 73 70 28 61 72 67 29 | 3b 20 6e 2b 2b 29 0a 58 |nsp(arg)|; n++).X|
|00004170| 09 20 20 20 20 61 72 67 | 20 3d 20 63 64 72 28 61 |. arg| = cdr(a|
|00004180| 72 67 29 3b 0a 58 0a 58 | 20 20 20 20 2f 2a 20 66 |rg);.X.X| /* f|
|00004190| 69 6e 64 20 74 68 65 20 | 6c 65 6e 67 74 68 20 6f |ind the |length o|
|000041a0| 66 20 61 20 73 74 72 69 | 6e 67 20 2a 2f 0a 58 20 |f a stri|ng */.X |
|000041b0| 20 20 20 65 6c 73 65 20 | 69 66 20 28 73 74 72 69 | else |if (stri|
|000041c0| 6e 67 70 28 61 72 67 29 | 29 0a 58 09 6e 20 3d 20 |ngp(arg)|).X.n = |
|000041d0| 28 46 49 58 54 59 50 45 | 29 67 65 74 73 6c 65 6e |(FIXTYPE|)getslen|
|000041e0| 67 74 68 28 61 72 67 29 | 2d 31 3b 0a 58 0a 58 20 |gth(arg)|-1;.X.X |
|000041f0| 20 20 20 2f 2a 20 66 69 | 6e 64 20 74 68 65 20 6c | /* fi|nd the l|
|00004200| 65 6e 67 74 68 20 6f 66 | 20 61 20 76 65 63 74 6f |ength of| a vecto|
|00004210| 72 20 2a 2f 0a 58 20 20 | 20 20 65 6c 73 65 20 69 |r */.X | else i|
|00004220| 66 20 28 76 65 63 74 6f | 72 70 28 61 72 67 29 29 |f (vecto|rp(arg))|
|00004230| 0a 58 09 6e 20 3d 20 28 | 46 49 58 54 59 50 45 29 |.X.n = (|FIXTYPE)|
|00004240| 67 65 74 73 69 7a 65 28 | 61 72 67 29 3b 0a 58 0a |getsize(|arg);.X.|
|00004250| 58 20 20 20 20 2f 2a 20 | 6f 74 68 65 72 77 69 73 |X /* |otherwis|
|00004260| 65 2c 20 62 61 64 20 61 | 72 67 75 6d 65 6e 74 20 |e, bad a|rgument |
|00004270| 74 79 70 65 20 2a 2f 0a | 58 20 20 20 20 65 6c 73 |type */.|X els|
|00004280| 65 0a 58 09 78 6c 65 72 | 72 6f 72 28 22 62 61 64 |e.X.xler|ror("bad|
|00004290| 20 61 72 67 75 6d 65 6e | 74 20 74 79 70 65 22 2c | argumen|t type",|
|000042a0| 61 72 67 29 3b 0a 58 0a | 58 20 20 20 20 2f 2a 20 |arg);.X.|X /* |
|000042b0| 72 65 74 75 72 6e 20 74 | 68 65 20 6c 65 6e 67 74 |return t|he lengt|
|000042c0| 68 20 2a 2f 0a 58 20 20 | 20 20 72 65 74 75 72 6e |h */.X | return|
|000042d0| 20 28 63 76 66 69 78 6e | 75 6d 28 6e 29 29 3b 0a | (cvfixn|um(n));.|
|000042e0| 58 7d 0a 58 0a 58 2f 2a | 20 78 6d 61 70 63 20 2d |X}.X.X/*| xmapc -|
|000042f0| 20 62 75 69 6c 74 2d 69 | 6e 20 66 75 6e 63 74 69 | built-i|n functi|
|00004300| 6f 6e 20 27 6d 61 70 63 | 27 20 2a 2f 0a 58 4c 56 |on 'mapc|' */.XLV|
|00004310| 41 4c 20 78 6d 61 70 63 | 28 29 0a 58 7b 0a 58 20 |AL xmapc|().X{.X |
|00004320| 20 20 20 72 65 74 75 72 | 6e 20 28 6d 61 70 28 54 | retur|n (map(T|
|00004330| 52 55 45 2c 46 41 4c 53 | 45 29 29 3b 0a 58 7d 0a |RUE,FALS|E));.X}.|
|00004340| 58 0a 58 2f 2a 20 78 6d | 61 70 63 61 72 20 2d 20 |X.X/* xm|apcar - |
|00004350| 62 75 69 6c 74 2d 69 6e | 20 66 75 6e 63 74 69 6f |built-in| functio|
|00004360| 6e 20 27 6d 61 70 63 61 | 72 27 20 2a 2f 0a 58 4c |n 'mapca|r' */.XL|
|00004370| 56 41 4c 20 78 6d 61 70 | 63 61 72 28 29 0a 58 7b |VAL xmap|car().X{|
|00004380| 0a 58 20 20 20 20 72 65 | 74 75 72 6e 20 28 6d 61 |.X re|turn (ma|
|00004390| 70 28 54 52 55 45 2c 54 | 52 55 45 29 29 3b 0a 58 |p(TRUE,T|RUE));.X|
|000043a0| 7d 0a 58 0a 58 2f 2a 20 | 78 6d 61 70 6c 20 2d 20 |}.X.X/* |xmapl - |
|000043b0| 62 75 69 6c 74 2d 69 6e | 20 66 75 6e 63 74 69 6f |built-in| functio|
|000043c0| 6e 20 27 6d 61 70 6c 27 | 20 2a 2f 0a 58 4c 56 41 |n 'mapl'| */.XLVA|
|000043d0| 4c 20 78 6d 61 70 6c 28 | 29 0a 58 7b 0a 58 20 20 |L xmapl(|).X{.X |
|000043e0| 20 20 72 65 74 75 72 6e | 20 28 6d 61 70 28 46 41 | return| (map(FA|
|000043f0| 4c 53 45 2c 46 41 4c 53 | 45 29 29 3b 0a 58 7d 0a |LSE,FALS|E));.X}.|
|00004400| 58 0a 58 2f 2a 20 78 6d | 61 70 6c 69 73 74 20 2d |X.X/* xm|aplist -|
|00004410| 20 62 75 69 6c 74 2d 69 | 6e 20 66 75 6e 63 74 69 | built-i|n functi|
|00004420| 6f 6e 20 27 6d 61 70 6c | 69 73 74 27 20 2a 2f 0a |on 'mapl|ist' */.|
|00004430| 58 4c 56 41 4c 20 78 6d | 61 70 6c 69 73 74 28 29 |XLVAL xm|aplist()|
|00004440| 0a 58 7b 0a 58 20 20 20 | 20 72 65 74 75 72 6e 20 |.X{.X | return |
|00004450| 28 6d 61 70 28 46 41 4c | 53 45 2c 54 52 55 45 29 |(map(FAL|SE,TRUE)|
|00004460| 29 3b 0a 58 7d 0a 58 0a | 58 2f 2a 20 6d 61 70 20 |);.X}.X.|X/* map |
|00004470| 2d 20 69 6e 74 65 72 6e | 61 6c 20 6d 61 70 70 69 |- intern|al mappi|
|00004480| 6e 67 20 66 75 6e 63 74 | 69 6f 6e 20 2a 2f 0a 58 |ng funct|ion */.X|
|00004490| 4c 4f 43 41 4c 20 4c 56 | 41 4c 20 6d 61 70 28 63 |LOCAL LV|AL map(c|
|000044a0| 61 72 66 6c 61 67 2c 76 | 61 6c 66 6c 61 67 29 0a |arflag,v|alflag).|
|000044b0| 58 20 20 69 6e 74 20 63 | 61 72 66 6c 61 67 2c 76 |X int c|arflag,v|
|000044c0| 61 6c 66 6c 61 67 3b 0a | 58 7b 0a 58 20 20 20 20 |alflag;.|X{.X |
|000044d0| 4c 56 41 4c 20 2a 6e 65 | 77 66 70 2c 66 75 6e 2c |LVAL *ne|wfp,fun,|
|000044e0| 6c 69 73 74 73 2c 76 61 | 6c 2c 6c 61 73 74 2c 70 |lists,va|l,last,p|
|000044f0| 2c 78 2c 79 3b 0a 58 20 | 20 20 20 69 6e 74 20 61 |,x,y;.X | int a|
|00004500| 72 67 63 3b 0a 58 0a 58 | 20 20 20 20 2f 2a 20 70 |rgc;.X.X| /* p|
|00004510| 72 6f 74 65 63 74 20 73 | 6f 6d 65 20 70 6f 69 6e |rotect s|ome poin|
|00004520| 74 65 72 73 20 2a 2f 0a | 58 20 20 20 20 78 6c 73 |ters */.|X xls|
|00004530| 74 6b 63 68 65 63 6b 28 | 33 29 3b 0a 58 20 20 20 |tkcheck(|3);.X |
|00004540| 20 78 6c 73 61 76 65 28 | 66 75 6e 29 3b 0a 58 20 | xlsave(|fun);.X |
|00004550| 20 20 20 78 6c 73 61 76 | 65 28 6c 69 73 74 73 29 | xlsav|e(lists)|
|00004560| 3b 0a 58 20 20 20 20 78 | 6c 73 61 76 65 28 76 61 |;.X x|lsave(va|
|00004570| 6c 29 3b 0a 58 0a 58 20 | 20 20 20 2f 2a 20 67 65 |l);.X.X | /* ge|
|00004580| 74 20 74 68 65 20 66 75 | 6e 63 74 69 6f 6e 20 74 |t the fu|nction t|
|00004590| 6f 20 61 70 70 6c 79 20 | 61 6e 64 20 74 68 65 20 |o apply |and the |
|000045a0| 66 69 72 73 74 20 6c 69 | 73 74 20 2a 2f 0a 58 20 |first li|st */.X |
|000045b0| 20 20 20 66 75 6e 20 3d | 20 78 6c 67 65 74 61 72 | fun =| xlgetar|
|000045c0| 67 28 29 3b 0a 58 20 20 | 20 20 6c 69 73 74 73 20 |g();.X | lists |
|000045d0| 3d 20 78 6c 67 61 6c 69 | 73 74 28 29 3b 0a 58 0a |= xlgali|st();.X.|
|000045e0| 58 20 20 20 20 2f 2a 20 | 69 6e 69 74 69 61 6c 69 |X /* |initiali|
|000045f0| 7a 65 20 74 68 65 20 72 | 65 73 75 6c 74 20 6c 69 |ze the r|esult li|
|00004600| 73 74 20 2a 2f 0a 58 20 | 20 20 20 76 61 6c 20 3d |st */.X | val =|
|00004610| 20 28 76 61 6c 66 6c 61 | 67 20 3f 20 4e 49 4c 20 | (valfla|g ? NIL |
|00004620| 3a 20 6c 69 73 74 73 29 | 3b 0a 58 0a 58 20 20 20 |: lists)|;.X.X |
|00004630| 20 2f 2a 20 62 75 69 6c | 64 20 61 20 6c 69 73 74 | /* buil|d a list|
|00004640| 20 6f 66 20 61 72 67 75 | 6d 65 6e 74 20 6c 69 73 | of argu|ment lis|
|00004650| 74 73 20 2a 2f 0a 58 20 | 20 20 20 66 6f 72 20 28 |ts */.X | for (|
|00004660| 6c 69 73 74 73 20 3d 20 | 6c 61 73 74 20 3d 20 63 |lists = |last = c|
|00004670| 6f 6e 73 61 28 6c 69 73 | 74 73 29 3b 20 6d 6f 72 |onsa(lis|ts); mor|
|00004680| 65 61 72 67 73 28 29 3b | 20 6c 61 73 74 20 3d 20 |eargs();| last = |
|00004690| 63 64 72 28 6c 61 73 74 | 29 29 0a 58 09 72 70 6c |cdr(last|)).X.rpl|
|000046a0| 61 63 64 28 6c 61 73 74 | 2c 63 6f 6e 73 28 78 6c |acd(last|,cons(xl|
|000046b0| 67 61 6c 69 73 74 28 29 | 2c 4e 49 4c 29 29 3b 0a |galist()|,NIL));.|
|000046c0| 58 0a 58 20 20 20 20 2f | 2a 20 6c 6f 6f 70 20 74 |X.X /|* loop t|
|000046d0| 68 72 6f 75 67 68 20 65 | 61 63 68 20 6f 66 20 74 |hrough e|ach of t|
|000046e0| 68 65 20 61 72 67 75 6d | 65 6e 74 20 6c 69 73 74 |he argum|ent list|
|000046f0| 73 20 2a 2f 0a 58 20 20 | 20 20 66 6f 72 20 28 3b |s */.X | for (;|
|00004700| 3b 29 20 7b 0a 58 0a 58 | 09 2f 2a 20 62 75 69 6c |;) {.X.X|./* buil|
|00004710| 64 20 61 6e 20 61 72 67 | 75 6d 65 6e 74 20 6c 69 |d an arg|ument li|
|00004720| 73 74 20 66 72 6f 6d 20 | 74 68 65 20 73 75 62 6c |st from |the subl|
|00004730| 69 73 74 73 20 2a 2f 0a | 58 09 6e 65 77 66 70 20 |ists */.|X.newfp |
|00004740| 3d 20 78 6c 73 70 3b 0a | 58 09 70 75 73 68 61 72 |= xlsp;.|X.pushar|
|00004750| 67 28 63 76 66 69 78 6e | 75 6d 28 28 46 49 58 54 |g(cvfixn|um((FIXT|
|00004760| 59 50 45 29 28 6e 65 77 | 66 70 20 2d 20 78 6c 66 |YPE)(new|fp - xlf|
|00004770| 70 29 29 29 3b 0a 58 09 | 70 75 73 68 61 72 67 28 |p)));.X.|pusharg(|
|00004780| 66 75 6e 29 3b 0a 58 09 | 70 75 73 68 61 72 67 28 |fun);.X.|pusharg(|
|00004790| 4e 49 4c 29 3b 0a 58 09 | 61 72 67 63 20 3d 20 30 |NIL);.X.|argc = 0|
|000047a0| 3b 0a 58 09 66 6f 72 20 | 28 78 20 3d 20 6c 69 73 |;.X.for |(x = lis|
|000047b0| 74 73 3b 20 78 20 26 26 | 20 28 79 20 3d 20 63 61 |ts; x &&| (y = ca|
|000047c0| 72 28 78 29 29 20 26 26 | 20 63 6f 6e 73 70 28 79 |r(x)) &&| consp(y|
|000047d0| 29 3b 20 78 20 3d 20 63 | 64 72 28 78 29 29 20 7b |); x = c|dr(x)) {|
|000047e0| 0a 58 09 20 20 20 20 70 | 75 73 68 61 72 67 28 63 |.X. p|usharg(c|
|000047f0| 61 72 66 6c 61 67 20 3f | 20 63 61 72 28 79 29 20 |arflag ?| car(y) |
|00004800| 3a 20 79 29 3b 0a 58 09 | 20 20 20 20 72 70 6c 61 |: y);.X.| rpla|
|00004810| 63 61 28 78 2c 63 64 72 | 28 79 29 29 3b 0a 58 09 |ca(x,cdr|(y));.X.|
|00004820| 20 20 20 20 2b 2b 61 72 | 67 63 3b 0a 58 09 7d 0a | ++ar|gc;.X.}.|
|00004830| 58 0a 58 09 2f 2a 20 71 | 75 69 74 20 69 66 20 61 |X.X./* q|uit if a|
|00004840| 6e 79 20 6f 66 20 74 68 | 65 20 6c 69 73 74 73 20 |ny of th|e lists |
|00004850| 77 65 72 65 20 65 6d 70 | 74 79 20 2a 2f 0a 58 09 |were emp|ty */.X.|
|00004860| 69 66 20 28 78 29 20 7b | 0a 58 09 20 20 20 20 78 |if (x) {|.X. x|
|00004870| 6c 73 70 20 3d 20 6e 65 | 77 66 70 3b 0a 58 09 20 |lsp = ne|wfp;.X. |
|00004880| 20 20 20 62 72 65 61 6b | 3b 0a 58 09 7d 0a 58 0a | break|;.X.}.X.|
|00004890| 58 09 2f 2a 20 61 70 70 | 6c 79 20 74 68 65 20 66 |X./* app|ly the f|
|000048a0| 75 6e 63 74 69 6f 6e 20 | 74 6f 20 74 68 65 20 61 |unction |to the a|
|000048b0| 72 67 75 6d 65 6e 74 73 | 20 2a 2f 0a 58 09 6e 65 |rguments| */.X.ne|
|000048c0| 77 66 70 5b 32 5d 20 3d | 20 63 76 66 69 78 6e 75 |wfp[2] =| cvfixnu|
|000048d0| 6d 28 28 46 49 58 54 59 | 50 45 29 61 72 67 63 29 |m((FIXTY|PE)argc)|
|000048e0| 3b 0a 58 09 78 6c 66 70 | 20 3d 20 6e 65 77 66 70 |;.X.xlfp| = newfp|
|000048f0| 3b 0a 58 09 69 66 20 28 | 76 61 6c 66 6c 61 67 29 |;.X.if (|valflag)|
|00004900| 20 7b 0a 58 09 20 20 20 | 20 70 20 3d 20 63 6f 6e | {.X. | p = con|
|00004910| 73 61 28 78 6c 61 70 70 | 6c 79 28 61 72 67 63 29 |sa(xlapp|ly(argc)|
|00004920| 29 3b 0a 58 09 20 20 20 | 20 69 66 20 28 76 61 6c |);.X. | if (val|
|00004930| 29 20 72 70 6c 61 63 64 | 28 6c 61 73 74 2c 70 29 |) rplacd|(last,p)|
|00004940| 3b 0a 58 09 20 20 20 20 | 65 6c 73 65 20 76 61 6c |;.X. |else val|
|00004950| 20 3d 20 70 3b 0a 58 09 | 20 20 20 20 6c 61 73 74 | = p;.X.| last|
|00004960| 20 3d 20 70 3b 0a 58 09 | 7d 0a 58 09 65 6c 73 65 | = p;.X.|}.X.else|
|00004970| 0a 58 09 20 20 20 20 78 | 6c 61 70 70 6c 79 28 61 |.X. x|lapply(a|
|00004980| 72 67 63 29 3b 0a 58 20 | 20 20 20 7d 0a 58 0a 58 |rgc);.X | }.X.X|
|00004990| 20 20 20 20 2f 2a 20 72 | 65 73 74 6f 72 65 20 74 | /* r|estore t|
|000049a0| 68 65 20 73 74 61 63 6b | 20 2a 2f 0a 58 20 20 20 |he stack| */.X |
|000049b0| 20 78 6c 70 6f 70 6e 28 | 33 29 3b 0a 58 0a 58 20 | xlpopn(|3);.X.X |
|000049c0| 20 20 20 2f 2a 20 72 65 | 74 75 72 6e 20 74 68 65 | /* re|turn the|
|000049d0| 20 6c 61 73 74 20 74 65 | 73 74 20 65 78 70 72 65 | last te|st expre|
|000049e0| 73 73 69 6f 6e 20 76 61 | 6c 75 65 20 2a 2f 0a 58 |ssion va|lue */.X|
|000049f0| 20 20 20 20 72 65 74 75 | 72 6e 20 28 76 61 6c 29 | retu|rn (val)|
|00004a00| 3b 0a 58 7d 0a 58 0a 58 | 2f 2a 20 78 72 70 6c 63 |;.X}.X.X|/* xrplc|
|00004a10| 61 20 2d 20 72 65 70 6c | 61 63 65 20 74 68 65 20 |a - repl|ace the |
|00004a20| 63 61 72 20 6f 66 20 61 | 20 6c 69 73 74 20 6e 6f |car of a| list no|
|00004a30| 64 65 20 2a 2f 0a 58 4c | 56 41 4c 20 78 72 70 6c |de */.XL|VAL xrpl|
|00004a40| 63 61 28 29 0a 58 7b 0a | 58 20 20 20 20 4c 56 41 |ca().X{.|X LVA|
|00004a50| 4c 20 6c 69 73 74 2c 6e | 65 77 63 61 72 3b 0a 58 |L list,n|ewcar;.X|
|00004a60| 0a 58 20 20 20 20 2f 2a | 20 67 65 74 20 74 68 65 |.X /*| get the|
|00004a70| 20 6c 69 73 74 20 61 6e | 64 20 74 68 65 20 6e 65 | list an|d the ne|
|00004a80| 77 20 63 61 72 20 2a 2f | 0a 58 20 20 20 20 6c 69 |w car */|.X li|
|00004a90| 73 74 20 3d 20 78 6c 67 | 61 63 6f 6e 73 28 29 3b |st = xlg|acons();|
|00004aa0| 0a 58 20 20 20 20 6e 65 | 77 63 61 72 20 3d 20 78 |.X ne|wcar = x|
|00004ab0| 6c 67 65 74 61 72 67 28 | 29 3b 0a 58 20 20 20 20 |lgetarg(|);.X |
|00004ac0| 78 6c 6c 61 73 74 61 72 | 67 28 29 3b 0a 58 0a 58 |xllastar|g();.X.X|
|00004ad0| 20 20 20 20 2f 2a 20 72 | 65 70 6c 61 63 65 20 74 | /* r|eplace t|
|00004ae0| 68 65 20 63 61 72 20 2a | 2f 0a 58 20 20 20 20 72 |he car *|/.X r|
|00004af0| 70 6c 61 63 61 28 6c 69 | 73 74 2c 6e 65 77 63 61 |placa(li|st,newca|
|00004b00| 72 29 3b 0a 58 0a 58 20 | 20 20 20 2f 2a 20 72 65 |r);.X.X | /* re|
|00004b10| 74 75 72 6e 20 74 68 65 | 20 6c 69 73 74 20 6e 6f |turn the| list no|
|00004b20| 64 65 20 74 68 61 74 20 | 77 61 73 20 6d 6f 64 69 |de that |was modi|
|00004b30| 66 69 65 64 20 2a 2f 0a | 58 20 20 20 20 72 65 74 |fied */.|X ret|
|00004b40| 75 72 6e 20 28 6c 69 73 | 74 29 3b 0a 58 7d 0a 58 |urn (lis|t);.X}.X|
|00004b50| 0a 58 2f 2a 20 78 72 70 | 6c 63 64 20 2d 20 72 65 |.X/* xrp|lcd - re|
|00004b60| 70 6c 61 63 65 20 74 68 | 65 20 63 64 72 20 6f 66 |place th|e cdr of|
|00004b70| 20 61 20 6c 69 73 74 20 | 6e 6f 64 65 20 2a 2f 0a | a list |node */.|
|00004b80| 58 4c 56 41 4c 20 78 72 | 70 6c 63 64 28 29 0a 58 |XLVAL xr|plcd().X|
|00004b90| 7b 0a 58 20 20 20 20 4c | 56 41 4c 20 6c 69 73 74 |{.X L|VAL list|
|00004ba0| 2c 6e 65 77 63 64 72 3b | 0a 58 0a 58 20 20 20 20 |,newcdr;|.X.X |
|00004bb0| 2f 2a 20 67 65 74 20 74 | 68 65 20 6c 69 73 74 20 |/* get t|he list |
|00004bc0| 61 6e 64 20 74 68 65 20 | 6e 65 77 20 63 64 72 20 |and the |new cdr |
|00004bd0| 2a 2f 0a 58 20 20 20 20 | 6c 69 73 74 20 3d 20 78 |*/.X |list = x|
|00004be0| 6c 67 61 63 6f 6e 73 28 | 29 3b 0a 58 20 20 20 20 |lgacons(|);.X |
|00004bf0| 6e 65 77 63 64 72 20 3d | 20 78 6c 67 65 74 61 72 |newcdr =| xlgetar|
|00004c00| 67 28 29 3b 0a 58 20 20 | 20 20 78 6c 6c 61 73 74 |g();.X | xllast|
|00004c10| 61 72 67 28 29 3b 0a 58 | 0a 58 20 20 20 20 2f 2a |arg();.X|.X /*|
|00004c20| 20 72 65 70 6c 61 63 65 | 20 74 68 65 20 63 64 72 | replace| the cdr|
|00004c30| 20 2a 2f 0a 58 20 20 20 | 20 72 70 6c 61 63 64 28 | */.X | rplacd(|
|00004c40| 6c 69 73 74 2c 6e 65 77 | 63 64 72 29 3b 0a 58 0a |list,new|cdr);.X.|
|00004c50| 58 20 20 20 20 2f 2a 20 | 72 65 74 75 72 6e 20 74 |X /* |return t|
|00004c60| 68 65 20 6c 69 73 74 20 | 6e 6f 64 65 20 74 68 61 |he list |node tha|
|00004c70| 74 20 77 61 73 20 6d 6f | 64 69 66 69 65 64 20 2a |t was mo|dified *|
|00004c80| 2f 0a 58 20 20 20 20 72 | 65 74 75 72 6e 20 28 6c |/.X r|eturn (l|
|00004c90| 69 73 74 29 3b 0a 58 7d | 0a 58 0a 58 2f 2a 20 78 |ist);.X}|.X.X/* x|
|00004ca0| 6e 63 6f 6e 63 20 2d 20 | 64 65 73 74 72 75 63 74 |nconc - |destruct|
|00004cb0| 69 76 65 6c 79 20 61 70 | 70 65 6e 64 20 6c 69 73 |ively ap|pend lis|
|00004cc0| 74 73 20 2a 2f 0a 58 4c | 56 41 4c 20 78 6e 63 6f |ts */.XL|VAL xnco|
|00004cd0| 6e 63 28 29 0a 58 7b 0a | 58 20 20 20 20 4c 56 41 |nc().X{.|X LVA|
|00004ce0| 4c 20 6e 65 78 74 2c 6c | 61 73 74 2c 76 61 6c 3b |L next,l|ast,val;|
|00004cf0| 0a 58 0a 58 20 20 20 20 | 2f 2a 20 69 6e 69 74 69 |.X.X |/* initi|
|00004d00| 61 6c 69 7a 65 20 2a 2f | 0a 58 20 20 20 20 76 61 |alize */|.X va|
|00004d10| 6c 20 3d 20 4e 49 4c 3b | 0a 58 20 20 20 20 0a 58 |l = NIL;|.X .X|
|00004d20| 20 20 20 20 2f 2a 20 63 | 6f 6e 63 61 74 65 6e 61 | /* c|oncatena|
|00004d30| 74 65 20 65 61 63 68 20 | 61 72 67 75 6d 65 6e 74 |te each |argument|
|00004d40| 20 2a 2f 0a 58 20 20 20 | 20 69 66 20 28 6d 6f 72 | */.X | if (mor|
|00004d50| 65 61 72 67 73 28 29 29 | 20 7b 0a 58 09 77 68 69 |eargs())| {.X.whi|
|00004d60| 6c 65 20 28 78 6c 61 72 | 67 63 20 3e 20 31 29 20 |le (xlar|gc > 1) |
|00004d70| 7b 0a 58 0a 58 09 20 20 | 20 20 2f 2a 20 69 67 6e |{.X.X. | /* ign|
|00004d80| 6f 72 65 20 65 76 65 72 | 79 74 68 69 6e 67 20 65 |ore ever|ything e|
|00004d90| 78 63 65 70 74 20 6c 69 | 73 74 73 20 2a 2f 0a 58 |xcept li|sts */.X|
|00004da0| 09 20 20 20 20 69 66 20 | 28 28 6e 65 78 74 20 3d |. if |((next =|
|00004db0| 20 6e 65 78 74 61 72 67 | 28 29 29 20 26 26 20 63 | nextarg|()) && c|
|00004dc0| 6f 6e 73 70 28 6e 65 78 | 74 29 29 20 7b 0a 58 0a |onsp(nex|t)) {.X.|
|00004dd0| 58 09 09 2f 2a 20 63 6f | 6e 63 61 74 65 6e 61 74 |X../* co|ncatenat|
|00004de0| 65 20 74 68 69 73 20 6c | 69 73 74 20 74 6f 20 74 |e this l|ist to t|
|00004df0| 68 65 20 72 65 73 75 6c | 74 20 6c 69 73 74 20 2a |he resul|t list *|
|00004e00| 2f 0a 58 09 09 69 66 20 | 28 76 61 6c 29 20 72 70 |/.X..if |(val) rp|
|00004e10| 6c 61 63 64 28 6c 61 73 | 74 2c 6e 65 78 74 29 3b |lacd(las|t,next);|
|00004e20| 0a 58 09 09 65 6c 73 65 | 20 76 61 6c 20 3d 20 6e |.X..else| val = n|
|00004e30| 65 78 74 3b 0a 58 0a 58 | 09 09 2f 2a 20 66 69 6e |ext;.X.X|../* fin|
|00004e40| 64 20 74 68 65 20 65 6e | 64 20 6f 66 20 74 68 65 |d the en|d of the|
|00004e50| 20 6c 69 73 74 20 2a 2f | 0a 58 09 09 77 68 69 6c | list */|.X..whil|
|00004e60| 65 20 28 63 6f 6e 73 70 | 28 63 64 72 28 6e 65 78 |e (consp|(cdr(nex|
|00004e70| 74 29 29 29 0a 58 09 09 | 20 20 20 20 6e 65 78 74 |t))).X..| next|
|00004e80| 20 3d 20 63 64 72 28 6e | 65 78 74 29 3b 0a 58 09 | = cdr(n|ext);.X.|
|00004e90| 09 6c 61 73 74 20 3d 20 | 6e 65 78 74 3b 0a 58 09 |.last = |next;.X.|
|00004ea0| 20 20 20 20 7d 0a 58 09 | 7d 0a 58 0a 58 09 2f 2a | }.X.|}.X.X./*|
|00004eb0| 20 68 61 6e 64 6c 65 20 | 74 68 65 20 6c 61 73 74 | handle |the last|
|00004ec0| 20 61 72 67 75 6d 65 6e | 74 20 2a 2f 0a 58 09 69 | argumen|t */.X.i|
|00004ed0| 66 20 28 76 61 6c 29 20 | 72 70 6c 61 63 64 28 6c |f (val) |rplacd(l|
|00004ee0| 61 73 74 2c 6e 65 78 74 | 61 72 67 28 29 29 3b 0a |ast,next|arg());.|
|00004ef0| 58 09 65 6c 73 65 20 76 | 61 6c 20 3d 20 6e 65 78 |X.else v|al = nex|
|00004f00| 74 61 72 67 28 29 3b 0a | 58 20 20 20 20 7d 0a 58 |targ();.|X }.X|
|00004f10| 0a 58 20 20 20 20 2f 2a | 20 72 65 74 75 72 6e 20 |.X /*| return |
|00004f20| 74 68 65 20 6c 69 73 74 | 20 2a 2f 0a 58 20 20 20 |the list| */.X |
|00004f30| 20 72 65 74 75 72 6e 20 | 28 76 61 6c 29 3b 0a 58 | return |(val);.X|
|00004f40| 7d 0a 58 0a 58 2f 2a 20 | 78 64 65 6c 65 74 65 20 |}.X.X/* |xdelete |
|00004f50| 2d 20 62 75 69 6c 74 2d | 69 6e 20 66 75 6e 63 74 |- built-|in funct|
|00004f60| 69 6f 6e 20 27 64 65 6c | 65 74 65 27 20 2a 2f 0a |ion 'del|ete' */.|
|00004f70| 58 4c 56 41 4c 20 78 64 | 65 6c 65 74 65 28 29 0a |XLVAL xd|elete().|
|00004f80| 58 7b 0a 58 20 20 20 20 | 4c 56 41 4c 20 78 2c 6c |X{.X |LVAL x,l|
|00004f90| 69 73 74 2c 66 63 6e 2c | 6c 61 73 74 2c 76 61 6c |ist,fcn,|last,val|
|00004fa0| 3b 0a 58 20 20 20 20 69 | 6e 74 20 74 72 65 73 75 |;.X i|nt tresu|
|00004fb0| 6c 74 3b 0a 58 0a 58 20 | 20 20 20 2f 2a 20 70 72 |lt;.X.X | /* pr|
|00004fc0| 6f 74 65 63 74 20 73 6f | 6d 65 20 70 6f 69 6e 74 |otect so|me point|
|00004fd0| 65 72 73 20 2a 2f 0a 58 | 20 20 20 20 78 6c 73 61 |ers */.X| xlsa|
|00004fe0| 76 65 31 28 66 63 6e 29 | 3b 0a 58 0a 58 20 20 20 |ve1(fcn)|;.X.X |
|00004ff0| 20 2f 2a 20 67 65 74 20 | 74 68 65 20 65 78 70 72 | /* get |the expr|
|00005000| 65 73 73 69 6f 6e 20 74 | 6f 20 64 65 6c 65 74 65 |ession t|o delete|
|00005010| 20 61 6e 64 20 74 68 65 | 20 6c 69 73 74 20 2a 2f | and the| list */|
|00005020| 0a 58 20 20 20 20 78 20 | 3d 20 78 6c 67 65 74 61 |.X x |= xlgeta|
|00005030| 72 67 28 29 3b 0a 58 20 | 20 20 20 6c 69 73 74 20 |rg();.X | list |
|00005040| 3d 20 78 6c 67 61 6c 69 | 73 74 28 29 3b 0a 58 20 |= xlgali|st();.X |
|00005050| 20 20 20 78 6c 74 65 73 | 74 28 26 66 63 6e 2c 26 | xltes|t(&fcn,&|
|00005060| 74 72 65 73 75 6c 74 29 | 3b 0a 58 0a 58 20 20 20 |tresult)|;.X.X |
|00005070| 20 2f 2a 20 64 65 6c 65 | 74 65 20 6c 65 61 64 69 | /* dele|te leadi|
|00005080| 6e 67 20 6d 61 74 63 68 | 65 73 20 2a 2f 0a 58 20 |ng match|es */.X |
|00005090| 20 20 20 77 68 69 6c 65 | 20 28 63 6f 6e 73 70 28 | while| (consp(|
|000050a0| 6c 69 73 74 29 29 20 7b | 0a 58 09 69 66 20 28 64 |list)) {|.X.if (d|
|000050b0| 6f 74 65 73 74 32 28 78 | 2c 63 61 72 28 6c 69 73 |otest2(x|,car(lis|
|000050c0| 74 29 2c 66 63 6e 29 20 | 21 3d 20 74 72 65 73 75 |t),fcn) |!= tresu|
|000050d0| 6c 74 29 0a 58 09 20 20 | 20 20 62 72 65 61 6b 3b |lt).X. | break;|
|000050e0| 0a 58 09 6c 69 73 74 20 | 3d 20 63 64 72 28 6c 69 |.X.list |= cdr(li|
|000050f0| 73 74 29 3b 0a 58 20 20 | 20 20 7d 0a 58 20 20 20 |st);.X | }.X |
|00005100| 20 76 61 6c 20 3d 20 6c | 61 73 74 20 3d 20 6c 69 | val = l|ast = li|
|00005110| 73 74 3b 0a 58 0a 58 20 | 20 20 20 2f 2a 20 64 65 |st;.X.X | /* de|
|00005120| 6c 65 74 65 20 65 6d 62 | 65 64 64 65 64 20 6d 61 |lete emb|edded ma|
|00005130| 74 63 68 65 73 20 2a 2f | 0a 58 20 20 20 20 69 66 |tches */|.X if|
|00005140| 20 28 63 6f 6e 73 70 28 | 6c 69 73 74 29 29 20 7b | (consp(|list)) {|
|00005150| 0a 58 0a 58 09 2f 2a 20 | 73 6b 69 70 20 74 68 65 |.X.X./* |skip the|
|00005160| 20 66 69 72 73 74 20 6e | 6f 6e 2d 6d 61 74 63 68 | first n|on-match|
|00005170| 69 6e 67 20 65 6c 65 6d | 65 6e 74 20 2a 2f 0a 58 |ing elem|ent */.X|
|00005180| 09 6c 69 73 74 20 3d 20 | 63 64 72 28 6c 69 73 74 |.list = |cdr(list|
|00005190| 29 3b 0a 58 0a 58 09 2f | 2a 20 6c 6f 6f 6b 20 66 |);.X.X./|* look f|
|000051a0| 6f 72 20 65 6d 62 65 64 | 64 65 64 20 6d 61 74 63 |or embed|ded matc|
|000051b0| 68 65 73 20 2a 2f 0a 58 | 09 77 68 69 6c 65 20 28 |hes */.X|.while (|
|000051c0| 63 6f 6e 73 70 28 6c 69 | 73 74 29 29 20 7b 0a 58 |consp(li|st)) {.X|
|000051d0| 0a 58 09 20 20 20 20 2f | 2a 20 63 68 65 63 6b 20 |.X. /|* check |
|000051e0| 74 6f 20 73 65 65 20 69 | 66 20 74 68 69 73 20 65 |to see i|f this e|
|000051f0| 6c 65 6d 65 6e 74 20 73 | 68 6f 75 6c 64 20 62 65 |lement s|hould be|
|00005200| 20 64 65 6c 65 74 65 64 | 20 2a 2f 0a 58 09 20 20 | deleted| */.X. |
|00005210| 20 20 69 66 20 28 64 6f | 74 65 73 74 32 28 78 2c | if (do|test2(x,|
|00005220| 63 61 72 28 6c 69 73 74 | 29 2c 66 63 6e 29 20 3d |car(list|),fcn) =|
|00005230| 3d 20 74 72 65 73 75 6c | 74 29 0a 58 09 09 72 70 |= tresul|t).X..rp|
|00005240| 6c 61 63 64 28 6c 61 73 | 74 2c 63 64 72 28 6c 69 |lacd(las|t,cdr(li|
|00005250| 73 74 29 29 3b 0a 58 09 | 20 20 20 20 65 6c 73 65 |st));.X.| else|
|00005260| 0a 58 09 09 6c 61 73 74 | 20 3d 20 6c 69 73 74 3b |.X..last| = list;|
|00005270| 0a 58 0a 58 09 20 20 20 | 20 2f 2a 20 6d 6f 76 65 |.X.X. | /* move|
|00005280| 20 74 6f 20 74 68 65 20 | 6e 65 78 74 20 65 6c 65 | to the |next ele|
|00005290| 6d 65 6e 74 20 2a 2f 0a | 58 09 20 20 20 20 6c 69 |ment */.|X. li|
|000052a0| 73 74 20 3d 20 63 64 72 | 28 6c 69 73 74 29 3b 0a |st = cdr|(list);.|
|000052b0| 58 20 09 7d 0a 58 20 20 | 20 20 7d 0a 58 0a 58 20 |X .}.X | }.X.X |
|000052c0| 20 20 20 2f 2a 20 72 65 | 73 74 6f 72 65 20 74 68 | /* re|store th|
|000052d0| 65 20 73 74 61 63 6b 20 | 2a 2f 0a 58 20 20 20 20 |e stack |*/.X |
|000052e0| 78 6c 70 6f 70 28 29 3b | 0a 58 0a 58 20 20 20 20 |xlpop();|.X.X |
|000052f0| 2f 2a 20 72 65 74 75 72 | 6e 20 74 68 65 20 75 70 |/* retur|n the up|
|00005300| 64 61 74 65 64 20 6c 69 | 73 74 20 2a 2f 0a 58 20 |dated li|st */.X |
|00005310| 20 20 20 72 65 74 75 72 | 6e 20 28 76 61 6c 29 3b | retur|n (val);|
|00005320| 0a 58 7d 0a 58 0a 58 2f | 2a 20 78 64 65 6c 69 66 |.X}.X.X/|* xdelif|
|00005330| 20 2d 20 62 75 69 6c 74 | 2d 69 6e 20 66 75 6e 63 | - built|-in func|
|00005340| 74 69 6f 6e 20 27 64 65 | 6c 65 74 65 2d 69 66 27 |tion 'de|lete-if'|
|00005350| 20 2a 2f 0a 58 4c 56 41 | 4c 20 78 64 65 6c 69 66 | */.XLVA|L xdelif|
|00005360| 28 29 0a 58 7b 0a 58 20 | 20 20 20 4c 56 41 4c 20 |().X{.X | LVAL |
|00005370| 64 65 6c 69 66 28 29 3b | 0a 58 20 20 20 20 72 65 |delif();|.X re|
|00005380| 74 75 72 6e 20 28 64 65 | 6c 69 66 28 54 52 55 45 |turn (de|lif(TRUE|
|00005390| 29 29 3b 0a 58 7d 0a 58 | 0a 58 2f 2a 20 78 64 65 |));.X}.X|.X/* xde|
|000053a0| 6c 69 66 6e 6f 74 20 2d | 20 62 75 69 6c 74 2d 69 |lifnot -| built-i|
|000053b0| 6e 20 66 75 6e 63 74 69 | 6f 6e 20 27 64 65 6c 65 |n functi|on 'dele|
|000053c0| 74 65 2d 69 66 2d 6e 6f | 74 27 20 2a 2f 0a 58 4c |te-if-no|t' */.XL|
|000053d0| 56 41 4c 20 78 64 65 6c | 69 66 6e 6f 74 28 29 0a |VAL xdel|ifnot().|
|000053e0| 58 7b 0a 58 20 20 20 20 | 4c 56 41 4c 20 64 65 6c |X{.X |LVAL del|
|000053f0| 69 66 28 29 3b 0a 58 20 | 20 20 20 72 65 74 75 72 |if();.X | retur|
|00005400| 6e 20 28 64 65 6c 69 66 | 28 46 41 4c 53 45 29 29 |n (delif|(FALSE))|
|00005410| 3b 0a 58 7d 0a 58 0a 58 | 2f 2a 20 64 65 6c 69 66 |;.X}.X.X|/* delif|
|00005420| 20 2d 20 63 6f 6d 6d 6f | 6e 20 72 6f 75 74 69 6e | - commo|n routin|
|00005430| 65 20 66 6f 72 20 27 64 | 65 6c 65 74 65 2d 69 66 |e for 'd|elete-if|
|00005440| 27 20 61 6e 64 20 27 64 | 65 6c 65 74 65 2d 69 66 |' and 'd|elete-if|
|00005450| 2d 6e 6f 74 27 20 2a 2f | 0a 58 4c 4f 43 41 4c 20 |-not' */|.XLOCAL |
|00005460| 4c 56 41 4c 20 64 65 6c | 69 66 28 74 72 65 73 75 |LVAL del|if(tresu|
|00005470| 6c 74 29 0a 58 20 20 69 | 6e 74 20 74 72 65 73 75 |lt).X i|nt tresu|
|00005480| 6c 74 3b 0a 58 7b 0a 58 | 20 20 20 20 4c 56 41 4c |lt;.X{.X| LVAL|
|00005490| 20 6c 69 73 74 2c 66 63 | 6e 2c 6c 61 73 74 2c 76 | list,fc|n,last,v|
|000054a0| 61 6c 3b 0a 58 0a 58 20 | 20 20 20 2f 2a 20 70 72 |al;.X.X | /* pr|
|000054b0| 6f 74 65 63 74 20 73 6f | 6d 65 20 70 6f 69 6e 74 |otect so|me point|
|000054c0| 65 72 73 20 2a 2f 0a 58 | 20 20 20 20 78 6c 73 61 |ers */.X| xlsa|
|000054d0| 76 65 31 28 66 63 6e 29 | 3b 0a 58 0a 58 20 20 20 |ve1(fcn)|;.X.X |
|000054e0| 20 2f 2a 20 67 65 74 20 | 74 68 65 20 65 78 70 72 | /* get |the expr|
|000054f0| 65 73 73 69 6f 6e 20 74 | 6f 20 64 65 6c 65 74 65 |ession t|o delete|
|00005500| 20 61 6e 64 20 74 68 65 | 20 6c 69 73 74 20 2a 2f | and the| list */|
|00005510| 0a 58 20 20 20 20 66 63 | 6e 20 3d 20 78 6c 67 65 |.X fc|n = xlge|
|00005520| 74 61 72 67 28 29 3b 0a | 58 20 20 20 20 6c 69 73 |targ();.|X lis|
|00005530| 74 20 3d 20 78 6c 67 61 | 6c 69 73 74 28 29 3b 0a |t = xlga|list();.|
|00005540| 58 20 20 20 20 78 6c 6c | 61 73 74 61 72 67 28 29 |X xll|astarg()|
|00005550| 3b 0a 58 0a 58 20 20 20 | 20 2f 2a 20 64 65 6c 65 |;.X.X | /* dele|
|00005560| 74 65 20 6c 65 61 64 69 | 6e 67 20 6d 61 74 63 68 |te leadi|ng match|
|00005570| 65 73 20 2a 2f 0a 58 20 | 20 20 20 77 68 69 6c 65 |es */.X | while|
|00005580| 20 28 63 6f 6e 73 70 28 | 6c 69 73 74 29 29 20 7b | (consp(|list)) {|
|00005590| 0a 58 09 69 66 20 28 64 | 6f 74 65 73 74 31 28 63 |.X.if (d|otest1(c|
|000055a0| 61 72 28 6c 69 73 74 29 | 2c 66 63 6e 29 20 21 3d |ar(list)|,fcn) !=|
|000055b0| 20 74 72 65 73 75 6c 74 | 29 0a 58 09 20 20 20 20 | tresult|).X. |
|000055c0| 62 72 65 61 6b 3b 0a 58 | 09 6c 69 73 74 20 3d 20 |break;.X|.list = |
|000055d0| 63 64 72 28 6c 69 73 74 | 29 3b 0a 58 20 20 20 20 |cdr(list|);.X |
|000055e0| 7d 0a 58 20 20 20 20 76 | 61 6c 20 3d 20 6c 61 73 |}.X v|al = las|
|000055f0| 74 20 3d 20 6c 69 73 74 | 3b 0a 58 0a 58 20 20 20 |t = list|;.X.X |
|00005600| 20 2f 2a 20 64 65 6c 65 | 74 65 20 65 6d 62 65 64 | /* dele|te embed|
|00005610| 64 65 64 20 6d 61 74 63 | 68 65 73 20 2a 2f 0a 58 |ded matc|hes */.X|
|00005620| 20 20 20 20 69 66 20 28 | 63 6f 6e 73 70 28 6c 69 | if (|consp(li|
|00005630| 73 74 29 29 20 7b 0a 58 | 0a 58 09 2f 2a 20 73 6b |st)) {.X|.X./* sk|
|00005640| 69 70 20 74 68 65 20 66 | 69 72 73 74 20 6e 6f 6e |ip the f|irst non|
|00005650| 2d 6d 61 74 63 68 69 6e | 67 20 65 6c 65 6d 65 6e |-matchin|g elemen|
|00005660| 74 20 2a 2f 0a 58 09 6c | 69 73 74 20 3d 20 63 64 |t */.X.l|ist = cd|
|00005670| 72 28 6c 69 73 74 29 3b | 0a 58 0a 58 09 2f 2a 20 |r(list);|.X.X./* |
|00005680| 6c 6f 6f 6b 20 66 6f 72 | 20 65 6d 62 65 64 64 65 |look for| embedde|
|00005690| 64 20 6d 61 74 63 68 65 | 73 20 2a 2f 0a 58 09 77 |d matche|s */.X.w|
|000056a0| 68 69 6c 65 20 28 63 6f | 6e 73 70 28 6c 69 73 74 |hile (co|nsp(list|
|000056b0| 29 29 20 7b 0a 58 0a 58 | 09 20 20 20 20 2f 2a 20 |)) {.X.X|. /* |
|000056c0| 63 68 65 63 6b 20 74 6f | 20 73 65 65 20 69 66 20 |check to| see if |
|000056d0| 74 68 69 73 20 65 6c 65 | 6d 65 6e 74 20 73 68 6f |this ele|ment sho|
|000056e0| 75 6c 64 20 62 65 20 64 | 65 6c 65 74 65 64 20 2a |uld be d|eleted *|
|000056f0| 2f 0a 58 09 20 20 20 20 | 69 66 20 28 64 6f 74 65 |/.X. |if (dote|
|00005700| 73 74 31 28 63 61 72 28 | 6c 69 73 74 29 2c 66 63 |st1(car(|list),fc|
|00005710| 6e 29 20 3d 3d 20 74 72 | 65 73 75 6c 74 29 0a 58 |n) == tr|esult).X|
|00005720| 09 09 72 70 6c 61 63 64 | 28 6c 61 73 74 2c 63 64 |..rplacd|(last,cd|
|00005730| 72 28 6c 69 73 74 29 29 | 3b 0a 58 09 20 20 20 20 |r(list))|;.X. |
|00005740| 65 6c 73 65 0a 58 09 09 | 6c 61 73 74 20 3d 20 6c |else.X..|last = l|
|00005750| 69 73 74 3b 0a 58 0a 58 | 09 20 20 20 20 2f 2a 20 |ist;.X.X|. /* |
|00005760| 6d 6f 76 65 20 74 6f 20 | 74 68 65 20 6e 65 78 74 |move to |the next|
|00005770| 20 65 6c 65 6d 65 6e 74 | 20 2a 2f 0a 58 09 20 20 | element| */.X. |
|00005780| 20 20 6c 69 73 74 20 3d | 20 63 64 72 28 6c 69 73 | list =| cdr(lis|
|00005790| 74 29 3b 0a 58 20 09 7d | 0a 58 20 20 20 20 7d 0a |t);.X .}|.X }.|
|000057a0| 58 0a 58 20 20 20 20 2f | 2a 20 72 65 73 74 6f 72 |X.X /|* restor|
|000057b0| 65 20 74 68 65 20 73 74 | 61 63 6b 20 2a 2f 0a 58 |e the st|ack */.X|
|000057c0| 20 20 20 20 78 6c 70 6f | 70 28 29 3b 0a 58 0a 58 | xlpo|p();.X.X|
|000057d0| 20 20 20 20 2f 2a 20 72 | 65 74 75 72 6e 20 74 68 | /* r|eturn th|
|000057e0| 65 20 75 70 64 61 74 65 | 64 20 6c 69 73 74 20 2a |e update|d list *|
|000057f0| 2f 0a 58 20 20 20 20 72 | 65 74 75 72 6e 20 28 76 |/.X r|eturn (v|
|00005800| 61 6c 29 3b 0a 58 7d 0a | 58 0a 58 2f 2a 20 78 73 |al);.X}.|X.X/* xs|
|00005810| 6f 72 74 20 2d 20 62 75 | 69 6c 74 2d 69 6e 20 66 |ort - bu|ilt-in f|
|00005820| 75 6e 63 74 69 6f 6e 20 | 27 73 6f 72 74 27 20 2a |unction |'sort' *|
|00005830| 2f 0a 58 4c 56 41 4c 20 | 78 73 6f 72 74 28 29 0a |/.XLVAL |xsort().|
|00005840| 58 7b 0a 58 20 20 20 20 | 4c 56 41 4c 20 73 6f 72 |X{.X |LVAL sor|
|00005850| 74 6c 69 73 74 28 29 3b | 0a 58 20 20 20 20 4c 56 |tlist();|.X LV|
|00005860| 41 4c 20 6c 69 73 74 2c | 66 63 6e 3b 0a 58 0a 58 |AL list,|fcn;.X.X|
|00005870| 20 20 20 20 2f 2a 20 70 | 72 6f 74 65 63 74 20 73 | /* p|rotect s|
|00005880| 6f 6d 65 20 70 6f 69 6e | 74 65 72 73 20 2a 2f 0a |ome poin|ters */.|
|00005890| 58 20 20 20 20 78 6c 73 | 74 6b 63 68 65 63 6b 28 |X xls|tkcheck(|
|000058a0| 32 29 3b 0a 58 20 20 20 | 20 78 6c 73 61 76 65 28 |2);.X | xlsave(|
|000058b0| 6c 69 73 74 29 3b 0a 58 | 20 20 20 20 78 6c 73 61 |list);.X| xlsa|
|000058c0| 76 65 28 66 63 6e 29 3b | 0a 58 0a 58 20 20 20 20 |ve(fcn);|.X.X |
|000058d0| 2f 2a 20 67 65 74 20 74 | 68 65 20 6c 69 73 74 20 |/* get t|he list |
|000058e0| 74 6f 20 73 6f 72 74 20 | 61 6e 64 20 74 68 65 20 |to sort |and the |
|000058f0| 63 6f 6d 70 61 72 69 73 | 6f 6e 20 66 75 6e 63 74 |comparis|on funct|
|00005900| 69 6f 6e 20 2a 2f 0a 58 | 20 20 20 20 6c 69 73 74 |ion */.X| list|
|00005910| 20 3d 20 78 6c 67 61 6c | 69 73 74 28 29 3b 0a 58 | = xlgal|ist();.X|
|00005920| 20 20 20 20 66 63 6e 20 | 3d 20 78 6c 67 65 74 61 | fcn |= xlgeta|
|00005930| 72 67 28 29 3b 0a 58 20 | 20 20 20 78 6c 6c 61 73 |rg();.X | xllas|
|00005940| 74 61 72 67 28 29 3b 0a | 58 0a 58 20 20 20 20 2f |targ();.|X.X /|
|00005950| 2a 20 73 6f 72 74 20 74 | 68 65 20 6c 69 73 74 20 |* sort t|he list |
|00005960| 2a 2f 0a 58 20 20 20 20 | 6c 69 73 74 20 3d 20 73 |*/.X |list = s|
|00005970| 6f 72 74 6c 69 73 74 28 | 6c 69 73 74 2c 66 63 6e |ortlist(|list,fcn|
|00005980| 29 3b 0a 58 0a 58 20 20 | 20 20 2f 2a 20 72 65 73 |);.X.X | /* res|
|00005990| 74 6f 72 65 20 74 68 65 | 20 73 74 61 63 6b 20 61 |tore the| stack a|
|000059a0| 6e 64 20 72 65 74 75 72 | 6e 20 74 68 65 20 73 6f |nd retur|n the so|
|000059b0| 72 74 65 64 20 6c 69 73 | 74 20 2a 2f 0a 58 20 20 |rted lis|t */.X |
|000059c0| 20 20 78 6c 70 6f 70 6e | 28 32 29 3b 0a 58 20 20 | xlpopn|(2);.X |
|000059d0| 20 20 72 65 74 75 72 6e | 20 28 6c 69 73 74 29 3b | return| (list);|
|000059e0| 0a 58 7d 0a 58 0a 58 2f | 2a 0a 58 20 20 20 20 54 |.X}.X.X/|*.X T|
|000059f0| 68 69 73 20 73 6f 72 74 | 69 6e 67 20 61 6c 67 6f |his sort|ing algo|
|00005a00| 72 69 74 68 6d 20 69 73 | 20 62 61 73 65 64 20 6f |rithm is| based o|
|00005a10| 6e 20 61 20 4d 6f 64 75 | 6c 61 2d 32 20 73 6f 72 |n a Modu|la-2 sor|
|00005a20| 74 20 77 72 69 74 74 65 | 6e 20 62 79 0a 58 20 20 |t writte|n by.X |
|00005a30| 20 20 52 69 63 68 69 65 | 20 42 69 65 6c 61 6b 20 | Richie| Bielak |
|00005a40| 61 6e 64 20 70 75 62 6c | 69 73 68 65 64 20 69 6e |and publ|ished in|
|00005a50| 20 74 68 65 20 46 65 62 | 72 75 61 72 79 20 31 39 | the Feb|ruary 19|
|00005a60| 38 38 20 69 73 73 75 65 | 20 6f 66 0a 58 20 20 20 |88 issue| of.X |
|00005a70| 20 22 43 6f 6d 70 75 74 | 65 72 20 4c 61 6e 67 75 | "Comput|er Langu|
|00005a80| 61 67 65 22 20 6d 61 67 | 61 7a 69 6e 65 20 69 6e |age" mag|azine in|
|00005a90| 20 61 20 6c 65 74 74 65 | 72 20 74 6f 20 74 68 65 | a lette|r to the|
|00005aa0| 20 65 64 69 74 6f 72 2e | 0a 58 2a 2f 0a 58 0a 58 | editor.|.X*/.X.X|
|00005ab0| 2f 2a 20 73 6f 72 74 6c | 69 73 74 20 2d 20 73 6f |/* sortl|ist - so|
|00005ac0| 72 74 20 61 20 6c 69 73 | 74 20 75 73 69 6e 67 20 |rt a lis|t using |
|00005ad0| 71 75 69 63 6b 73 6f 72 | 74 20 2a 2f 0a 58 4c 4f |quicksor|t */.XLO|
|00005ae0| 43 41 4c 20 4c 56 41 4c | 20 73 6f 72 74 6c 69 73 |CAL LVAL| sortlis|
|00005af0| 74 28 6c 69 73 74 2c 66 | 63 6e 29 0a 58 20 20 4c |t(list,f|cn).X L|
|00005b00| 56 41 4c 20 6c 69 73 74 | 2c 66 63 6e 3b 0a 58 7b |VAL list|,fcn;.X{|
|00005b10| 0a 58 20 20 20 20 4c 56 | 41 4c 20 67 6c 75 65 6c |.X LV|AL gluel|
|00005b20| 69 73 74 73 28 29 3b 0a | 58 20 20 20 20 4c 56 41 |ists();.|X LVA|
|00005b30| 4c 20 73 6d 61 6c 6c 65 | 72 2c 70 69 76 6f 74 2c |L smalle|r,pivot,|
|00005b40| 6c 61 72 67 65 72 3b 0a | 58 20 20 20 20 0a 58 20 |larger;.|X .X |
|00005b50| 20 20 20 2f 2a 20 70 72 | 6f 74 65 63 74 20 73 6f | /* pr|otect so|
|00005b60| 6d 65 20 70 6f 69 6e 74 | 65 72 73 20 2a 2f 0a 58 |me point|ers */.X|
|00005b70| 20 20 20 20 78 6c 73 74 | 6b 63 68 65 63 6b 28 33 | xlst|kcheck(3|
|00005b80| 29 3b 0a 58 20 20 20 20 | 78 6c 73 61 76 65 28 73 |);.X |xlsave(s|
|00005b90| 6d 61 6c 6c 65 72 29 3b | 0a 58 20 20 20 20 78 6c |maller);|.X xl|
|00005ba0| 73 61 76 65 28 70 69 76 | 6f 74 29 3b 0a 58 20 20 |save(piv|ot);.X |
|00005bb0| 20 20 78 6c 73 61 76 65 | 28 6c 61 72 67 65 72 29 | xlsave|(larger)|
|00005bc0| 3b 0a 58 20 20 20 20 0a | 58 20 20 20 20 2f 2a 20 |;.X .|X /* |
|00005bd0| 6c 69 73 74 73 20 77 69 | 74 68 20 7a 65 72 6f 20 |lists wi|th zero |
|00005be0| 6f 72 20 6f 6e 65 20 65 | 6c 65 6d 65 6e 74 20 61 |or one e|lement a|
|00005bf0| 72 65 20 61 6c 72 65 61 | 64 79 20 73 6f 72 74 65 |re alrea|dy sorte|
|00005c00| 64 20 2a 2f 0a 58 20 20 | 20 20 69 66 20 28 63 6f |d */.X | if (co|
|00005c10| 6e 73 70 28 6c 69 73 74 | 29 20 26 26 20 63 6f 6e |nsp(list|) && con|
|00005c20| 73 70 28 63 64 72 28 6c | 69 73 74 29 29 29 20 7b |sp(cdr(l|ist))) {|
|00005c30| 0a 58 09 70 69 76 6f 74 | 20 3d 20 6c 69 73 74 3b |.X.pivot| = list;|
|00005c40| 20 6c 69 73 74 20 3d 20 | 63 64 72 28 6c 69 73 74 | list = |cdr(list|
|00005c50| 29 3b 0a 58 09 73 70 6c | 69 74 6c 69 73 74 28 70 |);.X.spl|itlist(p|
|00005c60| 69 76 6f 74 2c 6c 69 73 | 74 2c 26 73 6d 61 6c 6c |ivot,lis|t,&small|
|00005c70| 65 72 2c 26 6c 61 72 67 | 65 72 2c 66 63 6e 29 3b |er,&larg|er,fcn);|
|00005c80| 0a 58 09 73 6d 61 6c 6c | 65 72 20 3d 20 73 6f 72 |.X.small|er = sor|
|00005c90| 74 6c 69 73 74 28 73 6d | 61 6c 6c 65 72 2c 66 63 |tlist(sm|aller,fc|
|00005ca0| 6e 29 3b 0a 58 09 6c 61 | 72 67 65 72 20 3d 20 73 |n);.X.la|rger = s|
|00005cb0| 6f 72 74 6c 69 73 74 28 | 6c 61 72 67 65 72 2c 66 |ortlist(|larger,f|
|00005cc0| 63 6e 29 3b 0a 58 09 6c | 69 73 74 20 3d 20 67 6c |cn);.X.l|ist = gl|
|00005cd0| 75 65 6c 69 73 74 73 28 | 73 6d 61 6c 6c 65 72 2c |uelists(|smaller,|
|00005ce0| 70 69 76 6f 74 2c 6c 61 | 72 67 65 72 29 3b 0a 58 |pivot,la|rger);.X|
|00005cf0| 20 20 20 20 7d 0a 58 0a | 58 20 20 20 20 2f 2a 20 | }.X.|X /* |
|00005d00| 63 6c 65 61 6e 75 70 20 | 74 68 65 20 73 74 61 63 |cleanup |the stac|
|00005d10| 6b 20 61 6e 64 20 72 65 | 74 75 72 6e 20 74 68 65 |k and re|turn the|
|00005d20| 20 73 6f 72 74 65 64 20 | 6c 69 73 74 20 2a 2f 0a | sorted |list */.|
|00005d30| 58 20 20 20 20 78 6c 70 | 6f 70 6e 28 33 29 3b 0a |X xlp|opn(3);.|
|00005d40| 58 20 20 20 20 72 65 74 | 75 72 6e 20 28 6c 69 73 |X ret|urn (lis|
|00005d50| 74 29 3b 0a 58 7d 0a 58 | 0a 58 2f 2a 20 73 70 6c |t);.X}.X|.X/* spl|
|00005d60| 69 74 6c 69 73 74 20 2d | 20 73 70 6c 69 74 20 74 |itlist -| split t|
|00005d70| 68 65 20 6c 69 73 74 20 | 61 72 6f 75 6e 64 20 74 |he list |around t|
|00005d80| 68 65 20 70 69 76 6f 74 | 20 2a 2f 0a 58 4c 4f 43 |he pivot| */.XLOC|
|00005d90| 41 4c 20 73 70 6c 69 74 | 6c 69 73 74 28 70 69 76 |AL split|list(piv|
|00005da0| 6f 74 2c 6c 69 73 74 2c | 70 73 6d 61 6c 6c 65 72 |ot,list,|psmaller|
|00005db0| 2c 70 6c 61 72 67 65 72 | 2c 66 63 6e 29 0a 58 20 |,plarger|,fcn).X |
|00005dc0| 20 4c 56 41 4c 20 70 69 | 76 6f 74 2c 6c 69 73 74 | LVAL pi|vot,list|
|00005dd0| 2c 2a 70 73 6d 61 6c 6c | 65 72 2c 2a 70 6c 61 72 |,*psmall|er,*plar|
|00005de0| 67 65 72 2c 66 63 6e 3b | 0a 58 7b 0a 58 20 20 20 |ger,fcn;|.X{.X |
|00005df0| 20 4c 56 41 4c 20 6e 65 | 78 74 3b 0a 58 20 20 20 | LVAL ne|xt;.X |
|00005e00| 20 0a 58 20 20 20 20 2f | 2a 20 69 6e 69 74 69 61 | .X /|* initia|
|00005e10| 6c 69 7a 65 20 74 68 65 | 20 72 65 73 75 6c 74 20 |lize the| result |
|00005e20| 6c 69 73 74 73 20 2a 2f | 0a 58 20 20 20 20 2a 70 |lists */|.X *p|
|00005e30| 73 6d 61 6c 6c 65 72 20 | 3d 20 2a 70 6c 61 72 67 |smaller |= *plarg|
|00005e40| 65 72 20 3d 20 4e 49 4c | 3b 0a 58 20 20 20 20 0a |er = NIL|;.X .|
|00005e50| 58 20 20 20 20 2f 2a 20 | 73 70 6c 69 74 20 74 68 |X /* |split th|
|00005e60| 65 20 6c 69 73 74 20 2a | 2f 0a 58 20 20 20 20 66 |e list *|/.X f|
|00005e70| 6f 72 20 28 3b 20 63 6f | 6e 73 70 28 6c 69 73 74 |or (; co|nsp(list|
|00005e80| 29 3b 20 6c 69 73 74 20 | 3d 20 6e 65 78 74 29 20 |); list |= next) |
|00005e90| 7b 0a 58 09 6e 65 78 74 | 20 3d 20 63 64 72 28 6c |{.X.next| = cdr(l|
|00005ea0| 69 73 74 29 3b 0a 58 09 | 69 66 20 28 64 6f 74 65 |ist);.X.|if (dote|
|00005eb0| 73 74 32 28 63 61 72 28 | 6c 69 73 74 29 2c 63 61 |st2(car(|list),ca|
|00005ec0| 72 28 70 69 76 6f 74 29 | 2c 66 63 6e 29 29 20 7b |r(pivot)|,fcn)) {|
|00005ed0| 0a 58 09 20 20 20 20 72 | 70 6c 61 63 64 28 6c 69 |.X. r|placd(li|
|00005ee0| 73 74 2c 2a 70 73 6d 61 | 6c 6c 65 72 29 3b 0a 58 |st,*psma|ller);.X|
|00005ef0| 09 20 20 20 20 2a 70 73 | 6d 61 6c 6c 65 72 20 3d |. *ps|maller =|
|00005f00| 20 6c 69 73 74 3b 0a 58 | 09 7d 0a 58 09 65 6c 73 | list;.X|.}.X.els|
|00005f10| 65 20 7b 0a 58 09 20 20 | 20 20 72 70 6c 61 63 64 |e {.X. | rplacd|
|00005f20| 28 6c 69 73 74 2c 2a 70 | 6c 61 72 67 65 72 29 3b |(list,*p|larger);|
|00005f30| 0a 58 09 20 20 20 20 2a | 70 6c 61 72 67 65 72 20 |.X. *|plarger |
|00005f40| 3d 20 6c 69 73 74 3b 0a | 58 09 7d 0a 58 20 20 20 |= list;.|X.}.X |
|00005f50| 20 7d 0a 58 7d 0a 58 0a | 58 2f 2a 20 67 6c 75 65 | }.X}.X.|X/* glue|
|00005f60| 6c 69 73 74 73 20 2d 20 | 67 6c 75 65 20 74 68 65 |lists - |glue the|
|00005f70| 20 73 6d 61 6c 6c 65 72 | 20 61 6e 64 20 6c 61 72 | smaller| and lar|
|00005f80| 67 65 72 20 6c 69 73 74 | 73 20 77 69 74 68 20 74 |ger list|s with t|
|00005f90| 68 65 20 70 69 76 6f 74 | 20 2a 2f 0a 58 4c 4f 43 |he pivot| */.XLOC|
|00005fa0| 41 4c 20 4c 56 41 4c 20 | 67 6c 75 65 6c 69 73 74 |AL LVAL |gluelist|
|00005fb0| 73 28 73 6d 61 6c 6c 65 | 72 2c 70 69 76 6f 74 2c |s(smalle|r,pivot,|
|00005fc0| 6c 61 72 67 65 72 29 0a | 58 20 20 4c 56 41 4c 20 |larger).|X LVAL |
|00005fd0| 73 6d 61 6c 6c 65 72 2c | 70 69 76 6f 74 2c 6c 61 |smaller,|pivot,la|
|00005fe0| 72 67 65 72 3b 0a 58 7b | 0a 58 20 20 20 20 4c 56 |rger;.X{|.X LV|
|00005ff0| 41 4c 20 6c 61 73 74 3b | 0a 58 20 20 20 20 0a 58 |AL last;|.X .X|
|00006000| 20 20 20 20 2f 2a 20 6c | 61 72 67 65 72 20 61 6c | /* l|arger al|
|00006010| 77 61 79 73 20 67 6f 65 | 73 20 61 66 74 65 72 20 |ways goe|s after |
|00006020| 74 68 65 20 70 69 76 6f | 74 20 2a 2f 0a 58 20 20 |the pivo|t */.X |
|00006030| 20 20 72 70 6c 61 63 64 | 28 70 69 76 6f 74 2c 6c | rplacd|(pivot,l|
|00006040| 61 72 67 65 72 29 3b 0a | 58 0a 58 20 20 20 20 2f |arger);.|X.X /|
|00006050| 2a 20 69 66 20 74 68 65 | 20 73 6d 61 6c 6c 65 72 |* if the| smaller|
|00006060| 20 6c 69 73 74 20 69 73 | 20 65 6d 70 74 79 2c 20 | list is| empty, |
|00006070| 77 65 27 72 65 20 64 6f | 6e 65 20 2a 2f 0a 58 20 |we're do|ne */.X |
|00006080| 20 20 20 69 66 20 28 6e | 75 6c 6c 28 73 6d 61 6c | if (n|ull(smal|
|00006090| 6c 65 72 29 29 0a 58 09 | 72 65 74 75 72 6e 20 28 |ler)).X.|return (|
|000060a0| 70 69 76 6f 74 29 3b 0a | 58 0a 58 20 20 20 20 2f |pivot);.|X.X /|
|000060b0| 2a 20 61 70 70 65 6e 64 | 20 74 68 65 20 73 6d 61 |* append| the sma|
|000060c0| 6c 6c 65 72 20 74 6f 20 | 74 68 65 20 66 72 6f 6e |ller to |the fron|
|000060d0| 74 20 6f 66 20 74 68 65 | 20 72 65 73 75 6c 74 69 |t of the| resulti|
|000060e0| 6e 67 20 6c 69 73 74 20 | 2a 2f 0a 58 20 20 20 20 |ng list |*/.X |
|000060f0| 66 6f 72 20 28 6c 61 73 | 74 20 3d 20 73 6d 61 6c |for (las|t = smal|
|00006100| 6c 65 72 3b 20 63 6f 6e | 73 70 28 63 64 72 28 6c |ler; con|sp(cdr(l|
|00006110| 61 73 74 29 29 3b 20 6c | 61 73 74 20 3d 20 63 64 |ast)); l|ast = cd|
|00006120| 72 28 6c 61 73 74 29 29 | 0a 58 09 3b 0a 58 20 20 |r(last))|.X.;.X |
|00006130| 20 20 72 70 6c 61 63 64 | 28 6c 61 73 74 2c 70 69 | rplacd|(last,pi|
|00006140| 76 6f 74 29 3b 0a 58 20 | 20 20 20 72 65 74 75 72 |vot);.X | retur|
|00006150| 6e 20 28 73 6d 61 6c 6c | 65 72 29 3b 0a 58 7d 0a |n (small|er);.X}.|
|00006160| 53 48 41 52 5f 45 4f 46 | 0a 69 66 20 74 65 73 74 |SHAR_EOF|.if test|
|00006170| 20 31 38 37 36 31 20 2d | 6e 65 20 22 60 77 63 20 | 18761 -|ne "`wc |
|00006180| 2d 63 20 27 78 6c 6c 69 | 73 74 2e 63 27 60 22 0a |-c 'xlli|st.c'`".|
|00006190| 74 68 65 6e 0a 09 65 63 | 68 6f 20 73 68 61 72 3a |then..ec|ho shar:|
|000061a0| 20 65 72 72 6f 72 20 74 | 72 61 6e 73 6d 69 74 74 | error t|ransmitt|
|000061b0| 69 6e 67 20 22 27 78 6c | 6c 69 73 74 2e 63 27 22 |ing "'xl|list.c'"|
|000061c0| 20 27 28 73 68 6f 75 6c | 64 20 68 61 76 65 20 62 | '(shoul|d have b|
|000061d0| 65 65 6e 20 31 38 37 36 | 31 20 63 68 61 72 61 63 |een 1876|1 charac|
|000061e0| 74 65 72 73 29 27 0a 66 | 69 0a 65 63 68 6f 20 73 |ters)'.f|i.echo s|
|000061f0| 68 61 72 3a 20 65 78 74 | 72 61 63 74 69 6e 67 20 |har: ext|racting |
|00006200| 22 27 78 6c 6d 61 74 68 | 2e 63 27 22 20 27 28 39 |"'xlmath|.c'" '(9|
|00006210| 39 39 33 20 63 68 61 72 | 61 63 74 65 72 73 29 27 |993 char|acters)'|
|00006220| 0a 69 66 20 74 65 73 74 | 20 2d 66 20 27 78 6c 6d |.if test| -f 'xlm|
|00006230| 61 74 68 2e 63 27 0a 74 | 68 65 6e 0a 09 65 63 68 |ath.c'.t|hen..ech|
|00006240| 6f 20 73 68 61 72 3a 20 | 6f 76 65 72 2d 77 72 69 |o shar: |over-wri|
|00006250| 74 69 6e 67 20 65 78 69 | 73 74 69 6e 67 20 66 69 |ting exi|sting fi|
|00006260| 6c 65 20 22 27 78 6c 6d | 61 74 68 2e 63 27 22 0a |le "'xlm|ath.c'".|
|00006270| 66 69 0a 73 65 64 20 27 | 73 2f 5e 58 2f 2f 27 20 |fi.sed '|s/^X//' |
|00006280| 3c 3c 20 5c 53 48 41 52 | 5f 45 4f 46 20 3e 20 27 |<< \SHAR|_EOF > '|
|00006290| 78 6c 6d 61 74 68 2e 63 | 27 0a 58 2f 2a 20 78 6c |xlmath.c|'.X/* xl|
|000062a0| 6d 61 74 68 20 2d 20 78 | 6c 69 73 70 20 62 75 69 |math - x|lisp bui|
|000062b0| 6c 74 2d 69 6e 20 61 72 | 69 74 68 6d 65 74 69 63 |lt-in ar|ithmetic|
|000062c0| 20 66 75 6e 63 74 69 6f | 6e 73 20 2a 2f 0a 58 2f | functio|ns */.X/|
|000062d0| 2a 09 43 6f 70 79 72 69 | 67 68 74 20 28 63 29 20 |*.Copyri|ght (c) |
|000062e0| 31 39 38 35 2c 20 62 79 | 20 44 61 76 69 64 20 4d |1985, by| David M|
|000062f0| 69 63 68 61 65 6c 20 42 | 65 74 7a 0a 58 09 41 6c |ichael B|etz.X.Al|
|00006300| 6c 20 52 69 67 68 74 73 | 20 52 65 73 65 72 76 65 |l Rights| Reserve|
|00006310| 64 0a 58 09 50 65 72 6d | 69 73 73 69 6f 6e 20 69 |d.X.Perm|ission i|
|00006320| 73 20 67 72 61 6e 74 65 | 64 20 66 6f 72 20 75 6e |s grante|d for un|
|00006330| 72 65 73 74 72 69 63 74 | 65 64 20 6e 6f 6e 2d 63 |restrict|ed non-c|
|00006340| 6f 6d 6d 65 72 63 69 61 | 6c 20 75 73 65 09 2a 2f |ommercia|l use.*/|
|00006350| 0a 58 0a 58 23 69 6e 63 | 6c 75 64 65 20 22 78 6c |.X.X#inc|lude "xl|
|00006360| 69 73 70 2e 68 22 0a 58 | 23 69 6e 63 6c 75 64 65 |isp.h".X|#include|
|00006370| 20 3c 6d 61 74 68 2e 68 | 3e 0a 58 0a 58 2f 2a 20 | <math.h|>.X.X/* |
|00006380| 65 78 74 65 72 6e 61 6c | 20 76 61 72 69 61 62 6c |external| variabl|
|00006390| 65 73 20 2a 2f 0a 58 65 | 78 74 65 72 6e 20 4c 56 |es */.Xe|xtern LV|
|000063a0| 41 4c 20 74 72 75 65 3b | 0a 58 0a 58 2f 2a 20 66 |AL true;|.X.X/* f|
|000063b0| 6f 72 77 61 72 64 20 64 | 65 63 6c 61 72 61 74 69 |orward d|eclarati|
|000063c0| 6f 6e 73 20 2a 2f 0a 58 | 46 4f 52 57 41 52 44 20 |ons */.X|FORWARD |
|000063d0| 4c 56 41 4c 20 75 6e 61 | 72 79 28 29 3b 0a 58 46 |LVAL una|ry();.XF|
|000063e0| 4f 52 57 41 52 44 20 4c | 56 41 4c 20 62 69 6e 61 |ORWARD L|VAL bina|
|000063f0| 72 79 28 29 3b 0a 58 46 | 4f 52 57 41 52 44 20 4c |ry();.XF|ORWARD L|
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.