home *** CD-ROM | disk | FTP | other *** search
view JSON data
|
view as text
|
open on a Mac
|
open on a PC
This file was processed as: SHell self-extracting ARchive
(archive/shar).
You can browse this item here: 74
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 6a 75 | 6d 40 66 6f 63 75 73 2e |From: ju|m@focus.|
|00000010| 55 55 43 50 20 28 22 4a | 65 6e 73 20 55 77 65 20 |UUCP ("J|ens Uwe |
|00000020| 4d 61 67 65 72 22 29 0a | 4e 65 77 73 67 72 6f 75 |Mager").|Newsgrou|
|00000030| 70 73 3a 20 63 6f 6d 70 | 2e 73 6f 75 72 63 65 73 |ps: comp|.sources|
|00000040| 2e 6d 69 73 63 0a 53 75 | 62 6a 65 63 74 3a 20 50 |.misc.Su|bject: P|
|00000050| 6f 73 74 69 6e 67 20 73 | 6f 75 72 63 65 73 0a 4d |osting s|ources.M|
|00000060| 65 73 73 61 67 65 2d 49 | 44 3a 20 3c 33 36 39 36 |essage-I|D: <3696|
|00000070| 40 6e 63 6f 61 73 74 2e | 55 55 43 50 3e 0a 44 61 |@ncoast.|UUCP>.Da|
|00000080| 74 65 3a 20 31 20 41 75 | 67 20 38 37 20 30 30 3a |te: 1 Au|g 87 00:|
|00000090| 34 30 3a 35 39 20 47 4d | 54 0a 53 65 6e 64 65 72 |40:59 GM|T.Sender|
|000000a0| 3a 20 61 6c 6c 62 65 72 | 79 40 6e 63 6f 61 73 74 |: allber|y@ncoast|
|000000b0| 2e 55 55 43 50 0a 4c 69 | 6e 65 73 3a 20 34 36 33 |.UUCP.Li|nes: 463|
|000000c0| 0a 41 70 70 72 6f 76 65 | 64 3a 20 61 6c 6c 62 65 |.Approve|d: allbe|
|000000d0| 72 79 40 6e 63 6f 61 73 | 74 2e 55 55 43 50 0a 58 |ry@ncoas|t.UUCP.X|
|000000e0| 2d 41 72 63 68 69 76 65 | 3a 20 63 6f 6d 70 2e 73 |-Archive|: comp.s|
|000000f0| 6f 75 72 63 65 73 2e 6d | 69 73 63 2f 38 37 30 37 |ources.m|isc/8707|
|00000100| 2f 37 34 0a 0a 4e 65 78 | 74 20 74 72 79 2e 20 54 |/74..Nex|t try. T|
|00000110| 6f 67 65 74 68 65 72 20 | 77 69 74 68 20 74 68 69 |ogether |with thi|
|00000120| 73 20 6c 65 74 74 65 72 | 20 69 73 20 61 20 70 74 |s letter| is a pt|
|00000130| 79 20 64 72 69 76 65 72 | 20 66 6f 72 20 73 79 73 |y driver| for sys|
|00000140| 74 65 6d 20 56 20 6d 61 | 63 68 69 6e 65 73 2c 0a |tem V ma|chines,.|
|00000150| 77 68 69 63 68 20 73 65 | 72 76 65 73 20 6d 79 20 |which se|rves my |
|00000160| 77 69 6e 64 6f 77 20 73 | 68 65 6c 6c 20 66 61 69 |window s|hell fai|
|00000170| 72 6c 79 20 77 65 6c 6c | 2e 20 4e 6f 77 20 61 20 |rly well|. Now a |
|00000180| 71 75 65 73 74 69 6f 6e | 20 74 6f 20 79 6f 75 20 |question| to you |
|00000190| 3a 0a 44 6f 20 79 6f 75 | 20 6d 69 6e 64 20 70 6f |:.Do you| mind po|
|000001a0| 73 74 69 6e 67 20 74 68 | 69 73 20 74 68 69 6e 67 |sting th|is thing|
|000001b0| 20 6f 6e 20 74 68 65 20 | 6e 65 74 20 3f 20 49 20 | on the |net ? I |
|000001c0| 75 73 65 64 20 61 6e 20 | 41 54 26 54 20 44 65 76 |used an |AT&T Dev|
|000001d0| 69 63 65 0a 44 72 69 76 | 65 72 20 47 75 69 64 65 |ice.Driv|er Guide|
|000001e0| 20 74 6f 20 77 72 69 74 | 65 20 69 74 2c 20 73 6f | to writ|e it, so|
|000001f0| 20 64 6f 65 73 20 41 54 | 26 54 20 68 61 76 65 20 | does AT|&T have |
|00000200| 61 20 70 6f 73 73 69 62 | 69 6c 69 74 79 20 74 6f |a possib|ility to|
|00000210| 20 6c 61 77 73 75 69 74 | 0a 6d 65 20 6f 6e 20 74 | lawsuit|.me on t|
|00000220| 68 69 73 20 3f 0a 0a 42 | 65 73 74 20 52 65 67 61 |his ?..B|est Rega|
|00000230| 72 64 73 2c 0a 4a 65 6e | 73 2d 55 77 65 20 4d 61 |rds,.Jen|s-Uwe Ma|
|00000240| 67 65 72 0a 0a 23 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |ger..#--|--------|
|00000250| 2d 2d 2d 2d 2d 2d 63 75 | 74 20 68 65 72 65 2d 2d |------cu|t here--|
|00000260| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000270| 2d 2d 0a 23 21 20 2f 62 | 69 6e 2f 73 68 0a 23 20 |--.#! /b|in/sh.# |
|00000280| 54 68 69 73 20 69 73 20 | 61 20 73 68 65 6c 6c 20 |This is |a shell |
|00000290| 61 72 63 68 69 76 65 2e | 20 20 52 65 6d 6f 76 65 |archive.| Remove|
|000002a0| 20 61 6e 79 74 68 69 6e | 67 20 62 65 66 6f 72 65 | anythin|g before|
|000002b0| 20 74 68 69 73 20 6c 69 | 6e 65 2c 20 74 68 65 6e | this li|ne, then|
|000002c0| 20 75 6e 70 61 63 6b 0a | 23 20 69 74 20 62 79 20 | unpack.|# it by |
|000002d0| 73 61 76 69 6e 67 20 69 | 74 20 69 6e 74 6f 20 61 |saving i|t into a|
|000002e0| 20 66 69 6c 65 20 61 6e | 64 20 74 79 70 69 6e 67 | file an|d typing|
|000002f0| 20 22 73 68 20 66 69 6c | 65 22 2e 20 20 54 6f 20 | "sh fil|e". To |
|00000300| 6f 76 65 72 77 72 69 74 | 65 20 65 78 69 73 74 69 |overwrit|e existi|
|00000310| 6e 67 0a 23 20 66 69 6c | 65 73 2c 20 74 79 70 65 |ng.# fil|es, type|
|00000320| 20 22 73 68 20 66 69 6c | 65 20 2d 63 22 2e 20 20 | "sh fil|e -c". |
|00000330| 59 6f 75 20 63 61 6e 20 | 61 6c 73 6f 20 66 65 65 |You can |also fee|
|00000340| 64 20 74 68 69 73 20 61 | 73 20 73 74 61 6e 64 61 |d this a|s standa|
|00000350| 72 64 20 69 6e 70 75 74 | 20 76 69 61 0a 23 20 75 |rd input| via.# u|
|00000360| 6e 73 68 61 72 2c 20 6f | 72 20 62 79 20 74 79 70 |nshar, o|r by typ|
|00000370| 69 6e 67 20 22 73 68 20 | 3c 66 69 6c 65 22 2c 20 |ing "sh |<file", |
|00000380| 65 2e 67 2e 2e 20 20 49 | 66 20 74 68 69 73 20 61 |e.g.. I|f this a|
|00000390| 72 63 68 69 76 65 20 69 | 73 20 63 6f 6d 70 6c 65 |rchive i|s comple|
|000003a0| 74 65 2c 20 79 6f 75 0a | 23 20 77 69 6c 6c 20 73 |te, you.|# will s|
|000003b0| 65 65 20 74 68 65 20 66 | 6f 6c 6c 6f 77 69 6e 67 |ee the f|ollowing|
|000003c0| 20 6d 65 73 73 61 67 65 | 20 61 74 20 74 68 65 20 | message| at the |
|000003d0| 65 6e 64 3a 0a 23 09 09 | 22 45 6e 64 20 6f 66 20 |end:.#..|"End of |
|000003e0| 73 68 65 6c 6c 20 61 72 | 63 68 69 76 65 2e 22 0a |shell ar|chive.".|
|000003f0| 23 20 43 6f 6e 74 65 6e | 74 73 3a 20 20 52 45 41 |# Conten|ts: REA|
|00000400| 44 5f 4d 45 20 6d 6b 70 | 74 79 20 70 74 79 2e 63 |D_ME mkp|ty pty.c|
|00000410| 0a 23 20 57 72 61 70 70 | 65 64 20 62 79 20 6a 75 |.# Wrapp|ed by ju|
|00000420| 6d 40 66 6f 63 75 73 20 | 6f 6e 20 54 68 75 20 4a |m@focus |on Thu J|
|00000430| 75 6c 20 33 30 20 31 30 | 3a 31 39 3a 33 34 20 31 |ul 30 10|:19:34 1|
|00000440| 39 38 37 0a 50 41 54 48 | 3d 2f 62 69 6e 3a 2f 75 |987.PATH|=/bin:/u|
|00000450| 73 72 2f 62 69 6e 3a 2f | 75 73 72 2f 75 63 62 20 |sr/bin:/|usr/ucb |
|00000460| 3b 20 65 78 70 6f 72 74 | 20 50 41 54 48 0a 69 66 |; export| PATH.if|
|00000470| 20 74 65 73 74 20 2d 66 | 20 52 45 41 44 5f 4d 45 | test -f| READ_ME|
|00000480| 20 2d 61 20 22 24 7b 31 | 7d 22 20 21 3d 20 22 2d | -a "${1|}" != "-|
|00000490| 63 22 20 3b 20 74 68 65 | 6e 20 0a 20 20 65 63 68 |c" ; the|n . ech|
|000004a0| 6f 20 73 68 61 72 3a 20 | 57 69 6c 6c 20 6e 6f 74 |o shar: |Will not|
|000004b0| 20 6f 76 65 72 2d 77 72 | 69 74 65 20 65 78 69 73 | over-wr|ite exis|
|000004c0| 74 69 6e 67 20 66 69 6c | 65 20 5c 22 52 45 41 44 |ting fil|e \"READ|
|000004d0| 5f 4d 45 5c 22 0a 65 6c | 73 65 0a 65 63 68 6f 20 |_ME\".el|se.echo |
|000004e0| 73 68 61 72 3a 20 45 78 | 74 72 61 63 74 69 6e 67 |shar: Ex|tracting|
|000004f0| 20 5c 22 52 45 41 44 5f | 4d 45 5c 22 20 5c 28 31 | \"READ_|ME\" \(1|
|00000500| 36 32 34 20 63 68 61 72 | 61 63 74 65 72 73 5c 29 |624 char|acters\)|
|00000510| 0a 73 65 64 20 22 73 2f | 5e 58 2f 2f 22 20 3e 52 |.sed "s/|^X//" >R|
|00000520| 45 41 44 5f 4d 45 20 3c | 3c 27 45 4e 44 5f 4f 46 |EAD_ME <|<'END_OF|
|00000530| 5f 52 45 41 44 5f 4d 45 | 27 0a 58 54 68 69 73 20 |_READ_ME|'.XThis |
|00000540| 69 73 20 61 20 70 73 65 | 75 64 6f 20 74 74 79 20 |is a pse|udo tty |
|00000550| 64 72 69 76 65 72 20 66 | 6f 72 20 73 79 73 74 65 |driver f|or syste|
|00000560| 6d 20 56 20 6d 61 63 68 | 69 6e 65 73 2e 20 49 74 |m V mach|ines. It|
|00000570| 20 77 6f 72 6b 73 20 76 | 65 72 79 0a 58 73 69 6d | works v|ery.Xsim|
|00000580| 69 6c 61 72 20 74 6f 20 | 70 74 79 73 20 6f 6e 20 |ilar to |ptys on |
|00000590| 42 53 44 2c 20 66 6f 72 | 20 69 6e 73 74 61 6e 63 |BSD, for| instanc|
|000005a0| 65 20 65 6d 61 63 73 20 | 77 6f 72 6b 73 20 66 69 |e emacs |works fi|
|000005b0| 6e 65 2e 20 54 6f 20 69 | 6e 73 74 61 6c 6c 20 74 |ne. To i|nstall t|
|000005c0| 68 69 73 0a 58 64 72 69 | 76 65 72 20 79 6f 75 20 |his.Xdri|ver you |
|000005d0| 77 69 6c 6c 20 6e 65 65 | 64 20 74 6f 20 6d 6f 64 |will nee|d to mod|
|000005e0| 69 66 79 20 79 6f 75 72 | 20 60 6d 61 73 74 65 72 |ify your| `master|
|000005f0| 27 20 61 6e 64 20 60 64 | 66 69 6c 65 27 20 66 69 |' and `d|file' fi|
|00000600| 6c 65 20 77 68 69 63 68 | 0a 58 63 6f 6e 74 61 69 |le which|.Xcontai|
|00000610| 6e 73 20 79 6f 75 72 20 | 64 72 69 76 65 72 20 73 |ns your |driver s|
|00000620| 70 65 63 69 66 69 63 61 | 74 69 6f 6e 73 2e 20 41 |pecifica|tions. A|
|00000630| 73 20 74 68 65 73 65 20 | 76 61 72 79 20 66 72 6f |s these |vary fro|
|00000640| 6d 20 6d 61 63 68 69 6e | 65 20 74 6f 20 6d 61 63 |m machin|e to mac|
|00000650| 68 69 6e 65 2c 0a 58 79 | 6f 75 20 77 69 6c 6c 20 |hine,.Xy|ou will |
|00000660| 68 61 76 65 20 74 6f 20 | 6c 6f 6f 6b 20 75 70 20 |have to |look up |
|00000670| 69 6e 20 79 6f 75 72 20 | 6d 61 6e 75 61 6c 20 68 |in your |manual h|
|00000680| 6f 77 20 74 6f 20 64 6f | 20 74 68 61 74 2e 20 48 |ow to do| that. H|
|00000690| 65 72 65 20 69 73 20 61 | 6e 20 65 78 61 6d 70 6c |ere is a|n exampl|
|000006a0| 65 0a 58 66 6f 72 20 61 | 20 73 70 65 72 72 79 20 |e.Xfor a| sperry |
|000006b0| 73 35 30 35 30 20 61 6c | 69 61 73 20 6e 63 72 20 |s5050 al|ias ncr |
|000006c0| 74 6f 77 65 72 20 33 32 | 20 3a 0a 58 0a 58 41 64 |tower 32| :.X.XAd|
|000006d0| 64 20 74 68 65 20 66 6f | 6c 6c 6f 77 69 6e 67 20 |d the fo|llowing |
|000006e0| 74 77 6f 20 6c 69 6e 65 | 73 20 74 6f 20 74 68 65 |two line|s to the|
|000006f0| 20 64 72 69 76 65 72 20 | 64 65 73 63 72 69 70 74 | driver |descript|
|00000700| 69 6f 6e 20 73 65 63 74 | 69 6f 6e 20 69 6e 20 6d |ion sect|ion in m|
|00000710| 61 73 74 65 72 3a 0a 58 | 70 74 73 09 30 09 32 33 |aster:.X|pts.0.23|
|00000720| 37 09 32 34 34 09 70 74 | 73 09 30 09 30 09 32 38 |7.244.pt|s.0.0.28|
|00000730| 09 33 32 09 30 09 74 74 | 79 0a 58 70 74 6d 09 30 |.32.0.tt|y.Xptm.0|
|00000740| 09 33 37 09 33 34 34 09 | 70 74 6d 09 30 09 30 09 |.37.344.|ptm.0.0.|
|00000750| 32 39 09 30 09 30 0a 58 | 0a 58 54 68 69 73 20 73 |29.0.0.X|.XThis s|
|00000760| 61 79 73 20 74 68 65 72 | 65 20 61 72 65 20 6d 61 |ays ther|e are ma|
|00000770| 78 20 33 32 20 70 74 73 | 20 64 65 76 69 63 65 73 |x 32 pts| devices|
|00000780| 20 61 74 20 6d 61 6a 6f | 72 20 6e 75 6d 62 65 72 | at majo|r number|
|00000790| 20 32 38 20 68 61 76 69 | 6e 67 20 61 73 73 6f 63 | 28 havi|ng assoc|
|000007a0| 69 61 74 65 64 0a 58 74 | 74 79 20 73 74 72 75 63 |iated.Xt|ty struc|
|000007b0| 74 75 72 65 73 20 61 6e | 64 20 30 20 70 74 6d 20 |tures an|d 0 ptm |
|000007c0| 64 65 76 69 63 65 73 20 | 68 61 76 69 6e 67 20 6d |devices |having m|
|000007d0| 61 6a 6f 72 20 6e 75 6d | 62 65 72 20 32 39 20 77 |ajor num|ber 29 w|
|000007e0| 69 74 68 20 6e 6f 20 61 | 73 73 6f 63 69 61 74 65 |ith no a|ssociate|
|000007f0| 64 0a 58 64 61 74 61 2e | 20 54 68 65 20 6e 75 6d |d.Xdata.| The num|
|00000800| 62 65 72 20 6f 66 20 70 | 74 6d 20 64 65 76 69 63 |ber of p|tm devic|
|00000810| 65 73 20 69 73 20 6e 6f | 74 20 63 6f 6e 66 69 67 |es is no|t config|
|00000820| 75 72 61 62 6c 65 2c 20 | 61 73 20 74 68 69 73 20 |urable, |as this |
|00000830| 64 65 70 65 6e 64 73 20 | 6f 6e 20 74 68 65 0a 58 |depends |on the.X|
|00000840| 6e 75 6d 62 65 72 20 6f | 66 20 70 74 73 27 73 2e |number o|f pts's.|
|00000850| 0a 58 0a 58 54 68 65 20 | 66 6f 6c 6c 6f 77 69 6e |.X.XThe |followin|
|00000860| 67 20 74 77 6f 20 6c 69 | 6e 65 73 20 67 6f 20 69 |g two li|nes go i|
|00000870| 6e 20 74 68 65 20 64 66 | 69 6c 65 3a 0a 58 70 74 |n the df|ile:.Xpt|
|00000880| 73 09 30 09 30 09 30 0a | 58 70 74 6d 09 30 09 30 |s.0.0.0.|Xptm.0.0|
|00000890| 09 30 0a 58 0a 58 50 72 | 6f 62 61 62 6c 79 20 79 |.0.X.XPr|obably y|
|000008a0| 6f 75 20 77 69 6c 6c 20 | 61 6c 73 6f 20 77 61 6e |ou will |also wan|
|000008b0| 74 20 74 6f 20 69 6e 63 | 72 65 61 73 65 20 74 68 |t to inc|rease th|
|000008c0| 65 20 4e 43 4c 49 53 54 | 20 70 61 72 61 6d 65 74 |e NCLIST| paramet|
|000008d0| 65 72 2e 0a 58 0a 58 49 | 66 20 79 6f 75 72 20 63 |er..X.XI|f your c|
|000008e0| 6f 6e 66 69 67 75 72 61 | 74 69 6f 6e 20 70 72 6f |onfigura|tion pro|
|000008f0| 63 65 64 75 72 65 20 69 | 73 20 64 69 66 66 65 72 |cedure i|s differ|
|00000900| 65 6e 74 2c 20 79 6f 75 | 20 6d 75 73 74 20 63 68 |ent, you| must ch|
|00000910| 61 6e 67 65 20 74 68 65 | 20 73 68 65 6c 6c 0a 58 |ange the| shell.X|
|00000920| 73 63 72 69 70 74 20 6d | 6b 70 74 79 2c 20 77 68 |script m|kpty, wh|
|00000930| 69 63 68 20 69 73 20 75 | 73 65 64 20 74 6f 20 63 |ich is u|sed to c|
|00000940| 72 65 61 74 65 20 74 68 | 65 20 64 65 76 69 63 65 |reate th|e device|
|00000950| 20 6e 6f 64 65 73 20 69 | 6e 20 2f 64 65 76 2e 0a | nodes i|n /dev..|
|00000960| 58 0a 58 54 68 65 20 70 | 74 6d 20 64 65 76 69 63 |X.XThe p|tm devic|
|00000970| 65 73 20 28 2f 64 65 76 | 2f 70 74 79 5b 70 2d 7a |es (/dev|/pty[p-z|
|00000980| 5d 5b 30 2d 39 61 2d 66 | 5d 29 20 61 72 65 20 74 |][0-9a-f|]) are t|
|00000990| 68 65 20 63 6f 6e 74 72 | 6f 6c 6c 69 6e 67 20 6f |he contr|olling o|
|000009a0| 6e 65 73 2c 20 65 76 65 | 72 79 74 68 69 6e 67 0a |nes, eve|rything.|
|000009b0| 58 77 72 69 74 74 65 6e | 20 74 68 65 72 65 20 77 |Xwritten| there w|
|000009c0| 69 6c 6c 20 73 68 6f 77 | 20 75 70 20 61 74 20 74 |ill show| up at t|
|000009d0| 68 65 20 61 73 73 6f 63 | 69 61 74 65 64 20 70 74 |he assoc|iated pt|
|000009e0| 73 20 64 65 76 69 63 65 | 0a 58 28 2f 64 65 76 2f |s device|.X(/dev/|
|000009f0| 74 74 79 5b 70 2d 7a 5d | 5b 30 2d 39 61 2d 66 5d |tty[p-z]|[0-9a-f]|
|00000a00| 29 2c 20 61 73 20 77 65 | 6c 6c 20 61 73 20 65 72 |), as we|ll as er|
|00000a10| 76 65 72 79 74 68 69 6e | 67 20 77 68 69 63 68 20 |verythin|g which |
|00000a20| 69 73 20 77 72 69 74 74 | 65 6e 20 6f 6e 20 74 68 |is writt|en on th|
|00000a30| 65 20 70 74 73 0a 58 64 | 65 76 69 63 65 20 77 69 |e pts.Xd|evice wi|
|00000a40| 6c 6c 20 73 68 6f 77 20 | 75 70 20 6f 6e 20 74 68 |ll show |up on th|
|00000a50| 65 20 70 74 6d 20 64 65 | 76 69 63 65 2e 20 54 68 |e ptm de|vice. Th|
|00000a60| 65 20 70 74 73 20 73 69 | 64 65 20 77 69 6c 6c 20 |e pts si|de will |
|00000a70| 61 63 63 65 70 74 20 74 | 68 65 20 75 73 75 61 6c |accept t|he usual|
|00000a80| 0a 58 74 65 72 6d 69 6f | 20 69 6f 63 74 6c 20 63 |.Xtermio| ioctl c|
|00000a90| 61 6c 6c 73 2e 20 54 68 | 65 20 6d 61 73 74 65 72 |alls. Th|e master|
|00000aa0| 20 73 69 64 65 20 69 73 | 20 61 20 62 69 74 20 64 | side is| a bit d|
|00000ab0| 69 66 66 65 72 65 6e 74 | 2c 20 61 73 20 69 6f 63 |ifferent|, as ioc|
|00000ac0| 74 6c 20 63 61 6c 6c 73 | 20 77 68 69 63 68 0a 58 |tl calls| which.X|
|00000ad0| 6e 6f 72 6d 61 6c 6c 79 | 20 77 61 69 74 20 66 6f |normally| wait fo|
|00000ae0| 72 20 6f 75 74 70 75 74 | 20 74 6f 20 64 72 61 69 |r output| to drai|
|00000af0| 6e 20 66 6c 75 73 68 20 | 6f 75 74 70 75 74 2e 20 |n flush |output. |
|00000b00| 54 68 65 20 72 65 61 73 | 6f 6e 20 66 6f 72 20 74 |The reas|on for t|
|00000b10| 68 69 73 20 66 75 6e 6e | 79 0a 58 62 65 68 61 76 |his funn|y.Xbehav|
|00000b20| 69 6f 75 72 20 69 73 20 | 74 68 61 74 20 6f 74 68 |iour is |that oth|
|00000b30| 65 72 77 69 73 65 20 74 | 68 65 20 6d 61 73 74 65 |erwise t|he maste|
|00000b40| 72 20 73 69 64 65 20 77 | 69 6c 6c 20 68 61 6e 67 |r side w|ill hang|
|00000b50| 2e 20 41 6c 73 6f 20 74 | 68 65 20 6d 61 73 74 65 |. Also t|he maste|
|00000b60| 72 20 73 69 64 65 0a 58 | 6d 61 79 20 62 65 20 6f |r side.X|may be o|
|00000b70| 70 65 6e 65 64 20 6f 6e | 6c 79 20 6f 6e 63 65 2c |pened on|ly once,|
|00000b80| 20 66 75 72 74 68 65 72 | 20 6f 70 65 6e 20 63 61 | further| open ca|
|00000b90| 6c 6c 73 20 77 69 6c 6c | 20 72 65 73 75 6c 74 20 |lls will| result |
|00000ba0| 69 6e 20 61 6e 20 45 42 | 55 53 59 20 65 72 72 6f |in an EB|USY erro|
|00000bb0| 72 2e 0a 45 4e 44 5f 4f | 46 5f 52 45 41 44 5f 4d |r..END_O|F_READ_M|
|00000bc0| 45 0a 69 66 20 74 65 73 | 74 20 31 36 32 34 20 2d |E.if tes|t 1624 -|
|00000bd0| 6e 65 20 60 77 63 20 2d | 63 20 3c 52 45 41 44 5f |ne `wc -|c <READ_|
|00000be0| 4d 45 60 3b 20 74 68 65 | 6e 0a 20 20 20 20 65 63 |ME`; the|n. ec|
|00000bf0| 68 6f 20 73 68 61 72 3a | 20 5c 22 52 45 41 44 5f |ho shar:| \"READ_|
|00000c00| 4d 45 5c 22 20 75 6e 70 | 61 63 6b 65 64 20 77 69 |ME\" unp|acked wi|
|00000c10| 74 68 20 77 72 6f 6e 67 | 20 73 69 7a 65 21 0a 66 |th wrong| size!.f|
|00000c20| 69 0a 23 20 65 6e 64 20 | 6f 66 20 6f 76 65 72 77 |i.# end |of overw|
|00000c30| 72 69 74 69 6e 67 20 63 | 68 65 63 6b 0a 66 69 0a |riting c|heck.fi.|
|00000c40| 69 66 20 74 65 73 74 20 | 2d 66 20 6d 6b 70 74 79 |if test |-f mkpty|
|00000c50| 20 2d 61 20 22 24 7b 31 | 7d 22 20 21 3d 20 22 2d | -a "${1|}" != "-|
|00000c60| 63 22 20 3b 20 74 68 65 | 6e 20 0a 20 20 65 63 68 |c" ; the|n . ech|
|00000c70| 6f 20 73 68 61 72 3a 20 | 57 69 6c 6c 20 6e 6f 74 |o shar: |Will not|
|00000c80| 20 6f 76 65 72 2d 77 72 | 69 74 65 20 65 78 69 73 | over-wr|ite exis|
|00000c90| 74 69 6e 67 20 66 69 6c | 65 20 5c 22 6d 6b 70 74 |ting fil|e \"mkpt|
|00000ca0| 79 5c 22 0a 65 6c 73 65 | 0a 65 63 68 6f 20 73 68 |y\".else|.echo sh|
|00000cb0| 61 72 3a 20 45 78 74 72 | 61 63 74 69 6e 67 20 5c |ar: Extr|acting \|
|00000cc0| 22 6d 6b 70 74 79 5c 22 | 20 5c 28 34 30 31 20 63 |"mkpty\"| \(401 c|
|00000cd0| 68 61 72 61 63 74 65 72 | 73 5c 29 0a 73 65 64 20 |haracter|s\).sed |
|00000ce0| 22 73 2f 5e 58 2f 2f 22 | 20 3e 6d 6b 70 74 79 20 |"s/^X//"| >mkpty |
|00000cf0| 3c 3c 27 45 4e 44 5f 4f | 46 5f 6d 6b 70 74 79 27 |<<'END_O|F_mkpty'|
|00000d00| 0a 58 23 21 2f 62 69 6e | 2f 73 68 0a 58 73 6d 61 |.X#!/bin|/sh.Xsma|
|00000d10| 6a 6f 72 3d 60 67 72 65 | 70 20 70 74 73 20 6d 61 |jor=`gre|p pts ma|
|00000d20| 73 74 65 72 7c 63 75 74 | 20 2d 66 38 60 0a 58 6d |ster|cut| -f8`.Xm|
|00000d30| 6d 61 6a 6f 72 3d 60 67 | 72 65 70 20 70 74 6d 20 |major=`g|rep ptm |
|00000d40| 6d 61 73 74 65 72 7c 63 | 75 74 20 2d 66 38 60 0a |master|c|ut -f8`.|
|00000d50| 58 6e 64 65 76 73 3d 60 | 67 72 65 70 20 70 74 73 |Xndevs=`|grep pts|
|00000d60| 5f 63 6e 74 20 63 6f 6e | 66 2e 63 7c 73 65 64 20 |_cnt con|f.c|sed |
|00000d70| 27 73 2f 69 6e 74 09 70 | 74 73 5f 63 6e 74 20 3d |'s/int.p|ts_cnt =|
|00000d80| 20 5c 28 5b 30 2d 39 5d | 2a 5c 29 3b 2f 5c 31 2f | \([0-9]|*\);/\1/|
|00000d90| 27 60 0a 58 6d 69 6e 6f | 72 3d 30 0a 58 66 6f 72 |'`.Xmino|r=0.Xfor|
|00000da0| 20 78 20 69 6e 20 70 20 | 71 20 72 20 73 20 74 20 | x in p |q r s t |
|00000db0| 75 20 76 20 77 20 78 20 | 79 20 7a 0a 58 64 6f 0a |u v w x |y z.Xdo.|
|00000dc0| 58 09 66 6f 72 20 79 20 | 69 6e 20 30 20 31 20 32 |X.for y |in 0 1 2|
|00000dd0| 20 33 20 34 20 35 20 36 | 20 37 20 38 20 39 20 61 | 3 4 5 6| 7 8 9 a|
|00000de0| 20 62 20 63 20 64 20 65 | 20 66 0a 58 09 64 6f 0a | b c d e| f.X.do.|
|00000df0| 58 09 09 69 3d 24 78 24 | 79 0a 58 09 09 69 66 20 |X..i=$x$|y.X..if |
|00000e00| 5b 20 24 6d 69 6e 6f 72 | 20 2d 67 65 20 24 6e 64 |[ $minor| -ge $nd|
|00000e10| 65 76 73 20 5d 3b 20 74 | 68 65 6e 20 62 72 65 61 |evs ]; t|hen brea|
|00000e20| 6b 3b 20 66 69 0a 58 09 | 09 2f 65 74 63 2f 6d 6b |k; fi.X.|./etc/mk|
|00000e30| 6e 6f 64 20 2f 64 65 76 | 2f 70 74 79 24 69 20 63 |nod /dev|/pty$i c|
|00000e40| 20 24 6d 6d 61 6a 6f 72 | 20 24 6d 69 6e 6f 72 0a | $mmajor| $minor.|
|00000e50| 58 09 09 2f 65 74 63 2f | 6d 6b 6e 6f 64 20 2f 64 |X../etc/|mknod /d|
|00000e60| 65 76 2f 74 74 79 24 69 | 20 63 20 24 73 6d 61 6a |ev/tty$i| c $smaj|
|00000e70| 6f 72 20 24 6d 69 6e 6f | 72 0a 58 09 09 6d 69 6e |or $mino|r.X..min|
|00000e80| 6f 72 3d 60 65 78 70 72 | 20 24 6d 69 6e 6f 72 20 |or=`expr| $minor |
|00000e90| 2b 20 31 60 0a 58 09 64 | 6f 6e 65 0a 58 64 6f 6e |+ 1`.X.d|one.Xdon|
|00000ea0| 65 0a 45 4e 44 5f 4f 46 | 5f 6d 6b 70 74 79 0a 69 |e.END_OF|_mkpty.i|
|00000eb0| 66 20 74 65 73 74 20 34 | 30 31 20 2d 6e 65 20 60 |f test 4|01 -ne `|
|00000ec0| 77 63 20 2d 63 20 3c 6d | 6b 70 74 79 60 3b 20 74 |wc -c <m|kpty`; t|
|00000ed0| 68 65 6e 0a 20 20 20 20 | 65 63 68 6f 20 73 68 61 |hen. |echo sha|
|00000ee0| 72 3a 20 5c 22 6d 6b 70 | 74 79 5c 22 20 75 6e 70 |r: \"mkp|ty\" unp|
|00000ef0| 61 63 6b 65 64 20 77 69 | 74 68 20 77 72 6f 6e 67 |acked wi|th wrong|
|00000f00| 20 73 69 7a 65 21 0a 66 | 69 0a 63 68 6d 6f 64 20 | size!.f|i.chmod |
|00000f10| 2b 78 20 6d 6b 70 74 79 | 0a 23 20 65 6e 64 20 6f |+x mkpty|.# end o|
|00000f20| 66 20 6f 76 65 72 77 72 | 69 74 69 6e 67 20 63 68 |f overwr|iting ch|
|00000f30| 65 63 6b 0a 66 69 0a 69 | 66 20 74 65 73 74 20 2d |eck.fi.i|f test -|
|00000f40| 66 20 70 74 79 2e 63 20 | 2d 61 20 22 24 7b 31 7d |f pty.c |-a "${1}|
|00000f50| 22 20 21 3d 20 22 2d 63 | 22 20 3b 20 74 68 65 6e |" != "-c|" ; then|
|00000f60| 20 0a 20 20 65 63 68 6f | 20 73 68 61 72 3a 20 57 | . echo| shar: W|
|00000f70| 69 6c 6c 20 6e 6f 74 20 | 6f 76 65 72 2d 77 72 69 |ill not |over-wri|
|00000f80| 74 65 20 65 78 69 73 74 | 69 6e 67 20 66 69 6c 65 |te exist|ing file|
|00000f90| 20 5c 22 70 74 79 2e 63 | 5c 22 0a 65 6c 73 65 0a | \"pty.c|\".else.|
|00000fa0| 65 63 68 6f 20 73 68 61 | 72 3a 20 45 78 74 72 61 |echo sha|r: Extra|
|00000fb0| 63 74 69 6e 67 20 5c 22 | 70 74 79 2e 63 5c 22 20 |cting \"|pty.c\" |
|00000fc0| 5c 28 36 39 32 33 20 63 | 68 61 72 61 63 74 65 72 |\(6923 c|haracter|
|00000fd0| 73 5c 29 0a 73 65 64 20 | 22 73 2f 5e 58 2f 2f 22 |s\).sed |"s/^X//"|
|00000fe0| 20 3e 70 74 79 2e 63 20 | 3c 3c 27 45 4e 44 5f 4f | >pty.c |<<'END_O|
|00000ff0| 46 5f 70 74 79 2e 63 27 | 0a 58 2f 2a 0a 58 20 2a |F_pty.c'|.X/*.X *|
|00001000| 20 70 74 79 2e 63 20 2d | 20 42 65 72 6b 65 6c 65 | pty.c -| Berkele|
|00001010| 79 20 73 74 79 6c 65 20 | 70 73 65 75 64 6f 20 74 |y style |pseudo t|
|00001020| 74 79 20 64 72 69 76 65 | 72 20 66 6f 72 20 73 79 |ty drive|r for sy|
|00001030| 73 74 65 6d 20 56 0a 58 | 20 2a 0a 58 20 2a 20 43 |stem V.X| *.X * C|
|00001040| 6f 70 79 72 69 67 68 74 | 20 28 63 29 20 31 39 38 |opyright| (c) 198|
|00001050| 37 2c 20 4a 65 6e 73 2d | 55 77 65 20 4d 61 67 65 |7, Jens-|Uwe Mage|
|00001060| 72 2c 20 46 4f 43 55 53 | 20 43 6f 6d 70 75 74 65 |r, FOCUS| Compute|
|00001070| 72 20 47 6d 62 48 0a 58 | 20 2a 20 4e 6f 74 20 64 |r GmbH.X| * Not d|
|00001080| 65 72 69 76 65 64 20 66 | 72 6f 6d 20 6c 69 63 65 |erived f|rom lice|
|00001090| 6e 73 65 64 20 73 6f 66 | 74 77 61 72 65 2e 0a 58 |nsed sof|tware..X|
|000010a0| 20 2a 0a 58 20 2a 20 50 | 65 72 6d 69 73 73 69 6f | *.X * P|ermissio|
|000010b0| 6e 20 69 73 20 67 72 61 | 6e 74 65 64 20 74 6f 20 |n is gra|nted to |
|000010c0| 66 72 65 65 6c 79 20 75 | 73 65 2c 20 63 6f 70 79 |freely u|se, copy|
|000010d0| 2c 20 6d 6f 64 69 66 79 | 2c 20 61 6e 64 20 72 65 |, modify|, and re|
|000010e0| 64 69 73 74 72 69 62 75 | 74 65 0a 58 20 2a 20 74 |distribu|te.X * t|
|000010f0| 68 69 73 20 73 6f 66 74 | 77 61 72 65 2c 20 70 72 |his soft|ware, pr|
|00001100| 6f 76 69 64 65 64 20 74 | 68 61 74 20 6e 6f 20 61 |ovided t|hat no a|
|00001110| 74 74 65 6d 70 74 20 69 | 73 20 6d 61 64 65 20 74 |ttempt i|s made t|
|00001120| 6f 20 67 61 69 6e 20 70 | 72 6f 66 69 74 20 66 72 |o gain p|rofit fr|
|00001130| 6f 6d 20 69 74 2c 0a 58 | 20 2a 20 74 68 65 20 61 |om it,.X| * the a|
|00001140| 75 74 68 6f 72 20 69 73 | 20 6e 6f 74 20 63 6f 6e |uthor is| not con|
|00001150| 73 74 72 75 65 64 20 74 | 6f 20 62 65 20 6c 69 61 |strued t|o be lia|
|00001160| 62 6c 65 20 66 6f 72 20 | 61 6e 79 20 72 65 73 75 |ble for |any resu|
|00001170| 6c 74 73 20 6f 66 20 75 | 73 69 6e 67 20 74 68 65 |lts of u|sing the|
|00001180| 0a 58 20 2a 20 73 6f 66 | 74 77 61 72 65 2c 20 61 |.X * sof|tware, a|
|00001190| 6c 74 65 72 61 74 69 6f | 6e 73 20 61 72 65 20 63 |lteratio|ns are c|
|000011a0| 6c 65 61 72 6c 79 20 6d | 61 72 6b 65 64 20 61 73 |learly m|arked as|
|000011b0| 20 73 75 63 68 2c 20 61 | 6e 64 20 74 68 69 73 20 | such, a|nd this |
|000011c0| 6e 6f 74 69 63 65 20 69 | 73 0a 58 20 2a 20 6e 6f |notice i|s.X * no|
|000011d0| 74 20 6d 6f 64 69 66 69 | 65 64 2e 0a 58 20 2a 2f |t modifi|ed..X */|
|000011e0| 0a 58 0a 58 2f 2a 0a 58 | 20 2a 20 74 68 65 20 66 |.X.X/*.X| * the f|
|000011f0| 6f 6c 6c 6f 77 69 6e 67 | 20 61 72 65 20 61 72 62 |ollowing| are arb|
|00001200| 69 74 72 61 72 79 20 33 | 20 75 6e 75 73 65 64 20 |itrary 3| unused |
|00001210| 62 69 74 73 20 66 72 6f | 6d 20 74 5f 73 74 61 74 |bits fro|m t_stat|
|00001220| 65 0a 58 20 2a 20 69 6e | 20 73 79 73 2f 74 74 79 |e.X * in| sys/tty|
|00001230| 2e 68 0a 58 20 2a 2f 0a | 58 23 64 65 66 69 6e 65 |.h.X */.|X#define|
|00001240| 20 4d 52 57 41 49 54 09 | 30 31 30 30 30 30 30 30 | MRWAIT.|01000000|
|00001250| 09 2f 2a 20 6d 61 73 74 | 65 72 20 77 61 69 74 69 |./* mast|er waiti|
|00001260| 6e 67 20 69 6e 20 72 65 | 61 64 20 2a 2f 0a 58 23 |ng in re|ad */.X#|
|00001270| 64 65 66 69 6e 65 20 74 | 5f 72 6c 6f 63 09 74 5f |define t|_rloc.t_|
|00001280| 63 63 5b 30 5d 09 09 2f | 2a 20 77 63 68 61 6e 6e |cc[0]../|* wchann|
|00001290| 65 6c 20 2a 2f 0a 58 23 | 64 65 66 69 6e 65 20 4d |el */.X#|define M|
|000012a0| 57 57 41 49 54 09 30 32 | 30 30 30 30 30 30 09 2f |WWAIT.02|000000./|
|000012b0| 2a 20 6d 61 73 74 65 72 | 20 77 61 69 74 69 6e 67 |* master| waiting|
|000012c0| 20 69 6e 20 77 72 69 74 | 65 20 2a 2f 0a 58 23 64 | in writ|e */.X#d|
|000012d0| 65 66 69 6e 65 20 74 5f | 77 6c 6f 63 09 74 5f 63 |efine t_|wloc.t_c|
|000012e0| 63 5b 31 5d 09 09 2f 2a | 20 77 63 68 61 6e 6e 65 |c[1]../*| wchanne|
|000012f0| 6c 20 2a 2f 0a 58 23 64 | 65 66 69 6e 65 20 4d 4f |l */.X#d|efine MO|
|00001300| 50 45 4e 09 30 34 30 30 | 30 30 30 30 09 2f 2a 20 |PEN.0400|0000./* |
|00001310| 6d 61 73 74 65 72 20 69 | 73 20 6f 70 65 6e 20 2a |master i|s open *|
|00001320| 2f 0a 58 0a 58 23 69 6e | 63 6c 75 64 65 20 22 73 |/.X.X#in|clude "s|
|00001330| 79 73 2f 70 61 72 61 6d | 2e 68 22 0a 58 23 69 6e |ys/param|.h".X#in|
|00001340| 63 6c 75 64 65 20 22 73 | 79 73 2f 74 79 70 65 73 |clude "s|ys/types|
|00001350| 2e 68 22 0a 58 23 69 6e | 63 6c 75 64 65 20 22 73 |.h".X#in|clude "s|
|00001360| 79 73 2f 73 79 73 6d 61 | 63 72 6f 73 2e 68 22 0a |ys/sysma|cros.h".|
|00001370| 58 23 69 6e 63 6c 75 64 | 65 20 22 73 79 73 2f 73 |X#includ|e "sys/s|
|00001380| 65 67 2e 68 22 0a 58 23 | 69 6e 63 6c 75 64 65 20 |eg.h".X#|include |
|00001390| 22 73 79 73 2f 70 61 67 | 65 2e 68 22 0a 58 23 69 |"sys/pag|e.h".X#i|
|000013a0| 6e 63 6c 75 64 65 20 22 | 73 79 73 2f 73 79 73 74 |nclude "|sys/syst|
|000013b0| 6d 2e 68 22 0a 58 23 69 | 6e 63 6c 75 64 65 20 22 |m.h".X#i|nclude "|
|000013c0| 73 79 73 2f 66 69 6c 65 | 2e 68 22 0a 58 23 69 6e |sys/file|.h".X#in|
|000013d0| 63 6c 75 64 65 20 22 73 | 79 73 2f 63 6f 6e 66 2e |clude "s|ys/conf.|
|000013e0| 68 22 0a 58 23 69 66 6e | 64 65 66 20 74 6f 77 65 |h".X#ifn|def towe|
|000013f0| 72 0a 58 23 69 6e 63 6c | 75 64 65 20 22 73 79 73 |r.X#incl|ude "sys|
|00001400| 2f 72 65 67 69 6f 6e 2e | 68 22 0a 58 23 65 6e 64 |/region.|h".X#end|
|00001410| 69 66 0a 58 23 69 6e 63 | 6c 75 64 65 20 22 73 79 |if.X#inc|lude "sy|
|00001420| 73 2f 70 72 6f 63 2e 68 | 22 0a 58 23 69 6e 63 6c |s/proc.h|".X#incl|
|00001430| 75 64 65 20 22 73 79 73 | 2f 64 69 72 2e 68 22 0a |ude "sys|/dir.h".|
|00001440| 58 23 69 6e 63 6c 75 64 | 65 20 22 73 79 73 2f 74 |X#includ|e "sys/t|
|00001450| 74 79 2e 68 22 0a 58 23 | 69 6e 63 6c 75 64 65 20 |ty.h".X#|include |
|00001460| 22 73 79 73 2f 73 69 67 | 6e 61 6c 2e 68 22 0a 58 |"sys/sig|nal.h".X|
|00001470| 23 69 6e 63 6c 75 64 65 | 20 22 73 79 73 2f 75 73 |#include| "sys/us|
|00001480| 65 72 2e 68 22 0a 58 23 | 69 6e 63 6c 75 64 65 20 |er.h".X#|include |
|00001490| 22 73 79 73 2f 65 72 72 | 6e 6f 2e 68 22 0a 58 23 |"sys/err|no.h".X#|
|000014a0| 69 6e 63 6c 75 64 65 20 | 22 73 79 73 2f 74 65 72 |include |"sys/ter|
|000014b0| 6d 69 6f 2e 68 22 0a 58 | 23 69 6e 63 6c 75 64 65 |mio.h".X|#include|
|000014c0| 20 22 73 79 73 2f 74 74 | 6f 6c 64 2e 68 22 0a 58 | "sys/tt|old.h".X|
|000014d0| 0a 58 2f 2a 0a 58 20 2a | 20 66 72 6f 6d 20 63 6f |.X/*.X *| from co|
|000014e0| 6e 66 69 67 0a 58 20 2a | 2f 0a 58 65 78 74 65 72 |nfig.X *|/.Xexter|
|000014f0| 6e 20 73 74 72 75 63 74 | 20 74 74 79 20 70 74 73 |n struct| tty pts|
|00001500| 5f 74 74 79 5b 5d 3b 0a | 58 65 78 74 65 72 6e 20 |_tty[];.|Xextern |
|00001510| 69 6e 74 20 70 74 73 5f | 63 6e 74 3b 0a 58 0a 58 |int pts_|cnt;.X.X|
|00001520| 2f 2a 0a 58 20 2a 20 73 | 6c 61 76 65 20 73 69 64 |/*.X * s|lave sid|
|00001530| 65 20 69 73 20 61 20 66 | 61 69 72 6c 79 20 73 74 |e is a f|airly st|
|00001540| 61 6e 64 61 72 64 20 73 | 79 73 74 65 6d 20 56 20 |andard s|ystem V |
|00001550| 74 74 79 20 64 72 69 76 | 65 72 0a 58 20 2a 2f 0a |tty driv|er.X */.|
|00001560| 58 70 74 73 6f 70 65 6e | 28 64 65 76 2c 20 66 6c |Xptsopen|(dev, fl|
|00001570| 61 67 29 0a 58 7b 0a 58 | 09 72 65 67 69 73 74 65 |ag).X{.X|.registe|
|00001580| 72 20 73 74 72 75 63 74 | 20 74 74 79 20 2a 74 70 |r struct| tty *tp|
|00001590| 20 3d 20 26 70 74 73 5f | 74 74 79 5b 64 65 76 5d | = &pts_|tty[dev]|
|000015a0| 3b 0a 58 09 65 78 74 65 | 72 6e 20 69 6e 74 20 70 |;.X.exte|rn int p|
|000015b0| 74 73 70 72 6f 63 28 29 | 3b 0a 58 0a 58 09 69 66 |tsproc()|;.X.X.if|
|000015c0| 20 28 64 65 76 20 3e 3d | 20 70 74 73 5f 63 6e 74 | (dev >=| pts_cnt|
|000015d0| 29 20 7b 0a 58 09 09 75 | 2e 75 5f 65 72 72 6f 72 |) {.X..u|.u_error|
|000015e0| 20 3d 20 45 4e 58 49 4f | 3b 0a 58 09 09 72 65 74 | = ENXIO|;.X..ret|
|000015f0| 75 72 6e 3b 0a 58 09 7d | 0a 58 09 69 66 20 28 28 |urn;.X.}|.X.if ((|
|00001600| 74 70 2d 3e 74 5f 73 74 | 61 74 65 20 26 20 28 49 |tp->t_st|ate & (I|
|00001610| 53 4f 50 45 4e 7c 57 4f | 50 45 4e 29 29 20 3d 3d |SOPEN|WO|PEN)) ==|
|00001620| 20 30 29 20 7b 0a 58 09 | 09 74 74 69 6e 69 74 28 | 0) {.X.|.ttinit(|
|00001630| 74 70 29 3b 0a 58 09 09 | 74 70 2d 3e 74 5f 70 72 |tp);.X..|tp->t_pr|
|00001640| 6f 63 20 3d 20 70 74 73 | 70 72 6f 63 3b 0a 58 09 |oc = pts|proc;.X.|
|00001650| 7d 0a 58 09 2f 2a 0a 58 | 09 20 2a 20 69 66 20 6d |}.X./*.X|. * if m|
|00001660| 61 73 74 65 72 20 69 73 | 20 73 74 69 6c 6c 20 6f |aster is| still o|
|00001670| 70 65 6e 2c 20 64 6f 6e | 27 74 20 77 61 69 74 20 |pen, don|'t wait |
|00001680| 66 6f 72 20 63 61 72 72 | 69 65 72 0a 58 09 20 2a |for carr|ier.X. *|
|00001690| 2f 0a 58 09 69 66 20 28 | 74 70 2d 3e 74 5f 73 74 |/.X.if (|tp->t_st|
|000016a0| 61 74 65 20 26 20 4d 4f | 50 45 4e 29 0a 58 09 09 |ate & MO|PEN).X..|
|000016b0| 74 70 2d 3e 74 5f 73 74 | 61 74 65 20 7c 3d 20 43 |tp->t_st|ate |= C|
|000016c0| 41 52 52 5f 4f 4e 3b 0a | 58 09 69 66 20 28 21 28 |ARR_ON;.|X.if (!(|
|000016d0| 66 6c 61 67 20 26 20 46 | 4e 44 45 4c 41 59 29 29 |flag & F|NDELAY))|
|000016e0| 20 7b 0a 58 09 09 77 68 | 69 6c 65 20 28 28 74 70 | {.X..wh|ile ((tp|
|000016f0| 2d 3e 74 5f 73 74 61 74 | 65 20 26 20 43 41 52 52 |->t_stat|e & CARR|
|00001700| 5f 4f 4e 29 20 3d 3d 20 | 30 29 20 7b 0a 58 09 09 |_ON) == |0) {.X..|
|00001710| 09 74 70 2d 3e 74 5f 73 | 74 61 74 65 20 7c 3d 20 |.tp->t_s|tate |= |
|00001720| 57 4f 50 45 4e 3b 0a 58 | 09 09 09 73 6c 65 65 70 |WOPEN;.X|...sleep|
|00001730| 28 28 63 61 64 64 72 5f | 74 29 26 74 70 2d 3e 74 |((caddr_|t)&tp->t|
|00001740| 5f 63 61 6e 71 2c 20 54 | 54 49 50 52 49 29 3b 0a |_canq, T|TIPRI);.|
|00001750| 58 09 09 7d 0a 58 09 7d | 0a 58 09 28 2a 6c 69 6e |X..}.X.}|.X.(*lin|
|00001760| 65 73 77 5b 74 70 2d 3e | 74 5f 6c 69 6e 65 5d 2e |esw[tp->|t_line].|
|00001770| 6c 5f 6f 70 65 6e 29 28 | 74 70 29 3b 0a 58 7d 0a |l_open)(|tp);.X}.|
|00001780| 58 0a 58 70 74 73 77 72 | 69 74 65 28 64 65 76 29 |X.Xptswr|ite(dev)|
|00001790| 0a 58 7b 0a 58 09 72 65 | 67 69 73 74 65 72 20 73 |.X{.X.re|gister s|
|000017a0| 74 72 75 63 74 20 74 74 | 79 20 2a 74 70 20 3d 20 |truct tt|y *tp = |
|000017b0| 26 70 74 73 5f 74 74 79 | 5b 64 65 76 5d 3b 0a 58 |&pts_tty|[dev];.X|
|000017c0| 0a 58 09 28 2a 6c 69 6e | 65 73 77 5b 74 70 2d 3e |.X.(*lin|esw[tp->|
|000017d0| 74 5f 6c 69 6e 65 5d 2e | 6c 5f 77 72 69 74 65 29 |t_line].|l_write)|
|000017e0| 28 74 70 29 3b 0a 58 7d | 0a 58 0a 58 70 74 73 72 |(tp);.X}|.X.Xptsr|
|000017f0| 65 61 64 28 64 65 76 29 | 0a 58 7b 0a 58 09 72 65 |ead(dev)|.X{.X.re|
|00001800| 67 69 73 74 65 72 20 73 | 74 72 75 63 74 20 74 74 |gister s|truct tt|
|00001810| 79 20 2a 74 70 20 3d 20 | 26 70 74 73 5f 74 74 79 |y *tp = |&pts_tty|
|00001820| 5b 64 65 76 5d 3b 0a 58 | 0a 58 09 28 2a 6c 69 6e |[dev];.X|.X.(*lin|
|00001830| 65 73 77 5b 74 70 2d 3e | 74 5f 6c 69 6e 65 5d 2e |esw[tp->|t_line].|
|00001840| 6c 5f 72 65 61 64 29 28 | 74 70 29 3b 0a 58 7d 0a |l_read)(|tp);.X}.|
|00001850| 58 0a 58 70 74 73 63 6c | 6f 73 65 28 64 65 76 29 |X.Xptscl|ose(dev)|
|00001860| 0a 58 7b 0a 58 09 72 65 | 67 69 73 74 65 72 20 73 |.X{.X.re|gister s|
|00001870| 74 72 75 63 74 20 74 74 | 79 20 2a 74 70 20 3d 20 |truct tt|y *tp = |
|00001880| 26 70 74 73 5f 74 74 79 | 5b 64 65 76 5d 3b 0a 58 |&pts_tty|[dev];.X|
|00001890| 09 0a 58 09 28 2a 6c 69 | 6e 65 73 77 5b 74 70 2d |..X.(*li|nesw[tp-|
|000018a0| 3e 74 5f 6c 69 6e 65 5d | 2e 6c 5f 63 6c 6f 73 65 |>t_line]|.l_close|
|000018b0| 29 28 74 70 29 3b 0a 58 | 09 74 70 2d 3e 74 5f 73 |)(tp);.X|.tp->t_s|
|000018c0| 74 61 74 65 20 26 3d 20 | 7e 43 41 52 52 5f 4f 4e |tate &= |~CARR_ON|
|000018d0| 3b 0a 58 7d 0a 58 0a 58 | 70 74 73 69 6f 63 74 6c |;.X}.X.X|ptsioctl|
|000018e0| 28 64 65 76 2c 20 63 6d | 64 2c 20 61 72 67 2c 20 |(dev, cm|d, arg, |
|000018f0| 6d 6f 64 65 29 0a 58 7b | 0a 58 09 72 65 67 69 73 |mode).X{|.X.regis|
|00001900| 74 65 72 20 73 74 72 75 | 63 74 20 74 74 79 20 2a |ter stru|ct tty *|
|00001910| 74 70 20 3d 20 26 70 74 | 73 5f 74 74 79 5b 64 65 |tp = &pt|s_tty[de|
|00001920| 76 5d 3b 0a 58 0a 58 09 | 74 74 69 6f 63 6f 6d 28 |v];.X.X.|ttiocom(|
|00001930| 74 70 2c 20 63 6d 64 2c | 20 61 72 67 2c 20 6d 6f |tp, cmd,| arg, mo|
|00001940| 64 65 29 3b 0a 58 7d 0a | 58 0a 58 70 74 73 70 72 |de);.X}.|X.Xptspr|
|00001950| 6f 63 28 74 70 2c 20 63 | 6d 64 29 0a 58 72 65 67 |oc(tp, c|md).Xreg|
|00001960| 69 73 74 65 72 20 73 74 | 72 75 63 74 20 74 74 79 |ister st|ruct tty|
|00001970| 20 2a 74 70 3b 0a 58 7b | 0a 58 09 72 65 67 69 73 | *tp;.X{|.X.regis|
|00001980| 74 65 72 20 73 74 72 75 | 63 74 20 63 63 62 6c 6f |ter stru|ct ccblo|
|00001990| 63 6b 20 2a 74 62 75 66 | 3b 0a 58 09 65 78 74 65 |ck *tbuf|;.X.exte|
|000019a0| 72 6e 20 74 74 72 73 74 | 72 74 28 29 3b 0a 58 0a |rn ttrst|rt();.X.|
|000019b0| 58 09 73 77 69 74 63 68 | 20 28 63 6d 64 29 20 7b |X.switch| (cmd) {|
|000019c0| 0a 58 09 63 61 73 65 20 | 54 5f 54 49 4d 45 3a 0a |.X.case |T_TIME:.|
|000019d0| 58 23 69 66 64 65 66 20 | 44 45 42 55 47 0a 58 09 |X#ifdef |DEBUG.X.|
|000019e0| 09 70 72 69 6e 74 66 28 | 22 54 5f 54 49 4d 45 5c |.printf(|"T_TIME\|
|000019f0| 6e 22 29 3b 0a 58 23 65 | 6e 64 69 66 0a 58 09 09 |n");.X#e|ndif.X..|
|00001a00| 74 70 2d 3e 74 5f 73 74 | 61 74 65 20 26 3d 20 7e |tp->t_st|ate &= ~|
|00001a10| 54 49 4d 45 4f 55 54 3b | 0a 58 09 09 67 6f 74 6f |TIMEOUT;|.X..goto|
|00001a20| 20 73 74 61 72 74 3b 0a | 58 09 63 61 73 65 20 54 | start;.|X.case T|
|00001a30| 5f 57 46 4c 55 53 48 3a | 0a 58 23 69 66 64 65 66 |_WFLUSH:|.X#ifdef|
|00001a40| 20 44 45 42 55 47 0a 58 | 09 09 70 72 69 6e 74 66 | DEBUG.X|..printf|
|00001a50| 28 22 54 5f 57 46 4c 55 | 53 48 5c 6e 22 29 3b 0a |("T_WFLU|SH\n");.|
|00001a60| 58 23 65 6e 64 69 66 0a | 58 09 09 74 70 2d 3e 74 |X#endif.|X..tp->t|
|00001a70| 5f 74 62 75 66 2e 63 5f | 73 69 7a 65 20 20 2d 3d |_tbuf.c_|size -=|
|00001a80| 20 74 70 2d 3e 74 5f 74 | 62 75 66 2e 63 5f 63 6f | tp->t_t|buf.c_co|
|00001a90| 75 6e 74 3b 0a 58 09 09 | 74 70 2d 3e 74 5f 74 62 |unt;.X..|tp->t_tb|
|00001aa0| 75 66 2e 63 5f 63 6f 75 | 6e 74 20 3d 20 30 3b 0a |uf.c_cou|nt = 0;.|
|00001ab0| 58 09 09 2f 2a 20 66 61 | 6c 6c 20 74 68 72 6f 75 |X../* fa|ll throu|
|00001ac0| 67 68 20 2a 2f 0a 58 09 | 63 61 73 65 20 54 5f 52 |gh */.X.|case T_R|
|00001ad0| 45 53 55 4d 45 3a 0a 58 | 23 69 66 64 65 66 20 44 |ESUME:.X|#ifdef D|
|00001ae0| 45 42 55 47 0a 58 09 09 | 70 72 69 6e 74 66 28 22 |EBUG.X..|printf("|
|00001af0| 54 5f 52 45 53 55 4d 45 | 5c 6e 22 29 3b 0a 58 23 |T_RESUME|\n");.X#|
|00001b00| 65 6e 64 69 66 0a 58 09 | 09 74 70 2d 3e 74 5f 73 |endif.X.|.tp->t_s|
|00001b10| 74 61 74 65 20 26 3d 20 | 7e 54 54 53 54 4f 50 3b |tate &= |~TTSTOP;|
|00001b20| 0a 58 09 09 2f 2a 20 66 | 61 6c 6c 20 74 68 72 6f |.X../* f|all thro|
|00001b30| 75 67 68 20 2a 2f 0a 58 | 09 63 61 73 65 20 54 5f |ugh */.X|.case T_|
|00001b40| 4f 55 54 50 55 54 3a 0a | 58 23 69 66 64 65 66 20 |OUTPUT:.|X#ifdef |
|00001b50| 44 45 42 55 47 0a 58 09 | 09 70 72 69 6e 74 66 28 |DEBUG.X.|.printf(|
|00001b60| 22 54 5f 4f 55 54 50 55 | 54 5c 6e 22 29 3b 0a 58 |"T_OUTPU|T\n");.X|
|00001b70| 23 65 6e 64 69 66 0a 58 | 73 74 61 72 74 3a 0a 58 |#endif.X|start:.X|
|00001b80| 09 09 69 66 20 28 74 70 | 2d 3e 74 5f 73 74 61 74 |..if (tp|->t_stat|
|00001b90| 65 20 26 20 28 54 54 53 | 54 4f 50 7c 54 49 4d 45 |e & (TTS|TOP|TIME|
|00001ba0| 4f 55 54 29 29 0a 58 09 | 09 09 62 72 65 61 6b 3b |OUT)).X.|..break;|
|00001bb0| 0a 58 09 09 74 62 75 66 | 20 3d 20 26 74 70 2d 3e |.X..tbuf| = &tp->|
|00001bc0| 74 5f 74 62 75 66 3b 0a | 58 09 09 69 66 20 28 74 |t_tbuf;.|X..if (t|
|00001bd0| 62 75 66 2d 3e 63 5f 70 | 74 72 20 3d 3d 20 4e 55 |buf->c_p|tr == NU|
|00001be0| 4c 4c 20 7c 7c 20 74 62 | 75 66 2d 3e 63 5f 63 6f |LL || tb|uf->c_co|
|00001bf0| 75 6e 74 20 3d 3d 20 30 | 29 20 7b 0a 58 09 09 09 |unt == 0|) {.X...|
|00001c00| 69 66 20 28 74 62 75 66 | 2d 3e 63 5f 70 74 72 29 |if (tbuf|->c_ptr)|
|00001c10| 0a 58 09 09 09 09 74 62 | 75 66 2d 3e 63 5f 70 74 |.X....tb|uf->c_pt|
|00001c20| 72 20 2d 3d 20 74 62 75 | 66 2d 3e 63 5f 73 69 7a |r -= tbu|f->c_siz|
|00001c30| 65 3b 0a 58 09 09 09 69 | 66 20 28 21 28 43 50 52 |e;.X...i|f (!(CPR|
|00001c40| 45 53 20 26 20 28 2a 6c | 69 6e 65 73 77 5b 74 70 |ES & (*l|inesw[tp|
|00001c50| 2d 3e 74 5f 6c 69 6e 65 | 5d 2e 6c 5f 6f 75 74 70 |->t_line|].l_outp|
|00001c60| 75 74 29 28 74 70 29 29 | 29 0a 58 09 09 09 09 62 |ut)(tp))|).X....b|
|00001c70| 72 65 61 6b 3b 0a 58 09 | 09 7d 0a 58 09 09 69 66 |reak;.X.|.}.X..if|
|00001c80| 20 28 74 62 75 66 2d 3e | 63 5f 63 6f 75 6e 74 20 | (tbuf->|c_count |
|00001c90| 26 26 20 28 74 70 2d 3e | 74 5f 73 74 61 74 65 20 |&& (tp->|t_state |
|00001ca0| 26 20 4d 52 57 41 49 54 | 29 29 20 7b 0a 58 09 09 |& MRWAIT|)) {.X..|
|00001cb0| 09 74 70 2d 3e 74 5f 73 | 74 61 74 65 20 26 3d 20 |.tp->t_s|tate &= |
|00001cc0| 7e 4d 52 57 41 49 54 3b | 0a 58 09 09 09 77 61 6b |~MRWAIT;|.X...wak|
|00001cd0| 65 75 70 28 28 63 61 64 | 64 72 5f 74 29 26 74 70 |eup((cad|dr_t)&tp|
|00001ce0| 2d 3e 74 5f 72 6c 6f 63 | 29 3b 0a 58 09 09 7d 0a |->t_rloc|);.X..}.|
|00001cf0| 58 09 09 62 72 65 61 6b | 3b 0a 58 09 63 61 73 65 |X..break|;.X.case|
|00001d00| 20 54 5f 53 55 53 50 45 | 4e 44 3a 0a 58 23 69 66 | T_SUSPE|ND:.X#if|
|00001d10| 64 65 66 20 44 45 42 55 | 47 0a 58 09 09 70 72 69 |def DEBU|G.X..pri|
|00001d20| 6e 74 66 28 22 54 5f 53 | 55 53 50 45 4e 44 5c 6e |ntf("T_S|USPEND\n|
|00001d30| 22 29 3b 0a 58 23 65 6e | 64 69 66 0a 58 09 09 74 |");.X#en|dif.X..t|
|00001d40| 70 2d 3e 74 5f 73 74 61 | 74 65 20 7c 3d 20 54 54 |p->t_sta|te |= TT|
|00001d50| 53 54 4f 50 3b 0a 58 09 | 09 62 72 65 61 6b 3b 0a |STOP;.X.|.break;.|
|00001d60| 58 09 63 61 73 65 20 54 | 5f 42 4c 4f 43 4b 3a 0a |X.case T|_BLOCK:.|
|00001d70| 58 23 69 66 64 65 66 20 | 44 45 42 55 47 0a 58 09 |X#ifdef |DEBUG.X.|
|00001d80| 09 70 72 69 6e 74 66 28 | 22 54 5f 42 4c 4f 43 4b |.printf(|"T_BLOCK|
|00001d90| 5c 6e 22 29 3b 0a 58 23 | 65 6e 64 69 66 0a 58 09 |\n");.X#|endif.X.|
|00001da0| 09 2f 2a 0a 58 09 09 20 | 2a 20 74 68 65 20 63 68 |./*.X.. |* the ch|
|00001db0| 65 63 6b 20 66 6f 72 20 | 49 43 41 4e 4f 4e 20 61 |eck for |ICANON a|
|00001dc0| 70 70 65 61 72 73 20 74 | 6f 20 62 65 20 6e 65 63 |ppears t|o be nec|
|00001dd0| 63 65 73 73 61 72 79 0a | 58 09 09 20 2a 20 74 6f |cessary.|X.. * to|
|00001de0| 20 61 76 6f 69 64 20 61 | 20 68 61 6e 67 20 77 68 | avoid a| hang wh|
|00001df0| 65 6e 20 6f 76 65 72 66 | 6c 6f 77 69 6e 67 20 69 |en overf|lowing i|
|00001e00| 6e 70 75 74 0a 58 09 09 | 20 2a 2f 0a 58 09 09 69 |nput.X..| */.X..i|
|00001e10| 66 20 28 28 74 70 2d 3e | 74 5f 69 66 6c 61 67 20 |f ((tp->|t_iflag |
|00001e20| 26 20 49 43 41 4e 4f 4e | 29 20 3d 3d 20 30 29 0a |& ICANON|) == 0).|
|00001e30| 58 09 09 09 74 70 2d 3e | 74 5f 73 74 61 74 65 20 |X...tp->|t_state |
|00001e40| 7c 3d 20 54 42 4c 4f 43 | 4b 3b 0a 58 09 09 62 72 ||= TBLOC|K;.X..br|
|00001e50| 65 61 6b 3b 0a 58 09 63 | 61 73 65 20 54 5f 42 52 |eak;.X.c|ase T_BR|
|00001e60| 45 41 4b 3a 0a 58 23 69 | 66 64 65 66 20 44 45 42 |EAK:.X#i|fdef DEB|
|00001e70| 55 47 0a 58 09 09 70 72 | 69 6e 74 66 28 22 54 5f |UG.X..pr|intf("T_|
|00001e80| 42 52 45 41 4b 5c 6e 22 | 29 3b 0a 58 23 65 6e 64 |BREAK\n"|);.X#end|
|00001e90| 69 66 0a 58 09 09 74 70 | 2d 3e 74 5f 73 74 61 74 |if.X..tp|->t_stat|
|00001ea0| 65 20 7c 3d 20 54 49 4d | 45 4f 55 54 3b 0a 58 09 |e |= TIM|EOUT;.X.|
|00001eb0| 09 74 69 6d 65 6f 75 74 | 28 74 74 72 73 74 72 74 |.timeout|(ttrstrt|
|00001ec0| 2c 20 74 70 2c 20 48 5a | 2f 34 29 3b 0a 58 09 09 |, tp, HZ|/4);.X..|
|00001ed0| 62 72 65 61 6b 3b 0a 58 | 23 69 66 64 65 66 20 54 |break;.X|#ifdef T|
|00001ee0| 5f 4c 4f 47 5f 46 4c 55 | 53 48 0a 58 09 63 61 73 |_LOG_FLU|SH.X.cas|
|00001ef0| 65 20 54 5f 4c 4f 47 5f | 46 4c 55 53 48 3a 0a 58 |e T_LOG_|FLUSH:.X|
|00001f00| 23 69 66 64 65 66 20 44 | 45 42 55 47 0a 58 09 09 |#ifdef D|EBUG.X..|
|00001f10| 70 72 69 6e 74 66 28 22 | 54 5f 4c 4f 47 5f 46 4c |printf("|T_LOG_FL|
|00001f20| 55 53 48 5c 6e 22 29 3b | 0a 58 23 65 6e 64 69 66 |USH\n");|.X#endif|
|00001f30| 0a 58 09 63 61 73 65 20 | 54 5f 52 46 4c 55 53 48 |.X.case |T_RFLUSH|
|00001f40| 3a 0a 58 23 69 66 64 65 | 66 20 44 45 42 55 47 0a |:.X#ifde|f DEBUG.|
|00001f50| 58 09 09 70 72 69 6e 74 | 66 28 22 54 5f 52 46 4c |X..print|f("T_RFL|
|00001f60| 55 53 48 5c 6e 22 29 3b | 0a 58 23 65 6e 64 69 66 |USH\n");|.X#endif|
|00001f70| 0a 58 09 09 69 66 20 28 | 21 28 74 70 2d 3e 74 5f |.X..if (|!(tp->t_|
|00001f80| 73 74 61 74 65 20 26 20 | 54 42 4c 4f 43 4b 29 29 |state & |TBLOCK))|
|00001f90| 0a 58 09 09 09 62 72 65 | 61 6b 3b 0a 58 09 09 2f |.X...bre|ak;.X../|
|00001fa0| 2a 20 66 61 6c 6c 20 74 | 68 72 6f 75 67 68 20 2a |* fall t|hrough *|
|00001fb0| 2f 0a 58 09 63 61 73 65 | 20 54 5f 55 4e 42 4c 4f |/.X.case| T_UNBLO|
|00001fc0| 43 4b 3a 0a 58 23 69 66 | 64 65 66 20 44 45 42 55 |CK:.X#if|def DEBU|
|00001fd0| 47 0a 58 09 09 70 72 69 | 6e 74 66 28 22 54 5f 55 |G.X..pri|ntf("T_U|
|00001fe0| 4e 42 4c 4f 43 4b 5c 6e | 22 29 3b 0a 58 23 65 6e |NBLOCK\n|");.X#en|
|00001ff0| 64 69 66 0a 58 09 09 74 | 70 2d 3e 74 5f 73 74 61 |dif.X..t|p->t_sta|
|00002000| 74 65 20 26 3d 20 7e 28 | 54 54 58 4f 46 46 7c 54 |te &= ~(|TTXOFF|T|
|00002010| 42 4c 4f 43 4b 29 3b 0a | 58 09 09 2f 2a 20 66 61 |BLOCK);.|X../* fa|
|00002020| 6c 6c 20 74 68 72 6f 75 | 67 68 20 2a 2f 0a 58 09 |ll throu|gh */.X.|
|00002030| 63 61 73 65 20 54 5f 49 | 4e 50 55 54 3a 0a 58 23 |case T_I|NPUT:.X#|
|00002040| 69 66 64 65 66 20 44 45 | 42 55 47 0a 58 09 09 70 |ifdef DE|BUG.X..p|
|00002050| 72 69 6e 74 66 28 22 54 | 5f 49 4e 50 55 54 5c 6e |rintf("T|_INPUT\n|
|00002060| 22 29 3b 0a 58 23 65 6e | 64 69 66 0a 58 09 09 69 |");.X#en|dif.X..i|
|00002070| 66 20 28 74 70 2d 3e 74 | 5f 73 74 61 74 65 20 26 |f (tp->t|_state &|
|00002080| 20 4d 57 57 41 49 54 29 | 20 7b 0a 58 09 09 09 74 | MWWAIT)| {.X...t|
|00002090| 70 2d 3e 74 5f 73 74 61 | 74 65 20 26 3d 20 7e 4d |p->t_sta|te &= ~M|
|000020a0| 57 57 41 49 54 3b 0a 58 | 09 09 09 77 61 6b 65 75 |WWAIT;.X|...wakeu|
|000020b0| 70 28 28 63 61 64 64 72 | 5f 74 29 26 74 70 2d 3e |p((caddr|_t)&tp->|
|000020c0| 74 5f 77 6c 6f 63 29 3b | 0a 58 09 09 7d 0a 58 09 |t_wloc);|.X..}.X.|
|000020d0| 09 62 72 65 61 6b 3b 0a | 58 23 69 66 64 65 66 20 |.break;.|X#ifdef |
|000020e0| 44 45 42 55 47 0a 58 09 | 64 65 66 61 75 6c 74 3a |DEBUG.X.|default:|
|000020f0| 0a 58 09 09 70 72 69 6e | 74 66 28 22 70 74 73 70 |.X..prin|tf("ptsp|
|00002100| 72 6f 63 3a 20 63 6d 64 | 20 25 64 5c 6e 22 2c 63 |roc: cmd| %d\n",c|
|00002110| 6d 64 29 3b 0a 58 23 65 | 6e 64 69 66 0a 58 09 7d |md);.X#e|ndif.X.}|
|00002120| 0a 58 7d 0a 58 0a 58 2f | 2a 0a 58 20 2a 20 6d 61 |.X}.X.X/|*.X * ma|
|00002130| 73 74 65 72 20 70 61 72 | 74 20 2d 20 6e 6f 74 20 |ster par|t - not |
|00002140| 61 63 74 75 61 6c 6c 79 | 20 6c 69 6b 65 20 61 20 |actually| like a |
|00002150| 74 74 79 0a 58 20 2a 2f | 0a 58 0a 58 70 74 6d 6f |tty.X */|.X.Xptmo|
|00002160| 70 65 6e 28 64 65 76 2c | 20 66 6c 61 67 29 0a 58 |pen(dev,| flag).X|
|00002170| 7b 0a 58 09 72 65 67 69 | 73 74 65 72 20 73 74 72 |{.X.regi|ster str|
|00002180| 75 63 74 20 74 74 79 20 | 2a 74 70 20 3d 20 26 70 |uct tty |*tp = &p|
|00002190| 74 73 5f 74 74 79 5b 64 | 65 76 5d 3b 0a 58 0a 58 |ts_tty[d|ev];.X.X|
|000021a0| 23 69 66 64 65 66 20 44 | 45 42 55 47 0a 58 09 70 |#ifdef D|EBUG.X.p|
|000021b0| 72 69 6e 74 66 28 22 70 | 74 6d 6f 70 65 6e 28 25 |rintf("p|tmopen(%|
|000021c0| 64 29 5c 6e 22 2c 64 65 | 76 29 3b 0a 58 23 65 6e |d)\n",de|v);.X#en|
|000021d0| 64 69 66 0a 58 09 69 66 | 20 28 64 65 76 20 3e 3d |dif.X.if| (dev >=|
|000021e0| 20 70 74 73 5f 63 6e 74 | 29 20 7b 0a 58 09 09 75 | pts_cnt|) {.X..u|
|000021f0| 2e 75 5f 65 72 72 6f 72 | 20 3d 20 45 4e 58 49 4f |.u_error| = ENXIO|
|00002200| 3b 0a 58 09 09 72 65 74 | 75 72 6e 3b 0a 58 09 7d |;.X..ret|urn;.X.}|
|00002210| 0a 58 09 2f 2a 0a 58 09 | 20 2a 20 61 6c 6c 6f 77 |.X./*.X.| * allow|
|00002220| 20 6f 6e 6c 79 20 6f 6e | 65 20 63 6f 6e 74 72 6f | only on|e contro|
|00002230| 6c 6c 69 6e 67 20 70 72 | 6f 63 65 73 73 0a 58 09 |lling pr|ocess.X.|
|00002240| 20 2a 2f 0a 58 09 69 66 | 20 28 74 70 2d 3e 74 5f | */.X.if| (tp->t_|
|00002250| 73 74 61 74 65 20 26 20 | 4d 4f 50 45 4e 29 20 7b |state & |MOPEN) {|
|00002260| 0a 58 09 09 75 2e 75 5f | 65 72 72 6f 72 20 3d 20 |.X..u.u_|error = |
|00002270| 45 42 55 53 59 3b 0a 58 | 09 09 72 65 74 75 72 6e |EBUSY;.X|..return|
|00002280| 3b 0a 58 09 7d 0a 58 09 | 69 66 20 28 74 70 2d 3e |;.X.}.X.|if (tp->|
|00002290| 74 5f 73 74 61 74 65 20 | 26 20 57 4f 50 45 4e 29 |t_state |& WOPEN)|
|000022a0| 0a 58 09 09 77 61 6b 65 | 75 70 28 28 63 61 64 64 |.X..wake|up((cadd|
|000022b0| 72 5f 74 29 26 74 70 2d | 3e 74 5f 63 61 6e 71 29 |r_t)&tp-|>t_canq)|
|000022c0| 3b 0a 58 09 74 70 2d 3e | 74 5f 73 74 61 74 65 20 |;.X.tp->|t_state |
|000022d0| 7c 3d 20 43 41 52 52 5f | 4f 4e 7c 4d 4f 50 45 4e ||= CARR_|ON|MOPEN|
|000022e0| 3b 0a 58 7d 0a 58 0a 58 | 70 74 6d 72 65 61 64 28 |;.X}.X.X|ptmread(|
|000022f0| 64 65 76 29 0a 58 7b 0a | 58 09 72 65 67 69 73 74 |dev).X{.|X.regist|
|00002300| 65 72 20 73 74 72 75 63 | 74 20 74 74 79 20 2a 74 |er struc|t tty *t|
|00002310| 70 20 3d 20 26 70 74 73 | 5f 74 74 79 5b 64 65 76 |p = &pts|_tty[dev|
|00002320| 5d 3b 0a 58 09 72 65 67 | 69 73 74 65 72 20 6e 3b |];.X.reg|ister n;|
|00002330| 0a 58 0a 58 09 69 66 20 | 28 28 74 70 2d 3e 74 5f |.X.X.if |((tp->t_|
|00002340| 73 74 61 74 65 20 26 20 | 49 53 4f 50 45 4e 29 20 |state & |ISOPEN) |
|00002350| 3d 3d 20 30 29 20 7b 0a | 58 09 09 75 2e 75 5f 65 |== 0) {.|X..u.u_e|
|00002360| 72 72 6f 72 20 3d 20 45 | 49 4f 3b 0a 58 09 09 72 |rror = E|IO;.X..r|
|00002370| 65 74 75 72 6e 3b 0a 58 | 09 7d 0a 58 23 69 66 64 |eturn;.X|.}.X#ifd|
|00002380| 65 66 20 44 45 42 55 47 | 0a 58 09 70 72 69 6e 74 |ef DEBUG|.X.print|
|00002390| 66 28 22 70 74 6d 72 65 | 61 64 28 25 64 29 5c 6e |f("ptmre|ad(%d)\n|
|000023a0| 22 2c 64 65 76 29 3b 0a | 58 23 65 6e 64 69 66 0a |",dev);.|X#endif.|
|000023b0| 58 09 77 68 69 6c 65 20 | 28 75 2e 75 5f 63 6f 75 |X.while |(u.u_cou|
|000023c0| 6e 74 29 20 7b 0a 58 09 | 09 70 74 73 70 72 6f 63 |nt) {.X.|.ptsproc|
|000023d0| 28 74 70 2c 20 54 5f 4f | 55 54 50 55 54 29 3b 0a |(tp, T_O|UTPUT);.|
|000023e0| 58 09 09 69 66 20 28 28 | 74 70 2d 3e 74 5f 73 74 |X..if ((|tp->t_st|
|000023f0| 61 74 65 20 26 20 28 54 | 54 53 54 4f 50 7c 54 49 |ate & (T|TSTOP|TI|
|00002400| 4d 45 4f 55 54 29 29 0a | 58 09 09 20 20 20 20 7c |MEOUT)).|X.. ||
|00002410| 7c 20 74 70 2d 3e 74 5f | 74 62 75 66 2e 63 5f 70 || tp->t_|tbuf.c_p|
|00002420| 74 72 20 3d 3d 20 4e 55 | 4c 4c 20 7c 7c 20 74 70 |tr == NU|LL || tp|
|00002430| 2d 3e 74 5f 74 62 75 66 | 2e 63 5f 63 6f 75 6e 74 |->t_tbuf|.c_count|
|00002440| 20 3d 3d 20 30 29 20 7b | 0a 58 09 09 09 69 66 20 | == 0) {|.X...if |
|00002450| 28 75 2e 75 5f 66 6d 6f | 64 65 20 26 20 46 4e 44 |(u.u_fmo|de & FND|
|00002460| 45 4c 41 59 29 0a 58 09 | 09 09 09 62 72 65 61 6b |ELAY).X.|...break|
|00002470| 3b 0a 58 09 09 09 74 70 | 2d 3e 74 5f 73 74 61 74 |;.X...tp|->t_stat|
|00002480| 65 20 7c 3d 20 4d 52 57 | 41 49 54 3b 0a 58 09 09 |e |= MRW|AIT;.X..|
|00002490| 09 73 6c 65 65 70 28 28 | 63 61 64 64 72 5f 74 29 |.sleep((|caddr_t)|
|000024a0| 26 74 70 2d 3e 74 5f 72 | 6c 6f 63 2c 20 54 54 49 |&tp->t_r|loc, TTI|
|000024b0| 50 52 49 29 3b 0a 58 09 | 09 09 63 6f 6e 74 69 6e |PRI);.X.|..contin|
|000024c0| 75 65 3b 0a 58 09 09 7d | 0a 58 09 09 6e 20 3d 20 |ue;.X..}|.X..n = |
|000024d0| 6d 69 6e 28 75 2e 75 5f | 63 6f 75 6e 74 2c 20 74 |min(u.u_|count, t|
|000024e0| 70 2d 3e 74 5f 74 62 75 | 66 2e 63 5f 63 6f 75 6e |p->t_tbu|f.c_coun|
|000024f0| 74 29 3b 0a 58 09 09 69 | 66 20 28 6e 29 20 7b 0a |t);.X..i|f (n) {.|
|00002500| 58 09 09 09 69 66 20 28 | 63 6f 70 79 6f 75 74 28 |X...if (|copyout(|
|00002510| 74 70 2d 3e 74 5f 74 62 | 75 66 2e 63 5f 70 74 72 |tp->t_tb|uf.c_ptr|
|00002520| 2c 20 75 2e 75 5f 62 61 | 73 65 2c 20 6e 29 29 20 |, u.u_ba|se, n)) |
|00002530| 7b 0a 58 09 09 09 09 75 | 2e 75 5f 65 72 72 6f 72 |{.X....u|.u_error|
|00002540| 20 3d 20 45 46 41 55 4c | 54 3b 0a 58 09 09 09 09 | = EFAUL|T;.X....|
|00002550| 62 72 65 61 6b 3b 0a 58 | 09 09 09 7d 0a 58 09 09 |break;.X|...}.X..|
|00002560| 09 74 70 2d 3e 74 5f 74 | 62 75 66 2e 63 5f 63 6f |.tp->t_t|buf.c_co|
|00002570| 75 6e 74 20 2d 3d 20 6e | 3b 0a 58 09 09 09 74 70 |unt -= n|;.X...tp|
|00002580| 2d 3e 74 5f 74 62 75 66 | 2e 63 5f 70 74 72 20 2b |->t_tbuf|.c_ptr +|
|00002590| 3d 20 6e 3b 0a 58 09 09 | 09 75 2e 75 5f 62 61 73 |= n;.X..|.u.u_bas|
|000025a0| 65 20 2b 3d 20 6e 3b 0a | 58 09 09 09 75 2e 75 5f |e += n;.|X...u.u_|
|000025b0| 63 6f 75 6e 74 20 2d 3d | 20 6e 3b 0a 58 09 09 7d |count -=| n;.X..}|
|000025c0| 0a 58 09 7d 0a 58 7d 0a | 58 0a 58 70 74 6d 77 72 |.X.}.X}.|X.Xptmwr|
|000025d0| 69 74 65 28 64 65 76 29 | 0a 58 7b 0a 58 09 72 65 |ite(dev)|.X{.X.re|
|000025e0| 67 69 73 74 65 72 20 73 | 74 72 75 63 74 20 74 74 |gister s|truct tt|
|000025f0| 79 20 2a 74 70 20 3d 20 | 26 70 74 73 5f 74 74 79 |y *tp = |&pts_tty|
|00002600| 5b 64 65 76 5d 3b 0a 58 | 09 72 65 67 69 73 74 65 |[dev];.X|.registe|
|00002610| 72 20 6e 3b 0a 58 0a 58 | 09 69 66 20 28 28 74 70 |r n;.X.X|.if ((tp|
|00002620| 2d 3e 74 5f 73 74 61 74 | 65 20 26 20 49 53 4f 50 |->t_stat|e & ISOP|
|00002630| 45 4e 29 20 3d 3d 20 30 | 29 20 7b 0a 58 09 09 75 |EN) == 0|) {.X..u|
|00002640| 2e 75 5f 65 72 72 6f 72 | 20 3d 20 45 49 4f 3b 0a |.u_error| = EIO;.|
|00002650| 58 09 09 72 65 74 75 72 | 6e 3b 0a 58 09 7d 0a 58 |X..retur|n;.X.}.X|
|00002660| 23 69 66 64 65 66 20 44 | 45 42 55 47 0a 58 09 70 |#ifdef D|EBUG.X.p|
|00002670| 72 69 6e 74 66 28 22 70 | 74 6d 77 72 69 74 65 28 |rintf("p|tmwrite(|
|00002680| 25 64 29 5c 6e 22 2c 64 | 65 76 29 3b 0a 58 23 65 |%d)\n",d|ev);.X#e|
|00002690| 6e 64 69 66 0a 58 09 77 | 68 69 6c 65 20 28 75 2e |ndif.X.w|hile (u.|
|000026a0| 75 5f 63 6f 75 6e 74 29 | 20 7b 0a 58 09 09 69 66 |u_count)| {.X..if|
|000026b0| 20 28 28 74 70 2d 3e 74 | 5f 73 74 61 74 65 20 26 | ((tp->t|_state &|
|000026c0| 20 54 42 4c 4f 43 4b 29 | 20 7c 7c 20 74 70 2d 3e | TBLOCK)| || tp->|
|000026d0| 74 5f 72 62 75 66 2e 63 | 5f 70 74 72 20 3d 3d 20 |t_rbuf.c|_ptr == |
|000026e0| 4e 55 4c 4c 29 20 7b 0a | 58 09 09 09 69 66 20 28 |NULL) {.|X...if (|
|000026f0| 75 2e 75 5f 66 6d 6f 64 | 65 20 26 20 46 4e 44 45 |u.u_fmod|e & FNDE|
|00002700| 4c 41 59 29 0a 58 09 09 | 09 09 62 72 65 61 6b 3b |LAY).X..|..break;|
|00002710| 0a 58 09 09 09 74 70 2d | 3e 74 5f 73 74 61 74 65 |.X...tp-|>t_state|
|00002720| 20 7c 3d 20 4d 57 57 41 | 49 54 3b 0a 58 09 09 09 | |= MWWA|IT;.X...|
|00002730| 73 6c 65 65 70 28 28 63 | 61 64 64 72 5f 74 29 26 |sleep((c|addr_t)&|
|00002740| 74 70 2d 3e 74 5f 77 6c | 6f 63 2c 20 54 54 4f 50 |tp->t_wl|oc, TTOP|
|00002750| 52 49 29 3b 0a 58 09 09 | 09 63 6f 6e 74 69 6e 75 |RI);.X..|.continu|
|00002760| 65 3b 0a 58 09 09 7d 0a | 58 09 09 6e 20 3d 20 6d |e;.X..}.|X..n = m|
|00002770| 69 6e 28 75 2e 75 5f 63 | 6f 75 6e 74 2c 20 74 70 |in(u.u_c|ount, tp|
|00002780| 2d 3e 74 5f 72 62 75 66 | 2e 63 5f 63 6f 75 6e 74 |->t_rbuf|.c_count|
|00002790| 29 3b 0a 58 09 09 69 66 | 20 28 6e 29 20 7b 0a 58 |);.X..if| (n) {.X|
|000027a0| 09 09 09 69 66 20 28 63 | 6f 70 79 69 6e 28 75 2e |...if (c|opyin(u.|
|000027b0| 75 5f 62 61 73 65 2c 74 | 70 2d 3e 74 5f 72 62 75 |u_base,t|p->t_rbu|
|000027c0| 66 2e 63 5f 70 74 72 2c | 20 6e 29 29 20 7b 0a 58 |f.c_ptr,| n)) {.X|
|000027d0| 09 09 09 09 75 2e 75 5f | 65 72 72 6f 72 20 3d 20 |....u.u_|error = |
|000027e0| 45 46 41 55 4c 54 3b 0a | 58 09 09 09 09 62 72 65 |EFAULT;.|X....bre|
|000027f0| 61 6b 3b 0a 58 09 09 09 | 7d 0a 58 09 09 09 74 70 |ak;.X...|}.X...tp|
|00002800| 2d 3e 74 5f 72 62 75 66 | 2e 63 5f 63 6f 75 6e 74 |->t_rbuf|.c_count|
|00002810| 20 2d 3d 20 6e 3b 0a 58 | 09 09 09 75 2e 75 5f 62 | -= n;.X|...u.u_b|
|00002820| 61 73 65 20 2b 3d 20 6e | 3b 0a 58 09 09 09 75 2e |ase += n|;.X...u.|
|00002830| 75 5f 63 6f 75 6e 74 20 | 2d 3d 20 6e 3b 0a 58 09 |u_count |-= n;.X.|
|00002840| 09 7d 0a 58 23 69 66 64 | 65 66 20 76 61 78 0a 58 |.}.X#ifd|ef vax.X|
|00002850| 09 09 2f 2a 0a 58 09 09 | 20 2a 20 73 6f 6d 65 62 |../*.X..| * someb|
|00002860| 6f 64 79 20 74 6f 6c 64 | 20 6d 65 20 74 68 69 73 |ody told| me this|
|00002870| 20 69 73 20 6e 65 63 65 | 73 73 61 72 79 20 6f 6e | is nece|ssary on|
|00002880| 20 74 68 65 20 76 61 78 | 0a 58 09 09 20 2a 2f 0a | the vax|.X.. */.|
|00002890| 58 09 09 28 2a 6c 69 6e | 65 73 77 5b 74 70 2d 3e |X..(*lin|esw[tp->|
|000028a0| 74 5f 6c 69 6e 65 5d 2e | 6c 5f 69 6e 70 75 74 29 |t_line].|l_input)|
|000028b0| 28 74 70 2c 20 4c 5f 42 | 55 46 29 3b 0a 58 23 65 |(tp, L_B|UF);.X#e|
|000028c0| 6c 73 65 0a 58 09 09 28 | 2a 6c 69 6e 65 73 77 5b |lse.X..(|*linesw[|
|000028d0| 74 70 2d 3e 74 5f 6c 69 | 6e 65 5d 2e 6c 5f 69 6e |tp->t_li|ne].l_in|
|000028e0| 70 75 74 29 28 74 70 29 | 3b 0a 58 23 65 6e 64 69 |put)(tp)|;.X#endi|
|000028f0| 66 0a 58 09 7d 0a 58 7d | 0a 58 0a 58 70 74 6d 63 |f.X.}.X}|.X.Xptmc|
|00002900| 6c 6f 73 65 28 64 65 76 | 29 0a 58 7b 0a 58 09 72 |lose(dev|).X{.X.r|
|00002910| 65 67 69 73 74 65 72 20 | 73 74 72 75 63 74 20 74 |egister |struct t|
|00002920| 74 79 20 2a 74 70 20 3d | 20 26 70 74 73 5f 74 74 |ty *tp =| &pts_tt|
|00002930| 79 5b 64 65 76 5d 3b 0a | 58 0a 58 23 69 66 64 65 |y[dev];.|X.X#ifde|
|00002940| 66 20 44 45 42 55 47 0a | 58 09 70 72 69 6e 74 66 |f DEBUG.|X.printf|
|00002950| 28 22 70 74 6d 63 6c 6f | 73 65 28 25 64 29 5c 6e |("ptmclo|se(%d)\n|
|00002960| 22 2c 64 65 76 29 3b 0a | 58 23 65 6e 64 69 66 0a |",dev);.|X#endif.|
|00002970| 58 09 69 66 20 28 74 70 | 2d 3e 74 5f 73 74 61 74 |X.if (tp|->t_stat|
|00002980| 65 20 26 20 49 53 4f 50 | 45 4e 29 20 7b 0a 58 09 |e & ISOP|EN) {.X.|
|00002990| 09 73 69 67 6e 61 6c 28 | 74 70 2d 3e 74 5f 70 67 |.signal(|tp->t_pg|
|000029a0| 72 70 2c 20 53 49 47 48 | 55 50 29 3b 0a 58 09 09 |rp, SIGH|UP);.X..|
|000029b0| 74 74 79 66 6c 75 73 68 | 28 74 70 2c 20 46 52 45 |ttyflush|(tp, FRE|
|000029c0| 41 44 7c 46 57 52 49 54 | 45 29 3b 0a 58 09 7d 0a |AD|FWRIT|E);.X.}.|
|000029d0| 58 09 2f 2a 0a 58 09 20 | 2a 20 76 69 72 74 75 61 |X./*.X. |* virtua|
|000029e0| 6c 20 63 61 72 72 69 65 | 72 20 67 6f 6e 65 0a 58 |l carrie|r gone.X|
|000029f0| 09 20 2a 2f 0a 58 09 74 | 70 2d 3e 74 5f 73 74 61 |. */.X.t|p->t_sta|
|00002a00| 74 65 20 26 3d 20 7e 28 | 43 41 52 52 5f 4f 4e 7c |te &= ~(|CARR_ON||
|00002a10| 4d 4f 50 45 4e 29 3b 0a | 58 7d 0a 58 0a 58 70 74 |MOPEN);.|X}.X.Xpt|
|00002a20| 6d 69 6f 63 74 6c 28 64 | 65 76 2c 20 63 6d 64 2c |mioctl(d|ev, cmd,|
|00002a30| 20 61 72 67 2c 20 6d 6f | 64 65 29 0a 58 7b 0a 58 | arg, mo|de).X{.X|
|00002a40| 09 72 65 67 69 73 74 65 | 72 20 73 74 72 75 63 74 |.registe|r struct|
|00002a50| 20 74 74 79 20 2a 74 70 | 20 3d 20 26 70 74 73 5f | tty *tp| = &pts_|
|00002a60| 74 74 79 5b 64 65 76 5d | 3b 0a 58 0a 58 09 2f 2a |tty[dev]|;.X.X./*|
|00002a70| 0a 58 09 20 2a 20 73 6f | 72 72 79 2c 20 62 75 74 |.X. * so|rry, but|
|00002a80| 20 77 65 20 63 61 6e 27 | 74 20 66 69 64 64 6c 65 | we can'|t fiddle|
|00002a90| 20 77 69 74 68 20 74 68 | 65 20 74 74 79 20 73 74 | with th|e tty st|
|00002aa0| 72 75 63 74 20 77 69 74 | 68 6f 75 74 0a 58 09 20 |ruct wit|hout.X. |
|00002ab0| 2a 20 68 61 76 69 6e 67 | 20 64 6f 6e 65 20 4c 44 |* having| done LD|
|00002ac0| 4f 50 45 4e 0a 58 09 20 | 2a 2f 0a 58 09 69 66 20 |OPEN.X. |*/.X.if |
|00002ad0| 28 74 70 2d 3e 74 5f 73 | 74 61 74 65 20 26 20 49 |(tp->t_s|tate & I|
|00002ae0| 53 4f 50 45 4e 29 20 7b | 0a 58 09 09 69 66 20 28 |SOPEN) {|.X..if (|
|00002af0| 63 6d 64 20 3d 3d 20 54 | 43 53 42 52 4b 20 26 26 |cmd == T|CSBRK &&|
|00002b00| 20 61 72 67 20 3d 3d 20 | 20 4e 55 4c 4c 29 20 7b | arg == | NULL) {|
|00002b10| 0a 58 09 09 09 73 69 67 | 6e 61 6c 28 74 70 2d 3e |.X...sig|nal(tp->|
|00002b20| 74 5f 70 67 72 70 2c 20 | 53 49 47 49 4e 54 29 3b |t_pgrp, |SIGINT);|
|00002b30| 0a 58 09 09 09 69 66 20 | 28 28 74 70 2d 3e 74 5f |.X...if |((tp->t_|
|00002b40| 69 66 6c 61 67 20 26 20 | 4e 4f 46 4c 53 48 29 20 |iflag & |NOFLSH) |
|00002b50| 3d 3d 20 30 29 0a 58 09 | 09 09 09 74 74 79 66 6c |== 0).X.|...ttyfl|
|00002b60| 75 73 68 28 74 70 2c 20 | 46 52 45 41 44 7c 46 57 |ush(tp, |FREAD|FW|
|00002b70| 52 49 54 45 29 3b 0a 58 | 09 09 7d 20 65 6c 73 65 |RITE);.X|..} else|
|00002b80| 20 7b 0a 58 09 09 09 2f | 2a 0a 58 09 09 09 20 2a | {.X.../|*.X... *|
|00002b90| 20 77 65 20 6d 75 73 74 | 20 66 6c 75 73 68 20 6f | we must| flush o|
|00002ba0| 75 74 70 75 74 20 74 6f | 20 61 76 6f 69 64 20 68 |utput to| avoid h|
|00002bb0| 61 6e 67 20 69 6e 20 74 | 74 79 77 61 69 74 0a 58 |ang in t|tywait.X|
|00002bc0| 09 09 09 20 2a 2f 0a 58 | 09 09 09 69 66 20 28 63 |... */.X|...if (c|
|00002bd0| 6d 64 20 3d 3d 20 54 43 | 53 45 54 41 57 20 7c 7c |md == TC|SETAW |||
|00002be0| 20 63 6d 64 20 3d 3d 20 | 54 43 53 45 54 41 46 20 | cmd == |TCSETAF |
|00002bf0| 7c 7c 20 63 6d 64 20 3d | 3d 20 54 43 53 42 52 4b ||| cmd =|= TCSBRK|
|00002c00| 0a 58 09 09 09 20 20 20 | 20 7c 7c 20 63 6d 64 20 |.X... | || cmd |
|00002c10| 3d 3d 20 54 49 4f 43 53 | 45 54 50 29 0a 58 09 09 |== TIOCS|ETP).X..|
|00002c20| 09 09 74 74 79 66 6c 75 | 73 68 28 46 57 52 49 54 |..ttyflu|sh(FWRIT|
|00002c30| 45 29 3b 0a 58 09 09 09 | 74 74 69 6f 63 6f 6d 28 |E);.X...|ttiocom(|
|00002c40| 74 70 2c 20 63 6d 64 2c | 20 61 72 67 2c 20 6d 6f |tp, cmd,| arg, mo|
|00002c50| 64 65 29 3b 0a 58 09 09 | 7d 0a 58 09 7d 0a 58 7d |de);.X..|}.X.}.X}|
|00002c60| 0a 45 4e 44 5f 4f 46 5f | 70 74 79 2e 63 0a 69 66 |.END_OF_|pty.c.if|
|00002c70| 20 74 65 73 74 20 36 39 | 32 33 20 2d 6e 65 20 60 | test 69|23 -ne `|
|00002c80| 77 63 20 2d 63 20 3c 70 | 74 79 2e 63 60 3b 20 74 |wc -c <p|ty.c`; t|
|00002c90| 68 65 6e 0a 20 20 20 20 | 65 63 68 6f 20 73 68 61 |hen. |echo sha|
|00002ca0| 72 3a 20 5c 22 70 74 79 | 2e 63 5c 22 20 75 6e 70 |r: \"pty|.c\" unp|
|00002cb0| 61 63 6b 65 64 20 77 69 | 74 68 20 77 72 6f 6e 67 |acked wi|th wrong|
|00002cc0| 20 73 69 7a 65 21 0a 66 | 69 0a 23 20 65 6e 64 20 | size!.f|i.# end |
|00002cd0| 6f 66 20 6f 76 65 72 77 | 72 69 74 69 6e 67 20 63 |of overw|riting c|
|00002ce0| 68 65 63 6b 0a 66 69 0a | 65 63 68 6f 20 73 68 61 |heck.fi.|echo sha|
|00002cf0| 72 3a 20 45 6e 64 20 6f | 66 20 73 68 65 6c 6c 20 |r: End o|f shell |
|00002d00| 61 72 63 68 69 76 65 2e | 0a 65 78 69 74 20 30 0a |archive.|.exit 0.|
+--------+-------------------------+-------------------------+--------+--------+