home *** CD-ROM | disk | FTP | other *** search
open in:
MacOS 8.1
|
Win98
|
DOS
view JSON data
|
view as text
This file was processed as: SHell self-extracting ARchive
(archive/shar).
You can browse this item here: 1169
Confidence | Program | Detection | Match Type | Support
|
---|
100%
| dexvert
| Newsgroup Content (archive/news)
| magic
| Supported |
100%
| dexvert
| SHell self-extracting ARchive (archive/shar)
| magic
| Supported |
100%
| dexvert
| Internet Message Format (text/imf)
| magic
| Supported |
1%
| dexvert
| Text File (text/txt)
| fallback
| Supported |
100%
| file
| news or mail, ASCII text
| default
| |
100%
| TrID
| E-Mail message (Var. 2)
| default
| |
100%
| checkBytes
| Printable ASCII
| default
| |
100%
| perlTextCheck
| Likely Text (Perl)
| default
| |
100%
| siegfried
| fmt/329 Shell Archive Format
| default
| |
100%
| detectItEasy
| Format: plain text[LF]
| default (weak)
| |
100%
| xdgMime
| message/rfc822
| default
|
|
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 46 72 6f 6d 3a 20 70 65 | 74 65 72 40 66 69 63 63 |From: pe|ter@ficc|
|00000010| 2e 75 75 2e 6e 65 74 20 | 28 50 65 74 65 72 20 64 |.uu.net |(Peter d|
|00000020| 61 20 53 69 6c 76 61 29 | 0a 4e 65 77 73 67 72 6f |a Silva)|.Newsgro|
|00000030| 75 70 73 3a 20 61 6c 74 | 2e 73 6f 75 72 63 65 73 |ups: alt|.sources|
|00000040| 0a 53 75 62 6a 65 63 74 | 3a 20 53 74 72 65 61 6d |.Subject|: Stream|
|00000050| 20 49 2f 4f 20 72 6f 75 | 74 69 6e 65 73 20 66 6f | I/O rou|tines fo|
|00000060| 72 20 54 43 4c 0a 4d 65 | 73 73 61 67 65 2d 49 44 |r TCL.Me|ssage-ID|
|00000070| 3a 20 3c 50 37 56 32 50 | 44 46 78 64 73 31 33 40 |: <P7V2P|DFxds13@|
|00000080| 66 69 63 63 2e 75 75 2e | 6e 65 74 3e 0a 44 61 74 |ficc.uu.|net>.Dat|
|00000090| 65 3a 20 31 31 20 41 70 | 72 20 39 30 20 31 39 3a |e: 11 Ap|r 90 19:|
|000000a0| 35 32 3a 33 35 20 47 4d | 54 0a 0a 41 72 63 68 69 |52:35 GM|T..Archi|
|000000b0| 76 65 2d 6e 61 6d 65 3a | 20 74 63 6c 2f 73 74 72 |ve-name:| tcl/str|
|000000c0| 65 61 6d 73 0a 0a 54 68 | 65 20 66 6f 6c 6c 6f 77 |eams..Th|e follow|
|000000d0| 69 6e 67 20 72 6f 75 74 | 69 6e 65 73 20 69 6d 70 |ing rout|ines imp|
|000000e0| 6c 65 6d 65 6e 74 20 61 | 20 73 74 72 65 61 6d 20 |lement a| stream |
|000000f0| 49 2f 4f 20 6c 69 62 72 | 61 72 79 2c 20 61 6c 6c |I/O libr|ary, all|
|00000100| 6f 77 69 6e 67 20 79 6f | 75 20 74 6f 20 72 65 61 |owing yo|u to rea|
|00000110| 64 0a 61 6e 64 20 77 72 | 69 74 65 20 74 65 78 74 |d.and wr|ite text|
|00000120| 20 66 69 6c 65 73 20 65 | 61 73 69 6c 79 20 66 72 | files e|asily fr|
|00000130| 6f 6d 20 54 43 4c 2e 0a | 0a 42 65 63 61 75 73 65 |om TCL..|.Because|
|00000140| 20 54 43 4c 20 61 73 73 | 75 6d 65 73 20 74 68 61 | TCL ass|umes tha|
|00000150| 74 20 6d 61 6c 6c 6f 63 | 20 77 69 6c 6c 20 61 62 |t malloc| will ab|
|00000160| 6f 72 74 20 6f 6e 20 66 | 61 69 6c 75 72 65 2c 20 |ort on f|ailure, |
|00000170| 74 68 65 73 65 20 72 6f | 75 74 69 6e 65 73 0a 63 |these ro|utines.c|
|00000180| 61 6c 6c 20 22 63 6b 61 | 6c 6c 6f 63 22 2e 20 49 |all "cka|lloc". I|
|00000190| 66 20 79 6f 75 27 72 65 | 20 6f 6e 20 61 20 42 53 |f you're| on a BS|
|000001a0| 44 20 73 79 73 74 65 6d | 2c 20 6a 75 73 74 20 23 |D system|, just #|
|000001b0| 64 65 66 69 6e 65 20 63 | 6b 61 6c 6c 6f 63 20 6d |define c|kalloc m|
|000001c0| 61 6c 6c 6f 63 2e 0a 4f | 74 68 65 72 77 69 73 65 |alloc..O|therwise|
|000001d0| 20 79 6f 75 20 70 72 6f | 62 61 62 6c 79 20 61 6c | you pro|bably al|
|000001e0| 72 65 61 64 79 20 68 61 | 76 65 20 69 74 20 69 6e |ready ha|ve it in|
|000001f0| 20 74 63 6c 2e 61 2e 0a | 0a 54 68 65 20 4d 61 6b | tcl.a..|.The Mak|
|00000200| 65 66 69 6c 65 20 69 73 | 20 74 68 65 20 63 6f 6d |efile is| the com|
|00000210| 70 6c 65 74 65 20 53 79 | 73 74 65 6d 2d 56 20 54 |plete Sy|stem-V T|
|00000220| 43 4c 20 4d 61 6b 65 66 | 69 6c 65 2c 20 77 69 74 |CL Makef|ile, wit|
|00000230| 68 20 74 68 65 20 73 74 | 72 65 61 6d 2d 49 4f 0a |h the st|ream-IO.|
|00000240| 72 6f 75 74 69 6e 65 73 | 20 61 64 64 65 64 2e 0a |routines| added..|
|00000250| 0a 6d 61 69 6e 2e 63 20 | 61 6c 6c 6f 77 73 20 79 |.main.c |allows y|
|00000260| 6f 75 20 74 6f 20 75 73 | 65 20 22 74 63 6c 22 20 |ou to us|e "tcl" |
|00000270| 69 6e 20 73 63 72 69 70 | 74 73 2c 20 77 69 74 68 |in scrip|ts, with|
|00000280| 20 61 20 73 69 6d 69 6c | 61 72 20 63 61 6c 6c 69 | a simil|ar calli|
|00000290| 6e 67 0a 73 79 6e 74 61 | 78 20 74 6f 20 41 57 4b |ng.synta|x to AWK|
|000002a0| 2e 0a 0a 63 61 74 2e 74 | 63 6c 20 69 73 20 61 20 |...cat.t|cl is a |
|000002b0| 54 43 4c 20 73 63 72 69 | 70 74 20 74 68 61 74 20 |TCL scri|pt that |
|000002c0| 69 6d 69 74 61 74 65 73 | 20 22 63 61 74 22 2e 0a |imitates| "cat"..|
|000002d0| 0a 23 21 20 2f 62 69 6e | 2f 73 68 0a 23 20 54 68 |.#! /bin|/sh.# Th|
|000002e0| 69 73 20 69 73 20 61 20 | 73 68 65 6c 6c 20 61 72 |is is a |shell ar|
|000002f0| 63 68 69 76 65 2e 20 20 | 52 65 6d 6f 76 65 20 61 |chive. |Remove a|
|00000300| 6e 79 74 68 69 6e 67 20 | 62 65 66 6f 72 65 20 74 |nything |before t|
|00000310| 68 69 73 20 6c 69 6e 65 | 2c 20 74 68 65 6e 20 66 |his line|, then f|
|00000320| 65 65 64 20 69 74 0a 23 | 20 69 6e 74 6f 20 61 20 |eed it.#| into a |
|00000330| 73 68 65 6c 6c 20 76 69 | 61 20 22 73 68 20 66 69 |shell vi|a "sh fi|
|00000340| 6c 65 22 20 6f 72 20 73 | 69 6d 69 6c 61 72 2e 20 |le" or s|imilar. |
|00000350| 20 54 6f 20 6f 76 65 72 | 77 72 69 74 65 20 65 78 | To over|write ex|
|00000360| 69 73 74 69 6e 67 20 66 | 69 6c 65 73 2c 0a 23 20 |isting f|iles,.# |
|00000370| 74 79 70 65 20 22 73 68 | 20 66 69 6c 65 20 2d 63 |type "sh| file -c|
|00000380| 22 2e 0a 23 20 54 68 65 | 20 74 6f 6f 6c 20 74 68 |"..# The| tool th|
|00000390| 61 74 20 67 65 6e 65 72 | 61 74 65 64 20 74 68 69 |at gener|ated thi|
|000003a0| 73 20 61 70 70 65 61 72 | 65 64 20 69 6e 20 74 68 |s appear|ed in th|
|000003b0| 65 20 63 6f 6d 70 2e 73 | 6f 75 72 63 65 73 2e 75 |e comp.s|ources.u|
|000003c0| 6e 69 78 20 6e 65 77 73 | 67 72 6f 75 70 3b 0a 23 |nix news|group;.#|
|000003d0| 20 73 65 6e 64 20 6d 61 | 69 6c 20 74 6f 20 63 6f | send ma|il to co|
|000003e0| 6d 70 2d 73 6f 75 72 63 | 65 73 2d 75 6e 69 78 40 |mp-sourc|es-unix@|
|000003f0| 75 75 6e 65 74 2e 75 75 | 2e 6e 65 74 20 69 66 20 |uunet.uu|.net if |
|00000400| 79 6f 75 20 77 61 6e 74 | 20 74 68 61 74 20 74 6f |you want| that to|
|00000410| 6f 6c 2e 0a 23 20 49 66 | 20 74 68 69 73 20 61 72 |ol..# If| this ar|
|00000420| 63 68 69 76 65 20 69 73 | 20 63 6f 6d 70 6c 65 74 |chive is| complet|
|00000430| 65 2c 20 79 6f 75 20 77 | 69 6c 6c 20 73 65 65 20 |e, you w|ill see |
|00000440| 74 68 65 20 66 6f 6c 6c | 6f 77 69 6e 67 20 6d 65 |the foll|owing me|
|00000450| 73 73 61 67 65 20 61 74 | 20 74 68 65 20 65 6e 64 |ssage at| the end|
|00000460| 3a 0a 23 09 09 22 45 6e | 64 20 6f 66 20 73 68 65 |:.#.."En|d of she|
|00000470| 6c 6c 20 61 72 63 68 69 | 76 65 2e 22 0a 23 20 43 |ll archi|ve.".# C|
|00000480| 6f 6e 74 65 6e 74 73 3a | 20 20 73 74 72 65 61 6d |ontents:| stream|
|00000490| 2e 33 20 73 74 72 65 61 | 6d 2e 35 20 73 74 72 65 |.3 strea|m.5 stre|
|000004a0| 61 6d 2e 63 20 73 74 72 | 65 61 6d 2e 68 20 68 61 |am.c str|eam.h ha|
|000004b0| 6e 64 6c 65 72 2e 63 20 | 68 61 6e 64 6c 65 72 2e |ndler.c |handler.|
|000004c0| 68 0a 23 20 20 20 4d 61 | 6b 65 66 69 6c 65 20 6d |h.# Ma|kefile m|
|000004d0| 61 69 6e 2e 63 20 63 61 | 74 2e 74 63 6c 0a 23 20 |ain.c ca|t.tcl.# |
|000004e0| 57 72 61 70 70 65 64 20 | 62 79 20 70 65 74 65 72 |Wrapped |by peter|
|000004f0| 40 66 69 63 63 2e 75 75 | 2e 6e 65 74 20 6f 6e 20 |@ficc.uu|.net on |
|00000500| 57 65 64 20 41 70 72 20 | 31 31 20 31 34 3a 34 34 |Wed Apr |11 14:44|
|00000510| 3a 35 38 20 31 39 39 30 | 0a 50 41 54 48 3d 2f 62 |:58 1990|.PATH=/b|
|00000520| 69 6e 3a 2f 75 73 72 2f | 62 69 6e 3a 2f 75 73 72 |in:/usr/|bin:/usr|
|00000530| 2f 75 63 62 20 3b 20 65 | 78 70 6f 72 74 20 50 41 |/ucb ; e|xport PA|
|00000540| 54 48 0a 69 66 20 74 65 | 73 74 20 2d 66 20 27 73 |TH.if te|st -f 's|
|00000550| 74 72 65 61 6d 2e 33 27 | 20 2d 61 20 22 24 7b 31 |tream.3'| -a "${1|
|00000560| 7d 22 20 21 3d 20 22 2d | 63 22 20 3b 20 74 68 65 |}" != "-|c" ; the|
|00000570| 6e 20 0a 20 20 65 63 68 | 6f 20 73 68 61 72 3a 20 |n . ech|o shar: |
|00000580| 57 69 6c 6c 20 6e 6f 74 | 20 63 6c 6f 62 62 65 72 |Will not| clobber|
|00000590| 20 65 78 69 73 74 69 6e | 67 20 66 69 6c 65 20 5c | existin|g file \|
|000005a0| 22 27 73 74 72 65 61 6d | 2e 33 27 5c 22 0a 65 6c |"'stream|.3'\".el|
|000005b0| 73 65 0a 65 63 68 6f 20 | 73 68 61 72 3a 20 45 78 |se.echo |shar: Ex|
|000005c0| 74 72 61 63 74 69 6e 67 | 20 5c 22 27 73 74 72 65 |tracting| \"'stre|
|000005d0| 61 6d 2e 33 27 5c 22 20 | 5c 28 34 39 38 20 63 68 |am.3'\" |\(498 ch|
|000005e0| 61 72 61 63 74 65 72 73 | 5c 29 0a 73 65 64 20 22 |aracters|\).sed "|
|000005f0| 73 2f 5e 58 2f 2f 22 20 | 3e 27 73 74 72 65 61 6d |s/^X//" |>'stream|
|00000600| 2e 33 27 20 3c 3c 27 45 | 4e 44 5f 4f 46 5f 46 49 |.3' <<'E|ND_OF_FI|
|00000610| 4c 45 27 0a 58 2e 54 48 | 20 53 54 52 45 41 4d 5f |LE'.X.TH| STREAM_|
|00000620| 49 4e 49 54 20 33 0a 58 | 2e 53 48 20 4e 41 4d 45 |INIT 3.X|.SH NAME|
|00000630| 0a 58 73 74 72 65 61 6d | 5f 69 6e 69 74 20 5c 2d |.Xstream|_init \-|
|00000640| 20 49 6e 69 74 69 61 6c | 69 73 65 20 73 74 72 65 | Initial|ise stre|
|00000650| 61 6d 20 49 2f 4f 20 63 | 6f 6d 6d 61 6e 64 73 20 |am I/O c|ommands |
|00000660| 66 6f 72 20 54 43 4c 0a | 58 2e 53 48 20 53 59 4e |for TCL.|X.SH SYN|
|00000670| 4f 50 53 49 53 0a 58 2e | 42 20 73 74 72 65 61 6d |OPSIS.X.|B stream|
|00000680| 5f 69 6e 69 74 0a 58 28 | 0a 58 2e 49 20 69 6e 74 |_init.X(|.X.I int|
|00000690| 65 72 70 0a 58 29 3b 0a | 58 2e 53 48 20 44 45 53 |erp.X);.|X.SH DES|
|000006a0| 43 52 49 50 54 49 4f 4e | 0a 58 2e 50 50 0a 58 2e |CRIPTION|.X.PP.X.|
|000006b0| 42 20 53 74 72 65 61 6d | 0a 58 69 73 20 61 20 73 |B Stream|.Xis a s|
|000006c0| 65 74 20 6f 66 20 63 6f | 6d 6d 61 6e 64 73 20 74 |et of co|mmands t|
|000006d0| 68 61 74 20 70 72 6f 76 | 69 64 65 20 61 63 63 65 |hat prov|ide acce|
|000006e0| 73 73 20 66 72 6f 6d 20 | 54 43 4c 20 74 6f 20 73 |ss from |TCL to s|
|000006f0| 74 64 69 6f 20 72 6f 75 | 74 69 6e 65 73 2e 20 53 |tdio rou|tines. S|
|00000700| 65 65 0a 58 5c 66 42 73 | 74 72 65 61 6d 5c 66 52 |ee.X\fBs|tream\fR|
|00000710| 28 35 29 20 66 6f 72 20 | 61 20 64 65 73 63 72 69 |(5) for |a descri|
|00000720| 70 74 69 6f 6e 20 6f 66 | 20 74 68 65 73 65 20 72 |ption of| these r|
|00000730| 6f 75 74 69 6e 65 73 2e | 20 54 6f 20 69 6e 63 6c |outines.| To incl|
|00000740| 75 64 65 20 74 68 65 6d | 0a 58 79 6f 75 20 6a 75 |ude them|.Xyou ju|
|00000750| 73 74 20 6e 65 65 64 20 | 74 6f 20 63 61 6c 6c 20 |st need |to call |
|00000760| 5c 66 42 73 74 72 65 61 | 6d 5f 69 6e 69 74 5c 66 |\fBstrea|m_init\f|
|00000770| 52 2c 20 70 61 73 73 69 | 6e 67 20 69 74 20 61 20 |R, passi|ng it a |
|00000780| 70 6f 69 6e 74 65 72 20 | 74 6f 20 79 6f 75 72 0a |pointer |to your.|
|00000790| 58 69 6e 74 65 72 70 72 | 65 74 65 72 2e 20 49 74 |Xinterpr|eter. It|
|000007a0| 20 77 69 6c 6c 20 61 75 | 74 6f 6d 61 74 69 63 61 | will au|tomatica|
|000007b0| 6c 6c 79 20 62 65 20 63 | 6c 65 61 6e 65 64 20 75 |lly be c|leaned u|
|000007c0| 70 20 61 6e 64 20 61 6c | 6c 20 74 68 65 20 73 74 |p and al|l the st|
|000007d0| 72 65 61 6d 73 0a 58 63 | 6c 6f 73 65 64 20 77 68 |reams.Xc|losed wh|
|000007e0| 65 6e 20 79 6f 75 20 64 | 65 6c 65 74 65 20 74 68 |en you d|elete th|
|000007f0| 65 20 69 6e 74 65 72 70 | 72 65 74 65 72 2e 0a 58 |e interp|reter..X|
|00000800| 2e 53 48 20 53 45 45 20 | 41 4c 53 4f 0a 58 53 54 |.SH SEE |ALSO.XST|
|00000810| 52 45 41 4d 28 35 29 0a | 45 4e 44 5f 4f 46 5f 46 |REAM(5).|END_OF_F|
|00000820| 49 4c 45 0a 69 66 20 74 | 65 73 74 20 34 39 38 20 |ILE.if t|est 498 |
|00000830| 2d 6e 65 20 60 77 63 20 | 2d 63 20 3c 27 73 74 72 |-ne `wc |-c <'str|
|00000840| 65 61 6d 2e 33 27 60 3b | 20 74 68 65 6e 0a 20 20 |eam.3'`;| then. |
|00000850| 20 20 65 63 68 6f 20 73 | 68 61 72 3a 20 5c 22 27 | echo s|har: \"'|
|00000860| 73 74 72 65 61 6d 2e 33 | 27 5c 22 20 75 6e 70 61 |stream.3|'\" unpa|
|00000870| 63 6b 65 64 20 77 69 74 | 68 20 77 72 6f 6e 67 20 |cked wit|h wrong |
|00000880| 73 69 7a 65 21 0a 66 69 | 0a 23 20 65 6e 64 20 6f |size!.fi|.# end o|
|00000890| 66 20 27 73 74 72 65 61 | 6d 2e 33 27 0a 66 69 0a |f 'strea|m.3'.fi.|
|000008a0| 69 66 20 74 65 73 74 20 | 2d 66 20 27 73 74 72 65 |if test |-f 'stre|
|000008b0| 61 6d 2e 35 27 20 2d 61 | 20 22 24 7b 31 7d 22 20 |am.5' -a| "${1}" |
|000008c0| 21 3d 20 22 2d 63 22 20 | 3b 20 74 68 65 6e 20 0a |!= "-c" |; then .|
|000008d0| 20 20 65 63 68 6f 20 73 | 68 61 72 3a 20 57 69 6c | echo s|har: Wil|
|000008e0| 6c 20 6e 6f 74 20 63 6c | 6f 62 62 65 72 20 65 78 |l not cl|obber ex|
|000008f0| 69 73 74 69 6e 67 20 66 | 69 6c 65 20 5c 22 27 73 |isting f|ile \"'s|
|00000900| 74 72 65 61 6d 2e 35 27 | 5c 22 0a 65 6c 73 65 0a |tream.5'|\".else.|
|00000910| 65 63 68 6f 20 73 68 61 | 72 3a 20 45 78 74 72 61 |echo sha|r: Extra|
|00000920| 63 74 69 6e 67 20 5c 22 | 27 73 74 72 65 61 6d 2e |cting \"|'stream.|
|00000930| 35 27 5c 22 20 5c 28 32 | 35 32 38 20 63 68 61 72 |5'\" \(2|528 char|
|00000940| 61 63 74 65 72 73 5c 29 | 0a 73 65 64 20 22 73 2f |acters\)|.sed "s/|
|00000950| 5e 58 2f 2f 22 20 3e 27 | 73 74 72 65 61 6d 2e 35 |^X//" >'|stream.5|
|00000960| 27 20 3c 3c 27 45 4e 44 | 5f 4f 46 5f 46 49 4c 45 |' <<'END|_OF_FILE|
|00000970| 27 0a 58 2e 54 48 20 53 | 54 52 45 41 4d 20 35 0a |'.X.TH S|TREAM 5.|
|00000980| 58 2e 53 48 20 4e 41 4d | 45 0a 58 73 74 72 65 61 |X.SH NAM|E.Xstrea|
|00000990| 6d 20 5c 2d 20 53 74 72 | 65 61 6d 20 49 2f 4f 20 |m \- Str|eam I/O |
|000009a0| 63 6f 6d 6d 61 6e 64 73 | 20 66 6f 72 20 54 43 4c |commands| for TCL|
|000009b0| 0a 58 2e 53 48 20 53 59 | 4e 4f 50 53 49 53 0a 58 |.X.SH SY|NOPSIS.X|
|000009c0| 2e 42 20 73 65 74 0a 58 | 68 61 6e 64 6c 65 20 5b |.B set.X|handle [|
|000009d0| 0a 58 2e 42 20 73 74 72 | 65 61 6d 20 6f 70 65 6e |.X.B str|eam open|
|000009e0| 0a 58 2e 49 20 6e 61 6d | 65 20 6d 6f 64 65 0a 58 |.X.I nam|e mode.X|
|000009f0| 5d 0a 58 2e 62 72 0a 58 | 2e 42 20 73 74 72 65 61 |].X.br.X|.B strea|
|00000a00| 6d 20 63 6c 6f 73 65 20 | 0a 58 2e 49 20 68 61 6e |m close |.X.I han|
|00000a10| 64 6c 65 0a 58 2e 62 72 | 0a 58 2e 42 20 73 74 72 |dle.X.br|.X.B str|
|00000a20| 65 61 6d 20 67 65 74 73 | 20 0a 58 2e 49 20 68 61 |eam gets| .X.I ha|
|00000a30| 6e 64 6c 65 0a 58 5b 0a | 58 2e 49 20 76 61 72 0a |ndle.X[.|X.I var.|
|00000a40| 58 5d 0a 58 2e 62 72 0a | 58 2e 42 20 73 74 72 65 |X].X.br.|X.B stre|
|00000a50| 61 6d 20 70 75 74 73 0a | 58 2e 49 20 68 61 6e 64 |am puts.|X.I hand|
|00000a60| 6c 65 20 6c 69 6e 65 0a | 58 2e 62 72 0a 58 2e 42 |le line.|X.br.X.B|
|00000a70| 20 73 74 72 65 61 6d 20 | 65 6f 66 20 0a 58 2e 49 | stream |eof .X.I|
|00000a80| 20 68 61 6e 64 6c 65 0a | 58 2e 62 72 0a 58 2e 42 | handle.|X.br.X.B|
|00000a90| 20 73 74 72 65 61 6d 20 | 74 65 6c 6c 20 0a 58 2e | stream |tell .X.|
|00000aa0| 49 20 68 61 6e 64 6c 65 | 0a 58 2e 62 72 0a 58 2e |I handle|.X.br.X.|
|00000ab0| 42 20 73 74 72 65 61 6d | 20 73 65 65 6b 0a 58 2e |B stream| seek.X.|
|00000ac0| 49 20 68 61 6e 64 6c 65 | 20 6f 66 66 73 65 74 0a |I handle| offset.|
|00000ad0| 58 5b 0a 58 2e 49 20 77 | 68 65 6e 63 65 0a 58 5d |X[.X.I w|hence.X]|
|00000ae0| 0a 58 2e 62 72 0a 58 2e | 42 20 73 74 72 65 61 6d |.X.br.X.|B stream|
|00000af0| 20 65 72 72 6f 72 0a 58 | 2e 49 20 68 61 6e 64 6c | error.X|.I handl|
|00000b00| 65 0a 58 2e 62 72 0a 58 | 2e 42 20 73 74 72 65 61 |e.X.br.X|.B strea|
|00000b10| 6d 20 6c 69 73 74 0a 58 | 2e 53 48 20 44 45 53 43 |m list.X|.SH DESC|
|00000b20| 52 49 50 54 49 4f 4e 0a | 58 2e 50 50 0a 58 2e 42 |RIPTION.|X.PP.X.B|
|00000b30| 20 53 74 72 65 61 6d 0a | 58 69 73 20 61 20 73 65 | Stream.|Xis a se|
|00000b40| 74 20 6f 66 20 63 6f 6d | 6d 61 6e 64 73 20 74 68 |t of com|mands th|
|00000b50| 61 74 20 70 72 6f 76 69 | 64 65 20 61 63 63 65 73 |at provi|de acces|
|00000b60| 73 20 66 72 6f 6d 20 54 | 43 4c 20 74 6f 20 73 74 |s from T|CL to st|
|00000b70| 64 69 6f 20 72 6f 75 74 | 69 6e 65 73 2e 20 54 68 |dio rout|ines. Th|
|00000b80| 65 79 0a 58 75 73 65 20 | 61 20 74 6f 6b 65 6e 20 |ey.Xuse |a token |
|00000b90| 63 61 6c 6c 65 64 20 61 | 20 22 73 74 72 65 61 6d |called a| "stream|
|00000ba0| 20 68 61 6e 64 6c 65 22 | 20 74 6f 20 69 6e 64 69 | handle"| to indi|
|00000bb0| 63 61 74 65 20 77 68 61 | 74 20 73 74 72 65 61 6d |cate wha|t stream|
|00000bc0| 20 69 73 20 62 65 61 69 | 6e 67 0a 58 6f 70 65 72 | is beai|ng.Xoper|
|00000bd0| 61 74 65 64 20 6f 6e 2e | 20 54 68 65 20 66 6f 72 |ated on.| The for|
|00000be0| 6d 61 74 20 6f 66 20 74 | 68 65 20 68 61 6e 64 6c |mat of t|he handl|
|00000bf0| 65 20 69 73 20 61 20 73 | 74 72 69 6e 67 2c 20 22 |e is a s|tring, "|
|00000c00| 66 69 6c 65 4e 4e 4e 22 | 2e 20 59 6f 75 20 63 72 |fileNNN"|. You cr|
|00000c10| 65 61 74 65 0a 58 61 20 | 68 61 6e 64 6c 65 20 77 |eate.Xa |handle w|
|00000c20| 69 74 68 20 22 6f 70 65 | 6e 22 2c 20 61 6e 64 20 |ith "ope|n", and |
|00000c30| 64 65 6c 65 74 65 20 69 | 74 20 77 69 74 68 20 22 |delete i|t with "|
|00000c40| 63 6c 6f 73 65 22 2e 0a | 58 2e 50 50 0a 58 57 68 |close"..|X.PP.XWh|
|00000c50| 65 6e 20 73 74 72 65 61 | 6d 20 73 74 61 72 74 73 |en strea|m starts|
|00000c60| 20 75 70 2c 20 73 74 72 | 65 61 6d 73 20 30 2c 20 | up, str|eams 0, |
|00000c70| 31 2c 20 61 6e 64 20 32 | 20 61 72 65 0a 58 61 6c |1, and 2| are.Xal|
|00000c80| 72 65 61 64 79 20 6f 70 | 65 6e 2c 20 61 6e 64 20 |ready op|en, and |
|00000c90| 63 6f 72 72 65 73 70 6f | 6e 64 20 74 6f 20 22 73 |correspo|nd to "s|
|00000ca0| 74 64 69 6e 22 2c 20 22 | 73 74 64 6f 75 74 22 2c |tdin", "|stdout",|
|00000cb0| 20 61 6e 64 20 22 73 74 | 64 65 72 72 22 2e 0a 58 | and "st|derr"..X|
|00000cc0| 2e 53 48 20 43 4f 4d 4d | 41 4e 44 53 0a 58 2e 49 |.SH COMM|ANDS.X.I|
|00000cd0| 50 20 22 5c 66 42 73 74 | 72 65 61 6d 20 6f 70 65 |P "\fBst|ream ope|
|00000ce0| 6e 5c 66 52 20 6e 61 6d | 65 20 6d 6f 64 65 22 0a |n\fR nam|e mode".|
|00000cf0| 58 54 68 69 73 20 63 72 | 65 61 74 65 73 20 61 20 |XThis cr|eates a |
|00000d00| 6e 65 77 20 68 61 6e 64 | 6c 65 2c 20 72 65 66 65 |new hand|le, refe|
|00000d10| 72 72 69 6e 67 20 74 6f | 20 74 68 65 20 6e 61 6d |rring to| the nam|
|00000d20| 65 64 20 73 74 72 65 61 | 6d 2e 0a 58 54 68 65 20 |ed strea|m..XThe |
|00000d30| 6d 6f 64 65 20 73 68 6f | 75 6c 64 0a 58 62 65 20 |mode sho|uld.Xbe |
|00000d40| 74 68 65 20 73 61 6d 65 | 20 61 73 20 66 6f 72 20 |the same| as for |
|00000d50| 66 6f 70 65 6e 20 28 72 | 2c 20 77 2c 20 77 2b 2c |fopen (r|, w, w+,|
|00000d60| 20 61 2c 20 65 74 63 2e | 2e 2e 29 2c 20 77 69 74 | a, etc.|..), wit|
|00000d70| 68 20 74 68 65 20 61 64 | 64 69 74 69 6f 6e 20 74 |h the ad|dition t|
|00000d80| 68 61 74 20 61 0a 58 6d | 6f 64 65 20 63 6f 6e 74 |hat a.Xm|ode cont|
|00000d90| 61 69 6e 69 6e 67 20 74 | 68 65 20 6c 65 74 74 65 |aining t|he lette|
|00000da0| 72 20 27 70 27 20 6f 70 | 65 6e 73 20 61 20 70 69 |r 'p' op|ens a pi|
|00000db0| 70 65 20 61 6e 64 20 74 | 68 65 20 6e 61 6d 65 20 |pe and t|he name |
|00000dc0| 67 69 76 65 6e 0a 58 69 | 73 20 69 6e 74 65 72 70 |given.Xi|s interp|
|00000dd0| 72 65 74 65 64 20 61 73 | 20 61 20 63 6f 6d 6d 61 |reted as| a comma|
|00000de0| 6e 64 2e 0a 58 41 6e 20 | 65 72 72 6f 72 20 63 6f |nd..XAn |error co|
|00000df0| 6e 64 69 74 69 6f 6e 20 | 65 78 69 73 74 73 0a 58 |ndition |exists.X|
|00000e00| 69 66 20 74 68 65 20 6e | 61 6d 65 64 20 66 69 6c |if the n|amed fil|
|00000e10| 65 20 63 61 6e 20 6e 6f | 74 20 62 65 20 6f 70 65 |e can no|t be ope|
|00000e20| 6e 65 64 2c 20 6f 74 68 | 65 72 77 69 73 65 0a 58 |ned, oth|erwise.X|
|00000e30| 74 68 65 20 68 61 6e 64 | 6c 65 20 69 73 20 72 65 |the hand|le is re|
|00000e40| 74 75 72 6e 65 64 20 74 | 6f 20 74 68 65 20 75 73 |turned t|o the us|
|00000e50| 65 72 2e 0a 58 2e 49 50 | 20 22 5c 66 42 73 74 72 |er..X.IP| "\fBstr|
|00000e60| 65 61 6d 20 63 6c 6f 73 | 65 5c 66 52 20 68 61 6e |eam clos|e\fR han|
|00000e70| 64 6c 65 22 0a 58 54 68 | 69 73 20 63 6c 6f 73 65 |dle".XTh|is close|
|00000e80| 73 20 74 68 65 20 68 61 | 6e 64 6c 65 2e 20 49 74 |s the ha|ndle. It|
|00000e90| 20 69 73 20 61 6e 20 65 | 72 72 6f 72 20 66 6f 72 | is an e|rror for|
|00000ea0| 20 74 68 65 20 68 61 6e | 64 6c 65 20 6e 6f 74 20 | the han|dle not |
|00000eb0| 74 6f 20 65 78 69 73 74 | 20 6f 6e 20 74 68 69 73 |to exist| on this|
|00000ec0| 0a 58 6f 72 20 61 6e 79 | 20 6f 66 20 74 68 65 20 |.Xor any| of the |
|00000ed0| 72 65 6d 61 69 6e 69 6e | 67 20 63 6f 6d 6d 61 6e |remainin|g comman|
|00000ee0| 64 73 2e 0a 58 2e 49 50 | 20 22 5c 66 42 73 74 72 |ds..X.IP| "\fBstr|
|00000ef0| 65 61 6d 20 67 65 74 73 | 5c 66 52 20 68 61 6e 64 |eam gets|\fR hand|
|00000f00| 6c 65 20 5b 76 61 72 5d | 22 0a 58 54 68 69 73 20 |le [var]|".XThis |
|00000f10| 72 65 61 64 73 20 61 20 | 6c 69 6e 65 20 66 72 6f |reads a |line fro|
|00000f20| 6d 20 74 68 65 20 66 69 | 6c 65 2c 20 72 65 74 75 |m the fi|le, retu|
|00000f30| 72 6e 69 6e 67 20 69 74 | 20 61 73 20 74 68 65 20 |rning it| as the |
|00000f40| 72 65 73 75 6c 74 2e 20 | 54 68 65 72 65 20 69 73 |result. |There is|
|00000f50| 20 6e 6f 0a 58 74 72 61 | 69 6c 69 6e 67 20 6e 65 | no.Xtra|iling ne|
|00000f60| 77 6c 69 6e 65 2c 20 73 | 6f 20 79 6f 75 20 63 61 |wline, s|o you ca|
|00000f70| 6e 27 74 20 64 69 73 74 | 69 6e 67 75 69 73 68 20 |n't dist|inguish |
|00000f80| 61 6e 20 65 6d 70 74 79 | 20 6c 69 6e 65 20 66 72 |an empty| line fr|
|00000f90| 6f 6d 20 65 6f 66 2e 2e | 2e 20 75 73 65 0a 58 22 |om eof..|. use.X"|
|00000fa0| 73 74 72 65 61 6d 20 68 | 61 6e 64 6c 65 20 65 6f |stream h|andle eo|
|00000fb0| 66 22 20 66 6f 72 20 74 | 68 69 73 20 70 75 72 70 |f" for t|his purp|
|00000fc0| 6f 73 65 2c 20 6f 72 20 | 70 61 73 73 20 61 20 76 |ose, or |pass a v|
|00000fd0| 61 72 69 61 62 6c 65 20 | 6e 61 6d 65 2e 20 49 66 |ariable |name. If|
|00000fe0| 20 63 61 6c 6c 65 64 0a | 58 77 69 74 68 20 61 20 | called.|Xwith a |
|00000ff0| 76 61 72 69 61 62 6c 65 | 0a 58 69 74 20 77 69 6c |variable|.Xit wil|
|00001000| 6c 20 70 75 74 20 74 68 | 65 20 72 65 73 75 6c 74 |l put th|e result|
|00001010| 69 6e 67 20 6c 69 6e 65 | 20 69 6e 20 74 68 65 20 |ing line| in the |
|00001020| 6e 61 6d 65 64 20 76 61 | 72 69 61 62 6c 65 0a 58 |named va|riable.X|
|00001030| 61 6e 64 20 74 68 65 20 | 63 6f 6d 6d 61 6e 64 20 |and the |command |
|00001040| 77 69 6c 6c 20 72 65 74 | 75 72 6e 20 74 68 65 20 |will ret|urn the |
|00001050| 6e 75 6d 62 65 72 20 6f | 66 20 62 79 74 65 73 20 |number o|f bytes |
|00001060| 72 65 61 64 2c 20 30 20 | 6f 6e 0a 58 65 6f 66 2c |read, 0 |on.Xeof,|
|00001070| 20 6f 72 20 2d 31 20 6f | 6e 20 65 72 72 6f 72 2e | or -1 o|n error.|
|00001080| 0a 58 2e 49 50 20 22 5c | 66 42 73 74 72 65 61 6d |.X.IP "\|fBstream|
|00001090| 20 70 75 74 73 5c 66 52 | 20 68 61 6e 64 6c 65 20 | puts\fR| handle |
|000010a0| 6c 69 6e 65 22 0a 58 54 | 68 69 73 20 77 72 69 74 |line".XT|his writ|
|000010b0| 65 73 20 61 20 6c 69 6e | 65 20 74 6f 20 74 68 65 |es a lin|e to the|
|000010c0| 20 66 69 6c 65 2c 20 70 | 6c 75 73 20 61 20 74 72 | file, p|lus a tr|
|000010d0| 61 69 6c 69 6e 67 20 6e | 65 77 6c 69 6e 65 2e 0a |ailing n|ewline..|
|000010e0| 58 2e 49 50 20 22 5c 66 | 42 73 74 72 65 61 6d 20 |X.IP "\f|Bstream |
|000010f0| 65 6f 66 5c 66 52 20 68 | 61 6e 64 6c 65 22 0a 58 |eof\fR h|andle".X|
|00001100| 54 68 69 73 20 72 65 74 | 75 72 6e 73 20 31 20 69 |This ret|urns 1 i|
|00001110| 66 20 45 4f 46 20 68 61 | 73 20 62 65 61 6e 20 72 |f EOF ha|s bean r|
|00001120| 65 61 64 20 6f 6e 20 74 | 68 69 73 20 68 61 6e 64 |ead on t|his hand|
|00001130| 6c 65 2c 20 6f 74 68 65 | 72 77 69 73 65 20 30 2e |le, othe|rwise 0.|
|00001140| 0a 58 2e 49 50 20 22 5c | 66 42 73 74 72 65 61 6d |.X.IP "\|fBstream|
|00001150| 20 74 65 6c 6c 5c 66 52 | 20 68 61 6e 64 6c 65 22 | tell\fR| handle"|
|00001160| 0a 58 54 68 69 73 20 72 | 65 74 75 72 6e 73 20 74 |.XThis r|eturns t|
|00001170| 68 65 20 63 75 72 72 65 | 6e 74 20 6f 66 66 73 65 |he curre|nt offse|
|00001180| 74 20 6f 66 20 74 68 69 | 73 20 68 61 6e 64 6c 65 |t of thi|s handle|
|00001190| 2c 20 69 6e 20 64 65 63 | 69 6d 61 6c 2e 0a 58 2e |, in dec|imal..X.|
|000011a0| 49 50 20 22 5c 66 42 73 | 74 72 65 61 6d 20 65 72 |IP "\fBs|tream er|
|000011b0| 72 6f 72 5c 66 52 20 68 | 61 6e 64 6c 65 22 0a 58 |ror\fR h|andle".X|
|000011c0| 49 66 20 74 68 65 72 65 | 20 69 73 20 63 75 72 72 |If there| is curr|
|000011d0| 65 6e 74 6c 79 20 61 6e | 20 65 72 72 6f 72 20 63 |ently an| error c|
|000011e0| 6f 6e 64 69 74 69 6f 6e | 20 6f 6e 20 61 20 68 61 |ondition| on a ha|
|000011f0| 6e 64 6c 65 2c 20 74 68 | 69 73 20 72 65 74 75 72 |ndle, th|is retur|
|00001200| 6e 73 0a 58 74 68 65 20 | 61 70 70 72 6f 72 69 61 |ns.Xthe |approria|
|00001210| 74 65 20 65 72 72 6f 72 | 20 74 65 78 74 20 69 6e |te error| text in|
|00001220| 20 70 65 72 72 6f 72 2d | 73 74 79 6c 65 20 66 6f | perror-|style fo|
|00001230| 72 6d 61 74 2e 0a 58 2e | 49 50 20 22 5c 66 42 73 |rmat..X.|IP "\fBs|
|00001240| 74 72 65 61 6d 20 73 65 | 65 6b 5c 66 52 20 68 61 |tream se|ek\fR ha|
|00001250| 6e 64 6c 65 20 6f 66 66 | 73 65 74 20 5b 77 68 65 |ndle off|set [whe|
|00001260| 6e 63 65 5d 22 0a 58 54 | 68 69 73 20 73 65 65 6b |nce]".XT|his seek|
|00001270| 73 20 74 6f 20 74 68 65 | 20 6e 61 6d 65 64 20 6f |s to the| named o|
|00001280| 66 66 73 65 74 2e 20 57 | 68 65 6e 63 65 20 69 73 |ffset. W|hence is|
|00001290| 20 30 2c 20 31 2c 20 6f | 72 20 32 20 28 61 73 20 | 0, 1, o|r 2 (as |
|000012a0| 69 6e 20 66 73 65 65 6b | 29 2c 20 61 6e 64 0a 58 |in fseek|), and.X|
|000012b0| 64 65 66 61 75 6c 74 73 | 20 74 6f 20 30 20 69 66 |defaults| to 0 if|
|000012c0| 20 6e 6f 74 20 73 70 65 | 63 69 66 69 65 64 2e 0a | not spe|cified..|
|000012d0| 58 2e 53 48 20 53 45 45 | 20 41 4c 53 4f 0a 58 54 |X.SH SEE| ALSO.XT|
|000012e0| 43 4c 28 31 29 2c 20 4a | 6f 68 6e 20 4f 75 73 74 |CL(1), J|ohn Oust|
|000012f0| 65 72 68 6f 75 74 2e 0a | 58 2e 53 48 20 42 55 47 |erhout..|X.SH BUG|
|00001300| 53 0a 58 2e 50 50 0a 58 | 54 68 65 20 73 65 6d 61 |S.X.PP.X|The sema|
|00001310| 6e 74 69 63 73 20 61 72 | 65 20 6e 6f 74 20 71 75 |ntics ar|e not qu|
|00001320| 69 74 65 20 74 68 65 20 | 73 61 6d 65 20 61 73 20 |ite the |same as |
|00001330| 74 68 65 20 53 54 44 49 | 4f 20 66 75 6e 63 74 69 |the STDI|O functi|
|00001340| 6f 6e 73 2c 20 62 65 63 | 61 75 73 65 20 6f 66 0a |ons, bec|ause of.|
|00001350| 58 74 68 65 20 73 69 6e | 67 6c 65 20 72 65 74 75 |Xthe sin|gle retu|
|00001360| 72 6e 20 76 61 6c 75 65 | 2e 0a 58 2e 50 50 0a 58 |rn value|..X.PP.X|
|00001370| 49 74 20 69 73 20 6e 6f | 74 20 70 6f 73 73 69 62 |It is no|t possib|
|00001380| 6c 65 20 74 6f 20 72 65 | 61 64 20 6d 6f 72 65 20 |le to re|ad more |
|00001390| 6f 72 20 6c 65 73 73 20 | 74 68 61 6e 20 61 20 77 |or less |than a w|
|000013a0| 68 6f 6c 65 20 6c 69 6e | 65 2e 0a 45 4e 44 5f 4f |hole lin|e..END_O|
|000013b0| 46 5f 46 49 4c 45 0a 69 | 66 20 74 65 73 74 20 32 |F_FILE.i|f test 2|
|000013c0| 35 32 38 20 2d 6e 65 20 | 60 77 63 20 2d 63 20 3c |528 -ne |`wc -c <|
|000013d0| 27 73 74 72 65 61 6d 2e | 35 27 60 3b 20 74 68 65 |'stream.|5'`; the|
|000013e0| 6e 0a 20 20 20 20 65 63 | 68 6f 20 73 68 61 72 3a |n. ec|ho shar:|
|000013f0| 20 5c 22 27 73 74 72 65 | 61 6d 2e 35 27 5c 22 20 | \"'stre|am.5'\" |
|00001400| 75 6e 70 61 63 6b 65 64 | 20 77 69 74 68 20 77 72 |unpacked| with wr|
|00001410| 6f 6e 67 20 73 69 7a 65 | 21 0a 66 69 0a 23 20 65 |ong size|!.fi.# e|
|00001420| 6e 64 20 6f 66 20 27 73 | 74 72 65 61 6d 2e 35 27 |nd of 's|tream.5'|
|00001430| 0a 66 69 0a 69 66 20 74 | 65 73 74 20 2d 66 20 27 |.fi.if t|est -f '|
|00001440| 73 74 72 65 61 6d 2e 63 | 27 20 2d 61 20 22 24 7b |stream.c|' -a "${|
|00001450| 31 7d 22 20 21 3d 20 22 | 2d 63 22 20 3b 20 74 68 |1}" != "|-c" ; th|
|00001460| 65 6e 20 0a 20 20 65 63 | 68 6f 20 73 68 61 72 3a |en . ec|ho shar:|
|00001470| 20 57 69 6c 6c 20 6e 6f | 74 20 63 6c 6f 62 62 65 | Will no|t clobbe|
|00001480| 72 20 65 78 69 73 74 69 | 6e 67 20 66 69 6c 65 20 |r existi|ng file |
|00001490| 5c 22 27 73 74 72 65 61 | 6d 2e 63 27 5c 22 0a 65 |\"'strea|m.c'\".e|
|000014a0| 6c 73 65 0a 65 63 68 6f | 20 73 68 61 72 3a 20 45 |lse.echo| shar: E|
|000014b0| 78 74 72 61 63 74 69 6e | 67 20 5c 22 27 73 74 72 |xtractin|g \"'str|
|000014c0| 65 61 6d 2e 63 27 5c 22 | 20 5c 28 39 33 33 39 20 |eam.c'\"| \(9339 |
|000014d0| 63 68 61 72 61 63 74 65 | 72 73 5c 29 0a 73 65 64 |characte|rs\).sed|
|000014e0| 20 22 73 2f 5e 58 2f 2f | 22 20 3e 27 73 74 72 65 | "s/^X//|" >'stre|
|000014f0| 61 6d 2e 63 27 20 3c 3c | 27 45 4e 44 5f 4f 46 5f |am.c' <<|'END_OF_|
|00001500| 46 49 4c 45 27 0a 58 2f | 2a 20 73 74 72 65 61 6d |FILE'.X/|* stream|
|00001510| 20 63 6f 6d 6d 61 6e 64 | 73 20 66 6f 72 20 74 63 | command|s for tc|
|00001520| 6c 20 2a 2f 0a 58 23 69 | 6e 63 6c 75 64 65 20 3c |l */.X#i|nclude <|
|00001530| 73 74 64 69 6f 2e 68 3e | 0a 58 23 69 6e 63 6c 75 |stdio.h>|.X#inclu|
|00001540| 64 65 20 3c 74 63 6c 2e | 68 3e 0a 58 23 69 6e 63 |de <tcl.|h>.X#inc|
|00001550| 6c 75 64 65 20 3c 65 72 | 72 6e 6f 2e 68 3e 0a 58 |lude <er|rno.h>.X|
|00001560| 23 69 6e 63 6c 75 64 65 | 20 3c 63 74 79 70 65 2e |#include| <ctype.|
|00001570| 68 3e 0a 58 23 69 6e 63 | 6c 75 64 65 20 22 68 61 |h>.X#inc|lude "ha|
|00001580| 6e 64 6c 65 72 2e 68 22 | 0a 58 23 69 6e 63 6c 75 |ndler.h"|.X#inclu|
|00001590| 64 65 20 22 73 74 72 65 | 61 6d 2e 68 22 0a 58 0a |de "stre|am.h".X.|
|000015a0| 58 23 64 65 66 69 6e 65 | 20 53 54 41 54 49 43 0a |X#define| STATIC.|
|000015b0| 58 0a 58 69 6e 74 20 73 | 74 72 65 61 6d 4f 70 65 |X.Xint s|treamOpe|
|000015c0| 6e 28 29 2c 0a 58 20 20 | 20 20 73 74 72 65 61 6d |n(),.X | stream|
|000015d0| 43 6c 6f 73 65 28 29 2c | 0a 58 20 20 20 20 73 74 |Close(),|.X st|
|000015e0| 72 65 61 6d 47 65 74 73 | 28 29 2c 0a 58 20 20 20 |reamGets|(),.X |
|000015f0| 20 73 74 72 65 61 6d 50 | 75 74 73 28 29 2c 0a 58 | streamP|uts(),.X|
|00001600| 20 20 20 20 73 74 72 65 | 61 6d 45 6f 66 28 29 2c | stre|amEof(),|
|00001610| 0a 58 20 20 20 20 73 74 | 72 65 61 6d 4e 61 6d 65 |.X st|reamName|
|00001620| 28 29 2c 0a 58 20 20 20 | 20 73 74 72 65 61 6d 45 |(),.X | streamE|
|00001630| 72 72 28 29 2c 0a 58 20 | 20 20 20 73 74 72 65 61 |rr(),.X | strea|
|00001640| 6d 54 65 6c 6c 28 29 2c | 0a 58 20 20 20 20 73 74 |mTell(),|.X st|
|00001650| 72 65 61 6d 4c 69 73 74 | 28 29 3b 0a 58 20 20 20 |reamList|();.X |
|00001660| 20 73 74 72 65 61 6d 53 | 65 65 6b 28 29 3b 0a 58 | streamS|eek();.X|
|00001670| 0a 58 73 74 61 74 69 63 | 20 73 74 72 75 63 74 20 |.Xstatic| struct |
|00001680| 73 75 62 63 6d 64 20 63 | 6f 6d 6d 61 6e 64 73 5b |subcmd c|ommands[|
|00001690| 5d 20 3d 20 7b 0a 58 09 | 7b 20 73 74 72 65 61 6d |] = {.X.|{ stream|
|000016a0| 4f 70 65 6e 2c 20 22 6f | 70 65 6e 22 2c 20 32 2c |Open, "o|pen", 2,|
|000016b0| 20 32 2c 20 22 6e 61 6d | 65 20 6d 6f 64 65 22 20 | 2, "nam|e mode" |
|000016c0| 7d 2c 0a 58 09 7b 20 73 | 74 72 65 61 6d 43 6c 6f |},.X.{ s|treamClo|
|000016d0| 73 65 2c 20 22 63 6c 6f | 73 65 22 2c 20 31 2c 20 |se, "clo|se", 1, |
|000016e0| 31 2c 20 22 68 61 6e 64 | 6c 65 22 20 7d 2c 0a 58 |1, "hand|le" },.X|
|000016f0| 09 7b 20 73 74 72 65 61 | 6d 47 65 74 73 2c 20 22 |.{ strea|mGets, "|
|00001700| 67 65 74 73 22 2c 20 31 | 2c 20 32 2c 20 22 68 61 |gets", 1|, 2, "ha|
|00001710| 6e 64 6c 65 20 5b 76 61 | 72 5d 22 20 7d 2c 0a 58 |ndle [va|r]" },.X|
|00001720| 09 7b 20 73 74 72 65 61 | 6d 50 75 74 73 2c 20 22 |.{ strea|mPuts, "|
|00001730| 70 75 74 73 22 2c 20 32 | 2c 20 32 2c 20 22 68 61 |puts", 2|, 2, "ha|
|00001740| 6e 64 6c 65 20 6c 69 6e | 65 22 20 7d 2c 0a 58 09 |ndle lin|e" },.X.|
|00001750| 7b 20 73 74 72 65 61 6d | 45 6f 66 2c 20 22 65 6f |{ stream|Eof, "eo|
|00001760| 66 22 2c 20 31 2c 20 31 | 2c 20 22 68 61 6e 64 6c |f", 1, 1|, "handl|
|00001770| 65 22 20 7d 2c 0a 58 09 | 7b 20 73 74 72 65 61 6d |e" },.X.|{ stream|
|00001780| 45 72 72 2c 20 22 65 72 | 72 6f 72 22 2c 20 31 2c |Err, "er|ror", 1,|
|00001790| 20 31 2c 20 22 68 61 6e | 64 6c 65 22 20 7d 2c 0a | 1, "han|dle" },.|
|000017a0| 58 09 7b 20 73 74 72 65 | 61 6d 4e 61 6d 65 2c 20 |X.{ stre|amName, |
|000017b0| 22 6e 61 6d 65 22 2c 20 | 31 2c 20 31 2c 20 22 68 |"name", |1, 1, "h|
|000017c0| 61 6e 64 6c 65 22 20 7d | 2c 0a 58 09 7b 20 73 74 |andle" }|,.X.{ st|
|000017d0| 72 65 61 6d 54 65 6c 6c | 2c 20 22 74 65 6c 6c 22 |reamTell|, "tell"|
|000017e0| 2c 20 31 2c 20 31 2c 20 | 22 68 61 6e 64 6c 65 22 |, 1, 1, |"handle"|
|000017f0| 20 7d 2c 0a 58 09 7b 20 | 73 74 72 65 61 6d 4c 69 | },.X.{ |streamLi|
|00001800| 73 74 2c 20 22 6c 69 73 | 74 22 2c 20 30 2c 20 30 |st, "lis|t", 0, 0|
|00001810| 2c 20 22 22 20 7d 2c 0a | 58 09 7b 20 73 74 72 65 |, "" },.|X.{ stre|
|00001820| 61 6d 53 65 65 6b 2c 20 | 22 73 65 65 6b 22 2c 20 |amSeek, |"seek", |
|00001830| 32 2c 20 33 2c 20 22 68 | 61 6e 64 6c 65 20 6f 66 |2, 3, "h|andle of|
|00001840| 66 73 65 74 20 5b 77 68 | 65 6e 63 65 5d 22 20 7d |fset [wh|ence]" }|
|00001850| 2c 0a 58 7d 3b 0a 58 0a | 58 73 61 76 65 5f 65 72 |,.X};.X.|Xsave_er|
|00001860| 72 28 73 29 0a 58 73 74 | 72 75 63 74 20 73 74 72 |r(s).Xst|ruct str|
|00001870| 65 61 6d 20 2a 73 3b 0a | 58 7b 0a 58 09 63 68 61 |eam *s;.|X{.X.cha|
|00001880| 72 20 2a 73 74 72 65 72 | 72 6f 72 28 29 3b 0a 58 |r *strer|ror();.X|
|00001890| 09 65 78 74 65 72 6e 20 | 69 6e 74 20 65 72 72 6e |.extern |int errn|
|000018a0| 6f 3b 0a 58 09 63 68 61 | 72 20 2a 6e 61 6d 65 3b |o;.X.cha|r *name;|
|000018b0| 0a 58 0a 58 09 6e 61 6d | 65 20 3d 20 73 74 72 65 |.X.X.nam|e = stre|
|000018c0| 72 72 6f 72 28 65 72 72 | 6e 6f 29 3b 0a 58 09 69 |rror(err|no);.X.i|
|000018d0| 66 28 21 6e 61 6d 65 29 | 0a 58 09 09 72 65 74 75 |f(!name)|.X..retu|
|000018e0| 72 6e 3b 0a 58 0a 58 09 | 69 66 28 73 2d 3e 65 72 |rn;.X.X.|if(s->er|
|000018f0| 72 6f 72 29 20 63 6b 66 | 72 65 65 28 73 2d 3e 65 |ror) ckf|ree(s->e|
|00001900| 72 72 6f 72 29 3b 0a 58 | 09 73 2d 3e 65 72 72 6f |rror);.X|.s->erro|
|00001910| 72 20 3d 20 30 3b 0a 58 | 09 73 2d 3e 65 72 72 6f |r = 0;.X|.s->erro|
|00001920| 72 20 3d 20 63 6b 61 6c | 6c 6f 63 28 73 74 72 6c |r = ckal|loc(strl|
|00001930| 65 6e 28 6e 61 6d 65 29 | 2b 31 29 3b 0a 58 09 73 |en(name)|+1);.X.s|
|00001940| 74 72 63 70 79 28 73 2d | 3e 65 72 72 6f 72 2c 20 |trcpy(s-|>error, |
|00001950| 6e 61 6d 65 29 3b 0a 58 | 7d 0a 58 0a 58 73 74 61 |name);.X|}.X.Xsta|
|00001960| 74 69 63 20 73 74 72 75 | 63 74 20 7b 0a 58 09 63 |tic stru|ct {.X.c|
|00001970| 68 61 72 20 2a 6e 61 6d | 65 3b 0a 58 09 69 6e 74 |har *nam|e;.X.int|
|00001980| 20 6c 65 6e 3b 0a 58 09 | 69 6e 74 20 74 79 70 65 | len;.X.|int type|
|00001990| 3b 0a 58 7d 20 74 79 70 | 65 73 5b 5d 20 3d 20 7b |;.X} typ|es[] = {|
|000019a0| 0a 58 09 7b 20 22 66 69 | 6c 65 22 2c 20 34 2c 20 |.X.{ "fi|le", 4, |
|000019b0| 53 54 5f 46 49 4c 45 20 | 7d 2c 0a 58 09 7b 20 22 |ST_FILE |},.X.{ "|
|000019c0| 70 69 70 65 22 2c 20 34 | 2c 20 53 54 5f 50 49 50 |pipe", 4|, ST_PIP|
|000019d0| 45 20 7d 0a 58 7d 3b 0a | 58 69 6e 74 20 6e 74 79 |E }.X};.|Xint nty|
|000019e0| 70 65 73 20 3d 20 73 69 | 7a 65 6f 66 20 74 79 70 |pes = si|zeof typ|
|000019f0| 65 73 20 2f 20 73 69 7a | 65 6f 66 20 2a 74 79 70 |es / siz|eof *typ|
|00001a00| 65 73 3b 0a 58 0a 58 53 | 54 41 54 49 43 20 69 6e |es;.X.XS|TATIC in|
|00001a10| 74 20 67 65 74 5f 69 64 | 28 73 74 72 65 61 6d 73 |t get_id|(streams|
|00001a20| 2c 20 6e 61 6d 65 29 0a | 58 73 74 72 75 63 74 20 |, name).|Xstruct |
|00001a30| 73 74 72 65 61 6d 73 20 | 2a 73 74 72 65 61 6d 73 |streams |*streams|
|00001a40| 3b 0a 58 63 68 61 72 20 | 2a 6e 61 6d 65 3b 0a 58 |;.Xchar |*name;.X|
|00001a50| 7b 0a 58 09 69 6e 74 20 | 69 64 3b 0a 58 09 69 6e |{.X.int |id;.X.in|
|00001a60| 74 20 74 3b 0a 58 0a 58 | 09 66 6f 72 28 74 20 3d |t t;.X.X|.for(t =|
|00001a70| 20 30 3b 20 74 20 3c 20 | 6e 74 79 70 65 73 3b 20 | 0; t < |ntypes; |
|00001a80| 74 2b 2b 29 0a 58 09 09 | 69 66 28 73 74 72 6e 63 |t++).X..|if(strnc|
|00001a90| 6d 70 28 6e 61 6d 65 2c | 20 74 79 70 65 73 5b 74 |mp(name,| types[t|
|00001aa0| 5d 2e 6e 61 6d 65 2c 20 | 74 79 70 65 73 5b 74 5d |].name, |types[t]|
|00001ab0| 2e 6c 65 6e 29 20 3d 3d | 20 30 29 0a 58 09 09 09 |.len) ==| 0).X...|
|00001ac0| 62 72 65 61 6b 3b 0a 58 | 09 69 66 28 74 20 3e 3d |break;.X|.if(t >=|
|00001ad0| 20 6e 74 79 70 65 73 29 | 0a 58 09 09 72 65 74 75 | ntypes)|.X..retu|
|00001ae0| 72 6e 20 2d 31 3b 0a 58 | 09 6e 61 6d 65 2b 3d 74 |rn -1;.X|.name+=t|
|00001af0| 79 70 65 73 5b 74 5d 2e | 6c 65 6e 3b 0a 58 09 69 |ypes[t].|len;.X.i|
|00001b00| 66 28 21 69 73 64 69 67 | 69 74 28 2a 6e 61 6d 65 |f(!isdig|it(*name|
|00001b10| 29 29 0a 58 09 09 72 65 | 74 75 72 6e 20 2d 31 3b |)).X..re|turn -1;|
|00001b20| 0a 58 09 69 64 20 3d 20 | 61 74 6f 69 28 6e 61 6d |.X.id = |atoi(nam|
|00001b30| 65 29 3b 0a 58 09 69 66 | 28 73 74 72 65 61 6d 73 |e);.X.if|(streams|
|00001b40| 2d 3e 73 5b 69 64 5d 20 | 26 26 20 73 74 72 65 61 |->s[id] |&& strea|
|00001b50| 6d 73 2d 3e 73 5b 69 64 | 5d 2d 3e 74 79 70 65 20 |ms->s[id|]->type |
|00001b60| 3d 3d 20 74 79 70 65 73 | 5b 74 5d 2e 74 79 70 65 |== types|[t].type|
|00001b70| 29 0a 58 09 09 72 65 74 | 75 72 6e 20 69 64 3b 0a |).X..ret|urn id;.|
|00001b80| 58 09 72 65 74 75 72 6e | 20 2d 31 3b 0a 58 7d 0a |X.return| -1;.X}.|
|00001b90| 58 0a 58 53 54 41 54 49 | 43 20 63 68 61 72 20 2a |X.XSTATI|C char *|
|00001ba0| 67 65 74 5f 6e 61 6d 65 | 28 73 74 72 65 61 6d 73 |get_name|(streams|
|00001bb0| 2c 20 69 64 29 0a 58 73 | 74 72 75 63 74 20 73 74 |, id).Xs|truct st|
|00001bc0| 72 65 61 6d 73 20 2a 73 | 74 72 65 61 6d 73 3b 0a |reams *s|treams;.|
|00001bd0| 58 69 6e 74 20 69 64 3b | 0a 58 7b 0a 58 09 73 74 |Xint id;|.X{.X.st|
|00001be0| 61 74 69 63 20 63 68 61 | 72 20 6e 61 6d 65 5b 33 |atic cha|r name[3|
|00001bf0| 32 5d 3b 0a 58 09 69 6e | 74 20 74 3b 0a 58 0a 58 |2];.X.in|t t;.X.X|
|00001c00| 09 69 66 28 69 64 20 3c | 20 30 29 0a 58 09 09 72 |.if(id <| 0).X..r|
|00001c10| 65 74 75 72 6e 20 30 3b | 0a 58 0a 58 09 66 6f 72 |eturn 0;|.X.X.for|
|00001c20| 28 74 20 3d 20 30 3b 20 | 74 20 3c 20 6e 74 79 70 |(t = 0; |t < ntyp|
|00001c30| 65 73 3b 20 74 2b 2b 29 | 0a 58 09 09 69 66 28 73 |es; t++)|.X..if(s|
|00001c40| 74 72 65 61 6d 73 2d 3e | 73 5b 69 64 5d 2d 3e 74 |treams->|s[id]->t|
|00001c50| 79 70 65 20 3d 3d 20 74 | 79 70 65 73 5b 74 5d 2e |ype == t|ypes[t].|
|00001c60| 74 79 70 65 29 0a 58 09 | 09 09 62 72 65 61 6b 3b |type).X.|..break;|
|00001c70| 0a 58 09 69 66 28 74 20 | 3e 3d 20 6e 74 79 70 65 |.X.if(t |>= ntype|
|00001c80| 73 29 0a 58 09 09 72 65 | 74 75 72 6e 20 30 3b 0a |s).X..re|turn 0;.|
|00001c90| 58 0a 58 09 73 70 72 69 | 6e 74 66 28 6e 61 6d 65 |X.X.spri|ntf(name|
|00001ca0| 2c 20 22 25 73 25 64 22 | 2c 20 74 79 70 65 73 5b |, "%s%d"|, types[|
|00001cb0| 74 5d 2e 6e 61 6d 65 2c | 20 69 64 29 3b 0a 58 0a |t].name,| id);.X.|
|00001cc0| 58 09 72 65 74 75 72 6e | 20 6e 61 6d 65 3b 0a 58 |X.return| name;.X|
|00001cd0| 7d 0a 58 0a 58 53 54 41 | 54 49 43 20 73 74 72 75 |}.X.XSTA|TIC stru|
|00001ce0| 63 74 20 73 74 72 65 61 | 6d 20 2a 67 65 74 5f 73 |ct strea|m *get_s|
|00001cf0| 74 72 65 61 6d 28 73 74 | 72 65 61 6d 73 2c 20 6e |tream(st|reams, n|
|00001d00| 61 6d 65 29 0a 58 73 74 | 72 75 63 74 20 73 74 72 |ame).Xst|ruct str|
|00001d10| 65 61 6d 73 20 2a 73 74 | 72 65 61 6d 73 3b 0a 58 |eams *st|reams;.X|
|00001d20| 63 68 61 72 20 2a 6e 61 | 6d 65 3b 0a 58 7b 0a 58 |char *na|me;.X{.X|
|00001d30| 09 69 6e 74 20 69 64 3b | 0a 58 09 73 74 72 75 63 |.int id;|.X.struc|
|00001d40| 74 20 73 74 72 65 61 6d | 20 2a 73 3b 0a 58 0a 58 |t stream| *s;.X.X|
|00001d50| 09 69 64 20 3d 20 67 65 | 74 5f 69 64 28 73 74 72 |.id = ge|t_id(str|
|00001d60| 65 61 6d 73 2c 20 6e 61 | 6d 65 29 3b 0a 58 09 69 |eams, na|me);.X.i|
|00001d70| 66 28 69 64 20 3e 3d 20 | 30 29 0a 58 09 09 72 65 |f(id >= |0).X..re|
|00001d80| 74 75 72 6e 20 73 74 72 | 65 61 6d 73 2d 3e 73 5b |turn str|eams->s[|
|00001d90| 69 64 5d 3b 0a 58 09 65 | 6c 73 65 0a 58 09 09 72 |id];.X.e|lse.X..r|
|00001da0| 65 74 75 72 6e 20 30 3b | 0a 58 7d 0a 58 0a 58 53 |eturn 0;|.X}.X.XS|
|00001db0| 54 41 54 49 43 20 73 74 | 72 75 63 74 20 73 74 72 |TATIC st|ruct str|
|00001dc0| 65 61 6d 20 2a 61 64 64 | 5f 73 74 72 65 61 6d 28 |eam *add|_stream(|
|00001dd0| 73 74 72 65 61 6d 73 2c | 20 66 69 6c 65 6e 61 6d |streams,| filenam|
|00001de0| 65 2c 20 66 70 29 0a 58 | 73 74 72 75 63 74 20 73 |e, fp).X|struct s|
|00001df0| 74 72 65 61 6d 73 20 2a | 73 74 72 65 61 6d 73 3b |treams *|streams;|
|00001e00| 0a 58 63 68 61 72 20 2a | 66 69 6c 65 6e 61 6d 65 |.Xchar *|filename|
|00001e10| 3b 0a 58 46 49 4c 45 20 | 2a 66 70 3b 0a 58 7b 0a |;.XFILE |*fp;.X{.|
|00001e20| 58 09 69 6e 74 20 69 64 | 3b 0a 58 09 73 74 72 75 |X.int id|;.X.stru|
|00001e30| 63 74 20 73 74 72 65 61 | 6d 20 2a 73 3b 0a 58 0a |ct strea|m *s;.X.|
|00001e40| 58 09 66 6f 72 28 69 64 | 20 3d 20 30 3b 20 69 64 |X.for(id| = 0; id|
|00001e50| 20 3c 20 73 74 72 65 61 | 6d 73 2d 3e 6e 3b 20 69 | < strea|ms->n; i|
|00001e60| 64 2b 2b 29 0a 58 09 09 | 69 66 28 21 73 74 72 65 |d++).X..|if(!stre|
|00001e70| 61 6d 73 2d 3e 73 5b 69 | 64 5d 29 0a 58 09 09 09 |ams->s[i|d]).X...|
|00001e80| 62 72 65 61 6b 3b 0a 58 | 09 69 66 28 69 64 20 3e |break;.X|.if(id >|
|00001e90| 3d 20 4d 41 58 53 54 52 | 45 41 4d 53 29 20 7b 0a |= MAXSTR|EAMS) {.|
|00001ea0| 58 09 09 65 78 74 65 72 | 6e 20 69 6e 74 20 65 72 |X..exter|n int er|
|00001eb0| 72 6e 6f 3b 0a 58 09 09 | 0a 58 09 09 65 72 72 6e |rno;.X..|.X..errn|
|00001ec0| 6f 20 3d 20 45 4e 4f 4d | 45 4d 3b 0a 58 09 09 72 |o = ENOM|EM;.X..r|
|00001ed0| 65 74 75 72 6e 20 30 3b | 0a 58 09 7d 0a 58 09 69 |eturn 0;|.X.}.X.i|
|00001ee0| 66 28 69 64 20 3e 3d 20 | 73 74 72 65 61 6d 73 2d |f(id >= |streams-|
|00001ef0| 3e 6e 29 0a 58 09 09 73 | 74 72 65 61 6d 73 2d 3e |>n).X..s|treams->|
|00001f00| 6e 2b 2b 3b 0a 58 0a 58 | 09 73 20 3d 20 28 73 74 |n++;.X.X|.s = (st|
|00001f10| 72 75 63 74 20 73 74 72 | 65 61 6d 20 2a 29 63 6b |ruct str|eam *)ck|
|00001f20| 61 6c 6c 6f 63 28 73 69 | 7a 65 6f 66 28 73 74 72 |alloc(si|zeof(str|
|00001f30| 75 63 74 20 73 74 72 65 | 61 6d 29 0a 58 09 09 2b |uct stre|am).X..+|
|00001f40| 20 28 66 69 6c 65 6e 61 | 6d 65 20 3f 20 28 73 74 | (filena|me ? (st|
|00001f50| 72 6c 65 6e 28 66 69 6c | 65 6e 61 6d 65 29 2b 31 |rlen(fil|ename)+1|
|00001f60| 29 20 3a 20 30 29 20 29 | 3b 0a 58 0a 58 09 69 66 |) : 0) )|;.X.X.if|
|00001f70| 28 66 69 6c 65 6e 61 6d | 65 29 20 7b 0a 58 09 09 |(filenam|e) {.X..|
|00001f80| 73 2d 3e 66 69 6c 65 6e | 61 6d 65 20 3d 20 28 63 |s->filen|ame = (c|
|00001f90| 68 61 72 20 2a 29 28 73 | 2b 31 29 3b 0a 58 09 09 |har *)(s|+1);.X..|
|00001fa0| 73 74 72 63 70 79 28 73 | 2d 3e 66 69 6c 65 6e 61 |strcpy(s|->filena|
|00001fb0| 6d 65 2c 20 66 69 6c 65 | 6e 61 6d 65 29 3b 0a 58 |me, file|name);.X|
|00001fc0| 09 7d 20 65 6c 73 65 0a | 58 09 09 73 2d 3e 66 69 |.} else.|X..s->fi|
|00001fd0| 6c 65 6e 61 6d 65 20 3d | 20 4e 55 4c 4c 3b 0a 58 |lename =| NULL;.X|
|00001fe0| 09 73 2d 3e 69 64 20 3d | 20 69 64 3b 0a 58 09 73 |.s->id =| id;.X.s|
|00001ff0| 2d 3e 66 70 20 3d 20 66 | 70 3b 0a 58 09 73 2d 3e |->fp = f|p;.X.s->|
|00002000| 65 72 72 6f 72 20 3d 20 | 4e 55 4c 4c 3b 0a 58 09 |error = |NULL;.X.|
|00002010| 73 74 72 65 61 6d 73 2d | 3e 73 5b 69 64 5d 20 3d |streams-|>s[id] =|
|00002020| 20 73 3b 0a 58 0a 58 09 | 72 65 74 75 72 6e 20 73 | s;.X.X.|return s|
|00002030| 3b 0a 58 7d 0a 58 0a 58 | 53 54 41 54 49 43 20 64 |;.X}.X.X|STATIC d|
|00002040| 65 6c 5f 73 74 72 65 61 | 6d 28 73 74 72 65 61 6d |el_strea|m(stream|
|00002050| 73 2c 20 69 64 29 0a 58 | 73 74 72 75 63 74 20 73 |s, id).X|struct s|
|00002060| 74 72 65 61 6d 73 20 2a | 73 74 72 65 61 6d 73 3b |treams *|streams;|
|00002070| 0a 58 69 6e 74 20 69 64 | 3b 0a 58 7b 0a 58 09 73 |.Xint id|;.X{.X.s|
|00002080| 74 72 75 63 74 20 73 74 | 72 65 61 6d 20 2a 73 3b |truct st|ream *s;|
|00002090| 0a 58 0a 58 09 69 66 28 | 73 20 3d 20 73 74 72 65 |.X.X.if(|s = stre|
|000020a0| 61 6d 73 2d 3e 73 5b 69 | 64 5d 29 20 7b 0a 58 09 |ams->s[i|d]) {.X.|
|000020b0| 09 73 74 72 65 61 6d 73 | 2d 3e 73 5b 69 64 5d 20 |.streams|->s[id] |
|000020c0| 3d 20 30 3b 0a 58 09 09 | 69 66 28 73 2d 3e 65 72 |= 0;.X..|if(s->er|
|000020d0| 72 6f 72 29 20 63 6b 66 | 72 65 65 28 73 2d 3e 65 |ror) ckf|ree(s->e|
|000020e0| 72 72 6f 72 29 3b 0a 58 | 09 09 63 6b 66 72 65 65 |rror);.X|..ckfree|
|000020f0| 28 73 29 3b 0a 58 09 09 | 72 65 74 75 72 6e 20 31 |(s);.X..|return 1|
|00002100| 3b 0a 58 09 7d 0a 58 09 | 72 65 74 75 72 6e 20 30 |;.X.}.X.|return 0|
|00002110| 3b 0a 58 7d 0a 58 0a 58 | 73 74 72 65 61 6d 5f 74 |;.X}.X.X|stream_t|
|00002120| 65 72 6d 28 73 74 61 62 | 29 0a 58 73 74 72 75 63 |erm(stab|).Xstruc|
|00002130| 74 20 63 6d 64 5f 74 61 | 62 6c 65 20 2a 73 74 61 |t cmd_ta|ble *sta|
|00002140| 62 3b 0a 58 7b 0a 58 09 | 69 6e 74 20 69 64 3b 0a |b;.X{.X.|int id;.|
|00002150| 58 09 73 74 72 75 63 74 | 20 73 74 72 65 61 6d 73 |X.struct| streams|
|00002160| 20 2a 73 74 72 65 61 6d | 73 20 3d 20 28 73 74 72 | *stream|s = (str|
|00002170| 75 63 74 20 73 74 72 65 | 61 6d 73 20 2a 29 73 74 |uct stre|ams *)st|
|00002180| 61 62 2d 3e 64 61 74 61 | 3b 0a 58 0a 58 09 66 6f |ab->data|;.X.X.fo|
|00002190| 72 28 69 64 20 3d 20 30 | 3b 20 69 64 20 3c 20 73 |r(id = 0|; id < s|
|000021a0| 74 72 65 61 6d 73 2d 3e | 6e 3b 20 69 64 2b 2b 29 |treams->|n; id++)|
|000021b0| 0a 58 09 09 69 66 28 73 | 74 72 65 61 6d 73 2d 3e |.X..if(s|treams->|
|000021c0| 73 5b 69 64 5d 29 0a 58 | 09 09 09 64 65 6c 5f 73 |s[id]).X|...del_s|
|000021d0| 74 72 65 61 6d 28 73 74 | 72 65 61 6d 73 2c 20 69 |tream(st|reams, i|
|000021e0| 64 29 3b 0a 58 09 63 6b | 66 72 65 65 28 73 74 72 |d);.X.ck|free(str|
|000021f0| 65 61 6d 73 29 3b 0a 58 | 09 63 6b 66 72 65 65 28 |eams);.X|.ckfree(|
|00002200| 73 74 61 62 29 3b 0a 58 | 7d 0a 58 0a 58 73 74 72 |stab);.X|}.X.Xstr|
|00002210| 65 61 6d 5f 69 6e 69 74 | 28 69 6e 74 65 72 70 29 |eam_init|(interp)|
|00002220| 0a 58 54 63 6c 5f 49 6e | 74 65 72 70 20 2a 69 6e |.XTcl_In|terp *in|
|00002230| 74 65 72 70 3b 0a 58 7b | 0a 58 09 73 74 72 75 63 |terp;.X{|.X.struc|
|00002240| 74 20 63 6d 64 5f 74 61 | 62 6c 65 20 2a 73 74 72 |t cmd_ta|ble *str|
|00002250| 65 61 6d 54 61 62 6c 65 | 3b 0a 58 09 73 74 72 75 |eamTable|;.X.stru|
|00002260| 63 74 20 73 74 72 65 61 | 6d 73 20 2a 73 74 72 65 |ct strea|ms *stre|
|00002270| 61 6d 48 65 61 64 3b 0a | 58 0a 58 09 73 74 72 65 |amHead;.|X.X.stre|
|00002280| 61 6d 54 61 62 6c 65 20 | 3d 20 28 73 74 72 75 63 |amTable |= (struc|
|00002290| 74 20 63 6d 64 5f 74 61 | 62 6c 65 20 2a 29 20 63 |t cmd_ta|ble *) c|
|000022a0| 6b 61 6c 6c 6f 63 28 73 | 69 7a 65 6f 66 20 2a 73 |kalloc(s|izeof *s|
|000022b0| 74 72 65 61 6d 54 61 62 | 6c 65 29 3b 0a 58 09 73 |treamTab|le);.X.s|
|000022c0| 74 72 65 61 6d 48 65 61 | 64 20 3d 20 28 73 74 72 |treamHea|d = (str|
|000022d0| 75 63 74 20 73 74 72 65 | 61 6d 73 20 2a 29 20 63 |uct stre|ams *) c|
|000022e0| 6b 61 6c 6c 6f 63 28 73 | 69 7a 65 6f 66 20 28 73 |kalloc(s|izeof (s|
|000022f0| 74 72 75 63 74 20 73 74 | 72 65 61 6d 73 29 29 3b |truct st|reams));|
|00002300| 0a 58 09 73 74 72 65 61 | 6d 48 65 61 64 2d 3e 6e |.X.strea|mHead->n|
|00002310| 20 3d 20 30 3b 0a 58 0a | 58 09 73 74 72 65 61 6d | = 0;.X.|X.stream|
|00002320| 54 61 62 6c 65 2d 3e 6e | 61 6d 65 20 3d 20 22 73 |Table->n|ame = "s|
|00002330| 74 72 65 61 6d 22 3b 0a | 58 09 73 74 72 65 61 6d |tream";.|X.stream|
|00002340| 54 61 62 6c 65 2d 3e 64 | 61 74 61 20 3d 20 28 43 |Table->d|ata = (C|
|00002350| 6c 69 65 6e 74 44 61 74 | 61 29 20 73 74 72 65 61 |lientDat|a) strea|
|00002360| 6d 48 65 61 64 3b 0a 58 | 09 73 74 72 65 61 6d 54 |mHead;.X|.streamT|
|00002370| 61 62 6c 65 2d 3e 63 6d | 64 63 20 3d 20 73 69 7a |able->cm|dc = siz|
|00002380| 65 6f 66 28 63 6f 6d 6d | 61 6e 64 73 29 20 2f 20 |eof(comm|ands) / |
|00002390| 73 69 7a 65 6f 66 28 2a | 63 6f 6d 6d 61 6e 64 73 |sizeof(*|commands|
|000023a0| 29 3b 0a 58 09 73 74 72 | 65 61 6d 54 61 62 6c 65 |);.X.str|eamTable|
|000023b0| 2d 3e 63 6d 64 76 20 3d | 20 63 6f 6d 6d 61 6e 64 |->cmdv =| command|
|000023c0| 73 3b 0a 58 0a 58 09 54 | 63 6c 5f 43 72 65 61 74 |s;.X.X.T|cl_Creat|
|000023d0| 65 43 6f 6d 6d 61 6e 64 | 28 69 6e 74 65 72 70 2c |eCommand|(interp,|
|000023e0| 20 22 73 74 72 65 61 6d | 22 2c 0a 58 09 09 63 6d | "stream|",.X..cm|
|000023f0| 64 48 61 6e 64 6c 65 72 | 2c 20 28 43 6c 69 65 6e |dHandler|, (Clien|
|00002400| 74 44 61 74 61 29 20 73 | 74 72 65 61 6d 54 61 62 |tData) s|treamTab|
|00002410| 6c 65 2c 20 73 74 72 65 | 61 6d 5f 74 65 72 6d 29 |le, stre|am_term)|
|00002420| 3b 0a 58 09 61 64 64 5f | 73 74 72 65 61 6d 28 73 |;.X.add_|stream(s|
|00002430| 74 72 65 61 6d 54 61 62 | 6c 65 2d 3e 64 61 74 61 |treamTab|le->data|
|00002440| 2c 20 28 63 68 61 72 20 | 2a 29 4e 55 4c 4c 2c 20 |, (char |*)NULL, |
|00002450| 73 74 64 69 6e 29 3b 0a | 58 09 61 64 64 5f 73 74 |stdin);.|X.add_st|
|00002460| 72 65 61 6d 28 73 74 72 | 65 61 6d 54 61 62 6c 65 |ream(str|eamTable|
|00002470| 2d 3e 64 61 74 61 2c 20 | 28 63 68 61 72 20 2a 29 |->data, |(char *)|
|00002480| 4e 55 4c 4c 2c 20 73 74 | 64 6f 75 74 29 3b 0a 58 |NULL, st|dout);.X|
|00002490| 09 61 64 64 5f 73 74 72 | 65 61 6d 28 73 74 72 65 |.add_str|eam(stre|
|000024a0| 61 6d 54 61 62 6c 65 2d | 3e 64 61 74 61 2c 20 28 |amTable-|>data, (|
|000024b0| 63 68 61 72 20 2a 29 4e | 55 4c 4c 2c 20 73 74 64 |char *)N|ULL, std|
|000024c0| 65 72 72 29 3b 0a 58 7d | 0a 58 0a 58 53 54 41 54 |err);.X}|.X.XSTAT|
|000024d0| 49 43 20 69 6e 74 20 73 | 74 72 65 61 6d 4f 70 65 |IC int s|treamOpe|
|000024e0| 6e 28 69 6e 74 65 72 70 | 2c 20 73 74 72 65 61 6d |n(interp|, stream|
|000024f0| 73 2c 20 61 72 67 63 2c | 20 61 72 67 76 29 0a 58 |s, argc,| argv).X|
|00002500| 54 63 6c 5f 49 6e 74 65 | 72 70 20 2a 69 6e 74 65 |Tcl_Inte|rp *inte|
|00002510| 72 70 3b 0a 58 73 74 72 | 75 63 74 20 73 74 72 65 |rp;.Xstr|uct stre|
|00002520| 61 6d 73 20 2a 73 74 72 | 65 61 6d 73 3b 0a 58 69 |ams *str|eams;.Xi|
|00002530| 6e 74 20 61 72 67 63 3b | 0a 58 63 68 61 72 20 2a |nt argc;|.Xchar *|
|00002540| 2a 61 72 67 76 3b 0a 58 | 7b 0a 58 09 46 49 4c 45 |*argv;.X|{.X.FILE|
|00002550| 20 2a 66 70 3b 0a 58 09 | 73 74 72 75 63 74 20 73 | *fp;.X.|struct s|
|00002560| 74 72 65 61 6d 20 2a 73 | 3b 0a 58 09 69 6e 74 20 |tream *s|;.X.int |
|00002570| 74 79 70 65 3b 0a 58 09 | 63 68 61 72 20 2a 70 74 |type;.X.|char *pt|
|00002580| 72 2c 20 2a 73 74 72 63 | 68 72 28 29 3b 0a 58 0a |r, *strc|hr();.X.|
|00002590| 58 09 69 66 28 70 74 72 | 20 3d 20 73 74 72 63 68 |X.if(ptr| = strch|
|000025a0| 72 28 61 72 67 76 5b 31 | 5d 2c 20 27 70 27 29 29 |r(argv[1|], 'p'))|
|000025b0| 20 7b 0a 58 09 09 64 6f | 0a 58 09 09 09 70 74 72 | {.X..do|.X...ptr|
|000025c0| 5b 30 5d 20 3d 20 70 74 | 72 5b 31 5d 3b 0a 58 09 |[0] = pt|r[1];.X.|
|000025d0| 09 77 68 69 6c 65 28 2a | 70 74 72 2b 2b 29 3b 0a |.while(*|ptr++);.|
|000025e0| 58 09 09 66 70 20 3d 20 | 70 6f 70 65 6e 28 61 72 |X..fp = |popen(ar|
|000025f0| 67 76 5b 30 5d 2c 20 61 | 72 67 76 5b 31 5d 29 3b |gv[0], a|rgv[1]);|
|00002600| 0a 58 09 09 74 79 70 65 | 20 3d 20 53 54 5f 50 49 |.X..type| = ST_PI|
|00002610| 50 45 3b 0a 58 09 7d 20 | 65 6c 73 65 20 7b 0a 58 |PE;.X.} |else {.X|
|00002620| 09 09 66 70 20 3d 20 66 | 6f 70 65 6e 28 61 72 67 |..fp = f|open(arg|
|00002630| 76 5b 30 5d 2c 20 61 72 | 67 76 5b 31 5d 29 3b 0a |v[0], ar|gv[1]);.|
|00002640| 58 09 09 74 79 70 65 20 | 3d 20 53 54 5f 46 49 4c |X..type |= ST_FIL|
|00002650| 45 3b 0a 58 09 7d 0a 58 | 09 09 0a 58 09 69 66 28 |E;.X.}.X|...X.if(|
|00002660| 21 66 70 29 20 7b 0a 58 | 09 09 63 68 61 72 20 2a |!fp) {.X|..char *|
|00002670| 73 74 72 65 72 72 6f 72 | 28 29 3b 0a 58 09 09 65 |strerror|();.X..e|
|00002680| 78 74 65 72 6e 20 69 6e | 74 20 65 72 72 6e 6f 3b |xtern in|t errno;|
|00002690| 0a 58 09 09 63 68 61 72 | 20 2a 73 20 3d 20 73 74 |.X..char| *s = st|
|000026a0| 72 65 72 72 6f 72 28 65 | 72 72 6e 6f 29 3b 0a 58 |rerror(e|rrno);.X|
|000026b0| 09 09 69 66 28 73 29 0a | 58 09 09 09 73 70 72 69 |..if(s).|X...spri|
|000026c0| 6e 74 66 28 69 6e 74 65 | 72 70 2d 3e 72 65 73 75 |ntf(inte|rp->resu|
|000026d0| 6c 74 2c 20 22 25 73 3a | 20 25 73 22 2c 20 61 72 |lt, "%s:| %s", ar|
|000026e0| 67 76 5b 30 5d 2c 20 73 | 29 3b 0a 58 09 09 65 6c |gv[0], s|);.X..el|
|000026f0| 73 65 0a 58 09 09 09 54 | 63 6c 5f 52 65 74 75 72 |se.X...T|cl_Retur|
|00002700| 6e 28 69 6e 74 65 72 70 | 2c 20 28 63 68 61 72 20 |n(interp|, (char |
|00002710| 2a 29 4e 55 4c 4c 2c 20 | 54 43 4c 5f 53 54 41 54 |*)NULL, |TCL_STAT|
|00002720| 49 43 29 3b 0a 58 09 09 | 72 65 74 75 72 6e 20 54 |IC);.X..|return T|
|00002730| 43 4c 5f 45 52 52 4f 52 | 3b 0a 58 09 7d 0a 58 0a |CL_ERROR|;.X.}.X.|
|00002740| 58 09 73 20 3d 20 61 64 | 64 5f 73 74 72 65 61 6d |X.s = ad|d_stream|
|00002750| 28 73 74 72 65 61 6d 73 | 2c 20 61 72 67 76 5b 30 |(streams|, argv[0|
|00002760| 5d 2c 20 66 70 29 3b 0a | 58 09 73 2d 3e 74 79 70 |], fp);.|X.s->typ|
|00002770| 65 20 3d 20 74 79 70 65 | 3b 0a 58 09 69 66 28 73 |e = type|;.X.if(s|
|00002780| 29 20 7b 0a 58 09 09 69 | 66 28 73 2d 3e 69 64 20 |) {.X..i|f(s->id |
|00002790| 3c 20 30 29 0a 58 09 09 | 09 54 63 6c 5f 52 65 74 |< 0).X..|.Tcl_Ret|
|000027a0| 75 72 6e 28 69 6e 74 65 | 72 70 2c 20 28 63 68 61 |urn(inte|rp, (cha|
|000027b0| 72 20 2a 29 4e 55 4c 4c | 2c 20 54 43 4c 5f 53 54 |r *)NULL|, TCL_ST|
|000027c0| 41 54 49 43 29 3b 0a 58 | 09 09 65 6c 73 65 0a 58 |ATIC);.X|..else.X|
|000027d0| 09 09 09 54 63 6c 5f 52 | 65 74 75 72 6e 28 69 6e |...Tcl_R|eturn(in|
|000027e0| 74 65 72 70 2c 20 67 65 | 74 5f 6e 61 6d 65 28 73 |terp, ge|t_name(s|
|000027f0| 74 72 65 61 6d 73 2c 20 | 73 2d 3e 69 64 29 2c 20 |treams, |s->id), |
|00002800| 54 43 4c 5f 56 4f 4c 41 | 54 49 4c 45 29 3b 0a 58 |TCL_VOLA|TILE);.X|
|00002810| 09 09 72 65 74 75 72 6e | 20 54 43 4c 5f 4f 4b 3b |..return| TCL_OK;|
|00002820| 0a 58 09 7d 20 65 6c 73 | 65 20 7b 0a 58 09 09 73 |.X.} els|e {.X..s|
|00002830| 70 72 69 6e 74 66 28 69 | 6e 74 65 72 70 2d 3e 72 |printf(i|nterp->r|
|00002840| 65 73 75 6c 74 2c 20 22 | 25 73 3a 20 54 6f 6f 20 |esult, "|%s: Too |
|00002850| 6d 61 6e 79 20 6f 70 65 | 6e 20 73 74 72 65 61 6d |many ope|n stream|
|00002860| 73 22 2c 20 61 72 67 76 | 5b 30 5d 29 3b 0a 58 09 |s", argv|[0]);.X.|
|00002870| 09 72 65 74 75 72 6e 20 | 54 43 4c 5f 45 52 52 4f |.return |TCL_ERRO|
|00002880| 52 3b 0a 58 09 7d 0a 58 | 7d 0a 58 0a 58 53 54 41 |R;.X.}.X|}.X.XSTA|
|00002890| 54 49 43 20 6e 6f 74 5f | 6f 70 65 6e 28 69 6e 74 |TIC not_|open(int|
|000028a0| 65 72 70 2c 20 6e 61 6d | 65 29 0a 58 54 63 6c 5f |erp, nam|e).XTcl_|
|000028b0| 49 6e 74 65 72 70 20 2a | 69 6e 74 65 72 70 3b 0a |Interp *|interp;.|
|000028c0| 58 63 68 61 72 20 2a 6e | 61 6d 65 3b 0a 58 7b 0a |Xchar *n|ame;.X{.|
|000028d0| 58 09 73 70 72 69 6e 74 | 66 28 69 6e 74 65 72 70 |X.sprint|f(interp|
|000028e0| 2d 3e 72 65 73 75 6c 74 | 2c 0a 58 09 09 22 25 2e |->result|,.X.."%.|
|000028f0| 35 30 73 20 69 73 20 6e | 6f 74 20 61 6e 20 6f 70 |50s is n|ot an op|
|00002900| 65 6e 20 73 74 72 65 61 | 6d 22 2c 20 6e 61 6d 65 |en strea|m", name|
|00002910| 29 3b 0a 58 7d 0a 58 0a | 58 53 54 41 54 49 43 20 |);.X}.X.|XSTATIC |
|00002920| 69 6e 74 20 73 74 72 65 | 61 6d 43 6c 6f 73 65 28 |int stre|amClose(|
|00002930| 69 6e 74 65 72 70 2c 20 | 73 74 72 65 61 6d 73 2c |interp, |streams,|
|00002940| 20 61 72 67 63 2c 20 61 | 72 67 76 29 0a 58 54 63 | argc, a|rgv).XTc|
|00002950| 6c 5f 49 6e 74 65 72 70 | 20 2a 69 6e 74 65 72 70 |l_Interp| *interp|
|00002960| 3b 0a 58 73 74 72 75 63 | 74 20 73 74 72 65 61 6d |;.Xstruc|t stream|
|00002970| 73 20 2a 73 74 72 65 61 | 6d 73 3b 0a 58 69 6e 74 |s *strea|ms;.Xint|
|00002980| 20 61 72 67 63 3b 0a 58 | 63 68 61 72 20 2a 2a 61 | argc;.X|char **a|
|00002990| 72 67 76 3b 0a 58 7b 0a | 58 09 63 68 61 72 20 2a |rgv;.X{.|X.char *|
|000029a0| 68 61 6e 64 6c 65 20 3d | 20 28 2d 2d 61 72 67 63 |handle =| (--argc|
|000029b0| 2c 20 2a 61 72 67 76 2b | 2b 29 3b 0a 58 09 73 74 |, *argv+|+);.X.st|
|000029c0| 72 75 63 74 20 73 74 72 | 65 61 6d 20 2a 73 20 3d |ruct str|eam *s =|
|000029d0| 20 67 65 74 5f 73 74 72 | 65 61 6d 28 73 74 72 65 | get_str|eam(stre|
|000029e0| 61 6d 73 2c 20 68 61 6e | 64 6c 65 29 3b 0a 58 0a |ams, han|dle);.X.|
|000029f0| 58 09 69 66 28 21 73 29 | 20 7b 0a 58 09 09 6e 6f |X.if(!s)| {.X..no|
|00002a00| 74 5f 6f 70 65 6e 28 69 | 6e 74 65 72 70 2c 20 68 |t_open(i|nterp, h|
|00002a10| 61 6e 64 6c 65 29 3b 0a | 58 09 09 72 65 74 75 72 |andle);.|X..retur|
|00002a20| 6e 20 54 43 4c 5f 45 52 | 52 4f 52 3b 0a 58 09 7d |n TCL_ER|ROR;.X.}|
|00002a30| 0a 58 0a 58 09 69 66 28 | 73 2d 3e 74 79 70 65 3d |.X.X.if(|s->type=|
|00002a40| 3d 53 54 5f 50 49 50 45 | 29 0a 58 09 09 70 63 6c |=ST_PIPE|).X..pcl|
|00002a50| 6f 73 65 28 73 2d 3e 66 | 70 29 3b 0a 58 09 65 6c |ose(s->f|p);.X.el|
|00002a60| 73 65 20 69 66 28 73 2d | 3e 74 79 70 65 3d 3d 53 |se if(s-|>type==S|
|00002a70| 54 5f 46 49 4c 45 29 0a | 58 09 09 66 63 6c 6f 73 |T_FILE).|X..fclos|
|00002a80| 65 28 73 2d 3e 66 70 29 | 3b 0a 58 0a 58 09 64 65 |e(s->fp)|;.X.X.de|
|00002a90| 6c 5f 73 74 72 65 61 6d | 28 73 74 72 65 61 6d 73 |l_stream|(streams|
|00002aa0| 2c 20 73 2d 3e 69 64 29 | 3b 0a 58 09 72 65 74 75 |, s->id)|;.X.retu|
|00002ab0| 72 6e 20 54 43 4c 5f 4f | 4b 3b 0a 58 7d 0a 58 0a |rn TCL_O|K;.X}.X.|
|00002ac0| 58 53 54 41 54 49 43 20 | 69 6e 74 20 73 74 72 65 |XSTATIC |int stre|
|00002ad0| 61 6d 47 65 74 73 28 69 | 6e 74 65 72 70 2c 20 73 |amGets(i|nterp, s|
|00002ae0| 74 72 65 61 6d 73 2c 20 | 61 72 67 63 2c 20 61 72 |treams, |argc, ar|
|00002af0| 67 76 29 0a 58 54 63 6c | 5f 49 6e 74 65 72 70 20 |gv).XTcl|_Interp |
|00002b00| 2a 69 6e 74 65 72 70 3b | 0a 58 73 74 72 75 63 74 |*interp;|.Xstruct|
|00002b10| 20 73 74 72 65 61 6d 73 | 20 2a 73 74 72 65 61 6d | streams| *stream|
|00002b20| 73 3b 0a 58 69 6e 74 20 | 61 72 67 63 3b 0a 58 63 |s;.Xint |argc;.Xc|
|00002b30| 68 61 72 20 2a 2a 61 72 | 67 76 3b 0a 58 7b 0a 58 |har **ar|gv;.X{.X|
|00002b40| 09 63 68 61 72 20 2a 68 | 61 6e 64 6c 65 20 3d 20 |.char *h|andle = |
|00002b50| 28 2d 2d 61 72 67 63 2c | 20 2a 61 72 67 76 2b 2b |(--argc,| *argv++|
|00002b60| 29 3b 0a 58 09 73 74 72 | 75 63 74 20 73 74 72 65 |);.X.str|uct stre|
|00002b70| 61 6d 20 2a 73 20 3d 20 | 67 65 74 5f 73 74 72 65 |am *s = |get_stre|
|00002b80| 61 6d 28 73 74 72 65 61 | 6d 73 2c 20 68 61 6e 64 |am(strea|ms, hand|
|00002b90| 6c 65 29 3b 0a 58 09 63 | 68 61 72 20 2a 62 75 66 |le);.X.c|har *buf|
|00002ba0| 66 65 72 20 3d 20 63 6b | 61 6c 6c 6f 63 28 42 55 |fer = ck|alloc(BU|
|00002bb0| 46 53 49 5a 29 3b 0a 58 | 09 63 68 61 72 20 2a 70 |FSIZ);.X|.char *p|
|00002bc0| 74 72 2c 20 2a 73 74 72 | 63 68 72 28 29 3b 0a 58 |tr, *str|chr();.X|
|00002bd0| 09 69 6e 74 20 6c 65 6e | 3b 0a 58 0a 58 09 69 66 |.int len|;.X.X.if|
|00002be0| 28 21 73 29 20 7b 0a 58 | 09 09 6e 6f 74 5f 6f 70 |(!s) {.X|..not_op|
|00002bf0| 65 6e 28 69 6e 74 65 72 | 70 2c 20 68 61 6e 64 6c |en(inter|p, handl|
|00002c00| 65 29 3b 0a 58 09 09 63 | 6b 66 72 65 65 28 62 75 |e);.X..c|kfree(bu|
|00002c10| 66 66 65 72 29 3b 0a 58 | 09 09 72 65 74 75 72 6e |ffer);.X|..return|
|00002c20| 20 54 43 4c 5f 45 52 52 | 4f 52 3b 0a 58 09 7d 0a | TCL_ERR|OR;.X.}.|
|00002c30| 58 0a 58 09 69 66 28 66 | 67 65 74 73 28 62 75 66 |X.X.if(f|gets(buf|
|00002c40| 66 65 72 2c 20 42 55 46 | 53 49 5a 2c 20 73 2d 3e |fer, BUF|SIZ, s->|
|00002c50| 66 70 29 29 20 7b 0a 58 | 09 09 6c 65 6e 20 3d 20 |fp)) {.X|..len = |
|00002c60| 73 74 72 6c 65 6e 28 62 | 75 66 66 65 72 29 3b 0a |strlen(b|uffer);.|
|00002c70| 58 09 09 70 74 72 20 3d | 20 73 74 72 63 68 72 28 |X..ptr =| strchr(|
|00002c80| 62 75 66 66 65 72 2c 20 | 27 5c 6e 27 29 3b 0a 58 |buffer, |'\n');.X|
|00002c90| 09 09 69 66 28 70 74 72 | 29 20 0a 58 09 09 09 2a |..if(ptr|) .X...*|
|00002ca0| 70 74 72 20 3d 20 30 3b | 0a 58 09 09 69 66 28 61 |ptr = 0;|.X..if(a|
|00002cb0| 72 67 63 3d 3d 31 29 20 | 7b 0a 58 09 09 09 73 70 |rgc==1) |{.X...sp|
|00002cc0| 72 69 6e 74 66 28 69 6e | 74 65 72 70 2d 3e 72 65 |rintf(in|terp->re|
|00002cd0| 73 75 6c 74 2c 20 22 25 | 64 22 2c 20 6c 65 6e 29 |sult, "%|d", len)|
|00002ce0| 3b 0a 58 09 09 09 54 63 | 6c 5f 53 65 74 56 61 72 |;.X...Tc|l_SetVar|
|00002cf0| 28 69 6e 74 65 72 70 2c | 20 61 72 67 76 5b 30 5d |(interp,| argv[0]|
|00002d00| 2c 20 62 75 66 66 65 72 | 2c 20 30 29 3b 0a 58 09 |, buffer|, 0);.X.|
|00002d10| 09 7d 20 65 6c 73 65 0a | 58 09 09 09 54 63 6c 5f |.} else.|X...Tcl_|
|00002d20| 52 65 74 75 72 6e 28 69 | 6e 74 65 72 70 2c 20 62 |Return(i|nterp, b|
|00002d30| 75 66 66 65 72 2c 20 54 | 43 4c 5f 56 4f 4c 41 54 |uffer, T|CL_VOLAT|
|00002d40| 49 4c 45 29 3b 0a 58 09 | 7d 0a 58 09 65 6c 73 65 |ILE);.X.|}.X.else|
|00002d50| 0a 58 09 7b 0a 58 09 09 | 69 66 28 61 72 67 63 3d |.X.{.X..|if(argc=|
|00002d60| 3d 31 29 0a 58 09 09 09 | 54 63 6c 5f 52 65 74 75 |=1).X...|Tcl_Retu|
|00002d70| 72 6e 28 69 6e 74 65 72 | 70 2c 20 22 30 22 2c 20 |rn(inter|p, "0", |
|00002d80| 54 43 4c 5f 53 54 41 54 | 49 43 29 3b 0a 58 09 09 |TCL_STAT|IC);.X..|
|00002d90| 65 6c 73 65 0a 58 09 09 | 09 54 63 6c 5f 52 65 74 |else.X..|.Tcl_Ret|
|00002da0| 75 72 6e 28 69 6e 74 65 | 72 70 2c 20 28 63 68 61 |urn(inte|rp, (cha|
|00002db0| 72 20 2a 29 4e 55 4c 4c | 2c 20 54 43 4c 5f 53 54 |r *)NULL|, TCL_ST|
|00002dc0| 41 54 49 43 29 3b 0a 58 | 09 7d 0a 58 09 63 6b 66 |ATIC);.X|.}.X.ckf|
|00002dd0| 72 65 65 28 62 75 66 66 | 65 72 29 3b 0a 58 09 72 |ree(buff|er);.X.r|
|00002de0| 65 74 75 72 6e 20 54 43 | 4c 5f 4f 4b 3b 0a 58 7d |eturn TC|L_OK;.X}|
|00002df0| 0a 58 0a 58 53 54 41 54 | 49 43 20 69 6e 74 20 73 |.X.XSTAT|IC int s|
|00002e00| 74 72 65 61 6d 50 75 74 | 73 28 69 6e 74 65 72 70 |treamPut|s(interp|
|00002e10| 2c 20 73 74 72 65 61 6d | 73 2c 20 61 72 67 63 2c |, stream|s, argc,|
|00002e20| 20 61 72 67 76 29 0a 58 | 54 63 6c 5f 49 6e 74 65 | argv).X|Tcl_Inte|
|00002e30| 72 70 20 2a 69 6e 74 65 | 72 70 3b 0a 58 73 74 72 |rp *inte|rp;.Xstr|
|00002e40| 75 63 74 20 73 74 72 65 | 61 6d 73 20 2a 73 74 72 |uct stre|ams *str|
|00002e50| 65 61 6d 73 3b 0a 58 69 | 6e 74 20 61 72 67 63 3b |eams;.Xi|nt argc;|
|00002e60| 0a 58 63 68 61 72 20 2a | 2a 61 72 67 76 3b 0a 58 |.Xchar *|*argv;.X|
|00002e70| 7b 0a 58 09 63 68 61 72 | 20 2a 68 61 6e 64 6c 65 |{.X.char| *handle|
|00002e80| 20 3d 20 28 2d 2d 61 72 | 67 63 2c 20 2a 61 72 67 | = (--ar|gc, *arg|
|00002e90| 76 2b 2b 29 3b 0a 58 09 | 73 74 72 75 63 74 20 73 |v++);.X.|struct s|
|00002ea0| 74 72 65 61 6d 20 2a 73 | 20 3d 20 67 65 74 5f 73 |tream *s| = get_s|
|00002eb0| 74 72 65 61 6d 28 73 74 | 72 65 61 6d 73 2c 20 68 |tream(st|reams, h|
|00002ec0| 61 6e 64 6c 65 29 3b 0a | 58 09 63 68 61 72 20 62 |andle);.|X.char b|
|00002ed0| 75 66 66 65 72 5b 42 55 | 46 53 49 5a 5d 3b 0a 58 |uffer[BU|FSIZ];.X|
|00002ee0| 0a 58 09 69 66 28 21 73 | 29 20 7b 0a 58 09 09 6e |.X.if(!s|) {.X..n|
|00002ef0| 6f 74 5f 6f 70 65 6e 28 | 69 6e 74 65 72 70 2c 20 |ot_open(|interp, |
|00002f00| 68 61 6e 64 6c 65 29 3b | 0a 58 09 09 72 65 74 75 |handle);|.X..retu|
|00002f10| 72 6e 20 54 43 4c 5f 45 | 52 52 4f 52 3b 0a 58 09 |rn TCL_E|RROR;.X.|
|00002f20| 7d 0a 58 0a 58 09 69 66 | 28 66 70 75 74 73 28 61 |}.X.X.if|(fputs(a|
|00002f30| 72 67 76 5b 30 5d 2c 20 | 73 2d 3e 66 70 29 20 3d |rgv[0], |s->fp) =|
|00002f40| 3d 20 45 4f 46 29 20 73 | 61 76 65 5f 65 72 72 28 |= EOF) s|ave_err(|
|00002f50| 73 29 3b 0a 58 09 69 66 | 28 70 75 74 63 28 27 5c |s);.X.if|(putc('\|
|00002f60| 6e 27 2c 20 73 2d 3e 66 | 70 29 20 3d 3d 20 45 4f |n', s->f|p) == EO|
|00002f70| 46 29 20 73 61 76 65 5f | 65 72 72 28 73 29 3b 0a |F) save_|err(s);.|
|00002f80| 58 0a 58 09 72 65 74 75 | 72 6e 20 54 43 4c 5f 4f |X.X.retu|rn TCL_O|
|00002f90| 4b 3b 0a 58 7d 0a 58 0a | 58 53 54 41 54 49 43 20 |K;.X}.X.|XSTATIC |
|00002fa0| 69 6e 74 20 73 74 72 65 | 61 6d 54 65 6c 6c 28 69 |int stre|amTell(i|
|00002fb0| 6e 74 65 72 70 2c 20 73 | 74 72 65 61 6d 73 2c 20 |nterp, s|treams, |
|00002fc0| 61 72 67 63 2c 20 61 72 | 67 76 29 0a 58 54 63 6c |argc, ar|gv).XTcl|
|00002fd0| 5f 49 6e 74 65 72 70 20 | 2a 69 6e 74 65 72 70 3b |_Interp |*interp;|
|00002fe0| 0a 58 73 74 72 75 63 74 | 20 73 74 72 65 61 6d 73 |.Xstruct| streams|
|00002ff0| 20 2a 73 74 72 65 61 6d | 73 3b 0a 58 69 6e 74 20 | *stream|s;.Xint |
|00003000| 61 72 67 63 3b 0a 58 63 | 68 61 72 20 2a 2a 61 72 |argc;.Xc|har **ar|
|00003010| 67 76 3b 0a 58 7b 0a 58 | 09 63 68 61 72 20 2a 68 |gv;.X{.X|.char *h|
|00003020| 61 6e 64 6c 65 20 3d 20 | 28 2d 2d 61 72 67 63 2c |andle = |(--argc,|
|00003030| 20 2a 61 72 67 76 2b 2b | 29 3b 0a 58 09 73 74 72 | *argv++|);.X.str|
|00003040| 75 63 74 20 73 74 72 65 | 61 6d 20 2a 73 20 3d 20 |uct stre|am *s = |
|00003050| 67 65 74 5f 73 74 72 65 | 61 6d 28 73 74 72 65 61 |get_stre|am(strea|
|00003060| 6d 73 2c 20 68 61 6e 64 | 6c 65 29 3b 0a 58 09 6c |ms, hand|le);.X.l|
|00003070| 6f 6e 67 20 6f 66 66 73 | 65 74 2c 20 66 74 65 6c |ong offs|et, ftel|
|00003080| 6c 28 29 3b 0a 58 0a 58 | 09 69 66 28 21 73 29 20 |l();.X.X|.if(!s) |
|00003090| 7b 0a 58 09 09 6e 6f 74 | 5f 6f 70 65 6e 28 69 6e |{.X..not|_open(in|
|000030a0| 74 65 72 70 2c 20 68 61 | 6e 64 6c 65 29 3b 0a 58 |terp, ha|ndle);.X|
|000030b0| 09 09 72 65 74 75 72 6e | 20 54 43 4c 5f 45 52 52 |..return| TCL_ERR|
|000030c0| 4f 52 3b 0a 58 09 7d 0a | 58 0a 58 09 73 70 72 69 |OR;.X.}.|X.X.spri|
|000030d0| 6e 74 66 28 69 6e 74 65 | 72 70 2d 3e 72 65 73 75 |ntf(inte|rp->resu|
|000030e0| 6c 74 2c 20 22 25 6c 64 | 22 2c 20 6f 66 66 73 65 |lt, "%ld|", offse|
|000030f0| 74 20 3d 20 66 74 65 6c | 6c 28 73 2d 3e 66 70 29 |t = ftel|l(s->fp)|
|00003100| 29 3b 0a 58 09 69 66 28 | 6f 66 66 73 65 74 20 3d |);.X.if(|offset =|
|00003110| 3d 20 2d 31 29 20 73 61 | 76 65 5f 65 72 72 28 73 |= -1) sa|ve_err(s|
|00003120| 29 3b 0a 58 09 72 65 74 | 75 72 6e 20 54 43 4c 5f |);.X.ret|urn TCL_|
|00003130| 4f 4b 3b 0a 58 7d 0a 58 | 0a 58 53 54 41 54 49 43 |OK;.X}.X|.XSTATIC|
|00003140| 20 69 6e 74 20 73 74 72 | 65 61 6d 45 6f 66 28 69 | int str|eamEof(i|
|00003150| 6e 74 65 72 70 2c 20 73 | 74 72 65 61 6d 73 2c 20 |nterp, s|treams, |
|00003160| 61 72 67 63 2c 20 61 72 | 67 76 29 0a 58 54 63 6c |argc, ar|gv).XTcl|
|00003170| 5f 49 6e 74 65 72 70 20 | 2a 69 6e 74 65 72 70 3b |_Interp |*interp;|
|00003180| 0a 58 73 74 72 75 63 74 | 20 73 74 72 65 61 6d 73 |.Xstruct| streams|
|00003190| 20 2a 73 74 72 65 61 6d | 73 3b 0a 58 69 6e 74 20 | *stream|s;.Xint |
|000031a0| 61 72 67 63 3b 0a 58 63 | 68 61 72 20 2a 2a 61 72 |argc;.Xc|har **ar|
|000031b0| 67 76 3b 0a 58 7b 0a 58 | 09 63 68 61 72 20 2a 68 |gv;.X{.X|.char *h|
|000031c0| 61 6e 64 6c 65 20 3d 20 | 28 2d 2d 61 72 67 63 2c |andle = |(--argc,|
|000031d0| 20 2a 61 72 67 76 2b 2b | 29 3b 0a 58 09 73 74 72 | *argv++|);.X.str|
|000031e0| 75 63 74 20 73 74 72 65 | 61 6d 20 2a 73 20 3d 20 |uct stre|am *s = |
|000031f0| 67 65 74 5f 73 74 72 65 | 61 6d 28 73 74 72 65 61 |get_stre|am(strea|
|00003200| 6d 73 2c 20 68 61 6e 64 | 6c 65 29 3b 0a 58 0a 58 |ms, hand|le);.X.X|
|00003210| 09 69 66 28 21 73 29 20 | 7b 0a 58 09 09 6e 6f 74 |.if(!s) |{.X..not|
|00003220| 5f 6f 70 65 6e 28 69 6e | 74 65 72 70 2c 20 68 61 |_open(in|terp, ha|
|00003230| 6e 64 6c 65 29 3b 0a 58 | 09 09 72 65 74 75 72 6e |ndle);.X|..return|
|00003240| 20 54 43 4c 5f 45 52 52 | 4f 52 3b 0a 58 09 7d 0a | TCL_ERR|OR;.X.}.|
|00003250| 58 0a 58 09 73 70 72 69 | 6e 74 66 28 69 6e 74 65 |X.X.spri|ntf(inte|
|00003260| 72 70 2d 3e 72 65 73 75 | 6c 74 2c 20 22 25 64 22 |rp->resu|lt, "%d"|
|00003270| 2c 20 21 21 66 65 6f 66 | 28 73 2d 3e 66 70 29 29 |, !!feof|(s->fp))|
|00003280| 3b 0a 58 09 72 65 74 75 | 72 6e 20 54 43 4c 5f 4f |;.X.retu|rn TCL_O|
|00003290| 4b 3b 0a 58 7d 0a 58 0a | 58 53 54 41 54 49 43 20 |K;.X}.X.|XSTATIC |
|000032a0| 69 6e 74 20 73 74 72 65 | 61 6d 45 72 72 28 69 6e |int stre|amErr(in|
|000032b0| 74 65 72 70 2c 20 73 74 | 72 65 61 6d 73 2c 20 61 |terp, st|reams, a|
|000032c0| 72 67 63 2c 20 61 72 67 | 76 29 0a 58 54 63 6c 5f |rgc, arg|v).XTcl_|
|000032d0| 49 6e 74 65 72 70 20 2a | 69 6e 74 65 72 70 3b 0a |Interp *|interp;.|
|000032e0| 58 73 74 72 75 63 74 20 | 73 74 72 65 61 6d 73 20 |Xstruct |streams |
|000032f0| 2a 73 74 72 65 61 6d 73 | 3b 0a 58 69 6e 74 20 61 |*streams|;.Xint a|
|00003300| 72 67 63 3b 0a 58 63 68 | 61 72 20 2a 2a 61 72 67 |rgc;.Xch|ar **arg|
|00003310| 76 3b 0a 58 7b 0a 58 09 | 63 68 61 72 20 2a 68 61 |v;.X{.X.|char *ha|
|00003320| 6e 64 6c 65 20 3d 20 28 | 2d 2d 61 72 67 63 2c 20 |ndle = (|--argc, |
|00003330| 2a 61 72 67 76 2b 2b 29 | 3b 0a 58 09 73 74 72 75 |*argv++)|;.X.stru|
|00003340| 63 74 20 73 74 72 65 61 | 6d 20 2a 73 20 3d 20 67 |ct strea|m *s = g|
|00003350| 65 74 5f 73 74 72 65 61 | 6d 28 73 74 72 65 61 6d |et_strea|m(stream|
|00003360| 73 2c 20 68 61 6e 64 6c | 65 29 3b 0a 58 0a 58 09 |s, handl|e);.X.X.|
|00003370| 69 66 28 21 73 29 20 7b | 0a 58 09 09 6e 6f 74 5f |if(!s) {|.X..not_|
|00003380| 6f 70 65 6e 28 69 6e 74 | 65 72 70 2c 20 68 61 6e |open(int|erp, han|
|00003390| 64 6c 65 29 3b 0a 58 09 | 09 72 65 74 75 72 6e 20 |dle);.X.|.return |
|000033a0| 54 43 4c 5f 45 52 52 4f | 52 3b 0a 58 09 7d 0a 58 |TCL_ERRO|R;.X.}.X|
|000033b0| 0a 58 09 69 66 28 66 65 | 72 72 6f 72 28 73 2d 3e |.X.if(fe|rror(s->|
|000033c0| 66 70 29 20 26 26 20 73 | 2d 3e 65 72 72 6f 72 29 |fp) && s|->error)|
|000033d0| 0a 58 09 09 54 63 6c 5f | 52 65 74 75 72 6e 28 69 |.X..Tcl_|Return(i|
|000033e0| 6e 74 65 72 70 2c 20 73 | 2d 3e 65 72 72 6f 72 2c |nterp, s|->error,|
|000033f0| 20 54 43 4c 5f 56 4f 4c | 41 54 49 4c 45 29 3b 0a | TCL_VOL|ATILE);.|
|00003400| 58 09 65 6c 73 65 0a 58 | 09 09 54 63 6c 5f 52 65 |X.else.X|..Tcl_Re|
|00003410| 74 75 72 6e 28 69 6e 74 | 65 72 70 2c 20 28 63 68 |turn(int|erp, (ch|
|00003420| 61 72 20 2a 29 4e 55 4c | 4c 2c 20 54 43 4c 5f 53 |ar *)NUL|L, TCL_S|
|00003430| 54 41 54 49 43 29 3b 0a | 58 0a 58 09 72 65 74 75 |TATIC);.|X.X.retu|
|00003440| 72 6e 20 54 43 4c 5f 4f | 4b 3b 0a 58 7d 0a 58 0a |rn TCL_O|K;.X}.X.|
|00003450| 58 53 54 41 54 49 43 20 | 69 6e 74 20 73 74 72 65 |XSTATIC |int stre|
|00003460| 61 6d 4e 61 6d 65 28 69 | 6e 74 65 72 70 2c 20 73 |amName(i|nterp, s|
|00003470| 74 72 65 61 6d 73 2c 20 | 61 72 67 63 2c 20 61 72 |treams, |argc, ar|
|00003480| 67 76 29 0a 58 54 63 6c | 5f 49 6e 74 65 72 70 20 |gv).XTcl|_Interp |
|00003490| 2a 69 6e 74 65 72 70 3b | 0a 58 73 74 72 75 63 74 |*interp;|.Xstruct|
|000034a0| 20 73 74 72 65 61 6d 73 | 20 2a 73 74 72 65 61 6d | streams| *stream|
|000034b0| 73 3b 0a 58 69 6e 74 20 | 61 72 67 63 3b 0a 58 63 |s;.Xint |argc;.Xc|
|000034c0| 68 61 72 20 2a 2a 61 72 | 67 76 3b 0a 58 7b 0a 58 |har **ar|gv;.X{.X|
|000034d0| 09 63 68 61 72 20 2a 68 | 61 6e 64 6c 65 20 3d 20 |.char *h|andle = |
|000034e0| 28 2d 2d 61 72 67 63 2c | 20 2a 61 72 67 76 2b 2b |(--argc,| *argv++|
|000034f0| 29 3b 0a 58 09 73 74 72 | 75 63 74 20 73 74 72 65 |);.X.str|uct stre|
|00003500| 61 6d 20 2a 73 20 3d 20 | 67 65 74 5f 73 74 72 65 |am *s = |get_stre|
|00003510| 61 6d 28 73 74 72 65 61 | 6d 73 2c 20 68 61 6e 64 |am(strea|ms, hand|
|00003520| 6c 65 29 3b 0a 58 0a 58 | 09 69 66 28 21 73 29 20 |le);.X.X|.if(!s) |
|00003530| 7b 0a 58 09 09 6e 6f 74 | 5f 6f 70 65 6e 28 69 6e |{.X..not|_open(in|
|00003540| 74 65 72 70 2c 20 68 61 | 6e 64 6c 65 29 3b 0a 58 |terp, ha|ndle);.X|
|00003550| 09 09 72 65 74 75 72 6e | 20 54 43 4c 5f 45 52 52 |..return| TCL_ERR|
|00003560| 4f 52 3b 0a 58 09 7d 0a | 58 0a 58 09 69 66 28 73 |OR;.X.}.|X.X.if(s|
|00003570| 2d 3e 66 69 6c 65 6e 61 | 6d 65 29 0a 58 09 09 54 |->filena|me).X..T|
|00003580| 63 6c 5f 52 65 74 75 72 | 6e 28 69 6e 74 65 72 70 |cl_Retur|n(interp|
|00003590| 2c 20 73 2d 3e 66 69 6c | 65 6e 61 6d 65 2c 20 54 |, s->fil|ename, T|
|000035a0| 43 4c 5f 56 4f 4c 41 54 | 49 4c 45 29 3b 0a 58 09 |CL_VOLAT|ILE);.X.|
|000035b0| 65 6c 73 65 0a 58 09 09 | 54 63 6c 5f 52 65 74 75 |else.X..|Tcl_Retu|
|000035c0| 72 6e 28 69 6e 74 65 72 | 70 2c 20 28 63 68 61 72 |rn(inter|p, (char|
|000035d0| 20 2a 29 4e 55 4c 4c 2c | 20 54 43 4c 5f 53 54 41 | *)NULL,| TCL_STA|
|000035e0| 54 49 43 29 3b 0a 58 0a | 58 09 72 65 74 75 72 6e |TIC);.X.|X.return|
|000035f0| 20 54 43 4c 5f 4f 4b 3b | 0a 58 7d 0a 58 0a 58 53 | TCL_OK;|.X}.X.XS|
|00003600| 54 41 54 49 43 20 69 6e | 74 20 73 74 72 65 61 6d |TATIC in|t stream|
|00003610| 53 65 65 6b 28 69 6e 74 | 65 72 70 2c 20 73 74 72 |Seek(int|erp, str|
|00003620| 65 61 6d 73 2c 20 61 72 | 67 63 2c 20 61 72 67 76 |eams, ar|gc, argv|
|00003630| 29 0a 58 54 63 6c 5f 49 | 6e 74 65 72 70 20 2a 69 |).XTcl_I|nterp *i|
|00003640| 6e 74 65 72 70 3b 0a 58 | 73 74 72 75 63 74 20 73 |nterp;.X|struct s|
|00003650| 74 72 65 61 6d 73 20 2a | 73 74 72 65 61 6d 73 3b |treams *|streams;|
|00003660| 0a 58 69 6e 74 20 61 72 | 67 63 3b 0a 58 63 68 61 |.Xint ar|gc;.Xcha|
|00003670| 72 20 2a 2a 61 72 67 76 | 3b 0a 58 7b 0a 58 09 63 |r **argv|;.X{.X.c|
|00003680| 68 61 72 20 2a 68 61 6e | 64 6c 65 20 3d 20 28 2d |har *han|dle = (-|
|00003690| 2d 61 72 67 63 2c 20 2a | 61 72 67 76 2b 2b 29 3b |-argc, *|argv++);|
|000036a0| 0a 58 09 73 74 72 75 63 | 74 20 73 74 72 65 61 6d |.X.struc|t stream|
|000036b0| 20 2a 73 20 3d 20 67 65 | 74 5f 73 74 72 65 61 6d | *s = ge|t_stream|
|000036c0| 28 73 74 72 65 61 6d 73 | 2c 20 68 61 6e 64 6c 65 |(streams|, handle|
|000036d0| 29 3b 0a 58 09 69 6e 74 | 20 77 68 65 6e 63 65 2c |);.X.int| whence,|
|000036e0| 20 72 65 74 2c 20 66 73 | 65 65 6b 28 29 3b 0a 58 | ret, fs|eek();.X|
|000036f0| 09 6c 6f 6e 67 20 6f 66 | 66 73 65 74 2c 20 66 66 |.long of|fset, ff|
|00003700| 74 65 6c 6c 28 29 3b 0a | 58 09 6c 6f 6e 67 20 73 |tell();.|X.long s|
|00003710| 74 72 74 6f 6c 28 29 3b | 0a 58 09 63 68 61 72 20 |trtol();|.X.char |
|00003720| 2a 65 6e 64 70 74 72 3b | 0a 58 0a 58 09 69 66 28 |*endptr;|.X.X.if(|
|00003730| 21 73 29 20 7b 0a 58 09 | 09 6e 6f 74 5f 6f 70 65 |!s) {.X.|.not_ope|
|00003740| 6e 28 69 6e 74 65 72 70 | 2c 20 68 61 6e 64 6c 65 |n(interp|, handle|
|00003750| 29 3b 0a 58 09 09 72 65 | 74 75 72 6e 20 54 43 4c |);.X..re|turn TCL|
|00003760| 5f 45 52 52 4f 52 3b 0a | 58 09 7d 0a 58 0a 58 09 |_ERROR;.|X.}.X.X.|
|00003770| 69 66 28 61 72 67 63 20 | 3e 20 31 29 20 77 68 65 |if(argc |> 1) whe|
|00003780| 6e 63 65 20 3d 20 61 74 | 6f 69 28 61 72 67 76 5b |nce = at|oi(argv[|
|00003790| 31 5d 29 3b 0a 58 09 65 | 6c 73 65 20 77 68 65 6e |1]);.X.e|lse when|
|000037a0| 63 65 20 3d 20 30 3b 0a | 58 0a 58 09 6f 66 66 73 |ce = 0;.|X.X.offs|
|000037b0| 65 74 20 3d 20 73 74 72 | 74 6f 6c 28 61 72 67 76 |et = str|tol(argv|
|000037c0| 5b 30 5d 2c 20 26 65 6e | 64 70 74 72 2c 20 30 29 |[0], &en|dptr, 0)|
|000037d0| 3b 0a 58 0a 58 09 72 65 | 74 20 3d 20 66 73 65 65 |;.X.X.re|t = fsee|
|000037e0| 6b 28 73 2d 3e 66 70 2c | 20 6f 66 66 73 65 74 2c |k(s->fp,| offset,|
|000037f0| 20 77 68 65 6e 63 65 29 | 3b 0a 58 09 69 66 28 72 | whence)|;.X.if(r|
|00003800| 65 74 3d 3d 30 29 20 6f | 66 66 73 65 74 20 3d 20 |et==0) o|ffset = |
|00003810| 66 74 65 6c 6c 28 73 2d | 3e 66 70 29 3b 0a 58 09 |ftell(s-|>fp);.X.|
|00003820| 65 6c 73 65 20 6f 66 66 | 73 65 74 20 3d 20 2d 31 |else off|set = -1|
|00003830| 3b 0a 58 09 73 70 72 69 | 6e 74 66 28 69 6e 74 65 |;.X.spri|ntf(inte|
|00003840| 72 70 2d 3e 72 65 73 75 | 6c 74 2c 20 22 25 6c 64 |rp->resu|lt, "%ld|
|00003850| 22 2c 20 6f 66 66 73 65 | 74 29 3b 0a 58 09 69 66 |", offse|t);.X.if|
|00003860| 28 6f 66 66 73 65 74 20 | 3d 3d 20 2d 31 29 20 73 |(offset |== -1) s|
|00003870| 61 76 65 5f 65 72 72 28 | 73 29 3b 0a 58 0a 58 09 |ave_err(|s);.X.X.|
|00003880| 72 65 74 75 72 6e 20 54 | 43 4c 5f 4f 4b 3b 0a 58 |return T|CL_OK;.X|
|00003890| 7d 0a 58 0a 58 53 54 41 | 54 49 43 20 69 6e 74 20 |}.X.XSTA|TIC int |
|000038a0| 73 74 72 65 61 6d 4c 69 | 73 74 28 69 6e 74 65 72 |streamLi|st(inter|
|000038b0| 70 2c 20 73 74 72 65 61 | 6d 73 2c 20 61 72 67 63 |p, strea|ms, argc|
|000038c0| 2c 20 61 72 67 76 29 0a | 58 54 63 6c 5f 49 6e 74 |, argv).|XTcl_Int|
|000038d0| 65 72 70 20 2a 69 6e 74 | 65 72 70 3b 0a 58 73 74 |erp *int|erp;.Xst|
|000038e0| 72 75 63 74 20 73 74 72 | 65 61 6d 73 20 2a 73 74 |ruct str|eams *st|
|000038f0| 72 65 61 6d 73 3b 0a 58 | 69 6e 74 20 61 72 67 63 |reams;.X|int argc|
|00003900| 3b 0a 58 63 68 61 72 20 | 2a 2a 61 72 67 76 3b 0a |;.Xchar |**argv;.|
|00003910| 58 7b 0a 58 09 63 68 61 | 72 20 62 75 66 66 65 72 |X{.X.cha|r buffer|
|00003920| 5b 42 55 46 53 49 5a 5d | 3b 0a 58 09 69 6e 74 20 |[BUFSIZ]|;.X.int |
|00003930| 69 64 3b 0a 58 09 73 74 | 72 75 63 74 20 73 74 72 |id;.X.st|ruct str|
|00003940| 65 61 6d 20 2a 73 3b 0a | 58 09 63 68 61 72 20 2a |eam *s;.|X.char *|
|00003950| 70 3b 0a 58 0a 58 09 70 | 20 3d 20 30 3b 0a 58 09 |p;.X.X.p| = 0;.X.|
|00003960| 66 6f 72 28 69 64 20 3d | 20 30 3b 20 69 64 20 3c |for(id =| 0; id <|
|00003970| 20 73 74 72 65 61 6d 73 | 2d 3e 6e 3b 20 69 64 2b | streams|->n; id+|
|00003980| 2b 29 20 7b 0a 58 09 09 | 69 66 28 73 20 3d 20 73 |+) {.X..|if(s = s|
|00003990| 74 72 65 61 6d 73 2d 3e | 73 5b 69 64 5d 29 20 7b |treams->|s[id]) {|
|000039a0| 0a 58 09 09 09 69 66 28 | 21 70 29 0a 58 09 09 09 |.X...if(|!p).X...|
|000039b0| 09 70 20 3d 20 62 75 66 | 66 65 72 3b 0a 58 09 09 |.p = buf|fer;.X..|
|000039c0| 09 65 6c 73 65 09 0a 58 | 09 09 09 09 2a 70 2b 2b |.else..X|....*p++|
|000039d0| 20 3d 20 27 20 27 3b 0a | 58 09 09 09 69 66 28 73 | = ' ';.|X...if(s|
|000039e0| 2d 3e 66 69 6c 65 6e 61 | 6d 65 29 20 7b 0a 58 09 |->filena|me) {.X.|
|000039f0| 09 09 09 63 68 61 72 20 | 2a 73 74 72 63 68 72 28 |...char |*strchr(|
|00003a00| 29 3b 0a 58 09 09 09 09 | 69 66 28 73 74 72 63 68 |);.X....|if(strch|
|00003a10| 72 28 73 2d 3e 66 69 6c | 65 6e 61 6d 65 2c 20 27 |r(s->fil|ename, '|
|00003a20| 20 27 29 20 3d 3d 20 4e | 55 4c 4c 29 0a 58 09 09 | ') == N|ULL).X..|
|00003a30| 09 09 09 73 70 72 69 6e | 74 66 28 70 2c 20 22 7b |...sprin|tf(p, "{|
|00003a40| 25 73 20 25 73 7d 22 2c | 0a 58 09 09 09 09 09 09 |%s %s}",|.X......|
|00003a50| 67 65 74 5f 6e 61 6d 65 | 28 73 74 72 65 61 6d 73 |get_name|(streams|
|00003a60| 2c 20 69 64 29 2c 0a 58 | 09 09 09 09 09 09 73 2d |, id),.X|......s-|
|00003a70| 3e 66 69 6c 65 6e 61 6d | 65 29 3b 0a 58 09 09 09 |>filenam|e);.X...|
|00003a80| 09 65 6c 73 65 0a 58 09 | 09 09 09 09 73 70 72 69 |.else.X.|....spri|
|00003a90| 6e 74 66 28 70 2c 20 22 | 7b 25 73 20 7b 25 73 7d |ntf(p, "|{%s {%s}|
|00003aa0| 7d 22 2c 0a 58 09 09 09 | 09 09 09 67 65 74 5f 6e |}",.X...|...get_n|
|00003ab0| 61 6d 65 28 73 74 72 65 | 61 6d 73 2c 20 69 64 29 |ame(stre|ams, id)|
|00003ac0| 2c 0a 58 09 09 09 09 09 | 09 73 2d 3e 66 69 6c 65 |,.X.....|.s->file|
|00003ad0| 6e 61 6d 65 29 3b 0a 58 | 09 09 09 7d 20 65 6c 73 |name);.X|...} els|
|00003ae0| 65 0a 58 09 09 09 09 73 | 70 72 69 6e 74 66 28 70 |e.X....s|printf(p|
|00003af0| 2c 20 22 25 73 22 2c 20 | 67 65 74 5f 6e 61 6d 65 |, "%s", |get_name|
|00003b00| 28 73 74 72 65 61 6d 73 | 2c 20 69 64 29 29 3b 0a |(streams|, id));.|
|00003b10| 58 09 09 09 70 20 2b 3d | 20 73 74 72 6c 65 6e 28 |X...p +=| strlen(|
|00003b20| 70 29 3b 0a 58 09 09 7d | 0a 58 09 7d 0a 58 09 54 |p);.X..}|.X.}.X.T|
|00003b30| 63 6c 5f 52 65 74 75 72 | 6e 28 69 6e 74 65 72 70 |cl_Retur|n(interp|
|00003b40| 2c 20 62 75 66 66 65 72 | 2c 20 54 43 4c 5f 56 4f |, buffer|, TCL_VO|
|00003b50| 4c 41 54 49 4c 45 29 3b | 0a 58 09 72 65 74 75 72 |LATILE);|.X.retur|
|00003b60| 6e 20 54 43 4c 5f 4f 4b | 3b 0a 58 7d 0a 45 4e 44 |n TCL_OK|;.X}.END|
|00003b70| 5f 4f 46 5f 46 49 4c 45 | 0a 69 66 20 74 65 73 74 |_OF_FILE|.if test|
|00003b80| 20 39 33 33 39 20 2d 6e | 65 20 60 77 63 20 2d 63 | 9339 -n|e `wc -c|
|00003b90| 20 3c 27 73 74 72 65 61 | 6d 2e 63 27 60 3b 20 74 | <'strea|m.c'`; t|
|00003ba0| 68 65 6e 0a 20 20 20 20 | 65 63 68 6f 20 73 68 61 |hen. |echo sha|
|00003bb0| 72 3a 20 5c 22 27 73 74 | 72 65 61 6d 2e 63 27 5c |r: \"'st|ream.c'\|
|00003bc0| 22 20 75 6e 70 61 63 6b | 65 64 20 77 69 74 68 20 |" unpack|ed with |
|00003bd0| 77 72 6f 6e 67 20 73 69 | 7a 65 21 0a 66 69 0a 23 |wrong si|ze!.fi.#|
|00003be0| 20 65 6e 64 20 6f 66 20 | 27 73 74 72 65 61 6d 2e | end of |'stream.|
|00003bf0| 63 27 0a 66 69 0a 69 66 | 20 74 65 73 74 20 2d 66 |c'.fi.if| test -f|
|00003c00| 20 27 73 74 72 65 61 6d | 2e 68 27 20 2d 61 20 22 | 'stream|.h' -a "|
|00003c10| 24 7b 31 7d 22 20 21 3d | 20 22 2d 63 22 20 3b 20 |${1}" !=| "-c" ; |
|00003c20| 74 68 65 6e 20 0a 20 20 | 65 63 68 6f 20 73 68 61 |then . |echo sha|
|00003c30| 72 3a 20 57 69 6c 6c 20 | 6e 6f 74 20 63 6c 6f 62 |r: Will |not clob|
|00003c40| 62 65 72 20 65 78 69 73 | 74 69 6e 67 20 66 69 6c |ber exis|ting fil|
|00003c50| 65 20 5c 22 27 73 74 72 | 65 61 6d 2e 68 27 5c 22 |e \"'str|eam.h'\"|
|00003c60| 0a 65 6c 73 65 0a 65 63 | 68 6f 20 73 68 61 72 3a |.else.ec|ho shar:|
|00003c70| 20 45 78 74 72 61 63 74 | 69 6e 67 20 5c 22 27 73 | Extract|ing \"'s|
|00003c80| 74 72 65 61 6d 2e 68 27 | 5c 22 20 5c 28 32 30 32 |tream.h'|\" \(202|
|00003c90| 20 63 68 61 72 61 63 74 | 65 72 73 5c 29 0a 73 65 | charact|ers\).se|
|00003ca0| 64 20 22 73 2f 5e 58 2f | 2f 22 20 3e 27 73 74 72 |d "s/^X/|/" >'str|
|00003cb0| 65 61 6d 2e 68 27 20 3c | 3c 27 45 4e 44 5f 4f 46 |eam.h' <|<'END_OF|
|00003cc0| 5f 46 49 4c 45 27 0a 58 | 73 74 72 75 63 74 20 73 |_FILE'.X|struct s|
|00003cd0| 74 72 65 61 6d 20 7b 0a | 58 09 69 6e 74 20 69 64 |tream {.|X.int id|
|00003ce0| 3b 0a 58 09 69 6e 74 20 | 74 79 70 65 3b 0a 58 09 |;.X.int |type;.X.|
|00003cf0| 63 68 61 72 20 2a 66 69 | 6c 65 6e 61 6d 65 3b 0a |char *fi|lename;.|
|00003d00| 58 09 63 68 61 72 20 2a | 65 72 72 6f 72 3b 0a 58 |X.char *|error;.X|
|00003d10| 09 46 49 4c 45 20 2a 66 | 70 3b 0a 58 7d 3b 0a 58 |.FILE *f|p;.X};.X|
|00003d20| 23 64 65 66 69 6e 65 20 | 4d 41 58 53 54 52 45 41 |#define |MAXSTREA|
|00003d30| 4d 53 20 5f 4e 46 49 4c | 45 0a 58 23 64 65 66 69 |MS _NFIL|E.X#defi|
|00003d40| 6e 65 20 53 54 5f 46 49 | 4c 45 20 30 0a 58 23 64 |ne ST_FI|LE 0.X#d|
|00003d50| 65 66 69 6e 65 20 53 54 | 5f 50 49 50 45 20 31 0a |efine ST|_PIPE 1.|
|00003d60| 58 73 74 72 75 63 74 20 | 73 74 72 65 61 6d 73 20 |Xstruct |streams |
|00003d70| 7b 0a 58 09 69 6e 74 20 | 6e 3b 0a 58 09 73 74 72 |{.X.int |n;.X.str|
|00003d80| 75 63 74 20 73 74 72 65 | 61 6d 20 2a 73 5b 4d 41 |uct stre|am *s[MA|
|00003d90| 58 53 54 52 45 41 4d 53 | 5d 3b 0a 58 7d 3b 0a 45 |XSTREAMS|];.X};.E|
|00003da0| 4e 44 5f 4f 46 5f 46 49 | 4c 45 0a 69 66 20 74 65 |ND_OF_FI|LE.if te|
|00003db0| 73 74 20 32 30 32 20 2d | 6e 65 20 60 77 63 20 2d |st 202 -|ne `wc -|
|00003dc0| 63 20 3c 27 73 74 72 65 | 61 6d 2e 68 27 60 3b 20 |c <'stre|am.h'`; |
|00003dd0| 74 68 65 6e 0a 20 20 20 | 20 65 63 68 6f 20 73 68 |then. | echo sh|
|00003de0| 61 72 3a 20 5c 22 27 73 | 74 72 65 61 6d 2e 68 27 |ar: \"'s|tream.h'|
|00003df0| 5c 22 20 75 6e 70 61 63 | 6b 65 64 20 77 69 74 68 |\" unpac|ked with|
|00003e00| 20 77 72 6f 6e 67 20 73 | 69 7a 65 21 0a 66 69 0a | wrong s|ize!.fi.|
|00003e10| 23 20 65 6e 64 20 6f 66 | 20 27 73 74 72 65 61 6d |# end of| 'stream|
|00003e20| 2e 68 27 0a 66 69 0a 69 | 66 20 74 65 73 74 20 2d |.h'.fi.i|f test -|
|00003e30| 66 20 27 68 61 6e 64 6c | 65 72 2e 63 27 20 2d 61 |f 'handl|er.c' -a|
|00003e40| 20 22 24 7b 31 7d 22 20 | 21 3d 20 22 2d 63 22 20 | "${1}" |!= "-c" |
|00003e50| 3b 20 74 68 65 6e 20 0a | 20 20 65 63 68 6f 20 73 |; then .| echo s|
|00003e60| 68 61 72 3a 20 57 69 6c | 6c 20 6e 6f 74 20 63 6c |har: Wil|l not cl|
|00003e70| 6f 62 62 65 72 20 65 78 | 69 73 74 69 6e 67 20 66 |obber ex|isting f|
|00003e80| 69 6c 65 20 5c 22 27 68 | 61 6e 64 6c 65 72 2e 63 |ile \"'h|andler.c|
|00003e90| 27 5c 22 0a 65 6c 73 65 | 0a 65 63 68 6f 20 73 68 |'\".else|.echo sh|
|00003ea0| 61 72 3a 20 45 78 74 72 | 61 63 74 69 6e 67 20 5c |ar: Extr|acting \|
|00003eb0| 22 27 68 61 6e 64 6c 65 | 72 2e 63 27 5c 22 20 5c |"'handle|r.c'\" \|
|00003ec0| 28 39 36 34 20 63 68 61 | 72 61 63 74 65 72 73 5c |(964 cha|racters\|
|00003ed0| 29 0a 73 65 64 20 22 73 | 2f 5e 58 2f 2f 22 20 3e |).sed "s|/^X//" >|
|00003ee0| 27 68 61 6e 64 6c 65 72 | 2e 63 27 20 3c 3c 27 45 |'handler|.c' <<'E|
|00003ef0| 4e 44 5f 4f 46 5f 46 49 | 4c 45 27 0a 58 2f 2a 20 |ND_OF_FI|LE'.X/* |
|00003f00| 68 61 6e 64 6c 65 20 73 | 74 61 6e 64 61 72 64 20 |handle s|tandard |
|00003f10| 63 6f 6d 6d 61 6e 64 73 | 20 77 69 74 68 20 6e 61 |commands| with na|
|00003f20| 6d 65 73 20 66 6f 72 20 | 74 63 6c 20 2a 2f 0a 58 |mes for |tcl */.X|
|00003f30| 23 69 6e 63 6c 75 64 65 | 20 3c 73 74 64 69 6f 2e |#include| <stdio.|
|00003f40| 68 3e 0a 58 23 69 6e 63 | 6c 75 64 65 20 3c 74 63 |h>.X#inc|lude <tc|
|00003f50| 6c 2e 68 3e 0a 58 23 69 | 6e 63 6c 75 64 65 20 22 |l.h>.X#i|nclude "|
|00003f60| 68 61 6e 64 6c 65 72 2e | 68 22 0a 58 0a 58 63 6d |handler.|h".X.Xcm|
|00003f70| 64 48 61 6e 64 6c 65 72 | 28 74 61 62 2c 20 69 6e |dHandler|(tab, in|
|00003f80| 74 65 72 70 2c 20 61 72 | 67 63 2c 20 61 72 67 76 |terp, ar|gc, argv|
|00003f90| 29 0a 58 73 74 72 75 63 | 74 20 63 6d 64 5f 74 61 |).Xstruc|t cmd_ta|
|00003fa0| 62 6c 65 20 2a 74 61 62 | 3b 0a 58 54 63 6c 5f 49 |ble *tab|;.XTcl_I|
|00003fb0| 6e 74 65 72 70 20 2a 69 | 6e 74 65 72 70 3b 0a 58 |nterp *i|nterp;.X|
|00003fc0| 69 6e 74 20 61 72 67 63 | 3b 0a 58 63 68 61 72 20 |int argc|;.Xchar |
|00003fd0| 2a 2a 61 72 67 76 3b 0a | 58 7b 0a 58 09 73 74 72 |**argv;.|X{.X.str|
|00003fe0| 75 63 74 20 73 75 62 63 | 6d 64 20 2a 63 6d 64 76 |uct subc|md *cmdv|
|00003ff0| 20 3d 20 74 61 62 2d 3e | 63 6d 64 76 3b 0a 58 09 | = tab->|cmdv;.X.|
|00004000| 69 6e 74 20 63 6d 64 63 | 20 3d 20 74 61 62 2d 3e |int cmdc| = tab->|
|00004010| 63 6d 64 63 3b 0a 58 0a | 58 09 63 68 61 72 20 2a |cmdc;.X.|X.char *|
|00004020| 61 63 74 69 6f 6e 3b 0a | 58 0a 58 09 63 68 61 72 |action;.|X.X.char|
|00004030| 20 2a 65 72 72 3b 0a 58 | 09 63 68 61 72 20 2a 6e | *err;.X|.char *n|
|00004040| 61 6d 65 3b 0a 58 09 63 | 68 61 72 20 2a 61 72 67 |ame;.X.c|har *arg|
|00004050| 73 3b 0a 58 0a 58 09 65 | 72 72 20 3d 20 22 77 72 |s;.X.X.e|rr = "wr|
|00004060| 6f 6e 67 20 23 20 61 72 | 67 73 20 69 6e 22 3b 0a |ong # ar|gs in";.|
|00004070| 58 09 61 63 74 69 6f 6e | 20 3d 20 74 61 62 2d 3e |X.action| = tab->|
|00004080| 6e 61 6d 65 3b 0a 58 09 | 6e 61 6d 65 20 3d 20 22 |name;.X.|name = "|
|00004090| 63 6f 6d 6d 61 6e 64 22 | 3b 0a 58 09 61 72 67 73 |command"|;.X.args|
|000040a0| 20 3d 20 22 61 72 67 73 | 2e 2e 2e 22 3b 0a 58 0a | = "args|...";.X.|
|000040b0| 58 09 69 66 28 61 72 67 | 63 20 3c 20 32 29 0a 58 |X.if(arg|c < 2).X|
|000040c0| 09 09 67 6f 74 6f 20 65 | 72 72 6f 72 3b 0a 58 0a |..goto e|rror;.X.|
|000040d0| 58 09 61 72 67 76 2b 2b | 3b 20 2d 2d 61 72 67 63 |X.argv++|; --argc|
|000040e0| 3b 0a 58 09 61 63 74 69 | 6f 6e 20 3d 20 2a 61 72 |;.X.acti|on = *ar|
|000040f0| 67 76 2b 2b 3b 20 2d 2d | 61 72 67 63 3b 0a 58 0a |gv++; --|argc;.X.|
|00004100| 58 09 77 68 69 6c 65 28 | 63 6d 64 63 20 3e 20 30 |X.while(|cmdc > 0|
|00004110| 29 20 7b 0a 58 09 09 69 | 66 28 73 74 72 63 6d 70 |) {.X..i|f(strcmp|
|00004120| 28 61 63 74 69 6f 6e 2c | 20 63 6d 64 76 2d 3e 6e |(action,| cmdv->n|
|00004130| 61 6d 65 29 20 3d 3d 20 | 30 29 20 7b 0a 58 09 09 |ame) == |0) {.X..|
|00004140| 09 69 6e 74 20 72 65 73 | 75 6c 74 3b 0a 58 0a 58 |.int res|ult;.X.X|
|00004150| 09 09 09 6e 61 6d 65 20 | 3d 20 63 6d 64 76 2d 3e |...name |= cmdv->|
|00004160| 6e 61 6d 65 3b 0a 58 09 | 09 09 61 72 67 73 20 3d |name;.X.|..args =|
|00004170| 20 63 6d 64 76 2d 3e 61 | 72 67 73 3b 0a 58 09 09 | cmdv->a|rgs;.X..|
|00004180| 09 69 66 28 61 72 67 63 | 20 3c 20 63 6d 64 76 2d |.if(argc| < cmdv-|
|00004190| 3e 6d 69 6e 0a 58 09 09 | 09 20 20 20 7c 7c 20 28 |>min.X..|. || (|
|000041a0| 63 6d 64 76 2d 3e 6d 61 | 78 20 21 3d 20 2d 31 20 |cmdv->ma|x != -1 |
|000041b0| 26 26 20 61 72 67 63 20 | 3e 20 63 6d 64 76 2d 3e |&& argc |> cmdv->|
|000041c0| 6d 61 78 29 29 0a 58 09 | 09 09 09 67 6f 74 6f 20 |max)).X.|...goto |
|000041d0| 65 72 72 6f 72 3b 0a 58 | 09 09 09 72 65 73 75 6c |error;.X|...resul|
|000041e0| 74 20 3d 20 28 2a 63 6d | 64 76 2d 3e 66 75 6e 63 |t = (*cm|dv->func|
|000041f0| 29 28 69 6e 74 65 72 70 | 2c 20 74 61 62 2d 3e 64 |)(interp|, tab->d|
|00004200| 61 74 61 2c 20 61 72 67 | 63 2c 20 61 72 67 76 29 |ata, arg|c, argv)|
|00004210| 3b 0a 58 09 09 09 72 65 | 74 75 72 6e 20 72 65 73 |;.X...re|turn res|
|00004220| 75 6c 74 3b 0a 58 09 09 | 7d 0a 58 09 09 63 6d 64 |ult;.X..|}.X..cmd|
|00004230| 76 2b 2b 3b 0a 58 09 09 | 63 6d 64 63 2d 2d 3b 0a |v++;.X..|cmdc--;.|
|00004240| 58 09 7d 0a 58 09 65 72 | 72 20 3d 20 22 75 6e 6b |X.}.X.er|r = "unk|
|00004250| 6e 6f 77 6e 20 73 75 62 | 63 6f 6d 6d 61 6e 64 22 |nown sub|command"|
|00004260| 3b 0a 58 65 72 72 6f 72 | 3a 0a 58 09 73 70 72 69 |;.Xerror|:.X.spri|
|00004270| 6e 74 66 28 69 6e 74 65 | 72 70 2d 3e 72 65 73 75 |ntf(inte|rp->resu|
|00004280| 6c 74 2c 20 22 25 2e 35 | 30 73 20 25 2e 35 30 73 |lt, "%.5|0s %.50s|
|00004290| 3a 20 20 73 68 6f 75 6c | 64 20 62 65 20 5c 22 25 |: shoul|d be \"%|
|000042a0| 2e 35 30 73 20 25 2e 35 | 30 73 20 25 2e 35 30 73 |.50s %.5|0s %.50s|
|000042b0| 5c 22 22 2c 0a 58 09 09 | 65 72 72 2c 20 61 63 74 |\"",.X..|err, act|
|000042c0| 69 6f 6e 2c 20 74 61 62 | 2d 3e 6e 61 6d 65 2c 20 |ion, tab|->name, |
|000042d0| 6e 61 6d 65 2c 20 61 72 | 67 73 29 3b 0a 58 09 72 |name, ar|gs);.X.r|
|000042e0| 65 74 75 72 6e 20 54 43 | 4c 5f 45 52 52 4f 52 3b |eturn TC|L_ERROR;|
|000042f0| 0a 58 7d 0a 45 4e 44 5f | 4f 46 5f 46 49 4c 45 0a |.X}.END_|OF_FILE.|
|00004300| 69 66 20 74 65 73 74 20 | 39 36 34 20 2d 6e 65 20 |if test |964 -ne |
|00004310| 60 77 63 20 2d 63 20 3c | 27 68 61 6e 64 6c 65 72 |`wc -c <|'handler|
|00004320| 2e 63 27 60 3b 20 74 68 | 65 6e 0a 20 20 20 20 65 |.c'`; th|en. e|
|00004330| 63 68 6f 20 73 68 61 72 | 3a 20 5c 22 27 68 61 6e |cho shar|: \"'han|
|00004340| 64 6c 65 72 2e 63 27 5c | 22 20 75 6e 70 61 63 6b |dler.c'\|" unpack|
|00004350| 65 64 20 77 69 74 68 20 | 77 72 6f 6e 67 20 73 69 |ed with |wrong si|
|00004360| 7a 65 21 0a 66 69 0a 23 | 20 65 6e 64 20 6f 66 20 |ze!.fi.#| end of |
|00004370| 27 68 61 6e 64 6c 65 72 | 2e 63 27 0a 66 69 0a 69 |'handler|.c'.fi.i|
|00004380| 66 20 74 65 73 74 20 2d | 66 20 27 68 61 6e 64 6c |f test -|f 'handl|
|00004390| 65 72 2e 68 27 20 2d 61 | 20 22 24 7b 31 7d 22 20 |er.h' -a| "${1}" |
|000043a0| 21 3d 20 22 2d 63 22 20 | 3b 20 74 68 65 6e 20 0a |!= "-c" |; then .|
|000043b0| 20 20 65 63 68 6f 20 73 | 68 61 72 3a 20 57 69 6c | echo s|har: Wil|
|000043c0| 6c 20 6e 6f 74 20 63 6c | 6f 62 62 65 72 20 65 78 |l not cl|obber ex|
|000043d0| 69 73 74 69 6e 67 20 66 | 69 6c 65 20 5c 22 27 68 |isting f|ile \"'h|
|000043e0| 61 6e 64 6c 65 72 2e 68 | 27 5c 22 0a 65 6c 73 65 |andler.h|'\".else|
|000043f0| 0a 65 63 68 6f 20 73 68 | 61 72 3a 20 45 78 74 72 |.echo sh|ar: Extr|
|00004400| 61 63 74 69 6e 67 20 5c | 22 27 68 61 6e 64 6c 65 |acting \|"'handle|
|00004410| 72 2e 68 27 5c 22 20 5c | 28 31 39 32 20 63 68 61 |r.h'\" \|(192 cha|
|00004420| 72 61 63 74 65 72 73 5c | 29 0a 73 65 64 20 22 73 |racters\|).sed "s|
|00004430| 2f 5e 58 2f 2f 22 20 3e | 27 68 61 6e 64 6c 65 72 |/^X//" >|'handler|
|00004440| 2e 68 27 20 3c 3c 27 45 | 4e 44 5f 4f 46 5f 46 49 |.h' <<'E|ND_OF_FI|
|00004450| 4c 45 27 0a 58 73 74 72 | 75 63 74 20 73 75 62 63 |LE'.Xstr|uct subc|
|00004460| 6d 64 20 7b 0a 58 09 69 | 6e 74 20 28 2a 66 75 6e |md {.X.i|nt (*fun|
|00004470| 63 29 28 29 3b 0a 58 09 | 63 68 61 72 20 2a 6e 61 |c)();.X.|char *na|
|00004480| 6d 65 3b 0a 58 09 69 6e | 74 20 6d 69 6e 3b 0a 58 |me;.X.in|t min;.X|
|00004490| 09 69 6e 74 20 6d 61 78 | 3b 0a 58 09 63 68 61 72 |.int max|;.X.char|
|000044a0| 20 2a 61 72 67 73 3b 0a | 58 7d 3b 0a 58 73 74 72 | *args;.|X};.Xstr|
|000044b0| 75 63 74 20 63 6d 64 5f | 74 61 62 6c 65 20 7b 0a |uct cmd_|table {.|
|000044c0| 58 09 63 68 61 72 20 2a | 6e 61 6d 65 3b 0a 58 09 |X.char *|name;.X.|
|000044d0| 43 6c 69 65 6e 74 44 61 | 74 61 20 64 61 74 61 3b |ClientDa|ta data;|
|000044e0| 0a 58 09 69 6e 74 20 63 | 6d 64 63 3b 0a 58 09 73 |.X.int c|mdc;.X.s|
|000044f0| 74 72 75 63 74 20 73 75 | 62 63 6d 64 20 2a 63 6d |truct su|bcmd *cm|
|00004500| 64 76 3b 0a 58 7d 3b 0a | 58 65 78 74 65 72 6e 20 |dv;.X};.|Xextern |
|00004510| 69 6e 74 20 63 6d 64 48 | 61 6e 64 6c 65 72 28 29 |int cmdH|andler()|
|00004520| 3b 0a 45 4e 44 5f 4f 46 | 5f 46 49 4c 45 0a 69 66 |;.END_OF|_FILE.if|
|00004530| 20 74 65 73 74 20 31 39 | 32 20 2d 6e 65 20 60 77 | test 19|2 -ne `w|
|00004540| 63 20 2d 63 20 3c 27 68 | 61 6e 64 6c 65 72 2e 68 |c -c <'h|andler.h|
|00004550| 27 60 3b 20 74 68 65 6e | 0a 20 20 20 20 65 63 68 |'`; then|. ech|
|00004560| 6f 20 73 68 61 72 3a 20 | 5c 22 27 68 61 6e 64 6c |o shar: |\"'handl|
|00004570| 65 72 2e 68 27 5c 22 20 | 75 6e 70 61 63 6b 65 64 |er.h'\" |unpacked|
|00004580| 20 77 69 74 68 20 77 72 | 6f 6e 67 20 73 69 7a 65 | with wr|ong size|
|00004590| 21 0a 66 69 0a 23 20 65 | 6e 64 20 6f 66 20 27 68 |!.fi.# e|nd of 'h|
|000045a0| 61 6e 64 6c 65 72 2e 68 | 27 0a 66 69 0a 69 66 20 |andler.h|'.fi.if |
|000045b0| 74 65 73 74 20 2d 66 20 | 27 4d 61 6b 65 66 69 6c |test -f |'Makefil|
|000045c0| 65 27 20 2d 61 20 22 24 | 7b 31 7d 22 20 21 3d 20 |e' -a "$|{1}" != |
|000045d0| 22 2d 63 22 20 3b 20 74 | 68 65 6e 20 0a 20 20 65 |"-c" ; t|hen . e|
|000045e0| 63 68 6f 20 73 68 61 72 | 3a 20 57 69 6c 6c 20 6e |cho shar|: Will n|
|000045f0| 6f 74 20 63 6c 6f 62 62 | 65 72 20 65 78 69 73 74 |ot clobb|er exist|
|00004600| 69 6e 67 20 66 69 6c 65 | 20 5c 22 27 4d 61 6b 65 |ing file| \"'Make|
|00004610| 66 69 6c 65 27 5c 22 0a | 65 6c 73 65 0a 65 63 68 |file'\".|else.ech|
|00004620| 6f 20 73 68 61 72 3a 20 | 45 78 74 72 61 63 74 69 |o shar: |Extracti|
|00004630| 6e 67 20 5c 22 27 4d 61 | 6b 65 66 69 6c 65 27 5c |ng \"'Ma|kefile'\|
|00004640| 22 20 5c 28 31 38 38 37 | 20 63 68 61 72 61 63 74 |" \(1887| charact|
|00004650| 65 72 73 5c 29 0a 73 65 | 64 20 22 73 2f 5e 58 2f |ers\).se|d "s/^X/|
|00004660| 2f 22 20 3e 27 4d 61 6b | 65 66 69 6c 65 27 20 3c |/" >'Mak|efile' <|
|00004670| 3c 27 45 4e 44 5f 4f 46 | 5f 46 49 4c 45 27 0a 58 |<'END_OF|_FILE'.X|
|00004680| 23 0a 58 23 20 54 68 69 | 73 20 4d 61 6b 65 66 69 |#.X# Thi|s Makefi|
|00004690| 6c 65 20 69 73 20 66 6f | 72 20 75 73 65 20 77 68 |le is fo|r use wh|
|000046a0| 65 6e 20 64 69 73 74 72 | 69 62 75 74 69 6e 67 20 |en distr|ibuting |
|000046b0| 54 63 6c 20 74 6f 20 74 | 68 65 20 6f 75 74 73 69 |Tcl to t|he outsi|
|000046c0| 64 65 20 77 6f 72 6c 64 | 2e 0a 58 23 20 49 74 20 |de world|..X# It |
|000046d0| 69 73 20 73 69 6d 70 6c | 69 66 69 65 64 20 73 6f |is simpl|ified so|
|000046e0| 20 74 68 61 74 20 69 74 | 20 64 6f 65 73 6e 27 74 | that it| doesn't|
|000046f0| 20 69 6e 63 6c 75 64 65 | 20 61 6e 79 20 53 70 72 | include| any Spr|
|00004700| 69 74 65 2d 73 70 65 63 | 69 66 69 63 20 73 74 75 |ite-spec|ific stu|
|00004710| 66 66 2e 0a 58 23 0a 58 | 53 48 45 4c 4c 3d 2f 62 |ff..X#.X|SHELL=/b|
|00004720| 69 6e 2f 73 68 0a 58 23 | 0a 58 4d 45 4d 43 48 45 |in/sh.X#|.XMEMCHE|
|00004730| 43 4b 3d 20 23 2d 44 4d | 45 4d 43 48 45 43 4b 0a |CK= #-DM|EMCHECK.|
|00004740| 58 0a 58 23 0a 58 23 53 | 79 73 74 65 6d 20 56 0a |X.X#.X#S|ystem V.|
|00004750| 58 23 0a 58 23 4c 49 42 | 53 20 3d 0a 58 23 52 41 |X#.X#LIB|S =.X#RA|
|00004760| 4e 4c 49 42 3d 3a 0a 58 | 23 56 4f 49 44 3d 20 2d |NLIB=:.X|#VOID= -|
|00004770| 44 56 4f 49 44 3d 76 6f | 69 64 0a 58 23 4d 4f 44 |DVOID=vo|id.X#MOD|
|00004780| 45 4c 3d 0a 58 23 4c 46 | 4c 41 47 53 3d 0a 58 23 |EL=.X#LF|LAGS=.X#|
|00004790| 47 3d 2d 67 0a 58 0a 58 | 23 0a 58 23 53 79 73 74 |G=-g.X.X|#.X#Syst|
|000047a0| 65 6d 20 49 49 49 20 58 | 65 6e 69 78 0a 58 23 0a |em III X|enix.X#.|
|000047b0| 58 4c 49 42 53 20 3d 20 | 2d 6c 78 0a 58 52 41 4e |XLIBS = |-lx.XRAN|
|000047c0| 4c 49 42 3d 20 72 61 6e | 6c 69 62 0a 58 56 4f 49 |LIB= ran|lib.XVOI|
|000047d0| 44 3d 20 2d 44 56 4f 49 | 44 3d 69 6e 74 0a 58 4d |D= -DVOI|D=int.XM|
|000047e0| 4f 44 45 4c 3d 20 2d 4d | 6c 0a 58 4c 46 4c 41 47 |ODEL= -M|l.XLFLAG|
|000047f0| 53 3d 20 2d 46 20 38 30 | 30 30 0a 58 47 3d 0a 58 |S= -F 80|00.XG=.X|
|00004800| 0a 58 23 0a 58 23 42 53 | 44 0a 58 23 0a 58 23 4c |.X#.X#BS|D.X#.X#L|
|00004810| 49 42 53 20 3d 0a 58 23 | 52 41 4e 4c 49 42 3d 20 |IBS =.X#|RANLIB= |
|00004820| 72 61 6e 6c 69 62 0a 58 | 23 56 4f 49 44 3d 20 2d |ranlib.X|#VOID= -|
|00004830| 44 56 4f 49 44 3d 76 6f | 69 64 0a 58 23 4d 4f 44 |DVOID=vo|id.X#MOD|
|00004840| 45 4c 3d 0a 58 23 4c 46 | 4c 41 47 53 3d 0a 58 23 |EL=.X#LF|LAGS=.X#|
|00004850| 47 3d 2d 67 0a 58 0a 58 | 23 0a 58 23 48 50 55 58 |G=-g.X.X|#.X#HPUX|
|00004860| 0a 58 23 0a 58 23 4c 49 | 42 53 20 3d 20 2d 6c 42 |.X#.X#LI|BS = -lB|
|00004870| 53 44 0a 58 23 52 41 4e | 4c 49 42 3d 20 72 61 6e |SD.X#RAN|LIB= ran|
|00004880| 6c 69 62 0a 58 23 56 4f | 49 44 3d 20 2d 44 56 4f |lib.X#VO|ID= -DVO|
|00004890| 49 44 3d 76 6f 69 64 0a | 58 23 4d 4f 44 45 4c 3d |ID=void.|X#MODEL=|
|000048a0| 0a 58 23 47 3d 2d 67 0a | 58 0a 58 43 46 4c 41 47 |.X#G=-g.|X.XCFLAG|
|000048b0| 53 20 3d 20 2d 49 2e 20 | 2d 44 54 43 4c 5f 56 45 |S = -I. |-DTCL_VE|
|000048c0| 52 53 49 4f 4e 3d 5c 22 | 32 2e 31 5c 22 20 24 7b |RSION=\"|2.1\" ${|
|000048d0| 56 4f 49 44 7d 20 24 7b | 4d 4f 44 45 4c 7d 20 24 |VOID} ${|MODEL} $|
|000048e0| 7b 47 7d 20 24 7b 4d 45 | 4d 43 48 45 43 4b 7d 0a |{G} ${ME|MCHECK}.|
|000048f0| 58 0a 58 47 4c 4f 42 3d | 0a 58 23 20 47 4c 4f 42 |X.XGLOB=|.X# GLOB|
|00004900| 3d 67 6c 6f 62 2e 6f 20 | 74 63 6c 47 6c 6f 62 2e |=glob.o |tclGlob.|
|00004910| 6f 0a 58 0a 58 4f 42 4a | 53 20 3d 20 24 7b 47 4c |o.X.XOBJ|S = ${GL|
|00004920| 4f 42 7d 20 74 63 6c 42 | 61 73 69 63 2e 6f 20 74 |OB} tclB|asic.o t|
|00004930| 63 6c 43 6d 64 41 48 2e | 6f 20 74 63 6c 43 6d 64 |clCmdAH.|o tclCmd|
|00004940| 49 5a 2e 6f 20 74 63 6c | 45 78 70 72 2e 6f 20 5c |IZ.o tcl|Expr.o \|
|00004950| 0a 58 09 74 63 6c 50 72 | 6f 63 2e 6f 20 74 63 6c |.X.tclPr|oc.o tcl|
|00004960| 55 74 69 6c 2e 6f 0a 58 | 0a 58 53 54 52 45 41 4d |Util.o.X|.XSTREAM|
|00004970| 48 44 52 53 3d 20 73 74 | 72 65 61 6d 2e 68 20 68 |HDRS= st|ream.h h|
|00004980| 61 6e 64 6c 65 72 2e 68 | 0a 58 53 54 52 45 41 4d |andler.h|.XSTREAM|
|00004990| 4f 42 4a 53 3d 20 73 74 | 72 65 61 6d 2e 6f 20 68 |OBJS= st|ream.o h|
|000049a0| 61 6e 64 6c 65 72 2e 6f | 0a 58 0a 58 4c 49 42 4f |andler.o|.X.XLIBO|
|000049b0| 42 4a 53 20 3d 20 70 61 | 6e 69 63 2e 6f 20 73 74 |BJS = pa|nic.o st|
|000049c0| 72 65 72 72 6f 72 2e 6f | 20 73 74 72 74 6f 6c 2e |rerror.o| strtol.|
|000049d0| 6f 20 73 74 72 74 6f 75 | 6c 2e 6f 20 6c 5f 69 6e |o strtou|l.o l_in|
|000049e0| 69 74 2e 6f 20 5c 0a 58 | 09 6c 5f 69 6e 73 65 72 |it.o \.X|.l_inser|
|000049f0| 74 2e 6f 20 6c 5f 6c 5f | 69 6e 73 65 72 74 2e 6f |t.o l_l_|insert.o|
|00004a00| 20 6c 5f 72 65 6d 6f 76 | 65 2e 6f 20 63 6b 61 6c | l_remov|e.o ckal|
|00004a10| 6c 6f 63 2e 6f 20 61 72 | 67 76 2e 6f 0a 58 0a 58 |loc.o ar|gv.o.X.X|
|00004a20| 48 44 52 53 3d 6c 69 73 | 74 2e 68 20 73 70 72 69 |HDRS=lis|t.h spri|
|00004a30| 74 65 2e 68 20 73 74 64 | 6c 69 62 2e 68 20 73 74 |te.h std|lib.h st|
|00004a40| 72 69 6e 67 2e 68 20 74 | 63 6c 2e 68 20 74 63 6c |ring.h t|cl.h tcl|
|00004a50| 49 6e 74 2e 68 20 63 6b | 61 6c 6c 6f 63 2e 68 20 |Int.h ck|alloc.h |
|00004a60| 5c 0a 58 09 24 28 53 54 | 52 45 41 4d 48 44 52 53 |\.X.$(ST|REAMHDRS|
|00004a70| 29 0a 58 43 53 52 43 53 | 20 3d 20 67 6c 6f 62 2e |).XCSRCS| = glob.|
|00004a80| 63 20 74 63 6c 42 61 73 | 69 63 2e 63 20 74 63 6c |c tclBas|ic.c tcl|
|00004a90| 43 6d 64 41 48 2e 63 20 | 74 63 6c 43 6d 64 49 5a |CmdAH.c |tclCmdIZ|
|00004aa0| 2e 63 20 74 63 6c 45 78 | 70 72 2e 63 20 5c 0a 58 |.c tclEx|pr.c \.X|
|00004ab0| 09 74 63 6c 47 6c 6f 62 | 2e 63 20 74 63 6c 50 72 |.tclGlob|.c tclPr|
|00004ac0| 6f 63 2e 63 20 74 63 6c | 55 74 69 6c 2e 63 0a 58 |oc.c tcl|Util.c.X|
|00004ad0| 4c 49 42 53 52 43 53 3d | 20 24 7b 4c 49 42 4f 42 |LIBSRCS=| ${LIBOB|
|00004ae0| 4a 53 3a 2e 6f 3d 2e 63 | 7d 0a 58 53 54 52 45 41 |JS:.o=.c|}.XSTREA|
|00004af0| 4d 53 52 43 53 3d 20 24 | 7b 53 54 52 45 41 4d 4f |MSRCS= $|{STREAMO|
|00004b00| 42 4a 53 3a 2e 6f 3d 2e | 63 7d 0a 58 0a 58 74 63 |BJS:.o=.|c}.X.Xtc|
|00004b10| 6c 2e 61 3a 20 24 7b 4f | 42 4a 53 7d 20 24 7b 4c |l.a: ${O|BJS} ${L|
|00004b20| 49 42 4f 42 4a 53 7d 20 | 23 20 24 7b 53 54 52 45 |IBOBJS} |# ${STRE|
|00004b30| 41 4d 4f 42 4a 53 7d 0a | 58 09 72 6d 20 2d 66 20 |AMOBJS}.|X.rm -f |
|00004b40| 74 63 6c 2e 61 0a 58 09 | 61 72 20 63 72 20 74 63 |tcl.a.X.|ar cr tc|
|00004b50| 6c 2e 61 20 24 7b 4f 42 | 4a 53 7d 20 24 7b 4c 49 |l.a ${OB|JS} ${LI|
|00004b60| 42 4f 42 4a 53 7d 20 23 | 20 24 7b 53 54 52 45 41 |BOBJS} #| ${STREA|
|00004b70| 4d 4f 42 4a 53 7d 0a 58 | 09 24 7b 52 41 4e 4c 49 |MOBJS}.X|.${RANLI|
|00004b80| 42 7d 20 74 63 6c 2e 61 | 0a 58 0a 58 74 63 6c 3a |B} tcl.a|.X.Xtcl:|
|00004b90| 20 6d 61 69 6e 2e 6f 20 | 74 63 6c 2e 61 20 24 7b | main.o |tcl.a ${|
|00004ba0| 53 54 52 45 41 4d 4f 42 | 4a 53 7d 0a 58 09 63 63 |STREAMOB|JS}.X.cc|
|00004bb0| 20 24 7b 43 46 4c 41 47 | 53 7d 20 24 7b 4c 46 4c | ${CFLAG|S} ${LFL|
|00004bc0| 41 47 53 7d 20 6d 61 69 | 6e 2e 6f 20 24 7b 53 54 |AGS} mai|n.o ${ST|
|00004bd0| 52 45 41 4d 4f 42 4a 53 | 7d 20 74 63 6c 2e 61 20 |REAMOBJS|} tcl.a |
|00004be0| 24 7b 4c 49 42 53 7d 20 | 2d 6f 20 74 63 6c 0a 58 |${LIBS} |-o tcl.X|
|00004bf0| 0a 58 74 63 6c 54 65 73 | 74 3a 20 74 63 6c 54 65 |.XtclTes|t: tclTe|
|00004c00| 73 74 2e 6f 20 74 63 6c | 2e 61 20 24 7b 53 54 52 |st.o tcl|.a ${STR|
|00004c10| 45 41 4d 4f 42 4a 53 7d | 0a 58 09 63 63 20 24 7b |EAMOBJS}|.X.cc ${|
|00004c20| 43 46 4c 41 47 53 7d 20 | 24 7b 4c 46 4c 41 47 53 |CFLAGS} |${LFLAGS|
|00004c30| 7d 20 74 63 6c 54 65 73 | 74 2e 6f 20 24 7b 53 54 |} tclTes|t.o ${ST|
|00004c40| 52 45 41 4d 4f 42 4a 53 | 7d 20 74 63 6c 2e 61 20 |REAMOBJS|} tcl.a |
|00004c50| 24 7b 4c 49 42 53 7d 20 | 2d 6f 20 74 63 6c 54 65 |${LIBS} |-o tclTe|
|00004c60| 73 74 0a 58 0a 58 63 6c | 65 61 6e 3a 0a 58 09 72 |st.X.Xcl|ean:.X.r|
|00004c70| 6d 20 2d 66 20 24 7b 4f | 42 4a 53 7d 20 24 7b 4c |m -f ${O|BJS} ${L|
|00004c80| 49 42 4f 42 4a 53 7d 20 | 74 63 6c 2e 61 20 74 63 |IBOBJS} |tcl.a tc|
|00004c90| 6c 54 65 73 74 2e 6f 20 | 24 7b 53 54 52 45 41 4d |lTest.o |${STREAM|
|00004ca0| 4f 42 4a 53 7d 20 6d 61 | 69 6e 2e 6f 0a 58 09 72 |OBJS} ma|in.o.X.r|
|00004cb0| 6d 20 2d 66 20 50 61 72 | 74 3f 3f 20 4d 41 4e 49 |m -f Par|t?? MANI|
|00004cc0| 46 45 53 54 7e 20 74 63 | 6c 54 65 73 74 20 74 63 |FEST~ tc|lTest tc|
|00004cd0| 6c 0a 58 0a 58 41 4c 4c | 53 4f 55 52 43 45 3d 20 |l.X.XALL|SOURCE= |
|00004ce0| 74 63 6c 54 65 73 74 2e | 63 20 24 28 48 44 52 53 |tclTest.|c $(HDRS|
|00004cf0| 29 20 24 28 43 53 52 43 | 53 29 20 24 28 4c 49 42 |) $(CSRC|S) $(LIB|
|00004d00| 53 52 43 53 29 20 24 28 | 53 54 52 45 41 4d 53 52 |SRCS) $(|STREAMSR|
|00004d10| 43 53 29 20 6d 61 69 6e | 2e 63 0a 58 41 4c 4c 46 |CS) main|.c.XALLF|
|00004d20| 49 4c 45 53 3d 20 4d 61 | 6b 65 66 69 6c 65 20 52 |ILES= Ma|kefile R|
|00004d30| 45 41 44 4d 45 20 73 74 | 72 65 61 6d 2e 35 20 24 |EADME st|ream.5 $|
|00004d40| 28 41 4c 4c 53 4f 55 52 | 43 45 29 0a 58 0a 58 74 |(ALLSOUR|CE).X.Xt|
|00004d50| 63 6c 2e 73 68 61 72 3a | 20 24 28 41 4c 4c 46 49 |cl.shar:| $(ALLFI|
|00004d60| 4c 45 53 29 0a 58 09 73 | 68 61 72 20 24 28 41 4c |LES).X.s|har $(AL|
|00004d70| 4c 46 49 4c 45 53 29 20 | 3e 20 74 63 6c 2e 73 68 |LFILES) |> tcl.sh|
|00004d80| 61 72 0a 58 0a 58 4d 41 | 4e 49 46 45 53 54 3a 20 |ar.X.XMA|NIFEST: |
|00004d90| 24 28 41 4c 4c 46 49 4c | 45 53 29 0a 58 09 73 68 |$(ALLFIL|ES).X.sh|
|00004da0| 20 2d 63 20 27 69 66 20 | 5b 20 2d 72 20 4d 41 4e | -c 'if |[ -r MAN|
|00004db0| 49 46 45 53 54 20 5d 20 | 3b 5c 0a 58 09 09 74 68 |IFEST ] |;\.X..th|
|00004dc0| 65 6e 20 6d 61 6b 65 6b | 69 74 20 2d 6d 20 3b 5c |en makek|it -m ;\|
|00004dd0| 0a 58 09 09 65 6c 73 65 | 20 6d 61 6b 65 6b 69 74 |.X..else| makekit|
|00004de0| 20 2d 6f 4d 41 4e 49 46 | 45 53 54 20 24 28 41 4c | -oMANIF|EST $(AL|
|00004df0| 4c 46 49 4c 45 53 29 20 | 3b 5c 0a 58 09 66 69 27 |LFILES) |;\.X.fi'|
|00004e00| 0a 58 0a 58 6c 69 6e 74 | 3a 20 24 28 41 4c 4c 53 |.X.Xlint|: $(ALLS|
|00004e10| 4f 55 52 43 45 29 0a 58 | 09 6c 69 6e 74 20 2d 49 |OURCE).X|.lint -I|
|00004e20| 2e 20 24 28 41 4c 4c 53 | 4f 55 52 43 45 29 20 3e |. $(ALLS|OURCE) >|
|00004e30| 20 74 63 6c 2e 6c 69 6e | 74 20 32 3e 26 31 0a 45 | tcl.lin|t 2>&1.E|
|00004e40| 4e 44 5f 4f 46 5f 46 49 | 4c 45 0a 69 66 20 74 65 |ND_OF_FI|LE.if te|
|00004e50| 73 74 20 31 38 38 37 20 | 2d 6e 65 20 60 77 63 20 |st 1887 |-ne `wc |
|00004e60| 2d 63 20 3c 27 4d 61 6b | 65 66 69 6c 65 27 60 3b |-c <'Mak|efile'`;|
|00004e70| 20 74 68 65 6e 0a 20 20 | 20 20 65 63 68 6f 20 73 | then. | echo s|
|00004e80| 68 61 72 3a 20 5c 22 27 | 4d 61 6b 65 66 69 6c 65 |har: \"'|Makefile|
|00004e90| 27 5c 22 20 75 6e 70 61 | 63 6b 65 64 20 77 69 74 |'\" unpa|cked wit|
|00004ea0| 68 20 77 72 6f 6e 67 20 | 73 69 7a 65 21 0a 66 69 |h wrong |size!.fi|
|00004eb0| 0a 23 20 65 6e 64 20 6f | 66 20 27 4d 61 6b 65 66 |.# end o|f 'Makef|
|00004ec0| 69 6c 65 27 0a 66 69 0a | 69 66 20 74 65 73 74 20 |ile'.fi.|if test |
|00004ed0| 2d 66 20 27 6d 61 69 6e | 2e 63 27 20 2d 61 20 22 |-f 'main|.c' -a "|
|00004ee0| 24 7b 31 7d 22 20 21 3d | 20 22 2d 63 22 20 3b 20 |${1}" !=| "-c" ; |
|00004ef0| 74 68 65 6e 20 0a 20 20 | 65 63 68 6f 20 73 68 61 |then . |echo sha|
|00004f00| 72 3a 20 57 69 6c 6c 20 | 6e 6f 74 20 63 6c 6f 62 |r: Will |not clob|
|00004f10| 62 65 72 20 65 78 69 73 | 74 69 6e 67 20 66 69 6c |ber exis|ting fil|
|00004f20| 65 20 5c 22 27 6d 61 69 | 6e 2e 63 27 5c 22 0a 65 |e \"'mai|n.c'\".e|
|00004f30| 6c 73 65 0a 65 63 68 6f | 20 73 68 61 72 3a 20 45 |lse.echo| shar: E|
|00004f40| 78 74 72 61 63 74 69 6e | 67 20 5c 22 27 6d 61 69 |xtractin|g \"'mai|
|00004f50| 6e 2e 63 27 5c 22 20 5c | 28 33 38 31 32 20 63 68 |n.c'\" \|(3812 ch|
|00004f60| 61 72 61 63 74 65 72 73 | 5c 29 0a 73 65 64 20 22 |aracters|\).sed "|
|00004f70| 73 2f 5e 58 2f 2f 22 20 | 3e 27 6d 61 69 6e 2e 63 |s/^X//" |>'main.c|
|00004f80| 27 20 3c 3c 27 45 4e 44 | 5f 4f 46 5f 46 49 4c 45 |' <<'END|_OF_FILE|
|00004f90| 27 0a 58 2f 2a 0a 58 20 | 2a 20 54 63 6c 20 63 6f |'.X/*.X |* Tcl co|
|00004fa0| 6d 6d 61 6e 64 20 2d 2d | 20 70 72 6f 76 69 64 65 |mmand --| provide|
|00004fb0| 20 61 20 54 63 6c 20 43 | 4c 49 2d 63 6f 6d 6d 61 | a Tcl C|LI-comma|
|00004fc0| 6e 64 20 77 69 74 68 20 | 61 77 6b 2d 6c 69 6b 65 |nd with |awk-like|
|00004fd0| 20 63 6f 6d 6d 61 6e 64 | 20 73 79 6e 74 61 78 0a | command| syntax.|
|00004fe0| 58 20 2a 0a 58 20 2a 20 | 43 6f 70 79 72 69 67 68 |X *.X * |Copyrigh|
|00004ff0| 74 20 31 39 39 30 20 48 | 61 63 6b 65 72 63 6f 72 |t 1990 H|ackercor|
|00005000| 70 0a 58 20 2a 20 50 65 | 72 6d 69 73 73 69 6f 6e |p.X * Pe|rmission|
|00005010| 20 74 6f 20 75 73 65 2c | 20 63 6f 70 79 2c 20 6d | to use,| copy, m|
|00005020| 6f 64 69 66 79 2c 20 61 | 6e 64 20 64 69 73 74 72 |odify, a|nd distr|
|00005030| 69 62 75 74 65 20 74 68 | 69 73 0a 58 20 2a 20 73 |ibute th|is.X * s|
|00005040| 6f 66 74 77 61 72 65 20 | 61 6e 64 20 69 74 73 20 |oftware |and its |
|00005050| 64 6f 63 75 6d 65 6e 74 | 61 74 69 6f 6e 20 66 6f |document|ation fo|
|00005060| 72 20 61 6e 79 20 70 75 | 72 70 6f 73 65 20 61 6e |r any pu|rpose an|
|00005070| 64 20 77 69 74 68 6f 75 | 74 0a 58 20 2a 20 66 65 |d withou|t.X * fe|
|00005080| 65 20 69 73 20 68 65 72 | 65 62 79 20 67 72 61 6e |e is her|eby gran|
|00005090| 74 65 64 2c 20 70 72 6f | 76 69 64 65 64 20 74 68 |ted, pro|vided th|
|000050a0| 61 74 20 74 68 65 20 61 | 62 6f 76 65 20 63 6f 70 |at the a|bove cop|
|000050b0| 79 72 69 67 68 74 0a 58 | 20 2a 20 6e 6f 74 69 63 |yright.X| * notic|
|000050c0| 65 20 61 70 70 65 61 72 | 20 69 6e 20 61 6c 6c 20 |e appear| in all |
|000050d0| 63 6f 70 69 65 73 2e 20 | 20 48 61 63 6b 65 72 63 |copies. | Hackerc|
|000050e0| 6f 72 70 20 6d 61 6b 65 | 73 20 6e 6f 0a 58 20 2a |orp make|s no.X *|
|000050f0| 20 72 65 70 72 65 73 65 | 6e 74 61 74 69 6f 6e 73 | represe|ntations|
|00005100| 20 61 62 6f 75 74 20 74 | 68 65 20 73 75 69 74 61 | about t|he suita|
|00005110| 62 69 6c 69 74 79 20 6f | 66 20 74 68 69 73 20 73 |bility o|f this s|
|00005120| 6f 66 74 77 61 72 65 20 | 66 6f 72 0a 58 20 2a 20 |oftware |for.X * |
|00005130| 61 6e 79 20 70 75 72 70 | 6f 73 65 2e 20 20 49 74 |any purp|ose. It|
|00005140| 20 69 73 20 70 72 6f 76 | 69 64 65 64 20 22 61 73 | is prov|ided "as|
|00005150| 20 69 73 22 20 77 69 74 | 68 6f 75 74 20 65 78 70 | is" wit|hout exp|
|00005160| 72 65 73 73 20 6f 72 0a | 58 20 2a 20 69 6d 70 6c |ress or.|X * impl|
|00005170| 69 65 64 20 77 61 72 72 | 61 6e 74 79 2e 0a 58 20 |ied warr|anty..X |
|00005180| 2a 2f 0a 58 0a 58 23 69 | 6e 63 6c 75 64 65 20 3c |*/.X.X#i|nclude <|
|00005190| 73 74 64 69 6f 2e 68 3e | 0a 58 23 69 6e 63 6c 75 |stdio.h>|.X#inclu|
|000051a0| 64 65 20 3c 73 74 64 6c | 69 62 2e 68 3e 0a 58 23 |de <stdl|ib.h>.X#|
|000051b0| 69 6e 63 6c 75 64 65 20 | 3c 74 63 6c 2e 68 3e 0a |include |<tcl.h>.|
|000051c0| 58 0a 58 76 6f 69 64 0a | 58 20 20 20 20 20 20 20 |X.Xvoid.|X |
|000051d0| 20 70 72 69 6e 74 5f 72 | 65 73 75 6c 74 28 66 70 | print_r|esult(fp|
|000051e0| 2c 20 72 65 74 75 72 6e | 76 61 6c 2c 20 72 65 73 |, return|val, res|
|000051f0| 75 6c 74 5f 74 65 78 74 | 29 0a 58 46 49 4c 45 20 |ult_text|).XFILE |
|00005200| 20 20 2a 66 70 3b 0a 58 | 69 6e 74 20 20 20 20 20 | *fp;.X|int |
|00005210| 72 65 74 75 72 6e 76 61 | 6c 3b 0a 58 63 68 61 72 |returnva|l;.Xchar|
|00005220| 20 20 20 2a 72 65 73 75 | 6c 74 5f 74 65 78 74 3b | *resu|lt_text;|
|00005230| 0a 58 7b 0a 58 09 69 66 | 20 28 72 65 74 75 72 6e |.X{.X.if| (return|
|00005240| 76 61 6c 20 3d 3d 20 54 | 43 4c 5f 4f 4b 29 0a 58 |val == T|CL_OK).X|
|00005250| 09 7b 0a 58 09 09 69 66 | 20 28 72 65 73 75 6c 74 |.{.X..if| (result|
|00005260| 5f 74 65 78 74 20 26 26 | 20 2a 72 65 73 75 6c 74 |_text &&| *result|
|00005270| 5f 74 65 78 74 20 21 3d | 20 30 29 0a 58 09 09 7b |_text !=| 0).X..{|
|00005280| 0a 58 09 09 09 66 70 72 | 69 6e 74 66 28 66 70 2c |.X...fpr|intf(fp,|
|00005290| 20 22 25 73 5c 6e 22 2c | 20 72 65 73 75 6c 74 5f | "%s\n",| result_|
|000052a0| 74 65 78 74 29 3b 0a 58 | 09 09 7d 0a 58 09 7d 0a |text);.X|..}.X.}.|
|000052b0| 58 09 65 6c 73 65 0a 58 | 09 7b 0a 58 09 09 66 70 |X.else.X|.{.X..fp|
|000052c0| 72 69 6e 74 66 28 73 74 | 64 65 72 72 2c 20 22 25 |rintf(st|derr, "%|
|000052d0| 73 3a 20 25 73 5c 6e 22 | 2c 0a 58 09 09 20 20 20 |s: %s\n"|,.X.. |
|000052e0| 20 20 20 28 72 65 74 75 | 72 6e 76 61 6c 20 3d 3d | (retu|rnval ==|
|000052f0| 20 54 43 4c 5f 45 52 52 | 4f 52 29 20 3f 20 22 45 | TCL_ERR|OR) ? "E|
|00005300| 72 72 6f 72 22 20 3a 20 | 22 42 61 64 20 72 65 74 |rror" : |"Bad ret|
|00005310| 75 72 6e 20 63 6f 64 65 | 22 2c 0a 58 09 09 09 72 |urn code|",.X...r|
|00005320| 65 73 75 6c 74 5f 74 65 | 78 74 29 3b 0a 58 09 7d |esult_te|xt);.X.}|
|00005330| 0a 58 7d 0a 58 0a 58 69 | 6e 74 0a 58 20 20 20 20 |.X}.X.Xi|nt.X |
|00005340| 20 20 20 20 63 6d 64 47 | 65 74 45 6e 76 28 63 6c | cmdG|etEnv(cl|
|00005350| 69 65 6e 74 44 61 74 61 | 2c 20 69 6e 74 65 72 70 |ientData|, interp|
|00005360| 2c 20 61 72 67 63 2c 20 | 61 72 67 76 29 0a 58 43 |, argc, |argv).XC|
|00005370| 6c 69 65 6e 74 44 61 74 | 61 20 63 6c 69 65 6e 74 |lientDat|a client|
|00005380| 44 61 74 61 3b 09 09 20 | 20 20 20 20 20 20 2f 2a |Data;.. | /*|
|00005390| 20 4e 6f 74 20 75 73 65 | 64 2e 20 2a 2f 0a 58 54 | Not use|d. */.XT|
|000053a0| 63 6c 5f 49 6e 74 65 72 | 70 20 2a 69 6e 74 65 72 |cl_Inter|p *inter|
|000053b0| 70 3b 0a 58 69 6e 74 20 | 20 20 20 20 61 72 67 63 |p;.Xint | argc|
|000053c0| 3b 0a 58 69 6e 74 20 20 | 20 20 2a 61 72 67 76 3b |;.Xint | *argv;|
|000053d0| 0a 58 7b 0a 58 09 63 68 | 61 72 20 20 20 2a 67 65 |.X{.X.ch|ar *ge|
|000053e0| 74 65 6e 76 28 29 3b 0a | 58 0a 58 09 69 66 20 28 |tenv();.|X.X.if (|
|000053f0| 61 72 67 63 20 21 3d 20 | 32 29 0a 58 09 7b 0a 58 |argc != |2).X.{.X|
|00005400| 09 09 73 70 72 69 6e 74 | 66 28 69 6e 74 65 72 70 |..sprint|f(interp|
|00005410| 2d 3e 72 65 73 75 6c 74 | 2c 20 22 77 72 6f 6e 67 |->result|, "wrong|
|00005420| 20 23 20 61 72 67 73 3a | 20 20 73 68 6f 75 6c 64 | # args:| should|
|00005430| 20 62 65 20 5c 22 25 2e | 35 30 73 20 6e 61 6d 65 | be \"%.|50s name|
|00005440| 5c 22 22 2c 0a 58 09 09 | 09 61 72 67 76 5b 30 5d |\"",.X..|.argv[0]|
|00005450| 29 3b 0a 58 09 09 72 65 | 74 75 72 6e 20 54 43 4c |);.X..re|turn TCL|
|00005460| 5f 45 52 52 4f 52 3b 0a | 58 09 7d 0a 58 09 54 63 |_ERROR;.|X.}.X.Tc|
|00005470| 6c 5f 52 65 74 75 72 6e | 28 69 6e 74 65 72 70 2c |l_Return|(interp,|
|00005480| 20 67 65 74 65 6e 76 28 | 61 72 67 76 5b 31 5d 29 | getenv(|argv[1])|
|00005490| 2c 20 54 43 4c 5f 53 54 | 41 54 49 43 29 3b 0a 58 |, TCL_ST|ATIC);.X|
|000054a0| 09 72 65 74 75 72 6e 20 | 54 43 4c 5f 4f 4b 3b 0a |.return |TCL_OK;.|
|000054b0| 58 7d 0a 58 0a 58 69 6e | 74 0a 58 20 20 20 20 20 |X}.X.Xin|t.X |
|000054c0| 20 20 20 6d 61 69 6e 28 | 61 72 67 63 2c 20 61 72 | main(|argc, ar|
|000054d0| 67 76 29 0a 58 69 6e 74 | 20 20 20 20 20 61 72 67 |gv).Xint| arg|
|000054e0| 63 3b 0a 58 63 68 61 72 | 20 20 2a 2a 61 72 67 76 |c;.Xchar| **argv|
|000054f0| 3b 0a 58 7b 0a 58 09 54 | 63 6c 5f 49 6e 74 65 72 |;.X{.X.T|cl_Inter|
|00005500| 70 20 2a 69 6e 74 65 72 | 70 3b 0a 58 09 69 6e 74 |p *inter|p;.X.int|
|00005510| 20 20 20 20 20 72 65 73 | 75 6c 74 3b 0a 58 0a 58 | res|ult;.X.X|
|00005520| 09 69 6e 74 65 72 70 20 | 3d 20 54 63 6c 5f 43 72 |.interp |= Tcl_Cr|
|00005530| 65 61 74 65 49 6e 74 65 | 72 70 28 29 3b 0a 58 09 |eateInte|rp();.X.|
|00005540| 54 63 6c 5f 43 72 65 61 | 74 65 43 6f 6d 6d 61 6e |Tcl_Crea|teComman|
|00005550| 64 28 69 6e 74 65 72 70 | 2c 20 22 67 65 74 65 6e |d(interp|, "geten|
|00005560| 76 22 2c 20 63 6d 64 47 | 65 74 45 6e 76 2c 20 28 |v", cmdG|etEnv, (|
|00005570| 43 6c 69 65 6e 74 44 61 | 74 61 29 20 4e 55 4c 4c |ClientDa|ta) NULL|
|00005580| 2c 0a 58 09 09 09 20 20 | 28 76 6f 69 64 20 28 2a |,.X... |(void (*|
|00005590| 29 28 29 29 20 4e 55 4c | 4c 29 3b 0a 58 09 73 74 |)()) NUL|L);.X.st|
|000055a0| 72 65 61 6d 5f 69 6e 69 | 74 28 69 6e 74 65 72 70 |ream_ini|t(interp|
|000055b0| 29 3b 0a 58 0a 58 09 2f | 2a 0a 58 09 20 2a 20 69 |);.X.X./|*.X. * i|
|000055c0| 66 20 6e 6f 20 61 72 67 | 75 6d 65 6e 74 73 2c 20 |f no arg|uments, |
|000055d0| 67 69 76 65 20 74 68 65 | 20 75 73 65 72 20 61 20 |give the| user a |
|000055e0| 54 63 6c 20 63 6f 6d 6d | 61 6e 64 20 70 72 6f 6d |Tcl comm|and prom|
|000055f0| 70 74 0a 58 09 20 2a 20 | 0a 58 09 20 2a 20 69 66 |pt.X. * |.X. * if|
|00005600| 20 66 69 72 73 74 20 61 | 72 67 20 69 73 20 22 2d | first a|rg is "-|
|00005610| 66 22 2c 20 74 68 65 20 | 66 6f 6c 6c 6f 77 69 6e |f", the |followin|
|00005620| 67 20 61 72 67 20 69 73 | 20 61 20 66 69 6c 65 20 |g arg is| a file |
|00005630| 6e 61 6d 65 20 74 6f 20 | 64 6f 20 61 0a 58 09 20 |name to |do a.X. |
|00005640| 2a 20 22 73 6f 75 72 63 | 65 22 20 63 6f 6d 6d 61 |* "sourc|e" comma|
|00005650| 6e 64 20 6f 6e 20 28 74 | 6f 20 67 65 74 20 54 63 |nd on (t|o get Tc|
|00005660| 6c 20 74 6f 20 6c 6f 61 | 64 20 74 68 65 20 66 69 |l to loa|d the fi|
|00005670| 6c 65 29 0a 58 09 20 2a | 20 0a 58 09 20 2a 20 61 |le).X. *| .X. * a|
|00005680| 72 67 76 20 69 73 20 73 | 65 74 20 74 6f 20 62 65 |rgv is s|et to be|
|00005690| 20 61 20 6c 69 73 74 20 | 6f 66 20 61 72 67 75 6d | a list |of argum|
|000056a0| 65 6e 74 73 20 74 68 61 | 74 20 66 6f 6c 6c 6f 77 |ents tha|t follow|
|000056b0| 20 74 68 65 20 66 69 6c | 65 6e 61 6d 65 20 6f 72 | the fil|ename or|
|000056c0| 20 61 6e 0a 58 09 20 2a | 20 65 6d 70 74 79 20 73 | an.X. *| empty s|
|000056d0| 74 72 69 6e 67 20 69 66 | 20 74 68 65 72 65 20 61 |tring if| there a|
|000056e0| 72 65 20 6e 6f 6e 65 0a | 58 09 20 2a 20 0a 58 09 |re none.|X. * .X.|
|000056f0| 20 2a 20 69 66 20 74 68 | 65 72 65 20 61 72 67 75 | * if th|ere argu|
|00005700| 6d 65 6e 74 73 20 62 75 | 74 20 74 68 65 72 65 20 |ments bu|t there |
|00005710| 77 61 73 6e 27 74 20 61 | 20 2d 66 2c 20 74 68 65 |wasn't a| -f, the|
|00005720| 79 20 61 72 65 20 65 76 | 61 6c 75 61 74 65 64 20 |y are ev|aluated |
|00005730| 61 73 20 61 0a 58 09 20 | 2a 20 63 6f 6d 6d 61 6e |as a.X. |* comman|
|00005740| 64 20 62 79 20 74 68 65 | 20 74 63 6c 20 69 6e 74 |d by the| tcl int|
|00005750| 65 72 70 72 65 74 65 72 | 0a 58 09 20 2a 2f 0a 58 |erpreter|.X. */.X|
|00005760| 0a 58 09 69 66 20 28 61 | 72 67 63 20 3d 3d 20 31 |.X.if (a|rgc == 1|
|00005770| 29 0a 58 09 09 63 6f 6d | 6d 61 6e 64 6c 6f 6f 70 |).X..com|mandloop|
|00005780| 28 69 6e 74 65 72 70 2c | 20 73 74 64 69 6e 2c 20 |(interp,| stdin, |
|00005790| 73 74 64 6f 75 74 2c 20 | 31 29 3b 0a 58 09 65 6c |stdout, |1);.X.el|
|000057a0| 73 65 20 69 66 20 28 28 | 61 72 67 63 20 3e 3d 20 |se if ((|argc >= |
|000057b0| 33 29 20 26 26 20 28 73 | 74 72 63 6d 70 28 61 72 |3) && (s|trcmp(ar|
|000057c0| 67 76 5b 31 5d 2c 20 22 | 2d 66 22 29 20 3d 3d 20 |gv[1], "|-f") == |
|000057d0| 30 29 29 0a 58 09 7b 0a | 58 09 09 46 49 4c 45 20 |0)).X.{.|X..FILE |
|000057e0| 2a 66 70 3b 0a 58 0a 58 | 09 09 69 66 20 28 61 72 |*fp;.X.X|..if (ar|
|000057f0| 67 63 20 3e 20 33 29 0a | 58 09 09 7b 0a 58 09 09 |gc > 3).|X..{.X..|
|00005800| 09 63 68 61 72 20 20 20 | 2a 61 72 67 73 3b 0a 58 |.char |*args;.X|
|00005810| 0a 58 09 09 09 61 72 67 | 73 20 3d 20 54 63 6c 5f |.X...arg|s = Tcl_|
|00005820| 4d 65 72 67 65 28 61 72 | 67 63 20 2d 20 33 2c 20 |Merge(ar|gc - 3, |
|00005830| 26 61 72 67 76 5b 33 5d | 29 3b 0a 58 09 09 09 54 |&argv[3]|);.X...T|
|00005840| 63 6c 5f 53 65 74 56 61 | 72 28 69 6e 74 65 72 70 |cl_SetVa|r(interp|
|00005850| 2c 20 22 61 72 67 76 22 | 2c 20 61 72 67 73 2c 20 |, "argv"|, args, |
|00005860| 31 29 3b 0a 58 09 09 09 | 63 6b 66 72 65 65 28 61 |1);.X...|ckfree(a|
|00005870| 72 67 73 29 3b 0a 58 09 | 09 7d 0a 58 0a 58 09 09 |rgs);.X.|.}.X.X..|
|00005880| 66 70 20 3d 20 66 6f 70 | 65 6e 28 61 72 67 76 5b |fp = fop|en(argv[|
|00005890| 32 5d 2c 20 22 72 22 29 | 3b 0a 58 09 09 69 66 28 |2], "r")|;.X..if(|
|000058a0| 21 66 70 29 20 7b 0a 58 | 09 09 09 70 65 72 72 6f |!fp) {.X|...perro|
|000058b0| 72 28 61 72 67 76 5b 32 | 5d 29 3b 0a 58 09 09 7d |r(argv[2|]);.X..}|
|000058c0| 20 65 6c 73 65 20 7b 0a | 58 09 09 09 63 6f 6d 6d | else {.|X...comm|
|000058d0| 61 6e 64 6c 6f 6f 70 28 | 69 6e 74 65 72 70 2c 20 |andloop(|interp, |
|000058e0| 66 70 2c 20 73 74 64 6f | 75 74 2c 20 30 29 3b 0a |fp, stdo|ut, 0);.|
|000058f0| 58 09 09 09 66 63 6c 6f | 73 65 28 66 70 29 3b 0a |X...fclo|se(fp);.|
|00005900| 58 09 09 7d 0a 58 09 7d | 0a 58 09 65 6c 73 65 0a |X..}.X.}|.X.else.|
|00005910| 58 09 7b 0a 58 09 09 69 | 66 20 28 61 72 67 63 20 |X.{.X..i|f (argc |
|00005920| 3e 20 32 29 0a 58 09 09 | 7b 0a 58 09 09 09 63 68 |> 2).X..|{.X...ch|
|00005930| 61 72 20 20 20 2a 61 72 | 67 73 3b 0a 58 0a 58 09 |ar *ar|gs;.X.X.|
|00005940| 09 09 61 72 67 73 20 3d | 20 54 63 6c 5f 4d 65 72 |..args =| Tcl_Mer|
|00005950| 67 65 28 61 72 67 63 20 | 2d 20 32 2c 20 26 61 72 |ge(argc |- 2, &ar|
|00005960| 67 76 5b 32 5d 29 3b 0a | 58 09 09 09 54 63 6c 5f |gv[2]);.|X...Tcl_|
|00005970| 53 65 74 56 61 72 28 69 | 6e 74 65 72 70 2c 20 22 |SetVar(i|nterp, "|
|00005980| 61 72 67 76 22 2c 20 61 | 72 67 73 2c 20 31 29 3b |argv", a|rgs, 1);|
|00005990| 0a 58 09 09 09 63 6b 66 | 72 65 65 28 61 72 67 73 |.X...ckf|ree(args|
|000059a0| 29 3b 0a 58 09 09 7d 0a | 58 0a 58 09 09 72 65 73 |);.X..}.|X.X..res|
|000059b0| 75 6c 74 20 3d 20 54 63 | 6c 5f 45 76 61 6c 28 69 |ult = Tc|l_Eval(i|
|000059c0| 6e 74 65 72 70 2c 20 61 | 72 67 76 5b 31 5d 2c 20 |nterp, a|rgv[1], |
|000059d0| 30 2c 20 28 63 68 61 72 | 20 2a 2a 29 4e 55 4c 4c |0, (char| **)NULL|
|000059e0| 29 3b 0a 58 09 09 70 72 | 69 6e 74 5f 72 65 73 75 |);.X..pr|int_resu|
|000059f0| 6c 74 28 73 74 64 6f 75 | 74 2c 20 72 65 73 75 6c |lt(stdou|t, resul|
|00005a00| 74 2c 20 69 6e 74 65 72 | 70 2d 3e 72 65 73 75 6c |t, inter|p->resul|
|00005a10| 74 29 3b 0a 58 09 7d 0a | 58 0a 58 09 54 63 6c 5f |t);.X.}.|X.X.Tcl_|
|00005a20| 44 65 6c 65 74 65 49 6e | 74 65 72 70 28 69 6e 74 |DeleteIn|terp(int|
|00005a30| 65 72 70 29 3b 0a 58 09 | 65 78 69 74 28 30 29 3b |erp);.X.|exit(0);|
|00005a40| 0a 58 7d 0a 58 0a 58 63 | 6f 6d 6d 61 6e 64 6c 6f |.X}.X.Xc|ommandlo|
|00005a50| 6f 70 28 69 6e 74 65 72 | 70 2c 20 69 6e 2c 20 6f |op(inter|p, in, o|
|00005a60| 75 74 2c 20 69 6e 74 65 | 72 61 63 74 69 76 65 29 |ut, inte|ractive)|
|00005a70| 0a 58 54 63 6c 5f 49 6e | 74 65 72 70 20 2a 69 6e |.XTcl_In|terp *in|
|00005a80| 74 65 72 70 3b 0a 58 46 | 49 4c 45 20 20 20 2a 69 |terp;.XF|ILE *i|
|00005a90| 6e 3b 0a 58 46 49 4c 45 | 20 20 20 2a 6f 75 74 3b |n;.XFILE| *out;|
|00005aa0| 0a 58 69 6e 74 20 20 20 | 20 20 69 6e 74 65 72 61 |.Xint | intera|
|00005ab0| 63 74 69 76 65 3b 0a 58 | 7b 0a 58 09 63 68 61 72 |ctive;.X|{.X.char|
|00005ac0| 20 2a 63 6d 64 3b 0a 58 | 09 63 68 61 72 20 2a 70 | *cmd;.X|.char *p|
|00005ad0| 3b 0a 58 09 72 65 67 69 | 73 74 65 72 20 63 68 61 |;.X.regi|ster cha|
|00005ae0| 72 20 2a 70 32 3b 0a 58 | 09 69 6e 74 20 20 20 20 |r *p2;.X|.int |
|00005af0| 20 63 2c 20 69 2c 20 72 | 65 73 75 6c 74 3b 0a 58 | c, i, r|esult;.X|
|00005b00| 0a 58 09 63 6d 64 20 3d | 20 28 63 68 61 72 20 2a |.X.cmd =| (char *|
|00005b10| 29 63 6b 61 6c 6c 6f 63 | 28 33 32 37 36 37 29 3b |)ckalloc|(32767);|
|00005b20| 0a 58 09 77 68 69 6c 65 | 20 28 31 29 0a 58 09 7b |.X.while| (1).X.{|
|00005b30| 0a 58 09 09 69 66 20 28 | 69 6e 74 65 72 61 63 74 |.X..if (|interact|
|00005b40| 69 76 65 29 0a 58 09 09 | 7b 0a 58 09 09 09 63 6c |ive).X..|{.X...cl|
|00005b50| 65 61 72 65 72 72 28 69 | 6e 29 3b 0a 58 09 09 09 |earerr(i|n);.X...|
|00005b60| 66 70 75 74 73 28 22 25 | 20 22 2c 20 6f 75 74 29 |fputs("%| ", out)|
|00005b70| 3b 0a 58 09 09 09 66 66 | 6c 75 73 68 28 6f 75 74 |;.X...ff|lush(out|
|00005b80| 29 3b 0a 58 09 09 7d 0a | 58 09 09 70 20 3d 20 63 |);.X..}.|X..p = c|
|00005b90| 6d 64 3b 0a 58 09 09 77 | 68 69 6c 65 20 28 31 29 |md;.X..w|hile (1)|
|00005ba0| 0a 58 09 09 7b 0a 58 09 | 09 09 63 20 3d 20 67 65 |.X..{.X.|..c = ge|
|00005bb0| 74 63 28 69 6e 29 3b 0a | 58 09 09 09 69 66 20 28 |tc(in);.|X...if (|
|00005bc0| 63 20 3d 3d 20 45 4f 46 | 29 0a 58 09 09 09 7b 0a |c == EOF|).X...{.|
|00005bd0| 58 09 09 09 09 69 66 20 | 28 70 20 3d 3d 20 63 6d |X....if |(p == cm|
|00005be0| 64 29 0a 58 09 09 09 09 | 7b 0a 58 09 09 09 09 09 |d).X....|{.X.....|
|00005bf0| 67 6f 74 6f 20 65 6e 64 | 4f 66 46 69 6c 65 3b 0a |goto end|OfFile;.|
|00005c00| 58 09 09 09 09 7d 0a 58 | 09 09 09 09 67 6f 74 6f |X....}.X|....goto|
|00005c10| 20 67 6f 74 43 6f 6d 6d | 61 6e 64 3b 0a 58 09 09 | gotComm|and;.X..|
|00005c20| 09 7d 0a 58 09 09 09 69 | 66 20 28 63 20 3d 3d 20 |.}.X...i|f (c == |
|00005c30| 27 5c 6e 27 29 0a 58 09 | 09 09 7b 0a 58 09 09 09 |'\n').X.|..{.X...|
|00005c40| 09 72 65 67 69 73 74 65 | 72 20 63 68 61 72 20 2a |.registe|r char *|
|00005c50| 70 32 3b 0a 58 09 09 09 | 09 69 6e 74 20 20 20 20 |p2;.X...|.int |
|00005c60| 20 70 61 72 65 6e 73 2c | 20 62 72 61 63 6b 65 74 | parens,| bracket|
|00005c70| 73 2c 20 6e 75 6d 42 79 | 74 65 73 3b 0a 58 0a 58 |s, numBy|tes;.X.X|
|00005c80| 09 09 09 09 70 61 72 65 | 6e 73 20 3d 20 30 3b 0a |....pare|ns = 0;.|
|00005c90| 58 09 09 09 09 62 72 61 | 63 6b 65 74 73 20 3d 20 |X....bra|ckets = |
|00005ca0| 30 3b 0a 58 09 09 09 09 | 66 6f 72 20 28 70 32 20 |0;.X....|for (p2 |
|00005cb0| 3d 20 63 6d 64 3b 20 70 | 32 20 3c 20 70 3b 20 70 |= cmd; p|2 < p; p|
|00005cc0| 32 2b 2b 29 0a 58 09 09 | 09 09 7b 0a 58 09 09 09 |2++).X..|..{.X...|
|00005cd0| 09 09 73 77 69 74 63 68 | 20 28 2a 70 32 29 0a 58 |..switch| (*p2).X|
|00005ce0| 09 09 09 09 09 7b 0a 58 | 09 09 09 09 09 20 20 20 |.....{.X|..... |
|00005cf0| 20 63 61 73 65 20 27 5c | 5c 27 3a 0a 58 09 09 09 | case '\|\':.X...|
|00005d00| 09 09 09 54 63 6c 5f 42 | 61 63 6b 73 6c 61 73 68 |...Tcl_B|ackslash|
|00005d10| 28 70 32 2c 20 26 6e 75 | 6d 42 79 74 65 73 29 3b |(p2, &nu|mBytes);|
|00005d20| 0a 58 09 09 09 09 09 09 | 70 32 20 2b 3d 20 6e 75 |.X......|p2 += nu|
|00005d30| 6d 42 79 74 65 73 20 2d | 20 31 3b 0a 58 09 09 09 |mBytes -| 1;.X...|
|00005d40| 09 09 09 62 72 65 61 6b | 3b 0a 58 09 09 09 09 09 |...break|;.X.....|
|00005d50| 20 20 20 20 63 61 73 65 | 20 27 7b 27 3a 0a 58 09 | case| '{':.X.|
|00005d60| 09 09 09 09 09 70 61 72 | 65 6e 73 2b 2b 3b 0a 58 |.....par|ens++;.X|
|00005d70| 09 09 09 09 09 09 62 72 | 65 61 6b 3b 0a 58 09 09 |......br|eak;.X..|
|00005d80| 09 09 09 20 20 20 20 63 | 61 73 65 20 27 7d 27 3a |... c|ase '}':|
|00005d90| 0a 58 09 09 09 09 09 09 | 70 61 72 65 6e 73 2d 2d |.X......|parens--|
|00005da0| 3b 0a 58 09 09 09 09 09 | 09 62 72 65 61 6b 3b 0a |;.X.....|.break;.|
|00005db0| 58 09 09 09 09 09 20 20 | 20 20 63 61 73 65 20 27 |X..... | case '|
|00005dc0| 5b 27 3a 0a 58 09 09 09 | 09 09 09 62 72 61 63 6b |[':.X...|...brack|
|00005dd0| 65 74 73 2b 2b 3b 0a 58 | 09 09 09 09 09 09 62 72 |ets++;.X|......br|
|00005de0| 65 61 6b 3b 0a 58 09 09 | 09 09 09 20 20 20 20 63 |eak;.X..|... c|
|00005df0| 61 73 65 20 27 5d 27 3a | 0a 58 09 09 09 09 09 09 |ase ']':|.X......|
|00005e00| 62 72 61 63 6b 65 74 73 | 2d 2d 3b 0a 58 09 09 09 |brackets|--;.X...|
|00005e10| 09 09 09 62 72 65 61 6b | 3b 0a 58 09 09 09 09 09 |...break|;.X.....|
|00005e20| 7d 0a 58 09 09 09 09 7d | 0a 58 09 09 09 09 69 66 |}.X....}|.X....if|
|00005e30| 20 28 28 70 61 72 65 6e | 73 20 3c 3d 20 30 29 20 | ((paren|s <= 0) |
|00005e40| 26 26 20 28 62 72 61 63 | 6b 65 74 73 20 3c 3d 20 |&& (brac|kets <= |
|00005e50| 30 29 29 0a 58 09 09 09 | 09 7b 0a 58 09 09 09 09 |0)).X...|.{.X....|
|00005e60| 09 67 6f 74 6f 20 67 6f | 74 43 6f 6d 6d 61 6e 64 |.goto go|tCommand|
|00005e70| 3b 0a 58 09 09 09 09 7d | 0a 58 09 09 09 7d 0a 58 |;.X....}|.X...}.X|
|00005e80| 09 09 09 2a 70 20 3d 20 | 63 3b 0a 58 09 09 09 70 |...*p = |c;.X...p|
|00005e90| 2b 2b 3b 0a 58 09 09 7d | 0a 58 67 6f 74 43 6f 6d |++;.X..}|.XgotCom|
|00005ea0| 6d 61 6e 64 3a 0a 58 09 | 09 2a 70 20 3d 20 30 3b |mand:.X.|.*p = 0;|
|00005eb0| 0a 58 0a 58 09 09 72 65 | 73 75 6c 74 20 3d 20 54 |.X.X..re|sult = T|
|00005ec0| 63 6c 5f 45 76 61 6c 28 | 69 6e 74 65 72 70 2c 20 |cl_Eval(|interp, |
|00005ed0| 63 6d 64 2c 20 30 2c 20 | 26 70 29 3b 0a 58 09 09 |cmd, 0, |&p);.X..|
|00005ee0| 69 66 20 28 69 6e 74 65 | 72 61 63 74 69 76 65 29 |if (inte|ractive)|
|00005ef0| 0a 58 09 09 09 70 72 69 | 6e 74 5f 72 65 73 75 6c |.X...pri|nt_resul|
|00005f00| 74 28 6f 75 74 2c 20 72 | 65 73 75 6c 74 2c 20 69 |t(out, r|esult, i|
|00005f10| 6e 74 65 72 70 2d 3e 72 | 65 73 75 6c 74 29 3b 0a |nterp->r|esult);.|
|00005f20| 58 09 7d 0a 58 65 6e 64 | 4f 66 46 69 6c 65 3a 0a |X.}.Xend|OfFile:.|
|00005f30| 58 09 63 6b 66 72 65 65 | 28 63 6d 64 29 3b 0a 58 |X.ckfree|(cmd);.X|
|00005f40| 7d 0a 45 4e 44 5f 4f 46 | 5f 46 49 4c 45 0a 69 66 |}.END_OF|_FILE.if|
|00005f50| 20 74 65 73 74 20 33 38 | 31 32 20 2d 6e 65 20 60 | test 38|12 -ne `|
|00005f60| 77 63 20 2d 63 20 3c 27 | 6d 61 69 6e 2e 63 27 60 |wc -c <'|main.c'`|
|00005f70| 3b 20 74 68 65 6e 0a 20 | 20 20 20 65 63 68 6f 20 |; then. | echo |
|00005f80| 73 68 61 72 3a 20 5c 22 | 27 6d 61 69 6e 2e 63 27 |shar: \"|'main.c'|
|00005f90| 5c 22 20 75 6e 70 61 63 | 6b 65 64 20 77 69 74 68 |\" unpac|ked with|
|00005fa0| 20 77 72 6f 6e 67 20 73 | 69 7a 65 21 0a 66 69 0a | wrong s|ize!.fi.|
|00005fb0| 23 20 65 6e 64 20 6f 66 | 20 27 6d 61 69 6e 2e 63 |# end of| 'main.c|
|00005fc0| 27 0a 66 69 0a 69 66 20 | 74 65 73 74 20 2d 66 20 |'.fi.if |test -f |
|00005fd0| 27 63 61 74 2e 74 63 6c | 27 20 2d 61 20 22 24 7b |'cat.tcl|' -a "${|
|00005fe0| 31 7d 22 20 21 3d 20 22 | 2d 63 22 20 3b 20 74 68 |1}" != "|-c" ; th|
|00005ff0| 65 6e 20 0a 20 20 65 63 | 68 6f 20 73 68 61 72 3a |en . ec|ho shar:|
|00006000| 20 57 69 6c 6c 20 6e 6f | 74 20 63 6c 6f 62 62 65 | Will no|t clobbe|
|00006010| 72 20 65 78 69 73 74 69 | 6e 67 20 66 69 6c 65 20 |r existi|ng file |
|00006020| 5c 22 27 63 61 74 2e 74 | 63 6c 27 5c 22 0a 65 6c |\"'cat.t|cl'\".el|
|00006030| 73 65 0a 65 63 68 6f 20 | 73 68 61 72 3a 20 45 78 |se.echo |shar: Ex|
|00006040| 74 72 61 63 74 69 6e 67 | 20 5c 22 27 63 61 74 2e |tracting| \"'cat.|
|00006050| 74 63 6c 27 5c 22 20 5c | 28 31 32 34 20 63 68 61 |tcl'\" \|(124 cha|
|00006060| 72 61 63 74 65 72 73 5c | 29 0a 73 65 64 20 22 73 |racters\|).sed "s|
|00006070| 2f 5e 58 2f 2f 22 20 3e | 27 63 61 74 2e 74 63 6c |/^X//" >|'cat.tcl|
|00006080| 27 20 3c 3c 27 45 4e 44 | 5f 4f 46 5f 46 49 4c 45 |' <<'END|_OF_FILE|
|00006090| 27 0a 58 70 72 6f 63 20 | 63 61 74 20 61 72 67 73 |'.Xproc |cat args|
|000060a0| 20 7b 0a 58 20 20 20 20 | 66 6f 72 65 61 63 68 20 | {.X |foreach |
|000060b0| 66 69 6c 65 20 24 61 72 | 67 73 20 7b 0a 58 09 73 |file $ar|gs {.X.s|
|000060c0| 65 74 20 66 20 5b 73 74 | 72 65 61 6d 20 6f 70 65 |et f [st|ream ope|
|000060d0| 6e 20 24 66 69 6c 65 20 | 72 5d 0a 58 09 66 6f 72 |n $file |r].X.for|
|000060e0| 20 7b 7d 20 7b 20 5b 73 | 74 72 65 61 6d 20 67 65 | {} { [s|tream ge|
|000060f0| 74 73 20 24 66 20 6c 69 | 6e 65 5d 20 7d 20 7b 7d |ts $f li|ne] } {}|
|00006100| 20 7b 0a 58 09 20 20 20 | 20 65 63 68 6f 20 24 6c | {.X. | echo $l|
|00006110| 69 6e 65 0a 58 09 7d 0a | 58 09 73 74 72 65 61 6d |ine.X.}.|X.stream|
|00006120| 20 63 6c 6f 73 65 20 24 | 66 0a 58 20 20 20 20 7d | close $|f.X }|
|00006130| 0a 58 7d 0a 45 4e 44 5f | 4f 46 5f 46 49 4c 45 0a |.X}.END_|OF_FILE.|
|00006140| 69 66 20 74 65 73 74 20 | 31 32 34 20 2d 6e 65 20 |if test |124 -ne |
|00006150| 60 77 63 20 2d 63 20 3c | 27 63 61 74 2e 74 63 6c |`wc -c <|'cat.tcl|
|00006160| 27 60 3b 20 74 68 65 6e | 0a 20 20 20 20 65 63 68 |'`; then|. ech|
|00006170| 6f 20 73 68 61 72 3a 20 | 5c 22 27 63 61 74 2e 74 |o shar: |\"'cat.t|
|00006180| 63 6c 27 5c 22 20 75 6e | 70 61 63 6b 65 64 20 77 |cl'\" un|packed w|
|00006190| 69 74 68 20 77 72 6f 6e | 67 20 73 69 7a 65 21 0a |ith wron|g size!.|
|000061a0| 66 69 0a 23 20 65 6e 64 | 20 6f 66 20 27 63 61 74 |fi.# end| of 'cat|
|000061b0| 2e 74 63 6c 27 0a 66 69 | 0a 65 63 68 6f 20 73 68 |.tcl'.fi|.echo sh|
|000061c0| 61 72 3a 20 45 6e 64 20 | 6f 66 20 73 68 65 6c 6c |ar: End |of shell|
|000061d0| 20 61 72 63 68 69 76 65 | 2e 0a 65 78 69 74 20 30 | archive|..exit 0|
|000061e0| 0a 2d 2d 20 0a 20 5f 2d | 2d 5f 7c 5c 20 20 60 2d |.-- . _-|-_|\ `-|
|000061f0| 5f 2d 27 20 50 65 74 65 | 72 20 64 61 20 53 69 6c |_-' Pete|r da Sil|
|00006200| 76 61 2e 20 2b 31 20 37 | 31 33 20 32 37 34 20 35 |va. +1 7|13 274 5|
|00006210| 31 38 30 2e 20 3c 70 65 | 74 65 72 40 66 69 63 63 |180. <pe|ter@ficc|
|00006220| 2e 75 75 2e 6e 65 74 3e | 2e 0a 2f 20 20 20 20 20 |.uu.net>|../ |
|00006230| 20 5c 20 20 27 55 60 0a | 5c 5f 2e 2d 2d 2e 5f 2f | \ 'U`.|\_.--._/|
|00006240| 0a 20 20 20 20 20 20 76 | 0a |. v|. |
+--------+-------------------------+-------------------------+--------+--------+