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: mcat
Confidence | Program | Detection | Match Type | Support
|
---|
100%
| dexvert
| Newsgroup Content (archive/news)
| magic
| Supported |
100%
| dexvert
| SHell self-extracting ARchive (archive/shar)
| magic
| Supported |
100%
| dexvert
| Internet Message Format (text/imf)
| magic
| Supported |
1%
| dexvert
| Text File (text/txt)
| fallback
| Supported |
100%
| file
| news or mail text
| default
| |
99%
| file
| C source, ASCII text
| default
| |
100%
| TrID
| E-Mail message (Var. 2)
| default
| |
100%
| checkBytes
| Printable ASCII
| default
| |
100%
| perlTextCheck
| Likely Text (Perl)
| default
| |
100%
| siegfried
| fmt/329 Shell Archive Format
| default
| |
100%
| detectItEasy
| Format: plain text[LF]
| default (weak)
| |
100%
| xdgMime
| message/rfc822
| default
|
|
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 46 72 6f 6d 3a 20 72 69 | 63 68 40 6f 78 74 72 61 |From: ri|ch@oxtra|
|00000010| 70 2e 55 55 43 50 20 28 | 4b 2e 20 52 69 63 68 61 |p.UUCP (|K. Richa|
|00000020| 72 64 20 4d 61 67 69 6c | 6c 29 0a 4e 65 77 73 67 |rd Magil|l).Newsg|
|00000030| 72 6f 75 70 73 3a 20 63 | 6f 6d 70 2e 73 6f 75 72 |roups: c|omp.sour|
|00000040| 63 65 73 2e 6d 69 73 63 | 0a 53 75 62 6a 65 63 74 |ces.misc|.Subject|
|00000050| 3a 20 76 30 32 69 30 34 | 33 3a 20 6d 63 61 74 20 |: v02i04|3: mcat |
|00000060| 2d 20 61 20 63 61 74 20 | 75 74 69 6c 69 74 79 20 |- a cat |utility |
|00000070| 66 6f 72 20 6d 6d 61 70 | 20 6f 6e 6c 79 20 64 65 |for mmap| only de|
|00000080| 76 69 63 65 73 0a 4d 65 | 73 73 61 67 65 2d 49 44 |vices.Me|ssage-ID|
|00000090| 3a 20 3c 37 31 37 39 40 | 6e 63 6f 61 73 74 2e 55 |: <7179@|ncoast.U|
|000000a0| 55 43 50 3e 0a 44 61 74 | 65 3a 20 33 20 46 65 62 |UCP>.Dat|e: 3 Feb|
|000000b0| 20 38 38 20 30 32 3a 33 | 32 3a 30 36 20 47 4d 54 | 88 02:3|2:06 GMT|
|000000c0| 0a 41 70 70 72 6f 76 65 | 64 3a 20 61 6c 6c 62 65 |.Approve|d: allbe|
|000000d0| 72 79 40 6e 63 6f 61 73 | 74 2e 55 55 43 50 0a 0a |ry@ncoas|t.UUCP..|
|000000e0| 43 6f 6d 70 2e 73 6f 75 | 72 63 65 73 2e 6d 69 73 |Comp.sou|rces.mis|
|000000f0| 63 3a 20 56 6f 6c 75 6d | 65 20 32 2c 20 49 73 73 |c: Volum|e 2, Iss|
|00000100| 75 65 20 34 33 0a 53 75 | 62 6d 69 74 74 65 64 2d |ue 43.Su|bmitted-|
|00000110| 42 79 3a 20 22 4b 2e 20 | 52 69 63 68 61 72 64 20 |By: "K. |Richard |
|00000120| 4d 61 67 69 6c 6c 22 20 | 3c 72 69 63 68 40 6f 78 |Magill" |<rich@ox|
|00000130| 74 72 61 70 2e 55 55 43 | 50 3e 0a 41 72 63 68 69 |trap.UUC|P>.Archi|
|00000140| 76 65 2d 4e 61 6d 65 3a | 20 6d 63 61 74 0a 0a 5b |ve-Name:| mcat..[|
|00000150| 46 6f 72 20 53 65 71 75 | 65 6e 74 73 20 69 6e 20 |For Sequ|ents in |
|00000160| 70 61 72 74 69 63 75 6c | 61 72 20 61 6e 64 20 34 |particul|ar and 4|
|00000170| 2e 78 42 53 44 20 77 69 | 74 68 20 6d 6d 61 70 28 |.xBSD wi|th mmap(|
|00000180| 29 20 69 6e 20 67 65 6e | 65 72 61 6c 2e 20 20 2b |) in gen|eral. +|
|00000190| 2b 62 73 61 5d 0a 0a 4e | 6f 74 65 3a 20 54 68 69 |+bsa]..N|ote: Thi|
|000001a0| 73 20 70 72 6f 67 72 61 | 6d 20 75 73 65 73 20 67 |s progra|m uses g|
|000001b0| 65 74 6f 70 74 28 33 29 | 20 77 68 69 63 68 20 64 |etopt(3)| which d|
|000001c0| 6f 65 73 6e 27 74 20 6f | 72 64 69 6e 61 72 69 6c |oesn't o|rdinaril|
|000001d0| 79 20 65 78 69 73 74 20 | 69 6e 0a 74 68 65 20 62 |y exist |in.the b|
|000001e0| 65 72 6b 65 6c 65 79 20 | 75 6e 69 76 65 72 73 65 |erkeley |universe|
|000001f0| 2e 20 20 54 68 65 20 61 | 74 26 74 20 63 6f 64 65 |. The a|t&t code|
|00000200| 20 66 6f 72 20 67 65 74 | 6f 70 74 20 69 73 20 61 | for get|opt is a|
|00000210| 72 6f 75 6e 64 20 61 6e | 64 20 68 61 73 0a 62 65 |round an|d has.be|
|00000220| 65 6e 20 72 65 6c 65 61 | 73 65 64 20 69 6e 74 6f |en relea|sed into|
|00000230| 20 74 68 65 20 70 75 62 | 6c 69 63 20 64 6f 6d 61 | the pub|lic doma|
|00000240| 69 6e 2e 20 20 28 41 74 | 20 6c 65 61 73 74 2c 20 |in. (At| least, |
|00000250| 74 68 61 74 27 73 20 6d | 79 0a 75 6e 64 65 72 73 |that's m|y.unders|
|00000260| 74 61 6e 64 69 6e 67 29 | 2e 0a 0a 23 21 2f 62 69 |tanding)|...#!/bi|
|00000270| 6e 2f 73 68 0a 23 20 54 | 68 69 73 20 69 73 20 61 |n/sh.# T|his is a|
|00000280| 20 73 68 65 6c 6c 20 61 | 72 63 68 69 76 65 2c 20 | shell a|rchive, |
|00000290| 6d 65 61 6e 69 6e 67 3a | 20 20 20 20 20 20 20 20 |meaning:| |
|000002a0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000002b0| 20 20 20 20 20 20 0a 23 | 20 31 2e 20 52 65 6d 6f | .#| 1. Remo|
|000002c0| 76 65 20 65 76 65 72 79 | 74 68 69 6e 67 20 61 62 |ve every|thing ab|
|000002d0| 6f 76 65 20 74 68 65 20 | 23 21 20 2f 62 69 6e 2f |ove the |#! /bin/|
|000002e0| 73 68 20 6c 69 6e 65 2e | 20 20 20 20 20 20 20 20 |sh line.| |
|000002f0| 20 20 20 20 20 20 20 20 | 0a 23 20 32 2e 20 53 61 | |.# 2. Sa|
|00000300| 76 65 20 74 68 65 20 72 | 65 73 75 6c 74 69 6e 67 |ve the r|esulting|
|00000310| 20 74 65 73 74 20 69 6e | 20 61 20 66 69 6c 65 2e | test in| a file.|
|00000320| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000330| 20 20 20 20 20 20 20 20 | 20 20 0a 23 20 33 2e 20 | | .# 3. |
|00000340| 45 78 65 63 75 74 65 20 | 74 68 65 20 66 69 6c 65 |Execute |the file|
|00000350| 20 77 69 74 68 20 2f 62 | 69 6e 2f 73 68 20 28 6e | with /b|in/sh (n|
|00000360| 6f 74 20 63 73 68 29 20 | 74 6f 20 63 72 65 61 74 |ot csh) |to creat|
|00000370| 65 20 74 68 65 20 66 69 | 6c 65 73 3a 0a 23 09 6d |e the fi|les:.#.m|
|00000380| 63 61 74 2e 6c 0a 23 09 | 6d 63 61 74 2e 63 0a 23 |cat.l.#.|mcat.c.#|
|00000390| 20 54 68 69 73 20 61 72 | 63 68 69 76 65 20 63 72 | This ar|chive cr|
|000003a0| 65 61 74 65 64 3a 20 20 | 46 72 69 20 4e 6f 76 20 |eated: |Fri Nov |
|000003b0| 32 37 20 31 38 3a 31 39 | 3a 30 37 20 45 53 54 20 |27 18:19|:07 EST |
|000003c0| 31 39 38 37 20 62 79 20 | 72 69 63 68 40 6f 78 74 |1987 by |rich@oxt|
|000003d0| 72 61 70 0a 65 63 68 6f | 20 65 78 74 72 61 63 74 |rap.echo| extract|
|000003e0| 69 6e 67 20 6d 63 61 74 | 2e 6c 0a 73 65 64 20 27 |ing mcat|.l.sed '|
|000003f0| 73 2f 5e 58 2f 2f 27 20 | 3e 6d 63 61 74 2e 6c 20 |s/^X//' |>mcat.l |
|00000400| 3c 3c 20 27 45 4e 44 2d | 6f 66 2d 6d 63 61 74 2e |<< 'END-|of-mcat.|
|00000410| 6c 27 0a 58 2e 54 48 20 | 4d 43 41 54 20 6c 20 22 |l'.X.TH |MCAT l "|
|00000420| 32 37 20 4e 6f 76 20 38 | 37 22 20 22 6c 6f 63 61 |27 Nov 8|7" "loca|
|00000430| 6c 22 0a 58 2e 53 48 20 | 4e 41 4d 45 0a 58 6d 63 |l".X.SH |NAME.Xmc|
|00000440| 61 74 20 5c 2d 20 63 61 | 74 20 6c 69 6b 65 20 70 |at \- ca|t like p|
|00000450| 72 6f 67 72 61 6d 20 66 | 6f 72 20 72 65 61 64 2f |rogram f|or read/|
|00000460| 77 72 69 74 65 27 69 6e | 67 20 70 6d 61 70 20 64 |write'in|g pmap d|
|00000470| 65 76 69 63 65 73 20 66 | 72 6f 6d 20 73 68 65 6c |evices f|rom shel|
|00000480| 6c 0a 58 2e 53 48 20 53 | 59 4e 4f 50 53 49 53 0a |l.X.SH S|YNOPSIS.|
|00000490| 58 2e 42 20 6d 63 61 74 | 0a 58 5b 2d 62 20 62 75 |X.B mcat|.X[-b bu|
|000004a0| 66 66 65 72 73 69 7a 65 | 5d 20 5b 2d 69 20 69 66 |ffersize|] [-i if|
|000004b0| 69 6c 65 5d 20 5b 2d 6f | 20 6f 66 69 6c 65 5d 20 |ile] [-o| ofile] |
|000004c0| 5b 2d 73 5d 20 5b 2d 76 | 5d 0a 58 2e 53 48 20 44 |[-s] [-v|].X.SH D|
|000004d0| 45 53 43 52 49 50 54 49 | 4f 4e 0a 58 2e 49 20 6d |ESCRIPTI|ON.X.I m|
|000004e0| 63 61 74 0a 58 69 73 20 | 61 20 70 72 6f 67 72 61 |cat.Xis |a progra|
|000004f0| 6d 20 76 65 72 79 20 6d | 75 63 68 20 6c 69 6b 65 |m very m|uch like|
|00000500| 20 63 61 74 20 6f 72 20 | 64 64 20 74 68 61 74 20 | cat or |dd that |
|00000510| 69 73 20 63 61 70 61 62 | 6c 65 20 6f 66 20 72 65 |is capab|le of re|
|00000520| 61 64 69 6e 67 20 61 0a | 58 6e 6f 6e 2d 72 65 61 |ading a.|Xnon-rea|
|00000530| 64 28 32 29 27 61 62 6c | 65 20 64 65 76 69 63 65 |d(2)'abl|e device|
|00000540| 2c 20 66 6f 72 20 65 78 | 61 6d 70 6c 65 2c 20 61 |, for ex|ample, a|
|00000550| 6e 20 6d 6d 61 70 28 32 | 29 20 6f 6e 6c 79 20 64 |n mmap(2|) only d|
|00000560| 65 76 69 63 65 20 6c 69 | 6b 65 0a 58 73 65 71 75 |evice li|ke.Xsequ|
|00000570| 65 6e 74 27 73 20 70 6d | 61 70 20 64 65 76 69 63 |ent's pm|ap devic|
|00000580| 65 73 2e 20 20 49 74 20 | 69 73 20 63 61 70 61 62 |es. It |is capab|
|00000590| 6c 65 20 6f 66 20 63 6f | 70 79 69 6e 67 20 6d 6d |le of co|pying mm|
|000005a0| 61 70 20 74 6f 20 6d 6d | 61 70 2c 0a 58 72 65 61 |ap to mm|ap,.Xrea|
|000005b0| 64 69 6e 67 20 61 6e 64 | 20 77 72 69 74 69 6e 67 |ding and| writing|
|000005c0| 20 6f 6e 74 6f 20 6d 6d | 61 70 20 6f 72 20 72 65 | onto mm|ap or re|
|000005d0| 61 64 69 6e 67 20 66 72 | 6f 6d 20 6d 6d 61 70 20 |ading fr|om mmap |
|000005e0| 61 6e 64 20 77 72 69 74 | 69 6e 67 2e 0a 58 2e 53 |and writ|ing..X.S|
|000005f0| 48 20 4f 50 54 49 4f 4e | 53 0a 58 2e 50 50 0a 58 |H OPTION|S.X.PP.X|
|00000600| 2e 54 50 20 31 34 0a 58 | 2e 42 20 5c 2d 62 20 62 |.TP 14.X|.B \-b b|
|00000610| 75 66 66 65 72 73 69 7a | 65 0a 58 75 73 65 20 62 |uffersiz|e.Xuse b|
|00000620| 75 66 66 65 72 73 69 7a | 65 20 61 73 20 74 68 65 |uffersiz|e as the|
|00000630| 20 62 75 66 66 65 72 20 | 73 69 7a 65 20 66 6f 72 | buffer |size for|
|00000640| 20 72 65 61 64 27 73 20 | 61 6e 64 20 77 72 69 74 | read's |and writ|
|00000650| 65 27 73 20 72 61 74 68 | 65 72 20 74 68 61 6e 20 |e's rath|er than |
|00000660| 42 55 46 53 49 5a 2e 0a | 58 2e 50 50 0a 58 2e 54 |BUFSIZ..|X.PP.X.T|
|00000670| 50 20 31 34 0a 58 2e 42 | 20 5c 2d 69 20 69 66 69 |P 14.X.B| \-i ifi|
|00000680| 6c 65 0a 58 75 73 65 20 | 69 66 69 6c 65 20 61 73 |le.Xuse |ifile as|
|00000690| 20 66 69 6c 65 20 6e 61 | 6d 65 20 66 6f 72 20 69 | file na|me for i|
|000006a0| 6e 70 75 74 20 72 61 74 | 68 65 72 20 74 68 61 6e |nput rat|her than|
|000006b0| 20 73 74 64 69 6e 2e 0a | 58 2e 50 50 0a 58 2e 54 | stdin..|X.PP.X.T|
|000006c0| 50 20 31 34 0a 58 2e 42 | 20 5c 2d 6f 20 6f 66 69 |P 14.X.B| \-o ofi|
|000006d0| 6c 65 0a 58 75 73 65 20 | 6f 66 69 6c 65 20 61 73 |le.Xuse |ofile as|
|000006e0| 20 66 69 6c 65 20 6e 61 | 6d 65 20 66 6f 72 20 6f | file na|me for o|
|000006f0| 75 74 70 75 74 20 72 61 | 74 68 65 72 20 74 68 61 |utput ra|ther tha|
|00000700| 6e 20 73 74 64 6f 75 74 | 2e 0a 58 2e 50 50 0a 58 |n stdout|..X.PP.X|
|00000710| 2e 54 50 20 31 34 0a 58 | 2e 42 20 5c 2d 73 0a 58 |.TP 14.X|.B \-s.X|
|00000720| 70 72 69 6e 74 20 6e 6f | 20 65 72 72 6f 72 20 6d |print no| error m|
|00000730| 65 73 73 61 67 65 73 2e | 20 20 28 73 69 6c 65 6e |essages.| (silen|
|00000740| 74 29 2e 0a 58 2e 50 50 | 0a 58 2e 54 50 20 31 34 |t)..X.PP|.X.TP 14|
|00000750| 0a 58 2e 42 20 5c 2d 76 | 0a 58 70 72 69 6e 74 20 |.X.B \-v|.Xprint |
|00000760| 73 6f 6d 65 20 6c 6f 67 | 20 6c 69 6e 65 73 2e 20 |some log| lines. |
|00000770| 20 28 76 65 72 62 6f 73 | 65 29 2e 0a 58 2e 53 48 | (verbos|e)..X.SH|
|00000780| 20 42 55 47 53 0a 58 44 | 75 65 20 74 6f 20 61 20 | BUGS.XD|ue to a |
|00000790| 73 79 6e 65 72 67 79 20 | 6f 66 20 73 68 65 6c 6c |synergy |of shell|
|000007a0| 20 73 74 72 61 74 65 67 | 79 2c 20 61 6e 64 20 62 | strateg|y, and b|
|000007b0| 61 6c 61 6e 63 65 20 68 | 61 72 64 77 61 72 65 20 |alance h|ardware |
|000007c0| 6c 69 6d 69 74 61 74 69 | 6f 6e 73 2c 0a 58 79 6f |limitati|ons,.Xyo|
|000007d0| 75 20 63 61 6e 20 6e 6f | 74 20 72 65 64 69 72 65 |u can no|t redire|
|000007e0| 63 74 20 73 74 64 6f 75 | 74 20 74 6f 20 61 20 70 |ct stdou|t to a p|
|000007f0| 6d 61 70 20 64 65 76 69 | 63 65 20 6f 6e 20 73 65 |map devi|ce on se|
|00000800| 71 75 65 6e 74 20 62 61 | 6c 61 6e 63 65 2e 20 20 |quent ba|lance. |
|00000810| 28 62 75 74 0a 58 79 6f | 75 20 63 61 6e 20 75 73 |(but.Xyo|u can us|
|00000820| 65 20 2d 6f 20 6f 66 69 | 6c 65 29 2e 0a 58 2e 53 |e -o ofi|le)..X.S|
|00000830| 48 20 41 55 54 48 4f 52 | 0a 58 4b 2e 20 52 69 63 |H AUTHOR|.XK. Ric|
|00000840| 68 61 72 64 20 4d 61 67 | 69 6c 6c 20 2d 20 44 69 |hard Mag|ill - Di|
|00000850| 67 69 74 61 6c 20 57 6f | 72 6b 73 20 4c 74 64 2e |gital Wo|rks Ltd.|
|00000860| 0a 58 0a 58 72 69 63 68 | 40 6f 78 74 72 61 70 2e |.X.Xrich|@oxtrap.|
|00000870| 55 55 43 50 2c 20 72 69 | 63 68 40 73 65 6e 64 61 |UUCP, ri|ch@senda|
|00000880| 69 2e 55 55 43 50 0a 45 | 4e 44 2d 6f 66 2d 6d 63 |i.UUCP.E|ND-of-mc|
|00000890| 61 74 2e 6c 0a 65 63 68 | 6f 20 65 78 74 72 61 63 |at.l.ech|o extrac|
|000008a0| 74 69 6e 67 20 6d 63 61 | 74 2e 63 0a 73 65 64 20 |ting mca|t.c.sed |
|000008b0| 27 73 2f 5e 58 2f 2f 27 | 20 3e 6d 63 61 74 2e 63 |'s/^X//'| >mcat.c|
|000008c0| 20 3c 3c 20 27 45 4e 44 | 2d 6f 66 2d 6d 63 61 74 | << 'END|-of-mcat|
|000008d0| 2e 63 27 0a 58 2f 2a 0a | 58 20 2a 20 54 68 69 73 |.c'.X/*.|X * This|
|000008e0| 20 66 69 6c 65 20 69 73 | 20 6d 63 61 74 2e 63 20 | file is| mcat.c |
|000008f0| 61 6e 64 20 63 6f 6e 74 | 61 69 6e 73 20 61 20 73 |and cont|ains a s|
|00000900| 6f 72 74 20 6f 66 20 63 | 61 74 20 75 74 69 6c 69 |ort of c|at utili|
|00000910| 74 79 20 66 6f 72 20 75 | 73 65 20 77 69 74 68 0a |ty for u|se with.|
|00000920| 58 20 2a 20 70 6d 61 70 | 20 64 65 76 69 63 65 73 |X * pmap| devices|
|00000930| 2e 20 20 49 74 20 77 61 | 73 20 6f 72 69 67 69 6e |. It wa|s origin|
|00000940| 61 6c 6c 79 20 77 72 69 | 74 74 65 6e 20 6f 6e 20 |ally wri|tten on |
|00000950| 73 65 71 75 65 6e 74 20 | 44 79 6e 69 78 20 32 2e |sequent |Dynix 2.|
|00000960| 31 2e 31 2e 0a 58 20 2a | 0a 58 20 2a 20 74 6f 20 |1.1..X *|.X * to |
|00000970| 64 6f 3a 0a 58 20 2a 09 | 6d 6d 61 70 20 64 69 73 |do:.X *.|mmap dis|
|00000980| 6b 20 66 69 6c 65 73 2e | 0a 58 20 2a 09 6d 63 61 |k files.|.X *.mca|
|00000990| 74 20 6d 75 6c 74 69 70 | 6c 65 20 66 69 6c 65 73 |t multip|le files|
|000009a0| 20 69 6e 2c 20 6f 75 74 | 2e 0a 58 20 2a 09 2d 78 | in, out|..X *.-x|
|000009b0| 20 77 72 69 74 65 20 61 | 74 20 6f 66 66 73 65 74 | write a|t offset|
|000009c0| 20 78 2e 0a 58 20 2a 09 | 74 72 75 6e 63 20 6f 6c | x..X *.|trunc ol|
|000009d0| 64 20 64 69 73 6b 20 66 | 69 6c 65 73 2e 0a 58 20 |d disk f|iles..X |
|000009e0| 2a 0a 58 20 2a 20 4f 72 | 69 67 69 6e 61 6c 20 41 |*.X * Or|iginal A|
|000009f0| 75 74 68 6f 72 3a 20 4b | 2e 20 52 69 63 68 61 72 |uthor: K|. Richar|
|00000a00| 64 20 4d 61 67 69 6c 6c | 20 46 72 69 20 4e 6f 76 |d Magill| Fri Nov|
|00000a10| 20 32 30 20 31 36 3a 30 | 30 3a 35 33 20 45 53 54 | 20 16:0|0:53 EST|
|00000a20| 20 31 39 38 37 0a 58 20 | 2a 20 4c 61 73 74 20 4d | 1987.X |* Last M|
|00000a30| 6f 64 20 46 72 69 20 4e | 6f 76 20 32 37 20 31 38 |od Fri N|ov 27 18|
|00000a40| 3a 30 36 3a 31 35 20 45 | 53 54 20 31 39 38 37 2c |:06:15 E|ST 1987,|
|00000a50| 20 62 79 20 72 69 63 68 | 40 6f 78 74 72 61 70 0a | by rich|@oxtrap.|
|00000a60| 58 20 2a 0a 58 20 2a 24 | 48 65 61 64 65 72 3a 20 |X *.X *$|Header: |
|00000a70| 2f 75 31 2f 72 69 63 68 | 2f 62 69 6e 2f 73 72 63 |/u1/rich|/bin/src|
|00000a80| 2f 52 43 53 2f 6d 63 61 | 74 2e 63 2c 76 20 31 2e |/RCS/mca|t.c,v 1.|
|00000a90| 31 20 38 37 2f 31 31 2f | 32 37 20 31 38 3a 30 36 |1 87/11/|27 18:06|
|00000aa0| 3a 34 35 20 72 69 63 68 | 20 45 78 70 20 24 0a 58 |:45 rich| Exp $.X|
|00000ab0| 20 2a 2f 0a 58 0a 58 23 | 69 6e 63 6c 75 64 65 20 | */.X.X#|include |
|00000ac0| 3c 73 74 64 69 6f 2e 68 | 3e 0a 58 23 69 6e 63 6c |<stdio.h|>.X#incl|
|00000ad0| 75 64 65 20 3c 73 79 73 | 2f 74 79 70 65 73 2e 68 |ude <sys|/types.h|
|00000ae0| 3e 0a 58 23 69 6e 63 6c | 75 64 65 20 3c 73 79 73 |>.X#incl|ude <sys|
|00000af0| 2f 66 69 6c 65 2e 68 3e | 0a 58 23 69 6e 63 6c 75 |/file.h>|.X#inclu|
|00000b00| 64 65 20 3c 73 79 73 2f | 69 6f 63 74 6c 2e 68 3e |de <sys/|ioctl.h>|
|00000b10| 0a 58 23 69 6e 63 6c 75 | 64 65 20 3c 73 79 73 2f |.X#inclu|de <sys/|
|00000b20| 6d 6d 61 6e 2e 68 3e 0a | 58 23 69 6e 63 6c 75 64 |mman.h>.|X#includ|
|00000b30| 65 20 3c 73 79 73 2f 73 | 74 61 74 2e 68 3e 0a 58 |e <sys/s|tat.h>.X|
|00000b40| 23 69 6e 63 6c 75 64 65 | 20 3c 6d 61 63 68 69 6e |#include| <machin|
|00000b50| 65 2f 70 6d 61 70 2e 68 | 3e 0a 58 0a 58 23 64 65 |e/pmap.h|>.X.X#de|
|00000b60| 66 69 6e 65 20 50 65 72 | 72 6f 72 28 73 29 09 7b |fine Per|ror(s).{|
|00000b70| 69 66 28 53 69 6c 65 6e | 74 3d 3d 30 29 70 65 72 |if(Silen|t==0)per|
|00000b80| 72 6f 72 28 73 29 3b 7d | 0a 58 0a 58 63 68 61 72 |ror(s);}|.X.Xchar|
|00000b90| 20 2a 76 61 6c 6c 6f 63 | 28 29 3b 0a 58 0a 58 6d | *valloc|();.X.Xm|
|00000ba0| 61 69 6e 28 61 72 67 63 | 2c 20 61 72 67 76 29 0a |ain(argc|, argv).|
|00000bb0| 58 69 6e 74 20 61 72 67 | 63 3b 0a 58 63 68 61 72 |Xint arg|c;.Xchar|
|00000bc0| 20 2a 61 72 67 76 5b 5d | 3b 0a 58 7b 0a 58 09 63 | *argv[]|;.X{.X.c|
|00000bd0| 68 61 72 20 2a 49 6e 42 | 61 73 65 20 3d 20 28 28 |har *InB|ase = ((|
|00000be0| 63 68 61 72 20 2a 29 20 | 30 29 3b 0a 58 09 63 68 |char *) |0);.X.ch|
|00000bf0| 61 72 20 2a 4f 75 74 42 | 61 73 65 20 3d 20 28 28 |ar *OutB|ase = ((|
|00000c00| 63 68 61 72 20 2a 29 20 | 30 29 3b 0a 58 0a 58 09 |char *) |0);.X.X.|
|00000c10| 69 6e 74 20 42 75 66 66 | 65 72 53 69 7a 65 20 3d |int Buff|erSize =|
|00000c20| 20 42 55 46 53 49 5a 3b | 0a 58 09 69 6e 74 20 49 | BUFSIZ;|.X.int I|
|00000c30| 6e 50 75 74 20 3d 20 66 | 69 6c 65 6e 6f 28 73 74 |nPut = f|ileno(st|
|00000c40| 64 69 6e 29 3b 0a 58 09 | 69 6e 74 20 4f 75 74 50 |din);.X.|int OutP|
|00000c50| 75 74 20 3d 20 66 69 6c | 65 6e 6f 28 73 74 64 6f |ut = fil|eno(stdo|
|00000c60| 75 74 29 3b 0a 58 09 69 | 6e 74 20 53 69 6c 65 6e |ut);.X.i|nt Silen|
|00000c70| 74 20 3d 20 30 3b 0a 58 | 09 69 6e 74 20 56 65 72 |t = 0;.X|.int Ver|
|00000c80| 62 6f 73 65 20 3d 20 30 | 3b 0a 58 09 69 6e 74 20 |bose = 0|;.X.int |
|00000c90| 57 72 69 74 65 46 6c 61 | 67 73 20 3d 20 30 3b 0a |WriteFla|gs = 0;.|
|00000ca0| 58 09 69 6e 74 20 63 3b | 0a 58 0a 58 09 73 74 72 |X.int c;|.X.X.str|
|00000cb0| 75 63 74 20 70 6d 61 70 | 5f 69 6f 63 20 49 6e 53 |uct pmap|_ioc InS|
|00000cc0| 69 7a 65 2c 20 4f 75 74 | 53 69 7a 65 3b 0a 58 09 |ize, Out|Size;.X.|
|00000cd0| 73 74 72 75 63 74 20 73 | 74 61 74 20 52 65 61 64 |struct s|tat Read|
|00000ce0| 61 62 6c 65 3b 0a 58 0a | 58 09 65 78 74 65 72 6e |able;.X.|X.extern|
|00000cf0| 20 63 68 61 72 20 2a 6f | 70 74 61 72 67 3b 0a 58 | char *o|ptarg;.X|
|00000d00| 09 65 78 74 65 72 6e 20 | 69 6e 74 20 6f 70 74 69 |.extern |int opti|
|00000d10| 6e 64 3b 0a 58 0a 58 2f | 2a 0a 58 20 2a 20 70 61 |nd;.X.X/|*.X * pa|
|00000d20| 72 73 65 20 61 72 67 73 | 2e 0a 58 20 2a 2f 0a 58 |rse args|..X */.X|
|00000d30| 0a 58 09 77 68 69 6c 65 | 20 28 28 63 20 3d 20 67 |.X.while| ((c = g|
|00000d40| 65 74 6f 70 74 28 61 72 | 67 63 2c 20 61 72 67 76 |etopt(ar|gc, argv|
|00000d50| 2c 20 22 62 3a 69 3a 6f | 3a 73 76 22 29 29 20 21 |, "b:i:o|:sv")) !|
|00000d60| 3d 20 45 4f 46 29 20 7b | 0a 58 09 09 73 77 69 74 |= EOF) {|.X..swit|
|00000d70| 63 68 20 28 63 29 20 7b | 0a 58 0a 58 09 09 63 61 |ch (c) {|.X.X..ca|
|00000d80| 73 65 20 27 62 27 3a 0a | 58 09 09 09 42 75 66 66 |se 'b':.|X...Buff|
|00000d90| 65 72 53 69 7a 65 20 3d | 20 61 74 6f 69 28 6f 70 |erSize =| atoi(op|
|00000da0| 74 69 6e 64 29 3b 0a 58 | 0a 58 09 09 09 69 66 20 |tind);.X|.X...if |
|00000db0| 28 56 65 72 62 6f 73 65 | 20 21 3d 20 30 29 20 7b |(Verbose| != 0) {|
|00000dc0| 0a 58 09 09 09 09 28 76 | 6f 69 64 29 20 66 70 72 |.X....(v|oid) fpr|
|00000dd0| 69 6e 74 66 28 73 74 64 | 65 72 72 2c 0a 58 09 09 |intf(std|err,.X..|
|00000de0| 09 09 09 20 20 20 20 20 | 20 20 22 25 73 3a 20 55 |... | "%s: U|
|00000df0| 73 69 6e 67 20 25 64 20 | 62 79 74 65 20 69 2f 6f |sing %d |byte i/o|
|00000e00| 2e 5c 6e 22 2c 0a 58 09 | 09 09 09 09 20 20 20 20 |.\n",.X.|.... |
|00000e10| 20 20 20 61 72 67 76 5b | 30 5d 2c 20 42 75 66 66 | argv[|0], Buff|
|00000e20| 65 72 53 69 7a 65 29 3b | 0a 58 09 09 09 7d 20 2f |erSize);|.X...} /|
|00000e30| 2a 20 76 65 72 62 6f 73 | 65 20 2a 2f 0a 58 0a 58 |* verbos|e */.X.X|
|00000e40| 09 09 09 62 72 65 61 6b | 3b 0a 58 0a 58 09 09 63 |...break|;.X.X..c|
|00000e50| 61 73 65 20 27 69 27 3a | 0a 58 0a 58 09 09 09 69 |ase 'i':|.X.X...i|
|00000e60| 66 20 28 28 49 6e 50 75 | 74 20 3d 20 6f 70 65 6e |f ((InPu|t = open|
|00000e70| 28 6f 70 74 61 72 67 2c | 20 4f 5f 52 44 4f 4e 4c |(optarg,| O_RDONL|
|00000e80| 59 2c 20 30 36 36 36 29 | 29 20 3c 20 30 29 20 7b |Y, 0666)|) < 0) {|
|00000e90| 0a 58 09 09 09 09 50 65 | 72 72 6f 72 28 22 6f 70 |.X....Pe|rror("op|
|00000ea0| 65 6e 69 6e 67 20 69 6e | 70 75 74 3a 22 29 3b 0a |ening in|put:");.|
|00000eb0| 58 09 09 09 09 65 78 69 | 74 28 31 29 3b 0a 58 09 |X....exi|t(1);.X.|
|00000ec0| 09 09 7d 20 2f 2a 20 6f | 6e 20 65 72 72 6f 72 20 |..} /* o|n error |
|00000ed0| 6f 70 65 6e 69 6e 67 20 | 66 6f 72 20 72 65 61 64 |opening |for read|
|00000ee0| 20 2a 2f 0a 58 0a 58 09 | 09 09 62 72 65 61 6b 3b | */.X.X.|..break;|
|00000ef0| 0a 58 0a 58 09 09 63 61 | 73 65 20 27 6f 27 3a 0a |.X.X..ca|se 'o':.|
|00000f00| 58 09 09 09 69 66 20 28 | 61 63 63 65 73 73 28 6f |X...if (|access(o|
|00000f10| 70 74 61 72 67 2c 20 46 | 5f 4f 4b 29 20 3d 3d 20 |ptarg, F|_OK) == |
|00000f20| 30 29 20 7b 0a 58 09 09 | 09 09 69 66 20 28 56 65 |0) {.X..|..if (Ve|
|00000f30| 72 62 6f 73 65 20 21 3d | 20 30 29 20 7b 0a 58 09 |rbose !=| 0) {.X.|
|00000f40| 09 09 09 09 28 76 6f 69 | 64 29 20 66 70 72 69 6e |....(voi|d) fprin|
|00000f50| 74 66 28 73 74 64 65 72 | 72 2c 20 22 25 73 3a 20 |tf(stder|r, "%s: |
|00000f60| 6f 75 74 70 75 74 20 65 | 78 69 73 74 73 2e 5c 6e |output e|xists.\n|
|00000f70| 22 2c 20 61 72 67 76 5b | 30 5d 29 3b 0a 58 09 09 |", argv[|0]);.X..|
|00000f80| 09 09 7d 20 2f 2a 20 76 | 65 72 62 6f 73 65 20 2a |..} /* v|erbose *|
|00000f90| 2f 0a 58 0a 58 09 09 09 | 09 69 66 20 28 61 63 63 |/.X.X...|.if (acc|
|00000fa0| 65 73 73 28 6f 70 74 61 | 72 67 2c 20 52 5f 4f 4b |ess(opta|rg, R_OK|
|00000fb0| 29 20 3d 3d 20 30 29 20 | 7b 0a 58 09 09 09 09 09 |) == 0) |{.X.....|
|00000fc0| 69 66 20 28 56 65 72 62 | 6f 73 65 20 21 3d 20 30 |if (Verb|ose != 0|
|00000fd0| 29 20 7b 0a 58 09 09 09 | 09 09 09 28 76 6f 69 64 |) {.X...|...(void|
|00000fe0| 29 20 66 70 72 69 6e 74 | 66 28 73 74 64 65 72 72 |) fprint|f(stderr|
|00000ff0| 2c 20 22 25 73 3a 20 6f | 75 74 70 75 74 20 69 73 |, "%s: o|utput is|
|00001000| 20 72 65 61 64 61 62 6c | 65 2e 5c 6e 22 2c 20 61 | readabl|e.\n", a|
|00001010| 72 67 76 5b 30 5d 29 3b | 0a 58 09 09 09 09 09 7d |rgv[0]);|.X.....}|
|00001020| 20 2f 2a 20 76 65 72 62 | 6f 73 65 20 2a 2f 0a 58 | /* verb|ose */.X|
|00001030| 0a 58 09 09 09 09 09 57 | 72 69 74 65 46 6c 61 67 |.X.....W|riteFlag|
|00001040| 73 20 7c 3d 20 4f 5f 52 | 44 57 52 3b 0a 58 09 09 |s |= O_R|DWR;.X..|
|00001050| 09 09 7d 0a 58 0a 58 09 | 09 09 7d 20 65 6c 73 65 |..}.X.X.|..} else|
|00001060| 20 7b 0a 58 09 09 09 09 | 69 66 20 28 56 65 72 62 | {.X....|if (Verb|
|00001070| 6f 73 65 20 21 3d 20 30 | 29 20 7b 0a 58 09 09 09 |ose != 0|) {.X...|
|00001080| 09 09 28 76 6f 69 64 29 | 20 66 70 72 69 6e 74 66 |..(void)| fprintf|
|00001090| 28 73 74 64 65 72 72 2c | 20 22 25 73 3a 20 6f 75 |(stderr,| "%s: ou|
|000010a0| 74 70 75 74 20 64 6f 65 | 73 20 6e 6f 74 20 65 78 |tput doe|s not ex|
|000010b0| 69 73 74 2e 20 20 63 72 | 65 61 74 69 6e 67 2e 5c |ist. cr|eating.\|
|000010c0| 6e 22 2c 20 61 72 67 76 | 5b 30 5d 29 3b 0a 58 09 |n", argv|[0]);.X.|
|000010d0| 09 09 09 7d 20 2f 2a 20 | 76 65 72 62 6f 73 65 20 |...} /* |verbose |
|000010e0| 2a 2f 0a 58 0a 58 09 09 | 09 09 57 72 69 74 65 46 |*/.X.X..|..WriteF|
|000010f0| 6c 61 67 73 20 3d 20 4f | 5f 43 52 45 41 54 20 7c |lags = O|_CREAT ||
|00001100| 20 4f 5f 52 44 57 52 3b | 0a 58 09 09 09 7d 0a 58 | O_RDWR;|.X...}.X|
|00001110| 0a 58 09 09 09 69 66 20 | 28 28 4f 75 74 50 75 74 |.X...if |((OutPut|
|00001120| 20 3d 20 6f 70 65 6e 28 | 6f 70 74 61 72 67 2c 20 | = open(|optarg, |
|00001130| 57 72 69 74 65 46 6c 61 | 67 73 2c 20 30 36 36 36 |WriteFla|gs, 0666|
|00001140| 29 29 20 3c 20 30 29 20 | 7b 0a 58 09 09 09 09 50 |)) < 0) |{.X....P|
|00001150| 65 72 72 6f 72 28 22 6d | 63 61 74 3a 20 6f 70 65 |error("m|cat: ope|
|00001160| 6e 69 6e 67 20 6f 75 74 | 70 75 74 22 29 3b 0a 58 |ning out|put");.X|
|00001170| 09 09 09 09 65 78 69 74 | 28 31 29 3b 0a 58 09 09 |....exit|(1);.X..|
|00001180| 09 7d 20 2f 2a 20 6f 6e | 20 65 72 72 6f 72 20 6f |.} /* on| error o|
|00001190| 70 65 6e 69 6e 67 20 66 | 6f 72 20 77 72 69 74 65 |pening f|or write|
|000011a0| 20 2a 2f 0a 58 0a 58 09 | 09 09 62 72 65 61 6b 3b | */.X.X.|..break;|
|000011b0| 0a 58 0a 58 09 09 63 61 | 73 65 20 27 73 27 3a 0a |.X.X..ca|se 's':.|
|000011c0| 58 09 09 09 53 69 6c 65 | 6e 74 20 3d 20 31 3b 0a |X...Sile|nt = 1;.|
|000011d0| 58 09 09 09 62 72 65 61 | 6b 3b 0a 58 0a 58 09 09 |X...brea|k;.X.X..|
|000011e0| 63 61 73 65 20 27 76 27 | 3a 0a 58 09 09 09 56 65 |case 'v'|:.X...Ve|
|000011f0| 72 62 6f 73 65 20 3d 20 | 31 3b 0a 58 09 09 09 62 |rbose = |1;.X...b|
|00001200| 72 65 61 6b 3b 0a 58 0a | 58 09 09 63 61 73 65 20 |reak;.X.|X..case |
|00001210| 27 3f 27 3a 0a 58 09 09 | 64 65 66 61 75 6c 74 3a |'?':.X..|default:|
|00001220| 0a 58 09 09 09 69 66 20 | 28 53 69 6c 65 6e 74 20 |.X...if |(Silent |
|00001230| 3d 3d 20 30 29 20 7b 0a | 58 09 09 09 09 28 76 6f |== 0) {.|X....(vo|
|00001240| 69 64 29 20 66 70 72 69 | 6e 74 66 28 73 74 64 65 |id) fpri|ntf(stde|
|00001250| 72 72 2c 20 22 25 73 3a | 20 75 73 61 67 65 3a 20 |rr, "%s:| usage: |
|00001260| 2d 62 20 62 75 66 66 65 | 72 5f 73 69 7a 65 20 2d |-b buffe|r_size -|
|00001270| 69 20 69 6e 70 75 74 5f | 66 69 6c 65 20 2d 6f 20 |i input_|file -o |
|00001280| 6f 75 74 70 75 74 5f 66 | 69 6c 65 20 2d 73 20 2d |output_f|ile -s -|
|00001290| 76 5c 6e 22 2c 20 61 72 | 67 76 5b 30 5d 29 3b 0a |v\n", ar|gv[0]);.|
|000012a0| 58 09 09 09 7d 20 2f 2a | 20 6e 6f 74 20 73 69 6c |X...} /*| not sil|
|000012b0| 65 6e 74 20 2a 2f 0a 58 | 0a 58 09 09 09 65 78 69 |ent */.X|.X...exi|
|000012c0| 74 28 31 29 3b 0a 58 0a | 58 09 09 7d 20 2f 2a 20 |t(1);.X.|X..} /* |
|000012d0| 73 77 69 74 63 68 20 6f | 6e 20 73 77 69 74 63 68 |switch o|n switch|
|000012e0| 20 63 68 61 72 61 63 74 | 65 72 20 2a 2f 0a 58 09 | charact|er */.X.|
|000012f0| 7d 20 2f 2a 20 77 68 69 | 6c 65 20 74 68 65 72 65 |} /* whi|le there|
|00001300| 20 61 72 65 20 73 77 69 | 74 63 68 20 63 68 61 72 | are swi|tch char|
|00001310| 61 63 74 65 72 73 20 2a | 2f 0a 58 0a 58 2f 2a 0a |acters *|/.X.X/*.|
|00001320| 58 20 2a 20 49 20 70 72 | 65 73 75 6d 65 20 74 68 |X * I pr|esume th|
|00001330| 61 74 20 69 66 20 74 68 | 65 20 69 6f 63 74 6c 20 |at if th|e ioctl |
|00001340| 66 61 69 6c 73 2c 20 74 | 68 69 73 20 69 73 20 6e |fails, t|his is n|
|00001350| 6f 74 20 61 20 70 6d 61 | 70 20 64 65 76 69 63 65 |ot a pma|p device|
|00001360| 20 61 6e 64 20 77 65 0a | 58 20 2a 20 61 72 65 6e | and we.|X * aren|
|00001370| 27 74 20 6d 61 70 70 69 | 6e 67 2e 20 20 49 66 20 |'t mappi|ng. If |
|00001380| 79 6f 75 20 6b 6e 6f 77 | 20 6f 66 20 61 20 62 65 |you know| of a be|
|00001390| 74 74 65 72 20 77 61 79 | 20 74 6f 20 63 68 65 63 |tter way| to chec|
|000013a0| 6b 20 61 20 61 20 64 65 | 73 63 72 69 70 74 6f 72 |k a a de|scriptor|
|000013b0| 0a 58 20 2a 20 66 6f 72 | 20 6d 6d 61 70 27 61 62 |.X * for| mmap'ab|
|000013c0| 69 6c 69 74 79 2c 20 28 | 73 68 6f 72 74 20 6f 66 |ility, (|short of|
|000013d0| 20 63 68 61 73 69 6e 67 | 20 74 68 65 20 6d 61 6a | chasing| the maj|
|000013e0| 6f 72 20 6e 75 6d 62 65 | 72 20 74 68 72 6f 75 67 |or numbe|r throug|
|000013f0| 68 20 74 68 65 20 6b 65 | 72 6e 65 6c 29 2c 0a 58 |h the ke|rnel),.X|
|00001400| 20 2a 20 6c 65 74 20 6d | 65 20 6b 6e 6f 77 2e 0a | * let m|e know..|
|00001410| 58 20 2a 2f 0a 58 0a 58 | 09 69 66 20 28 69 6f 63 |X */.X.X|.if (ioc|
|00001420| 74 6c 28 49 6e 50 75 74 | 2c 20 50 4d 41 50 49 4f |tl(InPut|, PMAPIO|
|00001430| 43 47 45 54 50 2c 20 26 | 49 6e 53 69 7a 65 29 20 |CGETP, &|InSize) |
|00001440| 3d 3d 20 30 29 20 7b 20 | 2f 2a 20 6e 6f 74 20 70 |== 0) { |/* not p|
|00001450| 6d 61 70 20 2a 2f 0a 58 | 09 09 69 66 20 28 28 49 |map */.X|..if ((I|
|00001460| 6e 42 61 73 65 20 3d 20 | 76 61 6c 6c 6f 63 28 49 |nBase = |valloc(I|
|00001470| 6e 53 69 7a 65 2e 70 69 | 5f 73 69 7a 65 29 29 20 |nSize.pi|_size)) |
|00001480| 3d 3d 20 30 29 20 7b 0a | 58 09 09 09 50 65 72 72 |== 0) {.|X...Perr|
|00001490| 6f 72 28 22 76 61 6c 6c | 6f 63 27 69 6e 67 20 6f |or("vall|oc'ing o|
|000014a0| 75 74 70 75 74 20 62 75 | 66 66 65 72 3a 22 29 3b |utput bu|ffer:");|
|000014b0| 0a 58 09 09 09 65 78 69 | 74 28 31 29 3b 0a 58 09 |.X...exi|t(1);.X.|
|000014c0| 09 7d 20 2f 2a 20 6f 6e | 20 65 72 72 6f 72 20 76 |.} /* on| error v|
|000014d0| 61 6c 6c 6f 63 27 69 6e | 67 20 2a 2f 0a 58 0a 58 |alloc'in|g */.X.X|
|000014e0| 09 09 69 66 20 28 6d 6d | 61 70 28 49 6e 42 61 73 |..if (mm|ap(InBas|
|000014f0| 65 2c 20 49 6e 53 69 7a | 65 2e 70 69 5f 73 69 7a |e, InSiz|e.pi_siz|
|00001500| 65 2c 20 50 52 4f 54 5f | 52 45 41 44 2c 20 4d 41 |e, PROT_|READ, MA|
|00001510| 50 5f 53 48 41 52 45 44 | 2c 0a 58 09 09 09 20 49 |P_SHARED|,.X... I|
|00001520| 6e 50 75 74 2c 20 30 29 | 20 21 3d 20 30 29 20 7b |nPut, 0)| != 0) {|
|00001530| 0a 58 09 09 09 50 65 72 | 72 6f 72 28 22 6f 6e 20 |.X...Per|ror("on |
|00001540| 65 72 72 6f 72 20 6d 6d | 61 70 27 69 6e 67 20 69 |error mm|ap'ing i|
|00001550| 6e 70 75 74 3a 22 29 3b | 0a 58 09 09 09 65 78 69 |nput:");|.X...exi|
|00001560| 74 28 31 29 3b 0a 58 09 | 09 7d 20 2f 2a 20 6f 6e |t(1);.X.|.} /* on|
|00001570| 20 65 72 72 6f 72 20 6d | 6d 61 70 27 69 6e 67 20 | error m|map'ing |
|00001580| 69 6e 70 75 74 20 2a 2f | 0a 58 0a 58 09 09 69 66 |input */|.X.X..if|
|00001590| 20 28 56 65 72 62 6f 73 | 65 20 21 3d 20 30 29 20 | (Verbos|e != 0) |
|000015a0| 7b 0a 58 09 09 09 28 76 | 6f 69 64 29 20 66 70 72 |{.X...(v|oid) fpr|
|000015b0| 69 6e 74 66 28 73 74 64 | 65 72 72 2c 20 22 25 73 |intf(std|err, "%s|
|000015c0| 3a 20 6d 6d 61 70 27 69 | 6e 67 20 69 6e 70 75 74 |: mmap'i|ng input|
|000015d0| 2e 5c 6e 22 2c 0a 58 09 | 09 09 09 20 20 20 20 20 |.\n",.X.|... |
|000015e0| 20 20 61 72 67 76 5b 30 | 5d 29 3b 0a 58 09 09 7d | argv[0|]);.X..}|
|000015f0| 20 2f 2a 20 76 65 72 62 | 6f 73 65 20 2a 2f 0a 58 | /* verb|ose */.X|
|00001600| 0a 58 09 7d 20 2f 2a 20 | 6e 6f 74 20 6d 61 70 70 |.X.} /* |not mapp|
|00001610| 65 64 20 6f 72 20 6e 6f | 74 20 6d 61 70 70 61 62 |ed or no|t mappab|
|00001620| 6c 65 20 2a 2f 0a 58 0a | 58 09 69 66 20 28 28 69 |le */.X.|X.if ((i|
|00001630| 6f 63 74 6c 28 4f 75 74 | 50 75 74 2c 20 50 4d 41 |octl(Out|Put, PMA|
|00001640| 50 49 4f 43 47 45 54 50 | 2c 20 26 4f 75 74 53 69 |PIOCGETP|, &OutSi|
|00001650| 7a 65 29 20 3d 3d 20 30 | 29 29 20 7b 20 2f 2a 20 |ze) == 0|)) { /* |
|00001660| 6e 6f 74 20 6d 61 70 70 | 69 6e 67 20 2a 2f 0a 58 |not mapp|ing */.X|
|00001670| 09 09 69 66 20 20 28 28 | 4f 75 74 42 61 73 65 20 |..if ((|OutBase |
|00001680| 3d 20 76 61 6c 6c 6f 63 | 28 4f 75 74 53 69 7a 65 |= valloc|(OutSize|
|00001690| 2e 70 69 5f 73 69 7a 65 | 29 29 20 3d 3d 20 30 29 |.pi_size|)) == 0)|
|000016a0| 20 7b 0a 58 09 09 09 50 | 65 72 72 6f 72 28 22 76 | {.X...P|error("v|
|000016b0| 61 6c 6c 6f 63 27 69 6e | 67 20 66 6f 72 20 6f 75 |alloc'in|g for ou|
|000016c0| 74 70 75 74 20 62 75 66 | 66 65 72 3a 22 29 3b 0a |tput buf|fer:");.|
|000016d0| 58 09 09 09 65 78 69 74 | 28 31 29 3b 0a 58 09 09 |X...exit|(1);.X..|
|000016e0| 7d 20 2f 2a 20 6f 6e 20 | 76 61 6c 6c 6f 63 20 65 |} /* on |valloc e|
|000016f0| 72 72 6f 72 20 2a 2f 0a | 58 0a 58 09 09 69 66 20 |rror */.|X.X..if |
|00001700| 28 6d 6d 61 70 28 4f 75 | 74 42 61 73 65 2c 20 4f |(mmap(Ou|tBase, O|
|00001710| 75 74 53 69 7a 65 2e 70 | 69 5f 73 69 7a 65 2c 20 |utSize.p|i_size, |
|00001720| 50 52 4f 54 5f 52 44 57 | 52 2c 20 4d 41 50 5f 53 |PROT_RDW|R, MAP_S|
|00001730| 48 41 52 45 44 2c 0a 58 | 09 09 09 20 4f 75 74 50 |HARED,.X|... OutP|
|00001740| 75 74 2c 20 30 29 20 21 | 3d 20 30 29 20 7b 0a 58 |ut, 0) !|= 0) {.X|
|00001750| 09 09 09 50 65 72 72 6f | 72 28 22 6d 6d 61 70 27 |...Perro|r("mmap'|
|00001760| 69 6e 67 20 6f 75 74 70 | 75 74 3a 22 29 3b 0a 58 |ing outp|ut:");.X|
|00001770| 0a 58 09 09 09 69 66 20 | 28 53 69 6c 65 6e 74 20 |.X...if |(Silent |
|00001780| 3d 3d 20 30 29 20 7b 0a | 58 09 09 09 09 28 76 6f |== 0) {.|X....(vo|
|00001790| 69 64 29 20 66 70 72 69 | 6e 74 66 28 73 74 64 65 |id) fpri|ntf(stde|
|000017a0| 72 72 2c 20 22 25 73 3a | 20 72 65 6d 65 6d 62 65 |rr, "%s:| remembe|
|000017b0| 72 20 79 6f 75 20 63 61 | 6e 27 74 20 72 65 64 69 |r you ca|n't redi|
|000017c0| 72 65 63 74 20 6f 75 74 | 70 75 74 2e 5c 6e 22 2c |rect out|put.\n",|
|000017d0| 20 61 72 67 76 5b 30 5d | 29 3b 0a 58 09 09 09 7d | argv[0]|);.X...}|
|000017e0| 20 2f 2a 20 6e 6f 74 20 | 73 69 6c 65 6e 74 20 2a | /* not |silent *|
|000017f0| 2f 0a 58 0a 58 09 09 09 | 65 78 69 74 28 31 29 3b |/.X.X...|exit(1);|
|00001800| 0a 58 09 09 7d 20 2f 2a | 20 6f 6e 20 65 72 72 6f |.X..} /*| on erro|
|00001810| 72 20 6d 6d 61 70 27 69 | 6e 67 20 6f 75 74 70 75 |r mmap'i|ng outpu|
|00001820| 74 20 2a 2f 0a 58 0a 58 | 09 09 69 66 20 28 56 65 |t */.X.X|..if (Ve|
|00001830| 72 62 6f 73 65 20 21 3d | 20 30 29 20 7b 0a 58 09 |rbose !=| 0) {.X.|
|00001840| 09 09 28 76 6f 69 64 29 | 20 66 70 72 69 6e 74 66 |..(void)| fprintf|
|00001850| 28 73 74 64 65 72 72 2c | 20 22 25 73 3a 20 6d 6d |(stderr,| "%s: mm|
|00001860| 61 70 27 69 6e 67 20 6f | 75 74 70 75 74 2e 5c 6e |ap'ing o|utput.\n|
|00001870| 22 2c 0a 58 09 09 09 09 | 20 20 20 20 20 20 20 61 |",.X....| a|
|00001880| 72 67 76 5b 30 5d 29 3b | 0a 58 09 09 7d 20 2f 2a |rgv[0]);|.X..} /*|
|00001890| 20 76 65 72 62 6f 73 65 | 20 2a 2f 0a 58 0a 58 09 | verbose| */.X.X.|
|000018a0| 7d 20 2f 2a 20 6e 6f 74 | 20 6d 61 70 70 65 64 20 |} /* not| mapped |
|000018b0| 6f 72 20 6e 6f 74 20 6d | 61 70 70 61 62 6c 65 20 |or not m|appable |
|000018c0| 2a 2f 0a 58 0a 58 09 69 | 66 20 28 49 6e 42 61 73 |*/.X.X.i|f (InBas|
|000018d0| 65 20 21 3d 20 28 28 63 | 68 61 72 20 2a 29 20 4e |e != ((c|har *) N|
|000018e0| 55 4c 4c 29 29 20 7b 20 | 2f 2a 20 6d 61 70 70 69 |ULL)) { |/* mappi|
|000018f0| 6e 67 20 69 6e 70 75 74 | 20 2a 2f 0a 58 09 09 69 |ng input| */.X..i|
|00001900| 66 20 28 4f 75 74 42 61 | 73 65 20 21 3d 20 28 28 |f (OutBa|se != ((|
|00001910| 63 68 61 72 20 2a 29 20 | 4e 55 4c 4c 29 29 20 7b |char *) |NULL)) {|
|00001920| 20 2f 2a 20 61 6e 64 20 | 6f 75 74 70 75 74 20 2a | /* and |output *|
|00001930| 2f 0a 58 09 09 09 62 63 | 6f 70 79 28 49 6e 42 61 |/.X...bc|opy(InBa|
|00001940| 73 65 2c 20 4f 75 74 42 | 61 73 65 2c 0a 58 09 09 |se, OutB|ase,.X..|
|00001950| 09 20 20 20 20 20 20 28 | 49 6e 53 69 7a 65 2e 70 |. (|InSize.p|
|00001960| 69 5f 73 69 7a 65 20 3c | 20 4f 75 74 53 69 7a 65 |i_size <| OutSize|
|00001970| 2e 70 69 5f 73 69 7a 65 | 29 0a 58 09 09 09 20 20 |.pi_size|).X... |
|00001980| 20 20 20 20 3f 20 49 6e | 53 69 7a 65 2e 70 69 5f | ? In|Size.pi_|
|00001990| 73 69 7a 65 20 3a 20 4f | 75 74 53 69 7a 65 2e 70 |size : O|utSize.p|
|000019a0| 69 5f 73 69 7a 65 29 3b | 0a 58 0a 58 09 09 7d 20 |i_size);|.X.X..} |
|000019b0| 65 6c 73 65 20 7b 20 2f | 2a 20 6d 61 70 20 69 6e |else { /|* map in|
|000019c0| 2c 20 6e 6f 20 6d 61 70 | 20 6f 75 74 20 2a 2f 0a |, no map| out */.|
|000019d0| 58 09 09 09 69 6e 74 20 | 52 65 61 6c 6c 79 57 72 |X...int |ReallyWr|
|000019e0| 6f 74 65 3b 0a 58 0a 58 | 09 09 09 77 68 69 6c 65 |ote;.X.X|...while|
|000019f0| 20 28 49 6e 53 69 7a 65 | 2e 70 69 5f 73 69 7a 65 | (InSize|.pi_size|
|00001a00| 20 3e 20 30 29 20 7b 0a | 58 09 09 09 09 69 66 20 | > 0) {.|X....if |
|00001a10| 28 42 75 66 66 65 72 53 | 69 7a 65 20 3e 20 49 6e |(BufferS|ize > In|
|00001a20| 53 69 7a 65 2e 70 69 5f | 73 69 7a 65 29 20 7b 0a |Size.pi_|size) {.|
|00001a30| 58 09 09 09 09 09 42 75 | 66 66 65 72 53 69 7a 65 |X.....Bu|fferSize|
|00001a40| 20 3d 20 49 6e 53 69 7a | 65 2e 70 69 5f 73 69 7a | = InSiz|e.pi_siz|
|00001a50| 65 3b 0a 58 09 09 09 09 | 7d 20 2f 2a 20 69 66 20 |e;.X....|} /* if |
|00001a60| 62 75 66 66 65 72 20 6e | 6f 77 20 68 6f 6c 64 73 |buffer n|ow holds|
|00001a70| 20 69 74 20 61 6c 6c 20 | 2a 2f 0a 58 0a 58 09 09 | it all |*/.X.X..|
|00001a80| 09 09 69 66 20 28 28 52 | 65 61 6c 6c 79 57 72 6f |..if ((R|eallyWro|
|00001a90| 74 65 20 3d 20 77 72 69 | 74 65 28 4f 75 74 50 75 |te = wri|te(OutPu|
|00001aa0| 74 2c 20 49 6e 42 61 73 | 65 2c 0a 58 09 09 09 09 |t, InBas|e,.X....|
|00001ab0| 09 09 09 20 42 75 66 66 | 65 72 53 69 7a 65 29 29 |... Buff|erSize))|
|00001ac0| 20 3d 3d 20 2d 31 29 20 | 7b 0a 58 09 09 09 09 09 | == -1) |{.X.....|
|00001ad0| 50 65 72 72 6f 72 28 22 | 77 72 69 74 69 6e 67 20 |Perror("|writing |
|00001ae0| 6f 75 74 70 75 74 3a 22 | 29 3b 0a 58 09 09 09 09 |output:"|);.X....|
|00001af0| 09 65 78 69 74 28 31 29 | 3b 0a 58 09 09 09 09 7d |.exit(1)|;.X....}|
|00001b00| 20 2f 2a 20 6f 6e 20 65 | 72 72 6f 72 20 77 72 69 | /* on e|rror wri|
|00001b10| 74 69 6e 67 20 2a 2f 0a | 58 0a 58 09 09 09 09 49 |ting */.|X.X....I|
|00001b20| 6e 53 69 7a 65 2e 70 69 | 5f 73 69 7a 65 20 2d 3d |nSize.pi|_size -=|
|00001b30| 20 52 65 61 6c 6c 79 57 | 72 6f 74 65 3b 0a 58 09 | ReallyW|rote;.X.|
|00001b40| 09 09 09 49 6e 42 61 73 | 65 20 2b 3d 20 52 65 61 |...InBas|e += Rea|
|00001b50| 6c 6c 79 57 72 6f 74 65 | 3b 0a 58 09 09 09 7d 09 |llyWrote|;.X...}.|
|00001b60| 2f 2a 20 77 68 69 6c 65 | 20 64 61 74 61 20 74 6f |/* while| data to|
|00001b70| 20 77 72 69 74 65 20 2a | 2f 0a 58 09 09 7d 20 2f | write *|/.X..} /|
|00001b80| 2a 20 69 66 20 6d 61 70 | 70 69 6e 67 20 6f 75 74 |* if map|ping out|
|00001b90| 70 75 74 20 2a 2f 0a 58 | 0a 58 09 7d 20 65 6c 73 |put */.X|.X.} els|
|00001ba0| 65 20 7b 20 2f 2a 20 6e | 6f 74 20 6d 61 70 70 69 |e { /* n|ot mappi|
|00001bb0| 6e 67 20 69 6e 70 75 74 | 20 2a 2f 0a 58 0a 58 09 |ng input| */.X.X.|
|00001bc0| 09 69 66 20 28 4f 75 74 | 42 61 73 65 20 21 3d 20 |.if (Out|Base != |
|00001bd0| 28 28 63 68 61 72 20 2a | 29 20 4e 55 4c 4c 29 29 |((char *|) NULL))|
|00001be0| 20 7b 20 2f 2a 20 62 75 | 74 20 6d 61 70 70 69 6e | { /* bu|t mappin|
|00001bf0| 67 20 6f 75 74 70 75 74 | 20 2a 2f 09 09 09 09 69 |g output| */....i|
|00001c00| 6e 74 20 52 65 61 6c 6c | 79 52 65 61 64 20 3d 20 |nt Reall|yRead = |
|00001c10| 31 3b 0a 58 0a 58 09 09 | 09 77 68 69 6c 65 20 28 |1;.X.X..|.while (|
|00001c20| 52 65 61 6c 6c 79 52 65 | 61 64 20 21 3d 20 30 20 |ReallyRe|ad != 0 |
|00001c30| 26 26 20 4f 75 74 53 69 | 7a 65 2e 70 69 5f 73 69 |&& OutSi|ze.pi_si|
|00001c40| 7a 65 20 3e 20 30 29 20 | 7b 0a 58 09 09 09 09 69 |ze > 0) |{.X....i|
|00001c50| 66 20 28 42 75 66 66 65 | 72 53 69 7a 65 20 3e 20 |f (Buffe|rSize > |
|00001c60| 4f 75 74 53 69 7a 65 2e | 70 69 5f 73 69 7a 65 29 |OutSize.|pi_size)|
|00001c70| 20 7b 0a 58 09 09 09 09 | 09 42 75 66 66 65 72 53 | {.X....|.BufferS|
|00001c80| 69 7a 65 20 3d 20 4f 75 | 74 53 69 7a 65 2e 70 69 |ize = Ou|tSize.pi|
|00001c90| 5f 73 69 7a 65 3b 0a 58 | 09 09 09 09 7d 20 2f 2a |_size;.X|....} /*|
|00001ca0| 20 69 66 20 62 75 66 66 | 65 72 20 6e 6f 77 20 68 | if buff|er now h|
|00001cb0| 6f 6c 64 73 20 69 74 20 | 61 6c 6c 20 2a 2f 0a 58 |olds it |all */.X|
|00001cc0| 0a 58 09 09 09 09 69 66 | 20 28 28 52 65 61 6c 6c |.X....if| ((Reall|
|00001cd0| 79 52 65 61 64 20 3d 20 | 72 65 61 64 28 49 6e 50 |yRead = |read(InP|
|00001ce0| 75 74 2c 20 4f 75 74 42 | 61 73 65 2c 0a 58 09 09 |ut, OutB|ase,.X..|
|00001cf0| 09 09 09 09 09 20 42 75 | 66 66 65 72 53 69 7a 65 |..... Bu|fferSize|
|00001d00| 29 29 20 3d 3d 20 2d 31 | 29 20 7b 0a 58 09 09 09 |)) == -1|) {.X...|
|00001d10| 09 09 50 65 72 72 6f 72 | 28 22 72 65 61 64 69 6e |..Perror|("readin|
|00001d20| 67 20 69 6e 70 75 74 3a | 22 29 3b 0a 58 09 09 09 |g input:|");.X...|
|00001d30| 09 09 65 78 69 74 28 31 | 29 3b 0a 58 09 09 09 09 |..exit(1|);.X....|
|00001d40| 7d 20 2f 2a 20 6f 6e 20 | 65 72 72 6f 72 20 72 65 |} /* on |error re|
|00001d50| 61 64 69 6e 67 20 2a 2f | 0a 58 0a 58 09 09 09 09 |ading */|.X.X....|
|00001d60| 4f 75 74 53 69 7a 65 2e | 70 69 5f 73 69 7a 65 20 |OutSize.|pi_size |
|00001d70| 2d 3d 20 52 65 61 6c 6c | 79 52 65 61 64 3b 0a 58 |-= Reall|yRead;.X|
|00001d80| 09 09 09 09 4f 75 74 42 | 61 73 65 20 2b 3d 20 52 |....OutB|ase += R|
|00001d90| 65 61 6c 6c 79 52 65 61 | 64 3b 0a 58 09 09 09 7d |eallyRea|d;.X...}|
|00001da0| 09 2f 2a 20 77 68 69 6c | 65 20 64 61 74 61 20 74 |./* whil|e data t|
|00001db0| 6f 20 77 72 69 74 65 20 | 2a 2f 0a 58 0a 58 09 09 |o write |*/.X.X..|
|00001dc0| 7d 20 65 6c 73 65 20 7b | 20 2f 2a 20 6d 61 70 70 |} else {| /* mapp|
|00001dd0| 69 6e 67 20 6e 6f 74 68 | 69 6e 67 2c 20 73 68 6f |ing noth|ing, sho|
|00001de0| 75 6c 64 20 75 73 65 20 | 63 61 74 20 69 6e 73 74 |uld use |cat inst|
|00001df0| 65 61 64 20 2a 2f 0a 58 | 09 09 09 69 66 20 28 53 |ead */.X|...if (S|
|00001e00| 69 6c 65 6e 74 20 3d 3d | 20 30 29 20 7b 0a 58 09 |ilent ==| 0) {.X.|
|00001e10| 09 09 09 28 76 6f 69 64 | 29 20 66 70 72 69 6e 74 |...(void|) fprint|
|00001e20| 66 28 73 74 64 65 72 72 | 2c 20 22 25 73 3a 20 6e |f(stderr|, "%s: n|
|00001e30| 6f 74 20 6d 61 70 70 69 | 6e 67 20 61 6e 79 74 68 |ot mappi|ng anyth|
|00001e40| 69 6e 67 2e 20 20 75 73 | 65 20 63 61 74 20 69 6e |ing. us|e cat in|
|00001e50| 73 74 65 61 64 2e 5c 6e | 22 2c 20 61 72 67 76 5b |stead.\n|", argv[|
|00001e60| 30 5d 29 3b 0a 58 09 09 | 09 7d 20 2f 2a 20 6e 6f |0]);.X..|.} /* no|
|00001e70| 74 20 73 69 6c 65 6e 74 | 20 2a 2f 0a 58 0a 58 09 |t silent| */.X.X.|
|00001e80| 09 09 65 78 69 74 28 31 | 29 3b 0a 58 09 09 7d 20 |..exit(1|);.X..} |
|00001e90| 2f 2a 20 69 66 20 6d 61 | 70 70 69 6e 67 20 6f 75 |/* if ma|pping ou|
|00001ea0| 74 70 75 74 20 2a 2f 0a | 58 09 7d 20 2f 2a 20 69 |tput */.|X.} /* i|
|00001eb0| 66 20 6d 61 70 70 69 6e | 67 20 69 6e 70 75 74 20 |f mappin|g input |
|00001ec0| 2a 2f 0a 58 0a 58 09 65 | 78 69 74 28 30 29 3b 0a |*/.X.X.e|xit(0);.|
|00001ed0| 58 7d 20 2f 2a 20 6d 61 | 69 6e 28 29 20 2a 2f 0a |X} /* ma|in() */.|
|00001ee0| 58 0a 58 2f 2a 0a 58 20 | 2a 20 24 4c 6f 67 3a 09 |X.X/*.X |* $Log:.|
|00001ef0| 6d 63 61 74 2e 63 2c 76 | 20 24 0a 58 20 2a 20 52 |mcat.c,v| $.X * R|
|00001f00| 65 76 69 73 69 6f 6e 20 | 31 2e 31 20 20 38 37 2f |evision |1.1 87/|
|00001f10| 31 31 2f 32 37 20 20 31 | 38 3a 30 36 3a 34 35 20 |11/27 1|8:06:45 |
|00001f20| 20 72 69 63 68 0a 58 20 | 2a 20 49 6e 69 74 69 61 | rich.X |* Initia|
|00001f30| 6c 20 72 65 76 69 73 69 | 6f 6e 0a 58 20 2a 20 0a |l revisi|on.X * .|
|00001f40| 58 20 2a 0a 58 20 2a 20 | 4c 6f 63 61 6c 20 56 61 |X *.X * |Local Va|
|00001f50| 72 69 61 62 6c 65 73 3a | 0a 58 20 2a 20 63 6f 6d |riables:|.X * com|
|00001f60| 6d 65 6e 74 2d 63 6f 6c | 75 6d 6e 3a 20 30 0a 58 |ment-col|umn: 0.X|
|00001f70| 20 2a 20 66 69 6c 6c 2d | 63 6f 6c 75 6d 6e 3a 20 | * fill-|column: |
|00001f80| 37 35 0a 58 20 2a 20 66 | 69 6c 6c 2d 70 72 65 66 |75.X * f|ill-pref|
|00001f90| 69 78 3a 20 22 20 2a 20 | 22 0a 58 20 2a 20 6d 6f |ix: " * |".X * mo|
|00001fa0| 64 65 3a 20 63 0a 58 20 | 2a 20 76 65 72 73 69 6f |de: c.X |* versio|
|00001fb0| 6e 2d 63 6f 6e 74 72 6f | 6c 3a 20 74 0a 58 20 2a |n-contro|l: t.X *|
|00001fc0| 20 45 6e 64 3a 0a 58 20 | 2a 2f 0a 58 0a 58 2f 2a | End:.X |*/.X.X/*|
|00001fd0| 20 65 6e 64 20 6f 66 20 | 6d 63 61 74 2e 63 20 2a | end of |mcat.c *|
|00001fe0| 2f 0a 45 4e 44 2d 6f 66 | 2d 6d 63 61 74 2e 63 0a |/.END-of|-mcat.c.|
|00001ff0| 65 78 69 74 0a | |exit. | |
+--------+-------------------------+-------------------------+--------+--------+