home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume22 / gawk2.11 / part12 < prev    next >
SHell self-extracting ARchive  |  1990-06-07  |  53.8 KB

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).

ConfidenceProgramDetectionMatch TypeSupport
100% dexvert Newsgroup Content (archive/news) magic Supported
100% dexvert SHell self-extracting ARchive (archive/shar) magic Supported
100% dexvert Internet Message Format (text/imf) magic Supported
1% dexvert Text File (text/txt) fallback Supported
100% file news or mail, 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)
100% xdgMime message/rfc822 default



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 53 75 62 6a 65 63 74 3a | 20 20 76 32 32 69 30 39 |Subject:| v22i09|
|00000010| 38 3a 20 20 47 4e 55 20 | 41 57 4b 2c 20 76 65 72 |8: GNU |AWK, ver|
|00000020| 73 69 6f 6e 20 32 2e 31 | 31 2c 20 50 61 72 74 31 |sion 2.1|1, Part1|
|00000030| 32 2f 31 36 0a 4e 65 77 | 73 67 72 6f 75 70 73 3a |2/16.New|sgroups:|
|00000040| 20 63 6f 6d 70 2e 73 6f | 75 72 63 65 73 2e 75 6e | comp.so|urces.un|
|00000050| 69 78 0a 41 70 70 72 6f | 76 65 64 3a 20 72 73 61 |ix.Appro|ved: rsa|
|00000060| 6c 7a 40 75 75 6e 65 74 | 2e 55 55 2e 4e 45 54 0a |lz@uunet|.UU.NET.|
|00000070| 58 2d 43 68 65 63 6b 73 | 75 6d 2d 53 6e 65 66 72 |X-Checks|um-Snefr|
|00000080| 75 3a 20 31 63 33 39 31 | 64 39 37 20 35 36 31 32 |u: 1c391|d97 5612|
|00000090| 39 31 66 37 20 62 37 32 | 64 35 65 35 38 20 33 32 |91f7 b72|d5e58 32|
|000000a0| 31 37 37 32 39 62 0a 0a | 53 75 62 6d 69 74 74 65 |17729b..|Submitte|
|000000b0| 64 2d 62 79 3a 20 22 41 | 72 6e 6f 6c 64 20 44 2e |d-by: "A|rnold D.|
|000000c0| 20 52 6f 62 62 69 6e 73 | 22 20 3c 61 72 6e 6f 6c | Robbins|" <arnol|
|000000d0| 64 40 75 6e 69 78 2e 63 | 63 2e 65 6d 6f 72 79 2e |d@unix.c|c.emory.|
|000000e0| 65 64 75 3e 0a 50 6f 73 | 74 69 6e 67 2d 6e 75 6d |edu>.Pos|ting-num|
|000000f0| 62 65 72 3a 20 56 6f 6c | 75 6d 65 20 32 32 2c 20 |ber: Vol|ume 22, |
|00000100| 49 73 73 75 65 20 39 38 | 0a 41 72 63 68 69 76 65 |Issue 98|.Archive|
|00000110| 2d 6e 61 6d 65 3a 20 67 | 61 77 6b 32 2e 31 31 2f |-name: g|awk2.11/|
|00000120| 70 61 72 74 31 32 0a 0a | 23 21 20 2f 62 69 6e 2f |part12..|#! /bin/|
|00000130| 73 68 0a 23 20 54 68 69 | 73 20 69 73 20 61 20 73 |sh.# Thi|s is a s|
|00000140| 68 65 6c 6c 20 61 72 63 | 68 69 76 65 2e 20 20 52 |hell arc|hive. R|
|00000150| 65 6d 6f 76 65 20 61 6e | 79 74 68 69 6e 67 20 62 |emove an|ything b|
|00000160| 65 66 6f 72 65 20 74 68 | 69 73 20 6c 69 6e 65 2c |efore th|is line,|
|00000170| 20 74 68 65 6e 20 66 65 | 65 64 20 69 74 0a 23 20 | then fe|ed it.# |
|00000180| 69 6e 74 6f 20 61 20 73 | 68 65 6c 6c 20 76 69 61 |into a s|hell via|
|00000190| 20 22 73 68 20 66 69 6c | 65 22 20 6f 72 20 73 69 | "sh fil|e" or si|
|000001a0| 6d 69 6c 61 72 2e 20 20 | 54 6f 20 6f 76 65 72 77 |milar. |To overw|
|000001b0| 72 69 74 65 20 65 78 69 | 73 74 69 6e 67 20 66 69 |rite exi|sting fi|
|000001c0| 6c 65 73 2c 0a 23 20 74 | 79 70 65 20 22 73 68 20 |les,.# t|ype "sh |
|000001d0| 66 69 6c 65 20 2d 63 22 | 2e 0a 23 20 54 68 65 20 |file -c"|..# The |
|000001e0| 74 6f 6f 6c 20 74 68 61 | 74 20 67 65 6e 65 72 61 |tool tha|t genera|
|000001f0| 74 65 64 20 74 68 69 73 | 20 61 70 70 65 61 72 65 |ted this| appeare|
|00000200| 64 20 69 6e 20 74 68 65 | 20 63 6f 6d 70 2e 73 6f |d in the| comp.so|
|00000210| 75 72 63 65 73 2e 75 6e | 69 78 20 6e 65 77 73 67 |urces.un|ix newsg|
|00000220| 72 6f 75 70 3b 0a 23 20 | 73 65 6e 64 20 6d 61 69 |roup;.# |send mai|
|00000230| 6c 20 74 6f 20 63 6f 6d | 70 2d 73 6f 75 72 63 65 |l to com|p-source|
|00000240| 73 2d 75 6e 69 78 40 75 | 75 6e 65 74 2e 75 75 2e |s-unix@u|unet.uu.|
|00000250| 6e 65 74 20 69 66 20 79 | 6f 75 20 77 61 6e 74 20 |net if y|ou want |
|00000260| 74 68 61 74 20 74 6f 6f | 6c 2e 0a 23 20 43 6f 6e |that too|l..# Con|
|00000270| 74 65 6e 74 73 3a 20 20 | 2e 2f 62 75 69 6c 74 69 |tents: |./builti|
|00000280| 6e 2e 63 20 2e 2f 65 76 | 61 6c 2e 63 20 2e 2f 6d |n.c ./ev|al.c ./m|
|00000290| 69 73 73 69 6e 67 2e 64 | 2f 67 63 76 74 2e 63 0a |issing.d|/gcvt.c.|
|000002a0| 23 20 57 72 61 70 70 65 | 64 20 62 79 20 72 73 61 |# Wrappe|d by rsa|
|000002b0| 6c 7a 40 6c 69 74 63 68 | 69 2e 62 62 6e 2e 63 6f |lz@litch|i.bbn.co|
|000002c0| 6d 20 6f 6e 20 57 65 64 | 20 4a 75 6e 20 20 36 20 |m on Wed| Jun 6 |
|000002d0| 31 32 3a 32 34 3a 35 37 | 20 31 39 39 30 0a 50 41 |12:24:57| 1990.PA|
|000002e0| 54 48 3d 2f 62 69 6e 3a | 2f 75 73 72 2f 62 69 6e |TH=/bin:|/usr/bin|
|000002f0| 3a 2f 75 73 72 2f 75 63 | 62 20 3b 20 65 78 70 6f |:/usr/uc|b ; expo|
|00000300| 72 74 20 50 41 54 48 0a | 65 63 68 6f 20 49 66 20 |rt PATH.|echo If |
|00000310| 74 68 69 73 20 61 72 63 | 68 69 76 65 20 69 73 20 |this arc|hive is |
|00000320| 63 6f 6d 70 6c 65 74 65 | 2c 20 79 6f 75 20 77 69 |complete|, you wi|
|00000330| 6c 6c 20 73 65 65 20 74 | 68 65 20 66 6f 6c 6c 6f |ll see t|he follo|
|00000340| 77 69 6e 67 20 6d 65 73 | 73 61 67 65 3a 0a 65 63 |wing mes|sage:.ec|
|00000350| 68 6f 20 27 20 20 20 20 | 20 20 20 20 20 20 22 73 |ho ' | "s|
|00000360| 68 61 72 3a 20 45 6e 64 | 20 6f 66 20 61 72 63 68 |har: End| of arch|
|00000370| 69 76 65 20 31 32 20 28 | 6f 66 20 31 36 29 2e 22 |ive 12 (|of 16)."|
|00000380| 27 0a 69 66 20 74 65 73 | 74 20 2d 66 20 27 2e 2f |'.if tes|t -f './|
|00000390| 62 75 69 6c 74 69 6e 2e | 63 27 20 2d 61 20 22 24 |builtin.|c' -a "$|
|000003a0| 7b 31 7d 22 20 21 3d 20 | 22 2d 63 22 20 3b 20 74 |{1}" != |"-c" ; t|
|000003b0| 68 65 6e 20 0a 20 20 65 | 63 68 6f 20 73 68 61 72 |hen . e|cho shar|
|000003c0| 3a 20 57 69 6c 6c 20 6e | 6f 74 20 63 6c 6f 62 62 |: Will n|ot clobb|
|000003d0| 65 72 20 65 78 69 73 74 | 69 6e 67 20 66 69 6c 65 |er exist|ing file|
|000003e0| 20 5c 22 27 2e 2f 62 75 | 69 6c 74 69 6e 2e 63 27 | \"'./bu|iltin.c'|
|000003f0| 5c 22 0a 65 6c 73 65 0a | 20 20 65 63 68 6f 20 73 |\".else.| echo s|
|00000400| 68 61 72 3a 20 45 78 74 | 72 61 63 74 69 6e 67 20 |har: Ext|racting |
|00000410| 5c 22 27 2e 2f 62 75 69 | 6c 74 69 6e 2e 63 27 5c |\"'./bui|ltin.c'\|
|00000420| 22 20 5c 28 32 30 36 35 | 39 20 63 68 61 72 61 63 |" \(2065|9 charac|
|00000430| 74 65 72 73 5c 29 0a 20 | 20 73 65 64 20 22 73 2f |ters\). | sed "s/|
|00000440| 5e 58 2f 2f 22 20 3e 27 | 2e 2f 62 75 69 6c 74 69 |^X//" >'|./builti|
|00000450| 6e 2e 63 27 20 3c 3c 27 | 45 4e 44 5f 4f 46 5f 46 |n.c' <<'|END_OF_F|
|00000460| 49 4c 45 27 0a 58 2f 2a | 0a 58 20 2a 20 62 75 69 |ILE'.X/*|.X * bui|
|00000470| 6c 74 69 6e 2e 63 20 2d | 20 42 75 69 6c 74 69 6e |ltin.c -| Builtin|
|00000480| 20 66 75 6e 63 74 69 6f | 6e 73 20 61 6e 64 20 76 | functio|ns and v|
|00000490| 61 72 69 6f 75 73 20 75 | 74 69 6c 69 74 79 20 70 |arious u|tility p|
|000004a0| 72 6f 63 65 64 75 72 65 | 73 20 0a 58 20 2a 2f 0a |rocedure|s .X */.|
|000004b0| 58 0a 58 2f 2a 20 0a 58 | 20 2a 20 43 6f 70 79 72 |X.X/* .X| * Copyr|
|000004c0| 69 67 68 74 20 28 43 29 | 20 31 39 38 36 2c 20 31 |ight (C)| 1986, 1|
|000004d0| 39 38 38 2c 20 31 39 38 | 39 20 74 68 65 20 46 72 |988, 198|9 the Fr|
|000004e0| 65 65 20 53 6f 66 74 77 | 61 72 65 20 46 6f 75 6e |ee Softw|are Foun|
|000004f0| 64 61 74 69 6f 6e 2c 20 | 49 6e 63 2e 0a 58 20 2a |dation, |Inc..X *|
|00000500| 20 0a 58 20 2a 20 54 68 | 69 73 20 66 69 6c 65 20 | .X * Th|is file |
|00000510| 69 73 20 70 61 72 74 20 | 6f 66 20 47 41 57 4b 2c |is part |of GAWK,|
|00000520| 20 74 68 65 20 47 4e 55 | 20 69 6d 70 6c 65 6d 65 | the GNU| impleme|
|00000530| 6e 74 61 74 69 6f 6e 20 | 6f 66 20 74 68 65 0a 58 |ntation |of the.X|
|00000540| 20 2a 20 41 57 4b 20 50 | 72 6f 67 61 6d 6d 69 6e | * AWK P|rogammin|
|00000550| 67 20 4c 61 6e 67 75 61 | 67 65 2e 0a 58 20 2a 20 |g Langua|ge..X * |
|00000560| 0a 58 20 2a 20 47 41 57 | 4b 20 69 73 20 66 72 65 |.X * GAW|K is fre|
|00000570| 65 20 73 6f 66 74 77 61 | 72 65 3b 20 79 6f 75 20 |e softwa|re; you |
|00000580| 63 61 6e 20 72 65 64 69 | 73 74 72 69 62 75 74 65 |can redi|stribute|
|00000590| 20 69 74 20 61 6e 64 2f | 6f 72 20 6d 6f 64 69 66 | it and/|or modif|
|000005a0| 79 0a 58 20 2a 20 69 74 | 20 75 6e 64 65 72 20 74 |y.X * it| under t|
|000005b0| 68 65 20 74 65 72 6d 73 | 20 6f 66 20 74 68 65 20 |he terms| of the |
|000005c0| 47 4e 55 20 47 65 6e 65 | 72 61 6c 20 50 75 62 6c |GNU Gene|ral Publ|
|000005d0| 69 63 20 4c 69 63 65 6e | 73 65 20 61 73 20 70 75 |ic Licen|se as pu|
|000005e0| 62 6c 69 73 68 65 64 20 | 62 79 0a 58 20 2a 20 74 |blished |by.X * t|
|000005f0| 68 65 20 46 72 65 65 20 | 53 6f 66 74 77 61 72 65 |he Free |Software|
|00000600| 20 46 6f 75 6e 64 61 74 | 69 6f 6e 3b 20 65 69 74 | Foundat|ion; eit|
|00000610| 68 65 72 20 76 65 72 73 | 69 6f 6e 20 31 2c 20 6f |her vers|ion 1, o|
|00000620| 72 20 28 61 74 20 79 6f | 75 72 20 6f 70 74 69 6f |r (at yo|ur optio|
|00000630| 6e 29 0a 58 20 2a 20 61 | 6e 79 20 6c 61 74 65 72 |n).X * a|ny later|
|00000640| 20 76 65 72 73 69 6f 6e | 2e 0a 58 20 2a 20 0a 58 | version|..X * .X|
|00000650| 20 2a 20 47 41 57 4b 20 | 69 73 20 64 69 73 74 72 | * GAWK |is distr|
|00000660| 69 62 75 74 65 64 20 69 | 6e 20 74 68 65 20 68 6f |ibuted i|n the ho|
|00000670| 70 65 20 74 68 61 74 20 | 69 74 20 77 69 6c 6c 20 |pe that |it will |
|00000680| 62 65 20 75 73 65 66 75 | 6c 2c 0a 58 20 2a 20 62 |be usefu|l,.X * b|
|00000690| 75 74 20 57 49 54 48 4f | 55 54 20 41 4e 59 20 57 |ut WITHO|UT ANY W|
|000006a0| 41 52 52 41 4e 54 59 3b | 20 77 69 74 68 6f 75 74 |ARRANTY;| without|
|000006b0| 20 65 76 65 6e 20 74 68 | 65 20 69 6d 70 6c 69 65 | even th|e implie|
|000006c0| 64 20 77 61 72 72 61 6e | 74 79 20 6f 66 0a 58 20 |d warran|ty of.X |
|000006d0| 2a 20 4d 45 52 43 48 41 | 4e 54 41 42 49 4c 49 54 |* MERCHA|NTABILIT|
|000006e0| 59 20 6f 72 20 46 49 54 | 4e 45 53 53 20 46 4f 52 |Y or FIT|NESS FOR|
|000006f0| 20 41 20 50 41 52 54 49 | 43 55 4c 41 52 20 50 55 | A PARTI|CULAR PU|
|00000700| 52 50 4f 53 45 2e 20 20 | 53 65 65 20 74 68 65 0a |RPOSE. |See the.|
|00000710| 58 20 2a 20 47 4e 55 20 | 47 65 6e 65 72 61 6c 20 |X * GNU |General |
|00000720| 50 75 62 6c 69 63 20 4c | 69 63 65 6e 73 65 20 66 |Public L|icense f|
|00000730| 6f 72 20 6d 6f 72 65 20 | 64 65 74 61 69 6c 73 2e |or more |details.|
|00000740| 0a 58 20 2a 20 0a 58 20 | 2a 20 59 6f 75 20 73 68 |.X * .X |* You sh|
|00000750| 6f 75 6c 64 20 68 61 76 | 65 20 72 65 63 65 69 76 |ould hav|e receiv|
|00000760| 65 64 20 61 20 63 6f 70 | 79 20 6f 66 20 74 68 65 |ed a cop|y of the|
|00000770| 20 47 4e 55 20 47 65 6e | 65 72 61 6c 20 50 75 62 | GNU Gen|eral Pub|
|00000780| 6c 69 63 20 4c 69 63 65 | 6e 73 65 0a 58 20 2a 20 |lic Lice|nse.X * |
|00000790| 61 6c 6f 6e 67 20 77 69 | 74 68 20 47 41 57 4b 3b |along wi|th GAWK;|
|000007a0| 20 73 65 65 20 74 68 65 | 20 66 69 6c 65 20 43 4f | see the| file CO|
|000007b0| 50 59 49 4e 47 2e 20 20 | 49 66 20 6e 6f 74 2c 20 |PYING. |If not, |
|000007c0| 77 72 69 74 65 20 74 6f | 0a 58 20 2a 20 74 68 65 |write to|.X * the|
|000007d0| 20 46 72 65 65 20 53 6f | 66 74 77 61 72 65 20 46 | Free So|ftware F|
|000007e0| 6f 75 6e 64 61 74 69 6f | 6e 2c 20 36 37 35 20 4d |oundatio|n, 675 M|
|000007f0| 61 73 73 20 41 76 65 2c | 20 43 61 6d 62 72 69 64 |ass Ave,| Cambrid|
|00000800| 67 65 2c 20 4d 41 20 30 | 32 31 33 39 2c 20 55 53 |ge, MA 0|2139, US|
|00000810| 41 2e 0a 58 20 2a 2f 0a | 58 0a 58 23 69 6e 63 6c |A..X */.|X.X#incl|
|00000820| 75 64 65 20 22 61 77 6b | 2e 68 22 0a 58 0a 58 65 |ude "awk|.h".X.Xe|
|00000830| 78 74 65 72 6e 20 76 6f | 69 64 20 73 72 61 6e 64 |xtern vo|id srand|
|00000840| 6f 6d 28 29 3b 0a 58 65 | 78 74 65 72 6e 20 63 68 |om();.Xe|xtern ch|
|00000850| 61 72 20 2a 69 6e 69 74 | 73 74 61 74 65 28 29 3b |ar *init|state();|
|00000860| 0a 58 65 78 74 65 72 6e | 20 63 68 61 72 20 2a 73 |.Xextern| char *s|
|00000870| 65 74 73 74 61 74 65 28 | 29 3b 0a 58 65 78 74 65 |etstate(|);.Xexte|
|00000880| 72 6e 20 6c 6f 6e 67 20 | 72 61 6e 64 6f 6d 28 29 |rn long |random()|
|00000890| 3b 0a 58 0a 58 65 78 74 | 65 72 6e 20 4e 4f 44 45 |;.X.Xext|ern NODE|
|000008a0| 20 2a 2a 66 69 65 6c 64 | 73 5f 61 72 72 3b 0a 58 | **field|s_arr;.X|
|000008b0| 0a 58 73 74 61 74 69 63 | 20 76 6f 69 64 20 67 65 |.Xstatic| void ge|
|000008c0| 74 5f 6f 6e 65 28 29 3b | 0a 58 73 74 61 74 69 63 |t_one();|.Xstatic|
|000008d0| 20 76 6f 69 64 20 67 65 | 74 5f 74 77 6f 28 29 3b | void ge|t_two();|
|000008e0| 0a 58 73 74 61 74 69 63 | 20 69 6e 74 20 67 65 74 |.Xstatic| int get|
|000008f0| 5f 74 68 72 65 65 28 29 | 3b 0a 58 0a 58 2f 2a 20 |_three()|;.X.X/* |
|00000900| 42 75 69 6c 74 69 6e 20 | 66 75 6e 63 74 69 6f 6e |Builtin |function|
|00000910| 73 20 2a 2f 0a 58 4e 4f | 44 45 20 2a 0a 58 64 6f |s */.XNO|DE *.Xdo|
|00000920| 5f 65 78 70 28 74 72 65 | 65 29 0a 58 4e 4f 44 45 |_exp(tre|e).XNODE|
|00000930| 20 2a 74 72 65 65 3b 0a | 58 7b 0a 58 09 4e 4f 44 | *tree;.|X{.X.NOD|
|00000940| 45 20 2a 74 6d 70 3b 0a | 58 09 64 6f 75 62 6c 65 |E *tmp;.|X.double|
|00000950| 20 64 2c 20 72 65 73 3b | 0a 58 09 64 6f 75 62 6c | d, res;|.X.doubl|
|00000960| 65 20 65 78 70 28 29 3b | 0a 58 0a 58 09 67 65 74 |e exp();|.X.X.get|
|00000970| 5f 6f 6e 65 28 74 72 65 | 65 2c 20 26 74 6d 70 29 |_one(tre|e, &tmp)|
|00000980| 3b 0a 58 09 64 20 3d 20 | 66 6f 72 63 65 5f 6e 75 |;.X.d = |force_nu|
|00000990| 6d 62 65 72 28 74 6d 70 | 29 3b 0a 58 09 66 72 65 |mber(tmp|);.X.fre|
|000009a0| 65 5f 74 65 6d 70 28 74 | 6d 70 29 3b 0a 58 09 65 |e_temp(t|mp);.X.e|
|000009b0| 72 72 6e 6f 20 3d 20 30 | 3b 0a 58 09 72 65 73 20 |rrno = 0|;.X.res |
|000009c0| 3d 20 65 78 70 28 64 29 | 3b 0a 58 09 69 66 20 28 |= exp(d)|;.X.if (|
|000009d0| 65 72 72 6e 6f 20 3d 3d | 20 45 52 41 4e 47 45 29 |errno ==| ERANGE)|
|000009e0| 0a 58 09 09 77 61 72 6e | 69 6e 67 28 22 65 78 70 |.X..warn|ing("exp|
|000009f0| 20 61 72 67 75 6d 65 6e | 74 20 25 67 20 69 73 20 | argumen|t %g is |
|00000a00| 6f 75 74 20 6f 66 20 72 | 61 6e 67 65 22 2c 20 64 |out of r|ange", d|
|00000a10| 29 3b 0a 58 09 72 65 74 | 75 72 6e 20 74 6d 70 5f |);.X.ret|urn tmp_|
|00000a20| 6e 75 6d 62 65 72 28 28 | 41 57 4b 4e 55 4d 29 20 |number((|AWKNUM) |
|00000a30| 72 65 73 29 3b 0a 58 7d | 0a 58 0a 58 4e 4f 44 45 |res);.X}|.X.XNODE|
|00000a40| 20 2a 0a 58 64 6f 5f 69 | 6e 64 65 78 28 74 72 65 | *.Xdo_i|ndex(tre|
|00000a50| 65 29 0a 58 4e 4f 44 45 | 20 2a 74 72 65 65 3b 0a |e).XNODE| *tree;.|
|00000a60| 58 7b 0a 58 09 4e 4f 44 | 45 20 2a 73 31 2c 20 2a |X{.X.NOD|E *s1, *|
|00000a70| 73 32 3b 0a 58 09 72 65 | 67 69 73 74 65 72 20 63 |s2;.X.re|gister c|
|00000a80| 68 61 72 20 2a 70 31 2c | 20 2a 70 32 3b 0a 58 09 |har *p1,| *p2;.X.|
|00000a90| 72 65 67 69 73 74 65 72 | 20 69 6e 74 20 6c 31 2c |register| int l1,|
|00000aa0| 20 6c 32 3b 0a 58 09 6c | 6f 6e 67 20 72 65 74 3b | l2;.X.l|ong ret;|
|00000ab0| 0a 58 0a 58 0a 58 09 67 | 65 74 5f 74 77 6f 28 74 |.X.X.X.g|et_two(t|
|00000ac0| 72 65 65 2c 20 26 73 31 | 2c 20 26 73 32 29 3b 0a |ree, &s1|, &s2);.|
|00000ad0| 58 09 66 6f 72 63 65 5f | 73 74 72 69 6e 67 28 73 |X.force_|string(s|
|00000ae0| 31 29 3b 0a 58 09 66 6f | 72 63 65 5f 73 74 72 69 |1);.X.fo|rce_stri|
|00000af0| 6e 67 28 73 32 29 3b 0a | 58 09 70 31 20 3d 20 73 |ng(s2);.|X.p1 = s|
|00000b00| 31 2d 3e 73 74 70 74 72 | 3b 0a 58 09 70 32 20 3d |1->stptr|;.X.p2 =|
|00000b10| 20 73 32 2d 3e 73 74 70 | 74 72 3b 0a 58 09 6c 31 | s2->stp|tr;.X.l1|
|00000b20| 20 3d 20 73 31 2d 3e 73 | 74 6c 65 6e 3b 0a 58 09 | = s1->s|tlen;.X.|
|00000b30| 6c 32 20 3d 20 73 32 2d | 3e 73 74 6c 65 6e 3b 0a |l2 = s2-|>stlen;.|
|00000b40| 58 09 72 65 74 20 3d 20 | 30 3b 0a 58 09 69 66 20 |X.ret = |0;.X.if |
|00000b50| 28 21 20 73 74 72 69 63 | 74 20 26 26 20 49 47 4e |(! stric|t && IGN|
|00000b60| 4f 52 45 43 41 53 45 5f | 6e 6f 64 65 2d 3e 76 61 |ORECASE_|node->va|
|00000b70| 72 5f 76 61 6c 75 65 2d | 3e 6e 75 6d 62 72 20 21 |r_value-|>numbr !|
|00000b80| 3d 20 30 2e 30 29 20 7b | 0a 58 09 09 77 68 69 6c |= 0.0) {|.X..whil|
|00000b90| 65 20 28 6c 31 29 20 7b | 0a 58 09 09 09 69 66 20 |e (l1) {|.X...if |
|00000ba0| 28 63 61 73 65 74 61 62 | 6c 65 5b 2a 70 31 5d 20 |(casetab|le[*p1] |
|00000bb0| 3d 3d 20 63 61 73 65 74 | 61 62 6c 65 5b 2a 70 32 |== caset|able[*p2|
|00000bc0| 5d 0a 58 09 09 09 20 20 | 20 20 26 26 20 73 74 72 |].X... | && str|
|00000bd0| 6e 63 61 73 65 63 6d 70 | 28 70 31 2c 20 70 32 2c |ncasecmp|(p1, p2,|
|00000be0| 20 6c 32 29 20 3d 3d 20 | 30 29 20 7b 0a 58 09 09 | l2) == |0) {.X..|
|00000bf0| 09 09 72 65 74 20 3d 20 | 31 20 2b 20 73 31 2d 3e |..ret = |1 + s1->|
|00000c00| 73 74 6c 65 6e 20 2d 20 | 6c 31 3b 0a 58 09 09 09 |stlen - |l1;.X...|
|00000c10| 09 62 72 65 61 6b 3b 0a | 58 09 09 09 7d 0a 58 09 |.break;.|X...}.X.|
|00000c20| 09 09 6c 31 2d 2d 3b 0a | 58 09 09 09 70 31 2b 2b |..l1--;.|X...p1++|
|00000c30| 3b 0a 58 09 09 7d 0a 58 | 09 7d 20 65 6c 73 65 20 |;.X..}.X|.} else |
|00000c40| 7b 0a 58 09 09 77 68 69 | 6c 65 20 28 6c 31 29 20 |{.X..whi|le (l1) |
|00000c50| 7b 0a 58 09 09 09 69 66 | 20 28 53 54 52 45 51 4e |{.X...if| (STREQN|
|00000c60| 28 70 31 2c 20 70 32 2c | 20 6c 32 29 29 20 7b 0a |(p1, p2,| l2)) {.|
|00000c70| 58 09 09 09 09 72 65 74 | 20 3d 20 31 20 2b 20 73 |X....ret| = 1 + s|
|00000c80| 31 2d 3e 73 74 6c 65 6e | 20 2d 20 6c 31 3b 0a 58 |1->stlen| - l1;.X|
|00000c90| 09 09 09 09 62 72 65 61 | 6b 3b 0a 58 09 09 09 7d |....brea|k;.X...}|
|00000ca0| 0a 58 09 09 09 6c 31 2d | 2d 3b 0a 58 09 09 09 70 |.X...l1-|-;.X...p|
|00000cb0| 31 2b 2b 3b 0a 58 09 09 | 7d 0a 58 09 7d 0a 58 09 |1++;.X..|}.X.}.X.|
|00000cc0| 66 72 65 65 5f 74 65 6d | 70 28 73 31 29 3b 0a 58 |free_tem|p(s1);.X|
|00000cd0| 09 66 72 65 65 5f 74 65 | 6d 70 28 73 32 29 3b 0a |.free_te|mp(s2);.|
|00000ce0| 58 09 72 65 74 75 72 6e | 20 74 6d 70 5f 6e 75 6d |X.return| tmp_num|
|00000cf0| 62 65 72 28 28 41 57 4b | 4e 55 4d 29 20 72 65 74 |ber((AWK|NUM) ret|
|00000d00| 29 3b 0a 58 7d 0a 58 0a | 58 4e 4f 44 45 20 2a 0a |);.X}.X.|XNODE *.|
|00000d10| 58 64 6f 5f 69 6e 74 28 | 74 72 65 65 29 0a 58 4e |Xdo_int(|tree).XN|
|00000d20| 4f 44 45 20 2a 74 72 65 | 65 3b 0a 58 7b 0a 58 09 |ODE *tre|e;.X{.X.|
|00000d30| 4e 4f 44 45 20 2a 74 6d | 70 3b 0a 58 09 64 6f 75 |NODE *tm|p;.X.dou|
|00000d40| 62 6c 65 20 66 6c 6f 6f | 72 28 29 3b 0a 58 09 64 |ble floo|r();.X.d|
|00000d50| 6f 75 62 6c 65 20 64 3b | 0a 58 0a 58 09 67 65 74 |ouble d;|.X.X.get|
|00000d60| 5f 6f 6e 65 28 74 72 65 | 65 2c 20 26 74 6d 70 29 |_one(tre|e, &tmp)|
|00000d70| 3b 0a 58 09 64 20 3d 20 | 66 6c 6f 6f 72 28 28 64 |;.X.d = |floor((d|
|00000d80| 6f 75 62 6c 65 29 66 6f | 72 63 65 5f 6e 75 6d 62 |ouble)fo|rce_numb|
|00000d90| 65 72 28 74 6d 70 29 29 | 3b 0a 58 09 66 72 65 65 |er(tmp))|;.X.free|
|00000da0| 5f 74 65 6d 70 28 74 6d | 70 29 3b 0a 58 09 72 65 |_temp(tm|p);.X.re|
|00000db0| 74 75 72 6e 20 74 6d 70 | 5f 6e 75 6d 62 65 72 28 |turn tmp|_number(|
|00000dc0| 28 41 57 4b 4e 55 4d 29 | 20 64 29 3b 0a 58 7d 0a |(AWKNUM)| d);.X}.|
|00000dd0| 58 0a 58 4e 4f 44 45 20 | 2a 0a 58 64 6f 5f 6c 65 |X.XNODE |*.Xdo_le|
|00000de0| 6e 67 74 68 28 74 72 65 | 65 29 0a 58 4e 4f 44 45 |ngth(tre|e).XNODE|
|00000df0| 20 2a 74 72 65 65 3b 0a | 58 7b 0a 58 09 4e 4f 44 | *tree;.|X{.X.NOD|
|00000e00| 45 20 2a 74 6d 70 3b 0a | 58 09 69 6e 74 20 6c 65 |E *tmp;.|X.int le|
|00000e10| 6e 3b 0a 58 0a 58 09 67 | 65 74 5f 6f 6e 65 28 74 |n;.X.X.g|et_one(t|
|00000e20| 72 65 65 2c 20 26 74 6d | 70 29 3b 0a 58 09 6c 65 |ree, &tm|p);.X.le|
|00000e30| 6e 20 3d 20 66 6f 72 63 | 65 5f 73 74 72 69 6e 67 |n = forc|e_string|
|00000e40| 28 74 6d 70 29 2d 3e 73 | 74 6c 65 6e 3b 0a 58 09 |(tmp)->s|tlen;.X.|
|00000e50| 66 72 65 65 5f 74 65 6d | 70 28 74 6d 70 29 3b 0a |free_tem|p(tmp);.|
|00000e60| 58 09 72 65 74 75 72 6e | 20 74 6d 70 5f 6e 75 6d |X.return| tmp_num|
|00000e70| 62 65 72 28 28 41 57 4b | 4e 55 4d 29 20 6c 65 6e |ber((AWK|NUM) len|
|00000e80| 29 3b 0a 58 7d 0a 58 0a | 58 4e 4f 44 45 20 2a 0a |);.X}.X.|XNODE *.|
|00000e90| 58 64 6f 5f 6c 6f 67 28 | 74 72 65 65 29 0a 58 4e |Xdo_log(|tree).XN|
|00000ea0| 4f 44 45 20 2a 74 72 65 | 65 3b 0a 58 7b 0a 58 09 |ODE *tre|e;.X{.X.|
|00000eb0| 4e 4f 44 45 20 2a 74 6d | 70 3b 0a 58 09 64 6f 75 |NODE *tm|p;.X.dou|
|00000ec0| 62 6c 65 20 6c 6f 67 28 | 29 3b 0a 58 09 64 6f 75 |ble log(|);.X.dou|
|00000ed0| 62 6c 65 20 64 2c 20 61 | 72 67 3b 0a 58 0a 58 09 |ble d, a|rg;.X.X.|
|00000ee0| 67 65 74 5f 6f 6e 65 28 | 74 72 65 65 2c 20 26 74 |get_one(|tree, &t|
|00000ef0| 6d 70 29 3b 0a 58 09 61 | 72 67 20 3d 20 28 64 6f |mp);.X.a|rg = (do|
|00000f00| 75 62 6c 65 29 20 66 6f | 72 63 65 5f 6e 75 6d 62 |uble) fo|rce_numb|
|00000f10| 65 72 28 74 6d 70 29 3b | 0a 58 09 69 66 20 28 61 |er(tmp);|.X.if (a|
|00000f20| 72 67 20 3c 20 30 2e 30 | 29 0a 58 09 09 77 61 72 |rg < 0.0|).X..war|
|00000f30| 6e 69 6e 67 28 22 6c 6f | 67 20 63 61 6c 6c 65 64 |ning("lo|g called|
|00000f40| 20 77 69 74 68 20 6e 65 | 67 61 74 69 76 65 20 61 | with ne|gative a|
|00000f50| 72 67 75 6d 65 6e 74 20 | 25 67 22 2c 20 61 72 67 |rgument |%g", arg|
|00000f60| 29 3b 0a 58 09 64 20 3d | 20 6c 6f 67 28 61 72 67 |);.X.d =| log(arg|
|00000f70| 29 3b 0a 58 09 66 72 65 | 65 5f 74 65 6d 70 28 74 |);.X.fre|e_temp(t|
|00000f80| 6d 70 29 3b 0a 58 09 72 | 65 74 75 72 6e 20 74 6d |mp);.X.r|eturn tm|
|00000f90| 70 5f 6e 75 6d 62 65 72 | 28 28 41 57 4b 4e 55 4d |p_number|((AWKNUM|
|00000fa0| 29 20 64 29 3b 0a 58 7d | 0a 58 0a 58 2f 2a 0a 58 |) d);.X}|.X.X/*.X|
|00000fb0| 20 2a 20 4e 6f 74 65 20 | 74 68 61 74 20 74 68 65 | * Note |that the|
|00000fc0| 20 6f 75 74 70 75 74 20 | 62 75 66 66 65 72 20 63 | output |buffer c|
|00000fd0| 61 6e 6e 6f 74 20 62 65 | 20 73 74 61 74 69 63 20 |annot be| static |
|00000fe0| 62 65 63 61 75 73 65 20 | 73 70 72 69 6e 74 66 20 |because |sprintf |
|00000ff0| 6d 61 79 20 67 65 74 0a | 58 20 2a 20 63 61 6c 6c |may get.|X * call|
|00001000| 65 64 20 72 65 63 75 72 | 73 69 76 65 6c 79 20 62 |ed recur|sively b|
|00001010| 79 20 66 6f 72 63 65 5f | 73 74 72 69 6e 67 2e 20 |y force_|string. |
|00001020| 20 48 65 6e 63 65 20 74 | 68 65 20 77 61 73 74 65 | Hence t|he waste|
|00001030| 66 75 6c 20 61 6c 6c 6f | 63 61 20 63 61 6c 6c 73 |ful allo|ca calls|
|00001040| 20 0a 58 20 2a 2f 0a 58 | 0a 58 2f 2a 20 25 65 20 | .X */.X|.X/* %e |
|00001050| 61 6e 64 20 25 66 20 66 | 6f 72 6d 61 74 73 20 61 |and %f f|ormats a|
|00001060| 72 65 20 6e 6f 74 20 70 | 72 6f 70 65 72 6c 79 20 |re not p|roperly |
|00001070| 69 6d 70 6c 65 6d 65 6e | 74 65 64 2e 20 20 53 6f |implemen|ted. So|
|00001080| 6d 65 6f 6e 65 20 73 68 | 6f 75 6c 64 20 66 69 78 |meone sh|ould fix|
|00001090| 20 74 68 65 6d 20 2a 2f | 0a 58 4e 4f 44 45 20 2a | them */|.XNODE *|
|000010a0| 0a 58 64 6f 5f 73 70 72 | 69 6e 74 66 28 74 72 65 |.Xdo_spr|intf(tre|
|000010b0| 65 29 0a 58 4e 4f 44 45 | 20 2a 74 72 65 65 3b 0a |e).XNODE| *tree;.|
|000010c0| 58 7b 0a 58 23 64 65 66 | 69 6e 65 20 62 63 68 75 |X{.X#def|ine bchu|
|000010d0| 6e 6b 28 73 2c 6c 29 20 | 69 66 28 6c 29 20 7b 5c |nk(s,l) |if(l) {\|
|000010e0| 0a 58 20 20 20 20 77 68 | 69 6c 65 28 28 6c 29 3e |.X wh|ile((l)>|
|000010f0| 6f 66 72 65 29 20 7b 5c | 0a 58 20 20 20 20 20 20 |ofre) {\|.X |
|00001100| 63 68 61 72 20 2a 74 6d | 70 3b 5c 0a 58 20 20 20 |char *tm|p;\.X |
|00001110| 20 20 20 74 6d 70 3d 28 | 63 68 61 72 20 2a 29 61 | tmp=(|char *)a|
|00001120| 6c 6c 6f 63 61 28 6f 73 | 69 7a 2a 32 29 3b 5c 0a |lloca(os|iz*2);\.|
|00001130| 58 20 20 20 20 20 20 6d | 65 6d 63 70 79 28 74 6d |X m|emcpy(tm|
|00001140| 70 2c 6f 62 75 66 2c 6f | 6c 65 6e 29 3b 5c 0a 58 |p,obuf,o|len);\.X|
|00001150| 20 20 20 20 20 20 6f 62 | 75 66 3d 74 6d 70 3b 5c | ob|uf=tmp;\|
|00001160| 0a 58 20 20 20 20 20 20 | 6f 66 72 65 2b 3d 6f 73 |.X |ofre+=os|
|00001170| 69 7a 3b 5c 0a 58 20 20 | 20 20 20 20 6f 73 69 7a |iz;\.X | osiz|
|00001180| 2a 3d 32 3b 5c 0a 58 20 | 20 20 20 7d 5c 0a 58 20 |*=2;\.X | }\.X |
|00001190| 20 20 20 6d 65 6d 63 70 | 79 28 6f 62 75 66 2b 6f | memcp|y(obuf+o|
|000011a0| 6c 65 6e 2c 73 2c 28 6c | 29 29 3b 5c 0a 58 20 20 |len,s,(l|));\.X |
|000011b0| 20 20 6f 6c 65 6e 2b 3d | 28 6c 29 3b 5c 0a 58 20 | olen+=|(l);\.X |
|000011c0| 20 20 20 6f 66 72 65 2d | 3d 28 6c 29 3b 5c 0a 58 | ofre-|=(l);\.X|
|000011d0| 20 20 7d 0a 58 0a 58 09 | 2f 2a 20 49 73 20 74 68 | }.X.X.|/* Is th|
|000011e0| 65 72 65 20 73 70 61 63 | 65 20 66 6f 72 20 73 6f |ere spac|e for so|
|000011f0| 6d 65 74 68 69 6e 67 20 | 4c 20 62 69 67 20 69 6e |mething |L big in|
|00001200| 20 74 68 65 20 62 75 66 | 66 65 72 3f 20 2a 2f 0a | the buf|fer? */.|
|00001210| 58 23 64 65 66 69 6e 65 | 20 63 68 6b 73 69 7a 65 |X#define| chksize|
|00001220| 28 6c 29 20 20 69 66 28 | 28 6c 29 3e 6f 66 72 65 |(l) if(|(l)>ofre|
|00001230| 29 20 7b 5c 0a 58 20 20 | 20 20 63 68 61 72 20 2a |) {\.X | char *|
|00001240| 74 6d 70 3b 5c 0a 58 20 | 20 20 20 74 6d 70 3d 28 |tmp;\.X | tmp=(|
|00001250| 63 68 61 72 20 2a 29 61 | 6c 6c 6f 63 61 28 6f 73 |char *)a|lloca(os|
|00001260| 69 7a 2a 32 29 3b 5c 0a | 58 20 20 20 20 6d 65 6d |iz*2);\.|X mem|
|00001270| 63 70 79 28 74 6d 70 2c | 6f 62 75 66 2c 6f 6c 65 |cpy(tmp,|obuf,ole|
|00001280| 6e 29 3b 5c 0a 58 20 20 | 20 20 6f 62 75 66 3d 74 |n);\.X | obuf=t|
|00001290| 6d 70 3b 5c 0a 58 20 20 | 20 20 6f 66 72 65 2b 3d |mp;\.X | ofre+=|
|000012a0| 6f 73 69 7a 3b 5c 0a 58 | 20 20 20 20 6f 73 69 7a |osiz;\.X| osiz|
|000012b0| 2a 3d 32 3b 5c 0a 58 20 | 20 7d 0a 58 0a 58 09 2f |*=2;\.X | }.X.X./|
|000012c0| 2a 0a 58 09 20 2a 20 47 | 65 74 20 74 68 65 20 6e |*.X. * G|et the n|
|000012d0| 65 78 74 20 61 72 67 20 | 74 6f 20 62 65 20 66 6f |ext arg |to be fo|
|000012e0| 72 6d 61 74 74 65 64 2e | 20 20 49 66 20 77 65 27 |rmatted.| If we'|
|000012f0| 76 65 20 72 75 6e 20 6f | 75 74 20 6f 66 20 61 72 |ve run o|ut of ar|
|00001300| 67 73 2c 0a 58 09 20 2a | 20 72 65 74 75 72 6e 20 |gs,.X. *| return |
|00001310| 22 22 20 28 4e 75 6c 6c | 20 73 74 72 69 6e 67 29 |"" (Null| string)|
|00001320| 20 0a 58 09 20 2a 2f 0a | 58 23 64 65 66 69 6e 65 | .X. */.|X#define|
|00001330| 20 70 61 72 73 65 5f 6e | 65 78 74 5f 61 72 67 28 | parse_n|ext_arg(|
|00001340| 29 20 7b 5c 0a 58 20 20 | 69 66 28 21 63 61 72 67 |) {\.X |if(!carg|
|00001350| 29 20 61 72 67 3d 20 4e | 6e 75 6c 6c 5f 73 74 72 |) arg= N|null_str|
|00001360| 69 6e 67 3b 5c 0a 58 20 | 20 65 6c 73 65 20 7b 5c |ing;\.X | else {\|
|00001370| 0a 58 20 20 09 67 65 74 | 5f 6f 6e 65 28 63 61 72 |.X .get|_one(car|
|00001380| 67 2c 26 61 72 67 29 3b | 5c 0a 58 09 63 61 72 67 |g,&arg);|\.X.carg|
|00001390| 3d 63 61 72 67 2d 3e 72 | 6e 6f 64 65 3b 5c 0a 58 |=carg->r|node;\.X|
|000013a0| 20 20 7d 5c 0a 58 20 7d | 0a 58 0a 58 09 63 68 61 | }\.X }|.X.X.cha|
|000013b0| 72 20 2a 6f 62 75 66 3b | 0a 58 09 69 6e 74 20 6f |r *obuf;|.X.int o|
|000013c0| 73 69 7a 2c 20 6f 66 72 | 65 2c 20 6f 6c 65 6e 3b |siz, ofr|e, olen;|
|000013d0| 0a 58 09 73 74 61 74 69 | 63 20 63 68 61 72 20 63 |.X.stati|c char c|
|000013e0| 68 62 75 66 5b 5d 20 3d | 20 22 30 31 32 33 34 35 |hbuf[] =| "012345|
|000013f0| 36 37 38 39 61 62 63 64 | 65 66 22 3b 0a 58 09 73 |6789abcd|ef";.X.s|
|00001400| 74 61 74 69 63 20 63 68 | 61 72 20 73 70 5b 5d 20 |tatic ch|ar sp[] |
|00001410| 3d 20 22 20 22 3b 0a 58 | 09 63 68 61 72 20 2a 73 |= " ";.X|.char *s|
|00001420| 30 2c 20 2a 73 31 3b 0a | 58 09 69 6e 74 20 6e 30 |0, *s1;.|X.int n0|
|00001430| 3b 0a 58 09 4e 4f 44 45 | 20 2a 73 66 6d 74 2c 20 |;.X.NODE| *sfmt, |
|00001440| 2a 61 72 67 3b 0a 58 09 | 72 65 67 69 73 74 65 72 |*arg;.X.|register|
|00001450| 20 4e 4f 44 45 20 2a 63 | 61 72 67 3b 0a 58 09 6c | NODE *c|arg;.X.l|
|00001460| 6f 6e 67 20 66 77 2c 20 | 70 72 65 63 2c 20 6c 6a |ong fw, |prec, lj|
|00001470| 2c 20 61 6c 74 2c 20 62 | 69 67 3b 0a 58 09 6c 6f |, alt, b|ig;.X.lo|
|00001480| 6e 67 20 2a 63 75 72 3b | 0a 58 09 6c 6f 6e 67 20 |ng *cur;|.X.long |
|00001490| 76 61 6c 3b 0a 58 23 69 | 66 64 65 66 20 73 75 6e |val;.X#i|fdef sun|
|000014a0| 33 38 36 09 09 09 2f 2a | 20 43 61 6e 27 74 20 63 |386.../*| Can't c|
|000014b0| 61 73 74 20 75 6e 73 69 | 67 6e 65 64 20 28 69 6e |ast unsi|gned (in|
|000014c0| 74 2f 6c 6f 6e 67 29 20 | 66 72 6f 6d 20 70 74 72 |t/long) |from ptr|
|000014d0| 2d 3e 76 61 6c 75 65 20 | 2a 2f 0a 58 09 6c 6f 6e |->value |*/.X.lon|
|000014e0| 67 20 74 6d 70 5f 75 76 | 61 6c 3b 09 09 2f 2a 20 |g tmp_uv|al;../* |
|000014f0| 6f 6e 20 33 38 36 69 20 | 34 2e 30 2e 31 20 43 20 |on 386i |4.0.1 C |
|00001500| 63 6f 6d 70 69 6c 65 72 | 20 2d 2d 20 69 74 20 6a |compiler| -- it j|
|00001510| 75 73 74 20 68 61 6e 67 | 73 20 2a 2f 0a 58 23 65 |ust hang|s */.X#e|
|00001520| 6e 64 69 66 0a 58 09 75 | 6e 73 69 67 6e 65 64 20 |ndif.X.u|nsigned |
|00001530| 6c 6f 6e 67 20 75 76 61 | 6c 3b 0a 58 09 69 6e 74 |long uva|l;.X.int|
|00001540| 20 73 67 6e 3b 0a 58 09 | 69 6e 74 20 62 61 73 65 | sgn;.X.|int base|
|00001550| 3b 0a 58 09 63 68 61 72 | 20 63 70 62 75 66 5b 33 |;.X.char| cpbuf[3|
|00001560| 30 5d 3b 09 09 2f 2a 20 | 69 66 20 77 65 20 68 61 |0];../* |if we ha|
|00001570| 76 65 20 6e 75 6d 62 65 | 72 73 20 62 69 67 67 65 |ve numbe|rs bigge|
|00001580| 72 20 74 68 61 6e 20 33 | 30 20 2a 2f 0a 58 09 63 |r than 3|0 */.X.c|
|00001590| 68 61 72 20 2a 63 65 6e | 64 20 3d 20 26 63 70 62 |har *cen|d = &cpb|
|000015a0| 75 66 5b 33 30 5d 3b 2f | 2a 20 63 68 61 72 73 2c |uf[30];/|* chars,|
|000015b0| 20 77 65 20 6c 6f 73 65 | 2c 20 62 75 74 20 73 65 | we lose|, but se|
|000015c0| 65 6d 73 20 75 6e 6c 69 | 6b 65 6c 79 20 2a 2f 0a |ems unli|kely */.|
|000015d0| 58 09 63 68 61 72 20 2a | 63 70 3b 0a 58 09 63 68 |X.char *|cp;.X.ch|
|000015e0| 61 72 20 2a 66 69 6c 6c | 3b 0a 58 09 64 6f 75 62 |ar *fill|;.X.doub|
|000015f0| 6c 65 20 74 6d 70 76 61 | 6c 3b 0a 58 09 63 68 61 |le tmpva|l;.X.cha|
|00001600| 72 20 2a 70 72 5f 73 74 | 72 3b 0a 58 09 69 6e 74 |r *pr_st|r;.X.int|
|00001610| 20 75 63 61 73 65 68 65 | 78 20 3d 20 30 3b 0a 58 | ucasehe|x = 0;.X|
|00001620| 09 65 78 74 65 72 6e 20 | 63 68 61 72 20 2a 67 63 |.extern |char *gc|
|00001630| 76 74 28 29 3b 0a 58 0a | 58 0a 58 09 6f 62 75 66 |vt();.X.|X.X.obuf|
|00001640| 20 3d 20 28 63 68 61 72 | 20 2a 29 20 61 6c 6c 6f | = (char| *) allo|
|00001650| 63 61 28 31 32 30 29 3b | 0a 58 09 6f 73 69 7a 20 |ca(120);|.X.osiz |
|00001660| 3d 20 31 32 30 3b 0a 58 | 09 6f 66 72 65 20 3d 20 |= 120;.X|.ofre = |
|00001670| 6f 73 69 7a 3b 0a 58 09 | 6f 6c 65 6e 20 3d 20 30 |osiz;.X.|olen = 0|
|00001680| 3b 0a 58 09 67 65 74 5f | 6f 6e 65 28 74 72 65 65 |;.X.get_|one(tree|
|00001690| 2c 20 26 73 66 6d 74 29 | 3b 0a 58 09 73 66 6d 74 |, &sfmt)|;.X.sfmt|
|000016a0| 20 3d 20 66 6f 72 63 65 | 5f 73 74 72 69 6e 67 28 | = force|_string(|
|000016b0| 73 66 6d 74 29 3b 0a 58 | 09 63 61 72 67 20 3d 20 |sfmt);.X|.carg = |
|000016c0| 74 72 65 65 2d 3e 72 6e | 6f 64 65 3b 0a 58 09 66 |tree->rn|ode;.X.f|
|000016d0| 6f 72 20 28 73 30 20 3d | 20 73 31 20 3d 20 73 66 |or (s0 =| s1 = sf|
|000016e0| 6d 74 2d 3e 73 74 70 74 | 72 2c 20 6e 30 20 3d 20 |mt->stpt|r, n0 = |
|000016f0| 73 66 6d 74 2d 3e 73 74 | 6c 65 6e 3b 20 6e 30 2d |sfmt->st|len; n0-|
|00001700| 2d 20 3e 20 30 3b 29 20 | 7b 0a 58 09 09 69 66 20 |- > 0;) |{.X..if |
|00001710| 28 2a 73 31 20 21 3d 20 | 27 25 27 29 20 7b 0a 58 |(*s1 != |'%') {.X|
|00001720| 09 09 09 73 31 2b 2b 3b | 0a 58 09 09 09 63 6f 6e |...s1++;|.X...con|
|00001730| 74 69 6e 75 65 3b 0a 58 | 09 09 7d 0a 58 09 09 62 |tinue;.X|..}.X..b|
|00001740| 63 68 75 6e 6b 28 73 30 | 2c 20 73 31 20 2d 20 73 |chunk(s0|, s1 - s|
|00001750| 30 29 3b 0a 58 09 09 73 | 30 20 3d 20 73 31 3b 0a |0);.X..s|0 = s1;.|
|00001760| 58 09 09 63 75 72 20 3d | 20 26 66 77 3b 0a 58 09 |X..cur =| &fw;.X.|
|00001770| 09 66 77 20 3d 20 30 3b | 0a 58 09 09 70 72 65 63 |.fw = 0;|.X..prec|
|00001780| 20 3d 20 30 3b 0a 58 09 | 09 6c 6a 20 3d 20 61 6c | = 0;.X.|.lj = al|
|00001790| 74 20 3d 20 62 69 67 20 | 3d 20 30 3b 0a 58 09 09 |t = big |= 0;.X..|
|000017a0| 66 69 6c 6c 20 3d 20 73 | 70 3b 0a 58 09 09 63 70 |fill = s|p;.X..cp|
|000017b0| 20 3d 20 63 65 6e 64 3b | 0a 58 09 09 73 31 2b 2b | = cend;|.X..s1++|
|000017c0| 3b 0a 58 0a 58 72 65 74 | 72 79 3a 0a 58 09 09 2d |;.X.Xret|ry:.X..-|
|000017d0| 2d 6e 30 3b 0a 58 09 09 | 73 77 69 74 63 68 20 28 |-n0;.X..|switch (|
|000017e0| 2a 73 31 2b 2b 29 20 7b | 0a 58 09 09 63 61 73 65 |*s1++) {|.X..case|
|000017f0| 20 27 25 27 3a 0a 58 09 | 09 09 62 63 68 75 6e 6b | '%':.X.|..bchunk|
|00001800| 28 22 25 22 2c 20 31 29 | 3b 0a 58 09 09 09 73 30 |("%", 1)|;.X...s0|
|00001810| 20 3d 20 73 31 3b 0a 58 | 09 09 09 62 72 65 61 6b | = s1;.X|...break|
|00001820| 3b 0a 58 0a 58 09 09 63 | 61 73 65 20 27 30 27 3a |;.X.X..c|ase '0':|
|00001830| 0a 58 09 09 09 69 66 20 | 28 66 69 6c 6c 20 21 3d |.X...if |(fill !=|
|00001840| 20 73 70 20 7c 7c 20 6c | 6a 29 0a 58 09 09 09 09 | sp || l|j).X....|
|00001850| 67 6f 74 6f 20 6c 6f 73 | 65 3b 0a 58 09 09 09 69 |goto los|e;.X...i|
|00001860| 66 20 28 63 75 72 20 3d | 3d 20 26 66 77 29 0a 58 |f (cur =|= &fw).X|
|00001870| 09 09 09 09 66 69 6c 6c | 20 3d 20 22 30 22 3b 09 |....fill| = "0";.|
|00001880| 2f 2a 20 46 41 4c 4c 20 | 74 68 72 6f 75 67 68 20 |/* FALL |through |
|00001890| 2a 2f 0a 58 09 09 63 61 | 73 65 20 27 31 27 3a 0a |*/.X..ca|se '1':.|
|000018a0| 58 09 09 63 61 73 65 20 | 27 32 27 3a 0a 58 09 09 |X..case |'2':.X..|
|000018b0| 63 61 73 65 20 27 33 27 | 3a 0a 58 09 09 63 61 73 |case '3'|:.X..cas|
|000018c0| 65 20 27 34 27 3a 0a 58 | 09 09 63 61 73 65 20 27 |e '4':.X|..case '|
|000018d0| 35 27 3a 0a 58 09 09 63 | 61 73 65 20 27 36 27 3a |5':.X..c|ase '6':|
|000018e0| 0a 58 09 09 63 61 73 65 | 20 27 37 27 3a 0a 58 09 |.X..case| '7':.X.|
|000018f0| 09 63 61 73 65 20 27 38 | 27 3a 0a 58 09 09 63 61 |.case '8|':.X..ca|
|00001900| 73 65 20 27 39 27 3a 0a | 58 09 09 09 69 66 20 28 |se '9':.|X...if (|
|00001910| 63 75 72 20 3d 3d 20 30 | 29 0a 58 09 09 09 09 67 |cur == 0|).X....g|
|00001920| 6f 74 6f 20 6c 6f 73 65 | 3b 0a 58 09 09 09 2a 63 |oto lose|;.X...*c|
|00001930| 75 72 20 3d 20 73 31 5b | 2d 31 5d 20 2d 20 27 30 |ur = s1[|-1] - '0|
|00001940| 27 3b 0a 58 09 09 09 77 | 68 69 6c 65 20 28 6e 30 |';.X...w|hile (n0|
|00001950| 20 3e 20 30 20 26 26 20 | 2a 73 31 20 3e 3d 20 27 | > 0 && |*s1 >= '|
|00001960| 30 27 20 26 26 20 2a 73 | 31 20 3c 3d 20 27 39 27 |0' && *s|1 <= '9'|
|00001970| 29 20 7b 0a 58 09 09 09 | 09 2d 2d 6e 30 3b 0a 58 |) {.X...|.--n0;.X|
|00001980| 09 09 09 09 2a 63 75 72 | 20 3d 20 2a 63 75 72 20 |....*cur| = *cur |
|00001990| 2a 20 31 30 20 2b 20 2a | 73 31 2b 2b 20 2d 20 27 |* 10 + *|s1++ - '|
|000019a0| 30 27 3b 0a 58 09 09 09 | 7d 0a 58 09 09 09 67 6f |0';.X...|}.X...go|
|000019b0| 74 6f 20 72 65 74 72 79 | 3b 0a 58 23 69 66 64 65 |to retry|;.X#ifde|
|000019c0| 66 20 6e 6f 74 5f 79 65 | 74 0a 58 09 09 63 61 73 |f not_ye|t.X..cas|
|000019d0| 65 20 27 20 27 3a 09 09 | 2f 2a 20 70 72 69 6e 74 |e ' ':..|/* print|
|000019e0| 20 27 20 27 20 6f 72 20 | 27 2d 27 20 2a 2f 0a 58 | ' ' or |'-' */.X|
|000019f0| 09 09 63 61 73 65 20 27 | 2b 27 3a 09 09 2f 2a 20 |..case '|+':../* |
|00001a00| 70 72 69 6e 74 20 27 2b | 27 20 6f 72 20 27 2d 27 |print '+|' or '-'|
|00001a10| 20 2a 2f 0a 58 23 65 6e | 64 69 66 0a 58 09 09 63 | */.X#en|dif.X..c|
|00001a20| 61 73 65 20 27 2d 27 3a | 0a 58 09 09 09 69 66 20 |ase '-':|.X...if |
|00001a30| 28 6c 6a 20 7c 7c 20 66 | 69 6c 6c 20 21 3d 20 73 |(lj || f|ill != s|
|00001a40| 70 29 0a 58 09 09 09 09 | 67 6f 74 6f 20 6c 6f 73 |p).X....|goto los|
|00001a50| 65 3b 0a 58 09 09 09 6c | 6a 2b 2b 3b 0a 58 09 09 |e;.X...l|j++;.X..|
|00001a60| 09 67 6f 74 6f 20 72 65 | 74 72 79 3b 0a 58 09 09 |.goto re|try;.X..|
|00001a70| 63 61 73 65 20 27 2e 27 | 3a 0a 58 09 09 09 69 66 |case '.'|:.X...if|
|00001a80| 20 28 63 75 72 20 21 3d | 20 26 66 77 29 0a 58 09 | (cur !=| &fw).X.|
|00001a90| 09 09 09 67 6f 74 6f 20 | 6c 6f 73 65 3b 0a 58 09 |...goto |lose;.X.|
|00001aa0| 09 09 63 75 72 20 3d 20 | 26 70 72 65 63 3b 0a 58 |..cur = |&prec;.X|
|00001ab0| 09 09 09 67 6f 74 6f 20 | 72 65 74 72 79 3b 0a 58 |...goto |retry;.X|
|00001ac0| 09 09 63 61 73 65 20 27 | 23 27 3a 0a 58 09 09 09 |..case '|#':.X...|
|00001ad0| 69 66 20 28 61 6c 74 29 | 0a 58 09 09 09 09 67 6f |if (alt)|.X....go|
|00001ae0| 74 6f 20 6c 6f 73 65 3b | 0a 58 09 09 09 61 6c 74 |to lose;|.X...alt|
|00001af0| 2b 2b 3b 0a 58 09 09 09 | 67 6f 74 6f 20 72 65 74 |++;.X...|goto ret|
|00001b00| 72 79 3b 0a 58 09 09 63 | 61 73 65 20 27 6c 27 3a |ry;.X..c|ase 'l':|
|00001b10| 0a 58 09 09 09 69 66 20 | 28 62 69 67 29 0a 58 09 |.X...if |(big).X.|
|00001b20| 09 09 09 67 6f 74 6f 20 | 6c 6f 73 65 3b 0a 58 09 |...goto |lose;.X.|
|00001b30| 09 09 62 69 67 2b 2b 3b | 0a 58 09 09 09 67 6f 74 |..big++;|.X...got|
|00001b40| 6f 20 72 65 74 72 79 3b | 0a 58 09 09 63 61 73 65 |o retry;|.X..case|
|00001b50| 20 27 63 27 3a 0a 58 09 | 09 09 70 61 72 73 65 5f | 'c':.X.|..parse_|
|00001b60| 6e 65 78 74 5f 61 72 67 | 28 29 3b 0a 58 09 09 09 |next_arg|();.X...|
|00001b70| 69 66 20 28 61 72 67 2d | 3e 66 6c 61 67 73 20 26 |if (arg-|>flags &|
|00001b80| 20 4e 55 4d 45 52 49 43 | 29 20 7b 0a 58 23 69 66 | NUMERIC|) {.X#if|
|00001b90| 64 65 66 20 73 75 6e 33 | 38 36 0a 58 09 09 09 09 |def sun3|86.X....|
|00001ba0| 74 6d 70 5f 75 76 61 6c | 20 3d 20 61 72 67 2d 3e |tmp_uval| = arg->|
|00001bb0| 6e 75 6d 62 72 3b 20 0a | 58 09 09 09 09 75 76 61 |numbr; .|X....uva|
|00001bc0| 6c 3d 20 28 75 6e 73 69 | 67 6e 65 64 20 6c 6f 6e |l= (unsi|gned lon|
|00001bd0| 67 29 20 74 6d 70 5f 75 | 76 61 6c 3b 0a 58 23 65 |g) tmp_u|val;.X#e|
|00001be0| 6c 73 65 0a 58 09 09 09 | 09 75 76 61 6c 20 3d 20 |lse.X...|.uval = |
|00001bf0| 28 75 6e 73 69 67 6e 65 | 64 20 6c 6f 6e 67 29 20 |(unsigne|d long) |
|00001c00| 61 72 67 2d 3e 6e 75 6d | 62 72 3b 0a 58 23 65 6e |arg->num|br;.X#en|
|00001c10| 64 69 66 0a 58 09 09 09 | 09 63 70 62 75 66 5b 30 |dif.X...|.cpbuf[0|
|00001c20| 5d 20 3d 20 75 76 61 6c | 3b 0a 58 09 09 09 09 70 |] = uval|;.X....p|
|00001c30| 72 65 63 20 3d 20 31 3b | 0a 58 09 09 09 09 70 72 |rec = 1;|.X....pr|
|00001c40| 5f 73 74 72 20 3d 20 63 | 70 62 75 66 3b 0a 58 09 |_str = c|pbuf;.X.|
|00001c50| 09 09 09 67 6f 74 6f 20 | 64 6f 70 72 5f 73 74 72 |...goto |dopr_str|
|00001c60| 69 6e 67 3b 0a 58 09 09 | 09 7d 0a 58 09 09 09 69 |ing;.X..|.}.X...i|
|00001c70| 66 20 28 21 20 70 72 65 | 63 29 0a 58 09 09 09 09 |f (! pre|c).X....|
|00001c80| 70 72 65 63 20 3d 20 31 | 3b 0a 58 09 09 09 65 6c |prec = 1|;.X...el|
|00001c90| 73 65 20 69 66 20 28 70 | 72 65 63 20 3e 20 61 72 |se if (p|rec > ar|
|00001ca0| 67 2d 3e 73 74 6c 65 6e | 29 0a 58 09 09 09 09 70 |g->stlen|).X....p|
|00001cb0| 72 65 63 20 3d 20 61 72 | 67 2d 3e 73 74 6c 65 6e |rec = ar|g->stlen|
|00001cc0| 3b 0a 58 09 09 09 70 72 | 5f 73 74 72 20 3d 20 61 |;.X...pr|_str = a|
|00001cd0| 72 67 2d 3e 73 74 70 74 | 72 3b 0a 58 09 09 09 67 |rg->stpt|r;.X...g|
|00001ce0| 6f 74 6f 20 64 6f 70 72 | 5f 73 74 72 69 6e 67 3b |oto dopr|_string;|
|00001cf0| 0a 58 09 09 63 61 73 65 | 20 27 73 27 3a 0a 58 09 |.X..case| 's':.X.|
|00001d00| 09 09 70 61 72 73 65 5f | 6e 65 78 74 5f 61 72 67 |..parse_|next_arg|
|00001d10| 28 29 3b 0a 58 09 09 09 | 61 72 67 20 3d 20 66 6f |();.X...|arg = fo|
|00001d20| 72 63 65 5f 73 74 72 69 | 6e 67 28 61 72 67 29 3b |rce_stri|ng(arg);|
|00001d30| 0a 58 09 09 09 69 66 20 | 28 21 70 72 65 63 20 7c |.X...if |(!prec ||
|00001d40| 7c 20 70 72 65 63 20 3e | 20 61 72 67 2d 3e 73 74 || prec >| arg->st|
|00001d50| 6c 65 6e 29 0a 58 09 09 | 09 09 70 72 65 63 20 3d |len).X..|..prec =|
|00001d60| 20 61 72 67 2d 3e 73 74 | 6c 65 6e 3b 0a 58 09 09 | arg->st|len;.X..|
|00001d70| 09 70 72 5f 73 74 72 20 | 3d 20 61 72 67 2d 3e 73 |.pr_str |= arg->s|
|00001d80| 74 70 74 72 3b 0a 58 0a | 58 09 64 6f 70 72 5f 73 |tptr;.X.|X.dopr_s|
|00001d90| 74 72 69 6e 67 3a 0a 58 | 09 09 09 69 66 20 28 66 |tring:.X|...if (f|
|00001da0| 77 20 3e 20 70 72 65 63 | 20 26 26 20 21 6c 6a 29 |w > prec| && !lj)|
|00001db0| 20 7b 0a 58 09 09 09 09 | 77 68 69 6c 65 20 28 66 | {.X....|while (f|
|00001dc0| 77 20 3e 20 70 72 65 63 | 29 20 7b 0a 58 09 09 09 |w > prec|) {.X...|
|00001dd0| 09 09 62 63 68 75 6e 6b | 28 73 70 2c 20 31 29 3b |..bchunk|(sp, 1);|
|00001de0| 0a 58 09 09 09 09 09 66 | 77 2d 2d 3b 0a 58 09 09 |.X.....f|w--;.X..|
|00001df0| 09 09 7d 0a 58 09 09 09 | 7d 0a 58 09 09 09 62 63 |..}.X...|}.X...bc|
|00001e00| 68 75 6e 6b 28 70 72 5f | 73 74 72 2c 20 28 69 6e |hunk(pr_|str, (in|
|00001e10| 74 29 20 70 72 65 63 29 | 3b 0a 58 09 09 09 69 66 |t) prec)|;.X...if|
|00001e20| 20 28 66 77 20 3e 20 70 | 72 65 63 29 20 7b 0a 58 | (fw > p|rec) {.X|
|00001e30| 09 09 09 09 77 68 69 6c | 65 20 28 66 77 20 3e 20 |....whil|e (fw > |
|00001e40| 70 72 65 63 29 20 7b 0a | 58 09 09 09 09 09 62 63 |prec) {.|X.....bc|
|00001e50| 68 75 6e 6b 28 73 70 2c | 20 31 29 3b 0a 58 09 09 |hunk(sp,| 1);.X..|
|00001e60| 09 09 09 66 77 2d 2d 3b | 0a 58 09 09 09 09 7d 0a |...fw--;|.X....}.|
|00001e70| 58 09 09 09 7d 0a 58 09 | 09 09 73 30 20 3d 20 73 |X...}.X.|..s0 = s|
|00001e80| 31 3b 0a 58 09 09 09 66 | 72 65 65 5f 74 65 6d 70 |1;.X...f|ree_temp|
|00001e90| 28 61 72 67 29 3b 0a 58 | 09 09 09 62 72 65 61 6b |(arg);.X|...break|
|00001ea0| 3b 0a 58 09 09 63 61 73 | 65 20 27 64 27 3a 0a 58 |;.X..cas|e 'd':.X|
|00001eb0| 09 09 63 61 73 65 20 27 | 69 27 3a 0a 58 09 09 09 |..case '|i':.X...|
|00001ec0| 70 61 72 73 65 5f 6e 65 | 78 74 5f 61 72 67 28 29 |parse_ne|xt_arg()|
|00001ed0| 3b 0a 58 09 09 09 76 61 | 6c 20 3d 20 28 6c 6f 6e |;.X...va|l = (lon|
|00001ee0| 67 29 20 66 6f 72 63 65 | 5f 6e 75 6d 62 65 72 28 |g) force|_number(|
|00001ef0| 61 72 67 29 3b 0a 58 09 | 09 09 66 72 65 65 5f 74 |arg);.X.|..free_t|
|00001f00| 65 6d 70 28 61 72 67 29 | 3b 0a 58 09 09 09 69 66 |emp(arg)|;.X...if|
|00001f10| 20 28 76 61 6c 20 3c 20 | 30 29 20 7b 0a 58 09 09 | (val < |0) {.X..|
|00001f20| 09 09 73 67 6e 20 3d 20 | 31 3b 0a 58 09 09 09 09 |..sgn = |1;.X....|
|00001f30| 76 61 6c 20 3d 20 2d 76 | 61 6c 3b 0a 58 09 09 09 |val = -v|al;.X...|
|00001f40| 7d 20 65 6c 73 65 0a 58 | 09 09 09 09 73 67 6e 20 |} else.X|....sgn |
|00001f50| 3d 20 30 3b 0a 58 09 09 | 09 64 6f 20 7b 0a 58 09 |= 0;.X..|.do {.X.|
|00001f60| 09 09 09 2a 2d 2d 63 70 | 20 3d 20 27 30 27 20 2b |...*--cp| = '0' +|
|00001f70| 20 76 61 6c 20 25 20 31 | 30 3b 0a 58 09 09 09 09 | val % 1|0;.X....|
|00001f80| 76 61 6c 20 2f 3d 20 31 | 30 3b 0a 58 09 09 09 7d |val /= 1|0;.X...}|
|00001f90| 20 77 68 69 6c 65 20 28 | 76 61 6c 29 3b 0a 58 09 | while (|val);.X.|
|00001fa0| 09 09 69 66 20 28 73 67 | 6e 29 0a 58 09 09 09 09 |..if (sg|n).X....|
|00001fb0| 2a 2d 2d 63 70 20 3d 20 | 27 2d 27 3b 0a 58 09 09 |*--cp = |'-';.X..|
|00001fc0| 09 69 66 20 28 70 72 65 | 63 20 3e 20 66 77 29 0a |.if (pre|c > fw).|
|00001fd0| 58 09 09 09 09 66 77 20 | 3d 20 70 72 65 63 3b 0a |X....fw |= prec;.|
|00001fe0| 58 09 09 09 70 72 65 63 | 20 3d 20 63 65 6e 64 20 |X...prec| = cend |
|00001ff0| 2d 20 63 70 3b 0a 58 09 | 09 09 69 66 20 28 66 77 |- cp;.X.|..if (fw|
|00002000| 20 3e 20 70 72 65 63 20 | 26 26 20 21 6c 6a 29 20 | > prec |&& !lj) |
|00002010| 7b 0a 58 09 09 09 09 69 | 66 20 28 66 69 6c 6c 20 |{.X....i|f (fill |
|00002020| 21 3d 20 73 70 20 26 26 | 20 2a 63 70 20 3d 3d 20 |!= sp &&| *cp == |
|00002030| 27 2d 27 29 20 7b 0a 58 | 09 09 09 09 09 62 63 68 |'-') {.X|.....bch|
|00002040| 75 6e 6b 28 63 70 2c 20 | 31 29 3b 0a 58 09 09 09 |unk(cp, |1);.X...|
|00002050| 09 09 63 70 2b 2b 3b 0a | 58 09 09 09 09 09 70 72 |..cp++;.|X.....pr|
|00002060| 65 63 2d 2d 3b 0a 58 09 | 09 09 09 09 66 77 2d 2d |ec--;.X.|....fw--|
|00002070| 3b 0a 58 09 09 09 09 7d | 0a 58 09 09 09 09 77 68 |;.X....}|.X....wh|
|00002080| 69 6c 65 20 28 66 77 20 | 3e 20 70 72 65 63 29 20 |ile (fw |> prec) |
|00002090| 7b 0a 58 09 09 09 09 09 | 62 63 68 75 6e 6b 28 66 |{.X.....|bchunk(f|
|000020a0| 69 6c 6c 2c 20 31 29 3b | 0a 58 09 09 09 09 09 66 |ill, 1);|.X.....f|
|000020b0| 77 2d 2d 3b 0a 58 09 09 | 09 09 7d 0a 58 09 09 09 |w--;.X..|..}.X...|
|000020c0| 7d 0a 58 09 09 09 62 63 | 68 75 6e 6b 28 63 70 2c |}.X...bc|hunk(cp,|
|000020d0| 20 28 69 6e 74 29 20 70 | 72 65 63 29 3b 0a 58 09 | (int) p|rec);.X.|
|000020e0| 09 09 69 66 20 28 66 77 | 20 3e 20 70 72 65 63 29 |..if (fw| > prec)|
|000020f0| 20 7b 0a 58 09 09 09 09 | 77 68 69 6c 65 20 28 66 | {.X....|while (f|
|00002100| 77 20 3e 20 70 72 65 63 | 29 20 7b 0a 58 09 09 09 |w > prec|) {.X...|
|00002110| 09 09 62 63 68 75 6e 6b | 28 66 69 6c 6c 2c 20 31 |..bchunk|(fill, 1|
|00002120| 29 3b 0a 58 09 09 09 09 | 09 66 77 2d 2d 3b 0a 58 |);.X....|.fw--;.X|
|00002130| 09 09 09 09 7d 0a 58 09 | 09 09 7d 0a 58 09 09 09 |....}.X.|..}.X...|
|00002140| 73 30 20 3d 20 73 31 3b | 0a 58 09 09 09 62 72 65 |s0 = s1;|.X...bre|
|00002150| 61 6b 3b 0a 58 09 09 63 | 61 73 65 20 27 75 27 3a |ak;.X..c|ase 'u':|
|00002160| 0a 58 09 09 09 62 61 73 | 65 20 3d 20 31 30 3b 0a |.X...bas|e = 10;.|
|00002170| 58 09 09 09 67 6f 74 6f | 20 70 72 5f 75 6e 73 69 |X...goto| pr_unsi|
|00002180| 67 6e 65 64 3b 0a 58 09 | 09 63 61 73 65 20 27 6f |gned;.X.|.case 'o|
|00002190| 27 3a 0a 58 09 09 09 62 | 61 73 65 20 3d 20 38 3b |':.X...b|ase = 8;|
|000021a0| 0a 58 09 09 09 67 6f 74 | 6f 20 70 72 5f 75 6e 73 |.X...got|o pr_uns|
|000021b0| 69 67 6e 65 64 3b 0a 58 | 09 09 63 61 73 65 20 27 |igned;.X|..case '|
|000021c0| 58 27 3a 0a 58 09 09 09 | 75 63 61 73 65 68 65 78 |X':.X...|ucasehex|
|000021d0| 20 3d 20 31 3b 0a 58 09 | 09 63 61 73 65 20 27 78 | = 1;.X.|.case 'x|
|000021e0| 27 3a 0a 58 09 09 09 62 | 61 73 65 20 3d 20 31 36 |':.X...b|ase = 16|
|000021f0| 3b 0a 58 09 09 09 67 6f | 74 6f 20 70 72 5f 75 6e |;.X...go|to pr_un|
|00002200| 73 69 67 6e 65 64 3b 0a | 58 09 70 72 5f 75 6e 73 |signed;.|X.pr_uns|
|00002210| 69 67 6e 65 64 3a 0a 58 | 09 09 09 70 61 72 73 65 |igned:.X|...parse|
|00002220| 5f 6e 65 78 74 5f 61 72 | 67 28 29 3b 0a 58 09 09 |_next_ar|g();.X..|
|00002230| 09 75 76 61 6c 20 3d 20 | 28 75 6e 73 69 67 6e 65 |.uval = |(unsigne|
|00002240| 64 20 6c 6f 6e 67 29 20 | 66 6f 72 63 65 5f 6e 75 |d long) |force_nu|
|00002250| 6d 62 65 72 28 61 72 67 | 29 3b 0a 58 09 09 09 66 |mber(arg|);.X...f|
|00002260| 72 65 65 5f 74 65 6d 70 | 28 61 72 67 29 3b 0a 58 |ree_temp|(arg);.X|
|00002270| 09 09 09 64 6f 20 7b 0a | 58 09 09 09 09 2a 2d 2d |...do {.|X....*--|
|00002280| 63 70 20 3d 20 63 68 62 | 75 66 5b 75 76 61 6c 20 |cp = chb|uf[uval |
|00002290| 25 20 62 61 73 65 5d 3b | 0a 58 09 09 09 09 69 66 |% base];|.X....if|
|000022a0| 20 28 75 63 61 73 65 68 | 65 78 20 26 26 20 69 73 | (ucaseh|ex && is|
|000022b0| 61 6c 70 68 61 28 2a 63 | 70 29 29 0a 58 09 09 09 |alpha(*c|p)).X...|
|000022c0| 09 09 2a 63 70 20 3d 20 | 74 6f 75 70 70 65 72 28 |..*cp = |toupper(|
|000022d0| 2a 63 70 29 3b 0a 58 09 | 09 09 09 75 76 61 6c 20 |*cp);.X.|...uval |
|000022e0| 2f 3d 20 62 61 73 65 3b | 0a 58 09 09 09 7d 20 77 |/= base;|.X...} w|
|000022f0| 68 69 6c 65 20 28 75 76 | 61 6c 29 3b 0a 58 09 09 |hile (uv|al);.X..|
|00002300| 09 69 66 20 28 61 6c 74 | 20 26 26 20 28 62 61 73 |.if (alt| && (bas|
|00002310| 65 20 3d 3d 20 38 20 7c | 7c 20 62 61 73 65 20 3d |e == 8 ||| base =|
|00002320| 3d 20 31 36 29 29 20 7b | 0a 58 09 09 09 09 69 66 |= 16)) {|.X....if|
|00002330| 20 28 62 61 73 65 20 3d | 3d 20 31 36 29 20 7b 0a | (base =|= 16) {.|
|00002340| 58 09 09 09 09 09 69 66 | 20 28 75 63 61 73 65 68 |X.....if| (ucaseh|
|00002350| 65 78 29 0a 58 09 09 09 | 09 09 09 2a 2d 2d 63 70 |ex).X...|...*--cp|
|00002360| 20 3d 20 27 58 27 3b 0a | 58 09 09 09 09 09 65 6c | = 'X';.|X.....el|
|00002370| 73 65 0a 58 09 09 09 09 | 09 09 2a 2d 2d 63 70 20 |se.X....|..*--cp |
|00002380| 3d 20 27 78 27 3b 0a 58 | 09 09 09 09 7d 0a 58 09 |= 'x';.X|....}.X.|
|00002390| 09 09 09 2a 2d 2d 63 70 | 20 3d 20 27 30 27 3b 0a |...*--cp| = '0';.|
|000023a0| 58 09 09 09 7d 0a 58 09 | 09 09 70 72 65 63 20 3d |X...}.X.|..prec =|
|000023b0| 20 63 65 6e 64 20 2d 20 | 63 70 3b 0a 58 09 09 09 | cend - |cp;.X...|
|000023c0| 69 66 20 28 66 77 20 3e | 20 70 72 65 63 20 26 26 |if (fw >| prec &&|
|000023d0| 20 21 6c 6a 29 20 7b 0a | 58 09 09 09 09 77 68 69 | !lj) {.|X....whi|
|000023e0| 6c 65 20 28 66 77 20 3e | 20 70 72 65 63 29 20 7b |le (fw >| prec) {|
|000023f0| 0a 58 09 09 09 09 09 62 | 63 68 75 6e 6b 28 66 69 |.X.....b|chunk(fi|
|00002400| 6c 6c 2c 20 31 29 3b 0a | 58 09 09 09 09 09 66 77 |ll, 1);.|X.....fw|
|00002410| 2d 2d 3b 0a 58 09 09 09 | 09 7d 0a 58 09 09 09 7d |--;.X...|.}.X...}|
|00002420| 0a 58 09 09 09 62 63 68 | 75 6e 6b 28 63 70 2c 20 |.X...bch|unk(cp, |
|00002430| 28 69 6e 74 29 20 70 72 | 65 63 29 3b 0a 58 09 09 |(int) pr|ec);.X..|
|00002440| 09 69 66 20 28 66 77 20 | 3e 20 70 72 65 63 29 20 |.if (fw |> prec) |
|00002450| 7b 0a 58 09 09 09 09 77 | 68 69 6c 65 20 28 66 77 |{.X....w|hile (fw|
|00002460| 20 3e 20 70 72 65 63 29 | 20 7b 0a 58 09 09 09 09 | > prec)| {.X....|
|00002470| 09 62 63 68 75 6e 6b 28 | 66 69 6c 6c 2c 20 31 29 |.bchunk(|fill, 1)|
|00002480| 3b 0a 58 09 09 09 09 09 | 66 77 2d 2d 3b 0a 58 09 |;.X.....|fw--;.X.|
|00002490| 09 09 09 7d 0a 58 09 09 | 09 7d 0a 58 09 09 09 73 |...}.X..|.}.X...s|
|000024a0| 30 20 3d 20 73 31 3b 0a | 58 09 09 09 62 72 65 61 |0 = s1;.|X...brea|
|000024b0| 6b 3b 0a 58 09 09 63 61 | 73 65 20 27 67 27 3a 0a |k;.X..ca|se 'g':.|
|000024c0| 58 09 09 09 70 61 72 73 | 65 5f 6e 65 78 74 5f 61 |X...pars|e_next_a|
|000024d0| 72 67 28 29 3b 0a 58 09 | 09 09 74 6d 70 76 61 6c |rg();.X.|..tmpval|
|000024e0| 20 3d 20 66 6f 72 63 65 | 5f 6e 75 6d 62 65 72 28 | = force|_number(|
|000024f0| 61 72 67 29 3b 0a 58 09 | 09 09 66 72 65 65 5f 74 |arg);.X.|..free_t|
|00002500| 65 6d 70 28 61 72 67 29 | 3b 0a 58 09 09 09 69 66 |emp(arg)|;.X...if|
|00002510| 20 28 70 72 65 63 20 3d | 3d 20 30 29 0a 58 09 09 | (prec =|= 0).X..|
|00002520| 09 09 70 72 65 63 20 3d | 20 31 33 3b 0a 58 09 09 |..prec =| 13;.X..|
|00002530| 09 28 76 6f 69 64 29 20 | 67 63 76 74 28 74 6d 70 |.(void) |gcvt(tmp|
|00002540| 76 61 6c 2c 20 28 69 6e | 74 29 20 70 72 65 63 2c |val, (in|t) prec,|
|00002550| 20 63 70 62 75 66 29 3b | 0a 58 09 09 09 70 72 65 | cpbuf);|.X...pre|
|00002560| 63 20 3d 20 73 74 72 6c | 65 6e 28 63 70 62 75 66 |c = strl|en(cpbuf|
|00002570| 29 3b 0a 58 09 09 09 63 | 70 20 3d 20 63 70 62 75 |);.X...c|p = cpbu|
|00002580| 66 3b 0a 58 09 09 09 69 | 66 20 28 66 77 20 3e 20 |f;.X...i|f (fw > |
|00002590| 70 72 65 63 20 26 26 20 | 21 6c 6a 29 20 7b 0a 58 |prec && |!lj) {.X|
|000025a0| 09 09 09 09 69 66 20 28 | 66 69 6c 6c 20 21 3d 20 |....if (|fill != |
|000025b0| 73 70 20 26 26 20 2a 63 | 70 20 3d 3d 20 27 2d 27 |sp && *c|p == '-'|
|000025c0| 29 20 7b 0a 58 09 09 09 | 09 09 62 63 68 75 6e 6b |) {.X...|..bchunk|
|000025d0| 28 63 70 2c 20 31 29 3b | 0a 58 09 09 09 09 09 63 |(cp, 1);|.X.....c|
|000025e0| 70 2b 2b 3b 0a 58 09 09 | 09 09 09 70 72 65 63 2d |p++;.X..|...prec-|
|000025f0| 2d 3b 0a 58 09 09 09 09 | 7d 09 2f 2a 20 44 65 61 |-;.X....|}./* Dea|
|00002600| 6c 20 77 69 74 68 20 2e | 35 20 61 73 20 30 2e 35 |l with .|5 as 0.5|
|00002610| 20 2a 2f 0a 58 09 09 09 | 09 69 66 20 28 66 69 6c | */.X...|.if (fil|
|00002620| 6c 20 3d 3d 20 73 70 20 | 26 26 20 2a 63 70 20 3d |l == sp |&& *cp =|
|00002630| 3d 20 27 2e 27 29 20 7b | 0a 58 09 09 09 09 09 2d |= '.') {|.X.....-|
|00002640| 2d 66 77 3b 0a 58 09 09 | 09 09 09 77 68 69 6c 65 |-fw;.X..|...while|
|00002650| 20 28 2d 2d 66 77 20 3e | 3d 20 70 72 65 63 29 20 | (--fw >|= prec) |
|00002660| 7b 0a 58 09 09 09 09 09 | 09 62 63 68 75 6e 6b 28 |{.X.....|.bchunk(|
|00002670| 66 69 6c 6c 2c 20 31 29 | 3b 0a 58 09 09 09 09 09 |fill, 1)|;.X.....|
|00002680| 7d 0a 58 09 09 09 09 09 | 62 63 68 75 6e 6b 28 22 |}.X.....|bchunk("|
|00002690| 30 22 2c 20 31 29 3b 0a | 58 09 09 09 09 7d 20 65 |0", 1);.|X....} e|
|000026a0| 6c 73 65 0a 58 09 09 09 | 09 09 77 68 69 6c 65 20 |lse.X...|..while |
|000026b0| 28 66 77 2d 2d 20 3e 20 | 70 72 65 63 29 0a 58 09 |(fw-- > |prec).X.|
|000026c0| 09 09 09 09 09 62 63 68 | 75 6e 6b 28 66 69 6c 6c |.....bch|unk(fill|
|000026d0| 2c 20 31 29 3b 0a 58 09 | 09 09 7d 20 65 6c 73 65 |, 1);.X.|..} else|
|000026e0| 20 7b 2f 2a 20 54 75 72 | 6e 20 2e 35 20 69 6e 74 | {/* Tur|n .5 int|
|000026f0| 6f 20 30 2e 35 20 2a 2f | 0a 58 09 09 09 09 2f 2a |o 0.5 */|.X..../*|
|00002700| 20 46 4f 4f 20 2a 2f 0a | 58 09 09 09 09 69 66 20 | FOO */.|X....if |
|00002710| 28 2a 63 70 20 3d 3d 20 | 27 2e 27 20 26 26 20 66 |(*cp == |'.' && f|
|00002720| 69 6c 6c 20 3d 3d 20 73 | 70 29 20 7b 0a 58 09 09 |ill == s|p) {.X..|
|00002730| 09 09 09 62 63 68 75 6e | 6b 28 22 30 22 2c 20 31 |...bchun|k("0", 1|
|00002740| 29 3b 0a 58 09 09 09 09 | 09 2d 2d 66 77 3b 0a 58 |);.X....|.--fw;.X|
|00002750| 09 09 09 09 7d 0a 58 09 | 09 09 7d 0a 58 09 09 09 |....}.X.|..}.X...|
|00002760| 62 63 68 75 6e 6b 28 63 | 70 2c 20 28 69 6e 74 29 |bchunk(c|p, (int)|
|00002770| 20 70 72 65 63 29 3b 0a | 58 09 09 09 69 66 20 28 | prec);.|X...if (|
|00002780| 66 77 20 3e 20 70 72 65 | 63 29 0a 58 09 09 09 09 |fw > pre|c).X....|
|00002790| 77 68 69 6c 65 20 28 66 | 77 2d 2d 20 3e 20 70 72 |while (f|w-- > pr|
|000027a0| 65 63 29 0a 58 09 09 09 | 09 09 62 63 68 75 6e 6b |ec).X...|..bchunk|
|000027b0| 28 66 69 6c 6c 2c 20 31 | 29 3b 0a 58 09 09 09 73 |(fill, 1|);.X...s|
|000027c0| 30 20 3d 20 73 31 3b 0a | 58 09 09 09 62 72 65 61 |0 = s1;.|X...brea|
|000027d0| 6b 3b 0a 58 09 09 63 61 | 73 65 20 27 66 27 3a 0a |k;.X..ca|se 'f':.|
|000027e0| 58 09 09 09 70 61 72 73 | 65 5f 6e 65 78 74 5f 61 |X...pars|e_next_a|
|000027f0| 72 67 28 29 3b 0a 58 09 | 09 09 74 6d 70 76 61 6c |rg();.X.|..tmpval|
|00002800| 20 3d 20 66 6f 72 63 65 | 5f 6e 75 6d 62 65 72 28 | = force|_number(|
|00002810| 61 72 67 29 3b 0a 58 09 | 09 09 66 72 65 65 5f 74 |arg);.X.|..free_t|
|00002820| 65 6d 70 28 61 72 67 29 | 3b 0a 58 09 09 09 63 68 |emp(arg)|;.X...ch|
|00002830| 6b 73 69 7a 65 28 66 77 | 20 2b 20 70 72 65 63 20 |ksize(fw| + prec |
|00002840| 2b 20 35 29 3b 09 2f 2a | 20 35 3d 3d 73 6c 6f 70 |+ 5);./*| 5==slop|
|00002850| 20 2a 2f 0a 58 0a 58 09 | 09 09 63 70 20 3d 20 63 | */.X.X.|..cp = c|
|00002860| 70 62 75 66 3b 0a 58 09 | 09 09 2a 63 70 2b 2b 20 |pbuf;.X.|..*cp++ |
|00002870| 3d 20 27 25 27 3b 0a 58 | 09 09 09 69 66 20 28 6c |= '%';.X|...if (l|
|00002880| 6a 29 0a 58 09 09 09 09 | 2a 63 70 2b 2b 20 3d 20 |j).X....|*cp++ = |
|00002890| 27 2d 27 3b 0a 58 09 09 | 09 69 66 20 28 66 69 6c |'-';.X..|.if (fil|
|000028a0| 6c 20 21 3d 20 73 70 29 | 0a 58 09 09 09 09 2a 63 |l != sp)|.X....*c|
|000028b0| 70 2b 2b 20 3d 20 27 30 | 27 3b 0a 58 09 09 09 69 |p++ = '0|';.X...i|
|000028c0| 66 20 28 63 75 72 20 21 | 3d 20 26 66 77 29 20 7b |f (cur !|= &fw) {|
|000028d0| 0a 58 09 09 09 09 28 76 | 6f 69 64 29 20 73 74 72 |.X....(v|oid) str|
|000028e0| 63 70 79 28 63 70 2c 20 | 22 2a 2e 2a 66 22 29 3b |cpy(cp, |"*.*f");|
|000028f0| 0a 58 09 09 09 09 28 76 | 6f 69 64 29 20 73 70 72 |.X....(v|oid) spr|
|00002900| 69 6e 74 66 28 6f 62 75 | 66 20 2b 20 6f 6c 65 6e |intf(obu|f + olen|
|00002910| 2c 20 63 70 62 75 66 2c | 20 28 69 6e 74 29 20 66 |, cpbuf,| (int) f|
|00002920| 77 2c 20 28 69 6e 74 29 | 20 70 72 65 63 2c 20 28 |w, (int)| prec, (|
|00002930| 64 6f 75 62 6c 65 29 20 | 74 6d 70 76 61 6c 29 3b |double) |tmpval);|
|00002940| 0a 58 09 09 09 7d 20 65 | 6c 73 65 20 7b 0a 58 09 |.X...} e|lse {.X.|
|00002950| 09 09 09 28 76 6f 69 64 | 29 20 73 74 72 63 70 79 |...(void|) strcpy|
|00002960| 28 63 70 2c 20 22 2a 66 | 22 29 3b 0a 58 09 09 09 |(cp, "*f|");.X...|
|00002970| 09 28 76 6f 69 64 29 20 | 73 70 72 69 6e 74 66 28 |.(void) |sprintf(|
|00002980| 6f 62 75 66 20 2b 20 6f | 6c 65 6e 2c 20 63 70 62 |obuf + o|len, cpb|
|00002990| 75 66 2c 20 28 69 6e 74 | 29 20 66 77 2c 20 28 64 |uf, (int|) fw, (d|
|000029a0| 6f 75 62 6c 65 29 20 74 | 6d 70 76 61 6c 29 3b 0a |ouble) t|mpval);.|
|000029b0| 58 09 09 09 7d 0a 58 09 | 09 09 6f 66 72 65 20 2d |X...}.X.|..ofre -|
|000029c0| 3d 20 73 74 72 6c 65 6e | 28 6f 62 75 66 20 2b 20 |= strlen|(obuf + |
|000029d0| 6f 6c 65 6e 29 3b 0a 58 | 09 09 09 6f 6c 65 6e 20 |olen);.X|...olen |
|000029e0| 2b 3d 20 73 74 72 6c 65 | 6e 28 6f 62 75 66 20 2b |+= strle|n(obuf +|
|000029f0| 20 6f 6c 65 6e 29 3b 09 | 2f 2a 20 54 68 65 72 65 | olen);.|/* There|
|00002a00| 20 6d 61 79 20 62 65 20 | 6e 75 6c 6c 73 20 2a 2f | may be |nulls */|
|00002a10| 0a 58 09 09 09 73 30 20 | 3d 20 73 31 3b 0a 58 09 |.X...s0 |= s1;.X.|
|00002a20| 09 09 62 72 65 61 6b 3b | 0a 58 09 09 63 61 73 65 |..break;|.X..case|
|00002a30| 20 27 65 27 3a 0a 58 09 | 09 09 70 61 72 73 65 5f | 'e':.X.|..parse_|
|00002a40| 6e 65 78 74 5f 61 72 67 | 28 29 3b 0a 58 09 09 09 |next_arg|();.X...|
|00002a50| 74 6d 70 76 61 6c 20 3d | 20 66 6f 72 63 65 5f 6e |tmpval =| force_n|
|00002a60| 75 6d 62 65 72 28 61 72 | 67 29 3b 0a 58 09 09 09 |umber(ar|g);.X...|
|00002a70| 66 72 65 65 5f 74 65 6d | 70 28 61 72 67 29 3b 0a |free_tem|p(arg);.|
|00002a80| 58 09 09 09 63 68 6b 73 | 69 7a 65 28 66 77 20 2b |X...chks|ize(fw +|
|00002a90| 20 70 72 65 63 20 2b 20 | 35 29 3b 09 2f 2a 20 35 | prec + |5);./* 5|
|00002aa0| 3d 3d 73 6c 6f 70 20 2a | 2f 0a 58 09 09 09 63 70 |==slop *|/.X...cp|
|00002ab0| 20 3d 20 63 70 62 75 66 | 3b 0a 58 09 09 09 2a 63 | = cpbuf|;.X...*c|
|00002ac0| 70 2b 2b 20 3d 20 27 25 | 27 3b 0a 58 09 09 09 69 |p++ = '%|';.X...i|
|00002ad0| 66 20 28 6c 6a 29 0a 58 | 09 09 09 09 2a 63 70 2b |f (lj).X|....*cp+|
|00002ae0| 2b 20 3d 20 27 2d 27 3b | 0a 58 09 09 09 69 66 20 |+ = '-';|.X...if |
|00002af0| 28 66 69 6c 6c 20 21 3d | 20 73 70 29 0a 58 09 09 |(fill !=| sp).X..|
|00002b00| 09 09 2a 63 70 2b 2b 20 | 3d 20 27 30 27 3b 0a 58 |..*cp++ |= '0';.X|
|00002b10| 09 09 09 69 66 20 28 63 | 75 72 20 21 3d 20 26 66 |...if (c|ur != &f|
|00002b20| 77 29 20 7b 0a 58 09 09 | 09 09 28 76 6f 69 64 29 |w) {.X..|..(void)|
|00002b30| 20 73 74 72 63 70 79 28 | 63 70 2c 20 22 2a 2e 2a | strcpy(|cp, "*.*|
|00002b40| 65 22 29 3b 0a 58 09 09 | 09 09 28 76 6f 69 64 29 |e");.X..|..(void)|
|00002b50| 20 73 70 72 69 6e 74 66 | 28 6f 62 75 66 20 2b 20 | sprintf|(obuf + |
|00002b60| 6f 6c 65 6e 2c 20 63 70 | 62 75 66 2c 20 28 69 6e |olen, cp|buf, (in|
|00002b70| 74 29 20 66 77 2c 20 28 | 69 6e 74 29 20 70 72 65 |t) fw, (|int) pre|
|00002b80| 63 2c 20 28 64 6f 75 62 | 6c 65 29 20 74 6d 70 76 |c, (doub|le) tmpv|
|00002b90| 61 6c 29 3b 0a 58 09 09 | 09 7d 20 65 6c 73 65 20 |al);.X..|.} else |
|00002ba0| 7b 0a 58 09 09 09 09 28 | 76 6f 69 64 29 20 73 74 |{.X....(|void) st|
|00002bb0| 72 63 70 79 28 63 70 2c | 20 22 2a 65 22 29 3b 0a |rcpy(cp,| "*e");.|
|00002bc0| 58 09 09 09 09 28 76 6f | 69 64 29 20 73 70 72 69 |X....(vo|id) spri|
|00002bd0| 6e 74 66 28 6f 62 75 66 | 20 2b 20 6f 6c 65 6e 2c |ntf(obuf| + olen,|
|00002be0| 20 63 70 62 75 66 2c 20 | 28 69 6e 74 29 20 66 77 | cpbuf, |(int) fw|
|00002bf0| 2c 20 28 64 6f 75 62 6c | 65 29 20 74 6d 70 76 61 |, (doubl|e) tmpva|
|00002c00| 6c 29 3b 0a 58 09 09 09 | 7d 0a 58 09 09 09 6f 66 |l);.X...|}.X...of|
|00002c10| 72 65 20 2d 3d 20 73 74 | 72 6c 65 6e 28 6f 62 75 |re -= st|rlen(obu|
|00002c20| 66 20 2b 20 6f 6c 65 6e | 29 3b 0a 58 09 09 09 6f |f + olen|);.X...o|
|00002c30| 6c 65 6e 20 2b 3d 20 73 | 74 72 6c 65 6e 28 6f 62 |len += s|trlen(ob|
|00002c40| 75 66 20 2b 20 6f 6c 65 | 6e 29 3b 09 2f 2a 20 54 |uf + ole|n);./* T|
|00002c50| 68 65 72 65 20 6d 61 79 | 20 62 65 20 6e 75 6c 6c |here may| be null|
|00002c60| 73 20 2a 2f 0a 58 09 09 | 09 73 30 20 3d 20 73 31 |s */.X..|.s0 = s1|
|00002c70| 3b 0a 58 09 09 09 62 72 | 65 61 6b 3b 0a 58 0a 58 |;.X...br|eak;.X.X|
|00002c80| 09 09 64 65 66 61 75 6c | 74 3a 0a 58 09 6c 6f 73 |..defaul|t:.X.los|
|00002c90| 65 3a 0a 58 09 09 09 62 | 72 65 61 6b 3b 0a 58 09 |e:.X...b|reak;.X.|
|00002ca0| 09 7d 0a 58 09 7d 0a 58 | 09 62 63 68 75 6e 6b 28 |.}.X.}.X|.bchunk(|
|00002cb0| 73 30 2c 20 73 31 20 2d | 20 73 30 29 3b 0a 58 09 |s0, s1 -| s0);.X.|
|00002cc0| 66 72 65 65 5f 74 65 6d | 70 28 73 66 6d 74 29 3b |free_tem|p(sfmt);|
|00002cd0| 0a 58 09 72 65 74 75 72 | 6e 20 74 6d 70 5f 73 74 |.X.retur|n tmp_st|
|00002ce0| 72 69 6e 67 28 6f 62 75 | 66 2c 20 6f 6c 65 6e 29 |ring(obu|f, olen)|
|00002cf0| 3b 0a 58 7d 0a 58 0a 58 | 76 6f 69 64 0a 58 64 6f |;.X}.X.X|void.Xdo|
|00002d00| 5f 70 72 69 6e 74 66 28 | 74 72 65 65 29 0a 58 4e |_printf(|tree).XN|
|00002d10| 4f 44 45 20 2a 74 72 65 | 65 3b 0a 58 7b 0a 58 09 |ODE *tre|e;.X{.X.|
|00002d20| 73 74 72 75 63 74 20 72 | 65 64 69 72 65 63 74 20 |struct r|edirect |
|00002d30| 2a 72 70 20 3d 20 4e 55 | 4c 4c 3b 0a 58 09 72 65 |*rp = NU|LL;.X.re|
|00002d40| 67 69 73 74 65 72 20 46 | 49 4c 45 20 2a 66 70 20 |gister F|ILE *fp |
|00002d50| 3d 20 73 74 64 6f 75 74 | 3b 0a 58 09 69 6e 74 20 |= stdout|;.X.int |
|00002d60| 65 72 72 66 6c 67 20 3d | 20 30 3b 09 09 2f 2a 20 |errflg =| 0;../* |
|00002d70| 6e 6f 74 20 75 73 65 64 | 2c 20 73 69 67 68 20 2a |not used|, sigh *|
|00002d80| 2f 0a 58 0a 58 09 69 66 | 20 28 74 72 65 65 2d 3e |/.X.X.if| (tree->|
|00002d90| 72 6e 6f 64 65 29 20 7b | 0a 58 09 09 72 70 20 3d |rnode) {|.X..rp =|
|00002da0| 20 72 65 64 69 72 65 63 | 74 28 74 72 65 65 2d 3e | redirec|t(tree->|
|00002db0| 72 6e 6f 64 65 2c 20 26 | 65 72 72 66 6c 67 29 3b |rnode, &|errflg);|
|00002dc0| 0a 58 09 09 69 66 20 28 | 72 70 29 0a 58 09 09 09 |.X..if (|rp).X...|
|00002dd0| 66 70 20 3d 20 72 70 2d | 3e 66 70 3b 0a 58 09 7d |fp = rp-|>fp;.X.}|
|00002de0| 0a 58 09 69 66 20 28 66 | 70 29 0a 58 09 09 70 72 |.X.if (f|p).X..pr|
|00002df0| 69 6e 74 5f 73 69 6d 70 | 6c 65 28 64 6f 5f 73 70 |int_simp|le(do_sp|
|00002e00| 72 69 6e 74 66 28 74 72 | 65 65 2d 3e 6c 6e 6f 64 |rintf(tr|ee->lnod|
|00002e10| 65 29 2c 20 66 70 29 3b | 0a 58 09 69 66 20 28 72 |e), fp);|.X.if (r|
|00002e20| 70 20 26 26 20 28 72 70 | 2d 3e 66 6c 61 67 20 26 |p && (rp|->flag &|
|00002e30| 20 52 45 44 5f 4e 4f 42 | 55 46 29 29 0a 58 09 09 | RED_NOB|UF)).X..|
|00002e40| 66 66 6c 75 73 68 28 66 | 70 29 3b 0a 58 7d 0a 58 |fflush(f|p);.X}.X|
|00002e50| 0a 58 4e 4f 44 45 20 2a | 0a 58 64 6f 5f 73 71 72 |.XNODE *|.Xdo_sqr|
|00002e60| 74 28 74 72 65 65 29 0a | 58 4e 4f 44 45 20 2a 74 |t(tree).|XNODE *t|
|00002e70| 72 65 65 3b 0a 58 7b 0a | 58 09 4e 4f 44 45 20 2a |ree;.X{.|X.NODE *|
|00002e80| 74 6d 70 3b 0a 58 09 64 | 6f 75 62 6c 65 20 73 71 |tmp;.X.d|ouble sq|
|00002e90| 72 74 28 29 3b 0a 58 09 | 64 6f 75 62 6c 65 20 64 |rt();.X.|double d|
|00002ea0| 2c 20 61 72 67 3b 0a 58 | 0a 58 09 67 65 74 5f 6f |, arg;.X|.X.get_o|
|00002eb0| 6e 65 28 74 72 65 65 2c | 20 26 74 6d 70 29 3b 0a |ne(tree,| &tmp);.|
|00002ec0| 58 09 61 72 67 20 3d 20 | 28 64 6f 75 62 6c 65 29 |X.arg = |(double)|
|00002ed0| 20 66 6f 72 63 65 5f 6e | 75 6d 62 65 72 28 74 6d | force_n|umber(tm|
|00002ee0| 70 29 3b 0a 58 09 69 66 | 20 28 61 72 67 20 3c 20 |p);.X.if| (arg < |
|00002ef0| 30 2e 30 29 0a 58 09 09 | 77 61 72 6e 69 6e 67 28 |0.0).X..|warning(|
|00002f00| 22 73 71 72 74 20 63 61 | 6c 6c 65 64 20 77 69 74 |"sqrt ca|lled wit|
|00002f10| 68 20 6e 65 67 61 74 69 | 76 65 20 61 72 67 75 6d |h negati|ve argum|
|00002f20| 65 6e 74 20 25 67 22 2c | 20 61 72 67 29 3b 0a 58 |ent %g",| arg);.X|
|00002f30| 09 64 20 3d 20 73 71 72 | 74 28 61 72 67 29 3b 0a |.d = sqr|t(arg);.|
|00002f40| 58 09 66 72 65 65 5f 74 | 65 6d 70 28 74 6d 70 29 |X.free_t|emp(tmp)|
|00002f50| 3b 0a 58 09 72 65 74 75 | 72 6e 20 74 6d 70 5f 6e |;.X.retu|rn tmp_n|
|00002f60| 75 6d 62 65 72 28 28 41 | 57 4b 4e 55 4d 29 20 64 |umber((A|WKNUM) d|
|00002f70| 29 3b 0a 58 7d 0a 58 0a | 58 4e 4f 44 45 20 2a 0a |);.X}.X.|XNODE *.|
|00002f80| 58 64 6f 5f 73 75 62 73 | 74 72 28 74 72 65 65 29 |Xdo_subs|tr(tree)|
|00002f90| 0a 58 4e 4f 44 45 20 2a | 74 72 65 65 3b 0a 58 7b |.XNODE *|tree;.X{|
|00002fa0| 0a 58 09 4e 4f 44 45 20 | 2a 74 31 2c 20 2a 74 32 |.X.NODE |*t1, *t2|
|00002fb0| 2c 20 2a 74 33 3b 0a 58 | 09 4e 4f 44 45 20 2a 72 |, *t3;.X|.NODE *r|
|00002fc0| 3b 0a 58 09 72 65 67 69 | 73 74 65 72 20 69 6e 74 |;.X.regi|ster int|
|00002fd0| 20 69 6e 64 78 2c 20 6c | 65 6e 67 74 68 3b 0a 58 | indx, l|ength;.X|
|00002fe0| 0a 58 09 74 31 20 3d 20 | 74 32 20 3d 20 74 33 20 |.X.t1 = |t2 = t3 |
|00002ff0| 3d 20 4e 55 4c 4c 3b 0a | 58 09 6c 65 6e 67 74 68 |= NULL;.|X.length|
|00003000| 20 3d 20 2d 31 3b 0a 58 | 09 69 66 20 28 67 65 74 | = -1;.X|.if (get|
|00003010| 5f 74 68 72 65 65 28 74 | 72 65 65 2c 20 26 74 31 |_three(t|ree, &t1|
|00003020| 2c 20 26 74 32 2c 20 26 | 74 33 29 20 3d 3d 20 33 |, &t2, &|t3) == 3|
|00003030| 29 0a 58 09 09 6c 65 6e | 67 74 68 20 3d 20 28 69 |).X..len|gth = (i|
|00003040| 6e 74 29 20 66 6f 72 63 | 65 5f 6e 75 6d 62 65 72 |nt) forc|e_number|
|00003050| 28 74 33 29 3b 0a 58 09 | 69 6e 64 78 20 3d 20 28 |(t3);.X.|indx = (|
|00003060| 69 6e 74 29 20 66 6f 72 | 63 65 5f 6e 75 6d 62 65 |int) for|ce_numbe|
|00003070| 72 28 74 32 29 20 2d 20 | 31 3b 0a 58 09 74 31 20 |r(t2) - |1;.X.t1 |
|00003080| 3d 20 66 6f 72 63 65 5f | 73 74 72 69 6e 67 28 74 |= force_|string(t|
|00003090| 31 29 3b 0a 58 09 69 66 | 20 28 6c 65 6e 67 74 68 |1);.X.if| (length|
|000030a0| 20 3d 3d 20 2d 31 29 0a | 58 09 09 6c 65 6e 67 74 | == -1).|X..lengt|
|000030b0| 68 20 3d 20 74 31 2d 3e | 73 74 6c 65 6e 3b 0a 58 |h = t1->|stlen;.X|
|000030c0| 09 69 66 20 28 69 6e 64 | 78 20 3c 20 30 29 0a 58 |.if (ind|x < 0).X|
|000030d0| 09 09 69 6e 64 78 20 3d | 20 30 3b 0a 58 09 69 66 |..indx =| 0;.X.if|
|000030e0| 20 28 69 6e 64 78 20 3e | 3d 20 74 31 2d 3e 73 74 | (indx >|= t1->st|
|000030f0| 6c 65 6e 20 7c 7c 20 6c | 65 6e 67 74 68 20 3c 3d |len || l|ength <=|
|00003100| 20 30 29 20 7b 0a 58 09 | 09 69 66 20 28 74 33 29 | 0) {.X.|.if (t3)|
|00003110| 0a 58 09 09 09 66 72 65 | 65 5f 74 65 6d 70 28 74 |.X...fre|e_temp(t|
|00003120| 33 29 3b 0a 58 09 09 66 | 72 65 65 5f 74 65 6d 70 |3);.X..f|ree_temp|
|00003130| 28 74 32 29 3b 0a 58 09 | 09 66 72 65 65 5f 74 65 |(t2);.X.|.free_te|
|00003140| 6d 70 28 74 31 29 3b 0a | 58 09 09 72 65 74 75 72 |mp(t1);.|X..retur|
|00003150| 6e 20 4e 6e 75 6c 6c 5f | 73 74 72 69 6e 67 3b 0a |n Nnull_|string;.|
|00003160| 58 09 7d 0a 58 09 69 66 | 20 28 69 6e 64 78 20 2b |X.}.X.if| (indx +|
|00003170| 20 6c 65 6e 67 74 68 20 | 3e 20 74 31 2d 3e 73 74 | length |> t1->st|
|00003180| 6c 65 6e 29 0a 58 09 09 | 6c 65 6e 67 74 68 20 3d |len).X..|length =|
|00003190| 20 74 31 2d 3e 73 74 6c | 65 6e 20 2d 20 69 6e 64 | t1->stl|en - ind|
|000031a0| 78 3b 0a 58 09 69 66 20 | 28 74 33 29 0a 58 09 09 |x;.X.if |(t3).X..|
|000031b0| 66 72 65 65 5f 74 65 6d | 70 28 74 33 29 3b 0a 58 |free_tem|p(t3);.X|
|000031c0| 09 66 72 65 65 5f 74 65 | 6d 70 28 74 32 29 3b 0a |.free_te|mp(t2);.|
|000031d0| 58 09 72 20 3d 20 20 74 | 6d 70 5f 73 74 72 69 6e |X.r = t|mp_strin|
|000031e0| 67 28 74 31 2d 3e 73 74 | 70 74 72 20 2b 20 69 6e |g(t1->st|ptr + in|
|000031f0| 64 78 2c 20 6c 65 6e 67 | 74 68 29 3b 0a 58 09 66 |dx, leng|th);.X.f|
|00003200| 72 65 65 5f 74 65 6d 70 | 28 74 31 29 3b 0a 58 09 |ree_temp|(t1);.X.|
|00003210| 72 65 74 75 72 6e 20 72 | 3b 0a 58 7d 0a 58 0a 58 |return r|;.X}.X.X|
|00003220| 4e 4f 44 45 20 2a 0a 58 | 64 6f 5f 73 79 73 74 65 |NODE *.X|do_syste|
|00003230| 6d 28 74 72 65 65 29 0a | 58 4e 4f 44 45 20 2a 74 |m(tree).|XNODE *t|
|00003240| 72 65 65 3b 0a 58 7b 0a | 58 23 69 66 20 64 65 66 |ree;.X{.|X#if def|
|00003250| 69 6e 65 64 28 75 6e 69 | 78 29 20 7c 7c 20 64 65 |ined(uni|x) || de|
|00003260| 66 69 6e 65 64 28 4d 53 | 44 4f 53 29 20 2f 2a 20 |fined(MS|DOS) /* |
|00003270| 7c 7c 20 64 65 66 69 6e | 65 64 28 67 6e 75 29 20 ||| defin|ed(gnu) |
|00003280| 2a 2f 0a 58 09 4e 4f 44 | 45 20 2a 74 6d 70 3b 0a |*/.X.NOD|E *tmp;.|
|00003290| 58 09 69 6e 74 20 72 65 | 74 3b 0a 58 0a 58 09 28 |X.int re|t;.X.X.(|
|000032a0| 76 6f 69 64 29 20 66 6c | 75 73 68 5f 69 6f 20 28 |void) fl|ush_io (|
|000032b0| 29 3b 09 2f 2a 20 73 6f | 20 6f 75 74 70 75 74 20 |);./* so| output |
|000032c0| 69 73 20 73 79 6e 63 68 | 72 6f 6e 6f 75 73 20 77 |is synch|ronous w|
|000032d0| 69 74 68 20 67 61 77 6b | 27 73 20 2a 2f 0a 58 09 |ith gawk|'s */.X.|
|000032e0| 67 65 74 5f 6f 6e 65 28 | 74 72 65 65 2c 20 26 74 |get_one(|tree, &t|
|000032f0| 6d 70 29 3b 0a 58 09 72 | 65 74 20 3d 20 73 79 73 |mp);.X.r|et = sys|
|00003300| 74 65 6d 28 66 6f 72 63 | 65 5f 73 74 72 69 6e 67 |tem(forc|e_string|
|00003310| 28 74 6d 70 29 2d 3e 73 | 74 70 74 72 29 3b 0a 58 |(tmp)->s|tptr);.X|
|00003320| 09 72 65 74 20 3d 20 28 | 72 65 74 20 3e 3e 20 38 |.ret = (|ret >> 8|
|00003330| 29 20 26 20 30 78 66 66 | 3b 0a 58 09 66 72 65 65 |) & 0xff|;.X.free|
|00003340| 5f 74 65 6d 70 28 74 6d | 70 29 3b 0a 58 09 72 65 |_temp(tm|p);.X.re|
|00003350| 74 75 72 6e 20 74 6d 70 | 5f 6e 75 6d 62 65 72 28 |turn tmp|_number(|
|00003360| 28 41 57 4b 4e 55 4d 29 | 20 72 65 74 29 3b 0a 58 |(AWKNUM)| ret);.X|
|00003370| 23 65 6c 73 65 0a 58 09 | 66 61 74 61 6c 28 22 74 |#else.X.|fatal("t|
|00003380| 68 65 20 5c 22 73 79 73 | 74 65 6d 5c 22 20 66 75 |he \"sys|tem\" fu|
|00003390| 6e 63 74 69 6f 6e 20 69 | 73 20 6e 6f 74 20 73 75 |nction i|s not su|
|000033a0| 70 70 6f 72 74 65 64 2e | 22 29 3b 0a 58 09 2f 2a |pported.|");.X./*|
|000033b0| 20 4e 4f 54 52 45 41 43 | 48 45 44 20 2a 2f 0a 58 | NOTREAC|HED */.X|
|000033c0| 23 65 6e 64 69 66 0a 58 | 7d 0a 58 0a 58 76 6f 69 |#endif.X|}.X.Xvoi|
|000033d0| 64 20 0a 58 64 6f 5f 70 | 72 69 6e 74 28 74 72 65 |d .Xdo_p|rint(tre|
|000033e0| 65 29 0a 58 72 65 67 69 | 73 74 65 72 20 4e 4f 44 |e).Xregi|ster NOD|
|000033f0| 45 20 2a 74 72 65 65 3b | 0a 58 7b 0a 58 09 73 74 |E *tree;|.X{.X.st|
|00003400| 72 75 63 74 20 72 65 64 | 69 72 65 63 74 20 2a 72 |ruct red|irect *r|
|00003410| 70 20 3d 20 4e 55 4c 4c | 3b 0a 58 09 72 65 67 69 |p = NULL|;.X.regi|
|00003420| 73 74 65 72 20 46 49 4c | 45 20 2a 66 70 20 3d 20 |ster FIL|E *fp = |
|00003430| 73 74 64 6f 75 74 3b 0a | 58 09 69 6e 74 20 65 72 |stdout;.|X.int er|
|00003440| 72 66 6c 67 20 3d 20 30 | 3b 09 09 2f 2a 20 6e 6f |rflg = 0|;../* no|
|00003450| 74 20 75 73 65 64 2c 20 | 73 69 67 68 20 2a 2f 0a |t used, |sigh */.|
|00003460| 58 0a 58 09 69 66 20 28 | 74 72 65 65 2d 3e 72 6e |X.X.if (|tree->rn|
|00003470| 6f 64 65 29 20 7b 0a 58 | 09 09 72 70 20 3d 20 72 |ode) {.X|..rp = r|
|00003480| 65 64 69 72 65 63 74 28 | 74 72 65 65 2d 3e 72 6e |edirect(|tree->rn|
|00003490| 6f 64 65 2c 20 26 65 72 | 72 66 6c 67 29 3b 0a 58 |ode, &er|rflg);.X|
|000034a0| 09 09 69 66 20 28 72 70 | 29 0a 58 09 09 09 66 70 |..if (rp|).X...fp|
|000034b0| 20 3d 20 72 70 2d 3e 66 | 70 3b 0a 58 09 7d 0a 58 | = rp->f|p;.X.}.X|
|000034c0| 09 69 66 20 28 21 66 70 | 29 0a 58 09 09 72 65 74 |.if (!fp|).X..ret|
|000034d0| 75 72 6e 3b 0a 58 09 74 | 72 65 65 20 3d 20 74 72 |urn;.X.t|ree = tr|
|000034e0| 65 65 2d 3e 6c 6e 6f 64 | 65 3b 0a 58 09 69 66 20 |ee->lnod|e;.X.if |
|000034f0| 28 21 74 72 65 65 29 0a | 58 09 09 74 72 65 65 20 |(!tree).|X..tree |
|00003500| 3d 20 57 48 4f 4c 45 4c | 49 4e 45 3b 0a 58 09 69 |= WHOLEL|INE;.X.i|
|00003510| 66 20 28 74 72 65 65 2d | 3e 74 79 70 65 20 21 3d |f (tree-|>type !=|
|00003520| 20 4e 6f 64 65 5f 65 78 | 70 72 65 73 73 69 6f 6e | Node_ex|pression|
|00003530| 5f 6c 69 73 74 29 20 7b | 0a 58 09 09 69 66 20 28 |_list) {|.X..if (|
|00003540| 21 28 74 72 65 65 2d 3e | 66 6c 61 67 73 20 26 20 |!(tree->|flags & |
|00003550| 53 54 52 29 29 0a 58 09 | 09 09 63 61 6e 74 5f 68 |STR)).X.|..cant_h|
|00003560| 61 70 70 65 6e 28 29 3b | 0a 58 09 09 70 72 69 6e |appen();|.X..prin|
|00003570| 74 5f 73 69 6d 70 6c 65 | 28 74 72 65 65 2c 20 66 |t_simple|(tree, f|
|00003580| 70 29 3b 0a 58 09 7d 20 | 65 6c 73 65 20 7b 0a 58 |p);.X.} |else {.X|
|00003590| 09 09 77 68 69 6c 65 20 | 28 74 72 65 65 29 20 7b |..while |(tree) {|
|000035a0| 0a 58 09 09 09 70 72 69 | 6e 74 5f 73 69 6d 70 6c |.X...pri|nt_simpl|
|000035b0| 65 28 66 6f 72 63 65 5f | 73 74 72 69 6e 67 28 74 |e(force_|string(t|
|000035c0| 72 65 65 5f 65 76 61 6c | 28 74 72 65 65 2d 3e 6c |ree_eval|(tree->l|
|000035d0| 6e 6f 64 65 29 29 2c 20 | 66 70 29 3b 0a 58 09 09 |node)), |fp);.X..|
|000035e0| 09 74 72 65 65 20 3d 20 | 74 72 65 65 2d 3e 72 6e |.tree = |tree->rn|
|000035f0| 6f 64 65 3b 0a 58 09 09 | 09 69 66 20 28 74 72 65 |ode;.X..|.if (tre|
|00003600| 65 29 0a 58 09 09 09 09 | 70 72 69 6e 74 5f 73 69 |e).X....|print_si|
|00003610| 6d 70 6c 65 28 4f 46 53 | 5f 6e 6f 64 65 2d 3e 76 |mple(OFS|_node->v|
|00003620| 61 72 5f 76 61 6c 75 65 | 2c 20 66 70 29 3b 0a 58 |ar_value|, fp);.X|
|00003630| 09 09 7d 0a 58 09 7d 0a | 58 09 70 72 69 6e 74 5f |..}.X.}.|X.print_|
|00003640| 73 69 6d 70 6c 65 28 4f | 52 53 5f 6e 6f 64 65 2d |simple(O|RS_node-|
|00003650| 3e 76 61 72 5f 76 61 6c | 75 65 2c 20 66 70 29 3b |>var_val|ue, fp);|
|00003660| 0a 58 09 69 66 20 28 72 | 70 20 26 26 20 28 72 70 |.X.if (r|p && (rp|
|00003670| 2d 3e 66 6c 61 67 20 26 | 20 52 45 44 5f 4e 4f 42 |->flag &| RED_NOB|
|00003680| 55 46 29 29 0a 58 09 09 | 66 66 6c 75 73 68 28 66 |UF)).X..|fflush(f|
|00003690| 70 29 3b 0a 58 7d 0a 58 | 0a 58 4e 4f 44 45 20 2a |p);.X}.X|.XNODE *|
|000036a0| 0a 58 64 6f 5f 74 6f 6c | 6f 77 65 72 28 74 72 65 |.Xdo_tol|ower(tre|
|000036b0| 65 29 0a 58 4e 4f 44 45 | 20 2a 74 72 65 65 3b 0a |e).XNODE| *tree;.|
|000036c0| 58 7b 0a 58 09 4e 4f 44 | 45 20 2a 74 31 2c 20 2a |X{.X.NOD|E *t1, *|
|000036d0| 74 32 3b 0a 58 09 72 65 | 67 69 73 74 65 72 20 63 |t2;.X.re|gister c|
|000036e0| 68 61 72 20 2a 63 70 2c | 20 2a 63 70 32 3b 0a 58 |har *cp,| *cp2;.X|
|000036f0| 0a 58 09 67 65 74 5f 6f | 6e 65 28 74 72 65 65 2c |.X.get_o|ne(tree,|
|00003700| 20 26 74 31 29 3b 0a 58 | 09 74 31 20 3d 20 66 6f | &t1);.X|.t1 = fo|
|00003710| 72 63 65 5f 73 74 72 69 | 6e 67 28 74 31 29 3b 0a |rce_stri|ng(t1);.|
|00003720| 58 09 74 32 20 3d 20 74 | 6d 70 5f 73 74 72 69 6e |X.t2 = t|mp_strin|
|00003730| 67 28 74 31 2d 3e 73 74 | 70 74 72 2c 20 74 31 2d |g(t1->st|ptr, t1-|
|00003740| 3e 73 74 6c 65 6e 29 3b | 0a 58 09 66 6f 72 20 28 |>stlen);|.X.for (|
|00003750| 63 70 20 3d 20 74 32 2d | 3e 73 74 70 74 72 2c 20 |cp = t2-|>stptr, |
|00003760| 63 70 32 20 3d 20 74 32 | 2d 3e 73 74 70 74 72 20 |cp2 = t2|->stptr |
|00003770| 2b 20 74 32 2d 3e 73 74 | 6c 65 6e 3b 20 63 70 20 |+ t2->st|len; cp |
|00003780| 3c 20 63 70 32 3b 20 63 | 70 2b 2b 29 0a 58 09 09 |< cp2; c|p++).X..|
|00003790| 69 66 20 28 69 73 75 70 | 70 65 72 28 2a 63 70 29 |if (isup|per(*cp)|
|000037a0| 29 0a 58 09 09 09 2a 63 | 70 20 3d 20 74 6f 6c 6f |).X...*c|p = tolo|
|000037b0| 77 65 72 28 2a 63 70 29 | 3b 0a 58 09 66 72 65 65 |wer(*cp)|;.X.free|
|000037c0| 5f 74 65 6d 70 28 74 31 | 29 3b 0a 58 09 72 65 74 |_temp(t1|);.X.ret|
|000037d0| 75 72 6e 20 74 32 3b 0a | 58 7d 0a 58 0a 58 4e 4f |urn t2;.|X}.X.XNO|
|000037e0| 44 45 20 2a 0a 58 64 6f | 5f 74 6f 75 70 70 65 72 |DE *.Xdo|_toupper|
|000037f0| 28 74 72 65 65 29 0a 58 | 4e 4f 44 45 20 2a 74 72 |(tree).X|NODE *tr|
|00003800| 65 65 3b 0a 58 7b 0a 58 | 09 4e 4f 44 45 20 2a 74 |ee;.X{.X|.NODE *t|
|00003810| 31 2c 20 2a 74 32 3b 0a | 58 09 72 65 67 69 73 74 |1, *t2;.|X.regist|
|00003820| 65 72 20 63 68 61 72 20 | 2a 63 70 3b 0a 58 0a 58 |er char |*cp;.X.X|
|00003830| 09 67 65 74 5f 6f 6e 65 | 28 74 72 65 65 2c 20 26 |.get_one|(tree, &|
|00003840| 74 31 29 3b 0a 58 09 74 | 31 20 3d 20 66 6f 72 63 |t1);.X.t|1 = forc|
|00003850| 65 5f 73 74 72 69 6e 67 | 28 74 31 29 3b 0a 58 09 |e_string|(t1);.X.|
|00003860| 74 32 20 3d 20 74 6d 70 | 5f 73 74 72 69 6e 67 28 |t2 = tmp|_string(|
|00003870| 74 31 2d 3e 73 74 70 74 | 72 2c 20 74 31 2d 3e 73 |t1->stpt|r, t1->s|
|00003880| 74 6c 65 6e 29 3b 0a 58 | 09 66 6f 72 20 28 63 70 |tlen);.X|.for (cp|
|00003890| 20 3d 20 74 32 2d 3e 73 | 74 70 74 72 3b 20 63 70 | = t2->s|tptr; cp|
|000038a0| 20 3c 20 74 32 2d 3e 73 | 74 70 74 72 20 2b 20 74 | < t2->s|tptr + t|
|000038b0| 32 2d 3e 73 74 6c 65 6e | 3b 20 63 70 2b 2b 29 0a |2->stlen|; cp++).|
|000038c0| 58 09 09 69 66 20 28 69 | 73 6c 6f 77 65 72 28 2a |X..if (i|slower(*|
|000038d0| 63 70 29 29 0a 58 09 09 | 09 2a 63 70 20 3d 20 74 |cp)).X..|.*cp = t|
|000038e0| 6f 75 70 70 65 72 28 2a | 63 70 29 3b 0a 58 09 66 |oupper(*|cp);.X.f|
|000038f0| 72 65 65 5f 74 65 6d 70 | 28 74 31 29 3b 0a 58 09 |ree_temp|(t1);.X.|
|00003900| 72 65 74 75 72 6e 20 74 | 32 3b 0a 58 7d 0a 58 0a |return t|2;.X}.X.|
|00003910| 58 2f 2a 0a 58 20 2a 20 | 47 65 74 20 74 68 65 20 |X/*.X * |Get the |
|00003920| 61 72 67 75 6d 65 6e 74 | 73 20 74 6f 20 66 75 6e |argument|s to fun|
|00003930| 63 74 69 6f 6e 73 2e 20 | 20 4e 6f 20 66 75 6e 63 |ctions. | No func|
|00003940| 74 69 6f 6e 20 63 61 72 | 65 73 20 69 66 20 79 6f |tion car|es if yo|
|00003950| 75 20 67 69 76 65 20 69 | 74 20 74 6f 6f 20 6d 61 |u give i|t too ma|
|00003960| 6e 79 0a 58 20 2a 20 61 | 72 67 73 20 28 74 68 65 |ny.X * a|rgs (the|
|00003970| 79 27 72 65 20 69 67 6e | 6f 72 65 64 29 2e 20 20 |y're ign|ored). |
|00003980| 4f 6e 6c 79 20 61 20 66 | 65 77 20 66 75 63 74 69 |Only a f|ew fucti|
|00003990| 6f 6e 73 20 63 6f 6d 70 | 6c 61 69 6e 20 61 62 6f |ons comp|lain abo|
|000039a0| 75 74 20 62 65 69 6e 67 | 20 67 69 76 65 6e 0a 58 |ut being| given.X|
|000039b0| 20 2a 20 74 6f 6f 20 66 | 65 77 20 61 72 67 73 2e | * too f|ew args.|
|000039c0| 20 20 54 68 65 20 72 65 | 73 74 20 68 61 76 65 20 | The re|st have |
|000039d0| 64 65 66 61 75 6c 74 73 | 2e 0a 58 20 2a 2f 0a 58 |defaults|..X */.X|
|000039e0| 0a 58 73 74 61 74 69 63 | 20 76 6f 69 64 0a 58 67 |.Xstatic| void.Xg|
|000039f0| 65 74 5f 6f 6e 65 28 74 | 72 65 65 2c 20 72 65 73 |et_one(t|ree, res|
|00003a00| 29 0a 58 4e 4f 44 45 20 | 2a 74 72 65 65 2c 20 2a |).XNODE |*tree, *|
|00003a10| 2a 72 65 73 3b 0a 58 7b | 0a 58 09 69 66 20 28 21 |*res;.X{|.X.if (!|
|00003a20| 74 72 65 65 29 20 7b 0a | 58 09 09 2a 72 65 73 20 |tree) {.|X..*res |
|00003a30| 3d 20 57 48 4f 4c 45 4c | 49 4e 45 3b 0a 58 09 09 |= WHOLEL|INE;.X..|
|00003a40| 72 65 74 75 72 6e 3b 0a | 58 09 7d 0a 58 09 2a 72 |return;.|X.}.X.*r|
|00003a50| 65 73 20 3d 20 74 72 65 | 65 5f 65 76 61 6c 28 74 |es = tre|e_eval(t|
|00003a60| 72 65 65 2d 3e 6c 6e 6f | 64 65 29 3b 0a 58 7d 0a |ree->lno|de);.X}.|
|00003a70| 58 0a 58 73 74 61 74 69 | 63 20 76 6f 69 64 0a 58 |X.Xstati|c void.X|
|00003a80| 67 65 74 5f 74 77 6f 28 | 74 72 65 65 2c 20 72 65 |get_two(|tree, re|
|00003a90| 73 31 2c 20 72 65 73 32 | 29 0a 58 4e 4f 44 45 20 |s1, res2|).XNODE |
|00003aa0| 2a 74 72 65 65 2c 20 2a | 2a 72 65 73 31 2c 20 2a |*tree, *|*res1, *|
|00003ab0| 2a 72 65 73 32 3b 0a 58 | 7b 0a 58 09 69 66 20 28 |*res2;.X|{.X.if (|
|00003ac0| 21 74 72 65 65 29 20 7b | 0a 58 09 09 2a 72 65 73 |!tree) {|.X..*res|
|00003ad0| 31 20 3d 20 57 48 4f 4c | 45 4c 49 4e 45 3b 0a 58 |1 = WHOL|ELINE;.X|
|00003ae0| 09 09 72 65 74 75 72 6e | 3b 0a 58 09 7d 0a 58 09 |..return|;.X.}.X.|
|00003af0| 2a 72 65 73 31 20 3d 20 | 74 72 65 65 5f 65 76 61 |*res1 = |tree_eva|
|00003b00| 6c 28 74 72 65 65 2d 3e | 6c 6e 6f 64 65 29 3b 0a |l(tree->|lnode);.|
|00003b10| 58 09 69 66 20 28 21 74 | 72 65 65 2d 3e 72 6e 6f |X.if (!t|ree->rno|
|00003b20| 64 65 29 0a 58 09 09 72 | 65 74 75 72 6e 3b 0a 58 |de).X..r|eturn;.X|
|00003b30| 09 74 72 65 65 20 3d 20 | 74 72 65 65 2d 3e 72 6e |.tree = |tree->rn|
|00003b40| 6f 64 65 3b 0a 58 09 2a | 72 65 73 32 20 3d 20 74 |ode;.X.*|res2 = t|
|00003b50| 72 65 65 5f 65 76 61 6c | 28 74 72 65 65 2d 3e 6c |ree_eval|(tree->l|
|00003b60| 6e 6f 64 65 29 3b 0a 58 | 7d 0a 58 0a 58 73 74 61 |node);.X|}.X.Xsta|
|00003b70| 74 69 63 20 69 6e 74 0a | 58 67 65 74 5f 74 68 72 |tic int.|Xget_thr|
|00003b80| 65 65 28 74 72 65 65 2c | 20 72 65 73 31 2c 20 72 |ee(tree,| res1, r|
|00003b90| 65 73 32 2c 20 72 65 73 | 33 29 0a 58 4e 4f 44 45 |es2, res|3).XNODE|
|00003ba0| 20 2a 74 72 65 65 2c 20 | 2a 2a 72 65 73 31 2c 20 | *tree, |**res1, |
|00003bb0| 2a 2a 72 65 73 32 2c 20 | 2a 2a 72 65 73 33 3b 0a |**res2, |**res3;.|
|00003bc0| 58 7b 0a 58 09 69 66 20 | 28 21 74 72 65 65 29 20 |X{.X.if |(!tree) |
|00003bd0| 7b 0a 58 09 09 2a 72 65 | 73 31 20 3d 20 57 48 4f |{.X..*re|s1 = WHO|
|00003be0| 4c 45 4c 49 4e 45 3b 0a | 58 09 09 72 65 74 75 72 |LELINE;.|X..retur|
|00003bf0| 6e 20 30 3b 0a 58 09 7d | 0a 58 09 2a 72 65 73 31 |n 0;.X.}|.X.*res1|
|00003c00| 20 3d 20 74 72 65 65 5f | 65 76 61 6c 28 74 72 65 | = tree_|eval(tre|
|00003c10| 65 2d 3e 6c 6e 6f 64 65 | 29 3b 0a 58 09 69 66 20 |e->lnode|);.X.if |
|00003c20| 28 21 74 72 65 65 2d 3e | 72 6e 6f 64 65 29 0a 58 |(!tree->|rnode).X|
|00003c30| 09 09 72 65 74 75 72 6e | 20 31 3b 0a 58 09 74 72 |..return| 1;.X.tr|
|00003c40| 65 65 20 3d 20 74 72 65 | 65 2d 3e 72 6e 6f 64 65 |ee = tre|e->rnode|
|00003c50| 3b 0a 58 09 2a 72 65 73 | 32 20 3d 20 74 72 65 65 |;.X.*res|2 = tree|
|00003c60| 5f 65 76 61 6c 28 74 72 | 65 65 2d 3e 6c 6e 6f 64 |_eval(tr|ee->lnod|
|00003c70| 65 29 3b 0a 58 09 69 66 | 20 28 21 74 72 65 65 2d |e);.X.if| (!tree-|
|00003c80| 3e 72 6e 6f 64 65 29 0a | 58 09 09 72 65 74 75 72 |>rnode).|X..retur|
|00003c90| 6e 20 32 3b 0a 58 09 74 | 72 65 65 20 3d 20 74 72 |n 2;.X.t|ree = tr|
|00003ca0| 65 65 2d 3e 72 6e 6f 64 | 65 3b 0a 58 09 2a 72 65 |ee->rnod|e;.X.*re|
|00003cb0| 73 33 20 3d 20 74 72 65 | 65 5f 65 76 61 6c 28 74 |s3 = tre|e_eval(t|
|00003cc0| 72 65 65 2d 3e 6c 6e 6f | 64 65 29 3b 0a 58 09 72 |ree->lno|de);.X.r|
|00003cd0| 65 74 75 72 6e 20 33 3b | 0a 58 7d 0a 58 0a 58 69 |eturn 3;|.X}.X.Xi|
|00003ce0| 6e 74 0a 58 61 5f 67 65 | 74 5f 74 68 72 65 65 28 |nt.Xa_ge|t_three(|
|00003cf0| 74 72 65 65 2c 20 72 65 | 73 31 2c 20 72 65 73 32 |tree, re|s1, res2|
|00003d00| 2c 20 72 65 73 33 29 0a | 58 4e 4f 44 45 20 2a 74 |, res3).|XNODE *t|
|00003d10| 72 65 65 2c 20 2a 2a 72 | 65 73 31 2c 20 2a 2a 72 |ree, **r|es1, **r|
|00003d20| 65 73 32 2c 20 2a 2a 72 | 65 73 33 3b 0a 58 7b 0a |es2, **r|es3;.X{.|
|00003d30| 58 09 69 66 20 28 21 74 | 72 65 65 29 20 7b 0a 58 |X.if (!t|ree) {.X|
|00003d40| 09 09 2a 72 65 73 31 20 | 3d 20 57 48 4f 4c 45 4c |..*res1 |= WHOLEL|
|00003d50| 49 4e 45 3b 0a 58 09 09 | 72 65 74 75 72 6e 20 30 |INE;.X..|return 0|
|00003d60| 3b 0a 58 09 7d 0a 58 09 | 2a 72 65 73 31 20 3d 20 |;.X.}.X.|*res1 = |
|00003d70| 74 72 65 65 5f 65 76 61 | 6c 28 74 72 65 65 2d 3e |tree_eva|l(tree->|
|00003d80| 6c 6e 6f 64 65 29 3b 0a | 58 09 69 66 20 28 21 74 |lnode);.|X.if (!t|
|00003d90| 72 65 65 2d 3e 72 6e 6f | 64 65 29 0a 58 09 09 72 |ree->rno|de).X..r|
|00003da0| 65 74 75 72 6e 20 31 3b | 0a 58 09 74 72 65 65 20 |eturn 1;|.X.tree |
|00003db0| 3d 20 74 72 65 65 2d 3e | 72 6e 6f 64 65 3b 0a 58 |= tree->|rnode;.X|
|00003dc0| 09 2a 72 65 73 32 20 3d | 20 74 72 65 65 2d 3e 6c |.*res2 =| tree->l|
|00003dd0| 6e 6f 64 65 3b 0a 58 09 | 69 66 20 28 21 74 72 65 |node;.X.|if (!tre|
|00003de0| 65 2d 3e 72 6e 6f 64 65 | 29 0a 58 09 09 72 65 74 |e->rnode|).X..ret|
|00003df0| 75 72 6e 20 32 3b 0a 58 | 09 74 72 65 65 20 3d 20 |urn 2;.X|.tree = |
|00003e00| 74 72 65 65 2d 3e 72 6e | 6f 64 65 3b 0a 58 09 2a |tree->rn|ode;.X.*|
|00003e10| 72 65 73 33 20 3d 20 74 | 72 65 65 5f 65 76 61 6c |res3 = t|ree_eval|
|00003e20| 28 74 72 65 65 2d 3e 6c | 6e 6f 64 65 29 3b 0a 58 |(tree->l|node);.X|
|00003e30| 09 72 65 74 75 72 6e 20 | 33 3b 0a 58 7d 0a 58 0a |.return |3;.X}.X.|
|00003e40| 58 76 6f 69 64 0a 58 70 | 72 69 6e 74 5f 73 69 6d |Xvoid.Xp|rint_sim|
|00003e50| 70 6c 65 28 74 72 65 65 | 2c 20 66 70 29 0a 58 4e |ple(tree|, fp).XN|
|00003e60| 4f 44 45 20 2a 74 72 65 | 65 3b 0a 58 46 49 4c 45 |ODE *tre|e;.XFILE|
|00003e70| 20 2a 66 70 3b 0a 58 7b | 0a 58 09 69 66 20 28 66 | *fp;.X{|.X.if (f|
|00003e80| 77 72 69 74 65 28 74 72 | 65 65 2d 3e 73 74 70 74 |write(tr|ee->stpt|
|00003e90| 72 2c 20 73 69 7a 65 6f | 66 28 63 68 61 72 29 2c |r, sizeo|f(char),|
|00003ea0| 20 74 72 65 65 2d 3e 73 | 74 6c 65 6e 2c 20 66 70 | tree->s|tlen, fp|
|00003eb0| 29 20 21 3d 20 74 72 65 | 65 2d 3e 73 74 6c 65 6e |) != tre|e->stlen|
|00003ec0| 29 0a 58 09 09 77 61 72 | 6e 69 6e 67 28 22 66 77 |).X..war|ning("fw|
|00003ed0| 72 69 74 65 3a 20 25 73 | 22 2c 20 73 74 72 65 72 |rite: %s|", strer|
|00003ee0| 72 6f 72 28 65 72 72 6e | 6f 29 29 3b 0a 58 09 66 |ror(errn|o));.X.f|
|00003ef0| 72 65 65 5f 74 65 6d 70 | 28 74 72 65 65 29 3b 0a |ree_temp|(tree);.|
|00003f00| 58 7d 0a 58 0a 58 4e 4f | 44 45 20 2a 0a 58 64 6f |X}.X.XNO|DE *.Xdo|
|00003f10| 5f 61 74 61 6e 32 28 74 | 72 65 65 29 0a 58 4e 4f |_atan2(t|ree).XNO|
|00003f20| 44 45 20 2a 74 72 65 65 | 3b 0a 58 7b 0a 58 09 4e |DE *tree|;.X{.X.N|
|00003f30| 4f 44 45 20 2a 74 31 2c | 20 2a 74 32 3b 0a 58 09 |ODE *t1,| *t2;.X.|
|00003f40| 65 78 74 65 72 6e 20 64 | 6f 75 62 6c 65 20 61 74 |extern d|ouble at|
|00003f50| 61 6e 32 28 29 3b 0a 58 | 09 64 6f 75 62 6c 65 20 |an2();.X|.double |
|00003f60| 64 31 2c 20 64 32 3b 0a | 58 0a 58 09 67 65 74 5f |d1, d2;.|X.X.get_|
|00003f70| 74 77 6f 28 74 72 65 65 | 2c 20 26 74 31 2c 20 26 |two(tree|, &t1, &|
|00003f80| 74 32 29 3b 0a 58 09 64 | 31 20 3d 20 66 6f 72 63 |t2);.X.d|1 = forc|
|00003f90| 65 5f 6e 75 6d 62 65 72 | 28 74 31 29 3b 0a 58 09 |e_number|(t1);.X.|
|00003fa0| 64 32 20 3d 20 66 6f 72 | 63 65 5f 6e 75 6d 62 65 |d2 = for|ce_numbe|
|00003fb0| 72 28 74 32 29 3b 0a 58 | 09 66 72 65 65 5f 74 65 |r(t2);.X|.free_te|
|00003fc0| 6d 70 28 74 31 29 3b 0a | 58 09 66 72 65 65 5f 74 |mp(t1);.|X.free_t|
|00003fd0| 65 6d 70 28 74 32 29 3b | 0a 58 09 72 65 74 75 72 |emp(t2);|.X.retur|
|00003fe0| 6e 20 74 6d 70 5f 6e 75 | 6d 62 65 72 28 28 41 57 |n tmp_nu|mber((AW|
|00003ff0| 4b 4e 55 4d 29 20 61 74 | 61 6e 32 28 64 31 2c 20 |KNUM) at|an2(d1, |
|00004000| 64 32 29 29 3b 0a 58 7d | 0a 58 0a 58 4e 4f 44 45 |d2));.X}|.X.XNODE|
|00004010| 20 2a 0a 58 64 6f 5f 73 | 69 6e 28 74 72 65 65 29 | *.Xdo_s|in(tree)|
|00004020| 0a 58 4e 4f 44 45 20 2a | 74 72 65 65 3b 0a 58 7b |.XNODE *|tree;.X{|
|00004030| 0a 58 09 4e 4f 44 45 20 | 2a 74 6d 70 3b 0a 58 09 |.X.NODE |*tmp;.X.|
|00004040| 65 78 74 65 72 6e 20 64 | 6f 75 62 6c 65 20 73 69 |extern d|ouble si|
|00004050| 6e 28 29 3b 0a 58 09 64 | 6f 75 62 6c 65 20 64 3b |n();.X.d|ouble d;|
|00004060| 0a 58 0a 58 09 67 65 74 | 5f 6f 6e 65 28 74 72 65 |.X.X.get|_one(tre|
|00004070| 65 2c 20 26 74 6d 70 29 | 3b 0a 58 09 64 20 3d 20 |e, &tmp)|;.X.d = |
|00004080| 73 69 6e 28 28 64 6f 75 | 62 6c 65 29 66 6f 72 63 |sin((dou|ble)forc|
|00004090| 65 5f 6e 75 6d 62 65 72 | 28 74 6d 70 29 29 3b 0a |e_number|(tmp));.|
|000040a0| 58 09 66 72 65 65 5f 74 | 65 6d 70 28 74 6d 70 29 |X.free_t|emp(tmp)|
|000040b0| 3b 0a 58 09 72 65 74 75 | 72 6e 20 74 6d 70 5f 6e |;.X.retu|rn tmp_n|
|000040c0| 75 6d 62 65 72 28 28 41 | 57 4b 4e 55 4d 29 20 64 |umber((A|WKNUM) d|
|000040d0| 29 3b 0a 58 7d 0a 58 0a | 58 4e 4f 44 45 20 2a 0a |);.X}.X.|XNODE *.|
|000040e0| 58 64 6f 5f 63 6f 73 28 | 74 72 65 65 29 0a 58 4e |Xdo_cos(|tree).XN|
|000040f0| 4f 44 45 20 2a 74 72 65 | 65 3b 0a 58 7b 0a 58 09 |ODE *tre|e;.X{.X.|
|00004100| 4e 4f 44 45 20 2a 74 6d | 70 3b 0a 58 09 65 78 74 |NODE *tm|p;.X.ext|
|00004110| 65 72 6e 20 64 6f 75 62 | 6c 65 20 63 6f 73 28 29 |ern doub|le cos()|
|00004120| 3b 0a 58 09 64 6f 75 62 | 6c 65 20 64 3b 0a 58 0a |;.X.doub|le d;.X.|
|00004130| 58 09 67 65 74 5f 6f 6e | 65 28 74 72 65 65 2c 20 |X.get_on|e(tree, |
|00004140| 26 74 6d 70 29 3b 0a 58 | 09 64 20 3d 20 63 6f 73 |&tmp);.X|.d = cos|
|00004150| 28 28 64 6f 75 62 6c 65 | 29 66 6f 72 63 65 5f 6e |((double|)force_n|
|00004160| 75 6d 62 65 72 28 74 6d | 70 29 29 3b 0a 58 09 66 |umber(tm|p));.X.f|
|00004170| 72 65 65 5f 74 65 6d 70 | 28 74 6d 70 29 3b 0a 58 |ree_temp|(tmp);.X|
|00004180| 09 72 65 74 75 72 6e 20 | 74 6d 70 5f 6e 75 6d 62 |.return |tmp_numb|
|00004190| 65 72 28 28 41 57 4b 4e | 55 4d 29 20 64 29 3b 0a |er((AWKN|UM) d);.|
|000041a0| 58 7d 0a 58 0a 58 73 74 | 61 74 69 63 20 69 6e 74 |X}.X.Xst|atic int|
|000041b0| 20 66 69 72 73 74 72 61 | 6e 64 20 3d 20 31 3b 0a | firstra|nd = 1;.|
|000041c0| 58 73 74 61 74 69 63 20 | 63 68 61 72 20 73 74 61 |Xstatic |char sta|
|000041d0| 74 65 5b 32 35 36 5d 3b | 0a 58 0a 58 23 64 65 66 |te[256];|.X.X#def|
|000041e0| 69 6e 65 09 4d 41 58 4c | 4f 4e 47 09 32 31 34 37 |ine.MAXL|ONG.2147|
|000041f0| 34 38 33 36 34 37 09 2f | 2a 20 6d 61 78 69 6d 75 |483647./|* maximu|
|00004200| 6d 20 76 61 6c 75 65 20 | 66 6f 72 20 6c 6f 6e 67 |m value |for long|
|00004210| 20 69 6e 74 20 2a 2f 0a | 58 0a 58 2f 2a 20 41 52 | int */.|X.X/* AR|
|00004220| 47 53 55 53 45 44 20 2a | 2f 0a 58 4e 4f 44 45 20 |GSUSED *|/.XNODE |
|00004230| 2a 0a 58 64 6f 5f 72 61 | 6e 64 28 74 72 65 65 29 |*.Xdo_ra|nd(tree)|
|00004240| 0a 58 4e 4f 44 45 20 2a | 74 72 65 65 3b 0a 58 7b |.XNODE *|tree;.X{|
|00004250| 0a 58 09 69 66 20 28 66 | 69 72 73 74 72 61 6e 64 |.X.if (f|irstrand|
|00004260| 29 20 7b 0a 58 09 09 28 | 76 6f 69 64 29 20 69 6e |) {.X..(|void) in|
|00004270| 69 74 73 74 61 74 65 28 | 28 75 6e 73 69 67 6e 65 |itstate(|(unsigne|
|00004280| 64 29 20 31 2c 20 73 74 | 61 74 65 2c 20 73 69 7a |d) 1, st|ate, siz|
|00004290| 65 6f 66 20 73 74 61 74 | 65 29 3b 0a 58 09 09 73 |eof stat|e);.X..s|
|000042a0| 72 61 6e 64 6f 6d 28 31 | 29 3b 0a 58 09 09 66 69 |random(1|);.X..fi|
|000042b0| 72 73 74 72 61 6e 64 20 | 3d 20 30 3b 0a 58 09 7d |rstrand |= 0;.X.}|
|000042c0| 0a 58 09 72 65 74 75 72 | 6e 20 74 6d 70 5f 6e 75 |.X.retur|n tmp_nu|
|000042d0| 6d 62 65 72 28 28 41 57 | 4b 4e 55 4d 29 20 72 61 |mber((AW|KNUM) ra|
|000042e0| 6e 64 6f 6d 28 29 20 2f | 20 4d 41 58 4c 4f 4e 47 |ndom() /| MAXLONG|
|000042f0| 29 3b 0a 58 7d 0a 58 0a | 58 4e 4f 44 45 20 2a 0a |);.X}.X.|XNODE *.|
|00004300| 58 64 6f 5f 73 72 61 6e | 64 28 74 72 65 65 29 0a |Xdo_sran|d(tree).|
|00004310| 58 4e 4f 44 45 20 2a 74 | 72 65 65 3b 0a 58 7b 0a |XNODE *t|ree;.X{.|
|00004320| 58 09 4e 4f 44 45 20 2a | 74 6d 70 3b 0a 58 09 73 |X.NODE *|tmp;.X.s|
|00004330| 74 61 74 69 63 20 6c 6f | 6e 67 20 73 61 76 65 5f |tatic lo|ng save_|
|00004340| 73 65 65 64 20 3d 20 31 | 3b 0a 58 09 6c 6f 6e 67 |seed = 1|;.X.long|
|00004350| 20 72 65 74 20 3d 20 73 | 61 76 65 5f 73 65 65 64 | ret = s|ave_seed|
|00004360| 3b 09 2f 2a 20 53 56 52 | 34 20 61 77 6b 20 73 72 |;./* SVR|4 awk sr|
|00004370| 61 6e 64 20 72 65 74 75 | 72 6e 73 20 70 72 65 76 |and retu|rns prev|
|00004380| 69 6f 75 73 20 73 65 65 | 64 20 2a 2f 0a 58 09 65 |ious see|d */.X.e|
|00004390| 78 74 65 72 6e 20 6c 6f | 6e 67 20 74 69 6d 65 28 |xtern lo|ng time(|
|000043a0| 29 3b 0a 58 0a 58 09 69 | 66 20 28 66 69 72 73 74 |);.X.X.i|f (first|
|000043b0| 72 61 6e 64 29 0a 58 09 | 09 28 76 6f 69 64 29 20 |rand).X.|.(void) |
|000043c0| 69 6e 69 74 73 74 61 74 | 65 28 28 75 6e 73 69 67 |initstat|e((unsig|
|000043d0| 6e 65 64 29 20 31 2c 20 | 73 74 61 74 65 2c 20 73 |ned) 1, |state, s|
|000043e0| 69 7a 65 6f 66 20 73 74 | 61 74 65 29 3b 0a 58 09 |izeof st|ate);.X.|
|000043f0| 65 6c 73 65 0a 58 09 09 | 28 76 6f 69 64 29 20 73 |else.X..|(void) s|
|00004400| 65 74 73 74 61 74 65 28 | 73 74 61 74 65 29 3b 0a |etstate(|state);.|
|00004410| 58 0a 58 09 69 66 20 28 | 21 74 72 65 65 29 0a 58 |X.X.if (|!tree).X|
|00004420| 09 09 73 72 61 6e 64 6f | 6d 28 28 69 6e 74 29 20 |..srando|m((int) |
|00004430| 28 73 61 76 65 5f 73 65 | 65 64 20 3d 20 74 69 6d |(save_se|ed = tim|
|00004440| 65 28 28 6c 6f 6e 67 20 | 2a 29 20 30 29 29 29 3b |e((long |*) 0)));|
|00004450| 0a 58 09 65 6c 73 65 20 | 7b 0a 58 09 09 67 65 74 |.X.else |{.X..get|
|00004460| 5f 6f 6e 65 28 74 72 65 | 65 2c 20 26 74 6d 70 29 |_one(tre|e, &tmp)|
|00004470| 3b 0a 58 09 09 73 72 61 | 6e 64 6f 6d 28 28 69 6e |;.X..sra|ndom((in|
|00004480| 74 29 20 28 73 61 76 65 | 5f 73 65 65 64 20 3d 20 |t) (save|_seed = |
|00004490| 28 6c 6f 6e 67 29 20 66 | 6f 72 63 65 5f 6e 75 6d |(long) f|orce_num|
|000044a0| 62 65 72 28 74 6d 70 29 | 29 29 3b 0a 58 09 09 66 |ber(tmp)|));.X..f|
|000044b0| 72 65 65 5f 74 65 6d 70 | 28 74 6d 70 29 3b 0a 58 |ree_temp|(tmp);.X|
|000044c0| 09 7d 0a 58 09 66 69 72 | 73 74 72 61 6e 64 20 3d |.}.X.fir|strand =|
|000044d0| 20 30 3b 0a 58 09 72 65 | 74 75 72 6e 20 74 6d 70 | 0;.X.re|turn tmp|
|000044e0| 5f 6e 75 6d 62 65 72 28 | 28 41 57 4b 4e 55 4d 29 |_number(|(AWKNUM)|
|000044f0| 20 72 65 74 29 3b 0a 58 | 7d 0a 58 0a 58 4e 4f 44 | ret);.X|}.X.XNOD|
|00004500| 45 20 2a 0a 58 64 6f 5f | 6d 61 74 63 68 28 74 72 |E *.Xdo_|match(tr|
|00004510| 65 65 29 0a 58 4e 4f 44 | 45 20 2a 74 72 65 65 3b |ee).XNOD|E *tree;|
|00004520| 0a 58 7b 0a 58 09 4e 4f | 44 45 20 2a 74 31 3b 0a |.X{.X.NO|DE *t1;.|
|00004530| 58 09 69 6e 74 20 72 73 | 74 61 72 74 3b 0a 58 09 |X.int rs|tart;.X.|
|00004540| 73 74 72 75 63 74 20 72 | 65 5f 72 65 67 69 73 74 |struct r|e_regist|
|00004550| 65 72 73 20 72 65 72 65 | 67 73 3b 0a 58 09 73 74 |ers rere|gs;.X.st|
|00004560| 72 75 63 74 20 72 65 5f | 70 61 74 74 65 72 6e 5f |ruct re_|pattern_|
|00004570| 62 75 66 66 65 72 20 2a | 72 70 3b 0a 58 09 69 6e |buffer *|rp;.X.in|
|00004580| 74 20 6e 65 65 64 5f 74 | 6f 5f 66 72 65 65 20 3d |t need_t|o_free =|
|00004590| 20 30 3b 0a 58 0a 58 09 | 74 31 20 3d 20 66 6f 72 | 0;.X.X.|t1 = for|
|000045a0| 63 65 5f 73 74 72 69 6e | 67 28 74 72 65 65 5f 65 |ce_strin|g(tree_e|
|000045b0| 76 61 6c 28 74 72 65 65 | 2d 3e 6c 6e 6f 64 65 29 |val(tree|->lnode)|
|000045c0| 29 3b 0a 58 09 74 72 65 | 65 20 3d 20 74 72 65 65 |);.X.tre|e = tree|
|000045d0| 2d 3e 72 6e 6f 64 65 3b | 0a 58 09 69 66 20 28 74 |->rnode;|.X.if (t|
|000045e0| 72 65 65 20 3d 3d 20 4e | 55 4c 4c 20 7c 7c 20 74 |ree == N|ULL || t|
|000045f0| 72 65 65 2d 3e 6c 6e 6f | 64 65 20 3d 3d 20 4e 55 |ree->lno|de == NU|
|00004600| 4c 4c 29 0a 58 09 09 66 | 61 74 61 6c 28 22 6d 61 |LL).X..f|atal("ma|
|00004610| 74 63 68 20 63 61 6c 6c | 65 64 20 77 69 74 68 20 |tch call|ed with |
|00004620| 6f 6e 6c 79 20 6f 6e 65 | 20 61 72 67 75 6d 65 6e |only one| argumen|
|00004630| 74 22 29 3b 0a 58 09 74 | 72 65 65 20 3d 20 74 72 |t");.X.t|ree = tr|
|00004640| 65 65 2d 3e 6c 6e 6f 64 | 65 3b 0a 58 09 69 66 20 |ee->lnod|e;.X.if |
|00004650| 28 74 72 65 65 2d 3e 74 | 79 70 65 20 3d 3d 20 4e |(tree->t|ype == N|
|00004660| 6f 64 65 5f 72 65 67 65 | 78 29 20 7b 0a 58 09 09 |ode_rege|x) {.X..|
|00004670| 72 70 20 3d 20 74 72 65 | 65 2d 3e 72 65 72 65 67 |rp = tre|e->rereg|
|00004680| 3b 0a 58 09 09 69 66 20 | 28 21 73 74 72 69 63 74 |;.X..if |(!strict|
|00004690| 20 26 26 20 28 28 49 47 | 4e 4f 52 45 43 41 53 45 | && ((IG|NORECASE|
|000046a0| 5f 6e 6f 64 65 2d 3e 76 | 61 72 5f 76 61 6c 75 65 |_node->v|ar_value|
|000046b0| 2d 3e 6e 75 6d 62 72 20 | 21 3d 20 30 29 0a 58 09 |->numbr |!= 0).X.|
|000046c0| 09 20 20 20 20 5e 20 28 | 74 72 65 65 2d 3e 72 65 |. ^ (|tree->re|
|000046d0| 5f 63 61 73 65 20 21 3d | 20 30 29 29 29 20 7b 0a |_case !=| 0))) {.|
|000046e0| 58 09 09 09 2f 2a 20 72 | 65 63 6f 6d 70 69 6c 65 |X.../* r|ecompile|
|000046f0| 20 73 69 6e 63 65 20 63 | 61 73 65 20 73 65 6e 73 | since c|ase sens|
|00004700| 69 74 69 76 69 74 79 20 | 64 69 66 66 65 72 73 20 |itivity |differs |
|00004710| 2a 2f 0a 58 09 09 09 72 | 70 20 3d 20 74 72 65 65 |*/.X...r|p = tree|
|00004720| 2d 3e 72 65 72 65 67 20 | 3d 0a 58 09 09 09 09 6d |->rereg |=.X....m|
|00004730| 6b 5f 72 65 5f 70 61 72 | 73 65 28 74 72 65 65 2d |k_re_par|se(tree-|
|00004740| 3e 72 65 5f 74 65 78 74 | 2c 0a 58 09 09 09 09 28 |>re_text|,.X....(|
|00004750| 49 47 4e 4f 52 45 43 41 | 53 45 5f 6e 6f 64 65 2d |IGNORECA|SE_node-|
|00004760| 3e 76 61 72 5f 76 61 6c | 75 65 2d 3e 6e 75 6d 62 |>var_val|ue->numb|
|00004770| 72 20 21 3d 20 30 29 29 | 3b 0a 58 09 09 09 74 72 |r != 0))|;.X...tr|
|00004780| 65 65 2d 3e 72 65 5f 63 | 61 73 65 20 3d 0a 58 09 |ee->re_c|ase =.X.|
|00004790| 09 09 09 28 49 47 4e 4f | 52 45 43 41 53 45 5f 6e |...(IGNO|RECASE_n|
|000047a0| 6f 64 65 2d 3e 76 61 72 | 5f 76 61 6c 75 65 2d 3e |ode->var|_value->|
|000047b0| 6e 75 6d 62 72 20 21 3d | 20 30 29 3b 0a 58 09 09 |numbr !=| 0);.X..|
|000047c0| 7d 0a 58 09 7d 20 65 6c | 73 65 20 7b 0a 58 09 09 |}.X.} el|se {.X..|
|000047d0| 6e 65 65 64 5f 74 6f 5f | 66 72 65 65 20 3d 20 31 |need_to_|free = 1|
|000047e0| 3b 0a 58 09 09 72 70 20 | 3d 20 6d 61 6b 65 5f 72 |;.X..rp |= make_r|
|000047f0| 65 67 65 78 70 28 66 6f | 72 63 65 5f 73 74 72 69 |egexp(fo|rce_stri|
|00004800| 6e 67 28 74 72 65 65 5f | 65 76 61 6c 28 74 72 65 |ng(tree_|eval(tre|
|00004810| 65 29 29 2c 0a 58 09 09 | 09 09 28 49 47 4e 4f 52 |e)),.X..|..(IGNOR|
|00004820| 45 43 41 53 45 5f 6e 6f | 64 65 2d 3e 76 61 72 5f |ECASE_no|de->var_|
|00004830| 76 61 6c 75 65 2d 3e 6e | 75 6d 62 72 20 21 3d 20 |value->n|umbr != |
|00004840| 30 29 29 3b 0a 58 09 09 | 69 66 20 28 72 70 20 3d |0));.X..|if (rp =|
|00004850| 3d 20 4e 55 4c 4c 29 0a | 58 09 09 09 63 61 6e 74 |= NULL).|X...cant|
|00004860| 5f 68 61 70 70 65 6e 28 | 29 3b 0a 58 09 7d 0a 58 |_happen(|);.X.}.X|
|00004870| 09 72 73 74 61 72 74 20 | 3d 20 72 65 5f 73 65 61 |.rstart |= re_sea|
|00004880| 72 63 68 28 72 70 2c 20 | 74 31 2d 3e 73 74 70 74 |rch(rp, |t1->stpt|
|00004890| 72 2c 20 74 31 2d 3e 73 | 74 6c 65 6e 2c 20 30 2c |r, t1->s|tlen, 0,|
|000048a0| 20 74 31 2d 3e 73 74 6c | 65 6e 2c 20 26 72 65 72 | t1->stl|en, &rer|
|000048b0| 65 67 73 29 3b 0a 58 09 | 66 72 65 65 5f 74 65 6d |egs);.X.|free_tem|
|000048c0| 70 28 74 31 29 3b 0a 58 | 09 69 66 20 28 72 73 74 |p(t1);.X|.if (rst|
|000048d0| 61 72 74 20 3e 3d 20 30 | 29 20 7b 0a 58 09 09 72 |art >= 0|) {.X..r|
|000048e0| 73 74 61 72 74 2b 2b 3b | 09 2f 2a 20 31 2d 62 61 |start++;|./* 1-ba|
|000048f0| 73 65 64 20 69 6e 64 65 | 78 69 6e 67 20 2a 2f 0a |sed inde|xing */.|
|00004900| 58 09 09 2f 2a 20 52 53 | 54 41 52 54 20 73 65 74 |X../* RS|TART set|
|00004910| 20 74 6f 20 72 73 74 61 | 72 74 20 62 65 6c 6f 77 | to rsta|rt below|
|00004920| 20 2a 2f 0a 58 09 09 52 | 4c 45 4e 47 54 48 5f 6e | */.X..R|LENGTH_n|
|00004930| 6f 64 65 2d 3e 76 61 72 | 5f 76 61 6c 75 65 2d 3e |ode->var|_value->|
|00004940| 6e 75 6d 62 72 20 3d 0a | 58 09 09 09 28 41 57 4b |numbr =.|X...(AWK|
|00004950| 4e 55 4d 29 20 28 72 65 | 72 65 67 73 2e 65 6e 64 |NUM) (re|regs.end|
|00004960| 5b 30 5d 20 2d 20 72 65 | 72 65 67 73 2e 73 74 61 |[0] - re|regs.sta|
|00004970| 72 74 5b 30 5d 29 3b 0a | 58 09 7d 20 65 6c 73 65 |rt[0]);.|X.} else|
|00004980| 20 7b 0a 58 09 09 2f 2a | 0a 58 09 09 20 2a 20 4d | {.X../*|.X.. * M|
|00004990| 61 74 63 68 20 66 61 69 | 6c 65 64 2e 20 53 65 74 |atch fai|led. Set|
|000049a0| 20 52 53 54 41 52 54 20 | 74 6f 20 30 2c 20 52 4c | RSTART |to 0, RL|
|000049b0| 45 4e 47 54 48 20 74 6f | 20 2d 31 2e 0a 58 09 09 |ENGTH to| -1..X..|
|000049c0| 20 2a 20 52 65 74 75 72 | 6e 20 74 68 65 20 76 61 | * Retur|n the va|
|000049d0| 6c 75 65 20 6f 66 20 52 | 53 54 41 52 54 2e 0a 58 |lue of R|START..X|
|000049e0| 09 09 20 2a 2f 0a 58 09 | 09 72 73 74 61 72 74 20 |.. */.X.|.rstart |
|000049f0| 3d 20 30 3b 09 2f 2a 20 | 75 73 65 64 20 61 73 20 |= 0;./* |used as |
|00004a00| 72 65 74 75 72 6e 20 76 | 61 6c 75 65 20 2a 2f 0a |return v|alue */.|
|00004a10| 58 09 09 52 4c 45 4e 47 | 54 48 5f 6e 6f 64 65 2d |X..RLENG|TH_node-|
|00004a20| 3e 76 61 72 5f 76 61 6c | 75 65 2d 3e 6e 75 6d 62 |>var_val|ue->numb|
|00004a30| 72 20 3d 20 2d 31 2e 30 | 3b 0a 58 09 7d 0a 58 09 |r = -1.0|;.X.}.X.|
|00004a40| 52 53 54 41 52 54 5f 6e | 6f 64 65 2d 3e 76 61 72 |RSTART_n|ode->var|
|00004a50| 5f 76 61 6c 75 65 2d 3e | 6e 75 6d 62 72 20 3d 20 |_value->|numbr = |
|00004a60| 28 41 57 4b 4e 55 4d 29 | 20 72 73 74 61 72 74 3b |(AWKNUM)| rstart;|
|00004a70| 0a 58 09 69 66 20 28 6e | 65 65 64 5f 74 6f 5f 66 |.X.if (n|eed_to_f|
|00004a80| 72 65 65 29 20 7b 0a 58 | 09 09 66 72 65 65 28 72 |ree) {.X|..free(r|
|00004a90| 70 2d 3e 62 75 66 66 65 | 72 29 3b 0a 58 09 09 66 |p->buffe|r);.X..f|
|00004aa0| 72 65 65 28 72 70 2d 3e | 66 61 73 74 6d 61 70 29 |ree(rp->|fastmap)|
|00004ab0| 3b 0a 58 09 09 66 72 65 | 65 28 28 63 68 61 72 20 |;.X..fre|e((char |
|00004ac0| 2a 29 20 72 70 29 3b 0a | 58 09 7d 0a 58 09 72 65 |*) rp);.|X.}.X.re|
|00004ad0| 74 75 72 6e 20 74 6d 70 | 5f 6e 75 6d 62 65 72 28 |turn tmp|_number(|
|00004ae0| 28 41 57 4b 4e 55 4d 29 | 20 72 73 74 61 72 74 29 |(AWKNUM)| rstart)|
|00004af0| 3b 0a 58 7d 0a 58 0a 58 | 73 74 61 74 69 63 20 4e |;.X}.X.X|static N|
|00004b00| 4f 44 45 20 2a 0a 58 73 | 75 62 5f 63 6f 6d 6d 6f |ODE *.Xs|ub_commo|
|00004b10| 6e 28 74 72 65 65 2c 20 | 67 6c 6f 62 61 6c 29 0a |n(tree, |global).|
|00004b20| 58 4e 4f 44 45 20 2a 74 | 72 65 65 3b 0a 58 69 6e |XNODE *t|ree;.Xin|
|00004b30| 74 20 67 6c 6f 62 61 6c | 3b 0a 58 7b 0a 58 09 72 |t global|;.X{.X.r|
|00004b40| 65 67 69 73 74 65 72 20 | 69 6e 74 20 6c 65 6e 3b |egister |int len;|
|00004b50| 0a 58 09 72 65 67 69 73 | 74 65 72 20 63 68 61 72 |.X.regis|ter char|
|00004b60| 20 2a 73 63 61 6e 3b 0a | 58 09 72 65 67 69 73 74 | *scan;.|X.regist|
|00004b70| 65 72 20 63 68 61 72 20 | 2a 62 70 2c 20 2a 63 70 |er char |*bp, *cp|
|00004b80| 3b 0a 58 09 69 6e 74 20 | 73 65 61 72 63 68 5f 73 |;.X.int |search_s|
|00004b90| 74 61 72 74 20 3d 20 30 | 3b 0a 58 09 69 6e 74 20 |tart = 0|;.X.int |
|00004ba0| 6d 61 74 63 68 5f 6c 65 | 6e 67 74 68 3b 0a 58 09 |match_le|ngth;.X.|
|00004bb0| 69 6e 74 20 6d 61 74 63 | 68 65 73 20 3d 20 30 3b |int matc|hes = 0;|
|00004bc0| 0a 58 09 63 68 61 72 20 | 2a 62 75 66 3b 0a 58 09 |.X.char |*buf;.X.|
|00004bd0| 73 74 72 75 63 74 20 72 | 65 5f 70 61 74 74 65 72 |struct r|e_patter|
|00004be0| 6e 5f 62 75 66 66 65 72 | 20 2a 72 70 3b 0a 58 09 |n_buffer| *rp;.X.|
|00004bf0| 4e 4f 44 45 20 2a 73 3b | 09 09 2f 2a 20 73 75 62 |NODE *s;|../* sub|
|00004c00| 73 74 2e 20 70 61 74 74 | 65 72 6e 20 2a 2f 0a 58 |st. patt|ern */.X|
|00004c10| 09 4e 4f 44 45 20 2a 74 | 3b 09 09 2f 2a 20 73 74 |.NODE *t|;../* st|
|00004c20| 72 69 6e 67 20 74 6f 20 | 6d 61 6b 65 20 73 75 62 |ring to |make sub|
|00004c30| 2e 20 69 6e 3b 20 24 30 | 20 69 66 20 6e 6f 6e 65 |. in; $0| if none|
|00004c40| 20 67 69 76 65 6e 20 2a | 2f 0a 58 09 73 74 72 75 | given *|/.X.stru|
|00004c50| 63 74 20 72 65 5f 72 65 | 67 69 73 74 65 72 73 20 |ct re_re|gisters |
|00004c60| 72 65 72 65 67 73 3b 0a | 58 09 75 6e 73 69 67 6e |reregs;.|X.unsign|
|00004c70| 65 64 20 69 6e 74 20 73 | 61 76 65 66 6c 61 67 73 |ed int s|aveflags|
|00004c80| 3b 0a 58 09 4e 4f 44 45 | 20 2a 74 6d 70 3b 0a 58 |;.X.NODE| *tmp;.X|
|00004c90| 09 4e 4f 44 45 20 2a 2a | 6c 68 73 3b 0a 58 09 63 |.NODE **|lhs;.X.c|
|00004ca0| 68 61 72 20 2a 6c 61 73 | 74 62 75 66 3b 0a 58 09 |har *las|tbuf;.X.|
|00004cb0| 69 6e 74 20 6e 65 65 64 | 5f 74 6f 5f 66 72 65 65 |int need|_to_free|
|00004cc0| 20 3d 20 30 3b 0a 58 0a | 58 09 69 66 20 28 74 72 | = 0;.X.|X.if (tr|
|00004cd0| 65 65 20 3d 3d 20 4e 55 | 4c 4c 29 0a 58 09 09 66 |ee == NU|LL).X..f|
|00004ce0| 61 74 61 6c 28 22 73 75 | 62 20 6f 72 20 67 73 75 |atal("su|b or gsu|
|00004cf0| 62 20 63 61 6c 6c 65 64 | 20 77 69 74 68 20 30 20 |b called| with 0 |
|00004d00| 61 72 67 75 6d 65 6e 74 | 73 22 29 3b 0a 58 09 74 |argument|s");.X.t|
|00004d10| 6d 70 20 3d 20 74 72 65 | 65 2d 3e 6c 6e 6f 64 65 |mp = tre|e->lnode|
|00004d20| 3b 0a 58 09 69 66 20 28 | 74 6d 70 2d 3e 74 79 70 |;.X.if (|tmp->typ|
|00004d30| 65 20 3d 3d 20 4e 6f 64 | 65 5f 72 65 67 65 78 29 |e == Nod|e_regex)|
|00004d40| 20 7b 0a 58 09 09 72 70 | 20 3d 20 74 6d 70 2d 3e | {.X..rp| = tmp->|
|00004d50| 72 65 72 65 67 3b 0a 58 | 09 09 69 66 20 28 21 20 |rereg;.X|..if (! |
|00004d60| 73 74 72 69 63 74 20 26 | 26 20 28 28 49 47 4e 4f |strict &|& ((IGNO|
|00004d70| 52 45 43 41 53 45 5f 6e | 6f 64 65 2d 3e 76 61 72 |RECASE_n|ode->var|
|00004d80| 5f 76 61 6c 75 65 2d 3e | 6e 75 6d 62 72 20 21 3d |_value->|numbr !=|
|00004d90| 20 30 29 0a 58 09 09 20 | 20 20 20 5e 20 28 74 6d | 0).X.. | ^ (tm|
|00004da0| 70 2d 3e 72 65 5f 63 61 | 73 65 20 21 3d 20 30 29 |p->re_ca|se != 0)|
|00004db0| 29 29 20 7b 0a 58 09 09 | 09 2f 2a 20 72 65 63 6f |)) {.X..|./* reco|
|00004dc0| 6d 70 69 6c 65 20 73 69 | 6e 63 65 20 63 61 73 65 |mpile si|nce case|
|00004dd0| 20 73 65 6e 73 69 74 69 | 76 69 74 79 20 64 69 66 | sensiti|vity dif|
|00004de0| 66 65 72 73 20 2a 2f 0a | 58 09 09 09 72 70 20 3d |fers */.|X...rp =|
|00004df0| 20 74 6d 70 2d 3e 72 65 | 72 65 67 20 3d 0a 58 09 | tmp->re|reg =.X.|
|00004e00| 09 09 09 6d 6b 5f 72 65 | 5f 70 61 72 73 65 28 74 |...mk_re|_parse(t|
|00004e10| 6d 70 2d 3e 72 65 5f 74 | 65 78 74 2c 0a 58 09 09 |mp->re_t|ext,.X..|
|00004e20| 09 09 28 49 47 4e 4f 52 | 45 43 41 53 45 5f 6e 6f |..(IGNOR|ECASE_no|
|00004e30| 64 65 2d 3e 76 61 72 5f | 76 61 6c 75 65 2d 3e 6e |de->var_|value->n|
|00004e40| 75 6d 62 72 20 21 3d 20 | 30 29 29 3b 0a 58 09 09 |umbr != |0));.X..|
|00004e50| 09 74 6d 70 2d 3e 72 65 | 5f 63 61 73 65 20 3d 20 |.tmp->re|_case = |
|00004e60| 28 49 47 4e 4f 52 45 43 | 41 53 45 5f 6e 6f 64 65 |(IGNOREC|ASE_node|
|00004e70| 2d 3e 76 61 72 5f 76 61 | 6c 75 65 2d 3e 6e 75 6d |->var_va|lue->num|
|00004e80| 62 72 20 21 3d 20 30 29 | 3b 0a 58 09 09 7d 0a 58 |br != 0)|;.X..}.X|
|00004e90| 09 7d 20 65 6c 73 65 20 | 7b 0a 58 09 09 6e 65 65 |.} else |{.X..nee|
|00004ea0| 64 5f 74 6f 5f 66 72 65 | 65 20 3d 20 31 3b 0a 58 |d_to_fre|e = 1;.X|
|00004eb0| 09 09 72 70 20 3d 20 6d | 61 6b 65 5f 72 65 67 65 |..rp = m|ake_rege|
|00004ec0| 78 70 28 66 6f 72 63 65 | 5f 73 74 72 69 6e 67 28 |xp(force|_string(|
|00004ed0| 74 72 65 65 5f 65 76 61 | 6c 28 74 6d 70 29 29 2c |tree_eva|l(tmp)),|
|00004ee0| 0a 58 09 09 09 09 28 49 | 47 4e 4f 52 45 43 41 53 |.X....(I|GNORECAS|
|00004ef0| 45 5f 6e 6f 64 65 2d 3e | 76 61 72 5f 76 61 6c 75 |E_node->|var_valu|
|00004f00| 65 2d 3e 6e 75 6d 62 72 | 20 21 3d 20 30 29 29 3b |e->numbr| != 0));|
|00004f10| 0a 58 09 09 69 66 20 28 | 72 70 20 3d 3d 20 4e 55 |.X..if (|rp == NU|
|00004f20| 4c 4c 29 0a 58 09 09 09 | 63 61 6e 74 5f 68 61 70 |LL).X...|cant_hap|
|00004f30| 70 65 6e 28 29 3b 0a 58 | 09 7d 0a 58 09 74 72 65 |pen();.X|.}.X.tre|
|00004f40| 65 20 3d 20 74 72 65 65 | 2d 3e 72 6e 6f 64 65 3b |e = tree|->rnode;|
|00004f50| 0a 58 09 69 66 20 28 74 | 72 65 65 20 3d 3d 20 4e |.X.if (t|ree == N|
|00004f60| 55 4c 4c 29 0a 58 09 09 | 66 61 74 61 6c 28 22 73 |ULL).X..|fatal("s|
|00004f70| 75 62 20 6f 72 20 67 73 | 75 62 20 63 61 6c 6c 65 |ub or gs|ub calle|
|00004f80| 64 20 77 69 74 68 20 6f | 6e 6c 79 20 31 20 61 72 |d with o|nly 1 ar|
|00004f90| 67 75 6d 65 6e 74 22 29 | 3b 0a 58 09 73 20 3d 20 |gument")|;.X.s = |
|00004fa0| 66 6f 72 63 65 5f 73 74 | 72 69 6e 67 28 74 72 65 |force_st|ring(tre|
|00004fb0| 65 5f 65 76 61 6c 28 74 | 72 65 65 2d 3e 6c 6e 6f |e_eval(t|ree->lno|
|00004fc0| 64 65 29 29 3b 0a 58 09 | 74 72 65 65 20 3d 20 74 |de));.X.|tree = t|
|00004fd0| 72 65 65 2d 3e 72 6e 6f | 64 65 3b 0a 58 09 64 65 |ree->rno|de;.X.de|
|00004fe0| 72 65 66 20 3d 20 30 3b | 0a 58 09 66 69 65 6c 64 |ref = 0;|.X.field|
|00004ff0| 5f 6e 75 6d 20 3d 20 2d | 31 3b 0a 58 09 69 66 20 |_num = -|1;.X.if |
|00005000| 28 74 72 65 65 20 3d 3d | 20 4e 55 4c 4c 29 20 7b |(tree ==| NULL) {|
|00005010| 0a 58 09 09 74 20 3d 20 | 6e 6f 64 65 30 5f 76 61 |.X..t = |node0_va|
|00005020| 6c 69 64 20 3f 20 66 69 | 65 6c 64 73 5f 61 72 72 |lid ? fi|elds_arr|
|00005030| 5b 30 5d 20 3a 20 2a 67 | 65 74 5f 66 69 65 6c 64 |[0] : *g|et_field|
|00005040| 28 30 2c 20 30 29 3b 0a | 58 09 09 6c 68 73 20 3d |(0, 0);.|X..lhs =|
|00005050| 20 26 66 69 65 6c 64 73 | 5f 61 72 72 5b 30 5d 3b | &fields|_arr[0];|
|00005060| 0a 58 09 09 66 69 65 6c | 64 5f 6e 75 6d 20 3d 20 |.X..fiel|d_num = |
|00005070| 30 3b 0a 58 09 09 64 65 | 72 65 66 20 3d 20 74 3b |0;.X..de|ref = t;|
|00005080| 0a 58 09 7d 20 65 6c 73 | 65 20 7b 0a 58 09 09 74 |.X.} els|e {.X..t|
|00005090| 20 3d 20 74 72 65 65 2d | 3e 6c 6e 6f 64 65 3b 0a | = tree-|>lnode;.|
|000050a0| 58 09 09 6c 68 73 20 3d | 20 67 65 74 5f 6c 68 73 |X..lhs =| get_lhs|
|000050b0| 28 74 2c 20 31 29 3b 0a | 58 09 09 74 20 3d 20 66 |(t, 1);.|X..t = f|
|000050c0| 6f 72 63 65 5f 73 74 72 | 69 6e 67 28 74 72 65 65 |orce_str|ing(tree|
|000050d0| 5f 65 76 61 6c 28 74 29 | 29 3b 0a 58 09 7d 0a 58 |_eval(t)|);.X.}.X|
|000050e0| 09 2f 2a 0a 58 09 20 2a | 20 63 72 65 61 74 65 20 |./*.X. *| create |
|000050f0| 61 20 70 72 69 76 61 74 | 65 20 63 6f 70 79 20 6f |a privat|e copy o|
|00005100| 66 20 74 68 65 20 73 74 | 72 69 6e 67 0a 58 09 20 |f the st|ring.X. |
|00005110| 2a 2f 0a 58 09 69 66 20 | 28 74 2d 3e 73 74 72 65 |*/.X.if |(t->stre|
|00005120| 66 20 3e 20 31 20 7c 7c | 20 28 74 2d 3e 66 6c 61 |f > 1 ||| (t->fla|
|00005130| 67 73 20 26 20 50 45 52 | 4d 29 29 20 7b 0a 58 09 |gs & PER|M)) {.X.|
|00005140| 09 73 61 76 65 66 6c 61 | 67 73 20 3d 20 74 2d 3e |.savefla|gs = t->|
|00005150| 66 6c 61 67 73 3b 0a 58 | 09 09 74 2d 3e 66 6c 61 |flags;.X|..t->fla|
|00005160| 67 73 20 26 3d 20 7e 4d | 41 4c 4c 4f 43 3b 0a 58 |gs &= ~M|ALLOC;.X|
|00005170| 09 09 74 6d 70 20 3d 20 | 64 75 70 6e 6f 64 65 28 |..tmp = |dupnode(|
|00005180| 74 29 3b 0a 58 09 09 74 | 2d 3e 66 6c 61 67 73 20 |t);.X..t|->flags |
|00005190| 3d 20 73 61 76 65 66 6c | 61 67 73 3b 0a 58 09 09 |= savefl|ags;.X..|
|000051a0| 64 6f 5f 64 65 72 65 66 | 28 29 3b 0a 58 09 09 74 |do_deref|();.X..t|
|000051b0| 20 3d 20 74 6d 70 3b 0a | 58 09 09 69 66 20 28 6c | = tmp;.|X..if (l|
|000051c0| 68 73 29 0a 58 09 09 09 | 2a 6c 68 73 20 3d 20 74 |hs).X...|*lhs = t|
|000051d0| 6d 70 3b 0a 58 09 7d 0a | 58 09 6c 61 73 74 62 75 |mp;.X.}.|X.lastbu|
|000051e0| 66 20 3d 20 74 2d 3e 73 | 74 70 74 72 3b 0a 58 09 |f = t->s|tptr;.X.|
|000051f0| 64 6f 20 7b 0a 58 09 09 | 69 66 20 28 72 65 5f 73 |do {.X..|if (re_s|
|00005200| 65 61 72 63 68 28 72 70 | 2c 20 74 2d 3e 73 74 70 |earch(rp|, t->stp|
|00005210| 74 72 2c 20 74 2d 3e 73 | 74 6c 65 6e 2c 20 73 65 |tr, t->s|tlen, se|
|00005220| 61 72 63 68 5f 73 74 61 | 72 74 2c 0a 58 09 09 20 |arch_sta|rt,.X.. |
|00005230| 20 20 20 74 2d 3e 73 74 | 6c 65 6e 2d 73 65 61 72 | t->st|len-sear|
|00005240| 63 68 5f 73 74 61 72 74 | 2c 20 26 72 65 72 65 67 |ch_start|, &rereg|
|00005250| 73 29 20 3d 3d 20 2d 31 | 0a 58 09 09 20 20 20 20 |s) == -1|.X.. |
|00005260| 7c 7c 20 72 65 72 65 67 | 73 2e 73 74 61 72 74 5b ||| rereg|s.start[|
|00005270| 30 5d 20 3d 3d 20 72 65 | 72 65 67 73 2e 65 6e 64 |0] == re|regs.end|
|00005280| 5b 30 5d 29 0a 58 09 09 | 09 62 72 65 61 6b 3b 0a |[0]).X..|.break;.|
|00005290| 58 09 09 6d 61 74 63 68 | 65 73 2b 2b 3b 0a 58 0a |X..match|es++;.X.|
|000052a0| 58 09 09 2f 2a 0a 58 09 | 09 20 2a 20 66 69 72 73 |X../*.X.|. * firs|
|000052b0| 74 2c 20 6d 61 6b 65 20 | 61 20 70 61 73 73 20 74 |t, make |a pass t|
|000052c0| 68 72 6f 75 67 68 20 74 | 68 65 20 73 75 62 2e 20 |hrough t|he sub. |
|000052d0| 70 61 74 74 65 72 6e 2c | 20 74 6f 20 63 61 6c 63 |pattern,| to calc|
|000052e0| 75 6c 61 74 65 0a 58 09 | 09 20 2a 20 74 68 65 20 |ulate.X.|. * the |
|000052f0| 6c 65 6e 67 74 68 20 6f | 66 20 74 68 65 20 73 74 |length o|f the st|
|00005300| 72 69 6e 67 20 61 66 74 | 65 72 20 73 75 62 73 74 |ring aft|er subst|
|00005310| 69 74 75 74 69 6f 6e 20 | 0a 58 09 09 20 2a 2f 0a |itution |.X.. */.|
|00005320| 58 09 09 6d 61 74 63 68 | 5f 6c 65 6e 67 74 68 20 |X..match|_length |
|00005330| 3d 20 72 65 72 65 67 73 | 2e 65 6e 64 5b 30 5d 20 |= reregs|.end[0] |
|00005340| 2d 20 72 65 72 65 67 73 | 2e 73 74 61 72 74 5b 30 |- reregs|.start[0|
|00005350| 5d 3b 0a 58 09 09 6c 65 | 6e 20 3d 20 74 2d 3e 73 |];.X..le|n = t->s|
|00005360| 74 6c 65 6e 20 2d 20 6d | 61 74 63 68 5f 6c 65 6e |tlen - m|atch_len|
|00005370| 67 74 68 3b 0a 58 09 09 | 66 6f 72 20 28 73 63 61 |gth;.X..|for (sca|
|00005380| 6e 20 3d 20 73 2d 3e 73 | 74 70 74 72 3b 20 73 63 |n = s->s|tptr; sc|
|00005390| 61 6e 20 3c 20 73 2d 3e | 73 74 70 74 72 20 2b 20 |an < s->|stptr + |
|000053a0| 73 2d 3e 73 74 6c 65 6e | 3b 20 73 63 61 6e 2b 2b |s->stlen|; scan++|
|000053b0| 29 0a 58 09 09 09 69 66 | 20 28 2a 73 63 61 6e 20 |).X...if| (*scan |
|000053c0| 3d 3d 20 27 26 27 29 0a | 58 09 09 09 09 6c 65 6e |== '&').|X....len|
|000053d0| 20 2b 3d 20 6d 61 74 63 | 68 5f 6c 65 6e 67 74 68 | += matc|h_length|
|000053e0| 3b 0a 58 09 09 09 65 6c | 73 65 20 69 66 20 28 2a |;.X...el|se if (*|
|000053f0| 73 63 61 6e 20 3d 3d 20 | 27 5c 5c 27 20 26 26 20 |scan == |'\\' && |
|00005400| 2a 28 73 63 61 6e 2b 31 | 29 20 3d 3d 20 27 26 27 |*(scan+1|) == '&'|
|00005410| 29 20 7b 0a 58 09 09 09 | 09 73 63 61 6e 2b 2b 3b |) {.X...|.scan++;|
|00005420| 0a 58 09 09 09 09 6c 65 | 6e 2b 2b 3b 0a 58 09 09 |.X....le|n++;.X..|
|00005430| 09 7d 20 65 6c 73 65 0a | 58 09 09 09 09 6c 65 6e |.} else.|X....len|
|00005440| 2b 2b 3b 0a 58 09 09 65 | 6d 61 6c 6c 6f 63 28 62 |++;.X..e|malloc(b|
|00005450| 75 66 2c 20 63 68 61 72 | 20 2a 2c 20 6c 65 6e 20 |uf, char| *, len |
|00005460| 2b 20 31 2c 20 22 64 6f | 5f 73 75 62 22 29 3b 0a |+ 1, "do|_sub");.|
|00005470| 58 09 09 62 70 20 3d 20 | 62 75 66 3b 0a 58 0a 58 |X..bp = |buf;.X.X|
|00005480| 09 09 2f 2a 0a 58 09 09 | 20 2a 20 6e 6f 77 2c 20 |../*.X..| * now, |
|00005490| 63 72 65 61 74 65 20 74 | 68 65 20 72 65 73 75 6c |create t|he resul|
|000054a0| 74 2c 20 63 6f 70 79 69 | 6e 67 20 69 6e 20 70 61 |t, copyi|ng in pa|
|000054b0| 72 74 73 20 6f 66 20 74 | 68 65 20 6f 72 69 67 69 |rts of t|he origi|
|000054c0| 6e 61 6c 0a 58 09 09 20 | 2a 20 73 74 72 69 6e 67 |nal.X.. |* string|
|000054d0| 20 0a 58 09 09 20 2a 2f | 0a 58 09 09 66 6f 72 20 | .X.. */|.X..for |
|000054e0| 28 73 63 61 6e 20 3d 20 | 74 2d 3e 73 74 70 74 72 |(scan = |t->stptr|
|000054f0| 3b 20 73 63 61 6e 20 3c | 20 74 2d 3e 73 74 70 74 |; scan <| t->stpt|
|00005500| 72 20 2b 20 72 65 72 65 | 67 73 2e 73 74 61 72 74 |r + rere|gs.start|
|00005510| 5b 30 5d 3b 20 73 63 61 | 6e 2b 2b 29 0a 58 09 09 |[0]; sca|n++).X..|
|00005520| 09 2a 62 70 2b 2b 20 3d | 20 2a 73 63 61 6e 3b 0a |.*bp++ =| *scan;.|
|00005530| 58 09 09 66 6f 72 20 28 | 73 63 61 6e 20 3d 20 73 |X..for (|scan = s|
|00005540| 2d 3e 73 74 70 74 72 3b | 20 73 63 61 6e 20 3c 20 |->stptr;| scan < |
|00005550| 73 2d 3e 73 74 70 74 72 | 20 2b 20 73 2d 3e 73 74 |s->stptr| + s->st|
|00005560| 6c 65 6e 3b 20 73 63 61 | 6e 2b 2b 29 0a 58 09 09 |len; sca|n++).X..|
|00005570| 09 69 66 20 28 2a 73 63 | 61 6e 20 3d 3d 20 27 26 |.if (*sc|an == '&|
|00005580| 27 29 0a 58 09 09 09 09 | 66 6f 72 20 28 63 70 20 |').X....|for (cp |
|00005590| 3d 20 74 2d 3e 73 74 70 | 74 72 20 2b 20 72 65 72 |= t->stp|tr + rer|
|000055a0| 65 67 73 2e 73 74 61 72 | 74 5b 30 5d 3b 0a 58 09 |egs.star|t[0];.X.|
|000055b0| 09 09 09 20 20 20 20 20 | 63 70 20 3c 20 74 2d 3e |... |cp < t->|
|000055c0| 73 74 70 74 72 20 2b 20 | 72 65 72 65 67 73 2e 65 |stptr + |reregs.e|
|000055d0| 6e 64 5b 30 5d 3b 20 63 | 70 2b 2b 29 0a 58 09 09 |nd[0]; c|p++).X..|
|000055e0| 09 09 09 2a 62 70 2b 2b | 20 3d 20 2a 63 70 3b 0a |...*bp++| = *cp;.|
|000055f0| 58 09 09 09 65 6c 73 65 | 20 69 66 20 28 2a 73 63 |X...else| if (*sc|
|00005600| 61 6e 20 3d 3d 20 27 5c | 5c 27 20 26 26 20 2a 28 |an == '\|\' && *(|
|00005610| 73 63 61 6e 2b 31 29 20 | 3d 3d 20 27 26 27 29 20 |scan+1) |== '&') |
|00005620| 7b 0a 58 09 09 09 09 73 | 63 61 6e 2b 2b 3b 0a 58 |{.X....s|can++;.X|
|00005630| 09 09 09 09 2a 62 70 2b | 2b 20 3d 20 2a 73 63 61 |....*bp+|+ = *sca|
|00005640| 6e 3b 0a 58 09 09 09 7d | 20 65 6c 73 65 0a 58 09 |n;.X...}| else.X.|
|00005650| 09 09 09 2a 62 70 2b 2b | 20 3d 20 2a 73 63 61 6e |...*bp++| = *scan|
|00005660| 3b 0a 58 09 09 73 65 61 | 72 63 68 5f 73 74 61 72 |;.X..sea|rch_star|
|00005670| 74 20 3d 20 62 70 20 2d | 20 62 75 66 3b 0a 58 09 |t = bp -| buf;.X.|
|00005680| 09 66 6f 72 20 28 73 63 | 61 6e 20 3d 20 74 2d 3e |.for (sc|an = t->|
|00005690| 73 74 70 74 72 20 2b 20 | 72 65 72 65 67 73 2e 65 |stptr + |reregs.e|
|000056a0| 6e 64 5b 30 5d 3b 0a 58 | 09 09 20 20 20 20 20 73 |nd[0];.X|.. s|
|000056b0| 63 61 6e 20 3c 20 74 2d | 3e 73 74 70 74 72 20 2b |can < t-|>stptr +|
|000056c0| 20 74 2d 3e 73 74 6c 65 | 6e 3b 20 73 63 61 6e 2b | t->stle|n; scan+|
|000056d0| 2b 29 0a 58 09 09 09 2a | 62 70 2b 2b 20 3d 20 2a |+).X...*|bp++ = *|
|000056e0| 73 63 61 6e 3b 0a 58 09 | 09 2a 62 70 20 3d 20 27 |scan;.X.|.*bp = '|
|000056f0| 5c 30 27 3b 0a 58 09 09 | 66 72 65 65 28 6c 61 73 |\0';.X..|free(las|
|00005700| 74 62 75 66 29 3b 0a 58 | 09 09 74 2d 3e 73 74 70 |tbuf);.X|..t->stp|
|00005710| 74 72 20 3d 20 62 75 66 | 3b 0a 58 09 09 6c 61 73 |tr = buf|;.X..las|
|00005720| 74 62 75 66 20 3d 20 62 | 75 66 3b 0a 58 09 09 74 |tbuf = b|uf;.X..t|
|00005730| 2d 3e 73 74 6c 65 6e 20 | 3d 20 6c 65 6e 3b 0a 58 |->stlen |= len;.X|
|00005740| 09 7d 20 77 68 69 6c 65 | 20 28 67 6c 6f 62 61 6c |.} while| (global|
|00005750| 20 26 26 20 73 65 61 72 | 63 68 5f 73 74 61 72 74 | && sear|ch_start|
|00005760| 20 3c 20 74 2d 3e 73 74 | 6c 65 6e 29 3b 0a 58 0a | < t->st|len);.X.|
|00005770| 58 09 66 72 65 65 5f 74 | 65 6d 70 28 73 29 3b 0a |X.free_t|emp(s);.|
|00005780| 58 09 69 66 20 28 6e 65 | 65 64 5f 74 6f 5f 66 72 |X.if (ne|ed_to_fr|
|00005790| 65 65 29 20 7b 0a 58 09 | 09 66 72 65 65 28 72 70 |ee) {.X.|.free(rp|
|000057a0| 2d 3e 62 75 66 66 65 72 | 29 3b 0a 58 09 09 66 72 |->buffer|);.X..fr|
|000057b0| 65 65 28 72 70 2d 3e 66 | 61 73 74 6d 61 70 29 3b |ee(rp->f|astmap);|
|000057c0| 0a 58 09 09 66 72 65 65 | 28 28 63 68 61 72 20 2a |.X..free|((char *|
|000057d0| 29 20 72 70 29 3b 0a 58 | 09 7d 0a 58 09 69 66 20 |) rp);.X|.}.X.if |
|000057e0| 28 6d 61 74 63 68 65 73 | 20 3e 20 30 29 20 7b 0a |(matches| > 0) {.|
|000057f0| 58 09 09 69 66 20 28 66 | 69 65 6c 64 5f 6e 75 6d |X..if (f|ield_num|
|00005800| 20 3d 3d 20 30 29 0a 58 | 09 09 09 73 65 74 5f 72 | == 0).X|...set_r|
|00005810| 65 63 6f 72 64 28 66 69 | 65 6c 64 73 5f 61 72 72 |ecord(fi|elds_arr|
|00005820| 5b 30 5d 2d 3e 73 74 70 | 74 72 2c 20 66 69 65 6c |[0]->stp|tr, fiel|
|00005830| 64 73 5f 61 72 72 5b 30 | 5d 2d 3e 73 74 6c 65 6e |ds_arr[0|]->stlen|
|00005840| 29 3b 0a 58 09 09 74 2d | 3e 66 6c 61 67 73 20 26 |);.X..t-|>flags &|
|00005850| 3d 20 7e 28 4e 55 4d 7c | 4e 55 4d 45 52 49 43 29 |= ~(NUM||NUMERIC)|
|00005860| 3b 0a 58 09 7d 0a 58 09 | 66 69 65 6c 64 5f 6e 75 |;.X.}.X.|field_nu|
|00005870| 6d 20 3d 20 2d 31 3b 0a | 58 09 72 65 74 75 72 6e |m = -1;.|X.return|
|00005880| 20 74 6d 70 5f 6e 75 6d | 62 65 72 28 28 41 57 4b | tmp_num|ber((AWK|
|00005890| 4e 55 4d 29 20 6d 61 74 | 63 68 65 73 29 3b 0a 58 |NUM) mat|ches);.X|
|000058a0| 7d 0a 58 0a 58 4e 4f 44 | 45 20 2a 0a 58 64 6f 5f |}.X.XNOD|E *.Xdo_|
|000058b0| 67 73 75 62 28 74 72 65 | 65 29 0a 58 4e 4f 44 45 |gsub(tre|e).XNODE|
|000058c0| 20 2a 74 72 65 65 3b 0a | 58 7b 0a 58 09 72 65 74 | *tree;.|X{.X.ret|
|000058d0| 75 72 6e 20 73 75 62 5f | 63 6f 6d 6d 6f 6e 28 74 |urn sub_|common(t|
|000058e0| 72 65 65 2c 20 31 29 3b | 0a 58 7d 0a 58 0a 58 4e |ree, 1);|.X}.X.XN|
|000058f0| 4f 44 45 20 2a 0a 58 64 | 6f 5f 73 75 62 28 74 72 |ODE *.Xd|o_sub(tr|
|00005900| 65 65 29 0a 58 4e 4f 44 | 45 20 2a 74 72 65 65 3b |ee).XNOD|E *tree;|
|00005910| 0a 58 7b 0a 58 09 72 65 | 74 75 72 6e 20 73 75 62 |.X{.X.re|turn sub|
|00005920| 5f 63 6f 6d 6d 6f 6e 28 | 74 72 65 65 2c 20 30 29 |_common(|tree, 0)|
|00005930| 3b 0a 58 7d 0a 58 0a 45 | 4e 44 5f 4f 46 5f 46 49 |;.X}.X.E|ND_OF_FI|
|00005940| 4c 45 0a 20 20 69 66 20 | 74 65 73 74 20 32 30 36 |LE. if |test 206|
|00005950| 35 39 20 2d 6e 65 20 60 | 77 63 20 2d 63 20 3c 27 |59 -ne `|wc -c <'|
|00005960| 2e 2f 62 75 69 6c 74 69 | 6e 2e 63 27 60 3b 20 74 |./builti|n.c'`; t|
|00005970| 68 65 6e 0a 20 20 20 20 | 65 63 68 6f 20 73 68 61 |hen. |echo sha|
|00005980| 72 3a 20 5c 22 27 2e 2f | 62 75 69 6c 74 69 6e 2e |r: \"'./|builtin.|
|00005990| 63 27 5c 22 20 75 6e 70 | 61 63 6b 65 64 20 77 69 |c'\" unp|acked wi|
|000059a0| 74 68 20 77 72 6f 6e 67 | 20 73 69 7a 65 21 0a 20 |th wrong| size!. |
|000059b0| 20 66 69 0a 20 20 23 20 | 65 6e 64 20 6f 66 20 27 | fi. # |end of '|
|000059c0| 2e 2f 62 75 69 6c 74 69 | 6e 2e 63 27 0a 66 69 0a |./builti|n.c'.fi.|
|000059d0| 69 66 20 74 65 73 74 20 | 2d 66 20 27 2e 2f 65 76 |if test |-f './ev|
|000059e0| 61 6c 2e 63 27 20 2d 61 | 20 22 24 7b 31 7d 22 20 |al.c' -a| "${1}" |
|000059f0| 21 3d 20 22 2d 63 22 20 | 3b 20 74 68 65 6e 20 0a |!= "-c" |; then .|
|00005a00| 20 20 65 63 68 6f 20 73 | 68 61 72 3a 20 57 69 6c | echo s|har: Wil|
|00005a10| 6c 20 6e 6f 74 20 63 6c | 6f 62 62 65 72 20 65 78 |l not cl|obber ex|
|00005a20| 69 73 74 69 6e 67 20 66 | 69 6c 65 20 5c 22 27 2e |isting f|ile \"'.|
|00005a30| 2f 65 76 61 6c 2e 63 27 | 5c 22 0a 65 6c 73 65 0a |/eval.c'|\".else.|
|00005a40| 20 20 65 63 68 6f 20 73 | 68 61 72 3a 20 45 78 74 | echo s|har: Ext|
|00005a50| 72 61 63 74 69 6e 67 20 | 5c 22 27 2e 2f 65 76 61 |racting |\"'./eva|
|00005a60| 6c 2e 63 27 5c 22 20 5c | 28 32 39 35 35 30 20 63 |l.c'\" \|(29550 c|
|00005a70| 68 61 72 61 63 74 65 72 | 73 5c 29 0a 20 20 73 65 |haracter|s\). se|
|00005a80| 64 20 22 73 2f 5e 58 2f | 2f 22 20 3e 27 2e 2f 65 |d "s/^X/|/" >'./e|
|00005a90| 76 61 6c 2e 63 27 20 3c | 3c 27 45 4e 44 5f 4f 46 |val.c' <|<'END_OF|
|00005aa0| 5f 46 49 4c 45 27 0a 58 | 2f 2a 0a 58 20 2a 20 65 |_FILE'.X|/*.X * e|
|00005ab0| 76 61 6c 2e 63 20 2d 20 | 67 61 77 6b 20 70 61 72 |val.c - |gawk par|
|00005ac0| 73 65 20 74 72 65 65 20 | 69 6e 74 65 72 70 72 65 |se tree |interpre|
|00005ad0| 74 65 72 20 0a 58 20 2a | 2f 0a 58 0a 58 2f 2a 20 |ter .X *|/.X.X/* |
|00005ae0| 0a 58 20 2a 20 43 6f 70 | 79 72 69 67 68 74 20 28 |.X * Cop|yright (|
|00005af0| 43 29 20 31 39 38 36 2c | 20 31 39 38 38 2c 20 31 |C) 1986,| 1988, 1|
|00005b00| 39 38 39 20 74 68 65 20 | 46 72 65 65 20 53 6f 66 |989 the |Free Sof|
|00005b10| 74 77 61 72 65 20 46 6f | 75 6e 64 61 74 69 6f 6e |tware Fo|undation|
|00005b20| 2c 20 49 6e 63 2e 0a 58 | 20 2a 20 0a 58 20 2a 20 |, Inc..X| * .X * |
|00005b30| 54 68 69 73 20 66 69 6c | 65 20 69 73 20 70 61 72 |This fil|e is par|
|00005b40| 74 20 6f 66 20 47 41 57 | 4b 2c 20 74 68 65 20 47 |t of GAW|K, the G|
|00005b50| 4e 55 20 69 6d 70 6c 65 | 6d 65 6e 74 61 74 69 6f |NU imple|mentatio|
|00005b60| 6e 20 6f 66 20 74 68 65 | 0a 58 20 2a 20 41 57 4b |n of the|.X * AWK|
|00005b70| 20 50 72 6f 67 61 6d 6d | 69 6e 67 20 4c 61 6e 67 | Progamm|ing Lang|
|00005b80| 75 61 67 65 2e 0a 58 20 | 2a 20 0a 58 20 2a 20 47 |uage..X |* .X * G|
|00005b90| 41 57 4b 20 69 73 20 66 | 72 65 65 20 73 6f 66 74 |AWK is f|ree soft|
|00005ba0| 77 61 72 65 3b 20 79 6f | 75 20 63 61 6e 20 72 65 |ware; yo|u can re|
|00005bb0| 64 69 73 74 72 69 62 75 | 74 65 20 69 74 20 61 6e |distribu|te it an|
|00005bc0| 64 2f 6f 72 20 6d 6f 64 | 69 66 79 0a 58 20 2a 20 |d/or mod|ify.X * |
|00005bd0| 69 74 20 75 6e 64 65 72 | 20 74 68 65 20 74 65 72 |it under| the ter|
|00005be0| 6d 73 20 6f 66 20 74 68 | 65 20 47 4e 55 20 47 65 |ms of th|e GNU Ge|
|00005bf0| 6e 65 72 61 6c 20 50 75 | 62 6c 69 63 20 4c 69 63 |neral Pu|blic Lic|
|00005c00| 65 6e 73 65 20 61 73 20 | 70 75 62 6c 69 73 68 65 |ense as |publishe|
|00005c10| 64 20 62 79 0a 58 20 2a | 20 74 68 65 20 46 72 65 |d by.X *| the Fre|
|00005c20| 65 20 53 6f 66 74 77 61 | 72 65 20 46 6f 75 6e 64 |e Softwa|re Found|
|00005c30| 61 74 69 6f 6e 3b 20 65 | 69 74 68 65 72 20 76 65 |ation; e|ither ve|
|00005c40| 72 73 69 6f 6e 20 31 2c | 20 6f 72 20 28 61 74 20 |rsion 1,| or (at |
|00005c50| 79 6f 75 72 20 6f 70 74 | 69 6f 6e 29 0a 58 20 2a |your opt|ion).X *|
|00005c60| 20 61 6e 79 20 6c 61 74 | 65 72 20 76 65 72 73 69 | any lat|er versi|
|00005c70| 6f 6e 2e 0a 58 20 2a 20 | 0a 58 20 2a 20 47 41 57 |on..X * |.X * GAW|
|00005c80| 4b 20 69 73 20 64 69 73 | 74 72 69 62 75 74 65 64 |K is dis|tributed|
|00005c90| 20 69 6e 20 74 68 65 20 | 68 6f 70 65 20 74 68 61 | in the |hope tha|
|00005ca0| 74 20 69 74 20 77 69 6c | 6c 20 62 65 20 75 73 65 |t it wil|l be use|
|00005cb0| 66 75 6c 2c 0a 58 20 2a | 20 62 75 74 20 57 49 54 |ful,.X *| but WIT|
|00005cc0| 48 4f 55 54 20 41 4e 59 | 20 57 41 52 52 41 4e 54 |HOUT ANY| WARRANT|
|00005cd0| 59 3b 20 77 69 74 68 6f | 75 74 20 65 76 65 6e 20 |Y; witho|ut even |
|00005ce0| 74 68 65 20 69 6d 70 6c | 69 65 64 20 77 61 72 72 |the impl|ied warr|
|00005cf0| 61 6e 74 79 20 6f 66 0a | 58 20 2a 20 4d 45 52 43 |anty of.|X * MERC|
|00005d00| 48 41 4e 54 41 42 49 4c | 49 54 59 20 6f 72 20 46 |HANTABIL|ITY or F|
|00005d10| 49 54 4e 45 53 53 20 46 | 4f 52 20 41 20 50 41 52 |ITNESS F|OR A PAR|
|00005d20| 54 49 43 55 4c 41 52 20 | 50 55 52 50 4f 53 45 2e |TICULAR |PURPOSE.|
|00005d30| 20 20 53 65 65 20 74 68 | 65 0a 58 20 2a 20 47 4e | See th|e.X * GN|
|00005d40| 55 20 47 65 6e 65 72 61 | 6c 20 50 75 62 6c 69 63 |U Genera|l Public|
|00005d50| 20 4c 69 63 65 6e 73 65 | 20 66 6f 72 20 6d 6f 72 | License| for mor|
|00005d60| 65 20 64 65 74 61 69 6c | 73 2e 0a 58 20 2a 20 0a |e detail|s..X * .|
|00005d70| 58 20 2a 20 59 6f 75 20 | 73 68 6f 75 6c 64 20 68 |X * You |should h|
|00005d80| 61 76 65 20 72 65 63 65 | 69 76 65 64 20 61 20 63 |ave rece|ived a c|
|00005d90| 6f 70 79 20 6f 66 20 74 | 68 65 20 47 4e 55 20 47 |opy of t|he GNU G|
|00005da0| 65 6e 65 72 61 6c 20 50 | 75 62 6c 69 63 20 4c 69 |eneral P|ublic Li|
|00005db0| 63 65 6e 73 65 0a 58 20 | 2a 20 61 6c 6f 6e 67 20 |cense.X |* along |
|00005dc0| 77 69 74 68 20 47 41 57 | 4b 3b 20 73 65 65 20 74 |with GAW|K; see t|
|00005dd0| 68 65 20 66 69 6c 65 20 | 43 4f 50 59 49 4e 47 2e |he file |COPYING.|
|00005de0| 20 20 49 66 20 6e 6f 74 | 2c 20 77 72 69 74 65 20 | If not|, write |
|00005df0| 74 6f 0a 58 20 2a 20 74 | 68 65 20 46 72 65 65 20 |to.X * t|he Free |
|00005e00| 53 6f 66 74 77 61 72 65 | 20 46 6f 75 6e 64 61 74 |Software| Foundat|
|00005e10| 69 6f 6e 2c 20 36 37 35 | 20 4d 61 73 73 20 41 76 |ion, 675| Mass Av|
|00005e20| 65 2c 20 43 61 6d 62 72 | 69 64 67 65 2c 20 4d 41 |e, Cambr|idge, MA|
|00005e30| 20 30 32 31 33 39 2c 20 | 55 53 41 2e 0a 58 20 2a | 02139, |USA..X *|
|00005e40| 2f 0a 58 0a 58 23 69 6e | 63 6c 75 64 65 20 22 61 |/.X.X#in|clude "a|
|00005e50| 77 6b 2e 68 22 0a 58 0a | 58 65 78 74 65 72 6e 20 |wk.h".X.|Xextern |
|00005e60| 76 6f 69 64 20 64 6f 5f | 70 72 69 6e 74 28 29 3b |void do_|print();|
|00005e70| 0a 58 65 78 74 65 72 6e | 20 76 6f 69 64 20 64 6f |.Xextern| void do|
|00005e80| 5f 70 72 69 6e 74 66 28 | 29 3b 0a 58 65 78 74 65 |_printf(|);.Xexte|
|00005e90| 72 6e 20 4e 4f 44 45 20 | 2a 64 6f 5f 6d 61 74 63 |rn NODE |*do_matc|
|00005ea0| 68 28 29 3b 0a 58 65 78 | 74 65 72 6e 20 4e 4f 44 |h();.Xex|tern NOD|
|00005eb0| 45 20 2a 64 6f 5f 73 75 | 62 28 29 3b 0a 58 65 78 |E *do_su|b();.Xex|
|00005ec0| 74 65 72 6e 20 4e 4f 44 | 45 20 2a 64 6f 5f 67 65 |tern NOD|E *do_ge|
|00005ed0| 74 6c 69 6e 65 28 29 3b | 0a 58 65 78 74 65 72 6e |tline();|.Xextern|
|00005ee0| 20 4e 4f 44 45 20 2a 63 | 6f 6e 63 61 74 5f 65 78 | NODE *c|oncat_ex|
|00005ef0| 70 28 29 3b 0a 58 65 78 | 74 65 72 6e 20 69 6e 74 |p();.Xex|tern int|
|00005f00| 20 69 6e 5f 61 72 72 61 | 79 28 29 3b 0a 58 65 78 | in_arra|y();.Xex|
|00005f10| 74 65 72 6e 20 76 6f 69 | 64 20 64 6f 5f 64 65 6c |tern voi|d do_del|
|00005f20| 65 74 65 28 29 3b 0a 58 | 65 78 74 65 72 6e 20 64 |ete();.X|extern d|
|00005f30| 6f 75 62 6c 65 20 70 6f | 77 28 29 3b 0a 58 0a 58 |ouble po|w();.X.X|
|00005f40| 73 74 61 74 69 63 20 69 | 6e 74 20 65 76 61 6c 5f |static i|nt eval_|
|00005f50| 63 6f 6e 64 69 74 69 6f | 6e 28 29 3b 0a 58 73 74 |conditio|n();.Xst|
|00005f60| 61 74 69 63 20 4e 4f 44 | 45 20 2a 6f 70 5f 61 73 |atic NOD|E *op_as|
|00005f70| 73 69 67 6e 28 29 3b 0a | 58 73 74 61 74 69 63 20 |sign();.|Xstatic |
|00005f80| 4e 4f 44 45 20 2a 66 75 | 6e 63 5f 63 61 6c 6c 28 |NODE *fu|nc_call(|
|00005f90| 29 3b 0a 58 73 74 61 74 | 69 63 20 4e 4f 44 45 20 |);.Xstat|ic NODE |
|00005fa0| 2a 6d 61 74 63 68 5f 6f | 70 28 29 3b 0a 58 0a 58 |*match_o|p();.X.X|
|00005fb0| 4e 4f 44 45 20 2a 5f 74 | 3b 09 09 2f 2a 20 75 73 |NODE *_t|;../* us|
|00005fc0| 65 64 20 61 73 20 61 20 | 74 65 6d 70 6f 72 61 72 |ed as a |temporar|
|00005fd0| 79 20 69 6e 20 6d 61 63 | 72 6f 73 20 2a 2f 0a 58 |y in mac|ros */.X|
|00005fe0| 23 69 66 64 65 66 20 4d | 53 44 4f 53 0a 58 64 6f |#ifdef M|SDOS.Xdo|
|00005ff0| 75 62 6c 65 20 5f 6d 73 | 63 35 31 62 75 67 3b 09 |uble _ms|c51bug;.|
|00006000| 2f 2a 20 74 6f 20 67 65 | 74 20 61 72 6f 75 6e 64 |/* to ge|t around|
|00006010| 20 61 20 62 75 67 20 69 | 6e 20 4d 53 43 20 35 2e | a bug i|n MSC 5.|
|00006020| 31 20 2a 2f 0a 58 23 65 | 6e 64 69 66 0a 58 4e 4f |1 */.X#e|ndif.XNO|
|00006030| 44 45 20 2a 72 65 74 5f | 6e 6f 64 65 3b 0a 58 0a |DE *ret_|node;.X.|
|00006040| 58 2f 2a 20 4d 6f 72 65 | 20 6f 66 20 74 68 61 74 |X/* More| of that|
|00006050| 20 64 65 62 75 67 67 69 | 6e 67 20 73 74 75 66 66 | debuggi|ng stuff|
|00006060| 20 2a 2f 0a 58 23 69 66 | 64 65 66 09 44 45 42 55 | */.X#if|def.DEBU|
|00006070| 47 0a 58 23 64 65 66 69 | 6e 65 20 44 42 47 5f 50 |G.X#defi|ne DBG_P|
|00006080| 28 58 29 20 70 72 69 6e | 74 5f 64 65 62 75 67 20 |(X) prin|t_debug |
|00006090| 58 0a 58 23 65 6c 73 65 | 0a 58 23 64 65 66 69 6e |X.X#else|.X#defin|
|000060a0| 65 20 44 42 47 5f 50 28 | 58 29 0a 58 23 65 6e 64 |e DBG_P(|X).X#end|
|000060b0| 69 66 0a 58 0a 58 2f 2a | 20 4d 61 63 72 6f 73 20 |if.X.X/*| Macros |
|000060c0| 61 6e 64 20 76 61 72 69 | 61 62 6c 65 73 20 74 6f |and vari|ables to|
|000060d0| 20 73 61 76 65 20 61 6e | 64 20 72 65 73 74 6f 72 | save an|d restor|
|000060e0| 65 20 66 75 6e 63 74 69 | 6f 6e 20 61 6e 64 20 6c |e functi|on and l|
|000060f0| 6f 6f 70 20 62 69 6e 64 | 69 6e 67 73 20 2a 2f 0a |oop bind|ings */.|
|00006100| 58 2f 2a 0a 58 20 2a 20 | 74 68 65 20 76 61 6c 20 |X/*.X * |the val |
|00006110| 76 61 72 69 61 62 6c 65 | 20 61 6c 6c 6f 77 73 20 |variable| allows |
|00006120| 72 65 74 75 72 6e 2f 63 | 6f 6e 74 69 6e 75 65 2f |return/c|ontinue/|
|00006130| 62 72 65 61 6b 2d 6f 75 | 74 2d 6f 66 2d 63 6f 6e |break-ou|t-of-con|
|00006140| 74 65 78 74 20 74 6f 20 | 62 65 0a 58 20 2a 20 63 |text to |be.X * c|
|00006150| 61 75 67 68 74 20 61 6e | 64 20 64 69 61 67 6e 6f |aught an|d diagno|
|00006160| 73 65 64 0a 58 20 2a 2f | 0a 58 23 64 65 66 69 6e |sed.X */|.X#defin|
|00006170| 65 20 50 55 53 48 5f 42 | 49 4e 44 49 4e 47 28 73 |e PUSH_B|INDING(s|
|00006180| 74 61 63 6b 2c 20 78 2c | 20 76 61 6c 29 20 28 6d |tack, x,| val) (m|
|00006190| 65 6d 63 70 79 20 28 28 | 63 68 61 72 20 2a 29 28 |emcpy ((|char *)(|
|000061a0| 73 74 61 63 6b 29 2c 20 | 28 63 68 61 72 20 2a 29 |stack), |(char *)|
|000061b0| 28 78 29 2c 20 73 69 7a | 65 6f 66 20 28 6a 6d 70 |(x), siz|eof (jmp|
|000061c0| 5f 62 75 66 29 29 2c 20 | 76 61 6c 2b 2b 29 0a 58 |_buf)), |val++).X|
|000061d0| 23 64 65 66 69 6e 65 20 | 52 45 53 54 4f 52 45 5f |#define |RESTORE_|
|000061e0| 42 49 4e 44 49 4e 47 28 | 73 74 61 63 6b 2c 20 78 |BINDING(|stack, x|
|000061f0| 2c 20 76 61 6c 29 20 28 | 6d 65 6d 63 70 79 20 28 |, val) (|memcpy (|
|00006200| 28 63 68 61 72 20 2a 29 | 28 78 29 2c 20 28 63 68 |(char *)|(x), (ch|
|00006210| 61 72 20 2a 29 28 73 74 | 61 63 6b 29 2c 20 73 69 |ar *)(st|ack), si|
|00006220| 7a 65 6f 66 20 28 6a 6d | 70 5f 62 75 66 29 29 2c |zeof (jm|p_buf)),|
|00006230| 20 76 61 6c 2d 2d 29 0a | 58 0a 58 73 74 61 74 69 | val--).|X.Xstati|
|00006240| 63 20 6a 6d 70 5f 62 75 | 66 20 6c 6f 6f 70 5f 74 |c jmp_bu|f loop_t|
|00006250| 61 67 3b 09 2f 2a 20 61 | 6c 77 61 79 73 20 74 68 |ag;./* a|lways th|
|00006260| 65 20 63 75 72 72 65 6e | 74 20 62 69 6e 64 69 6e |e curren|t bindin|
|00006270| 67 20 2a 2f 0a 58 73 74 | 61 74 69 63 20 69 6e 74 |g */.Xst|atic int|
|00006280| 20 6c 6f 6f 70 5f 74 61 | 67 5f 76 61 6c 69 64 20 | loop_ta|g_valid |
|00006290| 3d 20 30 3b 09 2f 2a 20 | 6e 6f 6e 7a 65 72 6f 20 |= 0;./* |nonzero |
|000062a0| 77 68 65 6e 20 6c 6f 6f | 70 5f 74 61 67 20 76 61 |when loo|p_tag va|
|000062b0| 6c 69 64 20 2a 2f 0a 58 | 73 74 61 74 69 63 20 69 |lid */.X|static i|
|000062c0| 6e 74 20 66 75 6e 63 5f | 74 61 67 5f 76 61 6c 69 |nt func_|tag_vali|
|000062d0| 64 20 3d 20 30 3b 0a 58 | 73 74 61 74 69 63 20 6a |d = 0;.X|static j|
|000062e0| 6d 70 5f 62 75 66 20 66 | 75 6e 63 5f 74 61 67 3b |mp_buf f|unc_tag;|
|000062f0| 0a 58 65 78 74 65 72 6e | 20 69 6e 74 20 65 78 69 |.Xextern| int exi|
|00006300| 74 69 6e 67 2c 20 65 78 | 69 74 5f 76 61 6c 3b 0a |ting, ex|it_val;.|
|00006310| 58 0a 58 2f 2a 0a 58 20 | 2a 20 54 68 69 73 20 74 |X.X/*.X |* This t|
|00006320| 61 62 6c 65 20 69 73 20 | 75 73 65 64 20 62 79 20 |able is |used by |
|00006330| 74 68 65 20 72 65 67 65 | 78 70 20 72 6f 75 74 69 |the rege|xp routi|
|00006340| 6e 65 73 20 74 6f 20 64 | 6f 20 63 61 73 65 20 69 |nes to d|o case i|
|00006350| 6e 64 65 70 65 6e 64 61 | 6e 74 0a 58 20 2a 20 6d |ndependa|nt.X * m|
|00006360| 61 74 63 68 69 6e 67 2e | 20 42 61 73 69 63 61 6c |atching.| Basical|
|00006370| 6c 79 2c 20 65 76 65 72 | 79 20 61 73 63 69 69 20 |ly, ever|y ascii |
|00006380| 63 68 61 72 61 63 74 65 | 72 20 6d 61 70 73 20 74 |characte|r maps t|
|00006390| 6f 20 69 74 73 65 6c 66 | 2c 20 65 78 63 65 70 74 |o itself|, except|
|000063a0| 0a 58 20 2a 20 75 70 70 | 65 72 63 61 73 65 20 6c |.X * upp|ercase l|
|000063b0| 65 74 74 65 72 73 20 6d | 61 70 20 74 6f 20 6c 6f |etters m|ap to lo|
|000063c0| 77 65 72 20 63 61 73 65 | 20 6f 6e 65 73 2e 20 54 |wer case| ones. T|
|000063d0| 68 69 73 20 74 61 62 6c | 65 20 68 61 73 20 32 35 |his tabl|e has 25|
|000063e0| 36 0a 58 20 2a 20 65 6e | 74 72 69 65 73 2c 20 77 |6.X * en|tries, w|
|000063f0| 68 69 63 68 20 6d 61 79 | 20 62 65 20 6f 76 65 72 |hich may| be over|
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.