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: dev.fd
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, ASCII text
| default
| |
100%
| checkBytes
| Printable ASCII
| default
| |
100%
| dexmagic
| PrintFox/Pagefox WEAK
| 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/news
| default
|
|
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 50 61 74 68 3a 20 75 75 | 6e 65 74 21 72 73 0a 46 |Path: uu|net!rs.F|
|00000010| 72 6f 6d 3a 20 72 73 40 | 75 75 6e 65 74 2e 55 55 |rom: rs@|uunet.UU|
|00000020| 2e 4e 45 54 20 28 52 69 | 63 68 20 53 61 6c 7a 29 |.NET (Ri|ch Salz)|
|00000030| 0a 4e 65 77 73 67 72 6f | 75 70 73 3a 20 63 6f 6d |.Newsgro|ups: com|
|00000040| 70 2e 73 6f 75 72 63 65 | 73 2e 75 6e 69 78 0a 53 |p.source|s.unix.S|
|00000050| 75 62 6a 65 63 74 3a 20 | 76 31 30 69 30 39 38 3a |ubject: |v10i098:|
|00000060| 20 20 41 20 2f 64 65 76 | 2f 66 64 20 64 65 76 69 | A /dev|/fd devi|
|00000070| 63 65 20 64 72 69 76 65 | 72 20 66 6f 72 20 34 2e |ce drive|r for 4.|
|00000080| 33 20 61 6e 64 20 4e 46 | 53 20 73 79 73 74 65 6d |3 and NF|S system|
|00000090| 73 0a 4d 65 73 73 61 67 | 65 2d 49 44 3a 20 3c 37 |s.Messag|e-ID: <7|
|000000a0| 39 30 40 75 75 6e 65 74 | 2e 55 55 2e 4e 45 54 3e |90@uunet|.UU.NET>|
|000000b0| 0a 44 61 74 65 3a 20 37 | 20 41 75 67 20 38 37 20 |.Date: 7| Aug 87 |
|000000c0| 31 31 3a 32 34 3a 32 35 | 20 47 4d 54 0a 4f 72 67 |11:24:25| GMT.Org|
|000000d0| 61 6e 69 7a 61 74 69 6f | 6e 3a 20 55 55 4e 45 54 |anizatio|n: UUNET|
|000000e0| 20 43 6f 6d 6d 75 6e 69 | 63 61 74 69 6f 6e 73 20 | Communi|cations |
|000000f0| 53 65 72 76 69 63 65 73 | 2c 20 41 72 6c 69 6e 67 |Services|, Arling|
|00000100| 74 6f 6e 2c 20 56 41 0a | 4c 69 6e 65 73 3a 20 36 |ton, VA.|Lines: 6|
|00000110| 36 30 0a 41 70 70 72 6f | 76 65 64 3a 20 72 73 40 |60.Appro|ved: rs@|
|00000120| 75 75 6e 65 74 2e 55 55 | 2e 4e 45 54 0a 0a 53 75 |uunet.UU|.NET..Su|
|00000130| 62 6d 69 74 74 65 64 2d | 62 79 3a 20 65 6d 6f 72 |bmitted-|by: emor|
|00000140| 79 21 61 72 6e 6f 6c 64 | 20 28 41 72 6e 6f 6c 64 |y!arnold| (Arnold|
|00000150| 20 44 2e 20 52 6f 62 62 | 69 6e 73 20 7b 45 55 43 | D. Robb|ins {EUC|
|00000160| 43 7d 29 0a 50 6f 73 74 | 69 6e 67 2d 6e 75 6d 62 |C}).Post|ing-numb|
|00000170| 65 72 3a 20 56 6f 6c 75 | 6d 65 20 31 30 2c 20 49 |er: Volu|me 10, I|
|00000180| 73 73 75 65 20 39 38 0a | 41 72 63 68 69 76 65 2d |ssue 98.|Archive-|
|00000190| 6e 61 6d 65 3a 20 64 65 | 76 2e 66 64 0a 0a 5b 20 |name: de|v.fd..[ |
|000001a0| 20 54 68 65 20 63 6f 64 | 65 20 68 65 72 65 20 69 | The cod|e here i|
|000001b0| 6d 70 6c 65 6d 65 6e 74 | 73 20 2f 64 65 76 2f 66 |mplement|s /dev/f|
|000001c0| 64 2f 30 2c 20 2f 64 65 | 76 2f 66 64 2f 31 32 2c |d/0, /de|v/fd/12,|
|000001d0| 20 65 74 63 2e 2c 20 73 | 6f 20 74 68 61 74 20 61 | etc., s|o that a|
|000001e0| 20 70 72 6f 67 72 61 6d | 0a 20 20 20 63 61 6e 20 | program|. can |
|000001f0| 74 72 65 61 74 20 69 74 | 73 20 66 69 6c 65 20 64 |treat it|s file d|
|00000200| 65 73 63 72 69 70 74 6f | 72 73 20 61 73 20 66 69 |escripto|rs as fi|
|00000210| 6c 65 73 3b 20 74 68 65 | 20 52 45 41 44 4d 45 2d |les; the| README-|
|00000220| 46 49 52 53 54 20 64 65 | 73 63 72 69 62 65 73 0a |FIRST de|scribes.|
|00000230| 20 20 20 73 6f 6d 65 20 | 70 6f 73 73 69 62 6c 65 | some |possible|
|00000240| 20 74 72 69 63 6b 73 20 | 74 68 61 74 20 6f 6e 65 | tricks |that one|
|00000250| 20 63 61 6e 20 6e 6f 77 | 20 70 6c 61 79 20 77 69 | can now| play wi|
|00000260| 74 68 2c 20 65 2e 67 2e | 2c 20 4b 53 48 2c 20 61 |th, e.g.|, KSH, a|
|00000270| 73 20 61 20 72 65 73 75 | 6c 74 0a 20 20 20 6f 66 |s a resu|lt. of|
|00000280| 20 74 68 69 73 2e 20 20 | 2d 2d 72 24 20 20 5d 0a | this. |--r$ ].|
|00000290| 0a 23 21 20 2f 62 69 6e | 2f 73 68 0a 23 20 54 68 |.#! /bin|/sh.# Th|
|000002a0| 69 73 20 69 73 20 61 20 | 73 68 65 6c 6c 20 61 72 |is is a |shell ar|
|000002b0| 63 68 69 76 65 2c 20 6d | 65 61 6e 69 6e 67 3a 0a |chive, m|eaning:.|
|000002c0| 23 20 31 2e 20 52 65 6d | 6f 76 65 20 65 76 65 72 |# 1. Rem|ove ever|
|000002d0| 79 74 68 69 6e 67 20 61 | 62 6f 76 65 20 74 68 65 |ything a|bove the|
|000002e0| 20 23 21 20 2f 62 69 6e | 2f 73 68 20 6c 69 6e 65 | #! /bin|/sh line|
|000002f0| 2e 0a 23 20 32 2e 20 53 | 61 76 65 20 74 68 65 20 |..# 2. S|ave the |
|00000300| 72 65 73 75 6c 74 69 6e | 67 20 74 65 78 74 20 69 |resultin|g text i|
|00000310| 6e 20 61 20 66 69 6c 65 | 2e 0a 23 20 33 2e 20 45 |n a file|..# 3. E|
|00000320| 78 65 63 75 74 65 20 74 | 68 65 20 66 69 6c 65 20 |xecute t|he file |
|00000330| 77 69 74 68 20 2f 62 69 | 6e 2f 73 68 20 28 6e 6f |with /bi|n/sh (no|
|00000340| 74 20 63 73 68 29 20 74 | 6f 20 63 72 65 61 74 65 |t csh) t|o create|
|00000350| 20 74 68 65 20 66 69 6c | 65 73 3a 0a 23 09 52 45 | the fil|es:.#.RE|
|00000360| 41 44 4d 45 2d 46 49 52 | 53 54 0a 23 09 52 45 41 |ADME-FIR|ST.#.REA|
|00000370| 44 4d 45 0a 23 09 66 64 | 2e 34 0a 23 09 64 65 76 |DME.#.fd|.4.#.dev|
|00000380| 5f 66 64 2e 63 0a 23 09 | 50 41 54 43 48 0a 65 78 |_fd.c.#.|PATCH.ex|
|00000390| 70 6f 72 74 20 50 41 54 | 48 3b 20 50 41 54 48 3d |port PAT|H; PATH=|
|000003a0| 2f 62 69 6e 3a 24 50 41 | 54 48 0a 65 63 68 6f 20 |/bin:$PA|TH.echo |
|000003b0| 73 68 61 72 3a 20 65 78 | 74 72 61 63 74 69 6e 67 |shar: ex|tracting|
|000003c0| 20 22 27 52 45 41 44 4d | 45 2d 46 49 52 53 54 27 | "'READM|E-FIRST'|
|000003d0| 22 20 27 28 32 30 34 35 | 20 63 68 61 72 61 63 74 |" '(2045| charact|
|000003e0| 65 72 73 29 27 0a 69 66 | 20 74 65 73 74 20 2d 66 |ers)'.if| test -f|
|000003f0| 20 27 52 45 41 44 4d 45 | 2d 46 49 52 53 54 27 0a | 'README|-FIRST'.|
|00000400| 74 68 65 6e 0a 09 65 63 | 68 6f 20 73 68 61 72 3a |then..ec|ho shar:|
|00000410| 20 77 69 6c 6c 20 6e 6f | 74 20 6f 76 65 72 2d 77 | will no|t over-w|
|00000420| 72 69 74 65 20 65 78 69 | 73 74 69 6e 67 20 66 69 |rite exi|sting fi|
|00000430| 6c 65 20 22 27 52 45 41 | 44 4d 45 2d 46 49 52 53 |le "'REA|DME-FIRS|
|00000440| 54 27 22 0a 65 6c 73 65 | 0a 63 61 74 20 3c 3c 20 |T'".else|.cat << |
|00000450| 5c 53 48 41 52 5f 45 4f | 46 20 3e 20 27 52 45 41 |\SHAR_EO|F > 'REA|
|00000460| 44 4d 45 2d 46 49 52 53 | 54 27 0a 52 45 41 44 4d |DME-FIRS|T'.READM|
|00000470| 45 2d 46 49 52 53 54 0a | 0a 09 54 68 65 20 66 69 |E-FIRST.|..The fi|
|00000480| 6c 65 73 20 69 6e 20 74 | 68 69 73 20 64 69 72 65 |les in t|his dire|
|00000490| 63 74 6f 72 79 20 63 6f | 6e 74 61 69 6e 20 74 68 |ctory co|ntain th|
|000004a0| 65 20 73 6f 75 72 63 65 | 20 63 6f 64 65 20 66 6f |e source| code fo|
|000004b0| 72 20 74 68 65 20 22 66 | 64 22 0a 70 73 65 75 64 |r the "f|d".pseud|
|000004c0| 6f 2d 64 65 76 69 63 65 | 20 64 72 69 76 65 72 20 |o-device| driver |
|000004d0| 66 6f 72 20 34 2e 5b 32 | 33 5d 20 42 53 44 20 55 |for 4.[2|3] BSD U|
|000004e0| 6e 69 78 2e 20 54 68 65 | 20 69 64 65 61 20 6f 72 |nix. The| idea or|
|000004f0| 69 67 69 6e 61 74 65 64 | 20 77 69 74 68 20 74 68 |iginated| with th|
|00000500| 65 20 45 69 67 68 74 68 | 0a 45 64 69 74 69 6f 6e |e Eighth|.Edition|
|00000510| 20 52 65 73 65 61 72 63 | 68 20 55 6e 69 78 20 73 | Researc|h Unix s|
|00000520| 79 73 74 65 6d 2e 0a 09 | 54 68 65 20 6f 72 69 67 |ystem...|The orig|
|00000530| 69 6e 61 6c 20 76 65 72 | 73 69 6f 6e 20 66 6f 72 |inal ver|sion for|
|00000540| 20 42 53 44 20 55 6e 69 | 78 20 77 61 73 20 64 6f | BSD Uni|x was do|
|00000550| 6e 65 20 62 79 20 46 72 | 65 64 20 42 6c 6f 6e 64 |ne by Fr|ed Blond|
|00000560| 65 72 20 61 74 20 74 68 | 65 0a 55 6e 69 76 65 72 |er at th|e.Univer|
|00000570| 73 69 74 79 20 6f 66 20 | 4d 61 72 79 6c 61 6e 64 |sity of |Maryland|
|00000580| 2e 20 48 65 20 73 69 6d | 70 6c 79 20 68 61 64 20 |. He sim|ply had |
|00000590| 61 20 62 75 6e 63 68 20 | 6f 66 20 64 65 76 69 63 |a bunch |of devic|
|000005a0| 65 73 2c 20 2f 64 65 76 | 2f 66 64 30 20 2d 20 2f |es, /dev|/fd0 - /|
|000005b0| 64 65 76 2f 66 64 31 39 | 2e 0a 54 68 65 20 52 65 |dev/fd19|..The Re|
|000005c0| 73 65 61 72 63 68 20 55 | 6e 69 78 20 73 79 73 74 |search U|nix syst|
|000005d0| 65 6d 20 75 73 65 73 20 | 61 20 2f 64 65 76 2f 66 |em uses |a /dev/f|
|000005e0| 64 20 64 69 72 65 63 74 | 6f 72 79 2c 20 77 69 74 |d direct|ory, wit|
|000005f0| 68 20 66 69 6c 65 73 20 | 30 20 2d 20 31 39 2e 0a |h files |0 - 19..|
|00000600| 09 54 68 65 20 6c 61 74 | 74 65 72 20 76 65 72 73 |.The lat|ter vers|
|00000610| 69 6f 6e 20 6f 66 20 74 | 68 65 20 6d 65 63 68 61 |ion of t|he mecha|
|00000620| 6e 69 73 6d 20 69 73 20 | 75 73 65 64 20 62 79 20 |nism is |used by |
|00000630| 74 68 65 20 4b 6f 72 6e | 20 73 68 65 6c 6c 20 28 |the Korn| shell (|
|00000640| 6b 73 68 29 0a 66 6f 72 | 20 22 70 72 6f 63 65 73 |ksh).for| "proces|
|00000650| 73 20 73 75 62 73 74 69 | 74 75 74 69 6f 6e 22 2c |s substi|tution",|
|00000660| 20 61 20 66 65 61 74 75 | 72 65 20 77 68 65 72 65 | a featu|re where|
|00000670| 62 79 20 70 72 6f 67 72 | 61 6d 73 20 63 61 6e 20 |by progr|ams can |
|00000680| 72 65 61 64 2f 77 72 69 | 74 65 20 66 69 6c 65 73 |read/wri|te files|
|00000690| 0a 77 68 69 63 68 20 61 | 72 65 20 72 65 61 6c 6c |.which a|re reall|
|000006a0| 79 20 70 69 70 65 73 20 | 66 72 6f 6d 2f 74 6f 20 |y pipes |from/to |
|000006b0| 6f 74 68 65 72 20 70 72 | 6f 63 65 73 73 65 73 2e |other pr|ocesses.|
|000006c0| 20 20 54 68 69 73 20 6d | 65 63 68 61 6e 69 73 6d | This m|echanism|
|000006d0| 20 61 6c 6c 6f 77 73 20 | 6f 6e 65 0a 74 6f 20 68 | allows |one.to h|
|000006e0| 61 76 65 20 70 69 70 65 | 6c 69 6e 65 73 20 74 68 |ave pipe|lines th|
|000006f0| 61 74 20 6d 6f 76 65 20 | 64 61 74 61 20 69 6e 20 |at move |data in |
|00000700| 6d 6f 72 65 20 74 68 61 | 6e 20 6f 6e 65 20 64 69 |more tha|n one di|
|00000710| 6d 65 6e 73 69 6f 6e 2e | 20 4f 6e 63 65 20 74 68 |mension.| Once th|
|00000720| 69 73 0a 64 72 69 76 65 | 72 20 69 73 20 69 6e 73 |is.drive|r is ins|
|00000730| 74 61 6c 6c 65 64 2c 20 | 74 68 65 20 6b 73 68 20 |talled, |the ksh |
|00000740| 6e 65 65 64 73 20 74 6f | 20 62 65 20 72 65 63 6f |needs to| be reco|
|00000750| 6d 70 69 6c 65 64 2e 20 | 50 72 6f 63 65 73 73 20 |mpiled. |Process |
|00000760| 73 75 62 73 74 69 74 75 | 74 69 6f 6e 0a 69 73 20 |substitu|tion.is |
|00000770| 6e 65 77 20 69 6e 20 74 | 68 65 20 76 65 72 73 69 |new in t|he versi|
|00000780| 6f 6e 20 6f 66 20 74 68 | 65 20 6b 73 68 20 6b 6e |on of th|e ksh kn|
|00000790| 6f 77 6e 20 61 73 20 22 | 6b 73 68 2d 69 22 2e 20 |own as "|ksh-i". |
|000007a0| 49 20 64 6f 6e 27 74 20 | 6b 6e 6f 77 20 69 66 20 |I don't |know if |
|000007b0| 74 68 65 20 6f 6c 64 65 | 72 0a 6b 73 68 20 68 61 |the olde|r.ksh ha|
|000007c0| 64 20 69 74 20 61 73 20 | 61 6e 20 75 6e 64 6f 63 |d it as |an undoc|
|000007d0| 75 6d 65 6e 74 65 64 20 | 66 65 61 74 75 72 65 2e |umented |feature.|
|000007e0| 0a 09 54 6f 20 61 6c 6c | 6f 77 20 74 68 65 20 6b |..To all|ow the k|
|000007f0| 73 68 20 74 6f 20 75 73 | 65 20 74 68 65 20 66 64 |sh to us|e the fd|
|00000800| 20 64 72 69 76 65 72 2c | 20 61 6e 64 20 66 6f 72 | driver,| and for|
|00000810| 20 63 6f 6d 70 61 74 69 | 62 69 6c 69 74 79 20 77 | compati|bility w|
|00000820| 69 74 68 0a 52 65 73 65 | 61 72 63 68 20 55 6e 69 |ith.Rese|arch Uni|
|00000830| 78 2c 20 49 20 68 61 76 | 65 20 63 68 61 6e 67 65 |x, I hav|e change|
|00000840| 64 20 74 68 65 20 66 64 | 2e 34 20 6d 61 6e 20 70 |d the fd|.4 man p|
|00000850| 61 67 65 20 74 6f 20 72 | 65 66 65 72 20 74 6f 20 |age to r|efer to |
|00000860| 74 68 65 20 2f 64 65 76 | 2f 66 64 0a 64 69 72 65 |the /dev|/fd.dire|
|00000870| 63 74 6f 72 79 2e 0a 0a | 09 54 68 69 73 20 76 65 |ctory...|.This ve|
|00000880| 72 73 69 6f 6e 20 6f 66 | 20 74 68 65 20 66 64 20 |rsion of| the fd |
|00000890| 64 72 69 76 65 72 20 6e | 6f 77 20 69 6e 63 6c 75 |driver n|ow inclu|
|000008a0| 64 65 73 20 63 6f 64 65 | 20 66 6f 72 20 4e 46 53 |des code| for NFS|
|000008b0| 20 73 79 73 74 65 6d 73 | 2e 0a 55 6e 66 6f 72 74 | systems|..Unfort|
|000008c0| 75 6e 61 74 65 6c 79 2c | 20 66 6f 72 20 72 65 61 |unately,| for rea|
|000008d0| 73 6f 6e 73 20 64 65 74 | 61 69 6c 65 64 20 69 6e |sons det|ailed in|
|000008e0| 20 74 68 65 20 73 6f 75 | 72 63 65 20 63 6f 64 65 | the sou|rce code|
|000008f0| 2c 20 74 68 65 20 4e 46 | 53 20 76 65 72 73 69 6f |, the NF|S versio|
|00000900| 6e 0a 72 65 71 75 69 72 | 65 73 20 61 20 73 6d 61 |n.requir|es a sma|
|00000910| 6c 6c 20 70 61 74 63 68 | 20 74 6f 20 74 68 65 20 |ll patch| to the |
|00000920| 73 74 6f 63 6b 20 73 79 | 73 74 65 6d 20 63 6f 64 |stock sy|stem cod|
|00000930| 65 2e 20 54 68 65 20 66 | 69 6c 65 20 74 68 61 74 |e. The f|ile that|
|00000940| 20 69 73 20 61 66 66 65 | 63 74 65 64 0a 69 73 20 | is affe|cted.is |
|00000950| 2f 73 79 73 2f 73 70 65 | 63 66 73 2f 73 70 65 63 |/sys/spe|cfs/spec|
|00000960| 5f 76 6e 6f 64 65 6f 70 | 73 2e 63 2e 20 20 54 68 |_vnodeop|s.c. Th|
|00000970| 69 73 20 70 61 74 63 68 | 20 69 73 20 69 6e 63 6c |is patch| is incl|
|00000980| 75 64 65 64 20 69 6e 20 | 74 68 65 20 66 69 6c 65 |uded in |the file|
|00000990| 20 50 41 54 43 48 2e 0a | 54 68 69 73 20 70 61 74 | PATCH..|This pat|
|000009a0| 63 68 20 73 68 6f 75 6c | 64 20 6e 6f 74 20 61 66 |ch shoul|d not af|
|000009b0| 66 65 63 74 20 61 6e 79 | 20 6f 74 68 65 72 20 73 |fect any| other s|
|000009c0| 79 73 74 65 6d 20 63 6f | 64 65 20 28 66 61 6d 6f |ystem co|de (famo|
|000009d0| 75 73 20 6c 61 73 74 20 | 77 6f 72 64 73 21 29 2e |us last |words!).|
|000009e0| 0a 42 65 73 69 64 65 73 | 20 74 68 65 20 4e 46 53 |.Besides| the NFS|
|000009f0| 20 76 65 72 73 69 6f 6e | 2c 20 49 20 68 61 76 65 | version|, I have|
|00000a00| 20 61 64 64 65 64 20 73 | 6f 6d 65 20 61 64 64 69 | added s|ome addi|
|00000a10| 74 69 6f 6e 61 6c 20 65 | 72 72 6f 72 20 63 68 65 |tional e|rror che|
|00000a20| 63 6b 69 6e 67 2c 20 61 | 6e 64 0a 61 20 62 75 67 |cking, a|nd.a bug|
|00000a30| 20 66 69 78 20 74 6f 20 | 74 68 65 20 69 6e 6f 64 | fix to |the inod|
|00000a40| 65 20 76 65 72 73 69 6f | 6e 20 61 73 20 77 65 6c |e versio|n as wel|
|00000a50| 6c 2e 20 54 68 69 73 20 | 69 73 20 63 6f 6d 6d 65 |l. This |is comme|
|00000a60| 6e 74 65 64 2c 20 73 6f | 20 69 66 20 73 6f 6d 65 |nted, so| if some|
|00000a70| 6f 6e 65 0a 77 61 6e 74 | 73 20 74 68 65 20 65 78 |one.want|s the ex|
|00000a80| 61 63 74 20 6f 72 69 67 | 69 6e 61 6c 20 63 6f 64 |act orig|inal cod|
|00000a90| 65 2c 20 74 68 65 79 20 | 63 61 6e 20 63 68 61 6e |e, they |can chan|
|00000aa0| 67 65 20 69 74 20 62 61 | 63 6b 2e 0a 0a 09 54 68 |ge it ba|ck....Th|
|00000ab0| 65 20 4e 46 53 20 76 65 | 72 73 69 6f 6e 20 77 6f |e NFS ve|rsion wo|
|00000ac0| 72 6b 73 20 77 69 74 68 | 6f 75 74 20 63 68 61 6e |rks with|out chan|
|00000ad0| 67 65 20 6f 6e 20 62 6f | 74 68 20 53 75 6e 20 73 |ge on bo|th Sun s|
|00000ae0| 79 73 74 65 6d 73 20 72 | 75 6e 6e 69 6e 67 0a 53 |ystems r|unning.S|
|00000af0| 75 6e 4f 53 20 33 2e 33 | 2c 20 61 6e 64 20 4d 74 |unOS 3.3|, and Mt|
|00000b00| 2e 20 58 69 6e 75 20 34 | 2e 33 20 2b 20 4e 46 53 |. Xinu 4|.3 + NFS|
|00000b10| 20 33 2e 32 2e 20 4f 6e | 20 74 68 65 20 53 75 6e | 3.2. On| the Sun|
|00000b20| 2c 20 22 6d 61 6b 65 20 | 64 65 70 65 6e 64 22 20 |, "make |depend" |
|00000b30| 77 69 6c 6c 20 6e 6f 74 | 0a 77 6f 72 6b 20 62 65 |will not|.work be|
|00000b40| 63 61 75 73 65 20 6f 66 | 20 77 68 65 72 65 20 74 |cause of| where t|
|00000b50| 68 65 20 69 6e 6f 64 65 | 2e 68 20 66 69 6c 65 20 |he inode|.h file |
|00000b60| 69 73 20 69 6e 63 6c 75 | 64 65 64 20 66 72 6f 6d |is inclu|ded from|
|00000b70| 20 69 66 20 4e 46 53 20 | 69 73 20 6e 6f 74 0a 64 | if NFS |is not.d|
|00000b80| 65 66 69 6e 65 64 2e 20 | 54 68 69 73 20 69 73 20 |efined. |This is |
|00000b90| 6e 6f 74 20 61 20 76 65 | 72 79 20 62 69 67 20 64 |not a ve|ry big d|
|00000ba0| 65 61 6c 2c 20 6a 75 73 | 74 20 63 6f 6d 6d 65 6e |eal, jus|t commen|
|00000bb0| 74 20 6f 75 74 20 74 68 | 61 74 20 6c 69 6e 65 2e |t out th|at line.|
|00000bc0| 20 20 54 68 65 0a 69 6e | 74 65 72 61 63 74 69 6f | The.in|teractio|
|00000bd0| 6e 20 77 69 74 68 20 74 | 68 65 20 66 69 6c 65 20 |n with t|he file |
|00000be0| 6c 6f 63 6b 69 6e 67 20 | 6d 65 63 68 61 6e 69 73 |locking |mechanis|
|00000bf0| 6d 73 20 69 73 20 6e 6f | 74 20 63 6c 65 61 72 2e |ms is no|t clear.|
|00000c00| 20 28 69 2e 65 2e 20 49 | 20 64 69 64 6e 27 74 0a | (i.e. I| didn't.|
|00000c10| 62 6f 74 68 65 72 20 74 | 6f 20 69 6e 76 65 73 74 |bother t|o invest|
|00000c20| 69 67 61 74 65 20 69 74 | 2e 29 0a 0a 41 72 6e 6f |igate it|.)..Arno|
|00000c30| 6c 64 20 52 6f 62 62 69 | 6e 73 0a 45 6d 6f 72 79 |ld Robbi|ns.Emory|
|00000c40| 20 55 6e 69 76 65 72 73 | 69 74 79 20 43 6f 6d 70 | Univers|ity Comp|
|00000c50| 75 74 69 6e 67 20 43 65 | 6e 74 65 72 0a 4a 75 6c |uting Ce|nter.Jul|
|00000c60| 79 2c 20 31 39 38 37 0a | 53 48 41 52 5f 45 4f 46 |y, 1987.|SHAR_EOF|
|00000c70| 0a 63 68 6d 6f 64 20 2b | 78 20 27 52 45 41 44 4d |.chmod +|x 'READM|
|00000c80| 45 2d 46 49 52 53 54 27 | 0a 66 69 20 23 20 65 6e |E-FIRST'|.fi # en|
|00000c90| 64 20 6f 66 20 6f 76 65 | 72 77 72 69 74 69 6e 67 |d of ove|rwriting|
|00000ca0| 20 63 68 65 63 6b 0a 65 | 63 68 6f 20 73 68 61 72 | check.e|cho shar|
|00000cb0| 3a 20 65 78 74 72 61 63 | 74 69 6e 67 20 22 27 52 |: extrac|ting "'R|
|00000cc0| 45 41 44 4d 45 27 22 20 | 27 28 31 37 38 31 20 63 |EADME'" |'(1781 c|
|00000cd0| 68 61 72 61 63 74 65 72 | 73 29 27 0a 69 66 20 74 |haracter|s)'.if t|
|00000ce0| 65 73 74 20 2d 66 20 27 | 52 45 41 44 4d 45 27 0a |est -f '|README'.|
|00000cf0| 74 68 65 6e 0a 09 65 63 | 68 6f 20 73 68 61 72 3a |then..ec|ho shar:|
|00000d00| 20 77 69 6c 6c 20 6e 6f | 74 20 6f 76 65 72 2d 77 | will no|t over-w|
|00000d10| 72 69 74 65 20 65 78 69 | 73 74 69 6e 67 20 66 69 |rite exi|sting fi|
|00000d20| 6c 65 20 22 27 52 45 41 | 44 4d 45 27 22 0a 65 6c |le "'REA|DME'".el|
|00000d30| 73 65 0a 63 61 74 20 3c | 3c 20 5c 53 48 41 52 5f |se.cat <|< \SHAR_|
|00000d40| 45 4f 46 20 3e 20 27 52 | 45 41 44 4d 45 27 0a 46 |EOF > 'R|EADME'.F|
|00000d50| 72 6f 6d 20 66 72 65 64 | 40 67 79 6d 62 6c 65 2e |rom fred|@gymble.|
|00000d60| 55 55 43 50 20 28 46 72 | 65 64 20 42 6c 6f 6e 64 |UUCP (Fr|ed Blond|
|00000d70| 65 72 29 20 46 72 69 20 | 4a 75 6e 20 32 31 20 30 |er) Fri |Jun 21 0|
|00000d80| 30 3a 33 34 3a 35 33 20 | 31 39 38 35 0a 52 65 6c |0:34:53 |1985.Rel|
|00000d90| 61 79 2d 56 65 72 73 69 | 6f 6e 3a 20 76 65 72 73 |ay-Versi|on: vers|
|00000da0| 69 6f 6e 20 42 20 32 2e | 31 30 2e 32 20 39 2f 31 |ion B 2.|10.2 9/1|
|00000db0| 38 2f 38 34 3b 20 73 69 | 74 65 20 67 61 74 65 63 |8/84; si|te gatec|
|00000dc0| 68 2e 43 53 4e 45 54 0a | 50 6f 73 74 69 6e 67 2d |h.CSNET.|Posting-|
|00000dd0| 56 65 72 73 69 6f 6e 3a | 20 76 65 72 73 69 6f 6e |Version:| version|
|00000de0| 20 42 20 32 2e 31 30 2e | 31 20 36 2f 32 34 2f 38 | B 2.10.|1 6/24/8|
|00000df0| 33 3b 20 73 69 74 65 20 | 67 79 6d 62 6c 65 2e 55 |3; site |gymble.U|
|00000e00| 55 43 50 0a 50 61 74 68 | 3a 20 67 61 74 65 63 68 |UCP.Path|: gatech|
|00000e10| 21 61 6b 67 75 61 21 77 | 68 75 78 6c 6d 21 77 68 |!akgua!w|huxlm!wh|
|00000e20| 75 78 6c 21 68 6f 75 78 | 6d 21 69 68 6e 70 34 21 |uxl!houx|m!ihnp4!|
|00000e30| 6d 68 75 78 6e 21 6d 68 | 75 78 72 21 75 6c 79 73 |mhuxn!mh|uxr!ulys|
|00000e40| 73 65 73 21 61 6c 6c 65 | 67 72 61 21 6d 69 74 2d |ses!alle|gra!mit-|
|00000e50| 65 64 64 69 65 21 67 65 | 6e 72 61 64 21 70 61 6e |eddie!ge|nrad!pan|
|00000e60| 64 61 21 74 61 6c 63 6f | 74 74 21 68 61 72 76 61 |da!talco|tt!harva|
|00000e70| 72 64 21 73 65 69 73 6d | 6f 21 75 6d 63 70 2d 63 |rd!seism|o!umcp-c|
|00000e80| 73 21 67 79 6d 62 6c 65 | 21 66 72 65 64 0a 46 72 |s!gymble|!fred.Fr|
|00000e90| 6f 6d 3a 20 66 72 65 64 | 40 67 79 6d 62 6c 65 2e |om: fred|@gymble.|
|00000ea0| 55 55 43 50 20 28 46 72 | 65 64 20 42 6c 6f 6e 64 |UUCP (Fr|ed Blond|
|00000eb0| 65 72 29 0a 4e 65 77 73 | 67 72 6f 75 70 73 3a 20 |er).News|groups: |
|00000ec0| 6e 65 74 2e 73 6f 75 72 | 63 65 73 0a 53 75 62 6a |net.sour|ces.Subj|
|00000ed0| 65 63 74 3a 20 60 60 66 | 69 6c 65 20 64 65 73 63 |ect: ``f|ile desc|
|00000ee0| 72 69 70 74 6f 72 27 27 | 20 70 73 65 75 64 6f 2d |riptor''| pseudo-|
|00000ef0| 64 65 76 69 63 65 20 64 | 72 69 76 65 72 20 66 6f |device d|river fo|
|00000f00| 72 20 34 2e 32 42 53 44 | 0a 4d 65 73 73 61 67 65 |r 4.2BSD|.Message|
|00000f10| 2d 49 44 3a 20 3c 31 37 | 33 40 67 79 6d 62 6c 65 |-ID: <17|3@gymble|
|00000f20| 2e 55 55 43 50 3e 0a 44 | 61 74 65 3a 20 32 31 20 |.UUCP>.D|ate: 21 |
|00000f30| 4a 75 6e 20 38 35 20 30 | 34 3a 33 34 3a 35 33 20 |Jun 85 0|4:34:53 |
|00000f40| 47 4d 54 0a 44 61 74 65 | 2d 52 65 63 65 69 76 65 |GMT.Date|-Receive|
|00000f50| 64 3a 20 32 33 20 4a 75 | 6e 20 38 35 20 30 33 3a |d: 23 Ju|n 85 03:|
|00000f60| 32 39 3a 35 33 20 47 4d | 54 0a 44 69 73 74 72 69 |29:53 GM|T.Distri|
|00000f70| 62 75 74 69 6f 6e 3a 20 | 6e 65 74 0a 4f 72 67 61 |bution: |net.Orga|
|00000f80| 6e 69 7a 61 74 69 6f 6e | 3a 20 55 20 6f 66 20 4d |nization|: U of M|
|00000f90| 61 72 79 6c 61 6e 64 2c | 20 4c 61 62 6f 72 61 74 |aryland,| Laborat|
|00000fa0| 6f 72 79 20 66 6f 72 20 | 50 61 72 61 6c 6c 65 6c |ory for |Parallel|
|00000fb0| 20 43 6f 6d 70 75 74 61 | 74 69 6f 6e 2c 20 43 2e | Computa|tion, C.|
|00000fc0| 50 2e 2c 20 4d 44 0a 4c | 69 6e 65 73 3a 20 32 37 |P., MD.L|ines: 27|
|00000fd0| 32 0a 0a 49 27 6d 20 72 | 65 2d 70 6f 73 74 69 6e |2..I'm r|e-postin|
|00000fe0| 67 20 74 68 69 73 20 64 | 75 65 20 74 6f 20 70 6f |g this d|ue to po|
|00000ff0| 70 75 6c 61 72 20 64 65 | 6d 61 6e 64 3a 0a 0a 54 |pular de|mand:..T|
|00001000| 68 69 73 20 69 73 20 61 | 20 70 73 65 75 64 6f 2d |his is a| pseudo-|
|00001010| 64 65 76 69 63 65 20 64 | 72 69 76 65 72 20 77 68 |device d|river wh|
|00001020| 69 63 68 20 69 6d 70 6c | 65 6d 65 6e 74 73 20 61 |ich impl|ements a|
|00001030| 0a 73 65 72 69 65 73 20 | 6f 66 20 64 65 76 69 63 |.series |of devic|
|00001040| 65 73 3a 20 2f 64 65 76 | 2f 66 64 30 20 2d 20 2f |es: /dev|/fd0 - /|
|00001050| 64 65 76 2f 66 64 31 39 | 20 77 68 69 63 68 20 61 |dev/fd19| which a|
|00001060| 72 65 0a 73 75 72 72 65 | 70 74 69 74 69 6f 75 73 |re.surre|ptitious|
|00001070| 6c 79 20 65 71 75 69 76 | 61 6c 65 6e 63 65 64 20 |ly equiv|alenced |
|00001080| 74 6f 20 77 68 61 74 65 | 76 65 72 20 66 69 6c 65 |to whate|ver file|
|00001090| 20 28 69 66 0a 61 6e 79 | 29 20 69 73 20 61 73 73 | (if.any|) is ass|
|000010a0| 6f 63 69 61 74 65 64 20 | 77 69 74 68 20 74 68 65 |ociated |with the|
|000010b0| 20 63 6f 72 72 65 73 70 | 6f 6e 64 69 6e 67 20 66 | corresp|onding f|
|000010c0| 69 6c 65 0a 64 65 73 63 | 72 69 70 74 6f 72 20 69 |ile.desc|riptor i|
|000010d0| 6e 20 74 68 65 20 70 72 | 6f 63 65 73 73 20 77 68 |n the pr|ocess wh|
|000010e0| 69 63 68 20 69 73 20 61 | 74 74 65 6d 70 74 69 6e |ich is a|ttemptin|
|000010f0| 67 20 74 6f 0a 6f 70 65 | 6e 20 74 68 61 74 20 66 |g to.ope|n that f|
|00001100| 69 6c 65 2e 20 49 6e 20 | 6f 74 68 65 72 20 77 6f |ile. In |other wo|
|00001110| 72 64 73 3a 20 6f 70 65 | 6e 69 6e 67 20 74 68 65 |rds: ope|ning the|
|00001120| 20 66 69 6c 65 0a 2f 64 | 65 76 2f 66 64 3c 6e 3e | file./d|ev/fd<n>|
|00001130| 20 69 73 20 61 6c 6d 6f | 73 74 20 74 68 65 20 73 | is almo|st the s|
|00001140| 61 6d 65 20 61 73 20 64 | 6f 69 6e 67 20 74 68 65 |ame as d|oing the|
|00001150| 20 73 79 73 74 65 6d 0a | 63 61 6c 6c 3a 20 64 75 | system.|call: du|
|00001160| 70 28 6e 29 2e 20 49 74 | 27 73 20 64 69 66 66 65 |p(n). It|'s diffe|
|00001170| 72 65 6e 74 20 69 6e 20 | 74 68 61 74 20 69 66 20 |rent in |that if |
|00001180| 74 68 65 20 66 69 6c 65 | 0a 69 73 20 61 20 64 65 |the file|.is a de|
|00001190| 76 69 63 65 2c 20 74 68 | 65 20 64 72 69 76 65 72 |vice, th|e driver|
|000011a0| 27 73 20 6f 70 65 6e 20 | 72 6f 75 74 69 6e 65 20 |'s open |routine |
|000011b0| 69 73 20 63 61 6c 6c 65 | 64 2e 0a 49 66 20 74 68 |is calle|d..If th|
|000011c0| 65 20 63 6f 72 72 65 73 | 70 6f 6e 64 69 6e 67 20 |e corres|ponding |
|000011d0| 66 69 6c 65 20 64 65 73 | 63 72 69 70 74 6f 72 20 |file des|criptor |
|000011e0| 69 73 20 61 20 70 69 70 | 65 0a 28 73 6f 63 6b 65 |is a pip|e.(socke|
|000011f0| 74 29 20 61 20 64 75 70 | 28 29 20 73 79 73 20 63 |t) a dup|() sys c|
|00001200| 61 6c 6c 20 69 73 20 66 | 61 6b 65 64 2e 0a 0a 54 |all is f|aked...T|
|00001210| 68 69 73 20 63 61 6e 20 | 62 65 20 75 73 65 64 20 |his can |be used |
|00001220| 74 6f 20 66 6f 72 63 65 | 20 70 72 6f 67 72 61 6d |to force| program|
|00001230| 73 20 74 6f 20 72 65 61 | 64 20 66 72 6f 6d 0a 74 |s to rea|d from.t|
|00001240| 68 65 69 72 20 73 74 61 | 6e 64 61 72 64 20 69 6e |heir sta|ndard in|
|00001250| 70 75 74 2c 20 6f 72 20 | 77 72 69 74 65 20 74 6f |put, or |write to|
|00001260| 20 74 68 65 69 72 20 73 | 74 61 6e 64 61 72 64 0a | their s|tandard.|
|00001270| 6f 75 74 70 75 74 2c 20 | 65 76 65 6e 20 69 66 20 |output, |even if |
|00001280| 74 68 65 79 20 68 61 76 | 65 6e 27 74 20 62 65 65 |they hav|en't bee|
|00001290| 6e 20 64 65 73 69 67 6e | 65 64 20 74 6f 20 64 6f |n design|ed to do|
|000012a0| 0a 73 6f 2e 20 20 46 6f | 72 20 69 6e 73 74 61 6e |.so. Fo|r instan|
|000012b0| 63 65 3a 0a 0a 09 6c 6e | 20 2d 73 20 2f 64 65 76 |ce:...ln| -s /dev|
|000012c0| 2f 66 64 30 20 78 78 2e | 63 0a 09 63 63 20 78 78 |/fd0 xx.|c..cc xx|
|000012d0| 2e 63 0a 09 7b 20 54 79 | 70 65 20 61 20 43 20 70 |.c..{ Ty|pe a C p|
|000012e0| 72 6f 67 72 61 6d 20 68 | 65 72 65 2e 20 7d 0a 09 |rogram h|ere. }..|
|000012f0| 5e 44 0a 09 61 2e 6f 75 | 74 0a 0a 4f 72 2c 20 74 |^D..a.ou|t..Or, t|
|00001300| 6f 20 73 65 65 20 69 66 | 20 61 20 63 65 72 74 61 |o see if| a certa|
|00001310| 69 6e 20 73 6f 75 72 63 | 65 20 66 69 6c 65 20 63 |in sourc|e file c|
|00001320| 6f 6d 70 69 6c 65 64 20 | 69 6e 74 6f 20 61 0a 70 |ompiled |into a.p|
|00001330| 61 72 74 69 63 75 6c 61 | 72 20 6f 62 6a 65 63 74 |articula|r object|
|00001340| 20 66 69 6c 65 3a 0a 0a | 09 63 63 20 73 6f 75 72 | file:..|.cc sour|
|00001350| 63 65 2e 63 20 2d 6f 20 | 2f 64 65 76 2f 66 64 31 |ce.c -o |/dev/fd1|
|00001360| 20 7c 20 63 6d 70 20 2d | 20 6f 62 6a 65 63 74 66 | | cmp -| objectf|
|00001370| 69 6c 65 0a 0a 42 65 20 | 73 75 72 65 20 74 6f 20 |ile..Be |sure to |
|00001380| 6d 61 6b 65 20 74 68 65 | 73 65 20 6d 6f 64 73 20 |make the|se mods |
|00001390| 69 6e 20 79 6f 75 72 20 | 63 6f 6e 66 20 64 69 72 |in your |conf dir|
|000013a0| 65 63 74 6f 72 79 2e 0a | 0a 49 6e 20 74 68 65 20 |ectory..|.In the |
|000013b0| 63 6f 6e 66 69 67 20 66 | 69 6c 65 3a 0a 09 70 73 |config f|ile:..ps|
|000013c0| 65 75 64 6f 2d 64 65 76 | 69 63 65 09 66 64 0a 0a |eudo-dev|ice.fd..|
|000013d0| 49 6e 20 74 68 65 20 60 | 60 66 69 6c 65 73 27 27 |In the `|`files''|
|000013e0| 20 66 69 6c 65 3a 0a 09 | 73 79 73 2f 64 65 76 5f | file:..|sys/dev_|
|000013f0| 66 64 2e 63 09 09 6f 70 | 74 69 6f 6e 61 6c 20 66 |fd.c..op|tional f|
|00001400| 64 0a 0a 3c 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |d..<****|********|
|00001410| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001420| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001430| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001440| 2a 2a 3e 0a 53 48 41 52 | 5f 45 4f 46 0a 63 68 6d |**>.SHAR|_EOF.chm|
|00001450| 6f 64 20 2b 78 20 27 52 | 45 41 44 4d 45 27 0a 66 |od +x 'R|EADME'.f|
|00001460| 69 20 23 20 65 6e 64 20 | 6f 66 20 6f 76 65 72 77 |i # end |of overw|
|00001470| 72 69 74 69 6e 67 20 63 | 68 65 63 6b 0a 65 63 68 |riting c|heck.ech|
|00001480| 6f 20 73 68 61 72 3a 20 | 65 78 74 72 61 63 74 69 |o shar: |extracti|
|00001490| 6e 67 20 22 27 66 64 2e | 34 27 22 20 27 28 33 36 |ng "'fd.|4'" '(36|
|000014a0| 31 35 20 63 68 61 72 61 | 63 74 65 72 73 29 27 0a |15 chara|cters)'.|
|000014b0| 69 66 20 74 65 73 74 20 | 2d 66 20 27 66 64 2e 34 |if test |-f 'fd.4|
|000014c0| 27 0a 74 68 65 6e 0a 09 | 65 63 68 6f 20 73 68 61 |'.then..|echo sha|
|000014d0| 72 3a 20 77 69 6c 6c 20 | 6e 6f 74 20 6f 76 65 72 |r: will |not over|
|000014e0| 2d 77 72 69 74 65 20 65 | 78 69 73 74 69 6e 67 20 |-write e|xisting |
|000014f0| 66 69 6c 65 20 22 27 66 | 64 2e 34 27 22 0a 65 6c |file "'f|d.4'".el|
|00001500| 73 65 0a 63 61 74 20 3c | 3c 20 5c 53 48 41 52 5f |se.cat <|< \SHAR_|
|00001510| 45 4f 46 20 3e 20 27 66 | 64 2e 34 27 0a 2e 2e 2e |EOF > 'f|d.4'....|
|00001520| 0a 2e 2e 2e 20 24 48 65 | 61 64 65 72 3a 20 66 64 |.... $He|ader: fd|
|00001530| 2e 34 2c 76 20 31 2e 33 | 20 38 37 2f 30 37 2f 31 |.4,v 1.3| 87/07/1|
|00001540| 30 20 31 30 3a 32 30 3a | 32 36 20 72 6f 6f 74 20 |0 10:20:|26 root |
|00001550| 4c 6f 63 6b 65 64 20 24 | 0a 2e 2e 2e 20 0a 2e 2e |Locked $|.... ...|
|00001560| 2e 20 24 4c 6f 67 3a 09 | 66 64 2e 34 2c 76 20 24 |. $Log:.|fd.4,v $|
|00001570| 0a 2e 2e 2e 20 52 65 76 | 69 73 69 6f 6e 20 31 2e |.... Rev|ision 1.|
|00001580| 33 20 20 38 37 2f 30 37 | 2f 31 30 20 20 31 30 3a |3 87/07|/10 10:|
|00001590| 32 30 3a 32 36 20 20 72 | 6f 6f 74 0a 2e 2e 2e 20 |20:26 r|oot.... |
|000015a0| 41 64 64 65 64 20 45 52 | 52 4f 52 53 20 73 65 63 |Added ER|RORS sec|
|000015b0| 74 69 6f 6e 2e 20 41 44 | 52 2e 0a 2e 2e 2e 20 0a |tion. AD|R..... .|
|000015c0| 2e 2e 2e 20 52 65 76 69 | 73 69 6f 6e 20 31 2e 32 |... Revi|sion 1.2|
|000015d0| 20 20 38 37 2f 30 37 2f | 30 35 20 20 31 32 3a 30 | 87/07/|05 12:0|
|000015e0| 35 3a 34 39 20 20 72 6f | 6f 74 0a 2e 2e 2e 20 41 |5:49 ro|ot.... A|
|000015f0| 64 64 65 64 20 73 79 6e | 6f 70 73 69 73 20 65 6e |dded syn|opsis en|
|00001600| 74 72 79 2c 20 63 68 61 | 6e 67 65 64 20 66 6f 72 |try, cha|nged for|
|00001610| 20 2f 64 65 76 2f 66 64 | 20 61 73 20 61 20 64 69 | /dev/fd| as a di|
|00001620| 72 65 63 74 6f 72 79 2c | 20 61 64 64 65 64 20 6e |rectory,| added n|
|00001630| 6f 74 65 73 0a 2e 2e 2e | 20 61 62 6f 75 74 20 6b |otes....| about k|
|00001640| 73 68 2c 20 2f 64 65 76 | 2f 73 74 64 7b 69 6e 2c |sh, /dev|/std{in,|
|00001650| 20 6f 75 74 2c 20 65 72 | 72 7d 20 61 6e 64 20 6f | out, er|r} and o|
|00001660| 6e 6c 79 20 68 61 76 69 | 6e 67 20 32 30 20 65 6e |nly havi|ng 20 en|
|00001670| 74 72 69 65 73 2e 20 41 | 44 52 2e 0a 2e 2e 2e 20 |tries. A|DR..... |
|00001680| 0a 2e 2e 2e 20 52 65 76 | 69 73 69 6f 6e 20 31 2e |.... Rev|ision 1.|
|00001690| 31 20 20 38 37 2f 30 37 | 2f 30 32 20 20 31 35 3a |1 87/07|/02 15:|
|000016a0| 32 38 3a 30 31 20 20 72 | 6f 6f 74 0a 2e 2e 2e 20 |28:01 r|oot.... |
|000016b0| 49 6e 69 74 69 61 6c 20 | 72 65 76 69 73 69 6f 6e |Initial |revision|
|000016c0| 0a 2e 2e 2e 20 0a 2e 2e | 2e 0a 2e 54 48 20 46 44 |.... ...|...TH FD|
|000016d0| 20 34 20 45 55 43 43 0a | 2e 55 43 20 34 0a 2e 53 | 4 EUCC.|.UC 4..S|
|000016e0| 48 20 4e 41 4d 45 0a 2f | 64 65 76 2f 66 64 2f 2a |H NAME./|dev/fd/*|
|000016f0| 20 5c 2d 20 60 60 66 69 | 6c 65 20 64 65 73 63 72 | \- ``fi|le descr|
|00001700| 69 70 74 6f 72 27 27 20 | 64 72 69 76 65 72 0a 2e |iptor'' |driver..|
|00001710| 53 48 20 53 59 4e 4f 50 | 53 49 53 0a 2e 42 20 22 |SH SYNOP|SIS..B "|
|00001720| 70 73 65 75 64 6f 2d 64 | 65 76 69 63 65 09 66 64 |pseudo-d|evice.fd|
|00001730| 22 0a 2e 53 48 20 44 45 | 53 43 52 49 50 54 49 4f |"..SH DE|SCRIPTIO|
|00001740| 4e 0a 2e 42 20 2f 64 65 | 76 2f 66 64 2f 30 0a 2d |N..B /de|v/fd/0.-|
|00001750| 0a 2e 42 20 2f 64 65 76 | 2f 66 64 2f 31 39 0a 61 |..B /dev|/fd/19.a|
|00001760| 72 65 20 73 70 65 63 69 | 61 6c 20 66 69 6c 65 73 |re speci|al files|
|00001770| 20 74 68 61 74 20 72 65 | 66 65 72 65 6e 63 65 20 | that re|ference |
|00001780| 74 68 65 20 66 69 6c 65 | 73 20 61 73 73 6f 63 69 |the file|s associ|
|00001790| 61 74 65 64 20 77 69 74 | 68 20 61 20 70 72 6f 63 |ated wit|h a proc|
|000017a0| 65 73 73 27 0a 6f 70 65 | 6e 20 66 69 6c 65 20 64 |ess'.ope|n file d|
|000017b0| 65 73 63 72 69 70 74 6f | 72 73 2e 0a 54 68 61 74 |escripto|rs..That|
|000017c0| 20 69 73 2c 20 6f 70 65 | 6e 69 6e 67 20 74 68 65 | is, ope|ning the|
|000017d0| 20 66 69 6c 65 3a 20 5c | 66 42 2f 64 65 76 2f 66 | file: \|fB/dev/f|
|000017e0| 64 2f 5c 66 49 4e 5c 66 | 52 20 69 73 20 65 71 75 |d/\fIN\f|R is equ|
|000017f0| 69 76 61 6c 65 6e 74 20 | 74 6f 20 6f 70 65 6e 69 |ivalent |to openi|
|00001800| 6e 67 20 77 68 61 74 65 | 76 65 72 0a 66 69 6c 65 |ng whate|ver.file|
|00001810| 20 79 6f 75 20 6f 70 65 | 6e 65 64 20 74 6f 20 67 | you ope|ned to g|
|00001820| 65 74 20 74 68 65 20 66 | 69 6c 65 20 64 65 73 63 |et the f|ile desc|
|00001830| 72 69 70 74 6f 72 0a 2e | 49 52 20 4e 20 2c 0a 65 |riptor..|IR N ,.e|
|00001840| 76 65 6e 20 74 68 6f 75 | 67 68 20 79 6f 75 20 6d |ven thou|gh you m|
|00001850| 61 79 20 6e 6f 74 0a 6b | 6e 6f 77 20 74 68 65 20 |ay not.k|now the |
|00001860| 66 69 6c 65 27 73 20 74 | 72 75 65 20 6e 61 6d 65 |file's t|rue name|
|00001870| 20 28 6f 72 20 65 76 65 | 6e 20 69 66 20 69 74 20 | (or eve|n if it |
|00001880| 68 61 73 20 6f 6e 65 29 | 2e 0a 54 68 69 73 20 63 |has one)|..This c|
|00001890| 61 6e 20 62 65 20 75 73 | 65 64 20 74 6f 20 66 6f |an be us|ed to fo|
|000018a0| 72 63 65 20 61 20 70 72 | 6f 67 72 61 6d 20 77 68 |rce a pr|ogram wh|
|000018b0| 69 63 68 20 6f 70 65 6e | 73 20 66 69 6c 65 73 20 |ich open|s files |
|000018c0| 62 79 20 6e 61 6d 65 2c | 20 74 6f 20 63 6f 6e 6e |by name,| to conn|
|000018d0| 65 63 74 0a 69 74 73 65 | 6c 66 20 74 6f 20 6f 70 |ect.itse|lf to op|
|000018e0| 65 6e 20 66 69 6c 65 20 | 64 65 73 63 72 69 70 74 |en file |descript|
|000018f0| 6f 72 73 20 28 77 68 69 | 63 68 20 79 6f 75 20 68 |ors (whi|ch you h|
|00001900| 61 76 65 20 74 68 6f 75 | 67 68 74 66 75 6c 6c 79 |ave thou|ghtfully|
|00001910| 20 70 72 6f 76 69 64 65 | 64 29 20 69 6e 0a 77 65 | provide|d) in.we|
|00001920| 69 72 64 20 61 6e 64 20 | 77 6f 6e 64 65 72 66 75 |ird and |wonderfu|
|00001930| 6c 20 77 61 79 73 2e 20 | 41 20 73 69 6d 70 6c 65 |l ways. |A simple|
|00001940| 20 75 73 65 20 77 6f 75 | 6c 64 20 62 65 20 74 6f | use wou|ld be to|
|00001950| 20 66 6f 72 63 65 20 61 | 20 70 72 6f 67 72 61 6d | force a| program|
|00001960| 20 77 68 69 63 68 0a 6f | 6e 6c 79 20 61 63 63 65 | which.o|nly acce|
|00001970| 70 74 73 20 69 6e 70 75 | 74 20 66 72 6f 6d 20 66 |pts inpu|t from f|
|00001980| 69 6c 65 73 2c 20 74 6f | 20 72 65 61 64 20 66 72 |iles, to| read fr|
|00001990| 6f 6d 20 69 74 73 20 73 | 74 61 6e 64 61 72 64 20 |om its s|tandard |
|000019a0| 69 6e 70 75 74 2e 0a 46 | 6f 72 20 69 6e 73 74 61 |input..F|or insta|
|000019b0| 6e 63 65 3a 0a 2e 73 70 | 0a 2e 74 69 20 2b 31 30 |nce:..sp|..ti +10|
|000019c0| 0a 63 61 74 20 2f 64 65 | 76 2f 66 64 2f 30 0a 2e |.cat /de|v/fd/0..|
|000019d0| 73 70 0a 70 72 6f 64 75 | 63 65 73 20 74 68 65 20 |sp.produ|ces the |
|000019e0| 73 61 6d 65 20 72 65 73 | 75 6c 74 20 61 73 3a 0a |same res|ult as:.|
|000019f0| 2e 73 70 0a 2e 74 69 20 | 2b 31 30 0a 63 61 74 20 |.sp..ti |+10.cat |
|00001a00| 2d 0a 2e 73 70 0a 77 68 | 69 63 68 20 77 6f 75 6c |-..sp.wh|ich woul|
|00001a10| 64 20 62 65 20 75 73 65 | 66 75 6c 20 69 66 0a 2e |d be use|ful if..|
|00001a20| 49 52 20 63 61 74 20 28 | 31 29 0a 64 69 64 6e 27 |IR cat (|1).didn'|
|00001a30| 74 20 75 73 65 20 74 68 | 65 20 60 60 2d 27 27 20 |t use th|e ``-'' |
|00001a40| 63 6f 6e 76 65 6e 74 69 | 6f 6e 2e 0a 2e 50 50 0a |conventi|on...PP.|
|00001a50| 54 68 69 73 20 64 72 69 | 76 65 72 20 69 73 20 70 |This dri|ver is p|
|00001a60| 61 72 74 69 63 75 6c 61 | 72 6c 79 20 75 73 65 66 |articula|rly usef|
|00001a70| 75 6c 20 66 6f 72 20 65 | 6e 61 62 6c 69 6e 67 20 |ul for e|nabling |
|00001a80| 74 68 65 20 60 60 70 72 | 6f 63 65 73 73 20 73 75 |the ``pr|ocess su|
|00001a90| 62 73 74 69 74 75 74 69 | 6f 6e 27 27 0a 6d 65 63 |bstituti|on''.mec|
|00001aa0| 68 61 6e 69 73 6d 20 69 | 6e 0a 2e 49 52 20 6b 73 |hanism i|n..IR ks|
|00001ab0| 68 20 28 31 29 2e 0a 2e | 50 50 0a 49 66 20 74 68 |h (1)...|PP.If th|
|00001ac0| 65 20 6f 70 65 6e 20 66 | 69 6c 65 20 64 65 73 63 |e open f|ile desc|
|00001ad0| 72 69 70 74 6f 72 20 72 | 65 66 65 72 65 6e 63 65 |riptor r|eference|
|00001ae0| 73 20 61 20 73 6f 63 6b | 65 74 2c 20 74 68 65 20 |s a sock|et, the |
|00001af0| 64 72 69 76 65 72 20 66 | 61 6b 65 73 20 61 0a 2e |driver f|akes a..|
|00001b00| 49 52 20 64 75 70 20 28 | 32 29 0a 73 79 73 74 65 |IR dup (|2).syste|
|00001b10| 6d 20 63 61 6c 6c 20 69 | 6e 73 74 65 61 64 20 6f |m call i|nstead o|
|00001b20| 66 20 61 63 74 75 61 6c | 6c 79 20 6f 70 65 6e 69 |f actual|ly openi|
|00001b30| 6e 67 20 61 20 66 69 6c | 65 2e 20 49 6e 20 74 68 |ng a fil|e. In th|
|00001b40| 69 73 20 63 61 73 65 20 | 69 74 0a 63 68 65 63 6b |is case |it.check|
|00001b50| 73 20 74 6f 20 73 65 65 | 20 74 68 61 74 20 74 68 |s to see| that th|
|00001b60| 65 20 72 65 61 64 2f 77 | 72 69 74 65 20 6d 6f 64 |e read/w|rite mod|
|00001b70| 65 20 79 6f 75 20 61 72 | 65 20 61 74 74 65 6d 70 |e you ar|e attemp|
|00001b80| 74 69 6e 67 20 74 6f 20 | 6f 70 65 6e 0a 74 68 65 |ting to |open.the|
|00001b90| 20 66 69 6c 65 20 77 69 | 74 68 2c 20 69 73 20 63 | file wi|th, is c|
|00001ba0| 6f 6d 70 61 74 69 62 6c | 65 20 77 69 74 68 20 74 |ompatibl|e with t|
|00001bb0| 68 65 20 6d 6f 64 65 20 | 6f 66 20 74 68 65 20 65 |he mode |of the e|
|00001bc0| 78 69 73 74 69 6e 67 20 | 66 69 6c 65 20 64 65 73 |xisting |file des|
|00001bd0| 63 72 69 70 74 6f 72 2e | 0a 54 68 61 74 20 69 73 |criptor.|.That is|
|00001be0| 2c 20 69 66 20 64 65 73 | 63 72 69 70 74 6f 72 20 |, if des|criptor |
|00001bf0| 35 20 72 65 66 65 72 73 | 20 74 6f 20 61 20 73 6f |5 refers| to a so|
|00001c00| 63 6b 65 74 20 61 6e 64 | 0a 69 73 20 6f 70 65 6e |cket and|.is open|
|00001c10| 20 66 6f 72 20 77 72 69 | 74 69 6e 67 2c 20 79 6f | for wri|ting, yo|
|00001c20| 75 20 63 61 6e 6e 6f 74 | 20 6f 70 65 6e 0a 2e 42 |u cannot| open..B|
|00001c30| 20 2f 64 65 76 2f 66 64 | 2f 35 0a 66 6f 72 20 72 | /dev/fd|/5.for r|
|00001c40| 65 61 64 69 6e 67 2e 0a | 2e 50 50 0a 41 73 20 61 |eading..|.PP.As a|
|00001c50| 20 6e 6f 74 61 74 69 6f | 6e 61 6c 20 63 6f 6e 76 | notatio|nal conv|
|00001c60| 65 6e 69 65 6e 63 65 2c | 20 74 68 65 20 66 69 6c |enience,| the fil|
|00001c70| 65 73 0a 2e 42 52 20 2f | 64 65 76 2f 73 74 64 69 |es..BR /|dev/stdi|
|00001c80| 6e 20 2c 0a 2e 42 52 20 | 2f 64 65 76 2f 73 74 64 |n ,..BR |/dev/std|
|00001c90| 6f 75 74 20 2c 0a 61 6e | 64 0a 2e 42 20 2f 64 65 |out ,.an|d..B /de|
|00001ca0| 76 2f 73 74 64 65 72 72 | 0a 61 72 65 20 70 72 6f |v/stderr|.are pro|
|00001cb0| 76 69 64 65 64 20 61 73 | 20 68 61 72 64 20 6c 69 |vided as| hard li|
|00001cc0| 6e 6b 73 20 74 6f 0a 2e | 42 52 20 2f 64 65 76 2f |nks to..|BR /dev/|
|00001cd0| 66 64 2f 30 20 2c 0a 2e | 42 52 20 2f 64 65 76 2f |fd/0 ,..|BR /dev/|
|00001ce0| 66 64 2f 31 20 2c 0a 61 | 6e 64 0a 2e 42 52 20 2f |fd/1 ,.a|nd..BR /|
|00001cf0| 64 65 76 2f 66 64 2f 32 | 0a 72 65 73 70 65 63 74 |dev/fd/2|.respect|
|00001d00| 69 76 65 6c 79 2e 0a 2e | 53 48 20 45 52 52 4f 52 |ively...|SH ERROR|
|00001d10| 53 0a 54 68 65 20 6e 61 | 6d 65 64 20 66 69 6c 65 |S.The na|med file|
|00001d20| 20 64 65 73 63 72 69 70 | 74 6f 72 20 77 69 6c 6c | descrip|tor will|
|00001d30| 20 62 65 20 60 60 6f 70 | 65 6e 65 64 27 27 20 61 | be ``op|ened'' a|
|00001d40| 73 20 64 65 73 63 72 69 | 62 65 64 20 61 62 6f 76 |s descri|bed abov|
|00001d50| 65 20 75 6e 6c 65 73 73 | 0a 6f 6e 65 20 6f 66 20 |e unless|.one of |
|00001d60| 74 68 65 20 66 6f 6c 6c | 6f 77 69 6e 67 20 69 73 |the foll|owing is|
|00001d70| 20 74 72 75 65 2e 0a 2e | 50 50 0a 2e 54 50 20 31 | true...|PP..TP 1|
|00001d80| 35 0a 5b 45 4e 58 49 4f | 5d 0a 54 68 65 20 66 69 |5.[ENXIO|].The fi|
|00001d90| 6c 65 20 64 65 73 63 72 | 69 70 74 6f 72 20 61 74 |le descr|iptor at|
|00001da0| 74 65 6d 70 74 69 6e 67 | 20 74 6f 20 62 65 20 72 |tempting| to be r|
|00001db0| 65 6f 70 65 6e 65 64 20 | 69 73 20 6c 61 72 67 65 |eopened |is large|
|00001dc0| 72 20 74 68 61 6e 20 74 | 68 65 0a 6d 61 78 69 6d |r than t|he.maxim|
|00001dd0| 75 6d 20 6e 75 6d 62 65 | 72 20 6f 66 20 6f 70 65 |um numbe|r of ope|
|00001de0| 6e 20 66 69 6c 65 73 20 | 74 68 61 74 20 61 20 70 |n files |that a p|
|00001df0| 72 6f 63 65 73 73 20 6d | 61 79 20 68 61 76 65 2e |rocess m|ay have.|
|00001e00| 0a 28 45 2e 67 2e 2c 20 | 61 74 74 65 6d 70 74 69 |.(E.g., |attempti|
|00001e10| 6e 67 20 74 6f 20 6f 70 | 65 6e 20 66 69 6c 65 20 |ng to op|en file |
|00001e20| 64 65 73 63 72 69 70 74 | 6f 72 20 36 35 20 6f 6e |descript|or 65 on|
|00001e30| 20 61 20 34 2e 33 42 53 | 44 20 73 79 73 74 65 6d | a 4.3BS|D system|
|00001e40| 2e 29 0a 2e 54 50 20 31 | 35 0a 5b 45 42 41 44 46 |.)..TP 1|5.[EBADF|
|00001e50| 5d 0a 54 68 65 20 66 69 | 6c 65 20 64 65 73 63 72 |].The fi|le descr|
|00001e60| 69 70 74 6f 72 20 61 74 | 74 65 6d 70 74 69 6e 67 |iptor at|tempting|
|00001e70| 20 74 6f 20 62 65 20 72 | 65 6f 70 65 6e 65 64 20 | to be r|eopened |
|00001e80| 69 73 20 6e 6f 74 20 61 | 6e 20 6f 70 65 6e 20 66 |is not a|n open f|
|00001e90| 69 6c 65 2e 0a 2e 50 50 | 0a 4f 74 68 65 72 20 65 |ile...PP|.Other e|
|00001ea0| 72 72 6f 72 73 20 61 73 | 20 77 6f 75 6c 64 20 62 |rrors as| would b|
|00001eb0| 65 20 72 65 74 75 72 6e | 65 64 20 62 79 0a 2e 49 |e return|ed by..I|
|00001ec0| 52 20 61 63 63 65 73 73 | 20 28 32 29 2c 0a 61 6e |R access| (2),.an|
|00001ed0| 64 0a 2e 49 52 20 6f 70 | 65 6e 20 28 32 29 2e 0a |d..IR op|en (2)..|
|00001ee0| 2e 53 48 20 53 45 45 20 | 41 4c 53 4f 0a 2e 49 52 |.SH SEE |ALSO..IR|
|00001ef0| 20 6b 73 68 20 28 31 29 | 2c 0a 2e 49 52 20 61 63 | ksh (1)|,..IR ac|
|00001f00| 63 65 73 73 20 28 32 29 | 2c 0a 2e 49 52 20 64 75 |cess (2)|,..IR du|
|00001f10| 70 20 28 32 29 2c 0a 2e | 49 52 20 6f 70 65 6e 20 |p (2),..|IR open |
|00001f20| 28 32 29 2e 0a 2e 53 48 | 20 41 55 54 48 4f 52 0a |(2)...SH| AUTHOR.|
|00001f30| 46 72 65 64 20 42 6c 6f | 6e 64 65 72 20 3c 46 72 |Fred Blo|nder <Fr|
|00001f40| 65 64 40 6d 69 6d 73 79 | 2e 75 6d 64 2e 45 44 55 |ed@mimsy|.umd.EDU|
|00001f50| 3e 0a 2e 62 72 0a 4e 46 | 53 20 76 65 72 73 69 6f |>..br.NF|S versio|
|00001f60| 6e 20 62 79 20 41 72 6e | 6f 6c 64 20 52 6f 62 62 |n by Arn|old Robb|
|00001f70| 69 6e 73 20 3c 61 72 6e | 6f 6c 64 40 65 6d 6f 72 |ins <arn|old@emor|
|00001f80| 79 2e 45 44 55 3e 0a 2e | 53 48 20 46 49 4c 45 53 |y.EDU>..|SH FILES|
|00001f90| 0a 2e 42 52 20 2f 64 65 | 76 2f 66 64 2f 2a 20 2c |..BR /de|v/fd/* ,|
|00001fa0| 0a 2e 42 52 20 2f 64 65 | 76 2f 73 74 64 69 6e 20 |..BR /de|v/stdin |
|00001fb0| 2c 0a 2e 42 52 20 2f 64 | 65 76 2f 73 74 64 6f 75 |,..BR /d|ev/stdou|
|00001fc0| 74 20 2c 0a 2e 42 20 2f | 64 65 76 2f 73 74 64 65 |t ,..B /|dev/stde|
|00001fd0| 72 72 0a 2e 53 48 20 42 | 55 47 53 0a 53 69 6e 63 |rr..SH B|UGS.Sinc|
|00001fe0| 65 2c 20 66 6f 72 20 73 | 6f 63 6b 65 74 73 2c 0a |e, for s|ockets,.|
|00001ff0| 74 68 65 20 64 72 69 76 | 65 72 20 66 61 6b 65 73 |the driv|er fakes|
|00002000| 20 61 0a 2e 49 20 64 75 | 70 0a 73 79 73 74 65 6d | a..I du|p.system|
|00002010| 20 63 61 6c 6c 20 72 61 | 74 68 65 72 20 74 68 61 | call ra|ther tha|
|00002020| 6e 20 61 63 74 75 61 6c | 6c 79 20 72 65 2d 6f 70 |n actual|ly re-op|
|00002030| 65 6e 69 6e 67 0a 74 68 | 65 20 66 69 6c 65 2c 20 |ening.th|e file, |
|00002040| 74 68 65 20 6e 65 77 20 | 64 65 73 63 72 69 70 74 |the new |descript|
|00002050| 6f 72 20 69 73 20 61 20 | 63 6f 70 79 20 6f 66 20 |or is a |copy of |
|00002060| 74 68 65 0a 2e 49 52 20 | 64 75 70 20 27 65 64 0a |the..IR |dup 'ed.|
|00002070| 64 65 73 63 72 69 70 74 | 6f 72 2c 20 61 6e 64 20 |descript|or, and |
|00002080| 73 68 61 72 65 73 0a 69 | 74 73 20 70 72 6f 70 65 |shares.i|ts prope|
|00002090| 72 74 69 65 73 2e 20 53 | 70 65 63 69 66 69 63 61 |rties. S|pecifica|
|000020a0| 6c 6c 79 3a 20 69 74 20 | 77 69 6c 6c 20 68 61 76 |lly: it |will hav|
|000020b0| 65 20 74 68 65 20 73 61 | 6d 65 20 72 65 61 64 2f |e the sa|me read/|
|000020c0| 77 72 69 74 65 20 6d 6f | 64 65 20 61 73 20 74 68 |write mo|de as th|
|000020d0| 65 0a 2e 49 52 20 64 75 | 70 20 27 65 64 0a 64 65 |e..IR du|p 'ed.de|
|000020e0| 73 63 72 69 70 74 6f 72 | 2e 20 49 66 20 64 65 73 |scriptor|. If des|
|000020f0| 63 72 69 70 74 6f 72 20 | 30 20 69 73 20 6f 70 65 |criptor |0 is ope|
|00002100| 6e 20 66 6f 72 20 72 65 | 61 64 69 6e 67 20 61 6e |n for re|ading an|
|00002110| 64 20 77 72 69 74 69 6e | 67 2c 20 6f 70 65 6e 69 |d writin|g, openi|
|00002120| 6e 67 0a 2e 42 20 2f 64 | 65 76 2f 66 64 2f 30 0a |ng..B /d|ev/fd/0.|
|00002130| 66 6f 72 20 72 65 61 64 | 69 6e 67 20 77 69 6c 6c |for read|ing will|
|00002140| 20 72 65 74 75 72 6e 20 | 61 20 77 72 69 74 61 62 | return |a writab|
|00002150| 6c 65 2c 20 61 73 20 77 | 65 6c 6c 20 61 73 20 72 |le, as w|ell as r|
|00002160| 65 61 64 61 62 6c 65 2c | 20 66 69 6c 65 0a 64 65 |eadable,| file.de|
|00002170| 73 63 72 69 70 74 6f 72 | 2e 0a 41 6c 73 6f 3a 20 |scriptor|..Also: |
|00002180| 74 68 65 20 64 65 73 63 | 72 69 70 74 6f 72 73 20 |the desc|riptors |
|00002190| 73 68 61 72 65 20 74 68 | 65 20 73 61 6d 65 20 72 |share th|e same r|
|000021a0| 65 61 64 2f 77 72 69 74 | 65 20 70 6f 69 6e 74 65 |ead/writ|e pointe|
|000021b0| 72 2c 20 73 6f 20 73 65 | 65 6b 73 2c 20 72 65 61 |r, so se|eks, rea|
|000021c0| 64 73 20 61 6e 64 0a 77 | 72 69 74 65 73 20 6f 6e |ds and.w|rites on|
|000021d0| 20 6f 6e 65 20 77 69 6c | 6c 20 61 66 66 65 63 74 | one wil|l affect|
|000021e0| 20 74 68 65 20 6f 74 68 | 65 72 2e 0a 2e 50 50 0a | the oth|er...PP.|
|000021f0| 57 68 69 6c 65 20 6e 6f | 74 20 61 20 62 75 67 20 |While no|t a bug |
|00002200| 69 6e 20 74 68 65 20 64 | 72 69 76 65 72 20 73 70 |in the d|river sp|
|00002210| 65 63 69 66 69 63 61 6c | 6c 79 2c 20 75 73 65 20 |ecifical|ly, use |
|00002220| 6f 66 20 74 68 65 73 65 | 20 66 69 6c 65 73 20 63 |of these| files c|
|00002230| 61 6e 20 70 72 6f 64 75 | 63 65 20 6f 64 64 0a 69 |an produ|ce odd.i|
|00002240| 6e 74 65 72 61 63 74 69 | 6f 6e 73 20 77 69 74 68 |nteracti|ons with|
|00002250| 20 70 72 6f 67 72 61 6d | 73 20 77 68 69 63 68 20 | program|s which |
|00002260| 64 6f 6e 27 74 20 65 78 | 70 65 63 74 20 74 6f 20 |don't ex|pect to |
|00002270| 68 61 76 65 20 74 68 65 | 69 72 20 66 69 6c 65 0a |have the|ir file.|
|00002280| 64 65 73 63 72 69 70 74 | 6f 72 73 20 73 75 72 72 |descript|ors surr|
|00002290| 65 70 74 69 74 69 6f 75 | 73 6c 79 20 61 6c 69 61 |eptitiou|sly alia|
|000022a0| 73 65 64 2e 0a 2e 50 50 | 0a 48 61 76 69 6e 67 20 |sed...PP|.Having |
|000022b0| 6f 6e 6c 79 20 32 30 20 | 65 6e 74 72 69 65 73 20 |only 20 |entries |
|000022c0| 69 6e 20 74 68 65 0a 2e | 42 20 2f 64 65 76 2f 66 |in the..|B /dev/f|
|000022d0| 64 0a 64 69 72 65 63 74 | 6f 72 79 20 69 73 20 61 |d.direct|ory is a|
|000022e0| 6e 20 61 6e 61 63 68 72 | 6f 6e 69 73 6d 3b 20 6d |n anachr|onism; m|
|000022f0| 6f 64 65 72 6e 20 55 6e | 69 78 20 73 79 73 74 65 |odern Un|ix syste|
|00002300| 6d 73 20 61 6c 6c 6f 77 | 0a 61 20 70 72 6f 63 65 |ms allow|.a proce|
|00002310| 73 73 20 74 6f 20 68 61 | 76 65 20 6d 61 6e 79 20 |ss to ha|ve many |
|00002320| 6d 6f 72 65 20 6f 70 65 | 6e 20 66 69 6c 65 20 64 |more ope|n file d|
|00002330| 65 73 63 72 69 70 74 6f | 72 73 2e 0a 53 48 41 52 |escripto|rs..SHAR|
|00002340| 5f 45 4f 46 0a 63 68 6d | 6f 64 20 2b 78 20 27 66 |_EOF.chm|od +x 'f|
|00002350| 64 2e 34 27 0a 66 69 20 | 23 20 65 6e 64 20 6f 66 |d.4'.fi |# end of|
|00002360| 20 6f 76 65 72 77 72 69 | 74 69 6e 67 20 63 68 65 | overwri|ting che|
|00002370| 63 6b 0a 65 63 68 6f 20 | 73 68 61 72 3a 20 65 78 |ck.echo |shar: ex|
|00002380| 74 72 61 63 74 69 6e 67 | 20 22 27 64 65 76 5f 66 |tracting| "'dev_f|
|00002390| 64 2e 63 27 22 20 27 28 | 38 39 38 31 20 63 68 61 |d.c'" '(|8981 cha|
|000023a0| 72 61 63 74 65 72 73 29 | 27 0a 69 66 20 74 65 73 |racters)|'.if tes|
|000023b0| 74 20 2d 66 20 27 64 65 | 76 5f 66 64 2e 63 27 0a |t -f 'de|v_fd.c'.|
|000023c0| 74 68 65 6e 0a 09 65 63 | 68 6f 20 73 68 61 72 3a |then..ec|ho shar:|
|000023d0| 20 77 69 6c 6c 20 6e 6f | 74 20 6f 76 65 72 2d 77 | will no|t over-w|
|000023e0| 72 69 74 65 20 65 78 69 | 73 74 69 6e 67 20 66 69 |rite exi|sting fi|
|000023f0| 6c 65 20 22 27 64 65 76 | 5f 66 64 2e 63 27 22 0a |le "'dev|_fd.c'".|
|00002400| 65 6c 73 65 0a 63 61 74 | 20 3c 3c 20 5c 53 48 41 |else.cat| << \SHA|
|00002410| 52 5f 45 4f 46 20 3e 20 | 27 64 65 76 5f 66 64 2e |R_EOF > |'dev_fd.|
|00002420| 63 27 0a 23 69 66 6e 64 | 65 66 20 6c 69 6e 74 0a |c'.#ifnd|ef lint.|
|00002430| 73 74 61 74 69 63 20 63 | 68 61 72 20 72 63 73 69 |static c|har rcsi|
|00002440| 64 5b 5d 20 3d 20 22 40 | 28 23 29 24 48 65 61 64 |d[] = "@|(#)$Head|
|00002450| 65 72 3a 20 64 65 76 5f | 66 64 2e 63 2c 76 20 31 |er: dev_|fd.c,v 1|
|00002460| 2e 36 20 38 37 2f 30 37 | 2f 31 30 20 31 30 3a 32 |.6 87/07|/10 10:2|
|00002470| 34 3a 31 33 20 72 6f 6f | 74 20 4c 6f 63 6b 65 64 |4:13 roo|t Locked|
|00002480| 20 24 22 3b 0a 23 65 6e | 64 69 66 20 6c 69 6e 74 | $";.#en|dif lint|
|00002490| 0a 0a 2f 2a 0a 20 2a 20 | 66 64 2e 63 09 09 46 72 |../*. * |fd.c..Fr|
|000024a0| 65 64 20 42 6c 6f 6e 64 | 65 72 20 2d 20 55 20 6f |ed Blond|er - U o|
|000024b0| 66 20 4d 61 72 79 6c 61 | 6e 64 09 31 31 2d 53 65 |f Maryla|nd.11-Se|
|000024c0| 70 2d 31 39 38 34 0a 20 | 2a 0a 20 2a 20 60 60 46 |p-1984. |*. * ``F|
|000024d0| 69 6c 65 20 44 65 73 63 | 72 69 70 74 6f 72 27 27 |ile Desc|riptor''|
|000024e0| 20 70 73 65 75 64 6f 2d | 64 65 76 69 63 65 20 64 | pseudo-|device d|
|000024f0| 72 69 76 65 72 2c 20 72 | 65 77 72 69 74 74 65 6e |river, r|ewritten|
|00002500| 20 66 6f 72 20 42 65 72 | 6b 65 6c 65 79 20 34 2e | for Ber|keley 4.|
|00002510| 32 2e 0a 20 2a 0a 20 2a | 20 4f 70 65 6e 69 6e 67 |2.. *. *| Opening|
|00002520| 20 6d 69 6e 6f 72 20 64 | 65 76 69 63 65 20 4e 20 | minor d|evice N |
|00002530| 6f 70 65 6e 73 20 74 68 | 65 20 66 69 6c 65 20 28 |opens th|e file (|
|00002540| 69 66 20 61 6e 79 29 20 | 63 6f 6e 6e 65 63 74 65 |if any) |connecte|
|00002550| 64 20 74 6f 20 66 69 6c | 65 2d 64 65 73 63 72 69 |d to fil|e-descri|
|00002560| 70 74 6f 72 0a 20 2a 20 | 4e 20 62 65 6c 6f 6e 67 |ptor. * |N belong|
|00002570| 69 6e 67 20 74 6f 20 74 | 68 65 20 63 61 6c 6c 69 |ing to t|he calli|
|00002580| 6e 67 20 70 72 6f 63 65 | 73 73 2e 20 4e 6f 74 65 |ng proce|ss. Note|
|00002590| 20 74 68 61 74 20 74 68 | 69 73 20 64 72 69 76 65 | that th|is drive|
|000025a0| 72 20 63 6f 6e 73 69 73 | 74 73 20 6f 66 20 6f 6e |r consis|ts of on|
|000025b0| 6c 79 0a 20 2a 20 74 68 | 65 20 60 60 6f 70 65 6e |ly. * th|e ``open|
|000025c0| 28 29 27 27 20 72 6f 75 | 74 69 6e 65 2c 20 62 65 |()'' rou|tine, be|
|000025d0| 63 61 75 73 65 20 61 6c | 6c 20 73 75 62 73 65 71 |cause al|l subseq|
|000025e0| 75 65 6e 74 20 72 65 66 | 65 72 65 6e 63 65 73 20 |uent ref|erences |
|000025f0| 74 6f 20 74 68 69 73 20 | 66 69 6c 65 20 77 69 6c |to this |file wil|
|00002600| 6c 0a 20 2a 20 62 65 20 | 64 69 72 65 63 74 20 74 |l. * be |direct t|
|00002610| 6f 20 74 68 65 20 6f 74 | 68 65 72 20 64 72 69 76 |o the ot|her driv|
|00002620| 65 72 2e 0a 20 2a 0a 20 | 2a 20 4e 46 53 20 76 65 |er.. *. |* NFS ve|
|00002630| 72 73 69 6f 6e 20 62 79 | 0a 20 2a 20 41 72 6e 6f |rsion by|. * Arno|
|00002640| 6c 64 20 52 6f 62 62 69 | 6e 73 20 2d 2d 20 45 6d |ld Robbi|ns -- Em|
|00002650| 6f 72 79 20 55 6e 69 76 | 65 72 73 69 74 79 20 43 |ory Univ|ersity C|
|00002660| 6f 6d 70 75 74 69 6e 67 | 20 43 65 6e 74 65 72 20 |omputing| Center |
|00002670| 2d 2d 20 53 75 6d 6d 65 | 72 20 38 37 0a 20 2a 2f |-- Summe|r 87. */|
|00002680| 0a 0a 2f 2a 0a 20 2a 20 | 24 4c 6f 67 3a 09 64 65 |../*. * |$Log:.de|
|00002690| 76 5f 66 64 2e 63 2c 76 | 20 24 0a 20 2a 20 52 65 |v_fd.c,v| $. * Re|
|000026a0| 76 69 73 69 6f 6e 20 31 | 2e 36 20 20 38 37 2f 30 |vision 1|.6 87/0|
|000026b0| 37 2f 31 30 20 20 31 30 | 3a 32 34 3a 31 33 20 20 |7/10 10|:24:13 |
|000026c0| 72 6f 6f 74 0a 20 2a 20 | 52 65 6d 6f 76 65 64 20 |root. * |Removed |
|000026d0| 64 65 62 75 67 67 69 6e | 67 20 70 72 69 6e 74 66 |debuggin|g printf|
|000026e0| 73 2e 20 41 44 52 2e 0a | 20 2a 20 0a 20 2a 20 52 |s. ADR..| * . * R|
|000026f0| 65 76 69 73 69 6f 6e 20 | 31 2e 35 20 20 38 37 2f |evision |1.5 87/|
|00002700| 30 37 2f 31 30 20 20 31 | 30 3a 32 30 3a 31 32 20 |07/10 1|0:20:12 |
|00002710| 20 72 6f 6f 74 0a 20 2a | 20 41 64 64 65 64 20 45 | root. *| Added E|
|00002720| 4e 58 49 4f 20 63 68 65 | 63 6b 20 74 6f 20 69 6e |NXIO che|ck to in|
|00002730| 6f 64 65 20 76 65 72 73 | 69 6f 6e 2e 20 41 44 52 |ode vers|ion. ADR|
|00002740| 2e 0a 20 2a 20 0a 20 2a | 20 52 65 76 69 73 69 6f |.. * . *| Revisio|
|00002750| 6e 20 31 2e 34 20 20 38 | 37 2f 30 37 2f 30 35 20 |n 1.4 8|7/07/05 |
|00002760| 20 31 34 3a 31 39 3a 34 | 31 20 20 72 6f 6f 74 0a | 14:19:4|1 root.|
|00002770| 20 2a 20 41 64 64 65 64 | 20 4e 4f 46 49 4c 45 2f | * Added| NOFILE/|
|00002780| 45 4e 58 49 4f 20 63 68 | 65 63 6b 2c 20 73 6f 6d |ENXIO ch|eck, som|
|00002790| 65 20 6d 69 6e 6f 72 20 | 63 6c 65 61 6e 75 70 2e |e minor |cleanup.|
|000027a0| 20 41 44 52 2e 0a 20 2a | 20 0a 20 2a 20 52 65 76 | ADR.. *| . * Rev|
|000027b0| 69 73 69 6f 6e 20 31 2e | 33 20 20 38 37 2f 30 37 |ision 1.|3 87/07|
|000027c0| 2f 30 35 20 20 31 30 3a | 34 36 3a 34 38 20 20 72 |/05 10:|46:48 r|
|000027d0| 6f 6f 74 0a 20 2a 20 42 | 72 6f 75 67 68 74 20 74 |oot. * B|rought t|
|000027e0| 68 65 20 63 6f 6d 6d 65 | 6e 74 73 20 69 6e 74 6f |he comme|nts into|
|000027f0| 20 73 79 6e 63 20 77 69 | 74 68 20 72 65 61 6c 69 | sync wi|th reali|
|00002800| 74 79 2e 20 42 75 67 20 | 66 69 78 20 74 6f 20 69 |ty. Bug |fix to i|
|00002810| 6e 6f 64 65 20 76 65 72 | 73 69 6f 6e 2e 20 41 44 |node ver|sion. AD|
|00002820| 52 2e 0a 20 2a 20 0a 20 | 2a 20 52 65 76 69 73 69 |R.. * . |* Revisi|
|00002830| 6f 6e 20 31 2e 32 20 20 | 38 37 2f 30 37 2f 30 33 |on 1.2 |87/07/03|
|00002840| 20 20 31 36 3a 35 33 3a | 34 36 20 20 72 6f 6f 74 | 16:53:|46 root|
|00002850| 0a 20 2a 20 4e 46 53 20 | 76 65 72 73 69 6f 6e 20 |. * NFS |version |
|00002860| 6f 66 20 74 68 65 20 64 | 72 69 76 65 72 2e 20 57 |of the d|river. W|
|00002870| 6f 72 6b 73 20 6a 75 73 | 74 20 66 69 6e 65 20 6f |orks jus|t fine o|
|00002880| 6e 20 61 20 73 75 6e 2e | 20 41 44 52 2e 0a 20 2a |n a sun.| ADR.. *|
|00002890| 20 0a 20 2a 20 52 65 76 | 69 73 69 6f 6e 20 31 2e | . * Rev|ision 1.|
|000028a0| 31 20 20 38 34 2f 31 32 | 2f 30 31 20 20 32 31 3a |1 84/12|/01 21:|
|000028b0| 33 38 3a 31 37 20 20 63 | 68 72 69 73 0a 20 2a 20 |38:17 c|hris. * |
|000028c0| 49 6e 69 74 69 61 6c 20 | 72 65 76 69 73 69 6f 6e |Initial |revision|
|000028d0| 0a 20 2a 20 0a 20 2a 2f | 0a 0a 23 69 6e 63 6c 75 |. * . */|..#inclu|
|000028e0| 64 65 20 22 66 64 2e 68 | 22 0a 23 69 66 20 4e 46 |de "fd.h|".#if NF|
|000028f0| 44 20 3e 20 30 0a 0a 23 | 69 6e 63 6c 75 64 65 20 |D > 0..#|include |
|00002900| 22 2e 2e 2f 68 2f 70 61 | 72 61 6d 2e 68 22 0a 23 |"../h/pa|ram.h".#|
|00002910| 69 66 64 65 66 20 4e 46 | 53 0a 23 69 6e 63 6c 75 |ifdef NF|S.#inclu|
|00002920| 64 65 20 22 2e 2e 2f 68 | 2f 74 69 6d 65 2e 68 22 |de "../h|/time.h"|
|00002930| 0a 23 69 6e 63 6c 75 64 | 65 20 22 2e 2e 2f 68 2f |.#includ|e "../h/|
|00002940| 76 6e 6f 64 65 2e 68 22 | 0a 23 65 6c 73 65 0a 23 |vnode.h"|.#else.#|
|00002950| 69 6e 63 6c 75 64 65 20 | 22 2e 2e 2f 68 2f 69 6e |include |"../h/in|
|00002960| 6f 64 65 2e 68 22 0a 23 | 65 6e 64 69 66 0a 23 69 |ode.h".#|endif.#i|
|00002970| 6e 63 6c 75 64 65 20 22 | 2e 2e 2f 68 2f 66 69 6c |nclude "|../h/fil|
|00002980| 65 2e 68 22 0a 23 69 6e | 63 6c 75 64 65 20 22 2e |e.h".#in|clude ".|
|00002990| 2e 2f 68 2f 64 69 72 2e | 68 22 0a 23 69 6e 63 6c |./h/dir.|h".#incl|
|000029a0| 75 64 65 20 22 2e 2e 2f | 68 2f 75 73 65 72 2e 68 |ude "../|h/user.h|
|000029b0| 22 0a 23 69 6e 63 6c 75 | 64 65 20 22 2e 2e 2f 68 |".#inclu|de "../h|
|000029c0| 2f 65 72 72 6e 6f 2e 68 | 22 0a 0a 2f 2a 0a 20 2a |/errno.h|"../*. *|
|000029d0| 20 54 48 49 53 20 43 4f | 44 45 20 4e 45 45 44 53 | THIS CO|DE NEEDS|
|000029e0| 20 43 4c 45 41 4e 49 4e | 47 20 41 53 20 53 4f 4f | CLEANIN|G AS SOO|
|000029f0| 4e 20 41 53 20 41 53 53 | 49 47 4e 4d 45 4e 54 53 |N AS ASS|IGNMENTS|
|00002a00| 20 54 4f 20 75 2e 75 5f | 2a 20 47 4f 20 41 57 41 | TO u.u_|* GO AWA|
|00002a10| 59 0a 20 2a 2f 0a 0a 2f | 2a 0a 20 2a 20 54 68 65 |Y. */../|*. * The|
|00002a20| 20 4e 46 53 20 6d 6f 64 | 73 20 61 72 65 20 73 6f | NFS mod|s are so|
|00002a30| 20 65 78 74 65 6e 73 69 | 76 65 20 74 68 61 74 20 | extensi|ve that |
|00002a40| 49 20 68 61 76 65 20 64 | 65 63 69 64 65 64 20 74 |I have d|ecided t|
|00002a50| 6f 20 70 72 6f 76 69 64 | 65 20 74 77 6f 20 77 68 |o provid|e two wh|
|00002a60| 6f 6c 65 0a 20 2a 20 63 | 6f 70 69 65 73 20 6f 66 |ole. * c|opies of|
|00002a70| 20 74 68 65 20 72 6f 75 | 74 69 6e 65 2c 20 6f 6e | the rou|tine, on|
|00002a80| 65 20 66 6f 72 20 4e 46 | 53 20 61 6e 64 20 6f 6e |e for NF|S and on|
|00002a90| 65 20 66 6f 72 20 72 65 | 67 75 6c 61 72 20 42 53 |e for re|gular BS|
|00002aa0| 44 2c 20 69 6e 73 74 65 | 61 64 0a 20 2a 20 6f 66 |D, inste|ad. * of|
|00002ab0| 20 6d 69 78 69 6e 67 20 | 74 68 65 6d 20 75 70 20 | mixing |them up |
|00002ac0| 77 69 74 68 20 69 66 64 | 65 66 73 2e 20 54 68 65 |with ifd|efs. The|
|00002ad0| 20 6e 6f 6e 2d 4e 46 53 | 20 63 6f 64 65 20 69 73 | non-NFS| code is|
|00002ae0| 20 74 68 65 20 6f 72 69 | 67 69 6e 61 6c 0a 20 2a | the ori|ginal. *|
|00002af0| 20 76 65 72 73 69 6f 6e | 20 66 72 6f 6d 20 55 4d | version| from UM|
|00002b00| 44 2e 20 20 41 2e 44 2e | 52 2e 0a 20 2a 2f 0a 0a |D. A.D.|R.. */..|
|00002b10| 23 69 66 64 65 66 20 4e | 46 53 0a 2f 2a 0a 20 2a |#ifdef N|FS./*. *|
|00002b20| 20 58 58 58 0a 20 2a 0a | 20 2a 20 57 41 52 4e 49 | XXX. *.| * WARNI|
|00002b30| 4e 47 21 21 21 21 21 20 | 54 68 69 73 20 70 69 65 |NG!!!!! |This pie|
|00002b40| 63 65 20 6f 66 20 63 6f | 64 65 20 72 65 71 75 69 |ce of co|de requi|
|00002b50| 72 65 73 20 74 68 61 74 | 20 61 20 70 61 74 63 68 |res that| a patch|
|00002b60| 20 62 65 20 6d 61 64 65 | 0a 20 2a 20 74 6f 20 74 | be made|. * to t|
|00002b70| 68 65 20 73 74 6f 63 6b | 20 4e 46 53 20 33 2e 32 |he stock| NFS 3.2|
|00002b80| 20 63 6f 64 65 20 69 6e | 20 73 70 65 63 66 73 2f | code in| specfs/|
|00002b90| 73 70 65 63 5f 76 6e 6f | 64 65 6f 70 73 2e 63 24 |spec_vno|deops.c$|
|00002ba0| 73 70 65 63 5f 6f 70 65 | 6e 28 29 2e 0a 20 2a 20 |spec_ope|n().. * |
|00002bb0| 54 68 65 20 6d 6f 64 69 | 66 69 63 61 74 69 6f 6e |The modi|fication|
|00002bc0| 20 69 73 20 74 6f 20 70 | 61 73 73 20 61 20 70 6f | is to p|ass a po|
|00002bd0| 69 6e 74 65 72 20 74 6f | 20 74 68 65 20 76 6e 6f |inter to| the vno|
|00002be0| 64 65 20 66 6f 72 20 74 | 68 69 73 20 66 69 6c 65 |de for t|his file|
|00002bf0| 0a 20 2a 20 69 6e 74 6f | 20 74 68 69 73 20 72 6f |. * into| this ro|
|00002c00| 75 74 69 6e 65 20 69 6e | 20 74 68 65 20 63 61 6c |utine in| the cal|
|00002c10| 6c 20 74 6f 20 28 2a 63 | 64 65 77 73 77 5b 6d 61 |l to (*c|dewsw[ma|
|00002c20| 6a 6f 72 28 64 65 76 29 | 5d 29 28 29 2c 20 61 73 |jor(dev)|])(), as|
|00002c30| 20 61 20 66 6f 75 72 74 | 68 0a 20 2a 20 61 72 67 | a fourt|h. * arg|
|00002c40| 75 6d 65 6e 74 2e 0a 20 | 2a 0a 20 2a 20 57 68 79 |ument.. |*. * Why|
|00002c50| 3f 20 79 6f 75 20 61 73 | 6b 2e 20 57 68 65 6e 20 |? you as|k. When |
|00002c60| 74 68 69 73 20 64 65 76 | 69 63 65 20 69 73 20 6f |this dev|ice is o|
|00002c70| 70 65 6e 65 64 2c 20 6f | 70 65 6e 28 29 20 63 61 |pened, o|pen() ca|
|00002c80| 6c 6c 73 20 63 6f 70 65 | 6e 28 29 20 77 68 69 63 |lls cope|n() whic|
|00002c90| 68 20 63 61 6c 6c 73 0a | 20 2a 20 76 6e 5f 6f 70 |h calls.| * vn_op|
|00002ca0| 65 6e 28 29 2e 20 4e 6f | 77 2c 20 74 68 65 20 77 |en(). No|w, the w|
|00002cb0| 68 6f 6c 65 20 69 64 65 | 61 20 62 65 68 69 6e 64 |hole ide|a behind|
|00002cc0| 20 74 68 69 73 20 22 64 | 65 76 69 63 65 22 20 69 | this "d|evice" i|
|00002cd0| 73 20 74 6f 20 73 75 62 | 73 74 69 74 75 74 65 20 |s to sub|stitute |
|00002ce0| 61 6e 0a 20 2a 20 61 6c | 72 65 61 64 79 20 6f 70 |an. * al|ready op|
|00002cf0| 65 6e 20 66 69 6c 65 20 | 66 6f 72 20 74 68 69 73 |en file |for this|
|00002d00| 20 6f 6e 65 2e 20 54 68 | 65 20 77 61 79 20 74 6f | one. Th|e way to|
|00002d10| 20 64 6f 20 74 68 69 73 | 20 69 73 20 74 6f 20 68 | do this| is to h|
|00002d20| 61 6e 64 20 62 61 63 6b | 20 75 70 20 61 20 76 6e |and back| up a vn|
|00002d30| 6f 64 65 0a 20 2a 20 66 | 6f 72 20 73 61 69 64 20 |ode. * f|or said |
|00002d40| 6f 70 65 6e 20 66 69 6c | 65 2e 20 54 68 65 20 72 |open fil|e. The r|
|00002d50| 65 67 75 6c 61 72 20 69 | 6e 6f 64 65 20 76 65 72 |egular i|node ver|
|00002d60| 73 69 6f 6e 20 6f 66 20 | 74 68 69 73 20 63 6f 64 |sion of |this cod|
|00002d70| 65 20 68 61 73 20 69 74 | 20 65 61 73 79 2e 0a 20 |e has it| easy.. |
|00002d80| 2a 20 54 68 65 20 66 69 | 6c 65 20 73 74 72 75 63 |* The fi|le struc|
|00002d90| 74 75 72 65 20 66 6f 72 | 20 74 68 69 73 20 64 65 |ture for| this de|
|00002da0| 76 69 63 65 20 70 6f 69 | 6e 74 73 20 61 74 20 74 |vice poi|nts at t|
|00002db0| 68 65 20 64 65 76 69 63 | 65 27 73 20 69 6e 6f 64 |he devic|e's inod|
|00002dc0| 65 2e 20 43 68 75 63 6b | 0a 20 2a 20 74 68 61 74 |e. Chuck|. * that|
|00002dd0| 20 69 6e 6f 64 65 20 61 | 6e 64 20 73 75 62 73 74 | inode a|nd subst|
|00002de0| 69 74 75 74 65 20 74 68 | 65 20 69 6e 6f 64 65 20 |itute th|e inode |
|00002df0| 6f 66 20 74 68 65 20 61 | 6c 72 65 61 64 79 20 6f |of the a|lready o|
|00002e00| 70 65 6e 20 66 69 6c 65 | 2e 20 49 74 20 69 73 20 |pen file|. It is |
|00002e10| 6e 6f 74 0a 20 2a 20 73 | 6f 20 65 61 73 79 20 69 |not. * s|o easy i|
|00002e20| 6e 20 74 68 65 20 4e 46 | 53 20 63 61 73 65 2c 20 |n the NF|S case, |
|00002e30| 62 65 63 61 75 73 65 20 | 2a 74 68 65 20 66 69 6c |because |*the fil|
|00002e40| 65 20 73 74 72 75 63 74 | 75 72 65 20 64 6f 65 73 |e struct|ure does|
|00002e50| 20 6e 6f 74 20 79 65 74 | 0a 20 2a 20 70 6f 69 6e | not yet|. * poin|
|00002e60| 74 20 61 74 20 61 20 76 | 6e 6f 64 65 2a 2e 20 54 |t at a v|node*. T|
|00002e70| 68 61 74 20 69 73 20 6f | 6e 6c 79 20 64 6f 6e 65 |hat is o|nly done|
|00002e80| 20 69 6e 20 63 6f 70 65 | 6e 28 29 20 61 66 74 65 | in cope|n() afte|
|00002e90| 72 20 74 68 65 20 76 6e | 5f 6f 70 65 6e 28 29 0a |r the vn|_open().|
|00002ea0| 20 2a 20 63 6f 6d 70 6c | 65 74 65 73 2e 20 52 69 | * compl|etes. Ri|
|00002eb0| 67 68 74 20 6e 6f 77 2c | 20 77 65 27 72 65 20 73 |ght now,| we're s|
|00002ec0| 74 69 6c 6c 20 69 6e 20 | 74 68 65 20 6d 69 64 64 |till in |the midd|
|00002ed0| 6c 65 20 6f 66 20 74 68 | 65 20 6f 70 65 6e 2e 20 |le of th|e open. |
|00002ee0| 53 6f 20 77 65 20 68 61 | 76 65 0a 20 2a 20 6e 6f |So we ha|ve. * no|
|00002ef0| 20 77 61 79 20 6f 66 20 | 67 65 74 74 69 6e 67 20 | way of |getting |
|00002f00| 61 74 20 74 68 65 20 6f | 72 69 67 69 6e 61 6c 20 |at the o|riginal |
|00002f10| 76 6e 6f 64 65 20 75 6e | 6c 65 73 73 20 69 74 20 |vnode un|less it |
|00002f20| 69 73 20 70 61 73 73 65 | 64 20 69 6e 20 74 6f 20 |is passe|d in to |
|00002f30| 75 73 2e 0a 20 2a 20 53 | 6f 20 74 68 61 74 20 69 |us.. * S|o that i|
|00002f40| 73 20 77 68 79 20 73 70 | 65 63 5f 6f 70 65 6e 28 |s why sp|ec_open(|
|00002f50| 29 20 68 61 73 20 74 6f | 20 70 61 73 73 20 61 20 |) has to| pass a |
|00002f60| 70 6f 69 6e 74 65 72 20 | 74 6f 20 74 68 65 20 76 |pointer |to the v|
|00002f70| 6e 6f 64 65 20 28 70 6f | 69 6e 74 65 72 29 0a 20 |node (po|inter). |
|00002f80| 2a 20 74 6f 20 75 73 2c | 20 73 6f 20 77 65 20 63 |* to us,| so we c|
|00002f90| 61 6e 20 73 77 69 74 63 | 68 20 69 74 20 61 72 6f |an switc|h it aro|
|00002fa0| 75 6e 64 2e 0a 20 2a 2f | 0a 0a 66 64 6f 70 65 6e |und.. */|..fdopen|
|00002fb0| 20 28 64 65 76 2c 20 6d | 6f 64 65 2c 20 6e 65 77 | (dev, m|ode, new|
|00002fc0| 64 65 76 2c 20 76 70 70 | 29 0a 64 65 76 5f 74 20 |dev, vpp|).dev_t |
|00002fd0| 64 65 76 3b 0a 69 6e 74 | 20 6d 6f 64 65 3b 0a 64 |dev;.int| mode;.d|
|00002fe0| 65 76 5f 74 20 2a 6e 65 | 77 64 65 76 3b 0a 73 74 |ev_t *ne|wdev;.st|
|00002ff0| 72 75 63 74 20 76 6e 6f | 64 65 20 2a 2a 76 70 70 |ruct vno|de **vpp|
|00003000| 3b 09 2f 2a 20 76 6e 6f | 64 65 20 66 6f 72 20 74 |;./* vno|de for t|
|00003010| 68 69 73 20 64 65 76 69 | 63 65 20 2a 2f 0a 7b 0a |his devi|ce */.{.|
|00003020| 09 73 74 72 75 63 74 20 | 66 69 6c 65 20 2a 66 70 |.struct |file *fp|
|00003030| 2c 20 2a 77 66 70 3b 0a | 09 73 74 72 75 63 74 20 |, *wfp;.|.struct |
|00003040| 76 6e 6f 64 65 20 2a 76 | 70 2c 20 2a 77 76 70 3b |vnode *v|p, *wvp;|
|00003050| 0a 09 69 6e 74 20 76 6d | 6f 64 65 20 3d 20 30 3b |..int vm|ode = 0;|
|00003060| 0a 09 69 6e 74 20 72 77 | 6d 6f 64 65 2c 20 65 72 |..int rw|mode, er|
|00003070| 72 6f 72 3b 0a 0a 09 69 | 66 20 28 6d 69 6e 6f 72 |ror;...i|f (minor|
|00003080| 28 64 65 76 29 20 3e 3d | 20 4e 4f 46 49 4c 45 29 |(dev) >=| NOFILE)|
|00003090| 09 2f 2a 20 73 61 6e 69 | 74 79 20 63 68 65 63 6b |./* sani|ty check|
|000030a0| 20 2a 2f 0a 09 09 72 65 | 74 75 72 6e 20 28 45 4e | */...re|turn (EN|
|000030b0| 58 49 4f 29 3b 0a 0a 09 | 2a 6e 65 77 64 65 76 20 |XIO);...|*newdev |
|000030c0| 3d 20 64 65 76 3b 09 2f | 2a 20 58 58 58 20 2d 20 |= dev;./|* XXX - |
|000030d0| 66 6f 72 63 65 20 6c 6f | 6f 70 20 74 65 72 6d 69 |force lo|op termi|
|000030e0| 6e 61 74 69 6f 6e 20 69 | 6e 20 73 70 65 63 5f 6f |nation i|n spec_o|
|000030f0| 70 65 6e 28 29 20 2a 2f | 0a 0a 09 2f 2a 0a 09 20 |pen() */|.../*.. |
|00003100| 2a 20 4e 6f 74 65 20 74 | 68 65 20 68 6f 72 72 69 |* Note t|he horri|
|00003110| 64 20 6b 6c 75 64 67 65 | 20 68 65 72 65 3a 20 75 |d kludge| here: u|
|00003120| 2e 75 5f 72 2e 72 5f 76 | 61 6c 31 20 63 6f 6e 74 |.u_r.r_v|al1 cont|
|00003130| 61 69 6e 73 20 74 68 65 | 20 76 61 6c 75 65 0a 09 |ains the| value..|
|00003140| 20 2a 20 6f 66 20 74 68 | 65 20 6e 65 77 20 66 69 | * of th|e new fi|
|00003150| 6c 65 20 64 65 73 63 72 | 69 70 74 6f 72 2c 20 77 |le descr|iptor, w|
|00003160| 68 69 63 68 20 68 61 73 | 20 6e 6f 74 20 62 65 65 |hich has| not bee|
|00003170| 6e 20 64 69 73 74 75 72 | 62 65 64 20 73 69 6e 63 |n distur|bed sinc|
|00003180| 65 0a 09 20 2a 20 69 74 | 20 77 61 73 20 61 6c 6c |e.. * it| was all|
|00003190| 6f 63 61 74 65 64 2e 0a | 09 20 2a 2f 0a 0a 09 69 |ocated..|. */...i|
|000031a0| 66 20 28 28 66 70 20 3d | 20 67 65 74 66 28 75 2e |f ((fp =| getf(u.|
|000031b0| 75 5f 72 2e 72 5f 76 61 | 6c 31 29 29 20 3d 3d 20 |u_r.r_va|l1)) == |
|000031c0| 4e 55 4c 4c 29 0a 09 09 | 72 65 74 75 72 6e 20 28 |NULL)...|return (|
|000031d0| 75 2e 75 5f 65 72 72 6f | 72 29 3b 0a 0a 09 69 66 |u.u_erro|r);...if|
|000031e0| 20 28 28 77 66 70 20 3d | 20 67 65 74 66 28 6d 69 | ((wfp =| getf(mi|
|000031f0| 6e 6f 72 28 64 65 76 29 | 29 29 20 3d 3d 20 4e 55 |nor(dev)|)) == NU|
|00003200| 4c 4c 29 0a 09 09 72 65 | 74 75 72 6e 20 28 75 2e |LL)...re|turn (u.|
|00003210| 75 5f 65 72 72 6f 72 29 | 3b 0a 0a 09 2f 2a 0a 09 |u_error)|;.../*..|
|00003220| 20 2a 20 57 65 20 6d 75 | 73 74 20 65 78 70 6c 69 | * We mu|st expli|
|00003230| 63 69 74 6c 79 20 74 65 | 73 74 20 66 6f 72 20 74 |citly te|st for t|
|00003240| 68 69 73 20 63 61 73 65 | 20 62 65 63 61 75 73 65 |his case| because|
|00003250| 20 75 66 61 6c 6c 6f 63 | 28 29 20 6d 61 79 0a 09 | ufalloc|() may..|
|00003260| 20 2a 20 68 61 76 65 20 | 61 6c 6c 6f 63 61 74 65 | * have |allocate|
|00003270| 64 20 75 73 20 74 68 65 | 20 73 61 6d 65 20 66 69 |d us the| same fi|
|00003280| 6c 65 20 64 65 73 72 69 | 70 74 6f 72 20 77 65 20 |le desri|ptor we |
|00003290| 61 72 65 20 72 65 66 65 | 72 72 69 6e 67 0a 09 20 |are refe|rring.. |
|000032a0| 2a 20 74 6f 2c 20 69 66 | 20 74 68 65 20 70 72 6f |* to, if| the pro|
|000032b0| 63 63 65 73 73 20 72 65 | 66 65 72 72 65 64 20 74 |ccess re|ferred t|
|000032c0| 6f 20 61 6e 20 69 6e 76 | 61 6c 69 64 20 28 63 6c |o an inv|alid (cl|
|000032d0| 6f 73 65 64 29 20 64 65 | 73 63 72 69 70 74 6f 72 |osed) de|scriptor|
|000032e0| 2e 0a 09 20 2a 20 4f 72 | 64 69 6e 61 72 69 6c 79 |... * Or|dinarily|
|000032f0| 20 74 68 69 73 20 77 6f | 75 6c 64 20 62 65 20 63 | this wo|uld be c|
|00003300| 61 75 67 68 74 20 62 79 | 20 67 65 74 66 28 29 2c |aught by| getf(),|
|00003310| 20 62 75 74 20 62 79 20 | 74 68 65 20 74 69 6d 65 | but by |the time|
|00003320| 20 77 65 0a 09 20 2a 20 | 72 65 61 63 68 20 74 68 | we.. * |reach th|
|00003330| 69 73 20 72 6f 75 74 69 | 6e 65 20 75 5f 70 6f 66 |is routi|ne u_pof|
|00003340| 69 6c 65 5b 6d 69 6e 6f | 72 28 64 65 76 29 5d 20 |ile[mino|r(dev)] |
|00003350| 63 6f 75 6c 64 20 61 6c | 72 65 61 64 79 20 62 65 |could al|ready be|
|00003360| 20 73 65 74 0a 09 20 2a | 20 74 6f 20 70 6f 69 6e | set.. *| to poin|
|00003370| 74 20 74 6f 20 6f 75 72 | 20 66 69 6c 65 20 73 74 |t to our| file st|
|00003380| 72 75 63 74 2e 0a 09 20 | 2a 2f 0a 09 69 66 20 28 |ruct... |*/..if (|
|00003390| 66 70 20 3d 3d 20 77 66 | 70 29 0a 09 09 72 65 74 |fp == wf|p)...ret|
|000033a0| 75 72 6e 20 28 45 42 41 | 44 46 29 3b 0a 0a 09 76 |urn (EBA|DF);...v|
|000033b0| 70 20 3d 20 2a 76 70 70 | 3b 0a 0a 09 2f 2a 0a 09 |p = *vpp|;.../*..|
|000033c0| 20 2a 20 46 61 6b 65 20 | 61 20 60 60 64 75 70 28 | * Fake |a ``dup(|
|000033d0| 29 27 27 20 73 79 73 20 | 63 61 6c 6c 20 69 66 20 |)'' sys |call if |
|000033e0| 69 74 20 69 73 6e 27 74 | 20 61 20 76 6e 6f 64 65 |it isn't| a vnode|
|000033f0| 2e 0a 09 20 2a 2f 0a 09 | 69 66 20 28 77 66 70 2d |... */..|if (wfp-|
|00003400| 3e 66 5f 74 79 70 65 20 | 21 3d 20 44 54 59 50 45 |>f_type |!= DTYPE|
|00003410| 5f 56 4e 4f 44 45 29 20 | 7b 0a 09 09 2f 2a 0a 09 |_VNODE) |{.../*..|
|00003420| 09 20 2a 20 43 68 65 63 | 6b 20 74 68 61 74 20 74 |. * Chec|k that t|
|00003430| 68 65 20 6d 6f 64 65 20 | 74 68 65 20 66 69 6c 65 |he mode |the file|
|00003440| 20 69 73 20 62 65 69 6e | 67 20 6f 70 65 6e 65 64 | is bein|g opened|
|00003450| 0a 09 09 20 2a 20 66 6f | 72 20 69 73 20 63 6f 6e |... * fo|r is con|
|00003460| 73 69 73 74 65 6e 74 20 | 77 69 74 68 20 74 68 65 |sistent |with the|
|00003470| 20 6d 6f 64 65 20 6f 66 | 20 74 68 65 20 65 78 69 | mode of| the exi|
|00003480| 73 74 69 6e 67 0a 09 09 | 20 2a 20 64 65 73 63 72 |sting...| * descr|
|00003490| 69 70 74 6f 72 2e 20 54 | 68 69 73 20 69 73 6e 27 |iptor. T|his isn'|
|000034a0| 74 20 61 73 20 63 6c 65 | 61 6e 20 61 73 20 69 74 |t as cle|an as it|
|000034b0| 20 73 68 6f 75 6c 64 20 | 62 65 2c 0a 09 09 20 2a | should |be,... *|
|000034c0| 20 62 75 74 20 74 68 69 | 73 20 65 6e 74 69 72 65 | but thi|s entire|
|000034d0| 20 64 72 69 76 65 72 20 | 69 73 20 61 20 72 65 61 | driver |is a rea|
|000034e0| 6c 20 6b 6c 75 64 67 65 | 20 61 6e 79 77 61 79 2e |l kludge| anyway.|
|000034f0| 0a 09 09 20 2a 2f 0a 09 | 09 72 77 6d 6f 64 65 20 |... */..|.rwmode |
|00003500| 3d 20 6d 6f 64 65 20 26 | 20 28 46 52 45 41 44 7c |= mode &| (FREAD||
|00003510| 46 57 52 49 54 45 29 3b | 0a 09 09 69 66 20 28 28 |FWRITE);|...if ((|
|00003520| 77 66 70 2d 3e 66 5f 66 | 6c 61 67 20 26 20 72 77 |wfp->f_f|lag & rw|
|00003530| 6d 6f 64 65 29 20 21 3d | 20 72 77 6d 6f 64 65 29 |mode) !=| rwmode)|
|00003540| 0a 09 09 09 72 65 74 75 | 72 6e 20 28 45 41 43 43 |....retu|rn (EACC|
|00003550| 45 53 29 3b 0a 0a 09 09 | 2f 2a 20 44 65 6c 65 74 |ES);....|/* Delet|
|00003560| 65 20 72 65 66 65 72 65 | 6e 63 65 73 20 74 6f 20 |e refere|nces to |
|00003570| 74 68 69 73 20 70 73 65 | 75 64 6f 2d 64 65 76 69 |this pse|udo-devi|
|00003580| 63 65 2e 20 2a 2f 0a 09 | 09 56 4e 5f 52 45 4c 45 |ce. */..|.VN_RELE|
|00003590| 28 76 70 29 3b 09 09 2f | 2a 20 43 68 75 63 6b 20 |(vp);../|* Chuck |
|000035a0| 74 68 65 20 76 6e 6f 64 | 65 2e 20 2a 2f 0a 09 09 |the vnod|e. */...|
|000035b0| 66 70 2d 3e 66 5f 63 6f | 75 6e 74 20 3d 20 30 3b |fp->f_co|unt = 0;|
|000035c0| 09 2f 2a 20 43 68 75 63 | 6b 20 74 68 65 20 66 69 |./* Chuc|k the fi|
|000035d0| 6c 65 20 73 74 72 75 63 | 74 75 72 65 2e 20 2a 2f |le struc|ture. */|
|000035e0| 0a 09 09 63 72 66 72 65 | 65 28 66 70 2d 3e 66 5f |...crfre|e(fp->f_|
|000035f0| 63 72 65 64 29 3b 0a 09 | 09 2f 2a 20 44 75 70 20 |cred);..|./* Dup |
|00003600| 74 68 65 20 66 69 6c 65 | 20 64 65 73 63 72 69 70 |the file| descrip|
|00003610| 74 6f 72 2e 20 2a 2f 0a | 09 09 64 75 70 69 74 28 |tor. */.|..dupit(|
|00003620| 75 2e 75 5f 72 2e 72 5f | 76 61 6c 31 2c 20 77 66 |u.u_r.r_|val1, wf|
|00003630| 70 2c 20 75 2e 75 5f 70 | 6f 66 69 6c 65 5b 6d 69 |p, u.u_p|ofile[mi|
|00003640| 6e 6f 72 28 64 65 76 29 | 5d 29 3b 0a 09 09 2a 76 |nor(dev)|]);...*v|
|00003650| 70 70 20 3d 20 28 73 74 | 72 75 63 74 20 76 6e 6f |pp = (st|ruct vno|
|00003660| 64 65 20 2a 29 77 66 70 | 2d 3e 66 5f 64 61 74 61 |de *)wfp|->f_data|
|00003670| 3b 09 2f 2a 20 6e 65 65 | 64 65 64 3f 20 2a 2f 0a |;./* nee|ded? */.|
|00003680| 09 09 72 65 74 75 72 6e | 20 28 30 29 3b 0a 09 7d |..return| (0);..}|
|00003690| 0a 0a 09 2f 2a 0a 09 20 | 2a 20 6e 6f 77 20 68 61 |.../*.. |* now ha|
|000036a0| 76 65 20 61 20 72 65 67 | 75 6c 61 72 20 76 6e 6f |ve a reg|ular vno|
|000036b0| 64 65 2e 0a 09 20 2a 2f | 0a 09 65 72 72 6f 72 20 |de... */|..error |
|000036c0| 3d 20 30 3b 0a 09 77 76 | 70 20 3d 20 28 73 74 72 |= 0;..wv|p = (str|
|000036d0| 75 63 74 20 76 6e 6f 64 | 65 20 2a 29 77 66 70 2d |uct vnod|e *)wfp-|
|000036e0| 3e 66 5f 64 61 74 61 3b | 0a 0a 09 2f 2a 0a 09 20 |>f_data;|.../*.. |
|000036f0| 2a 20 53 69 6e 63 65 20 | 77 65 27 72 65 20 6f 70 |* Since |we're op|
|00003700| 65 6e 69 6e 67 20 61 20 | 66 69 6c 65 20 61 67 61 |ening a |file aga|
|00003710| 69 6e 2c 20 77 65 20 72 | 75 6e 20 74 68 72 6f 75 |in, we r|un throu|
|00003720| 67 68 20 61 6c 6c 20 74 | 68 65 0a 09 20 2a 20 70 |gh all t|he.. * p|
|00003730| 65 72 6d 69 73 73 69 6f | 6e 20 63 68 65 63 6b 73 |ermissio|n checks|
|00003740| 20 73 6f 20 74 68 69 73 | 20 63 61 6e 27 74 20 62 | so this| can't b|
|00003750| 65 20 75 73 65 64 20 61 | 73 20 61 20 6c 6f 6f 70 |e used a|s a loop|
|00003760| 68 6f 6c 65 20 74 6f 0a | 09 20 2a 20 67 65 74 20 |hole to.|. * get |
|00003770| 61 63 63 65 73 73 20 74 | 6f 20 61 20 66 69 6c 65 |access t|o a file|
|00003780| 20 77 65 20 73 68 6f 75 | 6c 64 6e 27 74 20 68 61 | we shou|ldn't ha|
|00003790| 76 65 2e 20 20 28 47 52 | 4f 54 29 0a 09 20 2a 2f |ve. (GR|OT).. */|
|000037a0| 0a 09 69 66 20 28 6d 6f | 64 65 20 26 20 46 52 45 |..if (mo|de & FRE|
|000037b0| 41 44 20 26 26 20 28 65 | 72 72 6f 72 20 3d 20 56 |AD && (e|rror = V|
|000037c0| 4f 50 5f 41 43 43 45 53 | 53 28 77 76 70 2c 20 56 |OP_ACCES|S(wvp, V|
|000037d0| 52 45 41 44 2c 20 75 2e | 75 5f 63 72 65 64 29 29 |READ, u.|u_cred))|
|000037e0| 29 0a 09 09 67 6f 74 6f | 20 62 61 64 3b 0a 09 69 |)...goto| bad;..i|
|000037f0| 66 20 28 6d 6f 64 65 20 | 26 20 28 46 57 52 49 54 |f (mode |& (FWRIT|
|00003800| 45 7c 46 54 52 55 4e 43 | 29 29 20 7b 0a 09 09 69 |E|FTRUNC|)) {...i|
|00003810| 66 20 28 76 70 2d 3e 76 | 5f 74 79 70 65 20 3d 3d |f (vp->v|_type ==|
|00003820| 20 56 44 49 52 29 20 7b | 0a 09 09 09 65 72 72 6f | VDIR) {|....erro|
|00003830| 72 20 3d 20 45 49 53 44 | 49 52 3b 0a 09 09 09 67 |r = EISD|IR;....g|
|00003840| 6f 74 6f 20 62 61 64 3b | 0a 09 09 7d 0a 09 09 69 |oto bad;|...}...i|
|00003850| 66 20 28 28 65 72 72 6f | 72 20 3d 20 56 4f 50 5f |f ((erro|r = VOP_|
|00003860| 41 43 43 45 53 53 28 77 | 76 70 2c 20 56 57 52 49 |ACCESS(w|vp, VWRI|
|00003870| 54 45 2c 20 75 2e 75 5f | 63 72 65 64 29 29 29 0a |TE, u.u_|cred))).|
|00003880| 09 09 09 67 6f 74 6f 20 | 62 61 64 3b 0a 09 7d 0a |...goto |bad;..}.|
|00003890| 0a 09 2f 2a 0a 09 20 2a | 20 54 68 65 20 66 69 6c |../*.. *| The fil|
|000038a0| 65 20 6d 75 73 74 20 61 | 6c 77 61 79 73 20 65 78 |e must a|lways ex|
|000038b0| 69 73 74 2c 20 73 6f 20 | 77 65 20 64 6f 6e 27 74 |ist, so |we don't|
|000038c0| 20 65 76 65 6e 20 62 6f | 74 68 65 72 20 74 65 73 | even bo|ther tes|
|000038d0| 74 69 6e 67 0a 09 20 2a | 20 66 6f 72 20 69 74 73 |ting.. *| for its|
|000038e0| 20 70 72 65 73 65 6e 63 | 65 2e 0a 09 20 2a 2f 0a | presenc|e... */.|
|000038f0| 09 69 66 20 28 28 6d 6f | 64 65 20 26 20 28 46 43 |.if ((mo|de & (FC|
|00003900| 52 45 41 54 7c 46 45 58 | 43 4c 29 29 20 3d 3d 20 |REAT|FEX|CL)) == |
|00003910| 28 46 43 52 45 41 54 7c | 46 45 58 43 4c 29 29 20 |(FCREAT||FEXCL)) |
|00003920| 7b 0a 09 09 65 72 72 6f | 72 20 3d 20 45 45 58 49 |{...erro|r = EEXI|
|00003930| 53 54 3b 0a 09 09 67 6f | 74 6f 20 62 61 64 3b 0a |ST;...go|to bad;.|
|00003940| 09 7d 0a 0a 09 2f 2a 0a | 09 20 2a 20 54 68 69 73 |.}.../*.|. * This|
|00003950| 20 6d 61 79 20 6e 6f 74 | 20 6d 61 6b 65 20 61 6e | may not| make an|
|00003960| 79 20 73 65 6e 73 65 2c | 20 62 75 74 20 49 27 6d |y sense,| but I'm|
|00003970| 20 70 61 72 61 6e 6f 69 | 64 20 61 6e 64 20 66 69 | paranoi|d and fi|
|00003980| 67 75 72 65 20 74 68 61 | 74 0a 09 20 2a 20 69 74 |gure tha|t.. * it|
|00003990| 27 73 20 70 72 6f 62 61 | 62 6c 79 20 61 6e 20 65 |'s proba|bly an e|
|000039a0| 72 72 6f 72 2e 0a 09 20 | 2a 2f 0a 09 69 66 20 28 |rror... |*/..if (|
|000039b0| 6d 6f 64 65 20 26 20 46 | 54 52 55 4e 43 29 20 7b |mode & F|TRUNC) {|
|000039c0| 0a 09 09 65 72 72 6f 72 | 20 3d 20 45 42 55 53 59 |...error| = EBUSY|
|000039d0| 3b 0a 09 09 67 6f 74 6f | 20 62 61 64 3b 0a 09 7d |;...goto| bad;..}|
|000039e0| 0a 0a 09 2f 2a 20 43 61 | 6c 6c 20 74 68 65 20 64 |.../* Ca|ll the d|
|000039f0| 65 76 69 63 65 2d 73 70 | 65 63 69 66 69 63 20 6f |evice-sp|ecific o|
|00003a00| 70 65 6e 20 72 6f 75 74 | 69 6e 65 2c 20 69 66 20 |pen rout|ine, if |
|00003a10| 61 6e 79 2e 20 2a 2f 0a | 09 76 6d 6f 64 65 20 3d |any. */.|.vmode =|
|00003a20| 20 6d 6f 64 65 20 26 20 | 7e 28 46 43 52 45 41 54 | mode & |~(FCREAT|
|00003a30| 20 7c 20 46 45 58 43 4c | 29 3b 0a 09 69 66 20 28 | | FEXCL|);..if (|
|00003a40| 77 76 70 2d 3e 76 5f 74 | 79 70 65 20 21 3d 20 56 |wvp->v_t|ype != V|
|00003a50| 52 45 47 20 26 26 0a 09 | 09 09 28 65 72 72 6f 72 |REG &&..|..(error|
|00003a60| 20 3d 20 56 4f 50 5f 4f | 50 45 4e 28 26 77 76 70 | = VOP_O|PEN(&wvp|
|00003a70| 2c 20 76 6d 6f 64 65 2c | 20 75 2e 75 5f 63 72 65 |, vmode,| u.u_cre|
|00003a80| 64 29 29 20 21 3d 20 30 | 29 0a 09 09 67 6f 74 6f |d)) != 0|)...goto|
|00003a90| 20 62 61 64 3b 0a 0a 09 | 2f 2a 0a 09 20 2a 20 4d | bad;...|/*.. * M|
|00003aa0| 61 64 65 20 69 74 20 74 | 68 69 73 20 66 61 72 2c |ade it t|his far,|
|00003ab0| 20 6e 6f 77 20 72 65 74 | 75 72 6e 20 74 68 65 20 | now ret|urn the |
|00003ac0| 6f 74 68 65 72 20 76 6e | 6f 64 65 20 62 61 63 6b |other vn|ode back|
|00003ad0| 20 75 70 20 74 68 65 0a | 09 20 2a 20 63 61 6c 6c | up the.|. * call|
|00003ae0| 20 63 68 61 69 6e 20 66 | 6f 72 20 69 6e 73 65 72 | chain f|or inser|
|00003af0| 74 69 6f 6e 20 69 6e 74 | 6f 20 74 68 65 20 66 69 |tion int|o the fi|
|00003b00| 6c 65 20 74 61 62 6c 65 | 20 65 6e 74 72 79 2e 0a |le table| entry..|
|00003b10| 09 20 2a 2f 0a 09 56 4e | 5f 52 45 4c 45 28 76 70 |. */..VN|_RELE(vp|
|00003b20| 29 3b 09 09 2f 2a 20 57 | 65 20 64 6f 6e 27 74 20 |);../* W|e don't |
|00003b30| 6e 65 65 64 20 74 68 69 | 73 20 61 6e 79 6d 6f 72 |need thi|s anymor|
|00003b40| 65 2e 20 2a 2f 0a 09 77 | 76 70 2d 3e 76 5f 63 6f |e. */..w|vp->v_co|
|00003b50| 75 6e 74 2b 2b 3b 0a 09 | 2a 76 70 70 20 3d 20 77 |unt++;..|*vpp = w|
|00003b60| 76 70 3b 0a 09 72 65 74 | 75 72 6e 20 28 30 29 3b |vp;..ret|urn (0);|
|00003b70| 0a 0a 62 61 64 3a 0a 09 | 72 65 74 75 72 6e 20 28 |..bad:..|return (|
|00003b80| 65 72 72 6f 72 29 3b 0a | 7d 0a 0a 23 65 6c 73 65 |error);.|}..#else|
|00003b90| 09 2f 2a 20 21 20 4e 46 | 53 20 2a 2f 0a 0a 66 64 |./* ! NF|S */..fd|
|00003ba0| 6f 70 65 6e 28 64 65 76 | 2c 20 6d 6f 64 65 29 0a |open(dev|, mode).|
|00003bb0| 64 65 76 5f 74 20 64 65 | 76 3b 0a 69 6e 74 20 6d |dev_t de|v;.int m|
|00003bc0| 6f 64 65 3b 0a 7b 0a 09 | 73 74 72 75 63 74 20 66 |ode;.{..|struct f|
|00003bd0| 69 6c 65 20 2a 66 70 2c | 20 2a 77 66 70 3b 0a 09 |ile *fp,| *wfp;..|
|00003be0| 73 74 72 75 63 74 20 69 | 6e 6f 64 65 20 2a 69 70 |struct i|node *ip|
|00003bf0| 2c 20 2a 77 69 70 3b 0a | 09 69 6e 74 20 72 77 6d |, *wip;.|.int rwm|
|00003c00| 6f 64 65 2c 20 65 72 72 | 6f 72 3b 0a 0a 09 2f 2a |ode, err|or;.../*|
|00003c10| 20 74 68 69 73 20 63 68 | 65 63 6b 20 61 64 64 65 | this ch|eck adde|
|00003c20| 64 20 62 79 20 41 44 52 | 20 2a 2f 0a 09 69 66 20 |d by ADR| */..if |
|00003c30| 28 6d 69 6e 6f 72 28 64 | 65 76 29 20 3e 3d 20 4e |(minor(d|ev) >= N|
|00003c40| 4f 46 49 4c 45 29 09 2f | 2a 20 73 61 6e 69 74 79 |OFILE)./|* sanity|
|00003c50| 20 63 68 65 63 6b 20 2a | 2f 0a 09 09 72 65 74 75 | check *|/...retu|
|00003c60| 72 6e 20 28 45 4e 58 49 | 4f 29 3b 0a 0a 09 2f 2a |rn (ENXI|O);.../*|
|00003c70| 0a 09 20 2a 20 4e 6f 74 | 65 20 74 68 65 20 68 6f |.. * Not|e the ho|
|00003c80| 72 72 69 64 20 6b 6c 75 | 64 67 65 20 68 65 72 65 |rrid klu|dge here|
|00003c90| 3a 20 75 2e 75 5f 72 2e | 72 5f 76 61 6c 31 20 63 |: u.u_r.|r_val1 c|
|00003ca0| 6f 6e 74 61 69 6e 73 20 | 74 68 65 20 76 61 6c 75 |ontains |the valu|
|00003cb0| 65 0a 09 20 2a 20 6f 66 | 20 74 68 65 20 6e 65 77 |e.. * of| the new|
|00003cc0| 20 66 69 6c 65 20 64 65 | 73 63 72 69 70 74 6f 72 | file de|scriptor|
|00003cd0| 2c 20 77 68 69 63 68 20 | 68 61 73 20 6e 6f 74 20 |, which |has not |
|00003ce0| 62 65 65 6e 20 64 69 73 | 74 75 72 62 65 64 20 73 |been dis|turbed s|
|00003cf0| 69 6e 63 65 0a 09 20 2a | 20 69 74 20 77 61 73 20 |ince.. *| it was |
|00003d00| 61 6c 6c 6f 63 61 74 65 | 64 2e 0a 09 20 2a 2f 0a |allocate|d... */.|
|00003d10| 09 69 66 20 28 28 66 70 | 20 3d 20 67 65 74 66 28 |.if ((fp| = getf(|
|00003d20| 75 2e 75 5f 72 2e 72 5f | 76 61 6c 31 29 29 20 3d |u.u_r.r_|val1)) =|
|00003d30| 3d 20 4e 55 4c 4c 29 0a | 09 09 72 65 74 75 72 6e |= NULL).|..return|
|00003d40| 20 28 75 2e 75 5f 65 72 | 72 6f 72 29 3b 0a 0a 09 | (u.u_er|ror);...|
|00003d50| 69 66 20 28 28 77 66 70 | 20 3d 20 67 65 74 66 28 |if ((wfp| = getf(|
|00003d60| 6d 69 6e 6f 72 28 64 65 | 76 29 29 29 20 3d 3d 20 |minor(de|v))) == |
|00003d70| 4e 55 4c 4c 29 0a 09 09 | 72 65 74 75 72 6e 20 28 |NULL)...|return (|
|00003d80| 75 2e 75 5f 65 72 72 6f | 72 29 3b 0a 0a 09 2f 2a |u.u_erro|r);.../*|
|00003d90| 0a 09 20 2a 20 57 65 20 | 6d 75 73 74 20 65 78 70 |.. * We |must exp|
|00003da0| 6c 69 63 69 74 6c 79 20 | 74 65 73 74 20 66 6f 72 |licitly |test for|
|00003db0| 20 74 68 69 73 20 63 61 | 73 65 20 62 65 63 61 75 | this ca|se becau|
|00003dc0| 73 65 20 75 66 61 6c 6c | 6f 63 28 29 20 6d 61 79 |se ufall|oc() may|
|00003dd0| 0a 09 20 2a 20 68 61 76 | 65 20 61 6c 6c 6f 63 61 |.. * hav|e alloca|
|00003de0| 74 65 64 20 75 73 20 74 | 68 65 20 73 61 6d 65 20 |ted us t|he same |
|00003df0| 66 69 6c 65 20 64 65 73 | 72 69 70 74 6f 72 20 77 |file des|riptor w|
|00003e00| 65 20 61 72 65 20 72 65 | 66 65 72 72 69 6e 67 0a |e are re|ferring.|
|00003e10| 09 20 2a 20 74 6f 2c 20 | 69 66 20 74 68 65 20 70 |. * to, |if the p|
|00003e20| 72 6f 63 63 65 73 73 20 | 72 65 66 65 72 72 65 64 |roccess |referred|
|00003e30| 20 74 6f 20 61 6e 20 69 | 6e 76 61 6c 69 64 20 28 | to an i|nvalid (|
|00003e40| 63 6c 6f 73 65 64 29 20 | 64 65 73 63 72 69 70 74 |closed) |descript|
|00003e50| 6f 72 2e 0a 09 20 2a 20 | 4f 72 64 69 6e 61 72 69 |or... * |Ordinari|
|00003e60| 6c 79 20 74 68 69 73 20 | 77 6f 75 6c 64 20 62 65 |ly this |would be|
|00003e70| 20 63 61 75 67 68 74 20 | 62 79 20 67 65 74 66 28 | caught |by getf(|
|00003e80| 29 2c 20 62 75 74 20 62 | 79 20 74 68 65 20 74 69 |), but b|y the ti|
|00003e90| 6d 65 20 77 65 0a 09 20 | 2a 20 72 65 61 63 68 20 |me we.. |* reach |
|00003ea0| 74 68 69 73 20 72 6f 75 | 74 69 6e 65 20 75 5f 70 |this rou|tine u_p|
|00003eb0| 6f 66 69 6c 65 5b 6d 69 | 6e 6f 72 28 64 65 76 29 |ofile[mi|nor(dev)|
|00003ec0| 5d 20 63 6f 75 6c 64 20 | 61 6c 72 65 61 64 79 20 |] could |already |
|00003ed0| 62 65 20 73 65 74 0a 09 | 20 2a 20 74 6f 20 70 6f |be set..| * to po|
|00003ee0| 69 6e 74 20 74 6f 20 6f | 75 72 20 66 69 6c 65 20 |int to o|ur file |
|00003ef0| 73 74 72 75 63 74 2e 0a | 09 20 2a 2f 0a 09 69 66 |struct..|. */..if|
|00003f00| 20 28 66 70 20 3d 3d 20 | 77 66 70 29 0a 09 09 72 | (fp == |wfp)...r|
|00003f10| 65 74 75 72 6e 20 28 45 | 42 41 44 46 29 3b 0a 0a |eturn (E|BADF);..|
|00003f20| 09 69 70 20 3d 20 28 73 | 74 72 75 63 74 20 69 6e |.ip = (s|truct in|
|00003f30| 6f 64 65 20 2a 29 66 70 | 2d 3e 66 5f 64 61 74 61 |ode *)fp|->f_data|
|00003f40| 3b 0a 0a 09 2f 2a 0a 09 | 20 2a 20 46 61 6b 65 20 |;.../*..| * Fake |
|00003f50| 61 20 60 60 64 75 70 28 | 29 27 27 20 73 79 73 20 |a ``dup(|)'' sys |
|00003f60| 63 61 6c 6c 20 69 66 20 | 69 74 20 69 73 6e 27 74 |call if |it isn't|
|00003f70| 20 61 6e 20 69 6e 6f 64 | 65 2e 0a 09 20 2a 2f 0a | an inod|e... */.|
|00003f80| 09 69 66 20 28 77 66 70 | 2d 3e 66 5f 74 79 70 65 |.if (wfp|->f_type|
|00003f90| 20 21 3d 20 44 54 59 50 | 45 5f 49 4e 4f 44 45 29 | != DTYP|E_INODE)|
|00003fa0| 20 7b 0a 09 09 2f 2a 0a | 09 09 20 2a 20 43 68 65 | {.../*.|.. * Che|
|00003fb0| 63 6b 20 74 68 61 74 20 | 74 68 65 20 6d 6f 64 65 |ck that |the mode|
|00003fc0| 20 74 68 65 20 66 69 6c | 65 20 69 73 20 62 65 69 | the fil|e is bei|
|00003fd0| 6e 67 20 6f 70 65 6e 65 | 64 0a 09 09 20 2a 20 66 |ng opene|d... * f|
|00003fe0| 6f 72 20 69 73 20 63 6f | 6e 73 69 73 74 65 6e 74 |or is co|nsistent|
|00003ff0| 20 77 69 74 68 20 74 68 | 65 20 6d 6f 64 65 20 6f | with th|e mode o|
|00004000| 66 20 74 68 65 20 65 78 | 69 73 74 69 6e 67 0a 09 |f the ex|isting..|
|00004010| 09 20 2a 20 64 65 73 63 | 72 69 70 74 6f 72 2e 20 |. * desc|riptor. |
|00004020| 54 68 69 73 20 69 73 6e | 27 74 20 61 73 20 63 6c |This isn|'t as cl|
|00004030| 65 61 6e 20 61 73 20 69 | 74 20 73 68 6f 75 6c 64 |ean as i|t should|
|00004040| 20 62 65 2c 0a 09 09 20 | 2a 20 62 75 74 20 74 68 | be,... |* but th|
|00004050| 69 73 20 65 6e 74 69 72 | 65 20 64 72 69 76 65 72 |is entir|e driver|
|00004060| 20 69 73 20 61 20 72 65 | 61 6c 20 6b 6c 75 64 67 | is a re|al kludg|
|00004070| 65 20 61 6e 79 77 61 79 | 2e 0a 09 09 20 2a 2f 0a |e anyway|.... */.|
|00004080| 09 09 72 77 6d 6f 64 65 | 20 3d 20 6d 6f 64 65 20 |..rwmode| = mode |
|00004090| 26 20 28 46 52 45 41 44 | 7c 46 57 52 49 54 45 29 |& (FREAD||FWRITE)|
|000040a0| 3b 0a 09 09 2f 2a 20 41 | 44 52 3a 20 42 75 67 20 |;.../* A|DR: Bug |
|000040b0| 66 69 78 3a 20 77 66 70 | 20 62 65 6c 6f 77 20 77 |fix: wfp| below w|
|000040c0| 61 73 20 6f 72 69 67 69 | 6e 61 6c 6c 79 20 66 70 |as origi|nally fp|
|000040d0| 20 2a 2f 0a 09 09 69 66 | 20 28 28 77 66 70 2d 3e | */...if| ((wfp->|
|000040e0| 66 5f 66 6c 61 67 20 26 | 20 72 77 6d 6f 64 65 29 |f_flag &| rwmode)|
|000040f0| 20 21 3d 20 72 77 6d 6f | 64 65 29 0a 09 09 09 72 | != rwmo|de)....r|
|00004100| 65 74 75 72 6e 20 28 45 | 41 43 43 45 53 29 3b 0a |eturn (E|ACCES);.|
|00004110| 0a 09 09 2f 2a 20 44 65 | 6c 65 74 65 20 72 65 66 |.../* De|lete ref|
|00004120| 65 72 65 6e 63 65 73 20 | 74 6f 20 74 68 69 73 20 |erences |to this |
|00004130| 70 73 65 75 64 6f 2d 64 | 65 76 69 63 65 2e 20 2a |pseudo-d|evice. *|
|00004140| 2f 0a 09 09 69 72 65 6c | 65 28 69 70 29 3b 09 09 |/...irel|e(ip);..|
|00004150| 2f 2a 20 43 68 75 63 6b | 20 74 68 65 20 69 6e 6f |/* Chuck| the ino|
|00004160| 64 65 2e 20 2a 2f 0a 09 | 09 66 70 2d 3e 66 5f 63 |de. */..|.fp->f_c|
|00004170| 6f 75 6e 74 20 3d 20 30 | 3b 09 2f 2a 20 43 68 75 |ount = 0|;./* Chu|
|00004180| 63 6b 20 74 68 65 20 66 | 69 6c 65 20 73 74 72 75 |ck the f|ile stru|
|00004190| 63 74 75 72 65 2e 20 2a | 2f 0a 09 09 2f 2a 20 44 |cture. *|/.../* D|
|000041a0| 75 70 20 74 68 65 20 66 | 69 6c 65 20 64 65 73 63 |up the f|ile desc|
|000041b0| 72 69 70 74 6f 72 2e 20 | 2a 2f 0a 09 09 64 75 70 |riptor. |*/...dup|
|000041c0| 69 74 28 75 2e 75 5f 72 | 2e 72 5f 76 61 6c 31 2c |it(u.u_r|.r_val1,|
|000041d0| 20 77 66 70 2c 20 75 2e | 75 5f 70 6f 66 69 6c 65 | wfp, u.|u_pofile|
|000041e0| 5b 6d 69 6e 6f 72 28 64 | 65 76 29 5d 29 3b 0a 09 |[minor(d|ev)]);..|
|000041f0| 09 72 65 74 75 72 6e 20 | 28 30 29 3b 0a 09 7d 0a |.return |(0);..}.|
|00004200| 0a 09 65 72 72 6f 72 20 | 3d 20 30 3b 0a 09 77 69 |..error |= 0;..wi|
|00004210| 70 20 3d 20 28 73 74 72 | 75 63 74 20 69 6e 6f 64 |p = (str|uct inod|
|00004220| 65 20 2a 29 77 66 70 2d | 3e 66 5f 64 61 74 61 3b |e *)wfp-|>f_data;|
|00004230| 0a 0a 09 2f 2a 0a 09 20 | 2a 20 49 27 6d 20 6e 6f |.../*.. |* I'm no|
|00004240| 74 20 73 75 72 65 20 74 | 68 61 74 20 77 65 20 72 |t sure t|hat we r|
|00004250| 65 61 6c 6c 79 20 6e 65 | 65 64 20 74 6f 20 6c 6f |eally ne|ed to lo|
|00004260| 63 6b 20 74 68 65 20 69 | 6e 6f 64 65 20 68 65 72 |ck the i|node her|
|00004270| 65 2c 0a 09 20 2a 20 62 | 75 74 20 77 68 79 20 6e |e,.. * b|ut why n|
|00004280| 6f 74 20 62 65 20 70 61 | 72 61 6e 6f 69 64 3f 0a |ot be pa|ranoid?.|
|00004290| 09 20 2a 2f 0a 09 69 6c | 6f 63 6b 28 77 69 70 29 |. */..il|ock(wip)|
|000042a0| 3b 0a 0a 09 2f 2a 0a 09 | 20 2a 20 53 69 6e 63 65 |;.../*..| * Since|
|000042b0| 20 77 65 27 72 65 20 6f | 70 65 6e 69 6e 67 20 61 | we're o|pening a|
|000042c0| 20 66 69 6c 65 20 61 67 | 61 69 6e 2c 20 77 65 20 | file ag|ain, we |
|000042d0| 72 75 6e 20 74 68 72 6f | 75 67 68 20 61 6c 6c 20 |run thro|ugh all |
|000042e0| 74 68 65 0a 09 20 2a 20 | 70 65 72 6d 69 73 73 69 |the.. * |permissi|
|000042f0| 6f 6e 20 63 68 65 63 6b | 73 20 73 6f 20 74 68 69 |on check|s so thi|
|00004300| 73 20 63 61 6e 27 74 20 | 62 65 20 75 73 65 64 20 |s can't |be used |
|00004310| 61 73 20 61 20 6c 6f 6f | 70 68 6f 6c 65 20 74 6f |as a loo|phole to|
|00004320| 0a 09 20 2a 20 67 65 74 | 20 61 63 63 65 73 73 20 |.. * get| access |
|00004330| 74 6f 20 61 20 66 69 6c | 65 20 77 65 20 73 68 6f |to a fil|e we sho|
|00004340| 75 6c 64 6e 27 74 20 68 | 61 76 65 2e 20 20 28 47 |uldn't h|ave. (G|
|00004350| 52 4f 54 29 0a 09 20 2a | 2f 0a 09 69 66 20 28 6d |ROT).. *|/..if (m|
|00004360| 6f 64 65 20 26 20 46 52 | 45 41 44 20 26 26 20 61 |ode & FR|EAD && a|
|00004370| 63 63 65 73 73 28 77 69 | 70 2c 20 49 52 45 41 44 |ccess(wi|p, IREAD|
|00004380| 29 29 0a 09 09 67 6f 74 | 6f 20 62 61 64 3b 0a 09 |))...got|o bad;..|
|00004390| 69 66 20 28 6d 6f 64 65 | 20 26 20 28 46 57 52 49 |if (mode| & (FWRI|
|000043a0| 54 45 7c 46 54 52 55 4e | 43 29 29 20 7b 0a 09 09 |TE|FTRUN|C)) {...|
|000043b0| 69 66 20 28 28 69 70 2d | 3e 69 5f 6d 6f 64 65 26 |if ((ip-|>i_mode&|
|000043c0| 49 46 4d 54 29 20 3d 3d | 20 49 46 44 49 52 29 20 |IFMT) ==| IFDIR) |
|000043d0| 7b 0a 09 09 09 65 72 72 | 6f 72 20 3d 20 45 49 53 |{....err|or = EIS|
|000043e0| 44 49 52 3b 0a 09 09 09 | 67 6f 74 6f 20 62 61 64 |DIR;....|goto bad|
|000043f0| 3b 0a 09 09 7d 0a 09 09 | 69 66 20 28 61 63 63 65 |;...}...|if (acce|
|00004400| 73 73 28 77 69 70 2c 20 | 49 57 52 49 54 45 29 29 |ss(wip, |IWRITE))|
|00004410| 0a 09 09 09 67 6f 74 6f | 20 62 61 64 3b 0a 09 7d |....goto| bad;..}|
|00004420| 0a 0a 09 2f 2a 0a 09 20 | 2a 20 54 68 65 20 66 69 |.../*.. |* The fi|
|00004430| 6c 65 20 6d 75 73 74 20 | 61 6c 77 61 79 73 20 65 |le must |always e|
|00004440| 78 69 73 74 2c 20 73 6f | 20 77 65 20 64 6f 6e 27 |xist, so| we don'|
|00004450| 74 20 65 76 65 6e 20 62 | 6f 74 68 65 72 20 74 65 |t even b|other te|
|00004460| 73 74 69 6e 67 0a 09 20 | 2a 20 66 6f 72 20 69 74 |sting.. |* for it|
|00004470| 73 20 70 72 65 73 65 6e | 63 65 2e 0a 09 20 2a 2f |s presen|ce... */|
|00004480| 0a 09 69 66 20 28 28 6d | 6f 64 65 20 26 20 28 46 |..if ((m|ode & (F|
|00004490| 43 52 45 41 54 7c 46 45 | 58 43 4c 29 29 20 3d 3d |CREAT|FE|XCL)) ==|
|000044a0| 20 28 46 43 52 45 41 54 | 7c 46 45 58 43 4c 29 29 | (FCREAT||FEXCL))|
|000044b0| 20 7b 0a 09 09 65 72 72 | 6f 72 20 3d 20 45 45 58 | {...err|or = EEX|
|000044c0| 49 53 54 3b 0a 09 09 67 | 6f 74 6f 20 62 61 64 3b |IST;...g|oto bad;|
|000044d0| 0a 09 7d 0a 0a 09 2f 2a | 0a 09 20 2a 20 54 68 69 |..}.../*|.. * Thi|
|000044e0| 73 20 6d 61 79 20 6e 6f | 74 20 6d 61 6b 65 20 61 |s may no|t make a|
|000044f0| 6e 79 20 73 65 6e 73 65 | 2c 20 62 75 74 20 49 27 |ny sense|, but I'|
|00004500| 6d 20 70 61 72 61 6e 6f | 69 64 20 61 6e 64 20 66 |m parano|id and f|
|00004510| 69 67 75 72 65 20 74 68 | 61 74 0a 09 20 2a 20 69 |igure th|at.. * i|
|00004520| 74 27 73 20 70 72 6f 62 | 61 62 6c 79 20 61 6e 20 |t's prob|ably an |
|00004530| 65 72 72 6f 72 2e 0a 09 | 20 2a 2f 0a 09 69 66 20 |error...| */..if |
|00004540| 28 6d 6f 64 65 20 26 20 | 46 54 52 55 4e 43 29 20 |(mode & |FTRUNC) |
|00004550| 7b 0a 09 09 65 72 72 6f | 72 20 3d 20 45 42 55 53 |{...erro|r = EBUS|
|00004560| 59 3b 0a 09 09 67 6f 74 | 6f 20 62 61 64 3b 0a 09 |Y;...got|o bad;..|
|00004570| 7d 0a 0a 09 2f 2a 20 43 | 61 6c 6c 20 74 68 65 20 |}.../* C|all the |
|00004580| 64 65 76 69 63 65 2d 73 | 70 65 63 69 66 69 63 20 |device-s|pecific |
|00004590| 6f 70 65 6e 20 72 6f 75 | 74 69 6e 65 2c 20 69 66 |open rou|tine, if|
|000045a0| 20 61 6e 79 2e 20 2a 2f | 0a 09 69 66 20 28 28 65 | any. */|..if ((e|
|000045b0| 72 72 6f 72 20 3d 20 6f | 70 65 6e 69 28 77 69 70 |rror = o|peni(wip|
|000045c0| 2c 20 6d 6f 64 65 29 29 | 20 21 3d 20 30 29 0a 09 |, mode))| != 0)..|
|000045d0| 09 67 6f 74 6f 20 62 61 | 64 3b 0a 0a 09 2f 2a 0a |.goto ba|d;.../*.|
|000045e0| 09 20 2a 20 4d 61 64 65 | 20 69 74 20 74 68 69 73 |. * Made| it this|
|000045f0| 20 66 61 72 2c 20 6e 6f | 77 20 73 77 69 74 63 68 | far, no|w switch|
|00004600| 20 74 68 65 20 69 6e 6f | 64 65 20 70 6f 69 6e 74 | the ino|de point|
|00004610| 65 72 73 20 69 6e 20 74 | 68 65 0a 09 20 2a 20 66 |ers in t|he.. * f|
|00004620| 69 6c 65 20 64 65 73 63 | 72 69 70 74 6f 72 73 20 |ile desc|riptors |
|00004630| 61 72 6f 75 6e 64 2c 20 | 74 6f 20 6d 61 6b 65 20 |around, |to make |
|00004640| 74 68 69 73 20 66 69 6c | 65 20 6f 70 65 6e 20 72 |this fil|e open r|
|00004650| 65 66 65 72 0a 09 20 2a | 20 74 6f 20 74 68 65 20 |efer.. *| to the |
|00004660| 6f 74 68 65 72 20 66 69 | 6c 65 2e 0a 09 20 2a 2f |other fi|le... */|
|00004670| 0a 09 69 72 65 6c 65 28 | 69 70 29 3b 09 09 2f 2a |..irele(|ip);../*|
|00004680| 20 57 65 20 64 6f 6e 27 | 74 20 6e 65 65 64 20 74 | We don'|t need t|
|00004690| 68 69 73 20 61 6e 79 6d | 6f 72 65 2e 20 2a 2f 0a |his anym|ore. */.|
|000046a0| 09 66 70 2d 3e 66 5f 64 | 61 74 61 20 3d 20 28 63 |.fp->f_d|ata = (c|
|000046b0| 61 64 64 72 5f 74 29 77 | 69 70 3b 0a 09 77 69 70 |addr_t)w|ip;..wip|
|000046c0| 2d 3e 69 5f 63 6f 75 6e | 74 2b 2b 3b 0a 09 69 75 |->i_coun|t++;..iu|
|000046d0| 6e 6c 6f 63 6b 28 77 69 | 70 29 3b 0a 09 72 65 74 |nlock(wi|p);..ret|
|000046e0| 75 72 6e 20 28 30 29 3b | 0a 0a 62 61 64 3a 0a 09 |urn (0);|..bad:..|
|000046f0| 69 75 6e 6c 6f 63 6b 28 | 77 69 70 29 3b 0a 09 72 |iunlock(|wip);..r|
|00004700| 65 74 75 72 6e 20 28 65 | 72 72 6f 72 29 3b 0a 7d |eturn (e|rror);.}|
|00004710| 0a 0a 23 65 6e 64 69 66 | 20 2f 2a 20 4e 46 53 20 |..#endif| /* NFS |
|00004720| 2a 2f 0a 23 65 6e 64 69 | 66 20 2f 2a 20 4e 46 44 |*/.#endi|f /* NFD|
|00004730| 20 3e 20 30 20 2a 2f 0a | 53 48 41 52 5f 45 4f 46 | > 0 */.|SHAR_EOF|
|00004740| 0a 63 68 6d 6f 64 20 2b | 78 20 27 64 65 76 5f 66 |.chmod +|x 'dev_f|
|00004750| 64 2e 63 27 0a 66 69 20 | 23 20 65 6e 64 20 6f 66 |d.c'.fi |# end of|
|00004760| 20 6f 76 65 72 77 72 69 | 74 69 6e 67 20 63 68 65 | overwri|ting che|
|00004770| 63 6b 0a 65 63 68 6f 20 | 73 68 61 72 3a 20 65 78 |ck.echo |shar: ex|
|00004780| 74 72 61 63 74 69 6e 67 | 20 22 27 50 41 54 43 48 |tracting| "'PATCH|
|00004790| 27 22 20 27 28 35 34 34 | 20 63 68 61 72 61 63 74 |'" '(544| charact|
|000047a0| 65 72 73 29 27 0a 69 66 | 20 74 65 73 74 20 2d 66 |ers)'.if| test -f|
|000047b0| 20 27 50 41 54 43 48 27 | 0a 74 68 65 6e 0a 09 65 | 'PATCH'|.then..e|
|000047c0| 63 68 6f 20 73 68 61 72 | 3a 20 77 69 6c 6c 20 6e |cho shar|: will n|
|000047d0| 6f 74 20 6f 76 65 72 2d | 77 72 69 74 65 20 65 78 |ot over-|write ex|
|000047e0| 69 73 74 69 6e 67 20 66 | 69 6c 65 20 22 27 50 41 |isting f|ile "'PA|
|000047f0| 54 43 48 27 22 0a 65 6c | 73 65 0a 63 61 74 20 3c |TCH'".el|se.cat <|
|00004800| 3c 20 5c 53 48 41 52 5f | 45 4f 46 20 3e 20 27 50 |< \SHAR_|EOF > 'P|
|00004810| 41 54 43 48 27 0a 2a 2a | 2a 20 2f 74 6d 70 2f 2c |ATCH'.**|* /tmp/,|
|00004820| 52 43 53 74 31 30 31 33 | 33 38 38 09 46 72 69 20 |RCSt1013|388.Fri |
|00004830| 4a 75 6c 20 31 30 20 31 | 30 3a 33 31 3a 31 35 20 |Jul 10 1|0:31:15 |
|00004840| 31 39 38 37 0a 2d 2d 2d | 20 73 70 65 63 5f 76 6e |1987.---| spec_vn|
|00004850| 6f 64 65 6f 70 73 2e 63 | 09 53 75 6e 20 4a 75 6c |odeops.c|.Sun Jul|
|00004860| 20 20 35 20 31 37 3a 32 | 37 3a 32 34 20 31 39 38 | 5 17:2|7:24 198|
|00004870| 37 0a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |7.******|********|
|00004880| 2a 0a 2a 2a 2a 20 31 32 | 39 2c 31 33 35 20 2a 2a |*.*** 12|9,135 **|
|00004890| 2a 2a 0a 20 20 09 09 09 | 69 66 20 28 28 75 5f 69 |**. ...|if ((u_i|
|000048a0| 6e 74 29 6d 61 6a 6f 72 | 28 64 65 76 29 20 3e 3d |nt)major|(dev) >=|
|000048b0| 20 6e 63 68 72 64 65 76 | 29 0a 20 20 09 09 09 09 | nchrdev|). ....|
|000048c0| 72 65 74 75 72 6e 20 28 | 45 4e 58 49 4f 29 3b 0a |return (|ENXIO);.|
|000048d0| 20 20 0a 21 20 09 09 09 | 65 72 72 6f 72 20 3d 20 | .! ...|error = |
|000048e0| 28 2a 63 64 65 76 73 77 | 5b 6d 61 6a 6f 72 28 64 |(*cdevsw|[major(d|
|000048f0| 65 76 29 5d 2e 64 5f 6f | 70 65 6e 29 28 64 65 76 |ev)].d_o|pen)(dev|
|00004900| 2c 66 6c 61 67 2c 20 26 | 6e 65 77 64 65 76 29 3b |,flag, &|newdev);|
|00004910| 0a 20 20 0a 20 20 09 09 | 09 2f 2a 0a 20 20 09 09 |. . ..|./*. ..|
|00004920| 09 20 2a 20 49 66 20 74 | 68 69 73 20 69 73 20 61 |. * If t|his is a|
|00004930| 6e 20 69 6e 64 69 72 65 | 63 74 20 64 65 76 69 63 |n indire|ct devic|
|00004940| 65 20 77 65 20 6e 65 65 | 64 20 74 6f 20 64 6f 20 |e we nee|d to do |
|00004950| 74 68 65 0a 2d 2d 2d 20 | 31 33 32 2c 31 33 39 20 |the.--- |132,139 |
|00004960| 2d 2d 2d 2d 0a 20 20 09 | 09 09 69 66 20 28 28 75 |----. .|..if ((u|
|00004970| 5f 69 6e 74 29 6d 61 6a | 6f 72 28 64 65 76 29 20 |_int)maj|or(dev) |
|00004980| 3e 3d 20 6e 63 68 72 64 | 65 76 29 0a 20 20 09 09 |>= nchrd|ev). ..|
|00004990| 09 09 72 65 74 75 72 6e | 20 28 45 4e 58 49 4f 29 |..return| (ENXIO)|
|000049a0| 3b 0a 20 20 0a 21 20 09 | 09 09 65 72 72 6f 72 20 |;. .! .|..error |
|000049b0| 3d 20 28 2a 63 64 65 76 | 73 77 5b 6d 61 6a 6f 72 |= (*cdev|sw[major|
|000049c0| 28 64 65 76 29 5d 2e 64 | 5f 6f 70 65 6e 29 28 64 |(dev)].d|_open)(d|
|000049d0| 65 76 2c 66 6c 61 67 2c | 20 26 6e 65 77 64 65 76 |ev,flag,| &newdev|
|000049e0| 2c 0a 21 20 09 09 09 09 | 09 09 09 09 09 76 70 70 |,.! ....|.....vpp|
|000049f0| 29 3b 0a 20 20 0a 20 20 | 09 09 09 2f 2a 0a 20 20 |);. . |.../*. |
|00004a00| 09 09 09 20 2a 20 49 66 | 20 74 68 69 73 20 69 73 |... * If| this is|
|00004a10| 20 61 6e 20 69 6e 64 69 | 72 65 63 74 20 64 65 76 | an indi|rect dev|
|00004a20| 69 63 65 20 77 65 20 6e | 65 65 64 20 74 6f 20 64 |ice we n|eed to d|
|00004a30| 6f 20 74 68 65 0a 53 48 | 41 52 5f 45 4f 46 0a 63 |o the.SH|AR_EOF.c|
|00004a40| 68 6d 6f 64 20 2b 78 20 | 27 50 41 54 43 48 27 0a |hmod +x |'PATCH'.|
|00004a50| 66 69 20 23 20 65 6e 64 | 20 6f 66 20 6f 76 65 72 |fi # end| of over|
|00004a60| 77 72 69 74 69 6e 67 20 | 63 68 65 63 6b 0a 23 09 |writing |check.#.|
|00004a70| 45 6e 64 20 6f 66 20 73 | 68 65 6c 6c 20 61 72 63 |End of s|hell arc|
|00004a80| 68 69 76 65 0a 65 78 69 | 74 20 30 0a 2d 2d 20 0a |hive.exi|t 0.-- .|
|00004a90| 41 72 6e 6f 6c 64 20 52 | 6f 62 62 69 6e 73 0a 41 |Arnold R|obbins.A|
|00004aa0| 52 50 41 2c 20 43 53 4e | 45 54 3a 09 61 72 6e 6f |RPA, CSN|ET:.arno|
|00004ab0| 6c 64 40 65 6d 6f 72 79 | 2e 41 52 50 41 09 42 49 |ld@emory|.ARPA.BI|
|00004ac0| 54 4e 45 54 3a 20 61 72 | 6e 6f 6c 64 40 65 6d 6f |TNET: ar|nold@emo|
|00004ad0| 72 79 0a 55 55 43 50 3a | 09 7b 20 64 65 63 76 61 |ry.UUCP:|.{ decva|
|00004ae0| 78 2c 20 67 61 74 65 63 | 68 2c 20 73 75 6e 21 73 |x, gatec|h, sun!s|
|00004af0| 75 6e 61 74 6c 20 7d 21 | 65 6d 6f 72 79 21 61 72 |unatl }!|emory!ar|
|00004b00| 6e 6f 6c 64 0a 4f 4e 45 | 2d 4f 46 2d 54 48 45 53 |nold.ONE|-OF-THES|
|00004b10| 45 2d 44 41 59 53 3a 09 | 61 72 6e 6f 6c 64 40 65 |E-DAYS:.|arnold@e|
|00004b20| 6d 6f 72 79 2e 6d 61 74 | 68 63 73 2e 65 6d 6f 72 |mory.mat|hcs.emor|
|00004b30| 79 2e 65 64 75 0a 0a 2d | 2d 20 0a 0a 52 69 63 68 |y.edu..-|- ..Rich|
|00004b40| 20 24 61 6c 7a 09 09 09 | 22 41 6e 67 65 72 20 69 | $alz...|"Anger i|
|00004b50| 73 20 61 6e 20 65 6e 65 | 72 67 79 22 0a 43 72 6f |s an ene|rgy".Cro|
|00004b60| 6e 75 73 20 50 72 6f 6a | 65 63 74 2c 20 42 42 4e |nus Proj|ect, BBN|
|00004b70| 20 4c 61 62 73 09 72 73 | 61 6c 7a 40 62 62 6e 2e | Labs.rs|alz@bbn.|
|00004b80| 63 6f 6d 0a 4d 6f 64 65 | 72 61 74 6f 72 2c 20 63 |com.Mode|rator, c|
|00004b90| 6f 6d 70 2e 73 6f 75 72 | 63 65 73 2e 75 6e 69 78 |omp.sour|ces.unix|
|00004ba0| 09 73 6f 75 72 63 65 73 | 40 75 75 6e 65 74 2e 75 |.sources|@uunet.u|
|00004bb0| 75 2e 6e 65 74 0a | |u.net. | |
+--------+-------------------------+-------------------------+--------+--------+