home *** CD-ROM | disk | FTP | other *** search
view JSON data
|
view as text
|
open on a Mac
|
open on a PC
This file was processed as: SHell self-extracting ARchive
(archive/shar).
You can browse this item here: part04
Confidence | Program | Detection | Match Type | Support
|
---|
100%
| dexvert
| SHell self-extracting ARchive (archive/shar)
| magic
| Supported |
1%
| dexvert
| Text File (text/txt)
| fallback
| Supported |
100%
| file
| ASCII text
| default
| |
100%
| checkBytes
| Printable ASCII
| default
| |
100%
| perlTextCheck
| Likely Text (Perl)
| default
| |
100%
| siegfried
| fmt/329 Shell Archive Format
| default
| |
100%
| detectItEasy
| Format: plain text[LF]
| default (weak)
|
|
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 4e 65 77 73 67 72 6f 75 | 70 73 3a 20 63 6f 6d 70 |Newsgrou|ps: comp|
|00000010| 2e 73 6f 75 72 63 65 73 | 2e 6d 69 73 63 0a 46 72 |.sources|.misc.Fr|
|00000020| 6f 6d 3a 20 62 79 72 6f | 6e 40 61 72 63 68 6f 6e |om: byro|n@archon|
|00000030| 65 2e 74 61 6d 75 2e 65 | 64 75 20 28 42 79 72 6f |e.tamu.e|du (Byro|
|00000040| 6e 20 52 61 6b 69 74 7a | 69 73 29 0a 53 75 62 6a |n Rakitz|is).Subj|
|00000050| 65 63 74 3a 20 20 76 33 | 30 69 30 32 37 3a 20 20 |ect: v3|0i027: |
|00000060| 72 63 20 2d 20 41 20 50 | 6c 61 6e 20 39 20 73 68 |rc - A P|lan 9 sh|
|00000070| 65 6c 6c 20 72 65 69 6d | 70 6c 65 6d 65 6e 74 61 |ell reim|plementa|
|00000080| 74 69 6f 6e 2c 20 76 31 | 2e 34 2c 20 50 61 72 74 |tion, v1|.4, Part|
|00000090| 30 34 2f 30 37 0a 4d 65 | 73 73 61 67 65 2d 49 44 |04/07.Me|ssage-ID|
|000000a0| 3a 20 3c 31 39 39 32 4d | 61 79 33 30 2e 30 33 31 |: <1992M|ay30.031|
|000000b0| 36 35 33 2e 35 34 35 36 | 40 73 70 61 72 6b 79 2e |653.5456|@sparky.|
|000000c0| 69 6d 64 2e 73 74 65 72 | 6c 69 6e 67 2e 63 6f 6d |imd.ster|ling.com|
|000000d0| 3e 0a 58 2d 4d 64 34 2d | 53 69 67 6e 61 74 75 72 |>.X-Md4-|Signatur|
|000000e0| 65 3a 20 61 66 34 38 35 | 33 37 37 65 37 33 38 35 |e: af485|377e7385|
|000000f0| 39 36 61 64 38 61 31 66 | 63 66 61 62 39 32 61 33 |96ad8a1f|cfab92a3|
|00000100| 64 38 36 0a 44 61 74 65 | 3a 20 53 61 74 2c 20 33 |d86.Date|: Sat, 3|
|00000110| 30 20 4d 61 79 20 31 39 | 39 32 20 30 33 3a 31 36 |0 May 19|92 03:16|
|00000120| 3a 35 33 20 47 4d 54 0a | 41 70 70 72 6f 76 65 64 |:53 GMT.|Approved|
|00000130| 3a 20 6b 65 6e 74 40 73 | 70 61 72 6b 79 2e 69 6d |: kent@s|parky.im|
|00000140| 64 2e 73 74 65 72 6c 69 | 6e 67 2e 63 6f 6d 0a 0a |d.sterli|ng.com..|
|00000150| 53 75 62 6d 69 74 74 65 | 64 2d 62 79 3a 20 62 79 |Submitte|d-by: by|
|00000160| 72 6f 6e 40 61 72 63 68 | 6f 6e 65 2e 74 61 6d 75 |ron@arch|one.tamu|
|00000170| 2e 65 64 75 20 28 42 79 | 72 6f 6e 20 52 61 6b 69 |.edu (By|ron Raki|
|00000180| 74 7a 69 73 29 0a 50 6f | 73 74 69 6e 67 2d 6e 75 |tzis).Po|sting-nu|
|00000190| 6d 62 65 72 3a 20 56 6f | 6c 75 6d 65 20 33 30 2c |mber: Vo|lume 30,|
|000001a0| 20 49 73 73 75 65 20 32 | 37 0a 41 72 63 68 69 76 | Issue 2|7.Archiv|
|000001b0| 65 2d 6e 61 6d 65 3a 20 | 72 63 2f 70 61 72 74 30 |e-name: |rc/part0|
|000001c0| 34 0a 45 6e 76 69 72 6f | 6e 6d 65 6e 74 3a 20 55 |4.Enviro|nment: U|
|000001d0| 4e 49 58 0a 53 75 70 65 | 72 73 65 64 65 73 3a 20 |NIX.Supe|rsedes: |
|000001e0| 72 63 3a 20 56 6f 6c 75 | 6d 65 20 32 33 2c 20 49 |rc: Volu|me 23, I|
|000001f0| 73 73 75 65 20 36 31 2d | 36 36 0a 0a 23 21 20 2f |ssue 61-|66..#! /|
|00000200| 62 69 6e 2f 73 68 0a 23 | 20 54 68 69 73 20 69 73 |bin/sh.#| This is|
|00000210| 20 61 20 73 68 65 6c 6c | 20 61 72 63 68 69 76 65 | a shell| archive|
|00000220| 2e 20 20 52 65 6d 6f 76 | 65 20 61 6e 79 74 68 69 |. Remov|e anythi|
|00000230| 6e 67 20 62 65 66 6f 72 | 65 20 74 68 69 73 20 6c |ng befor|e this l|
|00000240| 69 6e 65 2c 20 74 68 65 | 6e 20 66 65 65 64 20 69 |ine, the|n feed i|
|00000250| 74 0a 23 20 69 6e 74 6f | 20 61 20 73 68 65 6c 6c |t.# into| a shell|
|00000260| 20 76 69 61 20 22 73 68 | 20 66 69 6c 65 22 20 6f | via "sh| file" o|
|00000270| 72 20 73 69 6d 69 6c 61 | 72 2e 20 20 54 6f 20 6f |r simila|r. To o|
|00000280| 76 65 72 77 72 69 74 65 | 20 65 78 69 73 74 69 6e |verwrite| existin|
|00000290| 67 20 66 69 6c 65 73 2c | 0a 23 20 74 79 70 65 20 |g files,|.# type |
|000002a0| 22 73 68 20 66 69 6c 65 | 20 2d 63 22 2e 0a 23 20 |"sh file| -c"..# |
|000002b0| 54 68 65 20 74 6f 6f 6c | 20 74 68 61 74 20 67 65 |The tool| that ge|
|000002c0| 6e 65 72 61 74 65 64 20 | 74 68 69 73 20 61 70 70 |nerated |this app|
|000002d0| 65 61 72 65 64 20 69 6e | 20 74 68 65 20 63 6f 6d |eared in| the com|
|000002e0| 70 2e 73 6f 75 72 63 65 | 73 2e 75 6e 69 78 20 6e |p.source|s.unix n|
|000002f0| 65 77 73 67 72 6f 75 70 | 3b 0a 23 20 73 65 6e 64 |ewsgroup|;.# send|
|00000300| 20 6d 61 69 6c 20 74 6f | 20 63 6f 6d 70 2d 73 6f | mail to| comp-so|
|00000310| 75 72 63 65 73 2d 75 6e | 69 78 40 75 75 6e 65 74 |urces-un|ix@uunet|
|00000320| 2e 75 75 2e 6e 65 74 20 | 69 66 20 79 6f 75 20 77 |.uu.net |if you w|
|00000330| 61 6e 74 20 74 68 61 74 | 20 74 6f 6f 6c 2e 0a 23 |ant that| tool..#|
|00000340| 20 43 6f 6e 74 65 6e 74 | 73 3a 20 20 61 64 64 6f | Content|s: addo|
|00000350| 6e 2e 63 20 66 6f 6f 74 | 6f 62 61 72 2e 63 20 67 |n.c foot|obar.c g|
|00000360| 6c 6f 6d 2e 63 20 70 72 | 69 6e 74 2e 63 20 74 72 |lom.c pr|int.c tr|
|00000370| 69 70 2e 72 63 2e 75 75 | 20 77 61 6c 6b 2e 63 0a |ip.rc.uu| walk.c.|
|00000380| 23 20 57 72 61 70 70 65 | 64 20 62 79 20 6b 65 6e |# Wrappe|d by ken|
|00000390| 74 40 73 70 61 72 6b 79 | 20 6f 6e 20 46 72 69 20 |t@sparky| on Fri |
|000003a0| 4d 61 79 20 32 39 20 32 | 30 3a 35 35 3a 32 34 20 |May 29 2|0:55:24 |
|000003b0| 31 39 39 32 0a 50 41 54 | 48 3d 2f 62 69 6e 3a 2f |1992.PAT|H=/bin:/|
|000003c0| 75 73 72 2f 62 69 6e 3a | 2f 75 73 72 2f 75 63 62 |usr/bin:|/usr/ucb|
|000003d0| 20 3b 20 65 78 70 6f 72 | 74 20 50 41 54 48 0a 65 | ; expor|t PATH.e|
|000003e0| 63 68 6f 20 49 66 20 74 | 68 69 73 20 61 72 63 68 |cho If t|his arch|
|000003f0| 69 76 65 20 69 73 20 63 | 6f 6d 70 6c 65 74 65 2c |ive is c|omplete,|
|00000400| 20 79 6f 75 20 77 69 6c | 6c 20 73 65 65 20 74 68 | you wil|l see th|
|00000410| 65 20 66 6f 6c 6c 6f 77 | 69 6e 67 20 6d 65 73 73 |e follow|ing mess|
|00000420| 61 67 65 3a 0a 65 63 68 | 6f 20 27 20 20 20 20 20 |age:.ech|o ' |
|00000430| 20 20 20 20 20 22 73 68 | 61 72 3a 20 45 6e 64 20 | "sh|ar: End |
|00000440| 6f 66 20 61 72 63 68 69 | 76 65 20 34 20 28 6f 66 |of archi|ve 4 (of|
|00000450| 20 37 29 2e 22 27 0a 69 | 66 20 74 65 73 74 20 2d | 7)."'.i|f test -|
|00000460| 66 20 27 61 64 64 6f 6e | 2e 63 27 20 2d 61 20 22 |f 'addon|.c' -a "|
|00000470| 24 7b 31 7d 22 20 21 3d | 20 22 2d 63 22 20 3b 20 |${1}" !=| "-c" ; |
|00000480| 74 68 65 6e 20 0a 20 20 | 65 63 68 6f 20 73 68 61 |then . |echo sha|
|00000490| 72 3a 20 57 69 6c 6c 20 | 6e 6f 74 20 63 6c 6f 62 |r: Will |not clob|
|000004a0| 62 65 72 20 65 78 69 73 | 74 69 6e 67 20 66 69 6c |ber exis|ting fil|
|000004b0| 65 20 5c 22 27 61 64 64 | 6f 6e 2e 63 27 5c 22 0a |e \"'add|on.c'\".|
|000004c0| 65 6c 73 65 0a 20 20 65 | 63 68 6f 20 73 68 61 72 |else. e|cho shar|
|000004d0| 3a 20 45 78 74 72 61 63 | 74 69 6e 67 20 5c 22 27 |: Extrac|ting \"'|
|000004e0| 61 64 64 6f 6e 2e 63 27 | 5c 22 20 5c 28 33 35 30 |addon.c'|\" \(350|
|000004f0| 20 63 68 61 72 61 63 74 | 65 72 73 5c 29 0a 20 20 | charact|ers\). |
|00000500| 73 65 64 20 22 73 2f 5e | 58 2f 2f 22 20 3e 27 61 |sed "s/^|X//" >'a|
|00000510| 64 64 6f 6e 2e 63 27 20 | 3c 3c 27 45 4e 44 5f 4f |ddon.c' |<<'END_O|
|00000520| 46 5f 46 49 4c 45 27 0a | 58 2f 2a 0a 58 20 20 20 |F_FILE'.|X/*.X |
|00000530| 54 68 69 73 20 66 69 6c | 65 20 63 6f 6e 74 61 69 |This fil|e contai|
|00000540| 6e 73 20 74 68 65 20 69 | 6d 70 6c 65 6d 65 6e 74 |ns the i|mplement|
|00000550| 61 74 69 6f 6e 73 20 6f | 66 20 61 6e 79 20 6c 6f |ations o|f any lo|
|00000560| 63 61 6c 6c 79 20 64 65 | 66 69 6e 65 64 0a 58 20 |cally de|fined.X |
|00000570| 20 20 62 75 69 6c 74 69 | 6e 73 2e 0a 58 2a 2f 0a | builti|ns..X*/.|
|00000580| 58 0a 58 23 69 66 64 65 | 66 09 44 57 53 0a 58 0a |X.X#ifde|f.DWS.X.|
|00000590| 58 2f 2a 0a 58 20 20 20 | 54 68 69 73 20 69 73 20 |X/*.X |This is |
|000005a0| 77 68 61 74 20 44 61 76 | 69 44 20 53 61 6e 64 65 |what Dav|iD Sande|
|000005b0| 72 73 6f 6e 20 28 64 77 | 73 40 63 73 2e 77 69 73 |rson (dw|s@cs.wis|
|000005c0| 63 2e 65 64 75 29 20 75 | 73 65 73 2e 0a 58 2a 2f |c.edu) u|ses..X*/|
|000005d0| 0a 58 0a 58 23 69 6e 63 | 6c 75 64 65 20 3c 73 79 |.X.X#inc|lude <sy|
|000005e0| 73 2f 74 79 70 65 73 2e | 68 3e 0a 58 23 69 6e 63 |s/types.|h>.X#inc|
|000005f0| 6c 75 64 65 20 3c 73 79 | 73 2f 66 69 6c 65 2e 68 |lude <sy|s/file.h|
|00000600| 3e 0a 58 23 69 6e 63 6c | 75 64 65 20 3c 73 79 73 |>.X#incl|ude <sys|
|00000610| 2f 73 74 61 74 2e 68 3e | 0a 58 0a 58 23 69 6e 63 |/stat.h>|.X.X#inc|
|00000620| 6c 75 64 65 20 22 72 63 | 2e 68 22 09 09 2f 2a 20 |lude "rc|.h"../* |
|00000630| 66 6f 72 20 62 6f 6f 6c | 20 54 52 55 45 2c 20 46 |for bool| TRUE, F|
|00000640| 41 4c 53 45 20 2a 2f 0a | 58 23 69 6e 63 6c 75 64 |ALSE */.|X#includ|
|00000650| 65 20 22 61 64 64 6f 6e | 2e 68 22 0a 58 0a 58 23 |e "addon|.h".X.X#|
|00000660| 69 6e 63 6c 75 64 65 20 | 22 61 64 64 6f 6e 2f 61 |include |"addon/a|
|00000670| 63 63 65 73 73 2e 63 22 | 0a 58 23 69 6e 63 6c 75 |ccess.c"|.X#inclu|
|00000680| 64 65 20 22 61 64 64 6f | 6e 2f 74 65 73 74 2e 63 |de "addo|n/test.c|
|00000690| 22 0a 58 0a 58 23 65 6e | 64 69 66 0a 45 4e 44 5f |".X.X#en|dif.END_|
|000006a0| 4f 46 5f 46 49 4c 45 0a | 20 20 69 66 20 74 65 73 |OF_FILE.| if tes|
|000006b0| 74 20 33 35 30 20 2d 6e | 65 20 60 77 63 20 2d 63 |t 350 -n|e `wc -c|
|000006c0| 20 3c 27 61 64 64 6f 6e | 2e 63 27 60 3b 20 74 68 | <'addon|.c'`; th|
|000006d0| 65 6e 0a 20 20 20 20 65 | 63 68 6f 20 73 68 61 72 |en. e|cho shar|
|000006e0| 3a 20 5c 22 27 61 64 64 | 6f 6e 2e 63 27 5c 22 20 |: \"'add|on.c'\" |
|000006f0| 75 6e 70 61 63 6b 65 64 | 20 77 69 74 68 20 77 72 |unpacked| with wr|
|00000700| 6f 6e 67 20 73 69 7a 65 | 21 0a 20 20 66 69 0a 20 |ong size|!. fi. |
|00000710| 20 23 20 65 6e 64 20 6f | 66 20 27 61 64 64 6f 6e | # end o|f 'addon|
|00000720| 2e 63 27 0a 66 69 0a 69 | 66 20 74 65 73 74 20 2d |.c'.fi.i|f test -|
|00000730| 66 20 27 66 6f 6f 74 6f | 62 61 72 2e 63 27 20 2d |f 'footo|bar.c' -|
|00000740| 61 20 22 24 7b 31 7d 22 | 20 21 3d 20 22 2d 63 22 |a "${1}"| != "-c"|
|00000750| 20 3b 20 74 68 65 6e 20 | 0a 20 20 65 63 68 6f 20 | ; then |. echo |
|00000760| 73 68 61 72 3a 20 57 69 | 6c 6c 20 6e 6f 74 20 63 |shar: Wi|ll not c|
|00000770| 6c 6f 62 62 65 72 20 65 | 78 69 73 74 69 6e 67 20 |lobber e|xisting |
|00000780| 66 69 6c 65 20 5c 22 27 | 66 6f 6f 74 6f 62 61 72 |file \"'|footobar|
|00000790| 2e 63 27 5c 22 0a 65 6c | 73 65 0a 20 20 65 63 68 |.c'\".el|se. ech|
|000007a0| 6f 20 73 68 61 72 3a 20 | 45 78 74 72 61 63 74 69 |o shar: |Extracti|
|000007b0| 6e 67 20 5c 22 27 66 6f | 6f 74 6f 62 61 72 2e 63 |ng \"'fo|otobar.c|
|000007c0| 27 5c 22 20 5c 28 39 34 | 31 31 20 63 68 61 72 61 |'\" \(94|11 chara|
|000007d0| 63 74 65 72 73 5c 29 0a | 20 20 73 65 64 20 22 73 |cters\).| sed "s|
|000007e0| 2f 5e 58 2f 2f 22 20 3e | 27 66 6f 6f 74 6f 62 61 |/^X//" >|'footoba|
|000007f0| 72 2e 63 27 20 3c 3c 27 | 45 4e 44 5f 4f 46 5f 46 |r.c' <<'|END_OF_F|
|00000800| 49 4c 45 27 0a 58 2f 2a | 0a 58 20 20 20 66 6f 6f |ILE'.X/*|.X foo|
|00000810| 74 6f 62 61 72 2e 63 3a | 20 61 20 63 6f 6c 6c 65 |tobar.c:| a colle|
|00000820| 63 74 69 6f 6e 20 6f 66 | 20 66 75 6e 63 74 69 6f |ction of| functio|
|00000830| 6e 73 20 74 6f 20 63 6f | 6e 76 65 72 74 20 69 6e |ns to co|nvert in|
|00000840| 74 65 72 6e 61 6c 20 72 | 65 70 72 65 73 65 6e 74 |ternal r|epresent|
|00000850| 61 74 69 6f 6e 73 20 6f | 66 0a 58 20 20 20 76 61 |ations o|f.X va|
|00000860| 72 69 61 62 6c 65 73 20 | 61 6e 64 20 66 75 6e 63 |riables |and func|
|00000870| 74 69 6f 6e 73 20 74 6f | 20 65 78 74 65 72 6e 61 |tions to| externa|
|00000880| 6c 20 72 65 70 72 65 73 | 65 6e 74 61 74 69 6f 6e |l repres|entation|
|00000890| 73 2c 20 61 6e 64 20 76 | 69 63 65 20 76 65 72 73 |s, and v|ice vers|
|000008a0| 61 0a 58 2a 2f 0a 58 0a | 58 23 69 6e 63 6c 75 64 |a.X*/.X.|X#includ|
|000008b0| 65 20 22 72 63 2e 68 22 | 0a 58 0a 58 23 64 65 66 |e "rc.h"|.X.X#def|
|000008c0| 69 6e 65 20 46 53 43 48 | 41 52 20 27 5c 31 27 0a |ine FSCH|AR '\1'.|
|000008d0| 58 23 64 65 66 69 6e 65 | 20 46 53 53 54 52 49 4e |X#define| FSSTRIN|
|000008e0| 47 20 22 5c 31 22 0a 58 | 0a 58 73 74 61 74 69 63 |G "\1".X|.Xstatic|
|000008f0| 20 63 68 61 72 20 2a 67 | 65 74 65 6e 76 77 28 63 | char *g|etenvw(c|
|00000900| 68 61 72 20 2a 2c 20 62 | 6f 6f 6c 29 3b 0a 58 0a |har *, b|ool);.X.|
|00000910| 58 23 69 66 64 65 66 20 | 50 52 4f 54 45 43 54 5f |X#ifdef |PROTECT_|
|00000920| 45 4e 56 0a 58 73 74 61 | 74 69 63 20 62 6f 6f 6c |ENV.Xsta|tic bool|
|00000930| 20 46 63 6f 6e 76 28 46 | 6f 72 6d 61 74 20 2a 66 | Fconv(F|ormat *f|
|00000940| 2c 20 69 6e 74 20 69 67 | 6e 6f 72 65 29 20 7b 09 |, int ig|nore) {.|
|00000950| 2f 2a 20 70 72 6f 74 65 | 63 74 20 61 6e 20 65 78 |/* prote|ct an ex|
|00000960| 70 6f 72 74 65 64 20 6e | 61 6d 65 20 66 72 6f 6d |ported n|ame from|
|00000970| 20 62 72 61 69 6e 2d 64 | 65 61 64 20 73 68 65 6c | brain-d|ead shel|
|00000980| 6c 73 20 2a 2f 0a 58 09 | 69 6e 74 20 63 3b 0a 58 |ls */.X.|int c;.X|
|00000990| 09 75 6e 73 69 67 6e 65 | 64 20 63 6f 6e 73 74 20 |.unsigne|d const |
|000009a0| 63 68 61 72 20 2a 73 20 | 3d 20 76 61 5f 61 72 67 |char *s |= va_arg|
|000009b0| 28 66 2d 3e 61 72 67 73 | 2c 20 75 6e 73 69 67 6e |(f->args|, unsign|
|000009c0| 65 64 20 63 6f 6e 73 74 | 20 63 68 61 72 20 2a 29 |ed const| char *)|
|000009d0| 3b 0a 58 0a 58 09 77 68 | 69 6c 65 20 28 28 63 20 |;.X.X.wh|ile ((c |
|000009e0| 3d 20 2a 73 2b 2b 29 20 | 21 3d 20 27 5c 30 27 29 |= *s++) |!= '\0')|
|000009f0| 0a 58 09 09 69 66 20 28 | 64 6e 77 5b 63 5d 20 7c |.X..if (|dnw[c] ||
|00000a00| 7c 20 63 20 3d 3d 20 27 | 2a 27 20 7c 7c 20 28 63 || c == '|*' || (c|
|00000a10| 20 3d 3d 20 27 5f 27 20 | 26 26 20 2a 73 20 3d 3d | == '_' |&& *s ==|
|00000a20| 20 27 5f 27 29 29 0a 58 | 09 09 09 66 6d 74 70 72 | '_')).X|...fmtpr|
|00000a30| 69 6e 74 28 66 2c 20 22 | 5f 5f 25 30 32 78 22 2c |int(f, "|__%02x",|
|00000a40| 20 63 29 3b 0a 58 09 09 | 65 6c 73 65 0a 58 09 09 | c);.X..|else.X..|
|00000a50| 09 66 6d 74 70 75 74 63 | 28 66 2c 20 63 29 3b 0a |.fmtputc|(f, c);.|
|00000a60| 58 09 72 65 74 75 72 6e | 20 46 41 4c 53 45 3b 0a |X.return| FALSE;.|
|00000a70| 58 7d 0a 58 23 65 6e 64 | 69 66 0a 58 0a 58 2f 2a |X}.X#end|if.X.X/*|
|00000a80| 20 75 73 65 64 20 74 6f | 20 74 75 72 6e 20 61 20 | used to| turn a |
|00000a90| 66 75 6e 63 74 69 6f 6e | 20 69 6e 20 4e 6f 64 65 |function| in Node|
|00000aa0| 20 2a 20 66 6f 72 6d 20 | 69 6e 74 6f 20 73 6f 6d | * form |into som|
|00000ab0| 65 74 68 69 6e 67 20 77 | 65 20 63 61 6e 20 65 78 |ething w|e can ex|
|00000ac0| 70 6f 72 74 20 74 6f 20 | 74 68 65 20 65 6e 76 69 |port to |the envi|
|00000ad0| 72 6f 6e 6d 65 6e 74 20 | 2a 2f 0a 58 0a 58 65 78 |ronment |*/.X.Xex|
|00000ae0| 74 65 72 6e 20 63 68 61 | 72 20 2a 66 75 6e 32 73 |tern cha|r *fun2s|
|00000af0| 74 72 28 63 68 61 72 20 | 2a 6e 61 6d 65 2c 20 4e |tr(char |*name, N|
|00000b00| 6f 64 65 20 2a 6e 29 20 | 7b 0a 58 09 72 65 74 75 |ode *n) |{.X.retu|
|00000b10| 72 6e 20 6d 70 72 69 6e | 74 28 22 66 6e 5f 25 46 |rn mprin|t("fn_%F|
|00000b20| 3d 7b 25 54 7d 22 2c 20 | 6e 61 6d 65 2c 20 6e 29 |={%T}", |name, n)|
|00000b30| 3b 0a 58 7d 0a 58 0a 58 | 2f 2a 20 63 6f 6e 76 65 |;.X}.X.X|/* conve|
|00000b40| 72 74 20 61 20 72 65 64 | 69 72 65 63 74 69 6f 6e |rt a red|irection|
|00000b50| 20 74 6f 20 61 20 70 72 | 69 6e 74 61 62 6c 65 20 | to a pr|intable |
|00000b60| 66 6f 72 6d 20 2a 2f 0a | 58 0a 58 73 74 61 74 69 |form */.|X.Xstati|
|00000b70| 63 20 62 6f 6f 6c 20 44 | 63 6f 6e 76 28 46 6f 72 |c bool D|conv(For|
|00000b80| 6d 61 74 20 2a 66 2c 20 | 69 6e 74 20 69 67 6e 6f |mat *f, |int igno|
|00000b90| 72 65 29 20 7b 0a 58 09 | 63 6f 6e 73 74 20 63 68 |re) {.X.|const ch|
|00000ba0| 61 72 20 2a 6e 61 6d 65 | 20 3d 20 22 3f 22 3b 0a |ar *name| = "?";.|
|00000bb0| 58 09 69 6e 74 20 6e 20 | 3d 20 76 61 5f 61 72 67 |X.int n |= va_arg|
|00000bc0| 28 66 2d 3e 61 72 67 73 | 2c 20 69 6e 74 29 3b 0a |(f->args|, int);.|
|00000bd0| 58 09 73 77 69 74 63 68 | 20 28 6e 29 20 7b 0a 58 |X.switch| (n) {.X|
|00000be0| 09 63 61 73 65 20 72 43 | 72 65 61 74 65 3a 09 09 |.case rC|reate:..|
|00000bf0| 6e 61 6d 65 20 3d 20 22 | 3e 22 3b 09 62 72 65 61 |name = "|>";.brea|
|00000c00| 6b 3b 0a 58 09 63 61 73 | 65 20 72 41 70 70 65 6e |k;.X.cas|e rAppen|
|00000c10| 64 3a 09 09 6e 61 6d 65 | 20 3d 20 22 3e 3e 22 3b |d:..name| = ">>";|
|00000c20| 09 62 72 65 61 6b 3b 0a | 58 09 63 61 73 65 20 72 |.break;.|X.case r|
|00000c30| 46 72 6f 6d 3a 09 09 6e | 61 6d 65 20 3d 20 22 3c |From:..n|ame = "<|
|00000c40| 22 3b 09 62 72 65 61 6b | 3b 0a 58 09 63 61 73 65 |";.break|;.X.case|
|00000c50| 20 72 48 65 72 65 64 6f | 63 3a 09 09 6e 61 6d 65 | rHeredo|c:..name|
|00000c60| 20 3d 20 22 3c 3c 22 3b | 09 62 72 65 61 6b 3b 0a | = "<<";|.break;.|
|00000c70| 58 09 63 61 73 65 20 72 | 48 65 72 65 73 74 72 69 |X.case r|Herestri|
|00000c80| 6e 67 3a 09 6e 61 6d 65 | 20 3d 20 22 3c 3c 3c 22 |ng:.name| = "<<<"|
|00000c90| 3b 09 62 72 65 61 6b 3b | 0a 58 09 7d 0a 58 09 66 |;.break;|.X.}.X.f|
|00000ca0| 6d 74 63 61 74 28 66 2c | 20 6e 61 6d 65 29 3b 0a |mtcat(f,| name);.|
|00000cb0| 58 09 72 65 74 75 72 6e | 20 46 41 4c 53 45 3b 0a |X.return| FALSE;.|
|00000cc0| 58 7d 0a 58 0a 58 2f 2a | 20 64 65 66 61 75 6c 74 |X}.X.X/*| default|
|00000cd0| 66 64 20 2d 2d 20 72 65 | 74 75 72 6e 20 74 68 65 |fd -- re|turn the|
|00000ce0| 20 64 65 66 61 75 6c 74 | 20 66 64 20 66 6f 72 20 | default| fd for |
|00000cf0| 61 20 67 69 76 65 6e 20 | 72 65 64 69 72 65 63 74 |a given |redirect|
|00000d00| 69 6f 6e 20 6f 70 65 72 | 61 74 69 6f 6e 20 2a 2f |ion oper|ation */|
|00000d10| 0a 58 0a 58 65 78 74 65 | 72 6e 20 69 6e 74 20 64 |.X.Xexte|rn int d|
|00000d20| 65 66 61 75 6c 74 66 64 | 28 69 6e 74 20 6f 70 29 |efaultfd|(int op)|
|00000d30| 20 7b 0a 58 09 72 65 74 | 75 72 6e 20 28 6f 70 20 | {.X.ret|urn (op |
|00000d40| 3d 3d 20 72 43 72 65 61 | 74 65 20 7c 7c 20 6f 70 |== rCrea|te || op|
|00000d50| 20 3d 3d 20 72 41 70 70 | 65 6e 64 29 20 3f 20 31 | == rApp|end) ? 1|
|00000d60| 20 3a 20 30 3b 0a 58 7d | 0a 58 0a 58 2f 2a 20 63 | : 0;.X}|.X.X/* c|
|00000d70| 6f 6e 76 65 72 74 20 61 | 20 66 75 6e 63 74 69 6f |onvert a| functio|
|00000d80| 6e 20 69 6e 20 4e 6f 64 | 65 20 2a 20 66 6f 72 6d |n in Nod|e * form|
|00000d90| 20 69 6e 74 6f 20 73 6f | 6d 65 74 68 69 6e 67 20 | into so|mething |
|00000da0| 72 63 20 63 61 6e 20 70 | 61 72 73 65 20 28 61 6e |rc can p|arse (an|
|00000db0| 64 20 68 75 6d 61 6e 73 | 20 63 61 6e 20 72 65 61 |d humans| can rea|
|00000dc0| 64 3f 29 20 2a 2f 0a 58 | 0a 58 73 74 61 74 69 63 |d?) */.X|.Xstatic|
|00000dd0| 20 62 6f 6f 6c 20 54 63 | 6f 6e 76 28 46 6f 72 6d | bool Tc|onv(Form|
|00000de0| 61 74 20 2a 66 2c 20 69 | 6e 74 20 69 67 6e 6f 72 |at *f, i|nt ignor|
|00000df0| 65 29 20 7b 0a 58 09 4e | 6f 64 65 20 2a 6e 20 3d |e) {.X.N|ode *n =|
|00000e00| 20 76 61 5f 61 72 67 28 | 66 2d 3e 61 72 67 73 2c | va_arg(|f->args,|
|00000e10| 20 4e 6f 64 65 20 2a 29 | 3b 0a 58 09 69 66 20 28 | Node *)|;.X.if (|
|00000e20| 6e 20 3d 3d 20 4e 55 4c | 4c 29 20 7b 0a 58 09 09 |n == NUL|L) {.X..|
|00000e30| 66 6d 74 70 72 69 6e 74 | 28 66 2c 20 22 28 29 22 |fmtprint|(f, "()"|
|00000e40| 29 3b 0a 58 09 09 72 65 | 74 75 72 6e 20 46 41 4c |);.X..re|turn FAL|
|00000e50| 53 45 3b 0a 58 09 7d 0a | 58 09 73 77 69 74 63 68 |SE;.X.}.|X.switch|
|00000e60| 20 28 6e 2d 3e 74 79 70 | 65 29 20 7b 0a 58 09 63 | (n->typ|e) {.X.c|
|00000e70| 61 73 65 20 6e 57 6f 72 | 64 3a 09 66 6d 74 70 72 |ase nWor|d:.fmtpr|
|00000e80| 69 6e 74 28 66 2c 20 22 | 25 53 22 2c 20 6e 2d 3e |int(f, "|%S", n->|
|00000e90| 75 5b 30 5d 2e 73 29 3b | 09 09 09 09 62 72 65 61 |u[0].s);|....brea|
|00000ea0| 6b 3b 0a 58 09 63 61 73 | 65 20 6e 51 77 6f 72 64 |k;.X.cas|e nQword|
|00000eb0| 3a 09 66 6d 74 70 72 69 | 6e 74 28 66 2c 20 22 25 |:.fmtpri|nt(f, "%|
|00000ec0| 23 53 22 2c 20 6e 2d 3e | 75 5b 30 5d 2e 73 29 3b |#S", n->|u[0].s);|
|00000ed0| 09 09 09 09 62 72 65 61 | 6b 3b 0a 58 09 63 61 73 |....brea|k;.X.cas|
|00000ee0| 65 20 6e 42 61 6e 67 3a | 09 66 6d 74 70 72 69 6e |e nBang:|.fmtprin|
|00000ef0| 74 28 66 2c 20 22 21 20 | 25 54 22 2c 20 6e 2d 3e |t(f, "! |%T", n->|
|00000f00| 75 5b 30 5d 2e 70 29 3b | 09 09 09 09 62 72 65 61 |u[0].p);|....brea|
|00000f10| 6b 3b 0a 58 09 63 61 73 | 65 20 6e 43 61 73 65 3a |k;.X.cas|e nCase:|
|00000f20| 09 66 6d 74 70 72 69 6e | 74 28 66 2c 20 22 63 61 |.fmtprin|t(f, "ca|
|00000f30| 73 65 20 25 54 22 2c 20 | 6e 2d 3e 75 5b 30 5d 2e |se %T", |n->u[0].|
|00000f40| 70 29 3b 09 09 09 62 72 | 65 61 6b 3b 0a 58 09 63 |p);...br|eak;.X.c|
|00000f50| 61 73 65 20 6e 4e 6f 77 | 61 69 74 3a 09 66 6d 74 |ase nNow|ait:.fmt|
|00000f60| 70 72 69 6e 74 28 66 2c | 20 22 25 54 26 22 2c 20 |print(f,| "%T&", |
|00000f70| 6e 2d 3e 75 5b 30 5d 2e | 70 29 3b 09 09 09 09 62 |n->u[0].|p);....b|
|00000f80| 72 65 61 6b 3b 0a 58 09 | 63 61 73 65 20 6e 43 6f |reak;.X.|case nCo|
|00000f90| 75 6e 74 3a 09 66 6d 74 | 70 72 69 6e 74 28 66 2c |unt:.fmt|print(f,|
|00000fa0| 20 22 24 23 25 54 22 2c | 20 6e 2d 3e 75 5b 30 5d | "$#%T",| n->u[0]|
|00000fb0| 2e 70 29 3b 09 09 09 09 | 62 72 65 61 6b 3b 0a 58 |.p);....|break;.X|
|00000fc0| 09 63 61 73 65 20 6e 46 | 6c 61 74 3a 09 66 6d 74 |.case nF|lat:.fmt|
|00000fd0| 70 72 69 6e 74 28 66 2c | 20 22 24 5e 25 54 22 2c |print(f,| "$^%T",|
|00000fe0| 20 6e 2d 3e 75 5b 30 5d | 2e 70 29 3b 09 09 09 09 | n->u[0]|.p);....|
|00000ff0| 62 72 65 61 6b 3b 0a 58 | 09 63 61 73 65 20 6e 52 |break;.X|.case nR|
|00001000| 6d 66 6e 3a 09 66 6d 74 | 70 72 69 6e 74 28 66 2c |mfn:.fmt|print(f,|
|00001010| 20 22 66 6e 20 25 54 22 | 2c 20 6e 2d 3e 75 5b 30 | "fn %T"|, n->u[0|
|00001020| 5d 2e 70 29 3b 09 09 09 | 62 72 65 61 6b 3b 0a 58 |].p);...|break;.X|
|00001030| 09 63 61 73 65 20 6e 53 | 75 62 73 68 65 6c 6c 3a |.case nS|ubshell:|
|00001040| 09 66 6d 74 70 72 69 6e | 74 28 66 2c 20 22 40 20 |.fmtprin|t(f, "@ |
|00001050| 25 54 22 2c 20 6e 2d 3e | 75 5b 30 5d 2e 70 29 3b |%T", n->|u[0].p);|
|00001060| 09 09 09 09 62 72 65 61 | 6b 3b 0a 58 09 63 61 73 |....brea|k;.X.cas|
|00001070| 65 20 6e 56 61 72 3a 09 | 66 6d 74 70 72 69 6e 74 |e nVar:.|fmtprint|
|00001080| 28 66 2c 20 22 24 25 54 | 22 2c 20 6e 2d 3e 75 5b |(f, "$%T|", n->u[|
|00001090| 30 5d 2e 70 29 3b 09 09 | 09 09 62 72 65 61 6b 3b |0].p);..|..break;|
|000010a0| 0a 58 09 63 61 73 65 20 | 6e 41 6e 64 61 6c 73 6f |.X.case |nAndalso|
|000010b0| 3a 09 66 6d 74 70 72 69 | 6e 74 28 66 2c 20 22 25 |:.fmtpri|nt(f, "%|
|000010c0| 54 26 26 25 54 22 2c 20 | 6e 2d 3e 75 5b 30 5d 2e |T&&%T", |n->u[0].|
|000010d0| 70 2c 20 6e 2d 3e 75 5b | 31 5d 2e 70 29 3b 09 09 |p, n->u[|1].p);..|
|000010e0| 62 72 65 61 6b 3b 0a 58 | 09 63 61 73 65 20 6e 41 |break;.X|.case nA|
|000010f0| 73 73 69 67 6e 3a 09 66 | 6d 74 70 72 69 6e 74 28 |ssign:.f|mtprint(|
|00001100| 66 2c 20 22 25 54 3d 25 | 54 22 2c 20 6e 2d 3e 75 |f, "%T=%|T", n->u|
|00001110| 5b 30 5d 2e 70 2c 20 6e | 2d 3e 75 5b 31 5d 2e 70 |[0].p, n|->u[1].p|
|00001120| 29 3b 09 09 62 72 65 61 | 6b 3b 0a 58 09 63 61 73 |);..brea|k;.X.cas|
|00001130| 65 20 6e 43 6f 6e 63 61 | 74 3a 09 66 6d 74 70 72 |e nConca|t:.fmtpr|
|00001140| 69 6e 74 28 66 2c 20 22 | 25 54 5e 25 54 22 2c 20 |int(f, "|%T^%T", |
|00001150| 6e 2d 3e 75 5b 30 5d 2e | 70 2c 20 6e 2d 3e 75 5b |n->u[0].|p, n->u[|
|00001160| 31 5d 2e 70 29 3b 09 09 | 62 72 65 61 6b 3b 0a 58 |1].p);..|break;.X|
|00001170| 09 63 61 73 65 20 6e 45 | 6c 73 65 3a 09 66 6d 74 |.case nE|lse:.fmt|
|00001180| 70 72 69 6e 74 28 66 2c | 20 22 7b 25 54 7d 65 6c |print(f,| "{%T}el|
|00001190| 73 65 20 25 54 22 2c 20 | 6e 2d 3e 75 5b 30 5d 2e |se %T", |n->u[0].|
|000011a0| 70 2c 20 6e 2d 3e 75 5b | 31 5d 2e 70 29 3b 09 62 |p, n->u[|1].p);.b|
|000011b0| 72 65 61 6b 3b 0a 58 09 | 63 61 73 65 20 6e 4e 65 |reak;.X.|case nNe|
|000011c0| 77 66 6e 3a 09 66 6d 74 | 70 72 69 6e 74 28 66 2c |wfn:.fmt|print(f,|
|000011d0| 20 22 66 6e 20 25 54 20 | 7b 25 54 7d 22 2c 20 6e | "fn %T |{%T}", n|
|000011e0| 2d 3e 75 5b 30 5d 2e 70 | 2c 20 6e 2d 3e 75 5b 31 |->u[0].p|, n->u[1|
|000011f0| 5d 2e 70 29 3b 09 62 72 | 65 61 6b 3b 0a 58 09 63 |].p);.br|eak;.X.c|
|00001200| 61 73 65 20 6e 49 66 3a | 09 66 6d 74 70 72 69 6e |ase nIf:|.fmtprin|
|00001210| 74 28 66 2c 20 22 69 66 | 28 25 54 29 25 54 22 2c |t(f, "if|(%T)%T",|
|00001220| 20 6e 2d 3e 75 5b 30 5d | 2e 70 2c 20 6e 2d 3e 75 | n->u[0]|.p, n->u|
|00001230| 5b 31 5d 2e 70 29 3b 09 | 09 62 72 65 61 6b 3b 0a |[1].p);.|.break;.|
|00001240| 58 09 63 61 73 65 20 6e | 4f 72 65 6c 73 65 3a 09 |X.case n|Orelse:.|
|00001250| 66 6d 74 70 72 69 6e 74 | 28 66 2c 20 22 25 54 7c |fmtprint|(f, "%T||
|00001260| 7c 25 54 22 2c 20 6e 2d | 3e 75 5b 30 5d 2e 70 2c ||%T", n-|>u[0].p,|
|00001270| 20 6e 2d 3e 75 5b 31 5d | 2e 70 29 3b 09 09 62 72 | n->u[1]|.p);..br|
|00001280| 65 61 6b 3b 0a 58 09 63 | 61 73 65 20 6e 41 72 67 |eak;.X.c|ase nArg|
|00001290| 73 3a 09 66 6d 74 70 72 | 69 6e 74 28 66 2c 20 22 |s:.fmtpr|int(f, "|
|000012a0| 25 54 20 25 54 22 2c 20 | 6e 2d 3e 75 5b 30 5d 2e |%T %T", |n->u[0].|
|000012b0| 70 2c 20 6e 2d 3e 75 5b | 31 5d 2e 70 29 3b 09 09 |p, n->u[|1].p);..|
|000012c0| 62 72 65 61 6b 3b 0a 58 | 09 63 61 73 65 20 6e 53 |break;.X|.case nS|
|000012d0| 77 69 74 63 68 3a 09 66 | 6d 74 70 72 69 6e 74 28 |witch:.f|mtprint(|
|000012e0| 66 2c 20 22 73 77 69 74 | 63 68 28 25 54 29 7b 25 |f, "swit|ch(%T){%|
|000012f0| 54 7d 22 2c 20 6e 2d 3e | 75 5b 30 5d 2e 70 2c 20 |T}", n->|u[0].p, |
|00001300| 6e 2d 3e 75 5b 31 5d 2e | 70 29 3b 09 62 72 65 61 |n->u[1].|p);.brea|
|00001310| 6b 3b 0a 58 09 63 61 73 | 65 20 6e 4d 61 74 63 68 |k;.X.cas|e nMatch|
|00001320| 3a 09 66 6d 74 70 72 69 | 6e 74 28 66 2c 20 22 7e |:.fmtpri|nt(f, "~|
|00001330| 20 25 54 20 25 54 22 2c | 20 6e 2d 3e 75 5b 30 5d | %T %T",| n->u[0]|
|00001340| 2e 70 2c 20 6e 2d 3e 75 | 5b 31 5d 2e 70 29 3b 09 |.p, n->u|[1].p);.|
|00001350| 09 62 72 65 61 6b 3b 0a | 58 09 63 61 73 65 20 6e |.break;.|X.case n|
|00001360| 56 61 72 73 75 62 3a 09 | 66 6d 74 70 72 69 6e 74 |Varsub:.|fmtprint|
|00001370| 28 66 2c 20 22 24 25 54 | 28 25 54 29 22 2c 20 6e |(f, "$%T|(%T)", n|
|00001380| 2d 3e 75 5b 30 5d 2e 70 | 2c 20 6e 2d 3e 75 5b 31 |->u[0].p|, n->u[1|
|00001390| 5d 2e 70 29 3b 09 09 62 | 72 65 61 6b 3b 0a 58 09 |].p);..b|reak;.X.|
|000013a0| 63 61 73 65 20 6e 57 68 | 69 6c 65 3a 09 66 6d 74 |case nWh|ile:.fmt|
|000013b0| 70 72 69 6e 74 28 66 2c | 20 22 77 68 69 6c 65 28 |print(f,| "while(|
|000013c0| 25 54 29 25 54 22 2c 20 | 6e 2d 3e 75 5b 30 5d 2e |%T)%T", |n->u[0].|
|000013d0| 70 2c 20 6e 2d 3e 75 5b | 31 5d 2e 70 29 3b 09 62 |p, n->u[|1].p);.b|
|000013e0| 72 65 61 6b 3b 0a 58 09 | 63 61 73 65 20 6e 4c 61 |reak;.X.|case nLa|
|000013f0| 70 70 65 6e 64 3a 09 66 | 6d 74 70 72 69 6e 74 28 |ppend:.f|mtprint(|
|00001400| 66 2c 20 22 28 25 54 20 | 25 54 29 22 2c 20 6e 2d |f, "(%T |%T)", n-|
|00001410| 3e 75 5b 30 5d 2e 70 2c | 20 6e 2d 3e 75 5b 31 5d |>u[0].p,| n->u[1]|
|00001420| 2e 70 29 3b 09 09 62 72 | 65 61 6b 3b 0a 58 09 63 |.p);..br|eak;.X.c|
|00001430| 61 73 65 20 6e 46 6f 72 | 69 6e 3a 09 66 6d 74 70 |ase nFor|in:.fmtp|
|00001440| 72 69 6e 74 28 66 2c 20 | 22 66 6f 72 28 25 54 20 |rint(f, |"for(%T |
|00001450| 69 6e 20 25 54 29 25 54 | 22 2c 20 6e 2d 3e 75 5b |in %T)%T|", n->u[|
|00001460| 30 5d 2e 70 2c 20 6e 2d | 3e 75 5b 31 5d 2e 70 2c |0].p, n-|>u[1].p,|
|00001470| 20 6e 2d 3e 75 5b 32 5d | 2e 70 29 3b 20 62 72 65 | n->u[2]|.p); bre|
|00001480| 61 6b 3b 0a 58 09 63 61 | 73 65 20 6e 44 75 70 3a |ak;.X.ca|se nDup:|
|00001490| 0a 58 09 09 69 66 20 28 | 6e 2d 3e 75 5b 32 5d 2e |.X..if (|n->u[2].|
|000014a0| 69 20 21 3d 20 2d 31 29 | 0a 58 09 09 09 66 6d 74 |i != -1)|.X...fmt|
|000014b0| 70 72 69 6e 74 28 66 2c | 20 22 25 44 5b 25 64 3d |print(f,| "%D[%d=|
|000014c0| 25 64 5d 22 2c 20 6e 2d | 3e 75 5b 30 5d 2e 69 2c |%d]", n-|>u[0].i,|
|000014d0| 20 6e 2d 3e 75 5b 31 5d | 2e 69 2c 20 6e 2d 3e 75 | n->u[1]|.i, n->u|
|000014e0| 5b 32 5d 2e 69 29 3b 0a | 58 09 09 65 6c 73 65 0a |[2].i);.|X..else.|
|000014f0| 58 09 09 09 66 6d 74 70 | 72 69 6e 74 28 66 2c 20 |X...fmtp|rint(f, |
|00001500| 22 25 44 5b 25 64 3d 5d | 22 2c 20 6e 2d 3e 75 5b |"%D[%d=]|", n->u[|
|00001510| 30 5d 2e 69 2c 20 6e 2d | 3e 75 5b 31 5d 2e 69 29 |0].i, n-|>u[1].i)|
|00001520| 3b 0a 58 09 09 62 72 65 | 61 6b 3b 0a 58 09 63 61 |;.X..bre|ak;.X.ca|
|00001530| 73 65 20 6e 42 61 63 6b | 71 3a 20 7b 0a 58 09 09 |se nBack|q: {.X..|
|00001540| 4e 6f 64 65 20 2a 6e 30 | 20 3d 20 6e 2d 3e 75 5b |Node *n0| = n->u[|
|00001550| 30 5d 2e 70 2c 20 2a 6e | 30 30 3b 0a 58 09 09 69 |0].p, *n|00;.X..i|
|00001560| 66 20 28 6e 30 20 21 3d | 20 4e 55 4c 4c 20 26 26 |f (n0 !=| NULL &&|
|00001570| 20 6e 30 2d 3e 74 79 70 | 65 20 3d 3d 20 6e 56 61 | n0->typ|e == nVa|
|00001580| 72 0a 58 09 09 20 20 20 | 20 26 26 20 28 6e 30 30 |r.X.. | && (n00|
|00001590| 20 3d 20 6e 30 2d 3e 75 | 5b 30 5d 2e 70 29 20 21 | = n0->u|[0].p) !|
|000015a0| 3d 20 4e 55 4c 4c 20 26 | 26 20 6e 30 30 2d 3e 74 |= NULL &|& n00->t|
|000015b0| 79 70 65 20 3d 3d 20 6e | 57 6f 72 64 20 26 26 20 |ype == n|Word && |
|000015c0| 73 74 72 65 71 28 6e 30 | 30 2d 3e 75 5b 30 5d 2e |streq(n0|0->u[0].|
|000015d0| 73 2c 20 22 69 66 73 22 | 29 29 0a 58 09 09 09 66 |s, "ifs"|)).X...f|
|000015e0| 6d 74 70 72 69 6e 74 28 | 66 2c 20 22 60 22 29 3b |mtprint(|f, "`");|
|000015f0| 0a 58 09 09 65 6c 73 65 | 0a 58 09 09 09 66 6d 74 |.X..else|.X...fmt|
|00001600| 70 72 69 6e 74 28 66 2c | 20 22 60 60 25 54 22 2c |print(f,| "``%T",|
|00001610| 20 6e 30 29 3b 0a 58 09 | 09 66 6d 74 70 72 69 6e | n0);.X.|.fmtprin|
|00001620| 74 28 66 2c 20 22 7b 25 | 54 7d 22 2c 20 6e 2d 3e |t(f, "{%|T}", n->|
|00001630| 75 5b 31 5d 2e 70 29 3b | 0a 58 09 09 62 72 65 61 |u[1].p);|.X..brea|
|00001640| 6b 3b 0a 58 09 7d 0a 58 | 09 63 61 73 65 20 6e 43 |k;.X.}.X|.case nC|
|00001650| 62 6f 64 79 3a 0a 58 09 | 63 61 73 65 20 6e 42 6f |body:.X.|case nBo|
|00001660| 64 79 3a 20 7b 0a 58 09 | 09 4e 6f 64 65 20 2a 6e |dy: {.X.|.Node *n|
|00001670| 30 20 3d 20 6e 2d 3e 75 | 5b 30 5d 2e 70 3b 0a 58 |0 = n->u|[0].p;.X|
|00001680| 09 09 69 66 20 28 6e 30 | 20 21 3d 20 4e 55 4c 4c |..if (n0| != NULL|
|00001690| 29 0a 58 09 09 09 66 6d | 74 70 72 69 6e 74 28 66 |).X...fm|tprint(f|
|000016a0| 2c 20 22 25 54 22 2c 20 | 6e 2d 3e 75 5b 30 5d 2e |, "%T", |n->u[0].|
|000016b0| 70 29 3b 0a 58 09 09 69 | 66 20 28 6e 2d 3e 75 5b |p);.X..i|f (n->u[|
|000016c0| 31 5d 2e 70 20 21 3d 20 | 4e 55 4c 4c 29 20 7b 0a |1].p != |NULL) {.|
|000016d0| 58 09 09 09 69 66 20 28 | 6e 30 20 21 3d 20 4e 55 |X...if (|n0 != NU|
|000016e0| 4c 4c 20 26 26 20 6e 30 | 2d 3e 74 79 70 65 20 21 |LL && n0|->type !|
|000016f0| 3d 20 6e 4e 6f 77 61 69 | 74 29 0a 58 09 09 09 09 |= nNowai|t).X....|
|00001700| 66 6d 74 70 72 69 6e 74 | 28 66 2c 20 22 3b 22 29 |fmtprint|(f, ";")|
|00001710| 3b 0a 58 09 09 09 66 6d | 74 70 72 69 6e 74 28 66 |;.X...fm|tprint(f|
|00001720| 2c 20 22 25 54 22 2c 20 | 6e 2d 3e 75 5b 31 5d 2e |, "%T", |n->u[1].|
|00001730| 70 29 3b 0a 58 09 09 7d | 0a 58 09 09 62 72 65 61 |p);.X..}|.X..brea|
|00001740| 6b 3b 0a 58 09 7d 0a 58 | 09 63 61 73 65 20 6e 42 |k;.X.}.X|.case nB|
|00001750| 72 61 63 65 3a 0a 58 09 | 09 66 6d 74 70 72 69 6e |race:.X.|.fmtprin|
|00001760| 74 28 66 2c 20 22 7b 25 | 54 7d 22 2c 20 6e 2d 3e |t(f, "{%|T}", n->|
|00001770| 75 5b 30 5d 2e 70 29 3b | 0a 58 09 09 69 66 20 28 |u[0].p);|.X..if (|
|00001780| 6e 2d 3e 75 5b 31 5d 2e | 70 20 21 3d 20 4e 55 4c |n->u[1].|p != NUL|
|00001790| 4c 29 0a 58 09 09 09 66 | 6d 74 70 72 69 6e 74 28 |L).X...f|mtprint(|
|000017a0| 66 2c 20 22 25 54 22 2c | 20 6e 2d 3e 75 5b 31 5d |f, "%T",| n->u[1]|
|000017b0| 2e 70 29 3b 0a 58 09 09 | 62 72 65 61 6b 3b 0a 58 |.p);.X..|break;.X|
|000017c0| 09 63 61 73 65 20 6e 45 | 70 69 6c 6f 67 3a 0a 58 |.case nE|pilog:.X|
|000017d0| 09 63 61 73 65 20 6e 50 | 72 65 3a 0a 58 09 09 66 |.case nP|re:.X..f|
|000017e0| 6d 74 70 72 69 6e 74 28 | 66 2c 20 22 25 54 22 2c |mtprint(|f, "%T",|
|000017f0| 20 6e 2d 3e 75 5b 30 5d | 2e 70 29 3b 0a 58 09 09 | n->u[0]|.p);.X..|
|00001800| 69 66 20 28 6e 2d 3e 75 | 5b 31 5d 2e 70 20 21 3d |if (n->u|[1].p !=|
|00001810| 20 4e 55 4c 4c 29 0a 58 | 09 09 09 66 6d 74 70 72 | NULL).X|...fmtpr|
|00001820| 69 6e 74 28 66 2c 20 22 | 20 25 54 22 2c 20 6e 2d |int(f, "| %T", n-|
|00001830| 3e 75 5b 31 5d 2e 70 29 | 3b 0a 58 09 09 62 72 65 |>u[1].p)|;.X..bre|
|00001840| 61 6b 3b 0a 58 09 63 61 | 73 65 20 6e 50 69 70 65 |ak;.X.ca|se nPipe|
|00001850| 3a 20 7b 0a 58 09 09 69 | 6e 74 20 6f 66 64 20 3d |: {.X..i|nt ofd =|
|00001860| 20 6e 2d 3e 75 5b 30 5d | 2e 69 2c 20 69 66 64 20 | n->u[0]|.i, ifd |
|00001870| 3d 20 6e 2d 3e 75 5b 31 | 5d 2e 69 3b 0a 58 09 09 |= n->u[1|].i;.X..|
|00001880| 66 6d 74 70 72 69 6e 74 | 28 66 2c 20 22 25 54 7c |fmtprint|(f, "%T||
|00001890| 22 2c 20 6e 2d 3e 75 5b | 32 5d 2e 70 29 3b 0a 58 |", n->u[|2].p);.X|
|000018a0| 09 09 69 66 20 28 69 66 | 64 20 21 3d 20 30 29 0a |..if (if|d != 0).|
|000018b0| 58 09 09 09 66 6d 74 70 | 72 69 6e 74 28 66 2c 20 |X...fmtp|rint(f, |
|000018c0| 22 5b 25 64 3d 25 64 5d | 22 2c 20 6f 66 64 2c 20 |"[%d=%d]|", ofd, |
|000018d0| 69 66 64 29 3b 0a 58 09 | 09 65 6c 73 65 20 69 66 |ifd);.X.|.else if|
|000018e0| 20 28 6f 66 64 20 21 3d | 20 31 29 0a 58 09 09 09 | (ofd !=| 1).X...|
|000018f0| 66 6d 74 70 72 69 6e 74 | 28 66 2c 20 22 5b 25 64 |fmtprint|(f, "[%d|
|00001900| 5d 22 2c 20 6f 66 64 29 | 3b 0a 58 09 09 66 6d 74 |]", ofd)|;.X..fmt|
|00001910| 70 72 69 6e 74 28 66 2c | 20 22 25 54 22 2c 20 6e |print(f,| "%T", n|
|00001920| 2d 3e 75 5b 33 5d 2e 70 | 29 3b 0a 58 09 09 62 72 |->u[3].p|);.X..br|
|00001930| 65 61 6b 3b 0a 58 09 7d | 0a 58 09 63 61 73 65 20 |eak;.X.}|.X.case |
|00001940| 6e 52 65 64 69 72 3a 20 | 7b 0a 58 09 09 69 6e 74 |nRedir: |{.X..int|
|00001950| 20 6f 70 20 3d 20 6e 2d | 3e 75 5b 30 5d 2e 69 3b | op = n-|>u[0].i;|
|00001960| 0a 58 09 09 66 6d 74 70 | 72 69 6e 74 28 66 2c 20 |.X..fmtp|rint(f, |
|00001970| 22 25 44 22 2c 20 6f 70 | 29 3b 0a 58 09 09 69 66 |"%D", op|);.X..if|
|00001980| 20 28 6e 2d 3e 75 5b 31 | 5d 2e 69 20 21 3d 20 64 | (n->u[1|].i != d|
|00001990| 65 66 61 75 6c 74 66 64 | 28 6f 70 29 29 0a 58 09 |efaultfd|(op)).X.|
|000019a0| 09 09 66 6d 74 70 72 69 | 6e 74 28 66 2c 20 22 5b |..fmtpri|nt(f, "[|
|000019b0| 25 64 5d 22 2c 20 6e 2d | 3e 75 5b 31 5d 2e 69 29 |%d]", n-|>u[1].i)|
|000019c0| 3b 0a 58 09 09 66 6d 74 | 70 72 69 6e 74 28 66 2c |;.X..fmt|print(f,|
|000019d0| 20 22 25 54 22 2c 20 6e | 2d 3e 75 5b 32 5d 2e 70 | "%T", n|->u[2].p|
|000019e0| 29 3b 0a 58 09 09 62 72 | 65 61 6b 3b 0a 58 09 7d |);.X..br|eak;.X.}|
|000019f0| 0a 58 09 63 61 73 65 20 | 6e 4e 6d 70 69 70 65 3a |.X.case |nNmpipe:|
|00001a00| 20 7b 0a 58 09 09 69 6e | 74 20 6f 70 20 3d 20 6e | {.X..in|t op = n|
|00001a10| 2d 3e 75 5b 30 5d 2e 69 | 3b 0a 58 09 09 66 6d 74 |->u[0].i|;.X..fmt|
|00001a20| 70 72 69 6e 74 28 66 2c | 20 22 25 44 22 2c 20 6f |print(f,| "%D", o|
|00001a30| 70 29 3b 0a 58 09 09 69 | 66 20 28 6e 2d 3e 75 5b |p);.X..i|f (n->u[|
|00001a40| 31 5d 2e 69 20 21 3d 20 | 64 65 66 61 75 6c 74 66 |1].i != |defaultf|
|00001a50| 64 28 6f 70 29 29 0a 58 | 09 09 09 66 6d 74 70 72 |d(op)).X|...fmtpr|
|00001a60| 69 6e 74 28 66 2c 20 22 | 5b 25 64 5d 22 2c 20 6e |int(f, "|[%d]", n|
|00001a70| 2d 3e 75 5b 31 5d 2e 69 | 29 3b 0a 58 09 09 66 6d |->u[1].i|);.X..fm|
|00001a80| 74 70 72 69 6e 74 28 66 | 2c 20 22 7b 25 54 7d 22 |tprint(f|, "{%T}"|
|00001a90| 2c 20 6e 2d 3e 75 5b 32 | 5d 2e 70 29 3b 0a 58 09 |, n->u[2|].p);.X.|
|00001aa0| 09 62 72 65 61 6b 3b 0a | 58 09 7d 0a 58 20 09 7d |.break;.|X.}.X .}|
|00001ab0| 0a 58 09 72 65 74 75 72 | 6e 20 46 41 4c 53 45 3b |.X.retur|n FALSE;|
|00001ac0| 0a 58 7d 0a 58 0a 58 2f | 2a 20 63 6f 6e 76 65 72 |.X}.X.X/|* conver|
|00001ad0| 74 20 61 20 4c 69 73 74 | 20 74 6f 20 61 20 73 74 |t a List| to a st|
|00001ae0| 72 69 6e 67 2c 20 73 65 | 70 61 72 61 74 69 6e 67 |ring, se|parating|
|00001af0| 20 69 74 20 77 69 74 68 | 20 5e 41 20 63 68 61 72 | it with| ^A char|
|00001b00| 61 63 74 65 72 73 2e 20 | 55 73 65 64 20 66 6f 72 |acters. |Used for|
|00001b10| 20 65 78 70 6f 72 74 69 | 6e 67 20 76 61 72 69 61 | exporti|ng varia|
|00001b20| 62 6c 65 73 20 74 6f 20 | 74 68 65 20 65 6e 76 69 |bles to |the envi|
|00001b30| 72 6f 6e 6d 65 6e 74 20 | 2a 2f 0a 58 0a 58 65 78 |ronment |*/.X.Xex|
|00001b40| 74 65 72 6e 20 63 68 61 | 72 20 2a 6c 69 73 74 32 |tern cha|r *list2|
|00001b50| 73 74 72 28 63 68 61 72 | 20 2a 6e 61 6d 65 2c 20 |str(char| *name, |
|00001b60| 4c 69 73 74 20 2a 73 29 | 20 7b 0a 58 09 53 49 5a |List *s)| {.X.SIZ|
|00001b70| 45 5f 54 20 73 69 7a 65 | 2c 20 73 74 65 70 3b 0a |E_T size|, step;.|
|00001b80| 58 09 4c 69 73 74 20 2a | 74 3b 0a 58 09 63 68 61 |X.List *|t;.X.cha|
|00001b90| 72 20 2a 77 2c 20 2a 78 | 3b 0a 58 09 6e 61 6d 65 |r *w, *x|;.X.name|
|00001ba0| 20 3d 20 6e 70 72 69 6e | 74 28 22 25 46 22 2c 20 | = nprin|t("%F", |
|00001bb0| 6e 61 6d 65 29 3b 0a 58 | 09 73 69 7a 65 20 3d 20 |name);.X|.size = |
|00001bc0| 73 74 72 6c 65 6e 28 6e | 61 6d 65 29 20 2b 20 6c |strlen(n|ame) + l|
|00001bd0| 69 73 74 6c 65 6e 28 73 | 29 3b 0a 58 09 77 20 3d |istlen(s|);.X.w =|
|00001be0| 20 65 61 6c 6c 6f 63 28 | 73 69 7a 65 20 2b 20 32 | ealloc(|size + 2|
|00001bf0| 29 3b 0a 58 09 74 20 3d | 20 73 3b 0a 58 09 78 20 |);.X.t =| s;.X.x |
|00001c00| 3d 20 77 3b 0a 58 09 73 | 74 72 63 70 79 28 78 2c |= w;.X.s|trcpy(x,|
|00001c10| 20 6e 61 6d 65 29 3b 0a | 58 09 73 74 72 63 70 79 | name);.|X.strcpy|
|00001c20| 28 78 20 2b 3d 20 73 74 | 72 6c 65 6e 28 6e 61 6d |(x += st|rlen(nam|
|00001c30| 65 29 2c 20 22 3d 22 29 | 3b 0a 58 09 73 74 72 63 |e), "=")|;.X.strc|
|00001c40| 70 79 28 78 20 2b 3d 20 | 63 6f 6e 73 74 73 74 72 |py(x += |conststr|
|00001c50| 6c 65 6e 28 22 3d 22 29 | 2c 20 74 2d 3e 77 29 3b |len("=")|, t->w);|
|00001c60| 0a 58 09 66 6f 72 20 28 | 78 20 2b 3d 20 73 74 72 |.X.for (|x += str|
|00001c70| 6c 65 6e 28 74 2d 3e 77 | 29 2c 20 73 20 3d 20 73 |len(t->w|), s = s|
|00001c80| 2d 3e 6e 3b 20 73 20 21 | 3d 20 4e 55 4c 4c 3b 20 |->n; s !|= NULL; |
|00001c90| 73 20 3d 20 73 2d 3e 6e | 29 20 7b 0a 58 09 09 6d |s = s->n|) {.X..m|
|00001ca0| 65 6d 63 70 79 28 78 2c | 20 46 53 53 54 52 49 4e |emcpy(x,| FSSTRIN|
|00001cb0| 47 2c 20 73 74 65 70 20 | 3d 20 63 6f 6e 73 74 73 |G, step |= consts|
|00001cc0| 74 72 6c 65 6e 28 46 53 | 53 54 52 49 4e 47 29 29 |trlen(FS|STRING))|
|00001cd0| 3b 0a 58 09 09 78 20 2b | 3d 20 73 74 65 70 3b 0a |;.X..x +|= step;.|
|00001ce0| 58 09 09 6d 65 6d 63 70 | 79 28 78 2c 20 73 2d 3e |X..memcp|y(x, s->|
|00001cf0| 77 2c 20 73 74 65 70 20 | 3d 20 73 74 72 6c 65 6e |w, step |= strlen|
|00001d00| 28 73 2d 3e 77 29 29 3b | 0a 58 09 09 78 20 2b 3d |(s->w));|.X..x +=|
|00001d10| 20 73 74 65 70 3b 0a 58 | 09 7d 0a 58 09 2a 78 20 | step;.X|.}.X.*x |
|00001d20| 3d 20 27 5c 30 27 3b 0a | 58 09 72 65 74 75 72 6e |= '\0';.|X.return|
|00001d30| 20 77 3b 0a 58 7d 0a 58 | 0a 58 2f 2a 20 63 6f 6e | w;.X}.X|.X/* con|
|00001d40| 76 65 72 74 20 61 20 4c | 69 73 74 20 74 6f 20 61 |vert a L|ist to a|
|00001d50| 6e 20 61 72 72 61 79 2c | 20 66 6f 72 20 65 78 65 |n array,| for exe|
|00001d60| 63 76 65 28 29 20 2a 2f | 0a 58 0a 58 65 78 74 65 |cve() */|.X.Xexte|
|00001d70| 72 6e 20 63 68 61 72 20 | 2a 2a 6c 69 73 74 32 61 |rn char |**list2a|
|00001d80| 72 72 61 79 28 4c 69 73 | 74 20 2a 73 2c 20 62 6f |rray(Lis|t *s, bo|
|00001d90| 6f 6c 20 70 72 69 6e 74 | 29 20 7b 0a 58 09 63 68 |ol print|) {.X.ch|
|00001da0| 61 72 20 2a 2a 61 76 3b | 0a 58 09 69 6e 74 20 69 |ar **av;|.X.int i|
|00001db0| 3b 0a 58 0a 58 09 2f 2a | 20 34 20 3d 3d 20 31 20 |;.X.X./*| 4 == 1 |
|00001dc0| 66 6f 72 20 74 68 65 20 | 6e 75 6c 6c 20 74 65 72 |for the |null ter|
|00001dd0| 6d 69 6e 61 74 6f 72 20 | 2b 20 32 20 66 6f 72 20 |minator |+ 2 for |
|00001de0| 74 68 65 20 66 61 6b 65 | 20 65 78 65 63 76 65 28 |the fake| execve(|
|00001df0| 29 20 2b 20 31 20 66 6f | 72 20 64 65 66 61 75 6c |) + 1 fo|r defaul|
|00001e00| 74 69 6e 67 20 74 6f 20 | 73 68 20 2a 2f 0a 58 09 |ting to |sh */.X.|
|00001e10| 61 76 20 3d 20 6e 61 6c | 6c 6f 63 28 28 6c 69 73 |av = nal|loc((lis|
|00001e20| 74 6e 65 6c 28 73 29 20 | 2b 20 34 29 20 2a 20 73 |tnel(s) |+ 4) * s|
|00001e30| 69 7a 65 6f 66 20 28 63 | 68 61 72 20 2a 29 29 3b |izeof (c|har *));|
|00001e40| 0a 58 09 61 76 20 2b 3d | 20 33 3b 20 2f 2a 20 68 |.X.av +=| 3; /* h|
|00001e50| 69 64 65 20 74 68 65 20 | 74 77 6f 20 66 72 65 65 |ide the |two free|
|00001e60| 20 73 70 6f 74 73 20 66 | 72 6f 6d 20 72 63 20 28 | spots f|rom rc (|
|00001e70| 74 77 6f 20 66 6f 72 20 | 23 21 20 65 6d 75 6c 61 |two for |#! emula|
|00001e80| 74 69 6f 6e 2c 20 6f 6e | 65 20 66 6f 72 20 64 65 |tion, on|e for de|
|00001e90| 66 61 75 6c 74 69 6e 67 | 20 74 6f 20 73 68 29 20 |faulting| to sh) |
|00001ea0| 2a 2f 0a 58 09 69 66 20 | 28 70 72 69 6e 74 29 0a |*/.X.if |(print).|
|00001eb0| 58 09 09 66 70 72 69 6e | 74 28 32 2c 20 22 25 4c |X..fprin|t(2, "%L|
|00001ec0| 5c 6e 22 2c 20 73 2c 20 | 22 20 22 29 3b 0a 58 09 |\n", s, |" ");.X.|
|00001ed0| 66 6f 72 20 28 69 20 3d | 20 30 3b 20 73 20 21 3d |for (i =| 0; s !=|
|00001ee0| 20 4e 55 4c 4c 3b 20 69 | 2b 2b 29 20 7b 0a 58 09 | NULL; i|++) {.X.|
|00001ef0| 09 61 76 5b 69 5d 20 3d | 20 73 2d 3e 77 3b 0a 58 |.av[i] =| s->w;.X|
|00001f00| 09 09 73 20 3d 20 73 2d | 3e 6e 3b 0a 58 09 7d 0a |..s = s-|>n;.X.}.|
|00001f10| 58 09 61 76 5b 69 5d 20 | 3d 20 4e 55 4c 4c 3b 0a |X.av[i] |= NULL;.|
|00001f20| 58 09 72 65 74 75 72 6e | 20 61 76 3b 0a 58 7d 0a |X.return| av;.X}.|
|00001f30| 58 0a 58 2f 2a 20 66 69 | 67 75 72 65 20 6f 75 74 |X.X/* fi|gure out|
|00001f40| 20 74 68 65 20 6e 61 6d | 65 20 6f 66 20 61 20 76 | the nam|e of a v|
|00001f50| 61 72 69 61 62 6c 65 20 | 67 69 76 65 6e 20 61 6e |ariable |given an|
|00001f60| 20 65 6e 76 69 72 6f 6e | 6d 65 6e 74 20 73 74 72 | environ|ment str|
|00001f70| 69 6e 67 2e 20 63 6f 70 | 79 20 74 68 69 73 20 69 |ing. cop|y this i|
|00001f80| 6e 74 6f 20 6d 61 6c 6c | 6f 63 20 73 70 61 63 65 |nto mall|oc space|
|00001f90| 20 2a 2f 0a 58 0a 58 65 | 78 74 65 72 6e 20 63 68 | */.X.Xe|xtern ch|
|00001fa0| 61 72 20 2a 67 65 74 5f | 6e 61 6d 65 28 63 68 61 |ar *get_|name(cha|
|00001fb0| 72 20 2a 73 29 20 7b 0a | 58 09 69 6e 74 20 63 3b |r *s) {.|X.int c;|
|00001fc0| 0a 58 09 53 49 5a 45 5f | 54 20 69 3b 0a 58 09 63 |.X.SIZE_|T i;.X.c|
|00001fd0| 68 61 72 20 2a 72 2c 20 | 2a 6e 61 6d 65 62 75 66 |har *r, |*namebuf|
|00001fe0| 3b 0a 58 09 66 6f 72 20 | 28 69 20 3d 20 30 3b 20 |;.X.for |(i = 0; |
|00001ff0| 73 5b 69 5d 20 21 3d 20 | 27 5c 30 27 20 26 26 20 |s[i] != |'\0' && |
|00002000| 73 5b 69 5d 20 21 3d 20 | 27 3d 27 3b 20 69 2b 2b |s[i] != |'='; i++|
|00002010| 29 0a 58 09 09 3b 0a 58 | 09 69 66 20 28 73 5b 69 |).X..;.X|.if (s[i|
|00002020| 5d 20 3d 3d 20 27 5c 30 | 27 29 0a 58 09 09 72 65 |] == '\0|').X..re|
|00002030| 74 75 72 6e 20 4e 55 4c | 4c 3b 0a 58 09 72 20 3d |turn NUL|L;.X.r =|
|00002040| 20 6e 61 6d 65 62 75 66 | 20 3d 20 65 61 6c 6c 6f | namebuf| = eallo|
|00002050| 63 28 69 20 2b 20 31 29 | 3b 0a 58 09 77 68 69 6c |c(i + 1)|;.X.whil|
|00002060| 65 20 28 31 29 0a 58 09 | 09 73 77 69 74 63 68 20 |e (1).X.|.switch |
|00002070| 28 63 20 3d 20 2a 73 2b | 2b 29 20 7b 0a 58 09 09 |(c = *s+|+) {.X..|
|00002080| 63 61 73 65 20 27 3d 27 | 3a 0a 58 09 09 09 2a 72 |case '='|:.X...*r|
|00002090| 2b 2b 20 3d 20 27 5c 30 | 27 3b 0a 58 09 09 09 72 |++ = '\0|';.X...r|
|000020a0| 65 74 75 72 6e 20 6e 61 | 6d 65 62 75 66 3b 0a 58 |eturn na|mebuf;.X|
|000020b0| 23 69 66 64 65 66 20 50 | 52 4f 54 45 43 54 5f 45 |#ifdef P|ROTECT_E|
|000020c0| 4e 56 0a 58 09 09 63 61 | 73 65 20 27 5f 27 3a 0a |NV.X..ca|se '_':.|
|000020d0| 58 09 09 09 69 66 20 28 | 2a 73 20 3d 3d 20 27 5f |X...if (|*s == '_|
|000020e0| 27 29 20 7b 0a 58 09 09 | 09 09 73 74 61 74 69 63 |') {.X..|..static|
|000020f0| 20 63 6f 6e 73 74 20 63 | 68 61 72 20 68 65 78 63 | const c|har hexc|
|00002100| 68 61 72 5b 5d 20 3d 20 | 22 30 31 32 33 34 35 36 |har[] = |"0123456|
|00002110| 37 38 39 61 62 63 64 65 | 66 22 3b 0a 58 09 09 09 |789abcde|f";.X...|
|00002120| 09 63 68 61 72 20 2a 68 | 31 20 3d 20 73 74 72 63 |.char *h|1 = strc|
|00002130| 68 72 28 68 65 78 63 68 | 61 72 2c 20 73 5b 31 5d |hr(hexch|ar, s[1]|
|00002140| 29 3b 0a 58 09 09 09 09 | 63 68 61 72 20 2a 68 32 |);.X....|char *h2|
|00002150| 20 3d 20 73 74 72 63 68 | 72 28 68 65 78 63 68 61 | = strch|r(hexcha|
|00002160| 72 2c 20 73 5b 32 5d 29 | 3b 0a 58 09 09 09 09 69 |r, s[2])|;.X....i|
|00002170| 66 20 28 68 31 20 21 3d | 20 4e 55 4c 4c 20 26 26 |f (h1 !=| NULL &&|
|00002180| 20 68 32 20 21 3d 20 4e | 55 4c 4c 29 20 7b 0a 58 | h2 != N|ULL) {.X|
|00002190| 09 09 09 09 09 2a 72 2b | 2b 20 3d 20 28 28 68 31 |.....*r+|+ = ((h1|
|000021a0| 20 2d 20 68 65 78 63 68 | 61 72 29 20 3c 3c 20 34 | - hexch|ar) << 4|
|000021b0| 29 20 7c 20 28 68 32 20 | 2d 20 68 65 78 63 68 61 |) | (h2 |- hexcha|
|000021c0| 72 29 3b 0a 58 09 09 09 | 09 09 73 20 2b 3d 20 33 |r);.X...|..s += 3|
|000021d0| 3b 0a 58 09 09 09 09 09 | 62 72 65 61 6b 3b 0a 58 |;.X.....|break;.X|
|000021e0| 09 09 09 09 7d 0a 58 09 | 09 09 7d 0a 58 09 09 09 |....}.X.|..}.X...|
|000021f0| 2f 2a 20 46 41 4c 4c 54 | 48 52 4f 55 47 48 20 2a |/* FALLT|HROUGH *|
|00002200| 2f 0a 58 23 65 6e 64 69 | 66 0a 58 09 09 64 65 66 |/.X#endi|f.X..def|
|00002210| 61 75 6c 74 3a 0a 58 09 | 09 09 2a 72 2b 2b 20 3d |ault:.X.|..*r++ =|
|00002220| 20 63 3b 0a 58 09 09 09 | 62 72 65 61 6b 3b 0a 58 | c;.X...|break;.X|
|00002230| 09 09 7d 0a 58 7d 0a 58 | 0a 58 2f 2a 20 67 65 74 |..}.X}.X|.X/* get|
|00002240| 20 74 68 65 20 6e 65 78 | 74 20 77 6f 72 64 20 66 | the nex|t word f|
|00002250| 72 6f 6d 20 61 20 76 61 | 72 69 61 62 6c 65 27 73 |rom a va|riable's|
|00002260| 20 76 61 6c 75 65 20 61 | 73 20 72 65 70 72 65 73 | value a|s repres|
|00002270| 65 6e 74 65 64 20 69 6e | 20 74 68 65 20 65 6e 76 |ented in| the env|
|00002280| 69 72 6f 6e 6d 65 6e 74 | 2e 20 2a 2f 0a 58 0a 58 |ironment|. */.X.X|
|00002290| 73 74 61 74 69 63 20 63 | 68 61 72 20 2a 67 65 74 |static c|har *get|
|000022a0| 65 6e 76 77 28 63 68 61 | 72 20 2a 73 2c 20 62 6f |envw(cha|r *s, bo|
|000022b0| 6f 6c 20 73 61 77 5f 61 | 6c 70 68 61 29 20 7b 0a |ol saw_a|lpha) {.|
|000022c0| 58 09 53 49 5a 45 5f 54 | 20 69 3b 0a 58 09 63 68 |X.SIZE_T| i;.X.ch|
|000022d0| 61 72 20 2a 72 3b 0a 58 | 09 66 6f 72 20 28 69 20 |ar *r;.X|.for (i |
|000022e0| 3d 20 30 3b 20 73 5b 69 | 5d 20 21 3d 20 27 5c 30 |= 0; s[i|] != '\0|
|000022f0| 27 20 26 26 20 73 5b 69 | 5d 20 21 3d 20 46 53 43 |' && s[i|] != FSC|
|00002300| 48 41 52 3b 20 69 2b 2b | 29 0a 58 09 09 3b 0a 58 |HAR; i++|).X..;.X|
|00002310| 09 69 66 20 28 69 20 3d | 3d 20 30 29 20 7b 0a 58 |.if (i =|= 0) {.X|
|00002320| 09 09 69 66 20 28 73 5b | 69 5d 20 3d 3d 20 27 5c |..if (s[|i] == '\|
|00002330| 30 27 20 26 26 20 21 73 | 61 77 5f 61 6c 70 68 61 |0' && !s|aw_alpha|
|00002340| 29 0a 58 09 09 09 72 65 | 74 75 72 6e 20 4e 55 4c |).X...re|turn NUL|
|00002350| 4c 3b 0a 58 09 09 65 6c | 73 65 0a 58 09 09 09 72 |L;.X..el|se.X...r|
|00002360| 65 74 75 72 6e 20 63 6c | 65 61 72 28 65 6e 65 77 |eturn cl|ear(enew|
|00002370| 28 63 68 61 72 29 2c 20 | 28 53 49 5a 45 5f 54 29 |(char), |(SIZE_T)|
|00002380| 20 31 29 3b 0a 58 09 7d | 0a 58 09 72 20 3d 20 73 | 1);.X.}|.X.r = s|
|00002390| 74 72 6e 63 70 79 28 65 | 61 6c 6c 6f 63 28 69 20 |trncpy(e|alloc(i |
|000023a0| 2b 20 31 29 2c 20 73 2c | 20 69 29 3b 0a 58 09 72 |+ 1), s,| i);.X.r|
|000023b0| 5b 69 5d 20 3d 20 27 5c | 30 27 3b 0a 58 09 72 65 |[i] = '\|0';.X.re|
|000023c0| 74 75 72 6e 20 72 3b 0a | 58 7d 0a 58 0a 58 2f 2a |turn r;.|X}.X.X/*|
|000023d0| 20 74 61 6b 65 20 61 6e | 20 65 6e 76 69 72 6f 6e | take an| environ|
|000023e0| 6d 65 6e 74 20 65 6e 74 | 72 79 20 66 6f 72 20 61 |ment ent|ry for a|
|000023f0| 20 76 61 72 69 61 62 6c | 65 20 28 65 6c 65 6d 65 | variabl|e (eleme|
|00002400| 6e 74 73 20 5e 41 20 73 | 65 70 61 72 61 74 65 64 |nts ^A s|eparated|
|00002410| 29 20 61 6e 64 20 74 75 | 72 6e 20 69 74 20 69 6e |) and tu|rn it in|
|00002420| 74 6f 20 61 20 4c 69 73 | 74 20 2a 2f 0a 58 0a 58 |to a Lis|t */.X.X|
|00002430| 65 78 74 65 72 6e 20 4c | 69 73 74 20 2a 70 61 72 |extern L|ist *par|
|00002440| 73 65 5f 76 61 72 28 63 | 68 61 72 20 2a 6e 61 6d |se_var(c|har *nam|
|00002450| 65 2c 20 63 68 61 72 20 | 2a 65 78 74 64 65 66 29 |e, char |*extdef)|
|00002460| 20 7b 0a 58 09 4c 69 73 | 74 20 2a 72 2c 20 2a 74 | {.X.Lis|t *r, *t|
|00002470| 6f 70 3b 0a 58 09 63 68 | 61 72 20 2a 66 3b 0a 58 |op;.X.ch|ar *f;.X|
|00002480| 09 62 6f 6f 6c 20 73 61 | 77 5f 61 6c 70 68 61 3b |.bool sa|w_alpha;|
|00002490| 0a 58 09 74 6f 70 20 3d | 20 72 20 3d 20 65 6e 65 |.X.top =| r = ene|
|000024a0| 77 28 4c 69 73 74 29 3b | 0a 58 09 65 78 74 64 65 |w(List);|.X.extde|
|000024b0| 66 20 3d 20 73 74 72 63 | 68 72 28 65 78 74 64 65 |f = strc|hr(extde|
|000024c0| 66 2c 20 27 3d 27 29 20 | 2b 20 31 3b 0a 58 09 69 |f, '=') |+ 1;.X.i|
|000024d0| 66 20 28 28 66 20 3d 20 | 67 65 74 65 6e 76 77 28 |f ((f = |getenvw(|
|000024e0| 65 78 74 64 65 66 2c 20 | 46 41 4c 53 45 29 29 20 |extdef, |FALSE)) |
|000024f0| 3d 3d 20 4e 55 4c 4c 29 | 20 7b 0a 58 09 09 72 2d |== NULL)| {.X..r-|
|00002500| 3e 77 20 3d 20 22 22 3b | 0a 58 09 09 72 2d 3e 6d |>w = "";|.X..r->m|
|00002510| 20 3d 20 4e 55 4c 4c 3b | 0a 58 09 09 72 2d 3e 6e | = NULL;|.X..r->n|
|00002520| 20 3d 20 4e 55 4c 4c 3b | 0a 58 09 7d 20 65 6c 73 | = NULL;|.X.} els|
|00002530| 65 20 7b 0a 58 09 09 77 | 68 69 6c 65 20 28 31 29 |e {.X..w|hile (1)|
|00002540| 20 7b 0a 58 09 09 09 72 | 2d 3e 77 20 3d 20 66 3b | {.X...r|->w = f;|
|00002550| 0a 58 09 09 09 72 2d 3e | 6d 20 3d 20 4e 55 4c 4c |.X...r->|m = NULL|
|00002560| 3b 0a 58 09 09 09 65 78 | 74 64 65 66 20 2b 3d 20 |;.X...ex|tdef += |
|00002570| 73 74 72 6c 65 6e 28 66 | 29 3b 0a 58 09 09 09 69 |strlen(f|);.X...i|
|00002580| 66 20 28 2a 65 78 74 64 | 65 66 20 3d 3d 20 46 53 |f (*extd|ef == FS|
|00002590| 43 48 41 52 29 20 7b 0a | 58 09 09 09 09 65 78 74 |CHAR) {.|X....ext|
|000025a0| 64 65 66 2b 2b 3b 0a 58 | 09 09 09 09 73 61 77 5f |def++;.X|....saw_|
|000025b0| 61 6c 70 68 61 20 3d 20 | 54 52 55 45 3b 0a 58 09 |alpha = |TRUE;.X.|
|000025c0| 09 09 7d 20 65 6c 73 65 | 20 7b 0a 58 09 09 09 09 |..} else| {.X....|
|000025d0| 73 61 77 5f 61 6c 70 68 | 61 20 3d 20 46 41 4c 53 |saw_alph|a = FALS|
|000025e0| 45 3b 0a 58 09 09 09 7d | 0a 58 09 09 09 69 66 20 |E;.X...}|.X...if |
|000025f0| 28 28 66 20 3d 20 67 65 | 74 65 6e 76 77 28 65 78 |((f = ge|tenvw(ex|
|00002600| 74 64 65 66 2c 20 73 61 | 77 5f 61 6c 70 68 61 29 |tdef, sa|w_alpha)|
|00002610| 29 20 3d 3d 20 4e 55 4c | 4c 29 20 7b 0a 58 09 09 |) == NUL|L) {.X..|
|00002620| 09 09 72 2d 3e 6e 20 3d | 20 4e 55 4c 4c 3b 0a 58 |..r->n =| NULL;.X|
|00002630| 09 09 09 09 62 72 65 61 | 6b 3b 0a 58 09 09 09 7d |....brea|k;.X...}|
|00002640| 0a 58 09 09 09 72 20 3d | 20 72 2d 3e 6e 20 3d 20 |.X...r =| r->n = |
|00002650| 65 6e 65 77 28 4c 69 73 | 74 29 3b 0a 58 09 09 7d |enew(Lis|t);.X..}|
|00002660| 0a 58 09 7d 0a 58 09 72 | 65 74 75 72 6e 20 74 6f |.X.}.X.r|eturn to|
|00002670| 70 3b 0a 58 7d 0a 58 0a | 58 2f 2a 20 67 65 74 20 |p;.X}.X.|X/* get |
|00002680| 61 6e 20 65 6e 76 69 72 | 6f 6e 6d 65 6e 74 20 65 |an envir|onment e|
|00002690| 6e 74 72 79 20 66 6f 72 | 20 61 20 66 75 6e 63 74 |ntry for| a funct|
|000026a0| 69 6f 6e 20 61 6e 64 20 | 68 61 76 65 20 72 63 20 |ion and |have rc |
|000026b0| 70 61 72 73 65 20 69 74 | 2e 20 2a 2f 0a 58 0a 58 |parse it|. */.X.X|
|000026c0| 23 64 65 66 69 6e 65 20 | 50 52 45 46 49 58 20 22 |#define |PREFIX "|
|000026d0| 66 6e 20 78 22 0a 58 23 | 64 65 66 69 6e 65 20 50 |fn x".X#|define P|
|000026e0| 52 45 4c 45 4e 20 63 6f | 6e 73 74 73 74 72 6c 65 |RELEN co|nststrle|
|000026f0| 6e 28 50 52 45 46 49 58 | 29 0a 58 65 78 74 65 72 |n(PREFIX|).Xexter|
|00002700| 6e 20 4e 6f 64 65 20 2a | 70 61 72 73 65 5f 66 6e |n Node *|parse_fn|
|00002710| 28 63 68 61 72 20 2a 6e | 61 6d 65 2c 20 63 68 61 |(char *n|ame, cha|
|00002720| 72 20 2a 65 78 74 64 65 | 66 29 20 7b 0a 58 09 4e |r *extde|f) {.X.N|
|00002730| 6f 64 65 20 2a 64 65 66 | 3b 0a 58 09 63 68 61 72 |ode *def|;.X.char|
|00002740| 20 2a 73 2c 20 6f 6c 64 | 5b 50 52 45 4c 45 4e 5d | *s, old|[PRELEN]|
|00002750| 3b 0a 58 09 69 66 20 28 | 28 73 20 3d 20 73 74 72 |;.X.if (|(s = str|
|00002760| 63 68 72 28 65 78 74 64 | 65 66 2c 20 27 3d 27 29 |chr(extd|ef, '=')|
|00002770| 29 20 3d 3d 20 4e 55 4c | 4c 29 0a 58 09 09 72 65 |) == NUL|L).X..re|
|00002780| 74 75 72 6e 20 4e 55 4c | 4c 3b 0a 58 09 6d 65 6d |turn NUL|L;.X.mem|
|00002790| 63 70 79 28 6f 6c 64 2c | 20 73 20 2d 3d 20 28 50 |cpy(old,| s -= (P|
|000027a0| 52 45 4c 45 4e 2d 31 29 | 2c 20 50 52 45 4c 45 4e |RELEN-1)|, PRELEN|
|000027b0| 29 3b 0a 58 09 6d 65 6d | 63 70 79 28 73 2c 20 50 |);.X.mem|cpy(s, P|
|000027c0| 52 45 46 49 58 2c 20 50 | 52 45 4c 45 4e 29 3b 0a |REFIX, P|RELEN);.|
|000027d0| 58 09 64 65 66 20 3d 20 | 70 61 72 73 65 6c 69 6e |X.def = |parselin|
|000027e0| 65 28 73 29 3b 0a 58 09 | 6d 65 6d 63 70 79 28 73 |e(s);.X.|memcpy(s|
|000027f0| 2c 20 6f 6c 64 2c 20 50 | 52 45 4c 45 4e 29 3b 0a |, old, P|RELEN);.|
|00002800| 58 09 72 65 74 75 72 6e | 20 28 64 65 66 20 3d 3d |X.return| (def ==|
|00002810| 20 4e 55 4c 4c 20 7c 7c | 20 64 65 66 2d 3e 74 79 | NULL ||| def->ty|
|00002820| 70 65 20 21 3d 20 6e 4e | 65 77 66 6e 29 20 3f 20 |pe != nN|ewfn) ? |
|00002830| 4e 55 4c 4c 20 3a 20 64 | 65 66 2d 3e 75 5b 31 5d |NULL : d|ef->u[1]|
|00002840| 2e 70 3b 0a 58 7d 0a 58 | 0a 58 73 74 61 74 69 63 |.p;.X}.X|.Xstatic|
|00002850| 20 62 6f 6f 6c 20 41 63 | 6f 6e 76 28 46 6f 72 6d | bool Ac|onv(Form|
|00002860| 61 74 20 2a 66 2c 20 69 | 6e 74 20 63 29 20 7b 0a |at *f, i|nt c) {.|
|00002870| 58 09 63 68 61 72 20 2a | 2a 61 20 3d 20 76 61 5f |X.char *|*a = va_|
|00002880| 61 72 67 28 66 2d 3e 61 | 72 67 73 2c 20 63 68 61 |arg(f->a|rgs, cha|
|00002890| 72 20 2a 2a 29 3b 0a 58 | 09 69 66 20 28 2a 61 20 |r **);.X|.if (*a |
|000028a0| 21 3d 20 4e 55 4c 4c 29 | 20 7b 0a 58 09 09 66 6d |!= NULL)| {.X..fm|
|000028b0| 74 63 61 74 28 66 2c 20 | 2a 61 29 3b 0a 58 09 09 |tcat(f, |*a);.X..|
|000028c0| 77 68 69 6c 65 20 28 2a | 2b 2b 61 20 21 3d 20 4e |while (*|++a != N|
|000028d0| 55 4c 4c 29 0a 58 09 09 | 09 66 6d 74 70 72 69 6e |ULL).X..|.fmtprin|
|000028e0| 74 28 66 2c 20 22 20 25 | 73 22 2c 20 2a 61 29 3b |t(f, " %|s", *a);|
|000028f0| 0a 58 09 7d 0a 58 09 72 | 65 74 75 72 6e 20 46 41 |.X.}.X.r|eturn FA|
|00002900| 4c 53 45 3b 0a 58 7d 0a | 58 0a 58 73 74 61 74 69 |LSE;.X}.|X.Xstati|
|00002910| 63 20 62 6f 6f 6c 20 4c | 63 6f 6e 76 28 46 6f 72 |c bool L|conv(For|
|00002920| 6d 61 74 20 2a 66 2c 20 | 69 6e 74 20 63 29 20 7b |mat *f, |int c) {|
|00002930| 0a 58 09 4c 69 73 74 20 | 2a 6c 20 3d 20 76 61 5f |.X.List |*l = va_|
|00002940| 61 72 67 28 66 2d 3e 61 | 72 67 73 2c 20 4c 69 73 |arg(f->a|rgs, Lis|
|00002950| 74 20 2a 29 3b 0a 58 09 | 63 68 61 72 20 2a 73 65 |t *);.X.|char *se|
|00002960| 70 20 3d 20 76 61 5f 61 | 72 67 28 66 2d 3e 61 72 |p = va_a|rg(f->ar|
|00002970| 67 73 2c 20 63 68 61 72 | 20 2a 29 3b 0a 58 09 63 |gs, char| *);.X.c|
|00002980| 68 61 72 20 2a 66 6d 74 | 20 3d 20 28 66 2d 3e 66 |har *fmt| = (f->f|
|00002990| 6c 61 67 73 20 26 20 46 | 4d 54 5f 6c 65 66 74 73 |lags & F|MT_lefts|
|000029a0| 69 64 65 29 20 3f 20 22 | 25 73 25 73 22 20 3a 20 |ide) ? "|%s%s" : |
|000029b0| 22 25 2d 53 25 73 22 3b | 0a 58 09 69 66 20 28 6c |"%-S%s";|.X.if (l|
|000029c0| 20 3d 3d 20 4e 55 4c 4c | 20 26 26 20 28 66 2d 3e | == NULL| && (f->|
|000029d0| 66 6c 61 67 73 20 26 20 | 46 4d 54 5f 6c 65 66 74 |flags & |FMT_left|
|000029e0| 73 69 64 65 29 20 3d 3d | 20 30 29 0a 58 09 09 66 |side) ==| 0).X..f|
|000029f0| 6d 74 70 72 69 6e 74 28 | 66 2c 20 22 28 29 22 29 |mtprint(|f, "()")|
|00002a00| 3b 0a 58 09 65 6c 73 65 | 20 7b 0a 58 09 09 4c 69 |;.X.else| {.X..Li|
|00002a10| 73 74 20 2a 73 3b 0a 58 | 09 09 66 6f 72 20 28 73 |st *s;.X|..for (s|
|00002a20| 20 3d 20 6c 3b 20 73 20 | 21 3d 20 4e 55 4c 4c 3b | = l; s |!= NULL;|
|00002a30| 20 73 20 3d 20 73 2d 3e | 6e 29 0a 58 09 09 09 66 | s = s->|n).X...f|
|00002a40| 6d 74 70 72 69 6e 74 28 | 66 2c 20 66 6d 74 2c 20 |mtprint(|f, fmt, |
|00002a50| 73 2d 3e 77 2c 20 73 2d | 3e 6e 20 3d 3d 20 4e 55 |s->w, s-|>n == NU|
|00002a60| 4c 4c 20 3f 20 22 22 20 | 3a 20 73 65 70 29 3b 0a |LL ? "" |: sep);.|
|00002a70| 58 09 7d 0a 58 09 72 65 | 74 75 72 6e 20 46 41 4c |X.}.X.re|turn FAL|
|00002a80| 53 45 3b 0a 58 7d 0a 58 | 0a 58 23 64 65 66 69 6e |SE;.X}.X|.X#defin|
|00002a90| 65 09 49 53 4d 45 54 41 | 28 63 29 09 28 63 20 3d |e.ISMETA|(c).(c =|
|00002aa0| 3d 20 27 2a 27 20 7c 7c | 20 63 20 3d 3d 20 27 3f |= '*' ||| c == '?|
|00002ab0| 27 20 7c 7c 20 63 20 3d | 3d 20 27 5b 27 29 0a 58 |' || c =|= '[').X|
|00002ac0| 0a 58 73 74 61 74 69 63 | 20 62 6f 6f 6c 20 53 63 |.Xstatic| bool Sc|
|00002ad0| 6f 6e 76 28 46 6f 72 6d | 61 74 20 2a 66 2c 20 69 |onv(Form|at *f, i|
|00002ae0| 6e 74 20 69 67 6e 6f 72 | 65 29 20 7b 0a 58 09 69 |nt ignor|e) {.X.i|
|00002af0| 6e 74 20 63 3b 0a 58 09 | 75 6e 73 69 67 6e 65 64 |nt c;.X.|unsigned|
|00002b00| 20 63 68 61 72 20 2a 73 | 20 3d 20 76 61 5f 61 72 | char *s| = va_ar|
|00002b10| 67 28 66 2d 3e 61 72 67 | 73 2c 20 75 6e 73 69 67 |g(f->arg|s, unsig|
|00002b20| 6e 65 64 20 63 68 61 72 | 20 2a 29 2c 20 2a 74 20 |ned char| *), *t |
|00002b30| 3d 20 73 3b 0a 58 09 62 | 6f 6f 6c 20 71 75 6f 74 |= s;.X.b|ool quot|
|00002b40| 65 64 20 20 20 20 3d 20 | 28 66 2d 3e 66 6c 61 67 |ed = |(f->flag|
|00002b50| 73 20 26 20 46 4d 54 5f | 61 6c 74 66 6f 72 6d 29 |s & FMT_|altform)|
|00002b60| 20 20 21 3d 20 30 3b 09 | 2f 2a 20 27 23 27 20 2a | != 0;.|/* '#' *|
|00002b70| 2f 0a 58 09 62 6f 6f 6c | 20 6d 65 74 61 71 75 6f |/.X.bool| metaquo|
|00002b80| 74 65 20 3d 20 28 66 2d | 3e 66 6c 61 67 73 20 26 |te = (f-|>flags &|
|00002b90| 20 46 4d 54 5f 6c 65 66 | 74 73 69 64 65 29 20 21 | FMT_lef|tside) !|
|00002ba0| 3d 20 30 3b 09 2f 2a 20 | 27 2d 27 20 2a 2f 0a 58 |= 0;./* |'-' */.X|
|00002bb0| 09 69 66 20 28 2a 73 20 | 3d 3d 20 27 5c 30 27 29 |.if (*s |== '\0')|
|00002bc0| 20 7b 0a 58 09 09 66 6d | 74 70 72 69 6e 74 28 66 | {.X..fm|tprint(f|
|00002bd0| 2c 20 22 27 27 22 29 3b | 0a 58 09 09 72 65 74 75 |, "''");|.X..retu|
|00002be0| 72 6e 20 46 41 4c 53 45 | 3b 0a 58 09 7d 0a 58 09 |rn FALSE|;.X.}.X.|
|00002bf0| 69 66 20 28 21 71 75 6f | 74 65 64 29 20 7b 0a 58 |if (!quo|ted) {.X|
|00002c00| 09 09 77 68 69 6c 65 20 | 28 28 63 20 3d 20 2a 74 |..while |((c = *t|
|00002c10| 2b 2b 29 20 21 3d 20 27 | 5c 30 27 29 0a 58 09 09 |++) != '|\0').X..|
|00002c20| 09 69 66 20 28 6e 77 5b | 63 5d 20 3d 3d 20 31 20 |.if (nw[|c] == 1 |
|00002c30| 7c 7c 20 28 6d 65 74 61 | 71 75 6f 74 65 20 26 26 ||| (meta|quote &&|
|00002c40| 20 49 53 4d 45 54 41 28 | 63 29 29 29 0a 58 09 09 | ISMETA(|c))).X..|
|00002c50| 09 09 67 6f 74 6f 20 71 | 75 6f 74 65 69 74 3b 0a |..goto q|uoteit;.|
|00002c60| 58 09 09 66 6d 74 70 72 | 69 6e 74 28 66 2c 20 22 |X..fmtpr|int(f, "|
|00002c70| 25 73 22 2c 20 73 29 3b | 0a 58 09 09 72 65 74 75 |%s", s);|.X..retu|
|00002c80| 72 6e 20 46 41 4c 53 45 | 3b 0a 58 09 7d 0a 58 71 |rn FALSE|;.X.}.Xq|
|00002c90| 75 6f 74 65 69 74 3a 0a | 58 09 66 6d 74 70 75 74 |uoteit:.|X.fmtput|
|00002ca0| 63 28 66 2c 20 27 5c 27 | 27 29 3b 0a 58 09 77 68 |c(f, '\'|');.X.wh|
|00002cb0| 69 6c 65 20 28 28 63 20 | 3d 20 2a 73 2b 2b 29 20 |ile ((c |= *s++) |
|00002cc0| 21 3d 20 27 5c 30 27 29 | 20 7b 0a 58 09 09 66 6d |!= '\0')| {.X..fm|
|00002cd0| 74 70 75 74 63 28 66 2c | 20 63 29 3b 0a 58 09 09 |tputc(f,| c);.X..|
|00002ce0| 69 66 20 28 63 20 3d 3d | 20 27 5c 27 27 29 0a 58 |if (c ==| '\'').X|
|00002cf0| 09 09 09 66 6d 74 70 75 | 74 63 28 66 2c 20 27 5c |...fmtpu|tc(f, '\|
|00002d00| 27 27 29 3b 0a 58 0a 58 | 09 7d 0a 58 09 66 6d 74 |'');.X.X|.}.X.fmt|
|00002d10| 70 75 74 63 28 66 2c 20 | 27 5c 27 27 29 3b 0a 58 |putc(f, |'\'');.X|
|00002d20| 09 72 65 74 75 72 6e 20 | 46 41 4c 53 45 3b 0a 58 |.return |FALSE;.X|
|00002d30| 7d 0a 58 0a 58 76 6f 69 | 64 20 69 6e 69 74 70 72 |}.X.Xvoi|d initpr|
|00002d40| 69 6e 74 28 76 6f 69 64 | 29 20 7b 0a 58 09 66 6d |int(void|) {.X.fm|
|00002d50| 74 69 6e 73 74 61 6c 6c | 28 27 41 27 2c 20 41 63 |tinstall|('A', Ac|
|00002d60| 6f 6e 76 29 3b 0a 58 09 | 66 6d 74 69 6e 73 74 61 |onv);.X.|fmtinsta|
|00002d70| 6c 6c 28 27 4c 27 2c 20 | 4c 63 6f 6e 76 29 3b 0a |ll('L', |Lconv);.|
|00002d80| 58 09 66 6d 74 69 6e 73 | 74 61 6c 6c 28 27 53 27 |X.fmtins|tall('S'|
|00002d90| 2c 20 53 63 6f 6e 76 29 | 3b 0a 58 09 66 6d 74 69 |, Sconv)|;.X.fmti|
|00002da0| 6e 73 74 61 6c 6c 28 27 | 54 27 2c 20 54 63 6f 6e |nstall('|T', Tcon|
|00002db0| 76 29 3b 0a 58 09 66 6d | 74 69 6e 73 74 61 6c 6c |v);.X.fm|tinstall|
|00002dc0| 28 27 44 27 2c 20 44 63 | 6f 6e 76 29 3b 0a 58 23 |('D', Dc|onv);.X#|
|00002dd0| 69 66 64 65 66 20 50 52 | 4f 54 45 43 54 5f 45 4e |ifdef PR|OTECT_EN|
|00002de0| 56 0a 58 09 66 6d 74 69 | 6e 73 74 61 6c 6c 28 27 |V.X.fmti|nstall('|
|00002df0| 46 27 2c 20 46 63 6f 6e | 76 29 3b 0a 58 23 65 6c |F', Fcon|v);.X#el|
|00002e00| 73 65 0a 58 09 66 6d 74 | 69 6e 73 74 61 6c 6c 28 |se.X.fmt|install(|
|00002e10| 27 46 27 2c 20 66 6d 74 | 69 6e 73 74 61 6c 6c 28 |'F', fmt|install(|
|00002e20| 27 73 27 2c 20 4e 55 4c | 4c 29 29 3b 0a 58 23 65 |'s', NUL|L));.X#e|
|00002e30| 6e 64 69 66 0a 58 7d 0a | 45 4e 44 5f 4f 46 5f 46 |ndif.X}.|END_OF_F|
|00002e40| 49 4c 45 0a 20 20 69 66 | 20 74 65 73 74 20 39 34 |ILE. if| test 94|
|00002e50| 31 31 20 2d 6e 65 20 60 | 77 63 20 2d 63 20 3c 27 |11 -ne `|wc -c <'|
|00002e60| 66 6f 6f 74 6f 62 61 72 | 2e 63 27 60 3b 20 74 68 |footobar|.c'`; th|
|00002e70| 65 6e 0a 20 20 20 20 65 | 63 68 6f 20 73 68 61 72 |en. e|cho shar|
|00002e80| 3a 20 5c 22 27 66 6f 6f | 74 6f 62 61 72 2e 63 27 |: \"'foo|tobar.c'|
|00002e90| 5c 22 20 75 6e 70 61 63 | 6b 65 64 20 77 69 74 68 |\" unpac|ked with|
|00002ea0| 20 77 72 6f 6e 67 20 73 | 69 7a 65 21 0a 20 20 66 | wrong s|ize!. f|
|00002eb0| 69 0a 20 20 23 20 65 6e | 64 20 6f 66 20 27 66 6f |i. # en|d of 'fo|
|00002ec0| 6f 74 6f 62 61 72 2e 63 | 27 0a 66 69 0a 69 66 20 |otobar.c|'.fi.if |
|00002ed0| 74 65 73 74 20 2d 66 20 | 27 67 6c 6f 6d 2e 63 27 |test -f |'glom.c'|
|00002ee0| 20 2d 61 20 22 24 7b 31 | 7d 22 20 21 3d 20 22 2d | -a "${1|}" != "-|
|00002ef0| 63 22 20 3b 20 74 68 65 | 6e 20 0a 20 20 65 63 68 |c" ; the|n . ech|
|00002f00| 6f 20 73 68 61 72 3a 20 | 57 69 6c 6c 20 6e 6f 74 |o shar: |Will not|
|00002f10| 20 63 6c 6f 62 62 65 72 | 20 65 78 69 73 74 69 6e | clobber| existin|
|00002f20| 67 20 66 69 6c 65 20 5c | 22 27 67 6c 6f 6d 2e 63 |g file \|"'glom.c|
|00002f30| 27 5c 22 0a 65 6c 73 65 | 0a 20 20 65 63 68 6f 20 |'\".else|. echo |
|00002f40| 73 68 61 72 3a 20 45 78 | 74 72 61 63 74 69 6e 67 |shar: Ex|tracting|
|00002f50| 20 5c 22 27 67 6c 6f 6d | 2e 63 27 5c 22 20 5c 28 | \"'glom|.c'\" \(|
|00002f60| 38 39 36 33 20 63 68 61 | 72 61 63 74 65 72 73 5c |8963 cha|racters\|
|00002f70| 29 0a 20 20 73 65 64 20 | 22 73 2f 5e 58 2f 2f 22 |). sed |"s/^X//"|
|00002f80| 20 3e 27 67 6c 6f 6d 2e | 63 27 20 3c 3c 27 45 4e | >'glom.|c' <<'EN|
|00002f90| 44 5f 4f 46 5f 46 49 4c | 45 27 0a 58 2f 2a 20 67 |D_OF_FIL|E'.X/* g|
|00002fa0| 6c 6f 6d 2e 63 3a 20 62 | 75 69 6c 64 73 20 61 6e |lom.c: b|uilds an|
|00002fb0| 20 61 72 67 75 6d 65 6e | 74 20 6c 69 73 74 20 6f | argumen|t list o|
|00002fc0| 75 74 20 6f 66 20 77 6f | 72 64 73 2c 20 76 61 72 |ut of wo|rds, var|
|00002fd0| 69 61 62 6c 65 73 2c 20 | 65 74 63 2e 20 2a 2f 0a |iables, |etc. */.|
|00002fe0| 58 0a 58 23 69 6e 63 6c | 75 64 65 20 3c 73 79 73 |X.X#incl|ude <sys|
|00002ff0| 2f 74 79 70 65 73 2e 68 | 3e 0a 58 23 69 6e 63 6c |/types.h|>.X#incl|
|00003000| 75 64 65 20 3c 73 79 73 | 2f 73 74 61 74 2e 68 3e |ude <sys|/stat.h>|
|00003010| 0a 58 23 69 6e 63 6c 75 | 64 65 20 3c 73 69 67 6e |.X#inclu|de <sign|
|00003020| 61 6c 2e 68 3e 0a 58 23 | 69 6e 63 6c 75 64 65 20 |al.h>.X#|include |
|00003030| 22 72 63 2e 68 22 0a 58 | 23 69 66 20 21 64 65 66 |"rc.h".X|#if !def|
|00003040| 69 6e 65 64 28 53 5f 49 | 46 49 46 4f 29 20 26 26 |ined(S_I|FIFO) &&|
|00003050| 20 21 64 65 66 69 6e 65 | 64 28 44 45 56 46 44 29 | !define|d(DEVFD)|
|00003060| 0a 58 23 64 65 66 69 6e | 65 20 4e 4f 43 4d 44 41 |.X#defin|e NOCMDA|
|00003070| 52 47 0a 58 23 65 6e 64 | 69 66 0a 58 0a 58 73 74 |RG.X#end|if.X.Xst|
|00003080| 61 74 69 63 20 4c 69 73 | 74 20 2a 62 61 63 6b 71 |atic Lis|t *backq|
|00003090| 28 4e 6f 64 65 20 2a 2c | 20 4e 6f 64 65 20 2a 29 |(Node *,| Node *)|
|000030a0| 3b 0a 58 73 74 61 74 69 | 63 20 4c 69 73 74 20 2a |;.Xstati|c List *|
|000030b0| 62 71 69 6e 70 75 74 28 | 4c 69 73 74 20 2a 2c 20 |bqinput(|List *, |
|000030c0| 69 6e 74 29 3b 0a 58 73 | 74 61 74 69 63 20 4c 69 |int);.Xs|tatic Li|
|000030d0| 73 74 20 2a 63 6f 75 6e | 74 28 4c 69 73 74 20 2a |st *coun|t(List *|
|000030e0| 29 3b 0a 58 73 74 61 74 | 69 63 20 4c 69 73 74 20 |);.Xstat|ic List |
|000030f0| 2a 6d 6b 63 6d 64 61 72 | 67 28 4e 6f 64 65 20 2a |*mkcmdar|g(Node *|
|00003100| 29 3b 0a 58 0a 58 52 71 | 20 2a 72 65 64 69 72 71 |);.X.XRq| *redirq|
|00003110| 20 3d 20 4e 55 4c 4c 3b | 0a 58 0a 58 65 78 74 65 | = NULL;|.X.Xexte|
|00003120| 72 6e 20 4c 69 73 74 20 | 2a 77 6f 72 64 28 63 68 |rn List |*word(ch|
|00003130| 61 72 20 2a 77 2c 20 63 | 68 61 72 20 2a 6d 29 20 |ar *w, c|har *m) |
|00003140| 7b 0a 58 09 4c 69 73 74 | 20 2a 73 20 3d 20 4e 55 |{.X.List| *s = NU|
|00003150| 4c 4c 3b 0a 58 09 69 66 | 20 28 77 20 21 3d 20 4e |LL;.X.if| (w != N|
|00003160| 55 4c 4c 29 20 7b 0a 58 | 09 09 73 20 3d 20 6e 6e |ULL) {.X|..s = nn|
|00003170| 65 77 28 4c 69 73 74 29 | 3b 0a 58 09 09 73 2d 3e |ew(List)|;.X..s->|
|00003180| 77 20 3d 20 77 3b 0a 58 | 09 09 73 2d 3e 6d 20 3d |w = w;.X|..s->m =|
|00003190| 20 6d 3b 0a 58 09 09 73 | 2d 3e 6e 20 3d 20 4e 55 | m;.X..s|->n = NU|
|000031a0| 4c 4c 3b 0a 58 09 7d 0a | 58 09 72 65 74 75 72 6e |LL;.X.}.|X.return|
|000031b0| 20 73 3b 0a 58 7d 0a 58 | 0a 58 2f 2a 0a 58 20 20 | s;.X}.X|.X/*.X |
|000031c0| 20 41 70 70 65 6e 64 20 | 6c 69 73 74 20 73 32 20 | Append |list s2 |
|000031d0| 74 6f 20 6c 69 73 74 20 | 73 31 20 62 79 20 63 6f |to list |s1 by co|
|000031e0| 70 79 69 6e 67 20 73 31 | 20 61 6e 64 20 6d 61 6b |pying s1| and mak|
|000031f0| 69 6e 67 20 74 68 65 20 | 6e 65 77 20 63 6f 70 79 |ing the |new copy|
|00003200| 0a 58 20 20 20 70 6f 69 | 6e 74 20 61 74 20 73 32 |.X poi|nt at s2|
|00003210| 2e 0a 58 2a 2f 0a 58 0a | 58 65 78 74 65 72 6e 20 |..X*/.X.|Xextern |
|00003220| 4c 69 73 74 20 2a 61 70 | 70 65 6e 64 28 4c 69 73 |List *ap|pend(Lis|
|00003230| 74 20 2a 73 31 2c 20 4c | 69 73 74 20 2a 73 32 29 |t *s1, L|ist *s2)|
|00003240| 20 7b 0a 58 09 4c 69 73 | 74 20 2a 72 2c 20 2a 74 | {.X.Lis|t *r, *t|
|00003250| 6f 70 3b 0a 58 09 69 66 | 20 28 73 31 20 3d 3d 20 |op;.X.if| (s1 == |
|00003260| 4e 55 4c 4c 29 0a 58 09 | 09 72 65 74 75 72 6e 20 |NULL).X.|.return |
|00003270| 73 32 3b 0a 58 09 69 66 | 20 28 73 32 20 3d 3d 20 |s2;.X.if| (s2 == |
|00003280| 4e 55 4c 4c 29 0a 58 09 | 09 72 65 74 75 72 6e 20 |NULL).X.|.return |
|00003290| 73 31 3b 0a 58 09 66 6f | 72 20 28 72 20 3d 20 74 |s1;.X.fo|r (r = t|
|000032a0| 6f 70 20 3d 20 6e 6e 65 | 77 28 4c 69 73 74 29 3b |op = nne|w(List);|
|000032b0| 20 31 3b 20 72 20 3d 20 | 72 2d 3e 6e 20 3d 20 6e | 1; r = |r->n = n|
|000032c0| 6e 65 77 28 4c 69 73 74 | 29 29 20 7b 0a 58 09 09 |new(List|)) {.X..|
|000032d0| 72 2d 3e 77 20 3d 20 73 | 31 2d 3e 77 3b 0a 58 09 |r->w = s|1->w;.X.|
|000032e0| 09 72 2d 3e 6d 20 3d 20 | 73 31 2d 3e 6d 3b 0a 58 |.r->m = |s1->m;.X|
|000032f0| 09 09 69 66 20 28 28 73 | 31 20 3d 20 73 31 2d 3e |..if ((s|1 = s1->|
|00003300| 6e 29 20 3d 3d 20 4e 55 | 4c 4c 29 0a 58 09 09 09 |n) == NU|LL).X...|
|00003310| 62 72 65 61 6b 3b 0a 58 | 09 7d 0a 58 09 72 2d 3e |break;.X|.}.X.r->|
|00003320| 6e 20 3d 20 73 32 3b 0a | 58 09 72 65 74 75 72 6e |n = s2;.|X.return|
|00003330| 20 74 6f 70 3b 0a 58 7d | 0a 58 0a 58 65 78 74 65 | top;.X}|.X.Xexte|
|00003340| 72 6e 20 4c 69 73 74 20 | 2a 63 6f 6e 63 61 74 28 |rn List |*concat(|
|00003350| 4c 69 73 74 20 2a 73 31 | 2c 20 4c 69 73 74 20 2a |List *s1|, List *|
|00003360| 73 32 29 20 7b 0a 58 09 | 69 6e 74 20 6e 31 2c 20 |s2) {.X.|int n1, |
|00003370| 6e 32 3b 0a 58 09 4c 69 | 73 74 20 2a 72 2c 20 2a |n2;.X.Li|st *r, *|
|00003380| 74 6f 70 3b 0a 58 09 69 | 66 20 28 73 31 20 3d 3d |top;.X.i|f (s1 ==|
|00003390| 20 4e 55 4c 4c 29 0a 58 | 09 09 72 65 74 75 72 6e | NULL).X|..return|
|000033a0| 20 73 32 3b 0a 58 09 69 | 66 20 28 73 32 20 3d 3d | s2;.X.i|f (s2 ==|
|000033b0| 20 4e 55 4c 4c 29 0a 58 | 09 09 72 65 74 75 72 6e | NULL).X|..return|
|000033c0| 20 73 31 3b 0a 58 09 69 | 66 20 28 28 6e 31 20 3d | s1;.X.i|f ((n1 =|
|000033d0| 20 6c 69 73 74 6e 65 6c | 28 73 31 29 29 20 21 3d | listnel|(s1)) !=|
|000033e0| 20 28 6e 32 20 3d 20 6c | 69 73 74 6e 65 6c 28 73 | (n2 = l|istnel(s|
|000033f0| 32 29 29 20 26 26 20 6e | 31 20 21 3d 20 31 20 26 |2)) && n|1 != 1 &|
|00003400| 26 20 6e 32 20 21 3d 20 | 31 29 0a 58 09 09 72 63 |& n2 != |1).X..rc|
|00003410| 5f 65 72 72 6f 72 28 22 | 62 61 64 20 63 6f 6e 63 |_error("|bad conc|
|00003420| 61 74 65 6e 61 74 69 6f | 6e 22 29 3b 0a 58 09 66 |atenatio|n");.X.f|
|00003430| 6f 72 20 28 72 20 3d 20 | 74 6f 70 20 3d 20 6e 6e |or (r = |top = nn|
|00003440| 65 77 28 4c 69 73 74 29 | 3b 20 31 3b 20 72 20 3d |ew(List)|; 1; r =|
|00003450| 20 72 2d 3e 6e 20 3d 20 | 6e 6e 65 77 28 4c 69 73 | r->n = |nnew(Lis|
|00003460| 74 29 29 20 7b 0a 58 09 | 09 53 49 5a 45 5f 54 20 |t)) {.X.|.SIZE_T |
|00003470| 78 20 3d 20 73 74 72 6c | 65 6e 28 73 31 2d 3e 77 |x = strl|en(s1->w|
|00003480| 29 3b 0a 58 09 09 53 49 | 5a 45 5f 54 20 79 20 3d |);.X..SI|ZE_T y =|
|00003490| 20 73 74 72 6c 65 6e 28 | 73 32 2d 3e 77 29 3b 0a | strlen(|s2->w);.|
|000034a0| 58 09 09 53 49 5a 45 5f | 54 20 7a 20 3d 20 78 20 |X..SIZE_|T z = x |
|000034b0| 2b 20 79 20 2b 20 31 3b | 0a 58 09 09 72 2d 3e 77 |+ y + 1;|.X..r->w|
|000034c0| 20 3d 20 6e 61 6c 6c 6f | 63 28 7a 29 3b 0a 58 09 | = nallo|c(z);.X.|
|000034d0| 09 73 74 72 63 70 79 28 | 72 2d 3e 77 2c 20 73 31 |.strcpy(|r->w, s1|
|000034e0| 2d 3e 77 29 3b 0a 58 09 | 09 73 74 72 63 61 74 28 |->w);.X.|.strcat(|
|000034f0| 72 2d 3e 77 2c 20 73 32 | 2d 3e 77 29 3b 0a 58 09 |r->w, s2|->w);.X.|
|00003500| 09 69 66 20 28 73 31 2d | 3e 6d 20 3d 3d 20 4e 55 |.if (s1-|>m == NU|
|00003510| 4c 4c 20 26 26 20 73 32 | 2d 3e 6d 20 3d 3d 20 4e |LL && s2|->m == N|
|00003520| 55 4c 4c 29 20 7b 0a 58 | 09 09 09 72 2d 3e 6d 20 |ULL) {.X|...r->m |
|00003530| 3d 20 4e 55 4c 4c 3b 0a | 58 09 09 7d 20 65 6c 73 |= NULL;.|X..} els|
|00003540| 65 20 7b 0a 58 09 09 09 | 72 2d 3e 6d 20 3d 20 6e |e {.X...|r->m = n|
|00003550| 61 6c 6c 6f 63 28 7a 29 | 3b 0a 58 09 09 09 69 66 |alloc(z)|;.X...if|
|00003560| 20 28 73 31 2d 3e 6d 20 | 3d 3d 20 4e 55 4c 4c 29 | (s1->m |== NULL)|
|00003570| 0a 58 09 09 09 09 63 6c | 65 61 72 28 72 2d 3e 6d |.X....cl|ear(r->m|
|00003580| 2c 20 78 29 3b 0a 58 09 | 09 09 65 6c 73 65 0a 58 |, x);.X.|..else.X|
|00003590| 09 09 09 09 6d 65 6d 63 | 70 79 28 72 2d 3e 6d 2c |....memc|py(r->m,|
|000035a0| 20 73 31 2d 3e 6d 2c 20 | 78 29 3b 0a 58 09 09 09 | s1->m, |x);.X...|
|000035b0| 69 66 20 28 73 32 2d 3e | 6d 20 3d 3d 20 4e 55 4c |if (s2->|m == NUL|
|000035c0| 4c 29 0a 58 09 09 09 09 | 63 6c 65 61 72 28 26 72 |L).X....|clear(&r|
|000035d0| 2d 3e 6d 5b 78 5d 2c 20 | 79 29 3b 0a 58 09 09 09 |->m[x], |y);.X...|
|000035e0| 65 6c 73 65 0a 58 09 09 | 09 09 6d 65 6d 63 70 79 |else.X..|..memcpy|
|000035f0| 28 26 72 2d 3e 6d 5b 78 | 5d 2c 20 73 32 2d 3e 6d |(&r->m[x|], s2->m|
|00003600| 2c 20 79 29 3b 0a 58 09 | 09 09 72 2d 3e 6d 5b 7a |, y);.X.|..r->m[z|
|00003610| 5d 20 3d 20 30 3b 0a 58 | 09 09 7d 0a 58 09 09 69 |] = 0;.X|..}.X..i|
|00003620| 66 20 28 6e 31 20 3e 20 | 31 29 0a 58 09 09 09 73 |f (n1 > |1).X...s|
|00003630| 31 20 3d 20 73 31 2d 3e | 6e 3b 0a 58 09 09 69 66 |1 = s1->|n;.X..if|
|00003640| 20 28 6e 32 20 3e 20 31 | 29 0a 58 09 09 09 73 32 | (n2 > 1|).X...s2|
|00003650| 20 3d 20 73 32 2d 3e 6e | 3b 0a 58 09 09 69 66 20 | = s2->n|;.X..if |
|00003660| 28 73 31 20 3d 3d 20 4e | 55 4c 4c 20 7c 7c 20 73 |(s1 == N|ULL || s|
|00003670| 32 20 3d 3d 20 4e 55 4c | 4c 20 7c 7c 20 28 6e 31 |2 == NUL|L || (n1|
|00003680| 20 3d 3d 20 31 20 26 26 | 20 6e 32 20 3d 3d 20 31 | == 1 &&| n2 == 1|
|00003690| 29 29 0a 58 09 09 09 62 | 72 65 61 6b 3b 0a 58 09 |)).X...b|reak;.X.|
|000036a0| 7d 0a 58 09 72 2d 3e 6e | 20 3d 20 4e 55 4c 4c 3b |}.X.r->n| = NULL;|
|000036b0| 0a 58 09 72 65 74 75 72 | 6e 20 74 6f 70 3b 0a 58 |.X.retur|n top;.X|
|000036c0| 7d 0a 58 0a 58 65 78 74 | 65 72 6e 20 4c 69 73 74 |}.X.Xext|ern List|
|000036d0| 20 2a 76 61 72 73 75 62 | 28 4c 69 73 74 20 2a 76 | *varsub|(List *v|
|000036e0| 61 72 2c 20 4c 69 73 74 | 20 2a 73 75 62 73 29 20 |ar, List| *subs) |
|000036f0| 7b 0a 58 09 4c 69 73 74 | 20 2a 72 2c 20 2a 74 6f |{.X.List| *r, *to|
|00003700| 70 3b 0a 58 09 69 6e 74 | 20 6e 20 3d 20 6c 69 73 |p;.X.int| n = lis|
|00003710| 74 6e 65 6c 28 76 61 72 | 29 3b 0a 58 09 66 6f 72 |tnel(var|);.X.for|
|00003720| 20 28 74 6f 70 20 3d 20 | 72 20 3d 20 4e 55 4c 4c | (top = |r = NULL|
|00003730| 3b 20 73 75 62 73 20 21 | 3d 20 4e 55 4c 4c 3b 20 |; subs !|= NULL; |
|00003740| 73 75 62 73 20 3d 20 73 | 75 62 73 2d 3e 6e 29 20 |subs = s|ubs->n) |
|00003750| 7b 0a 58 09 09 69 6e 74 | 20 69 20 3d 20 61 32 75 |{.X..int| i = a2u|
|00003760| 28 73 75 62 73 2d 3e 77 | 29 3b 0a 58 09 09 69 66 |(subs->w|);.X..if|
|00003770| 20 28 69 20 3c 20 31 29 | 0a 58 09 09 09 72 63 5f | (i < 1)|.X...rc_|
|00003780| 65 72 72 6f 72 28 22 62 | 61 64 20 73 75 62 73 63 |error("b|ad subsc|
|00003790| 72 69 70 74 22 29 3b 0a | 58 09 09 69 66 20 28 69 |ript");.|X..if (i|
|000037a0| 20 3c 3d 20 6e 29 20 7b | 0a 58 09 09 09 4c 69 73 | <= n) {|.X...Lis|
|000037b0| 74 20 2a 73 75 62 20 3d | 20 76 61 72 3b 0a 58 09 |t *sub =| var;.X.|
|000037c0| 09 09 77 68 69 6c 65 20 | 28 2d 2d 69 29 0a 58 09 |..while |(--i).X.|
|000037d0| 09 09 09 73 75 62 20 3d | 20 73 75 62 2d 3e 6e 3b |...sub =| sub->n;|
|000037e0| 20 2f 2a 20 6c 6f 6f 70 | 20 75 6e 74 69 6c 20 73 | /* loop| until s|
|000037f0| 75 62 20 3d 3d 20 76 61 | 72 28 69 29 20 2a 2f 0a |ub == va|r(i) */.|
|00003800| 58 09 09 09 69 66 20 28 | 74 6f 70 20 3d 3d 20 4e |X...if (|top == N|
|00003810| 55 4c 4c 29 0a 58 09 09 | 09 09 74 6f 70 20 3d 20 |ULL).X..|..top = |
|00003820| 72 20 3d 20 6e 6e 65 77 | 28 4c 69 73 74 29 3b 0a |r = nnew|(List);.|
|00003830| 58 09 09 09 65 6c 73 65 | 0a 58 09 09 09 09 72 20 |X...else|.X....r |
|00003840| 3d 20 72 2d 3e 6e 20 3d | 20 6e 6e 65 77 28 4c 69 |= r->n =| nnew(Li|
|00003850| 73 74 29 3b 0a 58 09 09 | 09 72 2d 3e 77 20 3d 20 |st);.X..|.r->w = |
|00003860| 73 75 62 2d 3e 77 3b 0a | 58 09 09 09 72 2d 3e 6d |sub->w;.|X...r->m|
|00003870| 20 3d 20 73 75 62 2d 3e | 6d 3b 0a 58 09 09 7d 0a | = sub->|m;.X..}.|
|00003880| 58 09 7d 0a 58 09 69 66 | 20 28 74 6f 70 20 21 3d |X.}.X.if| (top !=|
|00003890| 20 4e 55 4c 4c 29 0a 58 | 09 09 72 2d 3e 6e 20 3d | NULL).X|..r->n =|
|000038a0| 20 4e 55 4c 4c 3b 0a 58 | 09 72 65 74 75 72 6e 20 | NULL;.X|.return |
|000038b0| 74 6f 70 3b 0a 58 7d 0a | 58 0a 58 65 78 74 65 72 |top;.X}.|X.Xexter|
|000038c0| 6e 20 4c 69 73 74 20 2a | 66 6c 61 74 74 65 6e 28 |n List *|flatten(|
|000038d0| 4c 69 73 74 20 2a 73 29 | 20 7b 0a 58 09 4c 69 73 |List *s)| {.X.Lis|
|000038e0| 74 20 2a 72 3b 0a 58 09 | 53 49 5a 45 5f 54 20 73 |t *r;.X.|SIZE_T s|
|000038f0| 74 65 70 3b 0a 58 09 63 | 68 61 72 20 2a 66 3b 0a |tep;.X.c|har *f;.|
|00003900| 58 09 69 66 20 28 73 20 | 3d 3d 20 4e 55 4c 4c 20 |X.if (s |== NULL |
|00003910| 7c 7c 20 73 2d 3e 6e 20 | 3d 3d 20 4e 55 4c 4c 29 ||| s->n |== NULL)|
|00003920| 0a 58 09 09 72 65 74 75 | 72 6e 20 73 3b 0a 58 09 |.X..retu|rn s;.X.|
|00003930| 72 20 3d 20 6e 6e 65 77 | 28 4c 69 73 74 29 3b 0a |r = nnew|(List);.|
|00003940| 58 09 66 20 3d 20 72 2d | 3e 77 20 3d 20 6e 61 6c |X.f = r-|>w = nal|
|00003950| 6c 6f 63 28 6c 69 73 74 | 6c 65 6e 28 73 29 20 2b |loc(list|len(s) +|
|00003960| 20 31 29 3b 0a 58 09 72 | 2d 3e 6d 20 3d 20 4e 55 | 1);.X.r|->m = NU|
|00003970| 4c 4c 3b 20 2f 2a 20 66 | 6c 61 74 74 65 6e 65 64 |LL; /* f|lattened|
|00003980| 20 6c 69 73 74 73 20 63 | 6f 6d 65 20 66 72 6f 6d | lists c|ome from|
|00003990| 20 76 61 72 69 61 62 6c | 65 73 2c 20 73 6f 20 6e | variabl|es, so n|
|000039a0| 6f 20 6d 65 74 61 20 2a | 2f 0a 58 09 72 2d 3e 6e |o meta *|/.X.r->n|
|000039b0| 20 3d 20 4e 55 4c 4c 3b | 0a 58 09 73 74 72 63 70 | = NULL;|.X.strcp|
|000039c0| 79 28 66 2c 20 73 2d 3e | 77 29 3b 0a 58 09 66 20 |y(f, s->|w);.X.f |
|000039d0| 2b 3d 20 73 74 72 6c 65 | 6e 28 73 2d 3e 77 29 3b |+= strle|n(s->w);|
|000039e0| 0a 58 09 64 6f 20 7b 0a | 58 09 09 2a 66 2b 2b 20 |.X.do {.|X..*f++ |
|000039f0| 3d 20 27 20 27 3b 0a 58 | 09 09 73 20 3d 20 73 2d |= ' ';.X|..s = s-|
|00003a00| 3e 6e 3b 0a 58 09 09 73 | 74 65 70 20 3d 20 73 74 |>n;.X..s|tep = st|
|00003a10| 72 6c 65 6e 28 73 2d 3e | 77 29 3b 0a 58 09 09 6d |rlen(s->|w);.X..m|
|00003a20| 65 6d 63 70 79 28 66 2c | 20 73 2d 3e 77 2c 20 73 |emcpy(f,| s->w, s|
|00003a30| 74 65 70 29 3b 0a 58 09 | 09 66 20 2b 3d 20 73 74 |tep);.X.|.f += st|
|00003a40| 65 70 3b 0a 58 09 7d 20 | 77 68 69 6c 65 20 28 73 |ep;.X.} |while (s|
|00003a50| 2d 3e 6e 20 21 3d 20 4e | 55 4c 4c 29 3b 0a 58 09 |->n != N|ULL);.X.|
|00003a60| 2a 66 20 3d 20 27 5c 30 | 27 3b 0a 58 09 72 65 74 |*f = '\0|';.X.ret|
|00003a70| 75 72 6e 20 72 3b 0a 58 | 7d 0a 58 0a 58 73 74 61 |urn r;.X|}.X.Xsta|
|00003a80| 74 69 63 20 4c 69 73 74 | 20 2a 63 6f 75 6e 74 28 |tic List| *count(|
|00003a90| 4c 69 73 74 20 2a 6c 29 | 20 7b 0a 58 09 4c 69 73 |List *l)| {.X.Lis|
|00003aa0| 74 20 2a 73 20 3d 20 6e | 6e 65 77 28 4c 69 73 74 |t *s = n|new(List|
|00003ab0| 29 3b 0a 58 09 73 2d 3e | 77 20 3d 20 6e 70 72 69 |);.X.s->|w = npri|
|00003ac0| 6e 74 28 22 25 64 22 2c | 20 6c 69 73 74 6e 65 6c |nt("%d",| listnel|
|00003ad0| 28 6c 29 29 3b 0a 58 09 | 73 2d 3e 6e 20 3d 20 4e |(l));.X.|s->n = N|
|00003ae0| 55 4c 4c 3b 0a 58 09 73 | 2d 3e 6d 20 3d 20 4e 55 |ULL;.X.s|->m = NU|
|00003af0| 4c 4c 3b 0a 58 09 72 65 | 74 75 72 6e 20 73 3b 0a |LL;.X.re|turn s;.|
|00003b00| 58 7d 0a 58 0a 58 65 78 | 74 65 72 6e 20 76 6f 69 |X}.X.Xex|tern voi|
|00003b10| 64 20 61 73 73 69 67 6e | 28 4c 69 73 74 20 2a 73 |d assign|(List *s|
|00003b20| 31 2c 20 4c 69 73 74 20 | 2a 73 32 2c 20 62 6f 6f |1, List |*s2, boo|
|00003b30| 6c 20 73 74 61 63 6b 29 | 20 7b 0a 58 09 4c 69 73 |l stack)| {.X.Lis|
|00003b40| 74 20 2a 76 61 6c 20 3d | 20 73 32 3b 0a 58 09 69 |t *val =| s2;.X.i|
|00003b50| 66 20 28 73 31 20 3d 3d | 20 4e 55 4c 4c 29 0a 58 |f (s1 ==| NULL).X|
|00003b60| 09 09 72 63 5f 65 72 72 | 6f 72 28 22 6e 75 6c 6c |..rc_err|or("null|
|00003b70| 20 76 61 72 69 61 62 6c | 65 20 6e 61 6d 65 22 29 | variabl|e name")|
|00003b80| 3b 0a 58 09 69 66 20 28 | 73 31 2d 3e 6e 20 21 3d |;.X.if (|s1->n !=|
|00003b90| 20 4e 55 4c 4c 29 0a 58 | 09 09 72 63 5f 65 72 72 | NULL).X|..rc_err|
|00003ba0| 6f 72 28 22 6d 75 6c 74 | 69 2d 77 6f 72 64 20 76 |or("mult|i-word v|
|00003bb0| 61 72 69 61 62 6c 65 20 | 6e 61 6d 65 22 29 3b 0a |ariable |name");.|
|00003bc0| 58 09 69 66 20 28 2a 73 | 31 2d 3e 77 20 3d 3d 20 |X.if (*s|1->w == |
|00003bd0| 27 5c 30 27 29 0a 58 09 | 09 72 63 5f 65 72 72 6f |'\0').X.|.rc_erro|
|00003be0| 72 28 22 7a 65 72 6f 2d | 6c 65 6e 67 74 68 20 76 |r("zero-|length v|
|00003bf0| 61 72 69 61 62 6c 65 20 | 6e 61 6d 65 22 29 3b 0a |ariable |name");.|
|00003c00| 58 09 69 66 20 28 61 32 | 75 28 73 31 2d 3e 77 29 |X.if (a2|u(s1->w)|
|00003c10| 20 21 3d 20 2d 31 29 0a | 58 09 09 72 63 5f 65 72 | != -1).|X..rc_er|
|00003c20| 72 6f 72 28 22 6e 75 6d | 65 72 69 63 20 76 61 72 |ror("num|eric var|
|00003c30| 69 61 62 6c 65 20 6e 61 | 6d 65 22 29 3b 0a 58 09 |iable na|me");.X.|
|00003c40| 69 66 20 28 73 74 72 63 | 68 72 28 73 31 2d 3e 77 |if (strc|hr(s1->w|
|00003c50| 2c 20 27 3d 27 29 20 21 | 3d 20 4e 55 4c 4c 29 0a |, '=') !|= NULL).|
|00003c60| 58 09 09 72 63 5f 65 72 | 72 6f 72 28 22 27 3d 27 |X..rc_er|ror("'='|
|00003c70| 20 69 6e 20 76 61 72 69 | 61 62 6c 65 20 6e 61 6d | in vari|able nam|
|00003c80| 65 22 29 3b 0a 58 09 69 | 66 20 28 2a 73 31 2d 3e |e");.X.i|f (*s1->|
|00003c90| 77 20 3d 3d 20 27 2a 27 | 20 26 26 20 73 31 2d 3e |w == '*'| && s1->|
|00003ca0| 77 5b 31 5d 20 3d 3d 20 | 27 5c 30 27 29 0a 58 09 |w[1] == |'\0').X.|
|00003cb0| 09 76 61 6c 20 3d 20 61 | 70 70 65 6e 64 28 76 61 |.val = a|ppend(va|
|00003cc0| 72 6c 6f 6f 6b 75 70 28 | 22 30 22 29 2c 20 73 32 |rlookup(|"0"), s2|
|00003cd0| 29 3b 20 2f 2a 20 70 72 | 65 73 65 72 76 65 20 24 |); /* pr|eserve $|
|00003ce0| 30 20 77 68 65 6e 20 2a | 20 69 73 20 61 73 73 69 |0 when *| is assi|
|00003cf0| 67 6e 65 64 20 65 78 70 | 6c 69 63 69 74 6c 79 20 |gned exp|licitly |
|00003d00| 2a 2f 0a 58 09 69 66 20 | 28 73 32 20 21 3d 20 4e |*/.X.if |(s2 != N|
|00003d10| 55 4c 4c 20 7c 7c 20 73 | 74 61 63 6b 29 20 7b 0a |ULL || s|tack) {.|
|00003d20| 58 09 09 69 66 20 28 64 | 61 73 68 65 78 29 0a 58 |X..if (d|ashex).X|
|00003d30| 09 09 09 70 72 65 74 74 | 79 70 72 69 6e 74 5f 76 |...prett|yprint_v|
|00003d40| 61 72 28 32 2c 20 73 31 | 2d 3e 77 2c 20 76 61 6c |ar(2, s1|->w, val|
|00003d50| 29 3b 0a 58 09 09 76 61 | 72 61 73 73 69 67 6e 28 |);.X..va|rassign(|
|00003d60| 73 31 2d 3e 77 2c 20 76 | 61 6c 2c 20 73 74 61 63 |s1->w, v|al, stac|
|00003d70| 6b 29 3b 0a 58 09 09 61 | 6c 69 61 73 28 73 31 2d |k);.X..a|lias(s1-|
|00003d80| 3e 77 2c 20 76 61 72 6c | 6f 6f 6b 75 70 28 73 31 |>w, varl|ookup(s1|
|00003d90| 2d 3e 77 29 2c 20 73 74 | 61 63 6b 29 3b 0a 58 09 |->w), st|ack);.X.|
|00003da0| 7d 20 65 6c 73 65 20 7b | 0a 58 09 09 69 66 20 28 |} else {|.X..if (|
|00003db0| 64 61 73 68 65 78 29 0a | 58 09 09 09 70 72 65 74 |dashex).|X...pret|
|00003dc0| 74 79 70 72 69 6e 74 5f | 76 61 72 28 32 2c 20 73 |typrint_|var(2, s|
|00003dd0| 31 2d 3e 77 2c 20 4e 55 | 4c 4c 29 3b 0a 58 09 09 |1->w, NU|LL);.X..|
|00003de0| 76 61 72 72 6d 28 73 31 | 2d 3e 77 2c 20 73 74 61 |varrm(s1|->w, sta|
|00003df0| 63 6b 29 3b 0a 58 09 7d | 0a 58 7d 0a 58 0a 58 2f |ck);.X.}|.X}.X.X/|
|00003e00| 2a 0a 58 20 20 20 54 68 | 65 20 66 6f 6c 6c 6f 77 |*.X Th|e follow|
|00003e10| 69 6e 67 20 74 77 6f 20 | 66 75 6e 63 74 69 6f 6e |ing two |function|
|00003e20| 73 20 61 72 65 20 62 79 | 20 74 68 65 20 63 6f 75 |s are by| the cou|
|00003e30| 72 74 65 73 79 20 6f 66 | 20 50 61 75 6c 20 48 61 |rtesy of| Paul Ha|
|00003e40| 61 68 72 2c 0a 58 20 20 | 20 77 68 6f 20 63 6f 75 |ahr,.X | who cou|
|00003e50| 6c 64 20 6e 6f 74 20 73 | 74 61 6e 64 20 74 68 65 |ld not s|tand the|
|00003e60| 20 69 6e 63 6f 6d 70 65 | 74 65 6e 63 65 20 6f 66 | incompe|tence of|
|00003e70| 20 6d 79 20 6f 77 6e 20 | 62 61 63 6b 71 75 6f 74 | my own |backquot|
|00003e80| 65 20 69 6d 70 6c 65 6d | 65 6e 74 61 74 69 6f 6e |e implem|entation|
|00003e90| 2e 0a 58 2a 2f 0a 58 0a | 58 23 64 65 66 69 6e 65 |..X*/.X.|X#define|
|00003ea0| 20 42 55 46 53 49 5a 45 | 09 28 28 53 49 5a 45 5f | BUFSIZE|.((SIZE_|
|00003eb0| 54 29 20 31 30 30 30 29 | 0a 58 0a 58 73 74 61 74 |T) 1000)|.X.Xstat|
|00003ec0| 69 63 20 4c 69 73 74 20 | 2a 62 71 69 6e 70 75 74 |ic List |*bqinput|
|00003ed0| 28 4c 69 73 74 20 2a 69 | 66 73 2c 20 69 6e 74 20 |(List *i|fs, int |
|00003ee0| 66 64 29 20 7b 0a 58 09 | 63 68 61 72 20 2a 65 6e |fd) {.X.|char *en|
|00003ef0| 64 2c 20 2a 62 75 66 65 | 6e 64 2c 20 2a 73 3b 0a |d, *bufe|nd, *s;.|
|00003f00| 58 09 4c 69 73 74 20 2a | 72 2c 20 2a 74 6f 70 2c |X.List *|r, *top,|
|00003f10| 20 2a 70 72 65 76 3b 0a | 58 09 53 49 5a 45 5f 54 | *prev;.|X.SIZE_T|
|00003f20| 20 72 65 6d 61 69 6e 2c | 20 62 75 66 73 69 7a 65 | remain,| bufsize|
|00003f30| 3b 0a 58 09 63 68 61 72 | 20 69 73 69 66 73 5b 32 |;.X.char| isifs[2|
|00003f40| 35 36 5d 3b 0a 58 09 69 | 6e 74 20 6e 2c 20 73 74 |56];.X.i|nt n, st|
|00003f50| 61 74 65 3b 20 2f 2a 20 | 61 20 73 69 6d 70 6c 65 |ate; /* |a simple|
|00003f60| 20 46 53 41 20 69 73 20 | 75 73 65 64 20 74 6f 20 | FSA is |used to |
|00003f70| 72 65 61 64 20 69 6e 20 | 64 61 74 61 20 2a 2f 0a |read in |data */.|
|00003f80| 58 0a 58 09 63 6c 65 61 | 72 28 69 73 69 66 73 2c |X.X.clea|r(isifs,|
|00003f90| 20 73 69 7a 65 6f 66 20 | 69 73 69 66 73 29 3b 0a | sizeof |isifs);.|
|00003fa0| 58 09 66 6f 72 20 28 69 | 73 69 66 73 5b 27 5c 30 |X.for (i|sifs['\0|
|00003fb0| 27 5d 20 3d 20 54 52 55 | 45 3b 20 69 66 73 20 21 |'] = TRU|E; ifs !|
|00003fc0| 3d 20 4e 55 4c 4c 3b 20 | 69 66 73 20 3d 20 69 66 |= NULL; |ifs = if|
|00003fd0| 73 2d 3e 6e 29 0a 58 09 | 09 66 6f 72 20 28 73 20 |s->n).X.|.for (s |
|00003fe0| 3d 20 69 66 73 2d 3e 77 | 3b 20 2a 73 20 21 3d 20 |= ifs->w|; *s != |
|00003ff0| 27 5c 30 27 3b 20 73 2b | 2b 29 0a 58 09 09 09 69 |'\0'; s+|+).X...i|
|00004000| 73 69 66 73 5b 2a 28 75 | 6e 73 69 67 6e 65 64 20 |sifs[*(u|nsigned |
|00004010| 63 68 61 72 20 2a 29 73 | 5d 20 3d 20 54 52 55 45 |char *)s|] = TRUE|
|00004020| 3b 0a 58 09 72 65 6d 61 | 69 6e 20 3d 20 62 75 66 |;.X.rema|in = buf|
|00004030| 73 69 7a 65 20 3d 20 42 | 55 46 53 49 5a 45 3b 0a |size = B|UFSIZE;.|
|00004040| 58 09 74 6f 70 20 3d 20 | 72 20 3d 20 6e 6e 65 77 |X.top = |r = nnew|
|00004050| 28 4c 69 73 74 29 3b 0a | 58 09 72 2d 3e 77 20 3d |(List);.|X.r->w =|
|00004060| 20 65 6e 64 20 3d 20 6e | 61 6c 6c 6f 63 28 62 75 | end = n|alloc(bu|
|00004070| 66 73 69 7a 65 20 2b 20 | 31 29 3b 0a 58 09 72 2d |fsize + |1);.X.r-|
|00004080| 3e 6d 20 3d 20 4e 55 4c | 4c 3b 0a 58 09 73 74 61 |>m = NUL|L;.X.sta|
|00004090| 74 65 20 3d 20 30 3b 0a | 58 09 70 72 65 76 20 3d |te = 0;.|X.prev =|
|000040a0| 20 4e 55 4c 4c 3b 0a 58 | 0a 58 09 77 68 69 6c 65 | NULL;.X|.X.while|
|000040b0| 20 28 31 29 20 7b 0a 58 | 09 09 69 66 20 28 72 65 | (1) {.X|..if (re|
|000040c0| 6d 61 69 6e 20 3d 3d 20 | 30 29 20 7b 20 2f 2a 20 |main == |0) { /* |
|000040d0| 69 73 20 74 68 65 20 73 | 74 72 69 6e 67 20 62 69 |is the s|tring bi|
|000040e0| 67 67 65 72 20 74 68 61 | 6e 20 74 68 65 20 62 75 |gger tha|n the bu|
|000040f0| 66 66 65 72 3f 20 2a 2f | 0a 58 09 09 09 53 49 5a |ffer? */|.X...SIZ|
|00004100| 45 5f 54 20 6d 20 3d 20 | 65 6e 64 20 2d 20 72 2d |E_T m = |end - r-|
|00004110| 3e 77 3b 0a 58 09 09 09 | 63 68 61 72 20 2a 62 75 |>w;.X...|char *bu|
|00004120| 66 3b 0a 58 09 09 09 77 | 68 69 6c 65 20 28 62 75 |f;.X...w|hile (bu|
|00004130| 66 73 69 7a 65 20 3c 20 | 6d 20 2b 20 42 55 46 53 |fsize < |m + BUFS|
|00004140| 49 5a 45 29 0a 58 09 09 | 09 09 62 75 66 73 69 7a |IZE).X..|..bufsiz|
|00004150| 65 20 2a 3d 20 32 3b 0a | 58 09 09 09 62 75 66 20 |e *= 2;.|X...buf |
|00004160| 3d 20 6e 61 6c 6c 6f 63 | 28 62 75 66 73 69 7a 65 |= nalloc|(bufsize|
|00004170| 20 2b 20 31 29 3b 0a 58 | 09 09 09 6d 65 6d 63 70 | + 1);.X|...memcp|
|00004180| 79 28 62 75 66 2c 20 72 | 2d 3e 77 2c 20 6d 29 3b |y(buf, r|->w, m);|
|00004190| 0a 58 09 09 09 72 2d 3e | 77 20 3d 20 62 75 66 3b |.X...r->|w = buf;|
|000041a0| 0a 58 09 09 09 65 6e 64 | 20 3d 20 26 62 75 66 5b |.X...end| = &buf[|
|000041b0| 6d 5d 3b 0a 58 09 09 09 | 72 65 6d 61 69 6e 20 3d |m];.X...|remain =|
|000041c0| 20 62 75 66 73 69 7a 65 | 20 2d 20 6d 3b 0a 58 09 | bufsize| - m;.X.|
|000041d0| 09 7d 0a 58 09 09 69 66 | 20 28 28 6e 20 3d 20 72 |.}.X..if| ((n = r|
|000041e0| 63 5f 72 65 61 64 28 66 | 64 2c 20 65 6e 64 2c 20 |c_read(f|d, end, |
|000041f0| 72 65 6d 61 69 6e 29 29 | 20 3c 3d 20 30 29 20 7b |remain))| <= 0) {|
|00004200| 0a 58 09 09 09 69 66 20 | 28 6e 20 3d 3d 20 30 29 |.X...if |(n == 0)|
|00004210| 0a 58 09 2f 2a 20 62 72 | 65 61 6b 20 2a 2f 09 09 |.X./* br|eak */..|
|00004220| 62 72 65 61 6b 3b 0a 58 | 09 09 09 75 65 72 72 6f |break;.X|...uerro|
|00004230| 72 28 22 62 61 63 6b 71 | 75 6f 74 65 20 72 65 61 |r("backq|uote rea|
|00004240| 64 22 29 3b 0a 58 09 09 | 09 72 63 5f 65 72 72 6f |d");.X..|.rc_erro|
|00004250| 72 28 4e 55 4c 4c 29 3b | 0a 58 09 09 7d 0a 58 09 |r(NULL);|.X..}.X.|
|00004260| 09 72 65 6d 61 69 6e 20 | 2d 3d 20 6e 3b 0a 58 09 |.remain |-= n;.X.|
|00004270| 09 66 6f 72 20 28 62 75 | 66 65 6e 64 20 3d 20 26 |.for (bu|fend = &|
|00004280| 65 6e 64 5b 6e 5d 3b 20 | 65 6e 64 20 3c 20 62 75 |end[n]; |end < bu|
|00004290| 66 65 6e 64 3b 20 65 6e | 64 2b 2b 29 0a 58 09 09 |fend; en|d++).X..|
|000042a0| 09 69 66 20 28 73 74 61 | 74 65 20 3d 3d 20 30 29 |.if (sta|te == 0)|
|000042b0| 20 7b 0a 58 09 09 09 09 | 69 66 20 28 21 69 73 69 | {.X....|if (!isi|
|000042c0| 66 73 5b 2a 28 75 6e 73 | 69 67 6e 65 64 20 63 68 |fs[*(uns|igned ch|
|000042d0| 61 72 20 2a 29 65 6e 64 | 5d 29 20 7b 0a 58 09 09 |ar *)end|]) {.X..|
|000042e0| 09 09 09 73 74 61 74 65 | 20 3d 20 31 3b 0a 58 09 |...state| = 1;.X.|
|000042f0| 09 09 09 09 72 2d 3e 77 | 20 3d 20 65 6e 64 3b 0a |....r->w| = end;.|
|00004300| 58 09 09 09 09 7d 0a 58 | 09 09 09 7d 20 65 6c 73 |X....}.X|...} els|
|00004310| 65 20 7b 0a 58 09 09 09 | 09 69 66 20 28 69 73 69 |e {.X...|.if (isi|
|00004320| 66 73 5b 2a 28 75 6e 73 | 69 67 6e 65 64 20 63 68 |fs[*(uns|igned ch|
|00004330| 61 72 20 2a 29 65 6e 64 | 5d 29 20 7b 0a 58 09 09 |ar *)end|]) {.X..|
|00004340| 09 09 09 73 74 61 74 65 | 20 3d 20 30 3b 0a 58 09 |...state| = 0;.X.|
|00004350| 09 09 09 09 2a 65 6e 64 | 20 3d 20 27 5c 30 27 3b |....*end| = '\0';|
|00004360| 0a 58 09 09 09 09 09 70 | 72 65 76 20 3d 20 72 3b |.X.....p|rev = r;|
|00004370| 0a 58 09 09 09 09 09 72 | 20 3d 20 72 2d 3e 6e 20 |.X.....r| = r->n |
|00004380| 3d 20 6e 6e 65 77 28 4c | 69 73 74 29 3b 0a 58 09 |= nnew(L|ist);.X.|
|00004390| 09 09 09 09 72 2d 3e 77 | 20 3d 20 65 6e 64 2b 31 |....r->w| = end+1|
|000043a0| 3b 0a 58 09 09 09 09 09 | 72 2d 3e 6d 20 3d 20 4e |;.X.....|r->m = N|
|000043b0| 55 4c 4c 3b 0a 58 09 09 | 09 09 7d 0a 58 09 09 09 |ULL;.X..|..}.X...|
|000043c0| 7d 0a 58 09 7d 0a 58 09 | 69 66 20 28 73 74 61 74 |}.X.}.X.|if (stat|
|000043d0| 65 20 3d 3d 20 31 29 20 | 7b 20 2f 2a 20 74 65 72 |e == 1) |{ /* ter|
|000043e0| 6d 69 6e 61 74 65 20 6c | 61 73 74 20 73 74 72 69 |minate l|ast stri|
|000043f0| 6e 67 20 2a 2f 0a 58 09 | 09 2a 65 6e 64 20 3d 20 |ng */.X.|.*end = |
|00004400| 27 5c 30 27 3b 0a 58 09 | 09 72 2d 3e 6e 20 3d 20 |'\0';.X.|.r->n = |
|00004410| 4e 55 4c 4c 3b 0a 58 09 | 7d 20 65 6c 73 65 20 7b |NULL;.X.|} else {|
|00004420| 0a 58 09 09 69 66 20 28 | 70 72 65 76 20 3d 3d 20 |.X..if (|prev == |
|00004430| 4e 55 4c 4c 29 20 2f 2a | 20 6e 6f 20 69 6e 70 75 |NULL) /*| no inpu|
|00004440| 74 20 61 74 20 61 6c 6c | 3f 20 2a 2f 0a 58 09 09 |t at all|? */.X..|
|00004450| 09 74 6f 70 20 3d 20 4e | 55 4c 4c 3b 0a 58 09 09 |.top = N|ULL;.X..|
|00004460| 65 6c 73 65 0a 58 09 09 | 09 70 72 65 76 2d 3e 6e |else.X..|.prev->n|
|00004470| 20 3d 20 4e 55 4c 4c 3b | 20 2f 2a 20 65 6c 73 65 | = NULL;| /* else|
|00004480| 20 74 65 72 6d 69 6e 61 | 74 65 20 6c 69 73 74 20 | termina|te list |
|00004490| 2a 2f 0a 58 09 7d 0a 58 | 09 72 65 74 75 72 6e 20 |*/.X.}.X|.return |
|000044a0| 74 6f 70 3b 0a 58 7d 0a | 58 0a 58 73 74 61 74 69 |top;.X}.|X.Xstati|
|000044b0| 63 20 4c 69 73 74 20 2a | 62 61 63 6b 71 28 4e 6f |c List *|backq(No|
|000044c0| 64 65 20 2a 69 66 73 2c | 20 4e 6f 64 65 20 2a 6e |de *ifs,| Node *n|
|000044d0| 29 20 7b 0a 58 09 69 6e | 74 20 70 5b 32 5d 2c 20 |) {.X.in|t p[2], |
|000044e0| 70 69 64 2c 20 73 70 3b | 0a 58 09 4c 69 73 74 20 |pid, sp;|.X.List |
|000044f0| 2a 62 71 3b 0a 58 09 69 | 66 20 28 6e 20 3d 3d 20 |*bq;.X.i|f (n == |
|00004500| 4e 55 4c 4c 29 0a 58 09 | 09 72 65 74 75 72 6e 20 |NULL).X.|.return |
|00004510| 4e 55 4c 4c 3b 0a 58 09 | 69 66 20 28 70 69 70 65 |NULL;.X.|if (pipe|
|00004520| 28 70 29 20 3c 20 30 29 | 20 7b 0a 58 09 09 75 65 |(p) < 0)| {.X..ue|
|00004530| 72 72 6f 72 28 22 70 69 | 70 65 22 29 3b 0a 58 09 |rror("pi|pe");.X.|
|00004540| 09 72 63 5f 65 72 72 6f | 72 28 4e 55 4c 4c 29 3b |.rc_erro|r(NULL);|
|00004550| 0a 58 09 7d 0a 58 09 69 | 66 20 28 28 70 69 64 20 |.X.}.X.i|f ((pid |
|00004560| 3d 20 72 63 5f 66 6f 72 | 6b 28 29 29 20 3d 3d 20 |= rc_for|k()) == |
|00004570| 30 29 20 7b 0a 58 09 09 | 73 65 74 73 69 67 64 65 |0) {.X..|setsigde|
|00004580| 66 61 75 6c 74 73 28 46 | 41 4c 53 45 29 3b 0a 58 |faults(F|ALSE);.X|
|00004590| 09 09 6d 76 66 64 28 70 | 5b 31 5d 2c 20 31 29 3b |..mvfd(p|[1], 1);|
|000045a0| 0a 58 09 09 63 6c 6f 73 | 65 28 70 5b 30 5d 29 3b |.X..clos|e(p[0]);|
|000045b0| 0a 58 09 09 72 65 64 69 | 72 71 20 3d 20 4e 55 4c |.X..redi|rq = NUL|
|000045c0| 4c 3b 0a 58 09 09 77 61 | 6c 6b 28 6e 2c 20 46 41 |L;.X..wa|lk(n, FA|
|000045d0| 4c 53 45 29 3b 0a 58 09 | 09 65 78 69 74 28 67 65 |LSE);.X.|.exit(ge|
|000045e0| 74 73 74 61 74 75 73 28 | 29 29 3b 0a 58 09 7d 0a |tstatus(|));.X.}.|
|000045f0| 58 09 63 6c 6f 73 65 28 | 70 5b 31 5d 29 3b 0a 58 |X.close(|p[1]);.X|
|00004600| 09 62 71 20 3d 20 62 71 | 69 6e 70 75 74 28 67 6c |.bq = bq|input(gl|
|00004610| 6f 6d 28 69 66 73 29 2c | 20 70 5b 30 5d 29 3b 0a |om(ifs),| p[0]);.|
|00004620| 58 09 63 6c 6f 73 65 28 | 70 5b 30 5d 29 3b 0a 58 |X.close(|p[0]);.X|
|00004630| 09 72 63 5f 77 61 69 74 | 34 28 70 69 64 2c 20 26 |.rc_wait|4(pid, &|
|00004640| 73 70 2c 20 54 52 55 45 | 29 3b 0a 58 09 73 74 61 |sp, TRUE|);.X.sta|
|00004650| 74 70 72 69 6e 74 28 2d | 31 2c 20 73 70 29 3b 0a |tprint(-|1, sp);.|
|00004660| 58 09 53 49 47 43 48 4b | 3b 0a 58 09 72 65 74 75 |X.SIGCHK|;.X.retu|
|00004670| 72 6e 20 62 71 3b 0a 58 | 7d 0a 58 0a 58 65 78 74 |rn bq;.X|}.X.Xext|
|00004680| 65 72 6e 20 76 6f 69 64 | 20 71 72 65 64 69 72 28 |ern void| qredir(|
|00004690| 4e 6f 64 65 20 2a 6e 29 | 20 7b 0a 58 09 52 71 20 |Node *n)| {.X.Rq |
|000046a0| 2a 6e 65 78 74 3b 0a 58 | 09 69 66 20 28 72 65 64 |*next;.X|.if (red|
|000046b0| 69 72 71 20 3d 3d 20 4e | 55 4c 4c 29 20 7b 0a 58 |irq == N|ULL) {.X|
|000046c0| 09 09 6e 65 78 74 20 3d | 20 72 65 64 69 72 71 20 |..next =| redirq |
|000046d0| 3d 20 6e 6e 65 77 28 52 | 71 29 3b 0a 58 09 7d 20 |= nnew(R|q);.X.} |
|000046e0| 65 6c 73 65 20 7b 0a 58 | 09 09 66 6f 72 20 28 6e |else {.X|..for (n|
|000046f0| 65 78 74 20 3d 20 72 65 | 64 69 72 71 3b 20 6e 65 |ext = re|dirq; ne|
|00004700| 78 74 2d 3e 6e 20 21 3d | 20 4e 55 4c 4c 3b 20 6e |xt->n !=| NULL; n|
|00004710| 65 78 74 20 3d 20 6e 65 | 78 74 2d 3e 6e 29 0a 58 |ext = ne|xt->n).X|
|00004720| 09 09 09 3b 0a 58 09 09 | 6e 65 78 74 2d 3e 6e 20 |...;.X..|next->n |
|00004730| 3d 20 6e 6e 65 77 28 52 | 71 29 3b 0a 58 09 09 6e |= nnew(R|q);.X..n|
|00004740| 65 78 74 20 3d 20 6e 65 | 78 74 2d 3e 6e 3b 0a 58 |ext = ne|xt->n;.X|
|00004750| 09 7d 0a 58 09 6e 65 78 | 74 2d 3e 72 20 3d 20 6e |.}.X.nex|t->r = n|
|00004760| 3b 0a 58 09 6e 65 78 74 | 2d 3e 6e 20 3d 20 4e 55 |;.X.next|->n = NU|
|00004770| 4c 4c 3b 0a 58 7d 0a 58 | 0a 58 23 69 66 64 65 66 |LL;.X}.X|.X#ifdef|
|00004780| 20 4e 4f 43 4d 44 41 52 | 47 0a 58 73 74 61 74 69 | NOCMDAR|G.Xstati|
|00004790| 63 20 4c 69 73 74 20 2a | 6d 6b 63 6d 64 61 72 67 |c List *|mkcmdarg|
|000047a0| 28 4e 6f 64 65 20 2a 6e | 29 20 7b 0a 58 09 72 63 |(Node *n|) {.X.rc|
|000047b0| 5f 65 72 72 6f 72 28 22 | 6e 61 6d 65 64 20 70 69 |_error("|named pi|
|000047c0| 70 65 73 20 61 72 65 20 | 6e 6f 74 20 73 75 70 70 |pes are |not supp|
|000047d0| 6f 72 74 65 64 22 29 3b | 0a 58 09 72 65 74 75 72 |orted");|.X.retur|
|000047e0| 6e 20 4e 55 4c 4c 3b 0a | 58 7d 0a 58 23 65 6c 73 |n NULL;.|X}.X#els|
|000047f0| 65 0a 58 23 69 66 6e 64 | 65 66 20 44 45 56 46 44 |e.X#ifnd|ef DEVFD|
|00004800| 0a 58 73 74 61 74 69 63 | 20 4c 69 73 74 20 2a 6d |.Xstatic| List *m|
|00004810| 6b 63 6d 64 61 72 67 28 | 4e 6f 64 65 20 2a 6e 29 |kcmdarg(|Node *n)|
|00004820| 20 7b 0a 58 09 69 6e 74 | 20 66 64 3b 0a 58 09 63 | {.X.int| fd;.X.c|
|00004830| 68 61 72 20 2a 6e 61 6d | 65 3b 0a 58 09 45 64 61 |har *nam|e;.X.Eda|
|00004840| 74 61 20 65 66 69 66 6f | 3b 0a 58 09 45 73 74 61 |ta efifo|;.X.Esta|
|00004850| 63 6b 20 2a 65 20 3d 20 | 65 6e 65 77 28 45 73 74 |ck *e = |enew(Est|
|00004860| 61 63 6b 29 3b 0a 58 09 | 4c 69 73 74 20 2a 72 65 |ack);.X.|List *re|
|00004870| 74 20 3d 20 6e 6e 65 77 | 28 4c 69 73 74 29 3b 0a |t = nnew|(List);.|
|00004880| 58 09 73 74 61 74 69 63 | 20 69 6e 74 20 66 69 66 |X.static| int fif|
|00004890| 6f 6e 75 6d 62 65 72 20 | 3d 20 30 3b 0a 58 09 6e |onumber |= 0;.X.n|
|000048a0| 61 6d 65 20 3d 20 6e 70 | 72 69 6e 74 28 22 25 73 |ame = np|rint("%s|
|000048b0| 2f 72 63 25 64 2e 25 64 | 22 2c 20 54 4d 50 44 49 |/rc%d.%d|", TMPDI|
|000048c0| 52 2c 20 67 65 74 70 69 | 64 28 29 2c 20 66 69 66 |R, getpi|d(), fif|
|000048d0| 6f 6e 75 6d 62 65 72 2b | 2b 29 3b 0a 58 09 69 66 |onumber+|+);.X.if|
|000048e0| 20 28 6d 6b 6e 6f 64 28 | 6e 61 6d 65 2c 20 53 5f | (mknod(|name, S_|
|000048f0| 49 46 49 46 4f 20 7c 20 | 30 36 36 36 2c 20 30 29 |IFIFO | |0666, 0)|
|00004900| 20 3c 20 30 29 20 7b 0a | 58 09 09 75 65 72 72 6f | < 0) {.|X..uerro|
|00004910| 72 28 22 6d 6b 6e 6f 64 | 22 29 3b 0a 58 09 09 72 |r("mknod|");.X..r|
|00004920| 65 74 75 72 6e 20 4e 55 | 4c 4c 3b 0a 58 09 7d 0a |eturn NU|LL;.X.}.|
|00004930| 58 09 69 66 20 28 72 63 | 5f 66 6f 72 6b 28 29 20 |X.if (rc|_fork() |
|00004940| 3d 3d 20 30 29 20 7b 0a | 58 09 09 73 65 74 73 69 |== 0) {.|X..setsi|
|00004950| 67 64 65 66 61 75 6c 74 | 73 28 46 41 4c 53 45 29 |gdefault|s(FALSE)|
|00004960| 3b 0a 58 09 09 66 64 20 | 3d 20 72 63 5f 6f 70 65 |;.X..fd |= rc_ope|
|00004970| 6e 28 6e 61 6d 65 2c 20 | 28 6e 2d 3e 75 5b 30 5d |n(name, |(n->u[0]|
|00004980| 2e 69 20 21 3d 20 72 46 | 72 6f 6d 29 20 3f 20 72 |.i != rF|rom) ? r|
|00004990| 46 72 6f 6d 20 3a 20 72 | 43 72 65 61 74 65 29 3b |From : r|Create);|
|000049a0| 20 2f 2a 20 73 74 75 70 | 69 64 20 68 61 63 6b 20 | /* stup|id hack |
|000049b0| 2a 2f 0a 58 09 09 69 66 | 20 28 66 64 20 3c 20 30 |*/.X..if| (fd < 0|
|000049c0| 29 20 7b 0a 58 09 09 09 | 75 65 72 72 6f 72 28 22 |) {.X...|uerror("|
|000049d0| 6f 70 65 6e 22 29 3b 0a | 58 09 09 09 65 78 69 74 |open");.|X...exit|
|000049e0| 28 31 29 3b 0a 58 09 09 | 7d 0a 58 09 09 69 66 20 |(1);.X..|}.X..if |
|000049f0| 28 6d 76 66 64 28 66 64 | 2c 20 28 6e 2d 3e 75 5b |(mvfd(fd|, (n->u[|
|00004a00| 30 5d 2e 69 20 3d 3d 20 | 72 46 72 6f 6d 29 29 20 |0].i == |rFrom)) |
|00004a10| 3c 20 30 29 20 2f 2a 20 | 73 61 6d 65 20 73 74 75 |< 0) /* |same stu|
|00004a20| 70 69 64 20 68 61 63 6b | 20 2a 2f 0a 58 09 09 09 |pid hack| */.X...|
|00004a30| 65 78 69 74 28 31 29 3b | 0a 58 09 09 72 65 64 69 |exit(1);|.X..redi|
|00004a40| 72 71 20 3d 20 4e 55 4c | 4c 3b 0a 58 09 09 77 61 |rq = NUL|L;.X..wa|
|00004a50| 6c 6b 28 6e 2d 3e 75 5b | 32 5d 2e 70 2c 20 46 41 |lk(n->u[|2].p, FA|
|00004a60| 4c 53 45 29 3b 0a 58 09 | 09 65 78 69 74 28 67 65 |LSE);.X.|.exit(ge|
|00004a70| 74 73 74 61 74 75 73 28 | 29 29 3b 0a 58 09 7d 0a |tstatus(|));.X.}.|
|00004a80| 58 09 65 66 69 66 6f 2e | 6e 61 6d 65 20 3d 20 6e |X.efifo.|name = n|
|00004a90| 61 6d 65 3b 0a 58 09 65 | 78 63 65 70 74 28 65 46 |ame;.X.e|xcept(eF|
|00004aa0| 69 66 6f 2c 20 65 66 69 | 66 6f 2c 20 65 29 3b 0a |ifo, efi|fo, e);.|
|00004ab0| 58 09 72 65 74 2d 3e 77 | 20 3d 20 6e 61 6d 65 3b |X.ret->w| = name;|
|00004ac0| 0a 58 09 72 65 74 2d 3e | 6d 20 3d 20 4e 55 4c 4c |.X.ret->|m = NULL|
|00004ad0| 3b 0a 58 09 72 65 74 2d | 3e 6e 20 3d 20 4e 55 4c |;.X.ret-|>n = NUL|
|00004ae0| 4c 3b 0a 58 09 72 65 74 | 75 72 6e 20 72 65 74 3b |L;.X.ret|urn ret;|
|00004af0| 0a 58 7d 0a 58 23 65 6c | 73 65 0a 58 73 74 61 74 |.X}.X#el|se.Xstat|
|00004b00| 69 63 20 4c 69 73 74 20 | 2a 6d 6b 63 6d 64 61 72 |ic List |*mkcmdar|
|00004b10| 67 28 4e 6f 64 65 20 2a | 6e 29 20 7b 0a 58 09 63 |g(Node *|n) {.X.c|
|00004b20| 68 61 72 20 2a 6e 61 6d | 65 3b 0a 58 09 4c 69 73 |har *nam|e;.X.Lis|
|00004b30| 74 20 2a 72 65 74 20 3d | 20 6e 6e 65 77 28 4c 69 |t *ret =| nnew(Li|
|00004b40| 73 74 29 3b 0a 58 09 45 | 73 74 61 63 6b 20 2a 65 |st);.X.E|stack *e|
|00004b50| 20 3d 20 6e 6e 65 77 28 | 45 73 74 61 63 6b 29 3b | = nnew(|Estack);|
|00004b60| 0a 58 09 45 64 61 74 61 | 20 65 66 64 3b 0a 58 09 |.X.Edata| efd;.X.|
|00004b70| 69 6e 74 20 70 5b 32 5d | 3b 0a 58 09 69 66 20 28 |int p[2]|;.X.if (|
|00004b80| 70 69 70 65 28 70 29 20 | 3c 20 30 29 20 7b 0a 58 |pipe(p) |< 0) {.X|
|00004b90| 09 09 75 65 72 72 6f 72 | 28 22 70 69 70 65 22 29 |..uerror|("pipe")|
|00004ba0| 3b 0a 58 09 09 72 65 74 | 75 72 6e 20 4e 55 4c 4c |;.X..ret|urn NULL|
|00004bb0| 3b 0a 58 09 7d 0a 58 09 | 69 66 20 28 72 63 5f 66 |;.X.}.X.|if (rc_f|
|00004bc0| 6f 72 6b 28 29 20 3d 3d | 20 30 29 20 7b 0a 58 09 |ork() ==| 0) {.X.|
|00004bd0| 09 73 65 74 73 69 67 64 | 65 66 61 75 6c 74 73 28 |.setsigd|efaults(|
|00004be0| 46 41 4c 53 45 29 3b 0a | 58 09 09 69 66 20 28 6d |FALSE);.|X..if (m|
|00004bf0| 76 66 64 28 70 5b 6e 2d | 3e 75 5b 30 5d 2e 69 20 |vfd(p[n-|>u[0].i |
|00004c00| 3d 3d 20 72 46 72 6f 6d | 5d 2c 20 6e 2d 3e 75 5b |== rFrom|], n->u[|
|00004c10| 30 5d 2e 69 20 3d 3d 20 | 72 46 72 6f 6d 29 20 3c |0].i == |rFrom) <|
|00004c20| 20 30 29 20 2f 2a 20 73 | 74 75 70 69 64 20 68 61 | 0) /* s|tupid ha|
|00004c30| 63 6b 20 2a 2f 0a 58 09 | 09 09 65 78 69 74 28 31 |ck */.X.|..exit(1|
|00004c40| 29 3b 0a 58 09 09 63 6c | 6f 73 65 28 70 5b 6e 2d |);.X..cl|ose(p[n-|
|00004c50| 3e 75 5b 30 5d 2e 69 20 | 21 3d 20 72 46 72 6f 6d |>u[0].i |!= rFrom|
|00004c60| 5d 29 3b 0a 58 09 09 72 | 65 64 69 72 71 20 3d 20 |]);.X..r|edirq = |
|00004c70| 4e 55 4c 4c 3b 0a 58 09 | 09 77 61 6c 6b 28 6e 2d |NULL;.X.|.walk(n-|
|00004c80| 3e 75 5b 32 5d 2e 70 2c | 20 46 41 4c 53 45 29 3b |>u[2].p,| FALSE);|
|00004c90| 0a 58 09 09 65 78 69 74 | 28 67 65 74 73 74 61 74 |.X..exit|(getstat|
|00004ca0| 75 73 28 29 29 3b 0a 58 | 09 7d 0a 58 09 6e 61 6d |us());.X|.}.X.nam|
|00004cb0| 65 20 3d 20 6e 70 72 69 | 6e 74 28 22 2f 64 65 76 |e = npri|nt("/dev|
|00004cc0| 2f 66 64 2f 25 64 22 2c | 20 70 5b 6e 2d 3e 75 5b |/fd/%d",| p[n->u[|
|00004cd0| 30 5d 2e 69 20 21 3d 20 | 72 46 72 6f 6d 5d 29 3b |0].i != |rFrom]);|
|00004ce0| 0a 58 09 65 66 64 2e 66 | 64 20 3d 20 70 5b 6e 2d |.X.efd.f|d = p[n-|
|00004cf0| 3e 75 5b 30 5d 2e 69 20 | 21 3d 20 72 46 72 6f 6d |>u[0].i |!= rFrom|
|00004d00| 5d 3b 0a 58 09 65 78 63 | 65 70 74 28 65 46 64 2c |];.X.exc|ept(eFd,|
|00004d10| 20 65 66 64 2c 20 65 29 | 3b 0a 58 09 63 6c 6f 73 | efd, e)|;.X.clos|
|00004d20| 65 28 70 5b 6e 2d 3e 75 | 5b 30 5d 2e 69 20 3d 3d |e(p[n->u|[0].i ==|
|00004d30| 20 72 46 72 6f 6d 5d 29 | 3b 0a 58 09 72 65 74 2d | rFrom])|;.X.ret-|
|00004d40| 3e 77 20 3d 20 6e 61 6d | 65 3b 0a 58 09 72 65 74 |>w = nam|e;.X.ret|
|00004d50| 2d 3e 6d 20 3d 20 4e 55 | 4c 4c 3b 0a 58 09 72 65 |->m = NU|LL;.X.re|
|00004d60| 74 2d 3e 6e 20 3d 20 4e | 55 4c 4c 3b 0a 58 09 72 |t->n = N|ULL;.X.r|
|00004d70| 65 74 75 72 6e 20 72 65 | 74 3b 0a 58 7d 0a 58 23 |eturn re|t;.X}.X#|
|00004d80| 65 6e 64 69 66 20 2f 2a | 20 44 45 56 46 44 20 2a |endif /*| DEVFD *|
|00004d90| 2f 0a 58 23 65 6e 64 69 | 66 20 2f 2a 20 21 4e 4f |/.X#endi|f /* !NO|
|00004da0| 43 4d 44 41 52 47 20 2a | 2f 0a 58 0a 58 65 78 74 |CMDARG *|/.X.Xext|
|00004db0| 65 72 6e 20 4c 69 73 74 | 20 2a 67 6c 6f 6d 28 4e |ern List| *glom(N|
|00004dc0| 6f 64 65 20 2a 6e 29 20 | 7b 0a 58 09 4c 69 73 74 |ode *n) |{.X.List|
|00004dd0| 20 2a 76 2c 20 2a 68 65 | 61 64 2c 20 2a 74 61 69 | *v, *he|ad, *tai|
|00004de0| 6c 3b 0a 58 09 4e 6f 64 | 65 20 2a 77 6f 72 64 73 |l;.X.Nod|e *words|
|00004df0| 3b 0a 58 09 69 66 20 28 | 6e 20 3d 3d 20 4e 55 4c |;.X.if (|n == NUL|
|00004e00| 4c 29 0a 58 09 09 72 65 | 74 75 72 6e 20 4e 55 4c |L).X..re|turn NUL|
|00004e10| 4c 3b 0a 58 09 73 77 69 | 74 63 68 20 28 6e 2d 3e |L;.X.swi|tch (n->|
|00004e20| 74 79 70 65 29 20 7b 0a | 58 09 63 61 73 65 20 6e |type) {.|X.case n|
|00004e30| 41 72 67 73 3a 0a 58 09 | 63 61 73 65 20 6e 4c 61 |Args:.X.|case nLa|
|00004e40| 70 70 65 6e 64 3a 0a 58 | 09 09 77 6f 72 64 73 20 |ppend:.X|..words |
|00004e50| 3d 20 6e 2d 3e 75 5b 30 | 5d 2e 70 3b 0a 58 09 09 |= n->u[0|].p;.X..|
|00004e60| 74 61 69 6c 20 3d 20 4e | 55 4c 4c 3b 0a 58 09 09 |tail = N|ULL;.X..|
|00004e70| 77 68 69 6c 65 20 28 77 | 6f 72 64 73 20 21 3d 20 |while (w|ords != |
|00004e80| 4e 55 4c 4c 20 26 26 20 | 28 77 6f 72 64 73 2d 3e |NULL && |(words->|
|00004e90| 74 79 70 65 20 3d 3d 20 | 6e 41 72 67 73 20 7c 7c |type == |nArgs |||
|00004ea0| 20 77 6f 72 64 73 2d 3e | 74 79 70 65 20 3d 3d 20 | words->|type == |
|00004eb0| 6e 4c 61 70 70 65 6e 64 | 29 29 20 7b 0a 58 09 09 |nLappend|)) {.X..|
|00004ec0| 09 69 66 20 28 77 6f 72 | 64 73 2d 3e 75 5b 31 5d |.if (wor|ds->u[1]|
|00004ed0| 2e 70 20 21 3d 20 4e 55 | 4c 4c 20 26 26 20 77 6f |.p != NU|LL && wo|
|00004ee0| 72 64 73 2d 3e 75 5b 31 | 5d 2e 70 2d 3e 74 79 70 |rds->u[1|].p->typ|
|00004ef0| 65 20 21 3d 20 6e 57 6f | 72 64 20 26 26 20 77 6f |e != nWo|rd && wo|
|00004f00| 72 64 73 2d 3e 75 5b 31 | 5d 2e 70 2d 3e 74 79 70 |rds->u[1|].p->typ|
|00004f10| 65 20 21 3d 20 6e 51 77 | 6f 72 64 29 0a 58 09 09 |e != nQw|ord).X..|
|00004f20| 09 09 62 72 65 61 6b 3b | 0a 58 09 09 09 68 65 61 |..break;|.X...hea|
|00004f30| 64 20 3d 20 67 6c 6f 6d | 28 77 6f 72 64 73 2d 3e |d = glom|(words->|
|00004f40| 75 5b 31 5d 2e 70 29 3b | 0a 58 09 09 09 69 66 20 |u[1].p);|.X...if |
|00004f50| 28 68 65 61 64 20 21 3d | 20 4e 55 4c 4c 29 20 7b |(head !=| NULL) {|
|00004f60| 0a 58 09 09 09 09 68 65 | 61 64 2d 3e 6e 20 3d 20 |.X....he|ad->n = |
|00004f70| 74 61 69 6c 3b 0a 58 09 | 09 09 09 74 61 69 6c 20 |tail;.X.|...tail |
|00004f80| 3d 20 68 65 61 64 3b 0a | 58 09 09 09 7d 0a 58 09 |= head;.|X...}.X.|
|00004f90| 09 09 77 6f 72 64 73 20 | 3d 20 77 6f 72 64 73 2d |..words |= words-|
|00004fa0| 3e 75 5b 30 5d 2e 70 3b | 0a 58 09 09 7d 0a 58 09 |>u[0].p;|.X..}.X.|
|00004fb0| 09 76 20 3d 20 61 70 70 | 65 6e 64 28 67 6c 6f 6d |.v = app|end(glom|
|00004fc0| 28 77 6f 72 64 73 29 2c | 20 74 61 69 6c 29 3b 20 |(words),| tail); |
|00004fd0| 2f 2a 20 66 6f 72 63 65 | 20 6c 65 66 74 20 74 6f |/* force| left to|
|00004fe0| 20 72 69 67 68 74 20 65 | 76 61 6c 75 61 74 69 6f | right e|valuatio|
|00004ff0| 6e 20 2a 2f 0a 58 09 09 | 72 65 74 75 72 6e 20 61 |n */.X..|return a|
|00005000| 70 70 65 6e 64 28 76 2c | 20 67 6c 6f 6d 28 6e 2d |ppend(v,| glom(n-|
|00005010| 3e 75 5b 31 5d 2e 70 29 | 29 3b 0a 58 09 63 61 73 |>u[1].p)|);.X.cas|
|00005020| 65 20 6e 42 61 63 6b 71 | 3a 0a 58 09 09 72 65 74 |e nBackq|:.X..ret|
|00005030| 75 72 6e 20 62 61 63 6b | 71 28 6e 2d 3e 75 5b 30 |urn back|q(n->u[0|
|00005040| 5d 2e 70 2c 20 6e 2d 3e | 75 5b 31 5d 2e 70 29 3b |].p, n->|u[1].p);|
|00005050| 0a 58 09 63 61 73 65 20 | 6e 43 6f 6e 63 61 74 3a |.X.case |nConcat:|
|00005060| 0a 58 09 09 68 65 61 64 | 20 3d 20 67 6c 6f 6d 28 |.X..head| = glom(|
|00005070| 6e 2d 3e 75 5b 30 5d 2e | 70 29 3b 20 2f 2a 20 66 |n->u[0].|p); /* f|
|00005080| 6f 72 63 65 20 6c 65 66 | 74 2d 74 6f 2d 72 69 67 |orce lef|t-to-rig|
|00005090| 68 74 20 65 76 61 6c 75 | 61 74 69 6f 6e 20 2a 2f |ht evalu|ation */|
|000050a0| 0a 58 09 09 72 65 74 75 | 72 6e 20 63 6f 6e 63 61 |.X..retu|rn conca|
|000050b0| 74 28 68 65 61 64 2c 20 | 67 6c 6f 6d 28 6e 2d 3e |t(head, |glom(n->|
|000050c0| 75 5b 31 5d 2e 70 29 29 | 3b 0a 58 09 63 61 73 65 |u[1].p))|;.X.case|
|000050d0| 20 6e 44 75 70 3a 0a 58 | 09 63 61 73 65 20 6e 52 | nDup:.X|.case nR|
|000050e0| 65 64 69 72 3a 0a 58 09 | 09 71 72 65 64 69 72 28 |edir:.X.|.qredir(|
|000050f0| 6e 29 3b 0a 58 09 09 72 | 65 74 75 72 6e 20 4e 55 |n);.X..r|eturn NU|
|00005100| 4c 4c 3b 0a 58 09 63 61 | 73 65 20 6e 57 6f 72 64 |LL;.X.ca|se nWord|
|00005110| 3a 0a 58 09 63 61 73 65 | 20 6e 51 77 6f 72 64 3a |:.X.case| nQword:|
|00005120| 0a 58 09 09 72 65 74 75 | 72 6e 20 77 6f 72 64 28 |.X..retu|rn word(|
|00005130| 6e 2d 3e 75 5b 30 5d 2e | 73 2c 20 6e 2d 3e 75 5b |n->u[0].|s, n->u[|
|00005140| 31 5d 2e 73 29 3b 0a 58 | 09 63 61 73 65 20 6e 4e |1].s);.X|.case nN|
|00005150| 6d 70 69 70 65 3a 0a 58 | 09 09 72 65 74 75 72 6e |mpipe:.X|..return|
|00005160| 20 6d 6b 63 6d 64 61 72 | 67 28 6e 29 3b 0a 58 09 | mkcmdar|g(n);.X.|
|00005170| 64 65 66 61 75 6c 74 3a | 0a 58 09 09 2f 2a 0a 58 |default:|.X../*.X|
|00005180| 09 09 20 20 20 54 68 65 | 20 6e 65 78 74 20 66 6f |.. The| next fo|
|00005190| 75 72 20 6f 70 65 72 61 | 74 69 6f 6e 73 20 64 65 |ur opera|tions de|
|000051a0| 70 65 6e 64 20 6f 6e 20 | 74 68 65 20 6c 65 66 74 |pend on |the left|
|000051b0| 2d 63 68 69 6c 64 20 6f | 66 20 67 6c 6f 6d 0a 58 |-child o|f glom.X|
|000051c0| 09 09 20 20 20 74 6f 20 | 62 65 20 61 20 76 61 72 |.. to |be a var|
|000051d0| 69 61 62 6c 65 20 6e 61 | 6d 65 2e 20 54 68 65 72 |iable na|me. Ther|
|000051e0| 65 66 6f 72 65 20 74 68 | 65 20 76 61 72 69 61 62 |efore th|e variab|
|000051f0| 6c 65 20 69 73 20 6c 6f | 6f 6b 65 64 20 75 70 0a |le is lo|oked up.|
|00005200| 58 09 09 20 20 20 68 65 | 72 65 2e 0a 58 09 09 2a |X.. he|re..X..*|
|00005210| 2f 0a 58 09 09 69 66 20 | 28 28 76 20 3d 20 67 6c |/.X..if |((v = gl|
|00005220| 6f 6d 28 6e 2d 3e 75 5b | 30 5d 2e 70 29 29 20 3d |om(n->u[|0].p)) =|
|00005230| 3d 20 4e 55 4c 4c 29 0a | 58 09 09 09 72 63 5f 65 |= NULL).|X...rc_e|
|00005240| 72 72 6f 72 28 22 6e 75 | 6c 6c 20 76 61 72 69 61 |rror("nu|ll varia|
|00005250| 62 6c 65 20 6e 61 6d 65 | 22 29 3b 0a 58 09 09 69 |ble name|");.X..i|
|00005260| 66 20 28 76 2d 3e 6e 20 | 21 3d 20 4e 55 4c 4c 29 |f (v->n |!= NULL)|
|00005270| 0a 58 09 09 09 72 63 5f | 65 72 72 6f 72 28 22 6d |.X...rc_|error("m|
|00005280| 75 6c 74 69 2d 77 6f 72 | 64 20 76 61 72 69 61 62 |ulti-wor|d variab|
|00005290| 6c 65 20 6e 61 6d 65 22 | 29 3b 0a 58 09 09 69 66 |le name"|);.X..if|
|000052a0| 20 28 2a 76 2d 3e 77 20 | 3d 3d 20 27 5c 30 27 29 | (*v->w |== '\0')|
|000052b0| 0a 58 09 09 09 72 63 5f | 65 72 72 6f 72 28 22 7a |.X...rc_|error("z|
|000052c0| 65 72 6f 2d 6c 65 6e 67 | 74 68 20 76 61 72 69 61 |ero-leng|th varia|
|000052d0| 62 6c 65 20 6e 61 6d 65 | 22 29 3b 0a 58 09 09 76 |ble name|");.X..v|
|000052e0| 20 3d 20 28 2a 76 2d 3e | 77 20 3d 3d 20 27 2a 27 | = (*v->|w == '*'|
|000052f0| 20 26 26 20 76 2d 3e 77 | 5b 31 5d 20 3d 3d 20 27 | && v->w|[1] == '|
|00005300| 5c 30 27 29 20 3f 20 76 | 61 72 6c 6f 6f 6b 75 70 |\0') ? v|arlookup|
|00005310| 28 76 2d 3e 77 29 2d 3e | 6e 20 3a 20 76 61 72 6c |(v->w)->|n : varl|
|00005320| 6f 6f 6b 75 70 28 76 2d | 3e 77 29 3b 0a 58 09 09 |ookup(v-|>w);.X..|
|00005330| 73 77 69 74 63 68 20 28 | 6e 2d 3e 74 79 70 65 29 |switch (|n->type)|
|00005340| 20 7b 0a 58 09 09 64 65 | 66 61 75 6c 74 3a 0a 58 | {.X..de|fault:.X|
|00005350| 09 09 09 70 61 6e 69 63 | 28 22 75 6e 65 78 70 65 |...panic|("unexpe|
|00005360| 63 74 65 64 20 6e 6f 64 | 65 20 69 6e 20 67 6c 6f |cted nod|e in glo|
|00005370| 6d 22 29 3b 0a 58 09 09 | 09 65 78 69 74 28 31 29 |m");.X..|.exit(1)|
|00005380| 3b 0a 58 09 09 09 2f 2a | 20 4e 4f 54 52 45 41 43 |;.X.../*| NOTREAC|
|00005390| 48 45 44 20 2a 2f 0a 58 | 09 09 63 61 73 65 20 6e |HED */.X|..case n|
|000053a0| 43 6f 75 6e 74 3a 0a 58 | 09 09 09 72 65 74 75 72 |Count:.X|...retur|
|000053b0| 6e 20 63 6f 75 6e 74 28 | 76 29 3b 0a 58 09 09 63 |n count(|v);.X..c|
|000053c0| 61 73 65 20 6e 46 6c 61 | 74 3a 0a 58 09 09 09 72 |ase nFla|t:.X...r|
|000053d0| 65 74 75 72 6e 20 66 6c | 61 74 74 65 6e 28 76 29 |eturn fl|atten(v)|
|000053e0| 3b 0a 58 09 09 63 61 73 | 65 20 6e 56 61 72 3a 0a |;.X..cas|e nVar:.|
|000053f0| 58 09 09 09 72 65 74 75 | 72 6e 20 76 3b 0a 58 09 |X...retu|rn v;.X.|
|00005400| 09 63 61 73 65 20 6e 56 | 61 72 73 75 62 3a 0a 58 |.case nV|arsub:.X|
|00005410| 09 09 09 72 65 74 75 72 | 6e 20 76 61 72 73 75 62 |...retur|n varsub|
|00005420| 28 76 2c 20 67 6c 6f 6d | 28 6e 2d 3e 75 5b 31 5d |(v, glom|(n->u[1]|
|00005430| 2e 70 29 29 3b 0a 58 09 | 09 7d 0a 58 09 7d 0a 58 |.p));.X.|.}.X.}.X|
|00005440| 7d 0a 45 4e 44 5f 4f 46 | 5f 46 49 4c 45 0a 20 20 |}.END_OF|_FILE. |
|00005450| 69 66 20 74 65 73 74 20 | 38 39 36 33 20 2d 6e 65 |if test |8963 -ne|
|00005460| 20 60 77 63 20 2d 63 20 | 3c 27 67 6c 6f 6d 2e 63 | `wc -c |<'glom.c|
|00005470| 27 60 3b 20 74 68 65 6e | 0a 20 20 20 20 65 63 68 |'`; then|. ech|
|00005480| 6f 20 73 68 61 72 3a 20 | 5c 22 27 67 6c 6f 6d 2e |o shar: |\"'glom.|
|00005490| 63 27 5c 22 20 75 6e 70 | 61 63 6b 65 64 20 77 69 |c'\" unp|acked wi|
|000054a0| 74 68 20 77 72 6f 6e 67 | 20 73 69 7a 65 21 0a 20 |th wrong| size!. |
|000054b0| 20 66 69 0a 20 20 23 20 | 65 6e 64 20 6f 66 20 27 | fi. # |end of '|
|000054c0| 67 6c 6f 6d 2e 63 27 0a | 66 69 0a 69 66 20 74 65 |glom.c'.|fi.if te|
|000054d0| 73 74 20 2d 66 20 27 70 | 72 69 6e 74 2e 63 27 20 |st -f 'p|rint.c' |
|000054e0| 2d 61 20 22 24 7b 31 7d | 22 20 21 3d 20 22 2d 63 |-a "${1}|" != "-c|
|000054f0| 22 20 3b 20 74 68 65 6e | 20 0a 20 20 65 63 68 6f |" ; then| . echo|
|00005500| 20 73 68 61 72 3a 20 57 | 69 6c 6c 20 6e 6f 74 20 | shar: W|ill not |
|00005510| 63 6c 6f 62 62 65 72 20 | 65 78 69 73 74 69 6e 67 |clobber |existing|
|00005520| 20 66 69 6c 65 20 5c 22 | 27 70 72 69 6e 74 2e 63 | file \"|'print.c|
|00005530| 27 5c 22 0a 65 6c 73 65 | 0a 20 20 65 63 68 6f 20 |'\".else|. echo |
|00005540| 73 68 61 72 3a 20 45 78 | 74 72 61 63 74 69 6e 67 |shar: Ex|tracting|
|00005550| 20 5c 22 27 70 72 69 6e | 74 2e 63 27 5c 22 20 5c | \"'prin|t.c'\" \|
|00005560| 28 39 33 32 39 20 63 68 | 61 72 61 63 74 65 72 73 |(9329 ch|aracters|
|00005570| 5c 29 0a 20 20 73 65 64 | 20 22 73 2f 5e 58 2f 2f |\). sed| "s/^X//|
|00005580| 22 20 3e 27 70 72 69 6e | 74 2e 63 27 20 3c 3c 27 |" >'prin|t.c' <<'|
|00005590| 45 4e 44 5f 4f 46 5f 46 | 49 4c 45 27 0a 58 2f 2a |END_OF_F|ILE'.X/*|
|000055a0| 20 70 72 69 6e 74 2e 63 | 20 2d 2d 20 66 6f 72 6d | print.c| -- form|
|000055b0| 61 74 74 65 64 20 70 72 | 69 6e 74 69 6e 67 20 72 |atted pr|inting r|
|000055c0| 6f 75 74 69 6e 65 73 20 | 28 50 61 75 6c 20 48 61 |outines |(Paul Ha|
|000055d0| 61 68 72 2c 20 31 32 2f | 39 31 29 20 2a 2f 0a 58 |ahr, 12/|91) */.X|
|000055e0| 0a 58 23 69 6e 63 6c 75 | 64 65 20 22 72 63 2e 68 |.X#inclu|de "rc.h|
|000055f0| 22 0a 58 23 69 6e 63 6c | 75 64 65 20 3c 73 65 74 |".X#incl|ude <set|
|00005600| 6a 6d 70 2e 68 3e 0a 58 | 0a 58 23 64 65 66 69 6e |jmp.h>.X|.X#defin|
|00005610| 65 09 50 52 49 4e 54 5f | 41 4c 4c 4f 43 53 49 5a |e.PRINT_|ALLOCSIZ|
|00005620| 45 09 28 28 53 49 5a 45 | 5f 54 29 36 34 29 0a 58 |E.((SIZE|_T)64).X|
|00005630| 23 64 65 66 69 6e 65 09 | 53 50 52 49 4e 54 5f 42 |#define.|SPRINT_B|
|00005640| 55 46 53 49 5a 09 28 28 | 53 49 5a 45 5f 54 29 31 |UFSIZ.((|SIZE_T)1|
|00005650| 30 32 34 29 0a 58 0a 58 | 23 64 65 66 69 6e 65 09 |024).X.X|#define.|
|00005660| 4d 41 58 43 4f 4e 56 20 | 32 35 36 0a 58 0a 58 2f |MAXCONV |256.X.X/|
|00005670| 2a 0a 58 20 2a 20 63 6f | 6e 76 65 72 73 69 6f 6e |*.X * co|nversion|
|00005680| 20 66 75 6e 63 74 69 6f | 6e 73 0a 58 20 2a 09 74 | functio|ns.X *.t|
|00005690| 72 75 65 20 72 65 74 75 | 72 6e 20 2d 3e 20 66 6c |rue retu|rn -> fl|
|000056a0| 61 67 20 63 68 61 6e 67 | 65 73 20 6f 6e 6c 79 2c |ag chang|es only,|
|000056b0| 20 6e 6f 74 20 61 20 63 | 6f 6e 76 65 72 73 69 6f | not a c|onversio|
|000056c0| 6e 0a 58 20 2a 2f 0a 58 | 0a 58 23 64 65 66 69 6e |n.X */.X|.X#defin|
|000056d0| 65 20 46 6c 61 67 28 6e | 61 6d 65 2c 20 66 6c 61 |e Flag(n|ame, fla|
|000056e0| 67 29 20 5c 0a 58 73 74 | 61 74 69 63 20 62 6f 6f |g) \.Xst|atic boo|
|000056f0| 6c 20 6e 61 6d 65 28 46 | 6f 72 6d 61 74 20 2a 66 |l name(F|ormat *f|
|00005700| 6f 72 6d 61 74 2c 20 69 | 6e 74 20 63 29 20 7b 20 |ormat, i|nt c) { |
|00005710| 5c 0a 58 09 66 6f 72 6d | 61 74 2d 3e 66 6c 61 67 |\.X.form|at->flag|
|00005720| 73 20 7c 3d 20 66 6c 61 | 67 3b 20 5c 0a 58 09 72 |s |= fla|g; \.X.r|
|00005730| 65 74 75 72 6e 20 54 52 | 55 45 3b 20 5c 0a 58 7d |eturn TR|UE; \.X}|
|00005740| 0a 58 0a 58 46 6c 61 67 | 28 75 63 6f 6e 76 2c 09 |.X.XFlag|(uconv,.|
|00005750| 46 4d 54 5f 75 6e 73 69 | 67 6e 65 64 29 0a 58 46 |FMT_unsi|gned).XF|
|00005760| 6c 61 67 28 68 63 6f 6e | 76 2c 09 46 4d 54 5f 73 |lag(hcon|v,.FMT_s|
|00005770| 68 6f 72 74 29 0a 58 46 | 6c 61 67 28 6c 63 6f 6e |hort).XF|lag(lcon|
|00005780| 76 2c 09 46 4d 54 5f 6c | 6f 6e 67 29 0a 58 46 6c |v,.FMT_l|ong).XFl|
|00005790| 61 67 28 61 6c 74 63 6f | 6e 76 2c 09 46 4d 54 5f |ag(altco|nv,.FMT_|
|000057a0| 61 6c 74 66 6f 72 6d 29 | 0a 58 46 6c 61 67 28 6c |altform)|.XFlag(l|
|000057b0| 65 66 74 63 6f 6e 76 2c | 09 46 4d 54 5f 6c 65 66 |eftconv,|.FMT_lef|
|000057c0| 74 73 69 64 65 29 0a 58 | 46 6c 61 67 28 64 6f 74 |tside).X|Flag(dot|
|000057d0| 63 6f 6e 76 2c 09 46 4d | 54 5f 66 32 73 65 74 29 |conv,.FM|T_f2set)|
|000057e0| 0a 58 0a 58 73 74 61 74 | 69 63 20 62 6f 6f 6c 20 |.X.Xstat|ic bool |
|000057f0| 64 69 67 69 74 63 6f 6e | 76 28 46 6f 72 6d 61 74 |digitcon|v(Format|
|00005800| 20 2a 66 6f 72 6d 61 74 | 2c 20 69 6e 74 20 63 29 | *format|, int c)|
|00005810| 20 7b 0a 58 09 69 66 20 | 28 66 6f 72 6d 61 74 2d | {.X.if |(format-|
|00005820| 3e 66 6c 61 67 73 20 26 | 20 46 4d 54 5f 66 32 73 |>flags &| FMT_f2s|
|00005830| 65 74 29 0a 58 09 09 66 | 6f 72 6d 61 74 2d 3e 66 |et).X..f|ormat->f|
|00005840| 32 20 3d 20 31 30 20 2a | 20 66 6f 72 6d 61 74 2d |2 = 10 *| format-|
|00005850| 3e 66 32 20 2b 20 63 20 | 2d 20 27 30 27 3b 0a 58 |>f2 + c |- '0';.X|
|00005860| 09 65 6c 73 65 20 7b 0a | 58 09 09 66 6f 72 6d 61 |.else {.|X..forma|
|00005870| 74 2d 3e 66 6c 61 67 73 | 20 7c 3d 20 46 4d 54 5f |t->flags| |= FMT_|
|00005880| 66 31 73 65 74 3b 0a 58 | 09 09 66 6f 72 6d 61 74 |f1set;.X|..format|
|00005890| 2d 3e 66 31 20 3d 20 31 | 30 20 2a 20 66 6f 72 6d |->f1 = 1|0 * form|
|000058a0| 61 74 2d 3e 66 31 20 2b | 20 63 20 2d 20 27 30 27 |at->f1 +| c - '0'|
|000058b0| 3b 0a 58 09 7d 0a 58 09 | 72 65 74 75 72 6e 20 54 |;.X.}.X.|return T|
|000058c0| 52 55 45 3b 0a 58 7d 0a | 58 0a 58 73 74 61 74 69 |RUE;.X}.|X.Xstati|
|000058d0| 63 20 62 6f 6f 6c 20 7a | 65 72 6f 63 6f 6e 76 28 |c bool z|eroconv(|
|000058e0| 46 6f 72 6d 61 74 20 2a | 66 6f 72 6d 61 74 2c 20 |Format *|format, |
|000058f0| 69 6e 74 20 63 29 20 7b | 0a 58 09 69 66 20 28 66 |int c) {|.X.if (f|
|00005900| 6f 72 6d 61 74 2d 3e 66 | 6c 61 67 73 20 26 20 28 |ormat->f|lags & (|
|00005910| 46 4d 54 5f 66 31 73 65 | 74 20 7c 20 46 4d 54 5f |FMT_f1se|t | FMT_|
|00005920| 66 32 73 65 74 29 29 0a | 58 09 09 72 65 74 75 72 |f2set)).|X..retur|
|00005930| 6e 20 64 69 67 69 74 63 | 6f 6e 76 28 66 6f 72 6d |n digitc|onv(form|
|00005940| 61 74 2c 20 27 30 27 29 | 3b 0a 58 09 66 6f 72 6d |at, '0')|;.X.form|
|00005950| 61 74 2d 3e 66 6c 61 67 | 73 20 7c 3d 20 46 4d 54 |at->flag|s |= FMT|
|00005960| 5f 7a 65 72 6f 70 61 64 | 3b 0a 58 09 72 65 74 75 |_zeropad|;.X.retu|
|00005970| 72 6e 20 54 52 55 45 3b | 0a 58 7d 0a 58 0a 58 73 |rn TRUE;|.X}.X.Xs|
|00005980| 74 61 74 69 63 20 76 6f | 69 64 20 70 61 64 28 46 |tatic vo|id pad(F|
|00005990| 6f 72 6d 61 74 20 2a 66 | 6f 72 6d 61 74 2c 20 53 |ormat *f|ormat, S|
|000059a0| 49 5a 45 5f 54 20 6c 65 | 6e 2c 20 69 6e 74 20 63 |IZE_T le|n, int c|
|000059b0| 29 20 7b 0a 58 09 77 68 | 69 6c 65 20 28 6c 65 6e |) {.X.wh|ile (len|
|000059c0| 2d 2d 20 21 3d 20 30 29 | 0a 58 09 09 66 6d 74 70 |-- != 0)|.X..fmtp|
|000059d0| 75 74 63 28 66 6f 72 6d | 61 74 2c 20 63 29 3b 0a |utc(form|at, c);.|
|000059e0| 58 7d 0a 58 0a 58 73 74 | 61 74 69 63 20 62 6f 6f |X}.X.Xst|atic boo|
|000059f0| 6c 20 73 63 6f 6e 76 28 | 46 6f 72 6d 61 74 20 2a |l sconv(|Format *|
|00005a00| 66 6f 72 6d 61 74 2c 20 | 69 6e 74 20 63 29 20 7b |format, |int c) {|
|00005a10| 0a 58 09 63 68 61 72 20 | 2a 73 20 3d 20 76 61 5f |.X.char |*s = va_|
|00005a20| 61 72 67 28 66 6f 72 6d | 61 74 2d 3e 61 72 67 73 |arg(form|at->args|
|00005a30| 2c 20 63 68 61 72 20 2a | 29 3b 0a 58 09 69 66 20 |, char *|);.X.if |
|00005a40| 28 28 66 6f 72 6d 61 74 | 2d 3e 66 6c 61 67 73 20 |((format|->flags |
|00005a50| 26 20 46 4d 54 5f 66 31 | 73 65 74 29 20 3d 3d 20 |& FMT_f1|set) == |
|00005a60| 30 29 0a 58 09 09 66 6d | 74 63 61 74 28 66 6f 72 |0).X..fm|tcat(for|
|00005a70| 6d 61 74 2c 20 73 29 3b | 0a 58 09 65 6c 73 65 20 |mat, s);|.X.else |
|00005a80| 7b 0a 58 09 09 53 49 5a | 45 5f 54 20 6c 65 6e 20 |{.X..SIZ|E_T len |
|00005a90| 3d 20 73 74 72 6c 65 6e | 28 73 29 2c 20 77 69 64 |= strlen|(s), wid|
|00005aa0| 74 68 20 3d 20 66 6f 72 | 6d 61 74 2d 3e 66 31 20 |th = for|mat->f1 |
|00005ab0| 2d 20 6c 65 6e 3b 0a 58 | 09 09 69 66 20 28 66 6f |- len;.X|..if (fo|
|00005ac0| 72 6d 61 74 2d 3e 66 6c | 61 67 73 20 26 20 46 4d |rmat->fl|ags & FM|
|00005ad0| 54 5f 6c 65 66 74 73 69 | 64 65 29 20 7b 0a 58 09 |T_leftsi|de) {.X.|
|00005ae0| 09 09 66 6d 74 61 70 70 | 65 6e 64 28 66 6f 72 6d |..fmtapp|end(form|
|00005af0| 61 74 2c 20 73 2c 20 6c | 65 6e 29 3b 0a 58 09 09 |at, s, l|en);.X..|
|00005b00| 09 70 61 64 28 66 6f 72 | 6d 61 74 2c 20 77 69 64 |.pad(for|mat, wid|
|00005b10| 74 68 2c 20 27 20 27 29 | 3b 0a 58 09 09 7d 20 65 |th, ' ')|;.X..} e|
|00005b20| 6c 73 65 20 7b 0a 58 09 | 09 09 70 61 64 28 66 6f |lse {.X.|..pad(fo|
|00005b30| 72 6d 61 74 2c 20 77 69 | 64 74 68 2c 20 27 20 27 |rmat, wi|dth, ' '|
|00005b40| 29 3b 0a 58 09 09 09 66 | 6d 74 61 70 70 65 6e 64 |);.X...f|mtappend|
|00005b50| 28 66 6f 72 6d 61 74 2c | 20 73 2c 20 6c 65 6e 29 |(format,| s, len)|
|00005b60| 3b 0a 58 09 09 7d 0a 58 | 09 7d 0a 58 09 72 65 74 |;.X..}.X|.}.X.ret|
|00005b70| 75 72 6e 20 46 41 4c 53 | 45 3b 0a 58 7d 0a 58 0a |urn FALS|E;.X}.X.|
|00005b80| 58 73 74 61 74 69 63 20 | 63 68 61 72 20 2a 75 74 |Xstatic |char *ut|
|00005b90| 6f 61 28 75 6e 73 69 67 | 6e 65 64 20 6c 6f 6e 67 |oa(unsig|ned long|
|00005ba0| 20 75 2c 20 63 68 61 72 | 20 2a 74 2c 20 75 6e 73 | u, char| *t, uns|
|00005bb0| 69 67 6e 65 64 20 69 6e | 74 20 72 61 64 69 78 2c |igned in|t radix,|
|00005bc0| 20 63 6f 6e 73 74 20 63 | 68 61 72 20 2a 64 69 67 | const c|har *dig|
|00005bd0| 69 74 29 20 7b 0a 58 09 | 69 66 20 28 75 20 3e 3d |it) {.X.|if (u >=|
|00005be0| 20 72 61 64 69 78 29 20 | 7b 0a 58 09 09 74 20 3d | radix) |{.X..t =|
|00005bf0| 20 75 74 6f 61 28 75 20 | 2f 20 72 61 64 69 78 2c | utoa(u |/ radix,|
|00005c00| 20 74 2c 20 72 61 64 69 | 78 2c 20 64 69 67 69 74 | t, radi|x, digit|
|00005c10| 29 3b 0a 58 09 09 75 20 | 25 3d 20 72 61 64 69 78 |);.X..u |%= radix|
|00005c20| 3b 0a 58 09 7d 0a 58 09 | 2a 74 2b 2b 20 3d 20 64 |;.X.}.X.|*t++ = d|
|00005c30| 69 67 69 74 5b 75 5d 3b | 0a 58 09 72 65 74 75 72 |igit[u];|.X.retur|
|00005c40| 6e 20 74 3b 0a 58 7d 0a | 58 0a 58 73 74 61 74 69 |n t;.X}.|X.Xstati|
|00005c50| 63 20 76 6f 69 64 20 69 | 6e 74 63 6f 6e 76 28 46 |c void i|ntconv(F|
|00005c60| 6f 72 6d 61 74 20 2a 66 | 6f 72 6d 61 74 2c 20 75 |ormat *f|ormat, u|
|00005c70| 6e 73 69 67 6e 65 64 20 | 69 6e 74 20 72 61 64 69 |nsigned |int radi|
|00005c80| 78 2c 20 69 6e 74 20 75 | 70 70 65 72 2c 20 63 6f |x, int u|pper, co|
|00005c90| 6e 73 74 20 63 68 61 72 | 20 2a 61 6c 74 66 6f 72 |nst char| *altfor|
|00005ca0| 6d 29 20 7b 0a 58 09 73 | 74 61 74 69 63 20 63 6f |m) {.X.s|tatic co|
|00005cb0| 6e 73 74 20 63 68 61 72 | 20 2a 20 63 6f 6e 73 74 |nst char| * const|
|00005cc0| 20 74 61 62 6c 65 5b 5d | 20 3d 20 7b 0a 58 09 09 | table[]| = {.X..|
|00005cd0| 22 30 31 32 33 34 35 36 | 37 38 39 61 62 63 64 65 |"0123456|789abcde|
|00005ce0| 66 67 68 69 6a 6b 6c 6d | 6e 6f 70 71 72 73 74 75 |fghijklm|nopqrstu|
|00005cf0| 76 77 78 79 7a 22 2c 0a | 58 09 09 22 30 31 32 33 |vwxyz",.|X.."0123|
|00005d00| 34 35 36 37 38 39 41 42 | 43 44 45 46 47 48 49 4a |456789AB|CDEFGHIJ|
|00005d10| 4b 4c 4d 4e 4f 50 51 52 | 53 54 55 56 57 58 59 5a |KLMNOPQR|STUVWXYZ|
|00005d20| 22 2c 0a 58 09 7d 3b 0a | 58 09 63 68 61 72 20 70 |",.X.};.|X.char p|
|00005d30| 61 64 63 68 61 72 3b 0a | 58 09 53 49 5a 45 5f 54 |adchar;.|X.SIZE_T|
|00005d40| 20 6c 65 6e 2c 20 70 72 | 65 2c 20 7a 65 72 6f 65 | len, pr|e, zeroe|
|00005d50| 73 2c 20 70 61 64 64 69 | 6e 67 2c 20 77 69 64 74 |s, paddi|ng, widt|
|00005d60| 68 3b 0a 58 09 6c 6f 6e | 67 20 6e 2c 20 66 6c 61 |h;.X.lon|g n, fla|
|00005d70| 67 73 3b 0a 58 09 75 6e | 73 69 67 6e 65 64 20 6c |gs;.X.un|signed l|
|00005d80| 6f 6e 67 20 75 3b 0a 58 | 09 63 68 61 72 20 6e 75 |ong u;.X|.char nu|
|00005d90| 6d 62 65 72 5b 36 34 5d | 2c 20 70 72 65 66 69 78 |mber[64]|, prefix|
|00005da0| 5b 32 30 5d 3b 0a 58 0a | 58 09 69 66 20 28 72 61 |[20];.X.|X.if (ra|
|00005db0| 64 69 78 20 3e 20 33 36 | 29 0a 58 09 09 72 65 74 |dix > 36|).X..ret|
|00005dc0| 75 72 6e 3b 0a 58 0a 58 | 09 66 6c 61 67 73 20 3d |urn;.X.X|.flags =|
|00005dd0| 20 66 6f 72 6d 61 74 2d | 3e 66 6c 61 67 73 3b 0a | format-|>flags;.|
|00005de0| 58 09 69 66 20 28 66 6c | 61 67 73 20 26 20 46 4d |X.if (fl|ags & FM|
|00005df0| 54 5f 6c 6f 6e 67 29 0a | 58 09 09 6e 20 3d 20 76 |T_long).|X..n = v|
|00005e00| 61 5f 61 72 67 28 66 6f | 72 6d 61 74 2d 3e 61 72 |a_arg(fo|rmat->ar|
|00005e10| 67 73 2c 20 6c 6f 6e 67 | 29 3b 0a 58 09 65 6c 73 |gs, long|);.X.els|
|00005e20| 65 20 69 66 20 28 66 6c | 61 67 73 20 26 20 46 4d |e if (fl|ags & FM|
|00005e30| 54 5f 73 68 6f 72 74 29 | 0a 58 09 09 6e 20 3d 20 |T_short)|.X..n = |
|00005e40| 76 61 5f 61 72 67 28 66 | 6f 72 6d 61 74 2d 3e 61 |va_arg(f|ormat->a|
|00005e50| 72 67 73 2c 20 73 68 6f | 72 74 29 3b 0a 58 09 65 |rgs, sho|rt);.X.e|
|00005e60| 6c 73 65 0a 58 09 09 6e | 20 3d 20 76 61 5f 61 72 |lse.X..n| = va_ar|
|00005e70| 67 28 66 6f 72 6d 61 74 | 2d 3e 61 72 67 73 2c 20 |g(format|->args, |
|00005e80| 69 6e 74 29 3b 0a 58 0a | 58 09 70 72 65 20 3d 20 |int);.X.|X.pre = |
|00005e90| 30 3b 0a 58 09 69 66 20 | 28 28 66 6c 61 67 73 20 |0;.X.if |((flags |
|00005ea0| 26 20 46 4d 54 5f 75 6e | 73 69 67 6e 65 64 29 20 |& FMT_un|signed) |
|00005eb0| 7c 7c 20 6e 20 3e 3d 20 | 30 29 0a 58 09 09 75 20 ||| n >= |0).X..u |
|00005ec0| 3d 20 6e 3b 0a 58 09 65 | 6c 73 65 20 7b 0a 58 09 |= n;.X.e|lse {.X.|
|00005ed0| 09 70 72 65 66 69 78 5b | 70 72 65 2b 2b 5d 20 3d |.prefix[|pre++] =|
|00005ee0| 20 27 2d 27 3b 0a 58 09 | 09 75 20 3d 20 2d 6e 3b | '-';.X.|.u = -n;|
|00005ef0| 0a 58 09 7d 0a 58 0a 58 | 09 69 66 20 28 66 6c 61 |.X.}.X.X|.if (fla|
|00005f00| 67 73 20 26 20 46 4d 54 | 5f 61 6c 74 66 6f 72 6d |gs & FMT|_altform|
|00005f10| 29 0a 58 09 09 77 68 69 | 6c 65 20 28 2a 61 6c 74 |).X..whi|le (*alt|
|00005f20| 66 6f 72 6d 20 21 3d 20 | 27 5c 30 27 29 0a 58 09 |form != |'\0').X.|
|00005f30| 09 09 70 72 65 66 69 78 | 5b 70 72 65 2b 2b 5d 20 |..prefix|[pre++] |
|00005f40| 3d 20 2a 61 6c 74 66 6f | 72 6d 2b 2b 3b 0a 58 0a |= *altfo|rm++;.X.|
|00005f50| 58 09 6c 65 6e 20 3d 20 | 75 74 6f 61 28 75 2c 20 |X.len = |utoa(u, |
|00005f60| 6e 75 6d 62 65 72 2c 20 | 72 61 64 69 78 2c 20 74 |number, |radix, t|
|00005f70| 61 62 6c 65 5b 75 70 70 | 65 72 5d 29 20 2d 20 6e |able[upp|er]) - n|
|00005f80| 75 6d 62 65 72 3b 0a 58 | 09 69 66 20 28 28 66 6c |umber;.X|.if ((fl|
|00005f90| 61 67 73 20 26 20 46 4d | 54 5f 66 32 73 65 74 29 |ags & FM|T_f2set)|
|00005fa0| 20 26 26 20 28 53 49 5a | 45 5f 54 29 20 66 6f 72 | && (SIZ|E_T) for|
|00005fb0| 6d 61 74 2d 3e 66 32 20 | 3e 20 6c 65 6e 29 0a 58 |mat->f2 |> len).X|
|00005fc0| 09 09 7a 65 72 6f 65 73 | 20 3d 20 66 6f 72 6d 61 |..zeroes| = forma|
|00005fd0| 74 2d 3e 66 32 20 2d 20 | 6c 65 6e 3b 0a 58 09 65 |t->f2 - |len;.X.e|
|00005fe0| 6c 73 65 0a 58 09 09 7a | 65 72 6f 65 73 20 3d 20 |lse.X..z|eroes = |
|00005ff0| 30 3b 0a 58 0a 58 09 77 | 69 64 74 68 20 3d 20 70 |0;.X.X.w|idth = p|
|00006000| 72 65 20 2b 20 7a 65 72 | 6f 65 73 20 2b 20 6c 65 |re + zer|oes + le|
|00006010| 6e 3b 0a 58 09 69 66 20 | 28 28 66 6c 61 67 73 20 |n;.X.if |((flags |
|00006020| 26 20 46 4d 54 5f 66 31 | 73 65 74 29 20 26 26 20 |& FMT_f1|set) && |
|00006030| 28 53 49 5a 45 5f 54 29 | 20 66 6f 72 6d 61 74 2d |(SIZE_T)| format-|
|00006040| 3e 66 31 20 3e 20 77 69 | 64 74 68 29 20 7b 0a 58 |>f1 > wi|dth) {.X|
|00006050| 09 09 70 61 64 64 69 6e | 67 20 3d 20 66 6f 72 6d |..paddin|g = form|
|00006060| 61 74 2d 3e 66 31 20 2d | 20 77 69 64 74 68 3b 0a |at->f1 -| width;.|
|00006070| 58 09 7d 20 65 6c 73 65 | 0a 58 09 09 70 61 64 64 |X.} else|.X..padd|
|00006080| 69 6e 67 20 3d 20 30 3b | 0a 58 0a 58 09 70 61 64 |ing = 0;|.X.X.pad|
|00006090| 63 68 61 72 20 3d 20 27 | 20 27 3b 0a 58 09 69 66 |char = '| ';.X.if|
|000060a0| 20 28 70 61 64 64 69 6e | 67 20 3e 20 30 20 26 26 | (paddin|g > 0 &&|
|000060b0| 20 66 6c 61 67 73 20 26 | 20 46 4d 54 5f 7a 65 72 | flags &| FMT_zer|
|000060c0| 6f 70 61 64 29 20 7b 0a | 58 09 09 70 61 64 63 68 |opad) {.|X..padch|
|000060d0| 61 72 20 3d 20 27 30 27 | 3b 0a 58 09 09 69 66 20 |ar = '0'|;.X..if |
|000060e0| 28 28 66 6c 61 67 73 20 | 26 20 46 4d 54 5f 6c 65 |((flags |& FMT_le|
|000060f0| 66 74 73 69 64 65 29 20 | 3d 3d 20 30 29 20 7b 0a |ftside) |== 0) {.|
|00006100| 58 09 09 09 7a 65 72 6f | 65 73 20 2b 3d 20 70 61 |X...zero|es += pa|
|00006110| 64 64 69 6e 67 3b 0a 58 | 09 09 09 70 61 64 64 69 |dding;.X|...paddi|
|00006120| 6e 67 20 3d 20 30 3b 0a | 58 09 09 7d 0a 58 09 7d |ng = 0;.|X..}.X.}|
|00006130| 0a 58 0a 58 0a 58 09 69 | 66 20 28 28 66 6c 61 67 |.X.X.X.i|f ((flag|
|00006140| 73 20 26 20 46 4d 54 5f | 6c 65 66 74 73 69 64 65 |s & FMT_|leftside|
|00006150| 29 20 3d 3d 20 30 29 0a | 58 09 09 70 61 64 28 66 |) == 0).|X..pad(f|
|00006160| 6f 72 6d 61 74 2c 20 70 | 61 64 64 69 6e 67 2c 20 |ormat, p|adding, |
|00006170| 70 61 64 63 68 61 72 29 | 3b 0a 58 09 66 6d 74 61 |padchar)|;.X.fmta|
|00006180| 70 70 65 6e 64 28 66 6f | 72 6d 61 74 2c 20 70 72 |ppend(fo|rmat, pr|
|00006190| 65 66 69 78 2c 20 70 72 | 65 29 3b 0a 58 09 70 61 |efix, pr|e);.X.pa|
|000061a0| 64 28 66 6f 72 6d 61 74 | 2c 20 7a 65 72 6f 65 73 |d(format|, zeroes|
|000061b0| 2c 20 27 30 27 29 3b 0a | 58 09 66 6d 74 61 70 70 |, '0');.|X.fmtapp|
|000061c0| 65 6e 64 28 66 6f 72 6d | 61 74 2c 20 6e 75 6d 62 |end(form|at, numb|
|000061d0| 65 72 2c 20 6c 65 6e 29 | 3b 0a 58 09 69 66 20 28 |er, len)|;.X.if (|
|000061e0| 66 6c 61 67 73 20 26 20 | 46 4d 54 5f 6c 65 66 74 |flags & |FMT_left|
|000061f0| 73 69 64 65 29 0a 58 09 | 09 70 61 64 28 66 6f 72 |side).X.|.pad(for|
|00006200| 6d 61 74 2c 20 70 61 64 | 64 69 6e 67 2c 20 70 61 |mat, pad|ding, pa|
|00006210| 64 63 68 61 72 29 3b 0a | 58 7d 0a 58 0a 58 73 74 |dchar);.|X}.X.Xst|
|00006220| 61 74 69 63 20 62 6f 6f | 6c 20 63 63 6f 6e 76 28 |atic boo|l cconv(|
|00006230| 46 6f 72 6d 61 74 20 2a | 66 6f 72 6d 61 74 2c 20 |Format *|format, |
|00006240| 69 6e 74 20 63 29 20 7b | 0a 58 09 66 6d 74 70 75 |int c) {|.X.fmtpu|
|00006250| 74 63 28 66 6f 72 6d 61 | 74 2c 20 76 61 5f 61 72 |tc(forma|t, va_ar|
|00006260| 67 28 66 6f 72 6d 61 74 | 2d 3e 61 72 67 73 2c 20 |g(format|->args, |
|00006270| 69 6e 74 29 29 3b 0a 58 | 09 72 65 74 75 72 6e 20 |int));.X|.return |
|00006280| 46 41 4c 53 45 3b 0a 58 | 7d 0a 58 0a 58 73 74 61 |FALSE;.X|}.X.Xsta|
|00006290| 74 69 63 20 62 6f 6f 6c | 20 64 63 6f 6e 76 28 46 |tic bool| dconv(F|
|000062a0| 6f 72 6d 61 74 20 2a 66 | 6f 72 6d 61 74 2c 20 69 |ormat *f|ormat, i|
|000062b0| 6e 74 20 63 29 20 7b 0a | 58 09 69 6e 74 63 6f 6e |nt c) {.|X.intcon|
|000062c0| 76 28 66 6f 72 6d 61 74 | 2c 20 31 30 2c 20 30 2c |v(format|, 10, 0,|
|000062d0| 20 22 22 29 3b 0a 58 09 | 72 65 74 75 72 6e 20 46 | "");.X.|return F|
|000062e0| 41 4c 53 45 3b 0a 58 7d | 0a 58 0a 58 73 74 61 74 |ALSE;.X}|.X.Xstat|
|000062f0| 69 63 20 62 6f 6f 6c 20 | 6f 63 6f 6e 76 28 46 6f |ic bool |oconv(Fo|
|00006300| 72 6d 61 74 20 2a 66 6f | 72 6d 61 74 2c 20 69 6e |rmat *fo|rmat, in|
|00006310| 74 20 63 29 20 7b 0a 58 | 09 69 6e 74 63 6f 6e 76 |t c) {.X|.intconv|
|00006320| 28 66 6f 72 6d 61 74 2c | 20 38 2c 20 30 2c 20 22 |(format,| 8, 0, "|
|00006330| 30 22 29 3b 0a 58 09 72 | 65 74 75 72 6e 20 46 41 |0");.X.r|eturn FA|
|00006340| 4c 53 45 3b 0a 58 7d 0a | 58 0a 58 73 74 61 74 69 |LSE;.X}.|X.Xstati|
|00006350| 63 20 62 6f 6f 6c 20 78 | 63 6f 6e 76 28 46 6f 72 |c bool x|conv(For|
|00006360| 6d 61 74 20 2a 66 6f 72 | 6d 61 74 2c 20 69 6e 74 |mat *for|mat, int|
|00006370| 20 63 29 20 7b 0a 58 09 | 69 6e 74 63 6f 6e 76 28 | c) {.X.|intconv(|
|00006380| 66 6f 72 6d 61 74 2c 20 | 31 36 2c 20 30 2c 20 22 |format, |16, 0, "|
|00006390| 30 78 22 29 3b 0a 58 09 | 72 65 74 75 72 6e 20 46 |0x");.X.|return F|
|000063a0| 41 4c 53 45 3b 0a 58 7d | 0a 58 0a 58 73 74 61 74 |ALSE;.X}|.X.Xstat|
|000063b0| 69 63 20 62 6f 6f 6c 20 | 70 63 74 63 6f 6e 76 28 |ic bool |pctconv(|
|000063c0| 46 6f 72 6d 61 74 20 2a | 66 6f 72 6d 61 74 2c 20 |Format *|format, |
|000063d0| 69 6e 74 20 63 29 20 7b | 0a 58 09 66 6d 74 70 75 |int c) {|.X.fmtpu|
|000063e0| 74 63 28 66 6f 72 6d 61 | 74 2c 20 27 25 27 29 3b |tc(forma|t, '%');|
|000063f0| 0a 58 09 72 65 74 75 72 | 6e 20 46 41 4c 53 45 3b |.X.retur|n FALSE;|
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.