home *** CD-ROM | disk | FTP | other *** search
open in:
MacOS 8.1
|
Win98
|
DOS
browse contents |
view JSON data
|
view as text
This file was processed as: SHell self-extracting ARchive
(archive/shar).
Confidence | Program | Detection | Match Type | Support
|
---|
100%
| dexvert
| Newsgroup Content (archive/news)
| magic
| Supported |
100%
| dexvert
| SHell self-extracting ARchive (archive/shar)
| magic
| Supported |
100%
| dexvert
| Internet Message Format (text/imf)
| magic
| Supported |
1%
| dexvert
| Text File (text/txt)
| fallback
| Supported |
100%
| file
| news or mail, ASCII text
| default
| |
100%
| 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| 53 75 62 6a 65 63 74 3a | 20 20 76 32 31 69 31 30 |Subject:| v21i10|
|00000010| 32 3a 20 20 54 61 62 6c | 65 20 6f 66 20 43 6f 6e |2: Tabl|e of Con|
|00000020| 74 65 6e 74 73 20 66 6f | 72 20 45 78 65 62 79 74 |tents fo|r Exebyt|
|00000030| 65 20 38 6d 6d 20 74 61 | 70 65 73 0a 4e 65 77 73 |e 8mm ta|pes.News|
|00000040| 67 72 6f 75 70 73 3a 20 | 63 6f 6d 70 2e 73 6f 75 |groups: |comp.sou|
|00000050| 72 63 65 73 2e 75 6e 69 | 78 0a 41 70 70 72 6f 76 |rces.uni|x.Approv|
|00000060| 65 64 3a 20 72 73 61 6c | 7a 40 75 75 6e 65 74 2e |ed: rsal|z@uunet.|
|00000070| 55 55 2e 4e 45 54 0a 58 | 2d 43 68 65 63 6b 73 75 |UU.NET.X|-Checksu|
|00000080| 6d 2d 53 6e 65 66 72 75 | 3a 20 64 34 62 38 65 31 |m-Snefru|: d4b8e1|
|00000090| 34 37 20 65 35 63 39 35 | 31 33 35 20 35 31 61 64 |47 e5c95|135 51ad|
|000000a0| 35 30 61 38 20 63 61 65 | 36 64 64 30 37 0a 0a 53 |50a8 cae|6dd07..S|
|000000b0| 75 62 6d 69 74 74 65 64 | 2d 62 79 3a 20 4d 61 74 |ubmitted|-by: Mat|
|000000c0| 74 20 4c 61 6e 64 61 75 | 20 3c 6d 6c 61 6e 64 61 |t Landau| <mlanda|
|000000d0| 75 40 64 69 61 6d 6f 6e | 64 2e 62 62 6e 2e 63 6f |u@diamon|d.bbn.co|
|000000e0| 6d 3e 0a 50 6f 73 74 69 | 6e 67 2d 6e 75 6d 62 65 |m>.Posti|ng-numbe|
|000000f0| 72 3a 20 56 6f 6c 75 6d | 65 20 32 31 2c 20 49 73 |r: Volum|e 21, Is|
|00000100| 73 75 65 20 31 30 32 0a | 41 72 63 68 69 76 65 2d |sue 102.|Archive-|
|00000110| 6e 61 6d 65 3a 20 65 78 | 65 62 79 74 65 5f 74 6f |name: ex|ebyte_to|
|00000120| 63 0a 0a 45 78 65 74 6f | 63 20 69 73 20 61 20 70 |c..Exeto|c is a p|
|00000130| 72 6f 67 72 61 6d 20 74 | 68 61 74 20 61 6c 6c 6f |rogram t|hat allo|
|00000140| 77 73 20 79 6f 75 20 74 | 6f 20 77 72 69 74 65 20 |ws you t|o write |
|00000150| 61 20 74 61 62 6c 65 20 | 6f 66 20 63 6f 6e 74 65 |a table |of conte|
|00000160| 6e 74 73 20 66 69 6c 65 | 20 6f 6e 74 6f 0a 74 68 |nts file| onto.th|
|00000170| 65 20 66 72 6f 6e 74 20 | 6f 66 20 61 20 32 47 42 |e front |of a 2GB|
|00000180| 20 68 65 6c 69 63 61 6c | 20 73 63 61 6e 20 74 61 | helical| scan ta|
|00000190| 70 65 2c 20 72 65 61 64 | 20 69 74 20 62 61 63 6b |pe, read| it back|
|000001a0| 20 6c 61 74 65 72 2c 20 | 61 6e 64 20 75 70 64 61 | later, |and upda|
|000001b0| 74 65 20 69 74 0a 77 69 | 74 68 6f 75 74 20 64 69 |te it.wi|thout di|
|000001c0| 73 74 75 72 62 69 6e 67 | 20 74 68 65 20 6f 74 68 |sturbing| the oth|
|000001d0| 65 72 20 63 6f 6e 74 65 | 6e 74 73 20 6f 66 20 74 |er conte|nts of t|
|000001e0| 68 65 20 74 61 70 65 2e | 0a 0a 49 74 20 64 6f 65 |he tape.|..It doe|
|000001f0| 73 20 74 68 69 73 20 62 | 79 20 72 65 73 65 72 76 |s this b|y reserv|
|00000200| 69 6e 67 20 61 20 66 69 | 78 65 64 20 61 6d 6f 75 |ing a fi|xed amou|
|00000210| 6e 74 20 6f 66 20 73 70 | 61 63 65 20 61 74 20 74 |nt of sp|ace at t|
|00000220| 68 65 20 73 74 61 72 74 | 20 6f 66 20 74 68 65 20 |he start| of the |
|00000230| 74 61 70 65 0a 28 61 62 | 6f 75 74 20 31 30 20 6d |tape.(ab|out 10 m|
|00000240| 65 67 61 62 79 74 65 73 | 20 69 6e 20 74 68 65 20 |egabytes| in the |
|00000250| 63 75 72 72 65 6e 74 20 | 69 6d 70 6c 65 6d 65 6e |current |implemen|
|00000260| 74 61 74 69 6f 6e 29 20 | 74 68 61 74 20 63 61 6e |tation) |that can|
|00000270| 20 62 65 20 75 73 65 64 | 20 74 6f 0a 73 74 6f 72 | be used| to.stor|
|00000280| 65 20 69 6e 66 6f 72 6d | 61 74 69 6f 6e 20 61 62 |e inform|ation ab|
|00000290| 6f 75 74 20 74 68 65 20 | 63 6f 6e 74 65 6e 74 73 |out the |contents|
|000002a0| 20 6f 66 20 74 68 65 20 | 74 61 70 65 2e 20 20 41 | of the |tape. A|
|000002b0| 62 6f 75 74 20 32 20 6d | 65 67 61 62 79 74 65 73 |bout 2 m|egabytes|
|000002c0| 20 6f 66 0a 74 68 69 73 | 20 73 70 61 63 65 20 69 | of.this| space i|
|000002d0| 73 20 61 76 61 69 6c 61 | 62 6c 65 20 66 6f 72 20 |s availa|ble for |
|000002e0| 6b 65 65 70 69 6e 67 20 | 74 68 65 20 74 61 62 6c |keeping |the tabl|
|000002f0| 65 20 6f 66 20 63 6f 6e | 74 65 6e 74 73 2e 20 20 |e of con|tents. |
|00000300| 54 68 65 20 72 65 73 74 | 20 61 63 74 73 0a 61 73 |The rest| acts.as|
|00000310| 20 61 20 62 75 66 66 65 | 72 20 73 70 61 63 65 20 | a buffe|r space |
|00000320| 62 65 74 77 65 65 6e 20 | 74 68 65 20 65 6e 64 20 |between |the end |
|00000330| 6f 66 20 74 68 65 20 74 | 61 62 6c 65 20 6f 66 20 |of the t|able of |
|00000340| 63 6f 6e 74 65 6e 74 73 | 20 61 6e 64 20 74 68 65 |contents| and the|
|00000350| 20 66 69 72 73 74 0a 64 | 61 74 61 20 66 69 6c 65 | first.d|ata file|
|00000360| 20 6f 6e 20 74 68 65 20 | 74 61 70 65 2e 0a 0a 23 | on the |tape...#|
|00000370| 21 20 2f 62 69 6e 2f 73 | 68 0a 23 20 54 68 69 73 |! /bin/s|h.# This|
|00000380| 20 69 73 20 61 20 73 68 | 65 6c 6c 20 61 72 63 68 | is a sh|ell arch|
|00000390| 69 76 65 2e 20 20 52 65 | 6d 6f 76 65 20 61 6e 79 |ive. Re|move any|
|000003a0| 74 68 69 6e 67 20 62 65 | 66 6f 72 65 20 74 68 69 |thing be|fore thi|
|000003b0| 73 20 6c 69 6e 65 2c 20 | 74 68 65 6e 20 75 6e 70 |s line, |then unp|
|000003c0| 61 63 6b 0a 23 20 69 74 | 20 62 79 20 73 61 76 69 |ack.# it| by savi|
|000003d0| 6e 67 20 69 74 20 69 6e | 74 6f 20 61 20 66 69 6c |ng it in|to a fil|
|000003e0| 65 20 61 6e 64 20 74 79 | 70 69 6e 67 20 22 73 68 |e and ty|ping "sh|
|000003f0| 20 66 69 6c 65 22 2e 20 | 20 54 6f 20 6f 76 65 72 | file". | To over|
|00000400| 77 72 69 74 65 20 65 78 | 69 73 74 69 6e 67 0a 23 |write ex|isting.#|
|00000410| 20 66 69 6c 65 73 2c 20 | 74 79 70 65 20 22 73 68 | files, |type "sh|
|00000420| 20 66 69 6c 65 20 2d 63 | 22 2e 20 20 59 6f 75 20 | file -c|". You |
|00000430| 63 61 6e 20 61 6c 73 6f | 20 66 65 65 64 20 74 68 |can also| feed th|
|00000440| 69 73 20 61 73 20 73 74 | 61 6e 64 61 72 64 20 69 |is as st|andard i|
|00000450| 6e 70 75 74 20 76 69 61 | 0a 23 20 75 6e 73 68 61 |nput via|.# unsha|
|00000460| 72 2c 20 6f 72 20 62 79 | 20 74 79 70 69 6e 67 20 |r, or by| typing |
|00000470| 22 73 68 20 3c 66 69 6c | 65 22 2c 20 65 2e 67 2e |"sh <fil|e", e.g.|
|00000480| 2e 20 20 49 66 20 74 68 | 69 73 20 61 72 63 68 69 |. If th|is archi|
|00000490| 76 65 20 69 73 20 63 6f | 6d 70 6c 65 74 65 2c 20 |ve is co|mplete, |
|000004a0| 79 6f 75 0a 23 20 77 69 | 6c 6c 20 73 65 65 20 74 |you.# wi|ll see t|
|000004b0| 68 65 20 66 6f 6c 6c 6f | 77 69 6e 67 20 6d 65 73 |he follo|wing mes|
|000004c0| 73 61 67 65 20 61 74 20 | 74 68 65 20 65 6e 64 3a |sage at |the end:|
|000004d0| 0a 23 09 09 22 45 6e 64 | 20 6f 66 20 73 68 65 6c |.#.."End| of shel|
|000004e0| 6c 20 61 72 63 68 69 76 | 65 2e 22 0a 23 20 43 6f |l archiv|e.".# Co|
|000004f0| 6e 74 65 6e 74 73 3a 20 | 20 4d 61 6b 65 66 69 6c |ntents: | Makefil|
|00000500| 65 20 65 78 65 74 6f 63 | 2e 63 20 73 6d 74 6f 70 |e exetoc|.c smtop|
|00000510| 73 2e 63 20 65 78 69 74 | 63 6f 64 65 73 2e 68 20 |s.c exit|codes.h |
|00000520| 73 6d 74 69 6f 2e 68 20 | 73 6d 74 6f 70 73 2e 68 |smtio.h |smtops.h|
|00000530| 0a 23 20 20 20 65 78 65 | 74 6f 63 2e 6d 61 6e 0a |.# exe|toc.man.|
|00000540| 23 20 57 72 61 70 70 65 | 64 20 62 79 20 6d 6c 61 |# Wrappe|d by mla|
|00000550| 6e 64 61 75 40 64 69 6c | 69 74 68 69 75 6d 20 6f |ndau@dil|ithium o|
|00000560| 6e 20 57 65 64 20 41 70 | 72 20 31 31 20 31 34 3a |n Wed Ap|r 11 14:|
|00000570| 34 31 3a 30 39 20 31 39 | 39 30 0a 50 41 54 48 3d |41:09 19|90.PATH=|
|00000580| 2f 62 69 6e 3a 2f 75 73 | 72 2f 62 69 6e 3a 2f 75 |/bin:/us|r/bin:/u|
|00000590| 73 72 2f 75 63 62 20 3b | 20 65 78 70 6f 72 74 20 |sr/ucb ;| export |
|000005a0| 50 41 54 48 0a 69 66 20 | 74 65 73 74 20 2d 66 20 |PATH.if |test -f |
|000005b0| 4d 61 6b 65 66 69 6c 65 | 20 2d 61 20 22 24 7b 31 |Makefile| -a "${1|
|000005c0| 7d 22 20 21 3d 20 22 2d | 63 22 20 3b 20 74 68 65 |}" != "-|c" ; the|
|000005d0| 6e 20 0a 20 20 65 63 68 | 6f 20 73 68 61 72 3a 20 |n . ech|o shar: |
|000005e0| 57 69 6c 6c 20 6e 6f 74 | 20 6f 76 65 72 2d 77 72 |Will not| over-wr|
|000005f0| 69 74 65 20 65 78 69 73 | 74 69 6e 67 20 66 69 6c |ite exis|ting fil|
|00000600| 65 20 5c 22 4d 61 6b 65 | 66 69 6c 65 5c 22 0a 65 |e \"Make|file\".e|
|00000610| 6c 73 65 0a 65 63 68 6f | 20 73 68 61 72 3a 20 45 |lse.echo| shar: E|
|00000620| 78 74 72 61 63 74 69 6e | 67 20 5c 22 4d 61 6b 65 |xtractin|g \"Make|
|00000630| 66 69 6c 65 5c 22 20 5c | 28 37 36 35 20 63 68 61 |file\" \|(765 cha|
|00000640| 72 61 63 74 65 72 73 5c | 29 0a 73 65 64 20 22 73 |racters\|).sed "s|
|00000650| 2f 5e 58 2f 2f 22 20 3e | 4d 61 6b 65 66 69 6c 65 |/^X//" >|Makefile|
|00000660| 20 3c 3c 27 45 4e 44 5f | 4f 46 5f 4d 61 6b 65 66 | <<'END_|OF_Makef|
|00000670| 69 6c 65 27 0a 58 53 52 | 43 53 20 3d 20 65 78 65 |ile'.XSR|CS = exe|
|00000680| 74 6f 63 2e 63 20 73 6d | 74 6f 70 73 2e 63 0a 58 |toc.c sm|tops.c.X|
|00000690| 4f 42 4a 53 20 3d 20 65 | 78 65 74 6f 63 2e 6f 20 |OBJS = e|xetoc.o |
|000006a0| 73 6d 74 6f 70 73 2e 6f | 0a 58 48 44 52 53 20 3d |smtops.o|.XHDRS =|
|000006b0| 20 65 78 69 74 63 6f 64 | 65 73 2e 68 20 73 6d 74 | exitcod|es.h smt|
|000006c0| 69 6f 2e 68 20 73 6d 74 | 6f 70 73 2e 68 0a 58 44 |io.h smt|ops.h.XD|
|000006d0| 4f 43 53 20 3d 20 65 78 | 65 74 6f 63 2e 6d 61 6e |OCS = ex|etoc.man|
|000006e0| 0a 58 0a 58 23 20 55 6e | 63 6f 6d 6d 65 6e 74 20 |.X.X# Un|comment |
|000006f0| 74 68 69 73 20 69 66 20 | 79 6f 75 20 68 61 76 65 |this if |you have|
|00000700| 20 6c 69 62 72 6d 74 2e | 61 20 69 6e 73 74 61 6c | librmt.|a instal|
|00000710| 6c 65 64 20 73 6f 6d 65 | 70 6c 61 63 65 0a 58 52 |led some|place.XR|
|00000720| 4d 54 20 20 3d 20 2d 44 | 52 45 4d 4f 54 45 3d 31 |MT = -D|REMOTE=1|
|00000730| 20 2d 49 2f 75 73 72 2f | 6c 6f 63 61 6c 2f 69 6e | -I/usr/|local/in|
|00000740| 63 6c 75 64 65 0a 58 4c | 49 42 53 20 3d 20 2f 75 |clude.XL|IBS = /u|
|00000750| 73 72 2f 6c 6f 63 61 6c | 2f 6c 69 62 2f 6c 69 62 |sr/local|/lib/lib|
|00000760| 72 6d 74 2e 61 0a 58 0a | 58 23 20 55 6e 63 6f 6d |rmt.a.X.|X# Uncom|
|00000770| 6d 65 6e 74 20 74 68 69 | 73 20 69 66 20 79 6f 75 |ment thi|s if you|
|00000780| 20 44 4f 4e 27 54 20 68 | 61 76 65 20 6c 69 62 72 | DON'T h|ave libr|
|00000790| 6d 74 2e 61 20 69 6e 73 | 74 61 6c 6c 65 64 20 73 |mt.a ins|talled s|
|000007a0| 6f 6d 65 70 6c 61 63 65 | 0a 58 23 52 4d 54 20 20 |omeplace|.X#RMT |
|000007b0| 3d 0a 58 23 4c 49 42 53 | 20 3d 0a 58 0a 58 43 46 |=.X#LIBS| =.X.XCF|
|000007c0| 4c 41 47 53 20 3d 20 24 | 28 52 4d 54 29 20 2d 4f |LAGS = $|(RMT) -O|
|000007d0| 0a 58 0a 58 42 49 4e 44 | 49 52 20 3d 20 2f 75 73 |.X.XBIND|IR = /us|
|000007e0| 72 2f 6c 6f 63 61 6c 2f | 62 69 6e 0a 58 4d 41 4e |r/local/|bin.XMAN|
|000007f0| 44 49 52 20 3d 20 2f 75 | 73 72 2f 6c 6f 63 61 6c |DIR = /u|sr/local|
|00000800| 2f 6d 61 6e 2f 6d 61 6e | 31 0a 58 4d 41 4e 45 58 |/man/man|1.XMANEX|
|00000810| 54 20 3d 20 31 0a 58 0a | 58 65 78 65 74 6f 63 3a |T = 1.X.|Xexetoc:|
|00000820| 20 24 28 4f 42 4a 53 29 | 0a 58 09 63 63 20 24 28 | $(OBJS)|.X.cc $(|
|00000830| 43 46 4c 41 47 53 29 20 | 2d 6f 20 65 78 65 74 6f |CFLAGS) |-o exeto|
|00000840| 63 20 24 28 4f 42 4a 53 | 29 20 24 28 4c 49 42 53 |c $(OBJS|) $(LIBS|
|00000850| 29 0a 58 0a 58 69 6e 73 | 74 61 6c 6c 3a 20 65 78 |).X.Xins|tall: ex|
|00000860| 65 74 6f 63 0a 58 09 69 | 6e 73 74 61 6c 6c 20 2d |etoc.X.i|nstall -|
|00000870| 73 20 65 78 65 74 6f 63 | 20 24 28 42 49 4e 44 49 |s exetoc| $(BINDI|
|00000880| 52 29 0a 58 09 63 70 20 | 65 78 65 74 6f 63 2e 6d |R).X.cp |exetoc.m|
|00000890| 61 6e 20 24 28 4d 41 4e | 44 49 52 29 2f 65 78 65 |an $(MAN|DIR)/exe|
|000008a0| 74 6f 63 2e 24 28 4d 41 | 4e 45 58 54 29 0a 58 0a |toc.$(MA|NEXT).X.|
|000008b0| 58 63 6c 65 61 6e 3a 0a | 58 09 2f 62 69 6e 2f 72 |Xclean:.|X./bin/r|
|000008c0| 6d 20 2d 66 20 65 78 65 | 74 6f 63 20 61 2e 6f 75 |m -f exe|toc a.ou|
|000008d0| 74 20 24 28 4f 42 4a 53 | 29 20 63 6f 72 65 20 2a |t $(OBJS|) core *|
|000008e0| 2e 42 41 4b 20 2a 2e 43 | 4b 50 0a 58 0a 58 73 68 |.BAK *.C|KP.X.Xsh|
|000008f0| 61 72 3a 0a 58 09 73 68 | 61 72 20 4d 61 6b 65 66 |ar:.X.sh|ar Makef|
|00000900| 69 6c 65 20 24 28 53 52 | 43 53 29 20 24 28 48 44 |ile $(SR|CS) $(HD|
|00000910| 52 53 29 20 24 28 44 4f | 43 53 29 20 3e 65 78 65 |RS) $(DO|CS) >exe|
|00000920| 74 6f 63 2e 73 68 61 72 | 0a 58 0a 58 73 61 62 65 |toc.shar|.X.Xsabe|
|00000930| 72 3a 0a 58 09 23 20 6c | 6f 61 64 20 24 28 53 52 |r:.X.# l|oad $(SR|
|00000940| 43 53 29 0a 58 0a 58 0a | 58 65 78 65 74 6f 63 2e |CS).X.X.|Xexetoc.|
|00000950| 6f 3a 20 65 78 69 74 63 | 6f 64 65 73 2e 68 20 73 |o: exitc|odes.h s|
|00000960| 6d 74 69 6f 2e 68 20 73 | 6d 74 6f 70 73 2e 68 0a |mtio.h s|mtops.h.|
|00000970| 58 73 6d 74 6f 70 73 2e | 6f 3a 20 65 78 69 74 63 |Xsmtops.|o: exitc|
|00000980| 6f 64 65 73 2e 68 20 73 | 6d 74 69 6f 2e 68 20 73 |odes.h s|mtio.h s|
|00000990| 6d 74 6f 70 73 2e 68 0a | 45 4e 44 5f 4f 46 5f 4d |mtops.h.|END_OF_M|
|000009a0| 61 6b 65 66 69 6c 65 0a | 69 66 20 74 65 73 74 20 |akefile.|if test |
|000009b0| 37 36 35 20 2d 6e 65 20 | 60 77 63 20 2d 63 20 3c |765 -ne |`wc -c <|
|000009c0| 4d 61 6b 65 66 69 6c 65 | 60 3b 20 74 68 65 6e 0a |Makefile|`; then.|
|000009d0| 20 20 20 20 65 63 68 6f | 20 73 68 61 72 3a 20 5c | echo| shar: \|
|000009e0| 22 4d 61 6b 65 66 69 6c | 65 5c 22 20 75 6e 70 61 |"Makefil|e\" unpa|
|000009f0| 63 6b 65 64 20 77 69 74 | 68 20 77 72 6f 6e 67 20 |cked wit|h wrong |
|00000a00| 73 69 7a 65 21 0a 66 69 | 0a 23 20 65 6e 64 20 6f |size!.fi|.# end o|
|00000a10| 66 20 6f 76 65 72 77 72 | 69 74 69 6e 67 20 63 68 |f overwr|iting ch|
|00000a20| 65 63 6b 0a 66 69 0a 69 | 66 20 74 65 73 74 20 2d |eck.fi.i|f test -|
|00000a30| 66 20 65 78 65 74 6f 63 | 2e 63 20 2d 61 20 22 24 |f exetoc|.c -a "$|
|00000a40| 7b 31 7d 22 20 21 3d 20 | 22 2d 63 22 20 3b 20 74 |{1}" != |"-c" ; t|
|00000a50| 68 65 6e 20 0a 20 20 65 | 63 68 6f 20 73 68 61 72 |hen . e|cho shar|
|00000a60| 3a 20 57 69 6c 6c 20 6e | 6f 74 20 6f 76 65 72 2d |: Will n|ot over-|
|00000a70| 77 72 69 74 65 20 65 78 | 69 73 74 69 6e 67 20 66 |write ex|isting f|
|00000a80| 69 6c 65 20 5c 22 65 78 | 65 74 6f 63 2e 63 5c 22 |ile \"ex|etoc.c\"|
|00000a90| 0a 65 6c 73 65 0a 65 63 | 68 6f 20 73 68 61 72 3a |.else.ec|ho shar:|
|00000aa0| 20 45 78 74 72 61 63 74 | 69 6e 67 20 5c 22 65 78 | Extract|ing \"ex|
|00000ab0| 65 74 6f 63 2e 63 5c 22 | 20 5c 28 38 30 32 39 20 |etoc.c\"| \(8029 |
|00000ac0| 63 68 61 72 61 63 74 65 | 72 73 5c 29 0a 73 65 64 |characte|rs\).sed|
|00000ad0| 20 22 73 2f 5e 58 2f 2f | 22 20 3e 65 78 65 74 6f | "s/^X//|" >exeto|
|00000ae0| 63 2e 63 20 3c 3c 27 45 | 4e 44 5f 4f 46 5f 65 78 |c.c <<'E|ND_OF_ex|
|00000af0| 65 74 6f 63 2e 63 27 0a | 58 2f 2a 20 0a 58 20 2a |etoc.c'.|X/* .X *|
|00000b00| 20 65 78 65 74 6f 63 2e | 63 20 20 2d 2d 20 20 41 | exetoc.|c -- A|
|00000b10| 20 70 72 6f 67 72 61 6d | 20 74 6f 20 72 65 61 64 | program| to read|
|00000b20| 2c 20 77 72 69 74 65 2c | 20 61 6e 64 20 72 65 77 |, write,| and rew|
|00000b30| 72 69 74 65 20 74 61 62 | 6c 65 73 20 6f 66 20 63 |rite tab|les of c|
|00000b40| 6f 6e 74 65 6e 74 73 0a | 58 20 2a 20 09 09 20 6f |ontents.|X * .. o|
|00000b50| 6e 20 74 61 70 65 73 20 | 69 6e 20 61 6e 20 65 78 |n tapes |in an ex|
|00000b60| 65 62 79 74 65 20 74 61 | 70 65 20 64 72 69 76 65 |ebyte ta|pe drive|
|00000b70| 2e 0a 58 20 2a 20 0a 58 | 20 2a 20 55 53 41 47 45 |..X * .X| * USAGE|
|00000b80| 3a 09 65 78 65 74 6f 63 | 20 5b 2d 74 7c 66 20 74 |:.exetoc| [-t|f t|
|00000b90| 61 70 65 5d 20 5b 2d 67 | 20 66 69 6c 65 5d 20 5b |ape] [-g| file] [|
|00000ba0| 2d 70 20 66 69 6c 65 5d | 20 5b 2d 69 5d 20 5b 2d |-p file]| [-i] [-|
|00000bb0| 76 5d 20 5b 2d 71 5d 0a | 58 20 2a 20 0a 58 20 2a |v] [-q].|X * .X *|
|00000bc0| 20 09 09 09 2d 74 20 73 | 70 65 63 69 66 69 65 73 | ...-t s|pecifies|
|00000bd0| 20 74 68 65 20 74 61 70 | 65 20 64 72 69 76 65 2c | the tap|e drive,|
|00000be0| 20 64 65 66 61 75 6c 74 | 20 69 73 20 2f 64 65 76 | default| is /dev|
|00000bf0| 2f 72 73 6d 74 30 0a 58 | 20 2a 09 09 09 2d 66 20 |/rsmt0.X| *...-f |
|00000c00| 69 73 20 61 20 73 79 6e | 6f 6e 79 6d 20 66 6f 72 |is a syn|onym for|
|00000c10| 20 2d 74 2c 20 61 20 6c | 61 20 6d 74 2e 0a 58 20 | -t, a l|a mt..X |
|00000c20| 2a 20 09 09 09 2d 67 20 | 67 65 74 73 20 74 68 65 |* ...-g |gets the|
|00000c30| 20 74 61 62 6c 65 20 6f | 66 20 63 6f 6e 74 65 6e | table o|f conten|
|00000c40| 74 73 20 66 72 6f 6d 20 | 74 68 65 20 74 61 70 65 |ts from |the tape|
|00000c50| 20 61 6e 64 0a 58 20 2a | 20 09 09 09 09 73 74 69 | and.X *| ....sti|
|00000c60| 63 6b 73 20 69 74 20 69 | 6e 74 6f 20 22 66 69 6c |cks it i|nto "fil|
|00000c70| 65 22 2c 20 77 68 69 63 | 68 20 6d 61 79 20 62 65 |e", whic|h may be|
|00000c80| 20 22 2d 22 0a 58 20 2a | 20 09 09 09 09 66 6f 72 | "-".X *| ....for|
|00000c90| 20 73 74 61 6e 64 61 72 | 64 20 6f 75 74 70 75 74 | standar|d output|
|00000ca0| 2e 0a 58 20 2a 20 09 09 | 09 2d 70 20 70 75 74 73 |..X * ..|.-p puts|
|00000cb0| 20 74 68 65 20 74 61 62 | 6c 65 20 6f 66 20 63 6f | the tab|le of co|
|00000cc0| 6e 74 65 6e 74 73 20 63 | 6f 6e 74 61 69 6e 65 64 |ntents c|ontained|
|00000cd0| 20 69 6e 20 22 66 69 6c | 65 22 0a 58 20 2a 20 09 | in "fil|e".X * .|
|00000ce0| 09 09 09 6f 6e 74 6f 20 | 74 68 65 20 66 72 6f 6e |...onto |the fron|
|00000cf0| 74 20 6f 66 20 74 68 65 | 20 74 61 70 65 2e 20 20 |t of the| tape. |
|00000d00| 59 6f 75 20 63 61 6e 20 | 75 73 65 0a 58 20 2a 20 |You can |use.X * |
|00000d10| 09 09 09 09 22 2d 22 20 | 74 6f 20 74 61 6b 65 20 |...."-" |to take |
|00000d20| 74 68 65 20 74 61 62 6c | 65 20 6f 66 20 63 6f 6e |the tabl|e of con|
|00000d30| 74 65 6e 74 73 20 66 72 | 6f 6d 0a 58 20 2a 20 09 |tents fr|om.X * .|
|00000d40| 09 09 09 73 74 61 6e 64 | 61 72 64 20 69 6e 70 75 |...stand|ard inpu|
|00000d50| 74 2e 0a 58 20 2a 20 09 | 09 09 2d 69 20 69 6e 69 |t..X * .|..-i ini|
|00000d60| 74 69 61 6c 69 7a 65 73 | 20 74 68 65 20 74 61 70 |tializes| the tap|
|00000d70| 65 20 62 79 20 63 72 65 | 61 74 69 6e 67 20 61 20 |e by cre|ating a |
|00000d80| 62 6c 61 6e 6b 20 74 61 | 62 6c 65 0a 58 20 2a 20 |blank ta|ble.X * |
|00000d90| 09 09 09 09 6f 66 20 63 | 6f 6e 74 65 6e 74 73 2e |....of c|ontents.|
|00000da0| 0a 58 20 2a 20 09 09 09 | 2d 76 20 76 65 72 69 66 |.X * ...|-v verif|
|00000db0| 69 65 73 20 74 68 61 74 | 20 74 68 69 73 20 74 61 |ies that| this ta|
|00000dc0| 70 65 20 68 61 73 20 62 | 65 65 6e 20 69 6e 69 74 |pe has b|een init|
|00000dd0| 69 61 6c 69 7a 65 64 2e | 0a 58 20 2a 20 09 09 09 |ialized.|.X * ...|
|00000de0| 2d 71 20 63 61 75 73 65 | 73 20 74 68 65 20 70 72 |-q cause|s the pr|
|00000df0| 6f 67 72 61 6d 20 74 6f | 20 77 6f 72 6b 20 71 75 |ogram to| work qu|
|00000e00| 69 65 74 6c 79 2e 0a 58 | 20 2a 20 0a 58 20 2a 20 |ietly..X| * .X * |
|00000e10| 09 09 59 6f 75 20 4d 55 | 53 54 20 70 72 6f 76 69 |..You MU|ST provi|
|00000e20| 64 65 20 65 78 61 63 74 | 6c 79 20 6f 6e 65 20 6f |de exact|ly one o|
|00000e30| 66 20 74 68 65 20 2d 69 | 2c 20 2d 67 2c 20 2d 70 |f the -i|, -g, -p|
|00000e40| 2c 20 6f 72 20 2d 76 20 | 66 6c 61 67 73 2e 0a 58 |, or -v |flags..X|
|00000e50| 20 2a 2f 0a 58 20 0a 58 | 23 69 66 20 21 6c 69 6e | */.X .X|#if !lin|
|00000e60| 74 20 26 26 20 21 53 41 | 42 45 52 0a 58 73 74 61 |t && !SA|BER.Xsta|
|00000e70| 74 69 63 20 63 68 61 72 | 20 52 63 73 49 64 5b 5d |tic char| RcsId[]|
|00000e80| 20 3d 20 22 24 48 65 61 | 64 65 72 3a 20 65 78 65 | = "$Hea|der: exe|
|00000e90| 74 6f 63 2e 63 2c 76 20 | 31 2e 33 20 38 39 2f 31 |toc.c,v |1.3 89/1|
|00000ea0| 30 2f 32 37 20 31 36 3a | 31 34 3a 33 34 20 6d 6c |0/27 16:|14:34 ml|
|00000eb0| 61 6e 64 61 75 20 45 78 | 70 20 24 22 3b 0a 58 23 |andau Ex|p $";.X#|
|00000ec0| 65 6e 64 69 66 0a 58 0a | 58 23 69 6e 63 6c 75 64 |endif.X.|X#includ|
|00000ed0| 65 20 3c 73 74 64 69 6f | 2e 68 3e 0a 58 23 69 6e |e <stdio|.h>.X#in|
|00000ee0| 63 6c 75 64 65 20 3c 66 | 63 6e 74 6c 2e 68 3e 0a |clude <f|cntl.h>.|
|00000ef0| 58 23 69 6e 63 6c 75 64 | 65 20 3c 73 79 73 2f 74 |X#includ|e <sys/t|
|00000f00| 79 70 65 73 2e 68 3e 0a | 58 23 69 6e 63 6c 75 64 |ypes.h>.|X#includ|
|00000f10| 65 20 3c 73 79 73 2f 73 | 74 61 74 2e 68 3e 0a 58 |e <sys/s|tat.h>.X|
|00000f20| 0a 58 23 69 6e 63 6c 75 | 64 65 20 22 65 78 69 74 |.X#inclu|de "exit|
|00000f30| 63 6f 64 65 73 2e 68 22 | 0a 58 23 69 6e 63 6c 75 |codes.h"|.X#inclu|
|00000f40| 64 65 20 22 73 6d 74 6f | 70 73 2e 68 22 0a 58 0a |de "smto|ps.h".X.|
|00000f50| 58 23 64 65 66 69 6e 65 | 09 46 4f 52 57 41 52 44 |X#define|.FORWARD|
|00000f60| 09 09 2f 2a 20 6e 6f 74 | 68 69 6e 67 20 2a 2f 0a |../* not|hing */.|
|00000f70| 58 0a 58 23 64 65 66 69 | 6e 65 20 4b 42 79 74 65 |X.X#defi|ne KByte|
|00000f80| 73 28 6e 29 09 28 6e 20 | 2a 20 31 30 32 34 29 0a |s(n).(n |* 1024).|
|00000f90| 58 23 64 65 66 69 6e 65 | 20 4d 42 79 74 65 73 28 |X#define| MBytes(|
|00000fa0| 6e 29 09 28 31 30 32 34 | 20 2a 20 4b 42 79 74 65 |n).(1024| * KByte|
|00000fb0| 73 28 6e 29 29 0a 58 23 | 64 65 66 69 6e 65 20 4d |s(n)).X#|define M|
|00000fc0| 49 4e 28 61 2c 20 62 29 | 09 28 28 61 29 20 3c 20 |IN(a, b)|.((a) < |
|00000fd0| 28 62 29 20 3f 20 28 61 | 29 20 3a 20 28 62 29 29 |(b) ? (a|) : (b))|
|00000fe0| 0a 58 23 64 65 66 69 6e | 65 09 73 74 72 65 71 28 |.X#defin|e.streq(|
|00000ff0| 73 31 2c 20 73 32 29 09 | 28 21 73 74 72 63 6d 70 |s1, s2).|(!strcmp|
|00001000| 28 73 31 2c 20 73 32 29 | 29 0a 58 0a 58 23 64 65 |(s1, s2)|).X.X#de|
|00001010| 66 69 6e 65 09 49 4f 42 | 55 46 5f 53 49 5a 45 09 |fine.IOB|UF_SIZE.|
|00001020| 4b 42 79 74 65 73 28 36 | 32 29 09 2f 2a 20 45 78 |KBytes(6|2)./* Ex|
|00001030| 65 62 79 74 65 20 6c 69 | 6b 65 73 20 36 32 4b 42 |ebyte li|kes 62KB|
|00001040| 20 63 68 75 6e 6b 73 20 | 2a 2f 0a 58 23 64 65 66 | chunks |*/.X#def|
|00001050| 69 6e 65 20 54 4f 43 5f | 53 49 5a 45 20 09 4d 42 |ine TOC_|SIZE .MB|
|00001060| 79 74 65 73 28 31 30 29 | 09 2f 2a 20 54 4f 43 20 |ytes(10)|./* TOC |
|00001070| 6f 63 63 75 70 69 65 64 | 20 31 30 20 4d 42 20 6f |occupied| 10 MB o|
|00001080| 6e 20 74 68 65 20 74 61 | 70 65 20 2a 2f 0a 58 23 |n the ta|pe */.X#|
|00001090| 64 65 66 69 6e 65 09 54 | 4f 43 5f 55 53 45 41 42 |define.T|OC_USEAB|
|000010a0| 4c 45 09 4d 42 79 74 65 | 73 28 32 29 09 2f 2a 20 |LE.MByte|s(2)./* |
|000010b0| 41 62 6f 75 74 20 32 20 | 4d 42 20 6f 66 20 69 74 |About 2 |MB of it|
|000010c0| 20 63 61 6e 20 62 65 20 | 75 73 65 64 20 2a 2f 0a | can be |used */.|
|000010d0| 58 0a 58 23 64 65 66 69 | 6e 65 20 54 4f 43 5f 4d |X.X#defi|ne TOC_M|
|000010e0| 41 52 4b 45 52 09 22 5b | 45 78 65 54 4f 43 20 54 |ARKER."[|ExeTOC T|
|000010f0| 61 62 6c 65 20 6f 66 20 | 43 6f 6e 74 65 6e 74 73 |able of |Contents|
|00001100| 5d 22 0a 58 0a 58 23 64 | 65 66 69 6e 65 20 4f 50 |]".X.X#d|efine OP|
|00001110| 5f 4e 4f 4e 45 09 09 30 | 0a 58 23 64 65 66 69 6e |_NONE..0|.X#defin|
|00001120| 65 20 4f 50 5f 56 45 52 | 49 46 59 09 31 0a 58 23 |e OP_VER|IFY.1.X#|
|00001130| 64 65 66 69 6e 65 20 4f | 50 5f 49 4e 49 54 09 09 |define O|P_INIT..|
|00001140| 32 0a 58 23 64 65 66 69 | 6e 65 20 4f 50 5f 46 45 |2.X#defi|ne OP_FE|
|00001150| 54 43 48 09 33 0a 58 23 | 64 65 66 69 6e 65 20 4f |TCH.3.X#|define O|
|00001160| 50 5f 53 54 4f 52 45 09 | 34 0a 58 0a 58 2f 2a 20 |P_STORE.|4.X.X/* |
|00001170| 47 65 74 6f 70 74 20 73 | 74 75 66 66 20 2a 2f 0a |Getopt s|tuff */.|
|00001180| 58 65 78 74 65 72 6e 09 | 63 68 61 72 09 2a 6f 70 |Xextern.|char.*op|
|00001190| 74 61 72 67 3b 0a 58 65 | 78 74 65 72 6e 09 69 6e |targ;.Xe|xtern.in|
|000011a0| 74 09 6f 70 74 69 6e 64 | 3b 0a 58 65 78 74 65 72 |t.optind|;.Xexter|
|000011b0| 6e 09 69 6e 74 09 6f 70 | 74 65 72 72 3b 0a 58 0a |n.int.op|terr;.X.|
|000011c0| 58 2f 2a 20 4c 69 6e 6b | 65 64 20 69 6e 20 6c 61 |X/* Link|ed in la|
|000011d0| 74 65 72 20 2a 2f 0a 58 | 65 78 74 65 72 6e 09 63 |ter */.X|extern.c|
|000011e0| 68 61 72 09 2a 67 65 74 | 65 6e 76 28 29 3b 0a 58 |har.*get|env();.X|
|000011f0| 65 78 74 65 72 6e 09 63 | 68 61 72 09 2a 72 69 6e |extern.c|har.*rin|
|00001200| 64 65 78 28 29 3b 0a 58 | 0a 58 2f 2a 20 53 68 75 |dex();.X|.X/* Shu|
|00001210| 74 20 53 61 62 65 72 20 | 75 70 20 2a 2f 0a 58 46 |t Saber |up */.XF|
|00001220| 4f 52 57 41 52 44 20 76 | 6f 69 64 09 75 73 61 67 |ORWARD v|oid.usag|
|00001230| 65 28 29 3b 0a 58 46 4f | 52 57 41 52 44 20 76 6f |e();.XFO|RWARD vo|
|00001240| 69 64 09 73 65 74 5f 6f | 70 65 72 61 74 69 6f 6e |id.set_o|peration|
|00001250| 28 29 3b 0a 58 46 4f 52 | 57 41 52 44 20 76 6f 69 |();.XFOR|WARD voi|
|00001260| 64 09 6d 61 72 6b 5f 74 | 61 70 65 28 29 3b 0a 58 |d.mark_t|ape();.X|
|00001270| 46 4f 52 57 41 52 44 09 | 76 6f 69 64 09 69 6e 69 |FORWARD.|void.ini|
|00001280| 74 69 61 6c 69 7a 65 5f | 74 61 70 65 28 29 3b 0a |tialize_|tape();.|
|00001290| 58 46 4f 52 57 41 52 44 | 20 69 6e 74 09 63 68 65 |XFORWARD| int.che|
|000012a0| 63 6b 5f 74 61 70 65 28 | 29 3b 0a 58 46 4f 52 57 |ck_tape(|);.XFORW|
|000012b0| 41 52 44 20 76 6f 69 64 | 09 74 6f 63 5f 74 6f 5f |ARD void|.toc_to_|
|000012c0| 66 69 6c 65 28 29 3b 0a | 58 46 4f 52 57 41 52 44 |file();.|XFORWARD|
|000012d0| 20 76 6f 69 64 09 74 6f | 63 5f 66 72 6f 6d 5f 66 | void.to|c_from_f|
|000012e0| 69 6c 65 28 29 3b 0a 58 | 46 4f 52 57 41 52 44 20 |ile();.X|FORWARD |
|000012f0| 76 6f 69 64 09 72 65 77 | 69 6e 64 5f 6e 61 6d 65 |void.rew|ind_name|
|00001300| 64 5f 64 65 76 69 63 65 | 28 29 3b 0a 58 0a 58 0a |d_device|();.X.X.|
|00001310| 58 2f 2a 20 4f 6e 6c 79 | 20 6e 65 65 64 20 6f 6e |X/* Only| need on|
|00001320| 65 20 62 69 67 20 62 75 | 66 66 65 72 20 74 6f 20 |e big bu|ffer to |
|00001330| 68 6f 6c 64 20 74 68 65 | 20 74 61 62 6c 65 20 6f |hold the| table o|
|00001340| 66 20 63 6f 6e 74 65 6e | 74 73 20 2a 2f 0a 58 73 |f conten|ts */.Xs|
|00001350| 74 61 74 69 63 20 63 68 | 61 72 20 42 75 66 66 65 |tatic ch|ar Buffe|
|00001360| 72 5b 49 4f 42 55 46 5f | 53 49 5a 45 5d 3b 0a 58 |r[IOBUF_|SIZE];.X|
|00001370| 73 74 61 74 69 63 20 69 | 6e 74 20 20 51 75 69 65 |static i|nt Quie|
|00001380| 74 20 3d 20 30 3b 0a 58 | 0a 58 6d 61 69 6e 28 61 |t = 0;.X|.Xmain(a|
|00001390| 72 67 63 2c 20 61 72 67 | 76 29 0a 58 69 6e 74 09 |rgc, arg|v).Xint.|
|000013a0| 61 72 67 63 3b 0a 58 63 | 68 61 72 09 2a 2a 61 72 |argc;.Xc|har.**ar|
|000013b0| 67 76 3b 0a 58 7b 20 20 | 20 0a 58 20 20 20 20 69 |gv;.X{ | .X i|
|000013c0| 6e 74 09 20 20 6f 70 74 | 69 6f 6e 3b 0a 58 20 20 |nt. opt|ion;.X |
|000013d0| 20 20 69 6e 74 09 20 20 | 6f 70 65 72 61 74 69 6f | int. |operatio|
|000013e0| 6e 20 3d 20 4f 50 5f 4e | 4f 4e 45 3b 0a 58 20 20 |n = OP_N|ONE;.X |
|000013f0| 20 20 63 68 61 72 20 2a | 74 61 70 65 6e 61 6d 65 | char *|tapename|
|00001400| 20 3d 20 22 2f 64 65 76 | 2f 72 73 6d 74 30 22 3b | = "/dev|/rsmt0";|
|00001410| 0a 58 20 20 20 20 69 6e | 74 09 20 20 68 61 73 74 |.X in|t. hast|
|00001420| 6f 63 3b 0a 58 20 20 20 | 20 69 6e 74 20 20 20 74 |oc;.X | int t|
|00001430| 61 70 65 66 64 3b 0a 58 | 20 20 20 20 69 6e 74 09 |apefd;.X| int.|
|00001440| 20 20 74 6f 63 66 64 3b | 0a 58 20 20 20 20 0a 58 | tocfd;|.X .X|
|00001450| 20 20 20 20 6f 70 74 65 | 72 72 20 3d 20 30 3b 0a | opte|rr = 0;.|
|00001460| 58 20 20 20 20 69 66 20 | 28 28 74 61 70 65 6e 61 |X if |((tapena|
|00001470| 6d 65 20 3d 20 67 65 74 | 65 6e 76 28 22 45 58 45 |me = get|env("EXE|
|00001480| 42 59 54 45 22 29 29 20 | 3d 3d 20 4e 55 4c 4c 29 |BYTE")) |== NULL)|
|00001490| 0a 58 09 74 61 70 65 6e | 61 6d 65 20 3d 20 22 2f |.X.tapen|ame = "/|
|000014a0| 64 65 76 2f 72 73 6d 74 | 30 22 3b 0a 58 20 20 20 |dev/rsmt|0";.X |
|000014b0| 20 77 68 69 6c 65 20 28 | 28 6f 70 74 69 6f 6e 20 | while (|(option |
|000014c0| 3d 20 67 65 74 6f 70 74 | 28 61 72 67 63 2c 20 61 |= getopt|(argc, a|
|000014d0| 72 67 76 2c 20 22 74 3a | 66 3a 67 3a 70 3a 69 76 |rgv, "t:|f:g:p:iv|
|000014e0| 71 22 29 29 20 21 3d 20 | 45 4f 46 29 0a 58 20 20 |q")) != |EOF).X |
|000014f0| 20 20 7b 20 20 20 0a 58 | 09 73 77 69 74 63 68 20 | { .X|.switch |
|00001500| 28 6f 70 74 69 6f 6e 29 | 0a 58 09 7b 20 20 20 0a |(option)|.X.{ .|
|00001510| 58 09 20 20 63 61 73 65 | 20 27 74 27 3a 0a 58 09 |X. case| 't':.X.|
|00001520| 20 20 63 61 73 65 20 27 | 66 27 3a 0a 58 09 20 20 | case '|f':.X. |
|00001530| 20 20 74 61 70 65 6e 61 | 6d 65 20 3d 20 6f 70 74 | tapena|me = opt|
|00001540| 61 72 67 3b 0a 58 09 20 | 20 20 20 62 72 65 61 6b |arg;.X. | break|
|00001550| 3b 0a 58 09 20 20 20 20 | 0a 58 09 20 20 63 61 73 |;.X. |.X. cas|
|00001560| 65 20 27 67 27 3a 0a 58 | 09 20 20 20 20 73 65 74 |e 'g':.X|. set|
|00001570| 5f 6f 70 65 72 61 74 69 | 6f 6e 28 26 6f 70 65 72 |_operati|on(&oper|
|00001580| 61 74 69 6f 6e 2c 20 4f | 50 5f 46 45 54 43 48 29 |ation, O|P_FETCH)|
|00001590| 3b 0a 58 09 20 20 20 20 | 69 66 20 28 73 74 72 65 |;.X. |if (stre|
|000015a0| 71 28 6f 70 74 61 72 67 | 2c 20 22 2d 22 29 29 0a |q(optarg|, "-")).|
|000015b0| 58 09 09 74 6f 63 66 64 | 20 3d 20 66 69 6c 65 6e |X..tocfd| = filen|
|000015c0| 6f 28 73 74 64 6f 75 74 | 29 3b 0a 58 09 20 20 20 |o(stdout|);.X. |
|000015d0| 20 65 6c 73 65 0a 58 09 | 09 74 6f 63 66 64 20 3d | else.X.|.tocfd =|
|000015e0| 20 63 68 65 63 6b 5f 6f | 70 65 6e 28 6f 70 74 61 | check_o|pen(opta|
|000015f0| 72 67 2c 20 4f 5f 57 52 | 4f 4e 4c 59 7c 4f 5f 43 |rg, O_WR|ONLY|O_C|
|00001600| 52 45 41 54 7c 4f 5f 54 | 52 55 4e 43 2c 20 30 36 |REAT|O_T|RUNC, 06|
|00001610| 36 36 29 3b 0a 58 09 20 | 20 20 20 62 72 65 61 6b |66);.X. | break|
|00001620| 3b 0a 58 09 20 20 20 20 | 0a 58 09 20 20 63 61 73 |;.X. |.X. cas|
|00001630| 65 20 27 70 27 3a 0a 58 | 09 20 20 20 20 73 65 74 |e 'p':.X|. set|
|00001640| 5f 6f 70 65 72 61 74 69 | 6f 6e 28 26 6f 70 65 72 |_operati|on(&oper|
|00001650| 61 74 69 6f 6e 2c 20 4f | 50 5f 53 54 4f 52 45 29 |ation, O|P_STORE)|
|00001660| 3b 0a 58 09 20 20 20 20 | 69 66 20 28 73 74 72 65 |;.X. |if (stre|
|00001670| 71 28 6f 70 74 61 72 67 | 2c 20 22 2d 22 29 29 0a |q(optarg|, "-")).|
|00001680| 58 09 09 74 6f 63 66 64 | 20 3d 20 66 69 6c 65 6e |X..tocfd| = filen|
|00001690| 6f 28 73 74 64 69 6e 29 | 3b 0a 58 09 20 20 20 20 |o(stdin)|;.X. |
|000016a0| 65 6c 73 65 20 0a 58 09 | 09 74 6f 63 66 64 20 3d |else .X.|.tocfd =|
|000016b0| 20 63 68 65 63 6b 5f 6f | 70 65 6e 28 6f 70 74 61 | check_o|pen(opta|
|000016c0| 72 67 2c 20 4f 5f 52 44 | 4f 4e 4c 59 2c 20 30 36 |rg, O_RD|ONLY, 06|
|000016d0| 36 36 29 3b 0a 58 09 20 | 20 20 20 62 72 65 61 6b |66);.X. | break|
|000016e0| 3b 0a 58 09 20 20 20 20 | 0a 58 09 20 20 63 61 73 |;.X. |.X. cas|
|000016f0| 65 20 27 69 27 3a 0a 58 | 09 20 20 20 20 73 65 74 |e 'i':.X|. set|
|00001700| 5f 6f 70 65 72 61 74 69 | 6f 6e 28 26 6f 70 65 72 |_operati|on(&oper|
|00001710| 61 74 69 6f 6e 2c 20 4f | 50 5f 49 4e 49 54 29 3b |ation, O|P_INIT);|
|00001720| 0a 58 09 20 20 20 20 62 | 72 65 61 6b 3b 0a 58 09 |.X. b|reak;.X.|
|00001730| 20 20 20 20 0a 58 09 20 | 20 63 61 73 65 20 27 76 | .X. | case 'v|
|00001740| 27 3a 0a 58 09 20 20 20 | 20 73 65 74 5f 6f 70 65 |':.X. | set_ope|
|00001750| 72 61 74 69 6f 6e 28 26 | 6f 70 65 72 61 74 69 6f |ration(&|operatio|
|00001760| 6e 2c 20 4f 50 5f 56 45 | 52 49 46 59 29 3b 0a 58 |n, OP_VE|RIFY);.X|
|00001770| 09 20 20 20 20 62 72 65 | 61 6b 3b 0a 58 09 20 20 |. bre|ak;.X. |
|00001780| 20 20 0a 58 09 20 20 63 | 61 73 65 20 27 71 27 3a | .X. c|ase 'q':|
|00001790| 0a 58 09 20 20 20 20 51 | 75 69 65 74 20 3d 20 31 |.X. Q|uiet = 1|
|000017a0| 3b 0a 58 09 20 20 20 20 | 62 72 65 61 6b 3b 0a 58 |;.X. |break;.X|
|000017b0| 09 20 20 20 20 0a 58 09 | 20 20 64 65 66 61 75 6c |. .X.| defaul|
|000017c0| 74 3a 0a 58 09 20 20 20 | 20 75 73 61 67 65 28 61 |t:.X. | usage(a|
|000017d0| 72 67 76 5b 30 5d 29 3b | 0a 58 09 20 20 20 20 65 |rgv[0]);|.X. e|
|000017e0| 78 69 74 28 45 58 49 54 | 5f 55 53 41 47 45 29 3b |xit(EXIT|_USAGE);|
|000017f0| 0a 58 09 20 20 20 20 2f | 2a 20 4e 4f 54 52 45 41 |.X. /|* NOTREA|
|00001800| 43 48 45 44 20 2a 2f 0a | 58 09 20 20 20 20 62 72 |CHED */.|X. br|
|00001810| 65 61 6b 3b 0a 58 09 7d | 0a 58 20 20 20 20 7d 0a |eak;.X.}|.X }.|
|00001820| 58 20 20 20 20 0a 58 20 | 20 20 20 73 77 69 74 63 |X .X | switc|
|00001830| 68 20 28 6f 70 65 72 61 | 74 69 6f 6e 29 0a 58 20 |h (opera|tion).X |
|00001840| 20 20 20 7b 20 20 20 0a | 58 20 20 20 20 20 20 63 | { .|X c|
|00001850| 61 73 65 20 4f 50 5f 4e | 4f 4e 45 3a 0a 58 09 66 |ase OP_N|ONE:.X.f|
|00001860| 70 75 74 73 28 22 59 6f | 75 20 6d 75 73 74 20 73 |puts("Yo|u must s|
|00001870| 70 65 63 69 66 79 20 6f | 6e 65 20 6f 66 20 2d 67 |pecify o|ne of -g|
|00001880| 2c 20 2d 70 2c 20 2d 69 | 2c 20 6f 72 20 2d 76 5c |, -p, -i|, or -v\|
|00001890| 6e 22 2c 20 73 74 64 65 | 72 72 29 3b 0a 58 09 65 |n", stde|rr);.X.e|
|000018a0| 78 69 74 28 45 58 49 54 | 5f 55 53 41 47 45 29 3b |xit(EXIT|_USAGE);|
|000018b0| 0a 58 09 0a 58 20 20 20 | 20 20 20 63 61 73 65 20 |.X..X | case |
|000018c0| 4f 50 5f 49 4e 49 54 3a | 0a 58 09 74 61 70 65 66 |OP_INIT:|.X.tapef|
|000018d0| 64 20 3d 20 73 6d 74 5f | 6f 70 65 6e 28 74 61 70 |d = smt_|open(tap|
|000018e0| 65 6e 61 6d 65 2c 20 4f | 5f 57 52 4f 4e 4c 59 29 |ename, O|_WRONLY)|
|000018f0| 3b 0a 58 09 69 6e 69 74 | 69 61 6c 69 7a 65 5f 74 |;.X.init|ialize_t|
|00001900| 61 70 65 28 74 61 70 65 | 66 64 29 3b 0a 58 09 73 |ape(tape|fd);.X.s|
|00001910| 6d 74 5f 63 6c 6f 73 65 | 28 74 61 70 65 66 64 29 |mt_close|(tapefd)|
|00001920| 3b 0a 58 09 72 65 77 69 | 6e 64 5f 6e 61 6d 65 64 |;.X.rewi|nd_named|
|00001930| 5f 64 65 76 69 63 65 28 | 74 61 70 65 6e 61 6d 65 |_device(|tapename|
|00001940| 29 3b 0a 58 09 65 78 69 | 74 28 45 58 49 54 5f 4f |);.X.exi|t(EXIT_O|
|00001950| 4b 29 3b 0a 58 09 0a 58 | 20 20 20 20 20 20 63 61 |K);.X..X| ca|
|00001960| 73 65 20 4f 50 5f 56 45 | 52 49 46 59 3a 0a 58 09 |se OP_VE|RIFY:.X.|
|00001970| 74 61 70 65 66 64 20 3d | 20 73 6d 74 5f 6f 70 65 |tapefd =| smt_ope|
|00001980| 6e 28 74 61 70 65 6e 61 | 6d 65 2c 20 4f 5f 52 44 |n(tapena|me, O_RD|
|00001990| 4f 4e 4c 59 29 3b 0a 58 | 09 68 61 73 74 6f 63 20 |ONLY);.X|.hastoc |
|000019a0| 3d 20 63 68 65 63 6b 5f | 74 61 70 65 28 74 61 70 |= check_|tape(tap|
|000019b0| 65 66 64 29 3b 0a 58 09 | 73 6d 74 5f 63 6c 6f 73 |efd);.X.|smt_clos|
|000019c0| 65 28 74 61 70 65 66 64 | 29 3b 0a 58 09 72 65 77 |e(tapefd|);.X.rew|
|000019d0| 69 6e 64 5f 6e 61 6d 65 | 64 5f 64 65 76 69 63 65 |ind_name|d_device|
|000019e0| 28 74 61 70 65 6e 61 6d | 65 29 3b 0a 58 09 69 66 |(tapenam|e);.X.if|
|000019f0| 20 28 21 51 75 69 65 74 | 29 0a 58 09 20 20 20 20 | (!Quiet|).X. |
|00001a00| 70 72 69 6e 74 66 28 22 | 54 61 70 65 20 69 6e 20 |printf("|Tape in |
|00001a10| 25 73 20 25 73 20 61 20 | 6c 61 62 65 6c 65 64 20 |%s %s a |labeled |
|00001a20| 45 78 65 54 4f 43 20 74 | 61 70 65 2e 5c 6e 22 2c |ExeTOC t|ape.\n",|
|00001a30| 20 0a 58 09 09 20 20 20 | 74 61 70 65 6e 61 6d 65 | .X.. |tapename|
|00001a40| 2c 20 68 61 73 74 6f 63 | 20 3f 20 22 69 73 22 20 |, hastoc| ? "is" |
|00001a50| 3a 20 22 69 73 20 6e 6f | 74 22 29 3b 0a 58 09 65 |: "is no|t");.X.e|
|00001a60| 78 69 74 28 68 61 73 74 | 6f 63 20 3f 20 45 58 49 |xit(hast|oc ? EXI|
|00001a70| 54 5f 4f 4b 20 3a 20 45 | 58 49 54 5f 4e 4f 54 4f |T_OK : E|XIT_NOTO|
|00001a80| 43 29 3b 0a 58 09 0a 58 | 20 20 20 20 20 20 63 61 |C);.X..X| ca|
|00001a90| 73 65 20 4f 50 5f 46 45 | 54 43 48 3a 0a 58 09 74 |se OP_FE|TCH:.X.t|
|00001aa0| 61 70 65 66 64 20 3d 20 | 73 6d 74 5f 6f 70 65 6e |apefd = |smt_open|
|00001ab0| 28 74 61 70 65 6e 61 6d | 65 2c 20 4f 5f 52 44 57 |(tapenam|e, O_RDW|
|00001ac0| 52 29 3b 0a 58 09 69 66 | 20 28 21 63 68 65 63 6b |R);.X.if| (!check|
|00001ad0| 5f 74 61 70 65 28 74 61 | 70 65 66 64 29 29 0a 58 |_tape(ta|pefd)).X|
|00001ae0| 09 7b 20 20 20 0a 58 09 | 20 20 20 20 66 70 72 69 |.{ .X.| fpri|
|00001af0| 6e 74 66 28 73 74 64 65 | 72 72 2c 20 22 54 61 70 |ntf(stde|rr, "Tap|
|00001b00| 65 20 69 6e 20 25 73 20 | 69 73 20 6e 6f 74 20 61 |e in %s |is not a|
|00001b10| 20 6c 61 62 65 6c 65 64 | 20 45 78 65 54 4f 43 20 | labeled| ExeTOC |
|00001b20| 74 61 70 65 2e 5c 6e 22 | 2c 20 0a 58 09 09 20 20 |tape.\n"|, .X.. |
|00001b30| 20 09 20 20 20 20 20 74 | 61 70 65 6e 61 6d 65 29 | . t|apename)|
|00001b40| 3b 0a 58 09 20 20 20 20 | 65 78 69 74 28 45 58 49 |;.X. |exit(EXI|
|00001b50| 54 5f 4e 4f 54 4f 43 29 | 3b 0a 58 09 7d 0a 58 09 |T_NOTOC)|;.X.}.X.|
|00001b60| 74 6f 63 5f 74 6f 5f 66 | 69 6c 65 28 74 61 70 65 |toc_to_f|ile(tape|
|00001b70| 66 64 2c 20 74 6f 63 66 | 64 29 3b 0a 58 09 73 6d |fd, tocf|d);.X.sm|
|00001b80| 74 5f 63 6c 6f 73 65 28 | 74 61 70 65 66 64 29 3b |t_close(|tapefd);|
|00001b90| 0a 58 09 72 65 77 69 6e | 64 5f 6e 61 6d 65 64 5f |.X.rewin|d_named_|
|00001ba0| 64 65 76 69 63 65 28 74 | 61 70 65 6e 61 6d 65 29 |device(t|apename)|
|00001bb0| 3b 0a 58 09 69 66 20 28 | 74 6f 63 66 64 20 21 3d |;.X.if (|tocfd !=|
|00001bc0| 20 66 69 6c 65 6e 6f 28 | 73 74 64 6f 75 74 29 29 | fileno(|stdout))|
|00001bd0| 0a 58 09 20 20 20 20 63 | 6c 6f 73 65 28 74 6f 63 |.X. c|lose(toc|
|00001be0| 66 64 29 3b 0a 58 09 65 | 78 69 74 28 45 58 49 54 |fd);.X.e|xit(EXIT|
|00001bf0| 5f 4f 4b 29 3b 0a 58 09 | 0a 58 20 20 20 20 20 20 |_OK);.X.|.X |
|00001c00| 63 61 73 65 20 4f 50 5f | 53 54 4f 52 45 3a 0a 58 |case OP_|STORE:.X|
|00001c10| 09 74 61 70 65 66 64 20 | 3d 20 73 6d 74 5f 6f 70 |.tapefd |= smt_op|
|00001c20| 65 6e 28 74 61 70 65 6e | 61 6d 65 2c 20 4f 5f 52 |en(tapen|ame, O_R|
|00001c30| 44 57 52 29 3b 0a 58 09 | 69 66 20 28 21 63 68 65 |DWR);.X.|if (!che|
|00001c40| 63 6b 5f 74 61 70 65 28 | 74 61 70 65 66 64 29 29 |ck_tape(|tapefd))|
|00001c50| 0a 58 09 7b 20 20 20 0a | 58 09 20 20 20 20 66 70 |.X.{ .|X. fp|
|00001c60| 72 69 6e 74 66 28 73 74 | 64 65 72 72 2c 20 22 54 |rintf(st|derr, "T|
|00001c70| 61 70 65 20 69 6e 20 25 | 73 20 69 73 20 6e 6f 74 |ape in %|s is not|
|00001c80| 20 61 20 6c 61 62 65 6c | 65 64 20 45 78 65 54 4f | a label|ed ExeTO|
|00001c90| 43 20 74 61 70 65 2e 5c | 6e 22 2c 20 0a 58 09 09 |C tape.\|n", .X..|
|00001ca0| 20 20 20 09 20 20 20 20 | 20 74 61 70 65 6e 61 6d | . | tapenam|
|00001cb0| 65 29 3b 0a 58 09 20 20 | 20 20 65 78 69 74 28 45 |e);.X. | exit(E|
|00001cc0| 58 49 54 5f 4e 4f 54 4f | 43 29 3b 0a 58 09 7d 0a |XIT_NOTO|C);.X.}.|
|00001cd0| 58 09 6d 61 72 6b 5f 74 | 61 70 65 28 74 61 70 65 |X.mark_t|ape(tape|
|00001ce0| 66 64 29 3b 0a 58 09 74 | 6f 63 5f 66 72 6f 6d 5f |fd);.X.t|oc_from_|
|00001cf0| 66 69 6c 65 28 74 61 70 | 65 66 64 2c 20 74 6f 63 |file(tap|efd, toc|
|00001d00| 66 64 29 3b 0a 58 09 73 | 6d 74 5f 63 6c 6f 73 65 |fd);.X.s|mt_close|
|00001d10| 5f 77 69 74 68 6f 75 74 | 5f 65 6f 66 28 74 61 70 |_without|_eof(tap|
|00001d20| 65 66 64 29 3b 0a 58 09 | 72 65 77 69 6e 64 5f 6e |efd);.X.|rewind_n|
|00001d30| 61 6d 65 64 5f 64 65 76 | 69 63 65 28 74 61 70 65 |amed_dev|ice(tape|
|00001d40| 6e 61 6d 65 29 3b 0a 58 | 09 69 66 20 28 74 6f 63 |name);.X|.if (toc|
|00001d50| 66 64 20 21 3d 20 66 69 | 6c 65 6e 6f 28 73 74 64 |fd != fi|leno(std|
|00001d60| 69 6e 29 29 0a 58 09 20 | 20 20 20 63 6c 6f 73 65 |in)).X. | close|
|00001d70| 28 74 6f 63 66 64 29 3b | 0a 58 09 65 78 69 74 28 |(tocfd);|.X.exit(|
|00001d80| 45 58 49 54 5f 4f 4b 29 | 3b 0a 58 09 0a 58 20 20 |EXIT_OK)|;.X..X |
|00001d90| 20 20 20 20 64 65 66 61 | 75 6c 74 3a 0a 58 09 66 | defa|ult:.X.f|
|00001da0| 70 72 69 6e 74 66 28 73 | 74 64 65 72 72 2c 20 22 |printf(s|tderr, "|
|00001db0| 55 6e 6b 6e 6f 77 6e 20 | 74 61 70 65 20 6f 70 65 |Unknown |tape ope|
|00001dc0| 72 61 74 69 6f 6e 20 63 | 6f 64 65 20 28 25 64 29 |ration c|ode (%d)|
|00001dd0| 5c 6e 22 2c 20 6f 70 65 | 72 61 74 69 6f 6e 29 3b |\n", ope|ration);|
|00001de0| 0a 58 09 65 78 69 74 28 | 45 58 49 54 5f 55 53 41 |.X.exit(|EXIT_USA|
|00001df0| 47 45 29 3b 0a 58 20 20 | 20 20 7d 0a 58 7d 0a 58 |GE);.X | }.X}.X|
|00001e00| 0a 58 76 6f 69 64 09 75 | 73 61 67 65 28 70 72 6f |.Xvoid.u|sage(pro|
|00001e10| 67 6e 61 6d 65 29 0a 58 | 63 68 61 72 09 2a 70 72 |gname).X|char.*pr|
|00001e20| 6f 67 6e 61 6d 65 3b 0a | 58 7b 20 20 20 0a 58 20 |ogname;.|X{ .X |
|00001e30| 20 20 20 73 74 61 74 69 | 63 20 63 68 61 72 20 2a | stati|c char *|
|00001e40| 73 75 6d 6d 61 72 79 20 | 3d 20 0a 58 09 22 75 73 |summary |= .X."us|
|00001e50| 61 67 65 3a 20 25 73 20 | 5b 2d 74 20 74 61 70 65 |age: %s |[-t tape|
|00001e60| 5d 20 5b 2d 67 20 66 69 | 6c 65 5d 20 5b 2d 70 20 |] [-g fi|le] [-p |
|00001e70| 66 69 6c 65 5d 20 5b 2d | 69 5d 20 5b 2d 76 5d 20 |file] [-|i] [-v] |
|00001e80| 5b 2d 71 5d 5c 6e 22 3b | 0a 58 20 20 20 20 73 74 |[-q]\n";|.X st|
|00001e90| 61 74 69 63 20 63 68 61 | 72 20 2a 73 79 6e 74 61 |atic cha|r *synta|
|00001ea0| 78 5b 5d 20 3d 20 7b 0a | 58 09 22 22 2c 0a 58 09 |x[] = {.|X."",.X.|
|00001eb0| 22 5c 74 2d 74 20 73 70 | 65 63 69 66 69 65 73 20 |"\t-t sp|ecifies |
|00001ec0| 74 68 65 20 74 61 70 65 | 20 64 65 76 69 63 65 2e |the tape| device.|
|00001ed0| 20 20 44 65 66 61 75 6c | 74 20 69 73 20 24 45 58 | Defaul|t is $EX|
|00001ee0| 45 42 59 54 45 2c 20 6f | 72 20 2f 64 65 76 2f 72 |EBYTE, o|r /dev/r|
|00001ef0| 73 6d 74 30 2e 22 2c 0a | 58 09 22 5c 74 2d 67 20 |smt0.",.|X."\t-g |
|00001f00| 67 65 74 73 20 74 68 65 | 20 74 61 62 6c 65 20 6f |gets the| table o|
|00001f10| 66 20 63 6f 6e 74 65 6e | 74 73 20 66 72 6f 6d 20 |f conten|ts from |
|00001f20| 74 68 65 20 74 61 70 65 | 20 69 6e 74 6f 20 74 68 |the tape| into th|
|00001f30| 65 20 6e 61 6d 65 64 20 | 66 69 6c 65 2e 22 2c 0a |e named |file.",.|
|00001f40| 58 09 22 5c 74 2d 70 20 | 70 75 74 73 20 74 68 65 |X."\t-p |puts the|
|00001f50| 20 74 61 62 6c 65 20 6f | 66 20 63 6f 6e 74 61 6e | table o|f contan|
|00001f60| 74 73 20 69 6e 20 74 68 | 65 20 6e 61 6d 65 64 20 |ts in th|e named |
|00001f70| 66 69 6c 65 20 6f 6e 74 | 6f 20 74 68 65 20 74 61 |file ont|o the ta|
|00001f80| 70 65 2e 22 2c 0a 58 09 | 22 5c 74 2d 69 20 69 6e |pe.",.X.|"\t-i in|
|00001f90| 69 74 69 61 6c 69 7a 65 | 73 20 61 20 6e 65 77 20 |itialize|s a new |
|00001fa0| 74 61 70 65 20 73 6f 20 | 69 74 20 63 61 6e 20 69 |tape so |it can i|
|00001fb0| 6e 63 6c 75 64 65 20 61 | 20 74 61 62 6c 65 20 6f |nclude a| table o|
|00001fc0| 66 20 63 6f 6e 74 65 6e | 74 73 2e 22 2c 0a 58 09 |f conten|ts.",.X.|
|00001fd0| 22 5c 74 2d 76 20 76 65 | 72 69 66 69 65 73 20 74 |"\t-v ve|rifies t|
|00001fe0| 68 61 74 20 61 20 74 61 | 70 65 20 68 61 73 20 70 |hat a ta|pe has p|
|00001ff0| 72 65 76 69 6f 75 73 6c | 79 20 62 65 65 6e 20 69 |reviousl|y been i|
|00002000| 6e 69 74 69 61 6c 69 7a | 65 64 2e 22 2c 0a 58 09 |nitializ|ed.",.X.|
|00002010| 22 5c 74 2d 71 20 63 61 | 75 73 65 73 20 74 68 65 |"\t-q ca|uses the|
|00002020| 20 70 72 6f 67 72 61 6d | 20 74 6f 20 77 6f 72 6b | program| to work|
|00002030| 20 6d 6f 72 65 20 71 75 | 69 65 74 6c 79 20 74 68 | more qu|ietly th|
|00002040| 61 6e 20 75 73 75 61 6c | 2e 22 2c 0a 58 09 22 22 |an usual|.",.X.""|
|00002050| 2c 0a 58 09 22 28 4e 6f | 74 65 3a 20 74 68 65 20 |,.X."(No|te: the |
|00002060| 74 61 70 65 20 69 73 20 | 61 6c 77 61 79 73 20 72 |tape is |always r|
|00002070| 65 77 6f 75 6e 64 20 61 | 66 74 65 72 20 61 6e 79 |ewound a|fter any|
|00002080| 20 6f 66 20 74 68 65 73 | 65 20 6f 70 65 72 61 74 | of thes|e operat|
|00002090| 69 6f 6e 73 2e 29 22 2c | 0a 58 09 4e 55 4c 4c 0a |ions.)",|.X.NULL.|
|000020a0| 58 20 20 20 20 7d 3b 0a | 58 20 20 20 20 63 68 61 |X };.|X cha|
|000020b0| 72 09 2a 70 3b 0a 58 20 | 20 20 20 72 65 67 69 73 |r.*p;.X | regis|
|000020c0| 74 65 72 20 69 6e 74 20 | 69 3b 0a 58 20 20 20 20 |ter int |i;.X |
|000020d0| 0a 58 20 20 20 20 69 66 | 20 28 28 70 20 3d 20 72 |.X if| ((p = r|
|000020e0| 69 6e 64 65 78 28 70 72 | 6f 67 6e 61 6d 65 2c 20 |index(pr|ogname, |
|000020f0| 27 2f 27 29 29 20 21 3d | 20 4e 55 4c 4c 29 0a 58 |'/')) !=| NULL).X|
|00002100| 09 70 72 6f 67 6e 61 6d | 65 20 3d 20 70 2b 31 3b |.prognam|e = p+1;|
|00002110| 0a 58 0a 58 20 20 20 20 | 66 70 72 69 6e 74 66 28 |.X.X |fprintf(|
|00002120| 73 74 64 65 72 72 2c 20 | 73 75 6d 6d 61 72 79 2c |stderr, |summary,|
|00002130| 20 70 72 6f 67 6e 61 6d | 65 29 3b 0a 58 20 20 20 | prognam|e);.X |
|00002140| 20 66 6f 72 20 28 69 20 | 3d 20 30 3b 20 73 79 6e | for (i |= 0; syn|
|00002150| 74 61 78 5b 69 5d 20 21 | 3d 20 4e 55 4c 4c 3b 20 |tax[i] !|= NULL; |
|00002160| 2b 2b 69 29 0a 58 09 66 | 70 72 69 6e 74 66 28 73 |++i).X.f|printf(s|
|00002170| 74 64 65 72 72 2c 20 22 | 25 73 5c 6e 22 2c 20 73 |tderr, "|%s\n", s|
|00002180| 79 6e 74 61 78 5b 69 5d | 29 3b 0a 58 7d 0a 58 0a |yntax[i]|);.X}.X.|
|00002190| 58 0a 58 09 20 0a 58 76 | 6f 69 64 09 72 65 77 69 |X.X. .Xv|oid.rewi|
|000021a0| 6e 64 5f 6e 61 6d 65 64 | 5f 64 65 76 69 63 65 28 |nd_named|_device(|
|000021b0| 6e 61 6d 65 29 0a 58 63 | 68 61 72 09 2a 6e 61 6d |name).Xc|har.*nam|
|000021c0| 65 3b 0a 58 7b 20 20 20 | 0a 58 20 20 20 20 69 6e |e;.X{ |.X in|
|000021d0| 74 20 74 61 70 65 66 64 | 20 3d 20 73 6d 74 5f 6f |t tapefd| = smt_o|
|000021e0| 70 65 6e 28 6e 61 6d 65 | 2c 20 4f 5f 52 44 4f 4e |pen(name|, O_RDON|
|000021f0| 4c 59 29 3b 0a 58 20 20 | 20 20 0a 58 20 20 20 20 |LY);.X | .X |
|00002200| 73 6d 74 5f 72 65 77 69 | 6e 64 28 74 61 70 65 66 |smt_rewi|nd(tapef|
|00002210| 64 29 3b 0a 58 20 20 20 | 20 73 6d 74 5f 63 6c 6f |d);.X | smt_clo|
|00002220| 73 65 28 74 61 70 65 66 | 64 29 3b 0a 58 7d 0a 58 |se(tapef|d);.X}.X|
|00002230| 0a 58 0a 58 76 6f 69 64 | 09 73 65 74 5f 6f 70 65 |.X.Xvoid|.set_ope|
|00002240| 72 61 74 69 6f 6e 28 6f | 70 2c 20 6f 70 63 6f 64 |ration(o|p, opcod|
|00002250| 65 29 0a 58 69 6e 74 09 | 2a 6f 70 3b 0a 58 69 6e |e).Xint.|*op;.Xin|
|00002260| 74 09 6f 70 63 6f 64 65 | 3b 0a 58 7b 20 20 20 0a |t.opcode|;.X{ .|
|00002270| 58 20 20 20 20 69 66 20 | 28 2a 6f 70 20 21 3d 20 |X if |(*op != |
|00002280| 4f 50 5f 4e 4f 4e 45 29 | 0a 58 20 20 20 20 7b 20 |OP_NONE)|.X { |
|00002290| 20 20 0a 58 09 66 70 75 | 74 73 28 22 4f 6e 6c 79 | .X.fpu|ts("Only|
|000022a0| 20 6f 6e 65 20 6f 66 20 | 2d 67 2c 20 2d 70 2c 20 | one of |-g, -p, |
|000022b0| 2d 69 2c 20 61 6e 64 20 | 2d 71 20 6d 61 79 20 62 |-i, and |-q may b|
|000022c0| 65 20 73 75 70 70 6c 69 | 65 64 2e 5c 6e 22 2c 20 |e suppli|ed.\n", |
|000022d0| 73 74 64 65 72 72 29 3b | 0a 58 09 65 78 69 74 28 |stderr);|.X.exit(|
|000022e0| 45 58 49 54 5f 55 53 41 | 47 45 29 3b 0a 58 20 20 |EXIT_USA|GE);.X |
|000022f0| 20 20 7d 0a 58 20 20 20 | 20 2a 6f 70 20 3d 20 6f | }.X | *op = o|
|00002300| 70 63 6f 64 65 3b 0a 58 | 7d 0a 58 0a 58 0a 58 69 |pcode;.X|}.X.X.Xi|
|00002310| 6e 74 09 63 68 65 63 6b | 5f 6f 70 65 6e 28 6e 61 |nt.check|_open(na|
|00002320| 6d 65 2c 20 6d 6f 64 65 | 2c 20 70 65 72 6d 29 0a |me, mode|, perm).|
|00002330| 58 63 68 61 72 09 2a 6e | 61 6d 65 3b 0a 58 69 6e |Xchar.*n|ame;.Xin|
|00002340| 74 09 6d 6f 64 65 3b 0a | 58 69 6e 74 09 70 65 72 |t.mode;.|Xint.per|
|00002350| 6d 3b 0a 58 7b 20 20 20 | 0a 58 20 20 20 20 69 6e |m;.X{ |.X in|
|00002360| 74 09 66 64 3b 0a 58 20 | 20 20 20 0a 58 20 20 20 |t.fd;.X | .X |
|00002370| 20 69 66 20 28 28 66 64 | 20 3d 20 6f 70 65 6e 28 | if ((fd| = open(|
|00002380| 6e 61 6d 65 2c 20 6d 6f | 64 65 2c 20 70 65 72 6d |name, mo|de, perm|
|00002390| 29 29 20 3c 20 30 29 0a | 58 20 20 20 20 7b 20 20 |)) < 0).|X { |
|000023a0| 20 0a 58 09 70 65 72 72 | 6f 72 28 6e 61 6d 65 29 | .X.perr|or(name)|
|000023b0| 3b 0a 58 09 65 78 69 74 | 28 45 58 49 54 5f 49 4f |;.X.exit|(EXIT_IO|
|000023c0| 29 3b 0a 58 20 20 20 20 | 7d 0a 58 20 20 20 20 72 |);.X |}.X r|
|000023d0| 65 74 75 72 6e 20 28 66 | 64 29 3b 0a 58 7d 0a 58 |eturn (f|d);.X}.X|
|000023e0| 0a 58 0a 58 76 6f 69 64 | 09 6d 61 72 6b 5f 74 61 |.X.Xvoid|.mark_ta|
|000023f0| 70 65 28 74 61 70 65 66 | 64 29 0a 58 69 6e 74 09 |pe(tapef|d).Xint.|
|00002400| 74 61 70 65 66 64 3b 0a | 58 7b 20 20 20 0a 58 20 |tapefd;.|X{ .X |
|00002410| 20 20 20 62 7a 65 72 6f | 28 42 75 66 66 65 72 2c | bzero|(Buffer,|
|00002420| 20 73 69 7a 65 6f 66 28 | 42 75 66 66 65 72 29 29 | sizeof(|Buffer))|
|00002430| 3b 0a 58 20 20 20 20 73 | 74 72 63 70 79 28 42 75 |;.X s|trcpy(Bu|
|00002440| 66 66 65 72 2c 20 54 4f | 43 5f 4d 41 52 4b 45 52 |ffer, TO|C_MARKER|
|00002450| 29 3b 0a 58 20 20 20 20 | 73 6d 74 5f 72 65 77 69 |);.X |smt_rewi|
|00002460| 6e 64 28 74 61 70 65 66 | 64 29 3b 0a 58 20 20 20 |nd(tapef|d);.X |
|00002470| 20 69 66 20 28 73 6d 74 | 5f 77 72 69 74 65 28 74 | if (smt|_write(t|
|00002480| 61 70 65 66 64 2c 20 42 | 75 66 66 65 72 2c 20 73 |apefd, B|uffer, s|
|00002490| 69 7a 65 6f 66 28 42 75 | 66 66 65 72 29 29 20 3c |izeof(Bu|ffer)) <|
|000024a0| 20 73 69 7a 65 6f 66 28 | 42 75 66 66 65 72 29 29 | sizeof(|Buffer))|
|000024b0| 0a 58 20 20 20 20 7b 20 | 20 20 0a 58 09 70 65 72 |.X { | .X.per|
|000024c0| 72 6f 72 28 22 74 61 70 | 65 20 6c 61 62 65 6c 22 |ror("tap|e label"|
|000024d0| 29 3b 0a 58 09 65 78 69 | 74 28 45 58 49 54 5f 49 |);.X.exi|t(EXIT_I|
|000024e0| 4f 29 3b 0a 58 20 20 20 | 20 7d 0a 58 7d 0a 58 0a |O);.X | }.X}.X.|
|000024f0| 58 0a 58 76 6f 69 64 09 | 69 6e 69 74 69 61 6c 69 |X.Xvoid.|initiali|
|00002500| 7a 65 5f 74 61 70 65 28 | 74 61 70 65 66 64 29 0a |ze_tape(|tapefd).|
|00002510| 58 69 6e 74 09 74 61 70 | 65 66 64 3b 0a 58 7b 20 |Xint.tap|efd;.X{ |
|00002520| 20 20 0a 58 20 20 20 20 | 69 6e 74 09 6e 62 75 66 | .X |int.nbuf|
|00002530| 73 20 3d 20 28 54 4f 43 | 5f 53 49 5a 45 20 2f 20 |s = (TOC|_SIZE / |
|00002540| 49 4f 42 55 46 5f 53 49 | 5a 45 29 3b 0a 58 20 20 |IOBUF_SI|ZE);.X |
|00002550| 20 20 0a 58 20 20 20 20 | 6d 61 72 6b 5f 74 61 70 | .X |mark_tap|
|00002560| 65 28 74 61 70 65 66 64 | 29 3b 0a 58 20 20 20 20 |e(tapefd|);.X |
|00002570| 62 7a 65 72 6f 28 42 75 | 66 66 65 72 2c 20 73 69 |bzero(Bu|ffer, si|
|00002580| 7a 65 6f 66 28 42 75 66 | 66 65 72 29 29 3b 0a 58 |zeof(Buf|fer));.X|
|00002590| 20 20 20 20 77 68 69 6c | 65 20 28 2d 2d 6e 62 75 | whil|e (--nbu|
|000025a0| 66 73 20 3e 20 30 29 0a | 58 09 73 6d 74 5f 77 72 |fs > 0).|X.smt_wr|
|000025b0| 69 74 65 28 74 61 70 65 | 66 64 2c 20 42 75 66 66 |ite(tape|fd, Buff|
|000025c0| 65 72 2c 20 73 69 7a 65 | 6f 66 28 42 75 66 66 65 |er, size|of(Buffe|
|000025d0| 72 29 29 3b 0a 58 7d 0a | 58 0a 58 0a 58 69 6e 74 |r));.X}.|X.X.Xint|
|000025e0| 09 63 68 65 63 6b 5f 74 | 61 70 65 28 74 61 70 65 |.check_t|ape(tape|
|000025f0| 66 64 29 0a 58 69 6e 74 | 09 74 61 70 65 66 64 3b |fd).Xint|.tapefd;|
|00002600| 0a 58 7b 20 20 20 0a 58 | 20 20 20 20 73 6d 74 5f |.X{ .X| smt_|
|00002610| 72 65 77 69 6e 64 28 74 | 61 70 65 66 64 29 3b 0a |rewind(t|apefd);.|
|00002620| 58 20 20 20 20 72 65 74 | 75 72 6e 20 28 73 6d 74 |X ret|urn (smt|
|00002630| 5f 72 65 61 64 28 74 61 | 70 65 66 64 2c 20 42 75 |_read(ta|pefd, Bu|
|00002640| 66 66 65 72 2c 20 73 69 | 7a 65 6f 66 28 42 75 66 |ffer, si|zeof(Buf|
|00002650| 66 65 72 29 29 20 3d 3d | 20 73 69 7a 65 6f 66 28 |fer)) ==| sizeof(|
|00002660| 42 75 66 66 65 72 29 20 | 0a 58 09 20 20 20 20 26 |Buffer) |.X. &|
|00002670| 26 0a 58 09 20 20 20 20 | 73 74 72 65 71 28 42 75 |&.X. |streq(Bu|
|00002680| 66 66 65 72 2c 20 54 4f | 43 5f 4d 41 52 4b 45 52 |ffer, TO|C_MARKER|
|00002690| 29 29 3b 0a 58 7d 0a 58 | 0a 58 0a 58 76 6f 69 64 |));.X}.X|.X.Xvoid|
|000026a0| 09 74 6f 63 5f 74 6f 5f | 66 69 6c 65 28 74 61 70 |.toc_to_|file(tap|
|000026b0| 65 66 64 2c 20 74 6f 63 | 66 64 29 0a 58 69 6e 74 |efd, toc|fd).Xint|
|000026c0| 09 74 61 70 65 66 64 3b | 0a 58 69 6e 74 09 74 6f |.tapefd;|.Xint.to|
|000026d0| 63 66 64 3b 0a 58 7b 20 | 20 20 0a 58 20 20 20 20 |cfd;.X{ | .X |
|000026e0| 69 6e 74 09 09 20 20 20 | 6e 3b 0a 58 20 20 20 20 |int.. |n;.X |
|000026f0| 72 65 67 69 73 74 65 72 | 20 69 6e 74 20 20 20 69 |register| int i|
|00002700| 3b 0a 58 20 20 20 20 72 | 65 67 69 73 74 65 72 20 |;.X r|egister |
|00002710| 63 68 61 72 20 2a 62 70 | 3b 0a 58 20 20 20 20 0a |char *bp|;.X .|
|00002720| 58 20 20 20 20 62 7a 65 | 72 6f 28 42 75 66 66 65 |X bze|ro(Buffe|
|00002730| 72 2c 20 73 69 7a 65 6f | 66 28 42 75 66 66 65 72 |r, sizeo|f(Buffer|
|00002740| 29 29 3b 0a 58 20 20 20 | 20 77 68 69 6c 65 20 28 |));.X | while (|
|00002750| 28 6e 20 3d 20 73 6d 74 | 5f 72 65 61 64 28 74 61 |(n = smt|_read(ta|
|00002760| 70 65 66 64 2c 20 42 75 | 66 66 65 72 2c 20 73 69 |pefd, Bu|ffer, si|
|00002770| 7a 65 6f 66 28 42 75 66 | 66 65 72 29 29 29 20 3e |zeof(Buf|fer))) >|
|00002780| 20 30 29 0a 58 20 20 20 | 20 7b 20 20 20 0a 58 09 | 0).X | { .X.|
|00002790| 69 66 20 28 6e 20 3c 20 | 73 69 7a 65 6f 66 28 42 |if (n < |sizeof(B|
|000027a0| 75 66 66 65 72 29 29 0a | 58 09 7b 20 20 20 0a 58 |uffer)).|X.{ .X|
|000027b0| 09 20 20 20 20 70 65 72 | 72 6f 72 28 22 74 61 70 |. per|ror("tap|
|000027c0| 65 20 72 65 61 64 22 29 | 3b 0a 58 09 20 20 20 20 |e read")|;.X. |
|000027d0| 65 78 69 74 28 45 58 49 | 54 5f 49 4f 29 3b 0a 58 |exit(EXI|T_IO);.X|
|000027e0| 09 7d 0a 58 09 66 6f 72 | 20 28 62 70 20 3d 20 42 |.}.X.for| (bp = B|
|000027f0| 75 66 66 65 72 2c 20 69 | 20 3d 20 30 3b 20 69 20 |uffer, i| = 0; i |
|00002800| 3c 20 73 69 7a 65 6f 66 | 28 42 75 66 66 65 72 29 |< sizeof|(Buffer)|
|00002810| 20 26 26 20 2a 62 70 20 | 21 3d 20 30 3b 20 62 70 | && *bp |!= 0; bp|
|00002820| 2b 2b 2c 20 69 2b 2b 29 | 0a 58 09 20 20 20 20 63 |++, i++)|.X. c|
|00002830| 6f 6e 74 69 6e 75 65 3b | 0a 58 09 69 66 20 28 77 |ontinue;|.X.if (w|
|00002840| 72 69 74 65 28 74 6f 63 | 66 64 2c 20 42 75 66 66 |rite(toc|fd, Buff|
|00002850| 65 72 2c 20 69 29 20 21 | 3d 20 69 29 0a 58 09 7b |er, i) !|= i).X.{|
|00002860| 20 20 20 0a 58 09 20 20 | 20 20 70 65 72 72 6f 72 | .X. | perror|
|00002870| 28 22 66 69 6c 65 20 77 | 72 69 74 65 22 29 3b 0a |("file w|rite");.|
|00002880| 58 09 20 20 20 20 65 78 | 69 74 28 45 58 49 54 5f |X. ex|it(EXIT_|
|00002890| 49 4f 29 3b 0a 58 09 7d | 0a 58 09 69 66 20 28 69 |IO);.X.}|.X.if (i|
|000028a0| 20 3c 20 73 69 7a 65 6f | 66 28 42 75 66 66 65 72 | < sizeo|f(Buffer|
|000028b0| 29 29 0a 58 09 20 20 20 | 20 62 72 65 61 6b 3b 0a |)).X. | break;.|
|000028c0| 58 20 20 20 20 7d 0a 58 | 7d 0a 58 0a 58 0a 58 76 |X }.X|}.X.X.Xv|
|000028d0| 6f 69 64 20 09 74 6f 63 | 5f 66 72 6f 6d 5f 66 69 |oid .toc|_from_fi|
|000028e0| 6c 65 28 74 61 70 65 66 | 64 2c 20 74 6f 63 66 64 |le(tapef|d, tocfd|
|000028f0| 29 0a 58 69 6e 74 09 74 | 61 70 65 66 64 3b 0a 58 |).Xint.t|apefd;.X|
|00002900| 69 6e 74 09 74 6f 63 66 | 64 3b 0a 58 7b 20 20 20 |int.tocf|d;.X{ |
|00002910| 0a 58 20 20 20 20 73 74 | 72 75 63 74 20 73 74 61 |.X st|ruct sta|
|00002920| 74 20 73 3b 0a 58 20 20 | 20 20 69 6e 74 09 09 6e |t s;.X | int..n|
|00002930| 3b 0a 58 20 20 20 20 0a | 58 20 20 20 20 69 66 20 |;.X .|X if |
|00002940| 28 74 6f 63 66 64 20 21 | 3d 20 66 69 6c 65 6e 6f |(tocfd !|= fileno|
|00002950| 28 73 74 64 69 6e 29 29 | 0a 58 20 20 20 20 7b 20 |(stdin))|.X { |
|00002960| 20 20 0a 58 09 69 66 20 | 28 66 73 74 61 74 28 74 | .X.if |(fstat(t|
|00002970| 6f 63 66 64 2c 20 26 73 | 29 20 3c 20 30 29 0a 58 |ocfd, &s|) < 0).X|
|00002980| 09 7b 20 20 20 0a 58 09 | 20 20 20 20 70 65 72 72 |.{ .X.| perr|
|00002990| 6f 72 28 22 66 73 74 61 | 74 22 29 3b 0a 58 09 20 |or("fsta|t");.X. |
|000029a0| 20 20 20 65 78 69 74 28 | 45 58 49 54 5f 49 4f 29 | exit(|EXIT_IO)|
|000029b0| 3b 0a 58 09 7d 0a 58 09 | 69 66 20 28 73 2e 73 74 |;.X.}.X.|if (s.st|
|000029c0| 5f 73 69 7a 65 20 3e 20 | 54 4f 43 5f 55 53 45 41 |_size > |TOC_USEA|
|000029d0| 42 4c 45 29 0a 58 09 7b | 20 20 20 0a 58 09 20 20 |BLE).X.{| .X. |
|000029e0| 20 20 66 70 75 74 73 28 | 22 54 61 62 6c 65 20 6f | fputs(|"Table o|
|000029f0| 66 20 43 6f 6e 74 65 6e | 74 73 20 66 69 6c 65 20 |f Conten|ts file |
|00002a00| 69 73 20 74 6f 6f 20 6c | 61 72 67 65 2e 5c 6e 22 |is too l|arge.\n"|
|00002a10| 2c 20 73 74 64 65 72 72 | 29 3b 0a 58 09 20 20 20 |, stderr|);.X. |
|00002a20| 20 65 78 69 74 28 45 58 | 49 54 5f 54 4f 4f 42 49 | exit(EX|IT_TOOBI|
|00002a30| 47 29 3b 0a 58 09 7d 0a | 58 20 20 20 20 7d 0a 58 |G);.X.}.|X }.X|
|00002a40| 20 20 20 20 0a 58 20 20 | 20 20 62 7a 65 72 6f 28 | .X | bzero(|
|00002a50| 42 75 66 66 65 72 2c 20 | 73 69 7a 65 6f 66 28 42 |Buffer, |sizeof(B|
|00002a60| 75 66 66 65 72 29 29 3b | 0a 58 20 20 20 20 77 68 |uffer));|.X wh|
|00002a70| 69 6c 65 20 28 28 6e 20 | 3d 20 72 65 61 64 28 74 |ile ((n |= read(t|
|00002a80| 6f 63 66 64 2c 20 42 75 | 66 66 65 72 2c 20 73 69 |ocfd, Bu|ffer, si|
|00002a90| 7a 65 6f 66 28 42 75 66 | 66 65 72 29 29 29 20 3e |zeof(Buf|fer))) >|
|00002aa0| 20 30 29 0a 58 20 20 20 | 20 7b 20 20 20 0a 58 09 | 0).X | { .X.|
|00002ab0| 69 66 20 28 6e 20 3c 20 | 73 69 7a 65 6f 66 28 42 |if (n < |sizeof(B|
|00002ac0| 75 66 66 65 72 29 29 0a | 58 09 20 20 20 20 62 7a |uffer)).|X. bz|
|00002ad0| 65 72 6f 28 42 75 66 66 | 65 72 20 2b 20 6e 2c 20 |ero(Buff|er + n, |
|00002ae0| 73 69 7a 65 6f 66 28 42 | 75 66 66 65 72 29 20 2d |sizeof(B|uffer) -|
|00002af0| 20 6e 29 3b 0a 58 09 69 | 66 20 28 73 6d 74 5f 77 | n);.X.i|f (smt_w|
|00002b00| 72 69 74 65 28 74 61 70 | 65 66 64 2c 20 42 75 66 |rite(tap|efd, Buf|
|00002b10| 66 65 72 2c 20 73 69 7a | 65 6f 66 28 42 75 66 66 |fer, siz|eof(Buff|
|00002b20| 65 72 29 29 20 3c 20 73 | 69 7a 65 6f 66 28 42 75 |er)) < s|izeof(Bu|
|00002b30| 66 66 65 72 29 29 0a 58 | 09 7b 20 20 20 0a 58 09 |ffer)).X|.{ .X.|
|00002b40| 20 20 20 20 70 65 72 72 | 6f 72 28 22 74 61 70 65 | perr|or("tape|
|00002b50| 20 77 72 69 74 65 22 29 | 3b 0a 58 09 20 20 20 20 | write")|;.X. |
|00002b60| 65 78 69 74 28 45 58 49 | 54 5f 49 4f 29 3b 0a 58 |exit(EXI|T_IO);.X|
|00002b70| 09 7d 0a 58 20 20 20 20 | 7d 0a 58 20 20 20 20 69 |.}.X |}.X i|
|00002b80| 66 20 28 6e 20 3c 20 30 | 29 0a 58 20 20 20 20 7b |f (n < 0|).X {|
|00002b90| 20 20 20 0a 58 09 70 65 | 72 72 6f 72 28 22 66 69 | .X.pe|rror("fi|
|00002ba0| 6c 65 20 72 65 61 64 22 | 29 3b 0a 58 09 65 78 69 |le read"|);.X.exi|
|00002bb0| 74 28 45 58 49 54 5f 49 | 4f 29 3b 0a 58 20 20 20 |t(EXIT_I|O);.X |
|00002bc0| 20 7d 0a 58 7d 0a 45 4e | 44 5f 4f 46 5f 65 78 65 | }.X}.EN|D_OF_exe|
|00002bd0| 74 6f 63 2e 63 0a 69 66 | 20 74 65 73 74 20 38 30 |toc.c.if| test 80|
|00002be0| 32 39 20 2d 6e 65 20 60 | 77 63 20 2d 63 20 3c 65 |29 -ne `|wc -c <e|
|00002bf0| 78 65 74 6f 63 2e 63 60 | 3b 20 74 68 65 6e 0a 20 |xetoc.c`|; then. |
|00002c00| 20 20 20 65 63 68 6f 20 | 73 68 61 72 3a 20 5c 22 | echo |shar: \"|
|00002c10| 65 78 65 74 6f 63 2e 63 | 5c 22 20 75 6e 70 61 63 |exetoc.c|\" unpac|
|00002c20| 6b 65 64 20 77 69 74 68 | 20 77 72 6f 6e 67 20 73 |ked with| wrong s|
|00002c30| 69 7a 65 21 0a 66 69 0a | 23 20 65 6e 64 20 6f 66 |ize!.fi.|# end of|
|00002c40| 20 6f 76 65 72 77 72 69 | 74 69 6e 67 20 63 68 65 | overwri|ting che|
|00002c50| 63 6b 0a 66 69 0a 69 66 | 20 74 65 73 74 20 2d 66 |ck.fi.if| test -f|
|00002c60| 20 73 6d 74 6f 70 73 2e | 63 20 2d 61 20 22 24 7b | smtops.|c -a "${|
|00002c70| 31 7d 22 20 21 3d 20 22 | 2d 63 22 20 3b 20 74 68 |1}" != "|-c" ; th|
|00002c80| 65 6e 20 0a 20 20 65 63 | 68 6f 20 73 68 61 72 3a |en . ec|ho shar:|
|00002c90| 20 57 69 6c 6c 20 6e 6f | 74 20 6f 76 65 72 2d 77 | Will no|t over-w|
|00002ca0| 72 69 74 65 20 65 78 69 | 73 74 69 6e 67 20 66 69 |rite exi|sting fi|
|00002cb0| 6c 65 20 5c 22 73 6d 74 | 6f 70 73 2e 63 5c 22 0a |le \"smt|ops.c\".|
|00002cc0| 65 6c 73 65 0a 65 63 68 | 6f 20 73 68 61 72 3a 20 |else.ech|o shar: |
|00002cd0| 45 78 74 72 61 63 74 69 | 6e 67 20 5c 22 73 6d 74 |Extracti|ng \"smt|
|00002ce0| 6f 70 73 2e 63 5c 22 20 | 5c 28 33 35 38 37 20 63 |ops.c\" |\(3587 c|
|00002cf0| 68 61 72 61 63 74 65 72 | 73 5c 29 0a 73 65 64 20 |haracter|s\).sed |
|00002d00| 22 73 2f 5e 58 2f 2f 22 | 20 3e 73 6d 74 6f 70 73 |"s/^X//"| >smtops|
|00002d10| 2e 63 20 3c 3c 27 45 4e | 44 5f 4f 46 5f 73 6d 74 |.c <<'EN|D_OF_smt|
|00002d20| 6f 70 73 2e 63 27 0a 58 | 23 69 66 20 21 6c 69 6e |ops.c'.X|#if !lin|
|00002d30| 74 20 26 26 20 21 53 41 | 42 45 52 0a 58 73 74 61 |t && !SA|BER.Xsta|
|00002d40| 74 69 63 20 63 68 61 72 | 20 52 63 73 49 64 5b 5d |tic char| RcsId[]|
|00002d50| 20 3d 20 22 24 48 65 61 | 64 65 72 3a 20 73 6d 74 | = "$Hea|der: smt|
|00002d60| 6f 70 73 2e 63 2c 76 20 | 31 2e 32 20 38 39 2f 31 |ops.c,v |1.2 89/1|
|00002d70| 30 2f 32 37 20 31 36 3a | 31 34 3a 35 38 20 6d 6c |0/27 16:|14:58 ml|
|00002d80| 61 6e 64 61 75 20 45 78 | 70 20 24 22 3b 0a 58 23 |andau Ex|p $";.X#|
|00002d90| 65 6e 64 69 66 0a 58 0a | 58 23 69 6e 63 6c 75 64 |endif.X.|X#includ|
|00002da0| 65 20 3c 73 74 64 69 6f | 2e 68 3e 0a 58 23 69 6e |e <stdio|.h>.X#in|
|00002db0| 63 6c 75 64 65 20 3c 66 | 63 6e 74 6c 2e 68 3e 0a |clude <f|cntl.h>.|
|00002dc0| 58 23 69 6e 63 6c 75 64 | 65 20 3c 73 79 73 2f 74 |X#includ|e <sys/t|
|00002dd0| 79 70 65 73 2e 68 3e 0a | 58 23 69 6e 63 6c 75 64 |ypes.h>.|X#includ|
|00002de0| 65 20 3c 73 79 73 2f 69 | 6f 63 74 6c 2e 68 3e 0a |e <sys/i|octl.h>.|
|00002df0| 58 23 69 6e 63 6c 75 64 | 65 20 3c 73 79 73 2f 6d |X#includ|e <sys/m|
|00002e00| 74 69 6f 2e 68 3e 0a 58 | 0a 58 23 69 66 20 52 45 |tio.h>.X|.X#if RE|
|00002e10| 4d 4f 54 45 0a 58 23 69 | 6e 63 6c 75 64 65 20 3c |MOTE.X#i|nclude <|
|00002e20| 72 6d 74 2e 68 3e 0a 58 | 23 65 6e 64 69 66 0a 58 |rmt.h>.X|#endif.X|
|00002e30| 0a 58 23 69 6e 63 6c 75 | 64 65 20 22 65 78 69 74 |.X#inclu|de "exit|
|00002e40| 63 6f 64 65 73 2e 68 22 | 0a 58 23 69 6e 63 6c 75 |codes.h"|.X#inclu|
|00002e50| 64 65 20 22 73 6d 74 6f | 70 73 2e 68 22 0a 58 0a |de "smto|ps.h".X.|
|00002e60| 58 0a 58 2f 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |X.X/****|********|
|00002e70| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002e80| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002e90| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002ea0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002eb0| 0a 58 20 2a 20 42 41 53 | 49 43 20 4d 41 47 54 41 |.X * BAS|IC MAGTA|
|00002ec0| 50 45 20 4f 50 45 52 41 | 54 49 4f 4e 53 20 46 4f |PE OPERA|TIONS FO|
|00002ed0| 52 20 45 58 45 42 59 54 | 45 20 44 52 49 56 45 53 |R EXEBYT|E DRIVES|
|00002ee0| 0a 58 20 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |.X *****|********|
|00002ef0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002f00| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002f10| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002f20| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2f 0a |********|******/.|
|00002f30| 58 0a 58 0a 58 2f 2a 0a | 58 20 2a 20 73 6d 74 5f |X.X.X/*.|X * smt_|
|00002f40| 6f 70 65 6e 28 29 3a 20 | 20 4f 70 65 6e 20 61 20 |open(): | Open a |
|00002f50| 74 61 70 65 20 64 65 76 | 69 63 65 2e 0a 58 20 2a |tape dev|ice..X *|
|00002f60| 20 0a 58 20 2a 20 41 63 | 74 75 61 6c 6c 79 2c 20 | .X * Ac|tually, |
|00002f70| 69 74 27 73 20 6a 75 73 | 74 20 61 20 77 72 61 70 |it's jus|t a wrap|
|00002f80| 70 65 72 20 61 72 6f 75 | 6e 64 20 6f 70 65 6e 2c |per arou|nd open,|
|00002f90| 20 62 75 74 20 64 61 74 | 61 20 61 62 73 74 72 61 | but dat|a abstra|
|00002fa0| 63 74 69 6f 6e 20 69 73 | 20 0a 58 20 2a 20 67 6f |ction is| .X * go|
|00002fb0| 6f 64 2c 20 72 69 67 68 | 74 3f 0a 58 20 2a 2f 0a |od, righ|t?.X */.|
|00002fc0| 58 20 0a 58 0a 58 69 6e | 74 09 73 6d 74 5f 6f 70 |X .X.Xin|t.smt_op|
|00002fd0| 65 6e 28 64 65 76 69 63 | 65 2c 20 6d 6f 64 65 29 |en(devic|e, mode)|
|00002fe0| 0a 58 63 68 61 72 09 2a | 64 65 76 69 63 65 3b 0a |.Xchar.*|device;.|
|00002ff0| 58 69 6e 74 09 6d 6f 64 | 65 3b 0a 58 7b 20 20 20 |Xint.mod|e;.X{ |
|00003000| 0a 58 20 20 20 20 69 6e | 74 09 66 64 3b 0a 58 20 |.X in|t.fd;.X |
|00003010| 20 20 20 0a 58 20 20 20 | 20 69 66 20 28 28 66 64 | .X | if ((fd|
|00003020| 20 3d 20 6f 70 65 6e 28 | 64 65 76 69 63 65 2c 20 | = open(|device, |
|00003030| 6d 6f 64 65 29 29 20 3c | 20 30 29 0a 58 20 20 20 |mode)) <| 0).X |
|00003040| 20 7b 20 20 20 0a 58 09 | 70 65 72 72 6f 72 28 64 | { .X.|perror(d|
|00003050| 65 76 69 63 65 29 3b 0a | 58 09 65 78 69 74 28 45 |evice);.|X.exit(E|
|00003060| 58 49 54 5f 49 4f 29 3b | 0a 58 20 20 20 20 7d 0a |XIT_IO);|.X }.|
|00003070| 58 20 20 20 20 72 65 74 | 75 72 6e 20 28 66 64 29 |X ret|urn (fd)|
|00003080| 3b 0a 58 7d 0a 58 0a 58 | 0a 58 2f 2a 20 0a 58 20 |;.X}.X.X|.X/* .X |
|00003090| 2a 20 73 6d 74 5f 63 6c | 6f 73 65 28 29 3a 20 20 |* smt_cl|ose(): |
|000030a0| 43 6c 6f 73 65 20 61 20 | 74 61 70 65 20 64 65 76 |Close a |tape dev|
|000030b0| 69 63 65 20 2d 2d 20 74 | 68 69 73 20 69 73 20 6a |ice -- t|his is j|
|000030c0| 75 73 74 20 61 20 77 72 | 61 70 70 65 72 20 61 72 |ust a wr|apper ar|
|000030d0| 6f 75 6e 64 20 63 6c 6f | 73 65 2e 0a 58 20 2a 2f |ound clo|se..X */|
|000030e0| 0a 58 20 0a 58 76 6f 69 | 64 09 73 6d 74 5f 63 6c |.X .Xvoi|d.smt_cl|
|000030f0| 6f 73 65 28 74 61 70 65 | 66 64 29 0a 58 69 6e 74 |ose(tape|fd).Xint|
|00003100| 09 74 61 70 65 66 64 3b | 0a 58 7b 20 20 20 0a 58 |.tapefd;|.X{ .X|
|00003110| 20 20 20 20 69 66 20 28 | 63 6c 6f 73 65 28 74 61 | if (|close(ta|
|00003120| 70 65 66 64 29 20 3c 20 | 30 29 0a 58 20 20 20 20 |pefd) < |0).X |
|00003130| 7b 20 20 20 0a 58 09 70 | 65 72 72 6f 72 28 22 74 |{ .X.p|error("t|
|00003140| 61 70 65 20 63 6c 6f 73 | 65 22 29 3b 0a 58 09 65 |ape clos|e");.X.e|
|00003150| 78 69 74 28 45 58 49 54 | 5f 49 4f 29 3b 0a 58 20 |xit(EXIT|_IO);.X |
|00003160| 20 20 20 7d 0a 58 7d 0a | 58 0a 58 0a 58 2f 2a 20 | }.X}.|X.X.X/* |
|00003170| 0a 58 20 2a 20 73 6d 74 | 5f 63 6c 6f 73 65 5f 77 |.X * smt|_close_w|
|00003180| 69 74 68 6f 75 74 5f 65 | 6f 66 28 29 3a 20 20 52 |ithout_e|of(): R|
|00003190| 65 77 69 6e 64 20 61 6e | 64 20 63 6c 6f 73 65 20 |ewind an|d close |
|000031a0| 61 20 74 61 70 65 20 64 | 65 76 69 63 65 2e 0a 58 |a tape d|evice..X|
|000031b0| 20 2a 20 0a 58 20 2a 20 | 09 54 68 69 73 20 72 6f | * .X * |.This ro|
|000031c0| 75 74 69 6e 65 20 70 72 | 6f 76 69 64 65 73 20 61 |utine pr|ovides a|
|000031d0| 20 72 65 77 69 6e 64 2d | 61 6e 64 2d 63 6c 6f 73 | rewind-|and-clos|
|000031e0| 65 20 6f 70 65 72 61 74 | 69 6f 6e 2c 20 77 68 69 |e operat|ion, whi|
|000031f0| 63 68 20 69 73 0a 58 20 | 2a 20 09 6e 65 63 65 73 |ch is.X |* .neces|
|00003200| 73 61 72 79 20 74 6f 20 | 70 72 65 76 65 6e 74 20 |sary to |prevent |
|00003210| 74 68 65 20 74 61 70 65 | 20 64 65 76 69 63 65 20 |the tape| device |
|00003220| 64 72 69 76 65 72 20 66 | 72 6f 6d 20 61 64 64 69 |driver f|rom addi|
|00003230| 6e 67 20 61 6e 20 45 4f | 46 0a 58 20 2a 20 09 6d |ng an EO|F.X * .m|
|00003240| 61 72 6b 20 74 6f 20 74 | 68 65 20 74 61 70 65 20 |ark to t|he tape |
|00003250| 69 66 20 74 68 65 20 6c | 61 73 74 20 6f 70 65 72 |if the l|ast oper|
|00003260| 61 74 69 6f 6e 20 62 65 | 66 6f 72 65 20 63 6c 6f |ation be|fore clo|
|00003270| 73 69 6e 67 20 74 68 65 | 20 64 65 76 69 63 65 0a |sing the| device.|
|00003280| 58 20 2a 20 09 77 61 73 | 20 61 20 77 72 69 74 65 |X * .was| a write|
|00003290| 2e 20 20 53 69 6e 63 65 | 20 77 65 20 61 72 65 20 |. Since| we are |
|000032a0| 63 6f 6e 74 69 6e 75 74 | 61 6c 6c 79 20 72 65 77 |continut|ally rew|
|000032b0| 72 69 74 69 6e 67 20 74 | 68 65 20 73 61 6d 65 20 |riting t|he same |
|000032c0| 66 69 6c 65 2c 0a 58 20 | 2a 09 77 65 20 6e 65 65 |file,.X |*.we nee|
|000032d0| 64 20 74 6f 20 69 6e 66 | 6f 72 6d 20 74 68 65 20 |d to inf|orm the |
|000032e0| 64 72 69 76 65 72 20 74 | 68 61 74 20 77 65 20 64 |driver t|hat we d|
|000032f0| 6f 6e 27 74 20 77 61 6e | 74 20 61 20 6e 65 77 20 |on't wan|t a new |
|00003300| 45 4f 46 20 6d 61 72 6b | 0a 58 20 2a 20 09 65 76 |EOF mark|.X * .ev|
|00003310| 65 72 79 20 74 69 6d 65 | 20 77 65 20 64 6f 20 73 |ery time| we do s|
|00003320| 6f 2e 0a 58 20 2a 2f 0a | 58 20 0a 58 76 6f 69 64 |o..X */.|X .Xvoid|
|00003330| 09 73 6d 74 5f 63 6c 6f | 73 65 5f 77 69 74 68 6f |.smt_clo|se_witho|
|00003340| 75 74 5f 65 6f 66 28 74 | 61 70 65 66 64 29 0a 58 |ut_eof(t|apefd).X|
|00003350| 69 6e 74 09 74 61 70 65 | 66 64 3b 0a 58 7b 20 20 |int.tape|fd;.X{ |
|00003360| 20 0a 58 20 20 20 20 73 | 6d 74 5f 72 65 77 69 6e | .X s|mt_rewin|
|00003370| 64 28 74 61 70 65 66 64 | 29 3b 0a 58 20 20 20 20 |d(tapefd|);.X |
|00003380| 73 6d 74 5f 63 6c 6f 73 | 65 28 74 61 70 65 66 64 |smt_clos|e(tapefd|
|00003390| 29 3b 0a 58 7d 0a 58 0a | 58 0a 58 2f 2a 20 0a 58 |);.X}.X.|X.X/* .X|
|000033a0| 20 2a 20 73 6d 74 5f 72 | 65 61 64 28 29 3a 20 20 | * smt_r|ead(): |
|000033b0| 52 65 61 64 20 66 72 6f | 6d 20 74 68 65 20 74 61 |Read fro|m the ta|
|000033c0| 70 65 20 64 72 69 76 65 | 0a 58 20 2a 20 73 6d 74 |pe drive|.X * smt|
|000033d0| 5f 77 72 69 74 65 28 29 | 3a 20 57 72 69 74 65 20 |_write()|: Write |
|000033e0| 74 6f 20 74 68 65 20 74 | 61 70 65 20 64 72 69 76 |to the t|ape driv|
|000033f0| 65 0a 58 20 2a 20 0a 58 | 20 2a 20 0a 58 20 2a 20 |e.X * .X| * .X * |
|00003400| 09 54 68 69 73 20 61 72 | 65 20 77 72 61 70 70 65 |.This ar|e wrappe|
|00003410| 72 73 20 61 72 6f 75 6e | 64 20 72 65 61 64 20 61 |rs aroun|d read a|
|00003420| 6e 64 20 77 72 69 74 65 | 2e 20 20 54 68 65 79 27 |nd write|. They'|
|00003430| 72 65 20 6d 6f 73 74 6c | 79 20 68 65 72 65 0a 58 |re mostl|y here.X|
|00003440| 20 2a 20 09 73 6f 20 74 | 68 61 74 20 77 65 20 63 | * .so t|hat we c|
|00003450| 61 6e 20 75 73 65 20 74 | 68 65 20 72 6d 74 20 6c |an use t|he rmt l|
|00003460| 69 62 72 61 72 79 20 69 | 66 20 77 65 20 77 61 6e |ibrary i|f we wan|
|00003470| 74 20 74 6f 2e 0a 58 20 | 2a 2f 0a 58 20 0a 58 69 |t to..X |*/.X .Xi|
|00003480| 6e 74 09 73 6d 74 5f 72 | 65 61 64 28 74 61 70 65 |nt.smt_r|ead(tape|
|00003490| 66 64 2c 20 62 75 66 66 | 65 72 2c 20 63 6f 75 6e |fd, buff|er, coun|
|000034a0| 74 29 0a 58 69 6e 74 09 | 74 61 70 65 66 64 3b 0a |t).Xint.|tapefd;.|
|000034b0| 58 63 68 61 72 09 2a 62 | 75 66 66 65 72 3b 0a 58 |Xchar.*b|uffer;.X|
|000034c0| 69 6e 74 09 63 6f 75 6e | 74 3b 0a 58 7b 20 20 20 |int.coun|t;.X{ |
|000034d0| 0a 58 20 20 20 20 72 65 | 74 75 72 6e 20 28 72 65 |.X re|turn (re|
|000034e0| 61 64 28 74 61 70 65 66 | 64 2c 20 62 75 66 66 65 |ad(tapef|d, buffe|
|000034f0| 72 2c 20 63 6f 75 6e 74 | 29 29 3b 0a 58 7d 0a 58 |r, count|));.X}.X|
|00003500| 0a 58 0a 58 69 6e 74 09 | 73 6d 74 5f 77 72 69 74 |.X.Xint.|smt_writ|
|00003510| 65 28 74 61 70 65 66 64 | 2c 20 62 75 66 66 65 72 |e(tapefd|, buffer|
|00003520| 2c 20 63 6f 75 6e 74 29 | 0a 58 69 6e 74 09 74 61 |, count)|.Xint.ta|
|00003530| 70 65 66 64 3b 0a 58 63 | 68 61 72 09 2a 62 75 66 |pefd;.Xc|har.*buf|
|00003540| 66 65 72 3b 0a 58 69 6e | 74 09 63 6f 75 6e 74 3b |fer;.Xin|t.count;|
|00003550| 0a 58 7b 20 20 20 0a 58 | 20 20 20 20 72 65 74 75 |.X{ .X| retu|
|00003560| 72 6e 20 28 77 72 69 74 | 65 28 74 61 70 65 66 64 |rn (writ|e(tapefd|
|00003570| 2c 20 62 75 66 66 65 72 | 2c 20 63 6f 75 6e 74 29 |, buffer|, count)|
|00003580| 29 3b 0a 58 7d 0a 58 0a | 58 0a 58 2f 2a 20 0a 58 |);.X}.X.|X.X/* .X|
|00003590| 20 2a 20 73 6d 74 5f 73 | 74 61 74 75 73 28 29 3a | * smt_s|tatus():|
|000035a0| 20 20 52 65 74 75 72 6e | 20 74 68 65 20 73 74 61 | Return| the sta|
|000035b0| 74 75 73 20 6f 66 20 74 | 68 65 20 74 61 70 65 20 |tus of t|he tape |
|000035c0| 64 72 69 76 65 2e 0a 58 | 20 2a 20 0a 58 20 2a 20 |drive..X| * .X * |
|000035d0| 54 68 69 73 20 63 6f 64 | 65 20 69 73 20 63 72 69 |This cod|e is cri|
|000035e0| 62 62 65 64 20 66 72 6f | 6d 20 74 68 65 20 6d 74 |bbed fro|m the mt|
|000035f0| 73 20 63 6f 6d 6d 61 6e | 64 2e 20 20 54 68 65 20 |s comman|d. The |
|00003600| 73 6d 74 5f 73 74 61 74 | 20 73 74 72 75 63 74 75 |smt_stat| structu|
|00003610| 72 65 0a 58 20 2a 20 6c | 6f 6f 6b 73 20 6c 69 6b |re.X * l|ooks lik|
|00003620| 65 20 74 68 69 73 3a 0a | 58 20 2a 20 0a 58 20 2a |e this:.|X * .X *|
|00003630| 20 09 73 74 72 75 63 74 | 20 73 6d 74 5f 73 74 61 | .struct| smt_sta|
|00003640| 74 0a 58 20 2a 20 09 7b | 0a 58 20 2a 20 09 09 63 |t.X * .{|.X * ..c|
|00003650| 68 61 72 20 20 20 73 6d | 74 5f 74 79 70 65 5b 38 |har sm|t_type[8|
|00003660| 5d 3b 09 2d 2d 20 63 61 | 72 74 72 69 64 67 65 20 |];.-- ca|rtridge |
|00003670| 74 79 70 65 0a 58 20 2a | 09 09 75 5f 6c 6f 6e 67 |type.X *|..u_long|
|00003680| 20 73 6d 74 5f 72 65 6d | 61 69 6e 3b 09 2d 2d 20 | smt_rem|ain;.-- |
|00003690| 4b 42 79 74 65 73 20 6c | 65 66 74 20 6f 6e 20 74 |KBytes l|eft on t|
|000036a0| 61 70 65 0a 58 20 2a 09 | 09 75 5f 6c 6f 6e 67 20 |ape.X *.|.u_long |
|000036b0| 73 6d 74 5f 73 69 7a 65 | 3b 09 2d 2d 20 54 6f 74 |smt_size|;.-- Tot|
|000036c0| 61 6c 20 73 69 7a 65 20 | 6f 66 20 74 61 70 65 20 |al size |of tape |
|000036d0| 28 4b 42 79 74 65 73 29 | 0a 58 20 2a 20 09 09 75 |(KBytes)|.X * ..u|
|000036e0| 5f 6c 6f 6e 67 20 73 6d | 74 5f 65 63 63 3b 09 09 |_long sm|t_ecc;..|
|000036f0| 2d 2d 20 45 43 43 20 6e | 75 6d 62 65 72 73 0a 58 |-- ECC n|umbers.X|
|00003700| 20 2a 20 09 09 6c 6f 6e | 67 20 20 20 73 6d 74 5f | * ..lon|g smt_|
|00003710| 77 70 3a 31 3b 09 2d 2d | 20 77 72 69 74 65 20 70 |wp:1;.--| write p|
|00003720| 72 6f 74 65 63 74 65 64 | 3f 0a 58 20 2a 20 09 09 |rotected|?.X * ..|
|00003730| 6c 6f 6e 67 20 20 20 73 | 6d 74 5f 62 6f 74 3a 31 |long s|mt_bot:1|
|00003740| 3b 09 2d 2d 20 61 74 20 | 62 65 67 69 6e 6e 69 6e |;.-- at |beginnin|
|00003750| 67 20 6f 66 20 74 61 70 | 65 3f 0a 58 20 2a 09 7d |g of tap|e?.X *.}|
|00003760| 0a 58 20 2a 2f 0a 58 0a | 58 73 74 72 75 63 74 20 |.X */.X.|Xstruct |
|00003770| 73 6d 74 5f 73 74 61 74 | 09 2a 73 6d 74 5f 73 74 |smt_stat|.*smt_st|
|00003780| 61 74 75 73 28 74 61 70 | 65 66 64 29 0a 58 69 6e |atus(tap|efd).Xin|
|00003790| 74 09 09 20 74 61 70 65 | 66 64 3b 0a 58 7b 20 20 |t.. tape|fd;.X{ |
|000037a0| 20 0a 58 20 20 20 20 73 | 74 61 74 69 63 20 73 74 | .X s|tatic st|
|000037b0| 72 75 63 74 20 73 6d 74 | 5f 73 74 61 74 20 73 74 |ruct smt|_stat st|
|000037c0| 61 74 75 73 3b 0a 58 20 | 20 20 20 0a 58 20 20 20 |atus;.X | .X |
|000037d0| 20 69 66 20 28 69 6f 63 | 74 6c 28 74 61 70 65 66 | if (ioc|tl(tapef|
|000037e0| 64 2c 20 53 4d 54 49 4f | 47 45 54 53 54 41 54 2c |d, SMTIO|GETSTAT,|
|000037f0| 20 26 73 74 61 74 75 73 | 29 20 3c 20 30 29 0a 58 | &status|) < 0).X|
|00003800| 20 20 20 20 7b 20 20 20 | 0a 58 09 70 65 72 72 6f | { |.X.perro|
|00003810| 72 28 22 74 61 70 65 20 | 73 74 61 74 75 73 22 29 |r("tape |status")|
|00003820| 3b 0a 58 09 65 78 69 74 | 28 45 58 49 54 5f 49 4f |;.X.exit|(EXIT_IO|
|00003830| 29 3b 0a 58 20 20 20 20 | 7d 0a 58 20 20 20 20 72 |);.X |}.X r|
|00003840| 65 74 75 72 6e 20 28 26 | 73 74 61 74 75 73 29 3b |eturn (&|status);|
|00003850| 0a 58 7d 0a 58 0a 58 0a | 58 0a 58 2f 2a 20 0a 58 |.X}.X.X.|X.X/* .X|
|00003860| 20 2a 20 73 6d 74 5f 72 | 65 77 69 6e 64 28 29 3a | * smt_r|ewind():|
|00003870| 20 20 52 65 77 69 6e 64 | 20 61 20 74 61 70 65 20 | Rewind| a tape |
|00003880| 61 6e 64 20 76 65 72 69 | 66 79 20 74 68 61 74 20 |and veri|fy that |
|00003890| 69 74 20 77 6f 72 6b 65 | 64 2e 0a 58 20 2a 2f 0a |it worke|d..X */.|
|000038a0| 58 0a 58 76 6f 69 64 09 | 73 6d 74 5f 72 65 77 69 |X.Xvoid.|smt_rewi|
|000038b0| 6e 64 28 74 61 70 65 66 | 64 29 0a 58 69 6e 74 09 |nd(tapef|d).Xint.|
|000038c0| 74 61 70 65 66 64 3b 0a | 58 7b 20 20 20 0a 58 20 |tapefd;.|X{ .X |
|000038d0| 20 20 20 73 74 61 74 69 | 63 20 73 74 72 75 63 74 | stati|c struct|
|000038e0| 20 6d 74 6f 70 20 72 65 | 77 69 6e 64 5f 6f 70 20 | mtop re|wind_op |
|000038f0| 3d 20 7b 20 4d 54 52 45 | 57 2c 20 31 20 7d 3b 0a |= { MTRE|W, 1 };.|
|00003900| 58 20 20 20 20 0a 58 20 | 20 20 20 69 66 20 28 69 |X .X | if (i|
|00003910| 6f 63 74 6c 28 74 61 70 | 65 66 64 2c 20 4d 54 49 |octl(tap|efd, MTI|
|00003920| 4f 43 54 4f 50 2c 20 26 | 72 65 77 69 6e 64 5f 6f |OCTOP, &|rewind_o|
|00003930| 70 29 20 3c 20 30 29 0a | 58 20 20 20 20 7b 20 20 |p) < 0).|X { |
|00003940| 20 0a 58 09 70 65 72 72 | 6f 72 28 22 74 61 70 65 | .X.perr|or("tape|
|00003950| 20 72 65 77 69 6e 64 22 | 29 3b 0a 58 09 65 78 69 | rewind"|);.X.exi|
|00003960| 74 28 45 58 49 54 5f 49 | 4f 29 3b 0a 58 20 20 20 |t(EXIT_I|O);.X |
|00003970| 20 7d 0a 58 23 69 66 20 | 21 52 45 4d 4f 54 45 0a | }.X#if |!REMOTE.|
|00003980| 58 20 20 20 20 2f 2a 20 | 72 6d 74 6c 69 62 2e 61 |X /* |rmtlib.a|
|00003990| 20 64 6f 65 73 20 6e 6f | 74 20 6c 69 6b 65 20 74 | does no|t like t|
|000039a0| 68 65 20 63 75 73 74 6f | 6d 20 69 6f 63 74 6c 73 |he custo|m ioctls|
|000039b0| 20 75 73 65 64 20 69 6e | 20 74 68 65 20 73 6d 74 | used in| the smt|
|000039c0| 5f 73 74 61 74 75 73 0a | 58 20 20 20 20 20 20 20 |_status.|X |
|000039d0| 72 6f 75 74 69 6e 65 2c | 20 73 6f 20 64 6f 6e 27 |routine,| so don'|
|000039e0| 74 20 75 73 65 20 69 74 | 20 69 6e 74 65 72 6e 61 |t use it| interna|
|000039f0| 6c 6c 79 20 2a 2f 0a 58 | 20 20 20 20 69 66 20 28 |lly */.X| if (|
|00003a00| 21 73 6d 74 5f 73 74 61 | 74 75 73 28 74 61 70 65 |!smt_sta|tus(tape|
|00003a10| 66 64 29 2d 3e 73 6d 74 | 5f 62 6f 74 29 0a 58 20 |fd)->smt|_bot).X |
|00003a20| 20 20 20 7b 20 20 20 0a | 58 09 66 70 75 74 73 28 | { .|X.fputs(|
|00003a30| 22 43 6f 75 6c 64 20 6e | 6f 74 20 72 65 77 69 6e |"Could n|ot rewin|
|00003a40| 64 20 74 61 70 65 20 66 | 6f 72 20 73 6f 6d 65 20 |d tape f|or some |
|00003a50| 75 6e 6b 6e 6f 77 6e 20 | 72 65 61 73 6f 6e 2e 22 |unknown |reason."|
|00003a60| 29 3b 0a 58 09 65 78 69 | 74 28 45 58 49 54 5f 49 |);.X.exi|t(EXIT_I|
|00003a70| 4f 29 3b 0a 58 20 20 20 | 20 7d 0a 58 23 65 6e 64 |O);.X | }.X#end|
|00003a80| 69 66 0a 58 7d 0a 58 0a | 58 0a 58 2f 2a 20 0a 58 |if.X}.X.|X.X/* .X|
|00003a90| 20 2a 20 73 6d 74 5f 65 | 6f 66 28 29 3a 20 20 57 | * smt_e|of(): W|
|00003aa0| 72 69 74 65 20 61 6e 20 | 45 4f 46 20 6d 61 72 6b |rite an |EOF mark|
|00003ab0| 20 6f 6e 20 74 68 65 20 | 74 61 70 65 2e 0a 58 20 | on the |tape..X |
|00003ac0| 2a 20 0a 58 20 2a 20 57 | 65 20 77 69 6c 6c 20 70 |* .X * W|e will p|
|00003ad0| 72 6f 62 61 62 6c 79 20 | 6e 65 76 65 72 20 6e 65 |robably |never ne|
|00003ae0| 65 64 20 74 68 69 73 2c | 20 62 75 74 20 69 74 20 |ed this,| but it |
|00003af0| 64 6f 65 73 6e 27 74 20 | 68 75 72 74 20 74 6f 20 |doesn't |hurt to |
|00003b00| 69 6e 63 6c 75 64 65 20 | 69 74 2e 0a 58 20 2a 2f |include |it..X */|
|00003b10| 0a 58 20 0a 58 76 6f 69 | 64 09 73 6d 74 5f 65 6f |.X .Xvoi|d.smt_eo|
|00003b20| 66 28 74 61 70 65 66 64 | 29 0a 58 69 6e 74 09 74 |f(tapefd|).Xint.t|
|00003b30| 61 70 65 66 64 3b 0a 58 | 7b 20 20 20 0a 58 20 20 |apefd;.X|{ .X |
|00003b40| 20 20 73 74 61 74 69 63 | 20 73 74 72 75 63 74 20 | static| struct |
|00003b50| 6d 74 6f 70 20 65 6f 66 | 5f 6f 70 20 3d 20 7b 20 |mtop eof|_op = { |
|00003b60| 4d 54 57 45 4f 46 2c 20 | 31 20 7d 3b 0a 58 20 20 |MTWEOF, |1 };.X |
|00003b70| 20 20 0a 58 20 20 20 20 | 69 66 20 28 69 6f 63 74 | .X |if (ioct|
|00003b80| 6c 28 74 61 70 65 66 64 | 2c 20 4d 54 49 4f 43 54 |l(tapefd|, MTIOCT|
|00003b90| 4f 50 2c 20 26 65 6f 66 | 5f 6f 70 29 20 3c 20 30 |OP, &eof|_op) < 0|
|00003ba0| 29 0a 58 20 20 20 20 7b | 20 20 20 0a 58 09 70 65 |).X {| .X.pe|
|00003bb0| 72 72 6f 72 28 22 77 72 | 69 74 65 20 65 6f 66 22 |rror("wr|ite eof"|
|00003bc0| 29 3b 0a 58 09 65 78 69 | 74 28 45 58 49 54 5f 49 |);.X.exi|t(EXIT_I|
|00003bd0| 4f 29 3b 0a 58 20 20 20 | 20 7d 0a 58 7d 0a 58 0a |O);.X | }.X}.X.|
|00003be0| 58 0a 45 4e 44 5f 4f 46 | 5f 73 6d 74 6f 70 73 2e |X.END_OF|_smtops.|
|00003bf0| 63 0a 69 66 20 74 65 73 | 74 20 33 35 38 37 20 2d |c.if tes|t 3587 -|
|00003c00| 6e 65 20 60 77 63 20 2d | 63 20 3c 73 6d 74 6f 70 |ne `wc -|c <smtop|
|00003c10| 73 2e 63 60 3b 20 74 68 | 65 6e 0a 20 20 20 20 65 |s.c`; th|en. e|
|00003c20| 63 68 6f 20 73 68 61 72 | 3a 20 5c 22 73 6d 74 6f |cho shar|: \"smto|
|00003c30| 70 73 2e 63 5c 22 20 75 | 6e 70 61 63 6b 65 64 20 |ps.c\" u|npacked |
|00003c40| 77 69 74 68 20 77 72 6f | 6e 67 20 73 69 7a 65 21 |with wro|ng size!|
|00003c50| 0a 66 69 0a 23 20 65 6e | 64 20 6f 66 20 6f 76 65 |.fi.# en|d of ove|
|00003c60| 72 77 72 69 74 69 6e 67 | 20 63 68 65 63 6b 0a 66 |rwriting| check.f|
|00003c70| 69 0a 69 66 20 74 65 73 | 74 20 2d 66 20 65 78 69 |i.if tes|t -f exi|
|00003c80| 74 63 6f 64 65 73 2e 68 | 20 2d 61 20 22 24 7b 31 |tcodes.h| -a "${1|
|00003c90| 7d 22 20 21 3d 20 22 2d | 63 22 20 3b 20 74 68 65 |}" != "-|c" ; the|
|00003ca0| 6e 20 0a 20 20 65 63 68 | 6f 20 73 68 61 72 3a 20 |n . ech|o shar: |
|00003cb0| 57 69 6c 6c 20 6e 6f 74 | 20 6f 76 65 72 2d 77 72 |Will not| over-wr|
|00003cc0| 69 74 65 20 65 78 69 73 | 74 69 6e 67 20 66 69 6c |ite exis|ting fil|
|00003cd0| 65 20 5c 22 65 78 69 74 | 63 6f 64 65 73 2e 68 5c |e \"exit|codes.h\|
|00003ce0| 22 0a 65 6c 73 65 0a 65 | 63 68 6f 20 73 68 61 72 |".else.e|cho shar|
|00003cf0| 3a 20 45 78 74 72 61 63 | 74 69 6e 67 20 5c 22 65 |: Extrac|ting \"e|
|00003d00| 78 69 74 63 6f 64 65 73 | 2e 68 5c 22 20 5c 28 31 |xitcodes|.h\" \(1|
|00003d10| 35 33 20 63 68 61 72 61 | 63 74 65 72 73 5c 29 0a |53 chara|cters\).|
|00003d20| 73 65 64 20 22 73 2f 5e | 58 2f 2f 22 20 3e 65 78 |sed "s/^|X//" >ex|
|00003d30| 69 74 63 6f 64 65 73 2e | 68 20 3c 3c 27 45 4e 44 |itcodes.|h <<'END|
|00003d40| 5f 4f 46 5f 65 78 69 74 | 63 6f 64 65 73 2e 68 27 |_OF_exit|codes.h'|
|00003d50| 0a 58 23 69 66 6e 64 65 | 66 20 45 58 49 54 43 4f |.X#ifnde|f EXITCO|
|00003d60| 44 45 53 5f 48 0a 58 23 | 64 65 66 69 6e 65 20 45 |DES_H.X#|define E|
|00003d70| 58 49 54 43 4f 44 45 53 | 5f 48 20 31 0a 58 0a 58 |XITCODES|_H 1.X.X|
|00003d80| 23 64 65 66 69 6e 65 20 | 45 58 49 54 5f 4f 4b 09 |#define |EXIT_OK.|
|00003d90| 09 30 0a 58 23 64 65 66 | 69 6e 65 20 45 58 49 54 |.0.X#def|ine EXIT|
|00003da0| 5f 55 53 41 47 45 09 31 | 0a 58 23 64 65 66 69 6e |_USAGE.1|.X#defin|
|00003db0| 65 09 45 58 49 54 5f 49 | 4f 09 09 32 0a 58 23 64 |e.EXIT_I|O..2.X#d|
|00003dc0| 65 66 69 6e 65 20 45 58 | 49 54 5f 4e 4f 54 4f 43 |efine EX|IT_NOTOC|
|00003dd0| 09 33 0a 58 23 64 65 66 | 69 6e 65 20 45 58 49 54 |.3.X#def|ine EXIT|
|00003de0| 5f 54 4f 4f 42 49 47 09 | 34 0a 58 0a 58 23 65 6e |_TOOBIG.|4.X.X#en|
|00003df0| 64 69 66 0a 45 4e 44 5f | 4f 46 5f 65 78 69 74 63 |dif.END_|OF_exitc|
|00003e00| 6f 64 65 73 2e 68 0a 69 | 66 20 74 65 73 74 20 31 |odes.h.i|f test 1|
|00003e10| 35 33 20 2d 6e 65 20 60 | 77 63 20 2d 63 20 3c 65 |53 -ne `|wc -c <e|
|00003e20| 78 69 74 63 6f 64 65 73 | 2e 68 60 3b 20 74 68 65 |xitcodes|.h`; the|
|00003e30| 6e 0a 20 20 20 20 65 63 | 68 6f 20 73 68 61 72 3a |n. ec|ho shar:|
|00003e40| 20 5c 22 65 78 69 74 63 | 6f 64 65 73 2e 68 5c 22 | \"exitc|odes.h\"|
|00003e50| 20 75 6e 70 61 63 6b 65 | 64 20 77 69 74 68 20 77 | unpacke|d with w|
|00003e60| 72 6f 6e 67 20 73 69 7a | 65 21 0a 66 69 0a 23 20 |rong siz|e!.fi.# |
|00003e70| 65 6e 64 20 6f 66 20 6f | 76 65 72 77 72 69 74 69 |end of o|verwriti|
|00003e80| 6e 67 20 63 68 65 63 6b | 0a 66 69 0a 69 66 20 74 |ng check|.fi.if t|
|00003e90| 65 73 74 20 2d 66 20 73 | 6d 74 69 6f 2e 68 20 2d |est -f s|mtio.h -|
|00003ea0| 61 20 22 24 7b 31 7d 22 | 20 21 3d 20 22 2d 63 22 |a "${1}"| != "-c"|
|00003eb0| 20 3b 20 74 68 65 6e 20 | 0a 20 20 65 63 68 6f 20 | ; then |. echo |
|00003ec0| 73 68 61 72 3a 20 57 69 | 6c 6c 20 6e 6f 74 20 6f |shar: Wi|ll not o|
|00003ed0| 76 65 72 2d 77 72 69 74 | 65 20 65 78 69 73 74 69 |ver-writ|e existi|
|00003ee0| 6e 67 20 66 69 6c 65 20 | 5c 22 73 6d 74 69 6f 2e |ng file |\"smtio.|
|00003ef0| 68 5c 22 0a 65 6c 73 65 | 0a 65 63 68 6f 20 73 68 |h\".else|.echo sh|
|00003f00| 61 72 3a 20 45 78 74 72 | 61 63 74 69 6e 67 20 5c |ar: Extr|acting \|
|00003f10| 22 73 6d 74 69 6f 2e 68 | 5c 22 20 5c 28 34 34 35 |"smtio.h|\" \(445|
|00003f20| 20 63 68 61 72 61 63 74 | 65 72 73 5c 29 0a 73 65 | charact|ers\).se|
|00003f30| 64 20 22 73 2f 5e 58 2f | 2f 22 20 3e 73 6d 74 69 |d "s/^X/|/" >smti|
|00003f40| 6f 2e 68 20 3c 3c 27 45 | 4e 44 5f 4f 46 5f 73 6d |o.h <<'E|ND_OF_sm|
|00003f50| 74 69 6f 2e 68 27 0a 58 | 23 69 6e 63 6c 75 64 65 |tio.h'.X|#include|
|00003f60| 20 3c 73 79 73 2f 69 6f | 63 74 6c 2e 68 3e 0a 58 | <sys/io|ctl.h>.X|
|00003f70| 0a 58 2f 2a 20 73 74 72 | 75 63 74 75 72 65 73 20 |.X/* str|uctures |
|00003f80| 61 6e 64 20 64 65 66 69 | 6e 65 73 20 66 6f 72 20 |and defi|nes for |
|00003f90| 69 6f 63 74 6c 73 20 2a | 2f 0a 58 73 74 72 75 63 |ioctls *|/.Xstruc|
|00003fa0| 74 20 73 6d 74 5f 73 74 | 61 74 20 7b 0a 58 09 63 |t smt_st|at {.X.c|
|00003fb0| 68 61 72 09 73 6d 74 5f | 74 79 70 65 5b 38 5d 3b |har.smt_|type[8];|
|00003fc0| 09 2f 2a 20 43 61 72 74 | 72 69 64 67 65 20 74 79 |./* Cart|ridge ty|
|00003fd0| 70 65 20 2a 2f 0a 58 09 | 75 6e 73 69 67 6e 65 64 |pe */.X.|unsigned|
|00003fe0| 20 6c 6f 6e 67 09 73 6d | 74 5f 72 65 6d 61 69 6e | long.sm|t_remain|
|00003ff0| 3b 09 09 2f 2a 20 23 20 | 6f 66 20 6b 69 6c 6f 62 |;../* # |of kilob|
|00004000| 79 74 65 73 20 72 65 6d | 61 69 6e 69 6e 67 20 6f |ytes rem|aining o|
|00004010| 6e 20 74 61 70 65 20 2a | 2f 0a 58 09 75 6e 73 69 |n tape *|/.X.unsi|
|00004020| 67 6e 65 64 20 6c 6f 6e | 67 09 73 6d 74 5f 73 69 |gned lon|g.smt_si|
|00004030| 7a 65 3b 09 09 2f 2a 20 | 73 69 7a 65 20 28 69 6e |ze;../* |size (in|
|00004040| 20 6b 62 29 20 6f 66 20 | 74 61 70 65 20 2a 2f 0a | kb) of |tape */.|
|00004050| 58 09 75 6e 73 69 67 6e | 65 64 20 6c 6f 6e 67 09 |X.unsign|ed long.|
|00004060| 73 6d 74 5f 65 63 63 3b | 09 09 2f 2a 20 45 43 43 |smt_ecc;|../* ECC|
|00004070| 20 63 6f 75 6e 74 20 2a | 2f 0a 58 09 6c 6f 6e 67 | count *|/.X.long|
|00004080| 09 73 6d 74 5f 77 70 3a | 31 3b 09 09 2f 2a 20 57 |.smt_wp:|1;../* W|
|00004090| 72 69 74 65 20 70 72 6f | 74 65 63 74 65 64 20 2a |rite pro|tected *|
|000040a0| 2f 0a 58 09 6c 6f 6e 67 | 09 73 6d 74 5f 62 6f 74 |/.X.long|.smt_bot|
|000040b0| 3a 31 3b 09 09 2f 2a 20 | 41 74 20 62 65 67 69 6e |:1;../* |At begin|
|000040c0| 6e 69 6e 67 20 6f 66 20 | 74 61 70 65 20 2a 2f 0a |ning of |tape */.|
|000040d0| 58 7d 3b 0a 58 0a 58 23 | 64 65 66 69 6e 65 09 53 |X};.X.X#|define.S|
|000040e0| 4d 54 49 4f 47 45 54 53 | 54 41 54 09 5f 49 4f 52 |MTIOGETS|TAT._IOR|
|000040f0| 28 6d 2c 30 2c 73 74 72 | 75 63 74 20 73 6d 74 5f |(m,0,str|uct smt_|
|00004100| 73 74 61 74 29 09 2f 2a | 20 67 65 74 20 74 68 65 |stat)./*| get the|
|00004110| 20 64 72 69 76 65 20 73 | 74 61 74 75 73 20 2a 2f | drive s|tatus */|
|00004120| 0a 45 4e 44 5f 4f 46 5f | 73 6d 74 69 6f 2e 68 0a |.END_OF_|smtio.h.|
|00004130| 69 66 20 74 65 73 74 20 | 34 34 35 20 2d 6e 65 20 |if test |445 -ne |
|00004140| 60 77 63 20 2d 63 20 3c | 73 6d 74 69 6f 2e 68 60 |`wc -c <|smtio.h`|
|00004150| 3b 20 74 68 65 6e 0a 20 | 20 20 20 65 63 68 6f 20 |; then. | echo |
|00004160| 73 68 61 72 3a 20 5c 22 | 73 6d 74 69 6f 2e 68 5c |shar: \"|smtio.h\|
|00004170| 22 20 75 6e 70 61 63 6b | 65 64 20 77 69 74 68 20 |" unpack|ed with |
|00004180| 77 72 6f 6e 67 20 73 69 | 7a 65 21 0a 66 69 0a 23 |wrong si|ze!.fi.#|
|00004190| 20 65 6e 64 20 6f 66 20 | 6f 76 65 72 77 72 69 74 | end of |overwrit|
|000041a0| 69 6e 67 20 63 68 65 63 | 6b 0a 66 69 0a 69 66 20 |ing chec|k.fi.if |
|000041b0| 74 65 73 74 20 2d 66 20 | 73 6d 74 6f 70 73 2e 68 |test -f |smtops.h|
|000041c0| 20 2d 61 20 22 24 7b 31 | 7d 22 20 21 3d 20 22 2d | -a "${1|}" != "-|
|000041d0| 63 22 20 3b 20 74 68 65 | 6e 20 0a 20 20 65 63 68 |c" ; the|n . ech|
|000041e0| 6f 20 73 68 61 72 3a 20 | 57 69 6c 6c 20 6e 6f 74 |o shar: |Will not|
|000041f0| 20 6f 76 65 72 2d 77 72 | 69 74 65 20 65 78 69 73 | over-wr|ite exis|
|00004200| 74 69 6e 67 20 66 69 6c | 65 20 5c 22 73 6d 74 6f |ting fil|e \"smto|
|00004210| 70 73 2e 68 5c 22 0a 65 | 6c 73 65 0a 65 63 68 6f |ps.h\".e|lse.echo|
|00004220| 20 73 68 61 72 3a 20 45 | 78 74 72 61 63 74 69 6e | shar: E|xtractin|
|00004230| 67 20 5c 22 73 6d 74 6f | 70 73 2e 68 5c 22 20 5c |g \"smto|ps.h\" \|
|00004240| 28 33 30 38 20 63 68 61 | 72 61 63 74 65 72 73 5c |(308 cha|racters\|
|00004250| 29 0a 73 65 64 20 22 73 | 2f 5e 58 2f 2f 22 20 3e |).sed "s|/^X//" >|
|00004260| 73 6d 74 6f 70 73 2e 68 | 20 3c 3c 27 45 4e 44 5f |smtops.h| <<'END_|
|00004270| 4f 46 5f 73 6d 74 6f 70 | 73 2e 68 27 0a 58 23 69 |OF_smtop|s.h'.X#i|
|00004280| 66 6e 64 65 66 09 53 4d | 54 4f 50 53 5f 48 0a 58 |fndef.SM|TOPS_H.X|
|00004290| 23 64 65 66 69 6e 65 09 | 53 4d 54 4f 50 53 5f 48 |#define.|SMTOPS_H|
|000042a0| 20 31 0a 58 0a 58 23 69 | 6e 63 6c 75 64 65 20 22 | 1.X.X#i|nclude "|
|000042b0| 73 6d 74 69 6f 2e 68 22 | 0a 58 65 78 74 65 72 6e |smtio.h"|.Xextern|
|000042c0| 09 73 74 72 75 63 74 20 | 73 6d 74 5f 73 74 61 74 |.struct |smt_stat|
|000042d0| 09 2a 73 6d 74 5f 73 74 | 61 74 75 73 28 29 3b 0a |.*smt_st|atus();.|
|000042e0| 58 0a 58 65 78 74 65 72 | 6e 09 69 6e 74 09 20 20 |X.Xexter|n.int. |
|000042f0| 20 09 20 73 6d 74 5f 6f | 70 65 6e 28 29 3b 0a 58 | . smt_o|pen();.X|
|00004300| 65 78 74 65 72 6e 09 76 | 6f 69 64 09 20 20 20 09 |extern.v|oid. .|
|00004310| 20 73 6d 74 5f 63 6c 6f | 73 65 28 29 3b 0a 58 65 | smt_clo|se();.Xe|
|00004320| 78 74 65 72 6e 20 20 76 | 6f 69 64 09 09 20 73 6d |xtern v|oid.. sm|
|00004330| 74 5f 63 6c 6f 73 65 5f | 77 69 74 68 6f 75 74 5f |t_close_|without_|
|00004340| 65 6f 66 28 29 3b 0a 58 | 65 78 74 65 72 6e 09 76 |eof();.X|extern.v|
|00004350| 6f 69 64 09 20 20 20 09 | 20 73 6d 74 5f 72 65 77 |oid. .| smt_rew|
|00004360| 69 6e 64 28 29 3b 0a 58 | 65 78 74 65 72 6e 09 76 |ind();.X|extern.v|
|00004370| 6f 69 64 09 09 20 73 6d | 74 5f 65 6f 66 28 29 3b |oid.. sm|t_eof();|
|00004380| 0a 58 65 78 74 65 72 6e | 09 69 6e 74 09 09 20 73 |.Xextern|.int.. s|
|00004390| 6d 74 5f 72 65 61 64 28 | 29 3b 0a 58 65 78 74 65 |mt_read(|);.Xexte|
|000043a0| 72 6e 09 69 6e 74 09 09 | 20 73 6d 74 5f 77 72 69 |rn.int..| smt_wri|
|000043b0| 74 65 28 29 3b 0a 58 0a | 58 23 65 6e 64 69 66 0a |te();.X.|X#endif.|
|000043c0| 45 4e 44 5f 4f 46 5f 73 | 6d 74 6f 70 73 2e 68 0a |END_OF_s|mtops.h.|
|000043d0| 69 66 20 74 65 73 74 20 | 33 30 38 20 2d 6e 65 20 |if test |308 -ne |
|000043e0| 60 77 63 20 2d 63 20 3c | 73 6d 74 6f 70 73 2e 68 |`wc -c <|smtops.h|
|000043f0| 60 3b 20 74 68 65 6e 0a | 20 20 20 20 65 63 68 6f |`; then.| echo|
|00004400| 20 73 68 61 72 3a 20 5c | 22 73 6d 74 6f 70 73 2e | shar: \|"smtops.|
|00004410| 68 5c 22 20 75 6e 70 61 | 63 6b 65 64 20 77 69 74 |h\" unpa|cked wit|
|00004420| 68 20 77 72 6f 6e 67 20 | 73 69 7a 65 21 0a 66 69 |h wrong |size!.fi|
|00004430| 0a 23 20 65 6e 64 20 6f | 66 20 6f 76 65 72 77 72 |.# end o|f overwr|
|00004440| 69 74 69 6e 67 20 63 68 | 65 63 6b 0a 66 69 0a 69 |iting ch|eck.fi.i|
|00004450| 66 20 74 65 73 74 20 2d | 66 20 65 78 65 74 6f 63 |f test -|f exetoc|
|00004460| 2e 6d 61 6e 20 2d 61 20 | 22 24 7b 31 7d 22 20 21 |.man -a |"${1}" !|
|00004470| 3d 20 22 2d 63 22 20 3b | 20 74 68 65 6e 20 0a 20 |= "-c" ;| then . |
|00004480| 20 65 63 68 6f 20 73 68 | 61 72 3a 20 57 69 6c 6c | echo sh|ar: Will|
|00004490| 20 6e 6f 74 20 6f 76 65 | 72 2d 77 72 69 74 65 20 | not ove|r-write |
|000044a0| 65 78 69 73 74 69 6e 67 | 20 66 69 6c 65 20 5c 22 |existing| file \"|
|000044b0| 65 78 65 74 6f 63 2e 6d | 61 6e 5c 22 0a 65 6c 73 |exetoc.m|an\".els|
|000044c0| 65 0a 65 63 68 6f 20 73 | 68 61 72 3a 20 45 78 74 |e.echo s|har: Ext|
|000044d0| 72 61 63 74 69 6e 67 20 | 5c 22 65 78 65 74 6f 63 |racting |\"exetoc|
|000044e0| 2e 6d 61 6e 5c 22 20 5c | 28 33 32 32 34 20 63 68 |.man\" \|(3224 ch|
|000044f0| 61 72 61 63 74 65 72 73 | 5c 29 0a 73 65 64 20 22 |aracters|\).sed "|
|00004500| 73 2f 5e 58 2f 2f 22 20 | 3e 65 78 65 74 6f 63 2e |s/^X//" |>exetoc.|
|00004510| 6d 61 6e 20 3c 3c 27 45 | 4e 44 5f 4f 46 5f 65 78 |man <<'E|ND_OF_ex|
|00004520| 65 74 6f 63 2e 6d 61 6e | 27 0a 58 2e 54 48 20 45 |etoc.man|'.X.TH E|
|00004530| 58 45 54 4f 43 20 31 4c | 20 22 32 37 20 4f 63 74 |XETOC 1L| "27 Oct|
|00004540| 20 31 39 38 39 22 0a 58 | 2e 53 48 20 4e 41 4d 45 | 1989".X|.SH NAME|
|00004550| 0a 58 65 78 65 74 6f 63 | 20 5c 2d 20 4d 61 6e 61 |.Xexetoc| \- Mana|
|00004560| 67 65 20 61 20 74 61 62 | 6c 65 20 6f 66 20 63 6f |ge a tab|le of co|
|00004570| 6e 74 65 6e 74 73 20 6f | 6e 20 61 6e 20 45 78 65 |ntents o|n an Exe|
|00004580| 62 79 74 65 20 32 47 42 | 20 74 61 70 65 20 63 61 |byte 2GB| tape ca|
|00004590| 72 74 72 69 64 67 65 2e | 0a 58 2e 53 48 20 53 59 |rtridge.|.X.SH SY|
|000045a0| 4e 4f 50 53 49 53 0a 58 | 2e 42 20 65 78 65 74 6f |NOPSIS.X|.B exeto|
|000045b0| 63 0a 58 2e 42 49 20 5b | 2d 74 20 74 61 70 65 20 |c.X.BI [|-t tape |
|000045c0| 5d 0a 58 2e 42 49 20 5b | 2d 67 20 66 69 6c 65 20 |].X.BI [|-g file |
|000045d0| 5d 0a 58 2e 42 49 20 5b | 2d 70 20 66 69 6c 65 20 |].X.BI [|-p file |
|000045e0| 5d 0a 58 2e 42 20 20 5b | 2d 69 5d 0a 58 2e 42 20 |].X.B [|-i].X.B |
|000045f0| 20 5b 2d 76 5d 0a 58 2e | 42 20 20 5b 2d 71 5d 0a | [-v].X.|B [-q].|
|00004600| 58 2e 53 48 20 44 45 53 | 43 52 49 50 54 49 4f 4e |X.SH DES|CRIPTION|
|00004610| 0a 58 2e 42 20 45 78 65 | 74 6f 63 20 69 73 20 61 |.X.B Exe|toc is a|
|00004620| 20 70 72 6f 67 72 61 6d | 20 74 68 61 74 20 61 6c | program| that al|
|00004630| 6c 6f 77 73 20 79 6f 75 | 20 74 6f 20 77 72 69 74 |lows you| to writ|
|00004640| 65 20 61 20 74 61 62 6c | 65 20 6f 66 20 63 6f 6e |e a tabl|e of con|
|00004650| 74 65 6e 74 73 0a 58 66 | 69 6c 65 20 6f 6e 74 6f |tents.Xf|ile onto|
|00004660| 20 74 68 65 20 66 72 6f | 6e 74 20 6f 66 20 61 20 | the fro|nt of a |
|00004670| 32 47 42 20 68 65 6c 69 | 63 61 6c 20 73 63 61 6e |2GB heli|cal scan|
|00004680| 20 74 61 70 65 2c 20 72 | 65 61 64 20 69 74 20 62 | tape, r|ead it b|
|00004690| 61 63 6b 20 6c 61 74 65 | 72 2c 20 0a 58 61 6e 64 |ack late|r, .Xand|
|000046a0| 20 75 70 64 61 74 65 20 | 69 74 20 77 69 74 68 6f | update |it witho|
|000046b0| 75 74 20 64 69 73 74 75 | 72 62 69 6e 67 20 74 68 |ut distu|rbing th|
|000046c0| 65 20 6f 74 68 65 72 20 | 63 6f 6e 74 65 6e 74 73 |e other |contents|
|000046d0| 20 6f 66 20 74 68 65 20 | 74 61 70 65 2e 20 20 0a | of the |tape. .|
|000046e0| 58 2e 50 50 0a 58 49 74 | 20 64 6f 65 73 20 74 68 |X.PP.XIt| does th|
|000046f0| 69 73 20 62 79 20 72 65 | 73 65 72 76 69 6e 67 20 |is by re|serving |
|00004700| 61 20 66 69 78 65 64 20 | 61 6d 6f 75 6e 74 20 6f |a fixed |amount o|
|00004710| 66 20 73 70 61 63 65 20 | 61 74 20 74 68 65 20 73 |f space |at the s|
|00004720| 74 61 72 74 20 6f 66 20 | 0a 58 74 68 65 20 74 61 |tart of |.Xthe ta|
|00004730| 70 65 20 28 61 62 6f 75 | 74 20 31 30 20 6d 65 67 |pe (abou|t 10 meg|
|00004740| 61 62 79 74 65 73 20 69 | 6e 20 74 68 65 20 63 75 |abytes i|n the cu|
|00004750| 72 72 65 6e 74 20 69 6d | 70 6c 65 6d 65 6e 74 61 |rrent im|plementa|
|00004760| 74 69 6f 6e 29 20 74 68 | 61 74 20 63 61 6e 20 62 |tion) th|at can b|
|00004770| 65 20 0a 58 75 73 65 64 | 20 74 6f 20 73 74 6f 72 |e .Xused| to stor|
|00004780| 65 20 69 6e 66 6f 72 6d | 61 74 69 6f 6e 20 61 62 |e inform|ation ab|
|00004790| 6f 75 74 20 74 68 65 20 | 63 6f 6e 74 65 6e 74 73 |out the |contents|
|000047a0| 20 6f 66 20 74 68 65 20 | 74 61 70 65 2e 20 20 41 | of the |tape. A|
|000047b0| 62 6f 75 74 20 32 20 0a | 58 6d 65 67 61 62 79 74 |bout 2 .|Xmegabyt|
|000047c0| 65 73 20 6f 66 20 74 68 | 69 73 20 73 70 61 63 65 |es of th|is space|
|000047d0| 20 69 73 20 61 76 61 69 | 6c 61 62 6c 65 20 66 6f | is avai|lable fo|
|000047e0| 72 20 6b 65 65 70 69 6e | 67 20 74 68 65 20 74 61 |r keepin|g the ta|
|000047f0| 62 6c 65 20 6f 66 0a 58 | 63 6f 6e 74 65 6e 74 73 |ble of.X|contents|
|00004800| 2e 20 20 54 68 65 20 72 | 65 73 74 20 61 63 74 73 |. The r|est acts|
|00004810| 20 61 73 20 61 20 62 75 | 66 66 65 72 20 73 70 61 | as a bu|ffer spa|
|00004820| 63 65 20 62 65 74 77 65 | 65 6e 20 74 68 65 20 65 |ce betwe|en the e|
|00004830| 6e 64 20 6f 66 20 74 68 | 65 20 74 61 62 6c 65 20 |nd of th|e table |
|00004840| 0a 58 6f 66 20 63 6f 6e | 74 65 6e 74 73 20 61 6e |.Xof con|tents an|
|00004850| 64 20 74 68 65 20 66 69 | 72 73 74 20 64 61 74 61 |d the fi|rst data|
|00004860| 20 66 69 6c 65 20 6f 6e | 20 74 68 65 20 74 61 70 | file on| the tap|
|00004870| 65 2e 0a 58 2e 53 48 20 | 4f 50 54 49 4f 4e 53 0a |e..X.SH |OPTIONS.|
|00004880| 58 2e 42 20 45 78 65 74 | 6f 63 20 75 6e 64 65 72 |X.B Exet|oc under|
|00004890| 73 74 61 6e 64 73 20 74 | 68 65 20 66 6f 6c 6c 6f |stands t|he follo|
|000048a0| 77 69 6e 67 20 6f 70 74 | 69 6f 6e 73 3a 0a 58 2e |wing opt|ions:.X.|
|000048b0| 54 50 0a 58 2e 42 49 20 | 2d 74 20 74 61 70 65 64 |TP.X.BI |-t taped|
|000048c0| 72 69 76 65 0a 58 53 65 | 74 73 20 74 68 65 20 74 |rive.XSe|ts the t|
|000048d0| 61 70 65 20 64 72 69 76 | 65 20 6e 61 6d 65 20 74 |ape driv|e name t|
|000048e0| 6f 20 73 6f 6d 65 74 68 | 69 6e 67 20 6f 74 68 65 |o someth|ing othe|
|000048f0| 72 20 74 68 61 6e 20 74 | 68 65 20 64 65 66 61 75 |r than t|he defau|
|00004900| 6c 74 2c 20 77 68 69 63 | 68 0a 58 69 73 20 64 65 |lt, whic|h.Xis de|
|00004910| 72 69 76 65 64 20 62 79 | 20 6c 6f 6f 6b 69 6e 67 |rived by| looking|
|00004920| 20 66 6f 72 20 74 68 65 | 20 65 6e 76 69 72 6f 6e | for the| environ|
|00004930| 6d 65 6e 74 20 76 61 72 | 69 61 62 6c 65 20 45 58 |ment var|iable EX|
|00004940| 45 54 4f 43 2c 20 6f 72 | 20 75 73 69 6e 67 0a 58 |ETOC, or| using.X|
|00004950| 22 2f 64 65 76 2f 72 73 | 6d 74 30 22 20 69 66 20 |"/dev/rs|mt0" if |
|00004960| 74 68 65 20 65 6e 76 69 | 72 6f 6e 6d 65 6e 74 20 |the envi|ronment |
|00004970| 76 61 72 69 61 62 6c 65 | 20 69 73 20 6e 6f 74 20 |variable| is not |
|00004980| 73 65 74 2e 20 20 45 78 | 65 74 6f 63 20 69 73 20 |set. Ex|etoc is |
|00004990| 6e 6f 72 6d 61 6c 6c 79 | 20 0a 58 6c 69 6e 6b 65 |normally| .Xlinke|
|000049a0| 64 20 77 69 74 68 20 74 | 68 65 20 72 65 6d 6f 74 |d with t|he remot|
|000049b0| 65 20 74 61 70 65 20 6c | 69 62 72 61 72 79 2c 20 |e tape l|ibrary, |
|000049c0| 61 6c 6c 6f 77 69 6e 67 | 20 79 6f 75 20 74 6f 20 |allowing| you to |
|000049d0| 75 73 65 20 0a 58 6e 61 | 6d 65 73 20 6f 66 20 74 |use .Xna|mes of t|
|000049e0| 68 65 20 66 6f 72 6d 20 | 5c 66 49 68 6f 73 74 3a |he form |\fIhost:|
|000049f0| 64 65 76 69 63 65 5c 66 | 50 20 66 6f 72 20 64 69 |device\f|P for di|
|00004a00| 72 65 63 74 20 61 63 63 | 65 73 73 20 74 6f 20 72 |rect acc|ess to r|
|00004a10| 65 6d 6f 74 65 20 74 61 | 70 65 20 0a 58 64 72 69 |emote ta|pe .Xdri|
|00004a20| 76 65 73 2e 0a 58 2e 54 | 50 0a 58 2e 42 49 20 2d |ves..X.T|P.X.BI -|
|00004a30| 67 20 66 69 6c 65 0a 58 | 47 65 74 73 20 74 68 65 |g file.X|Gets the|
|00004a40| 20 74 61 62 6c 65 20 6f | 66 20 63 6f 6e 74 65 6e | table o|f conten|
|00004a50| 74 73 20 66 72 6f 6d 20 | 74 68 65 20 74 61 70 65 |ts from |the tape|
|00004a60| 20 61 6e 64 20 70 6c 61 | 63 65 73 20 61 20 63 6f | and pla|ces a co|
|00004a70| 70 79 20 6f 66 0a 58 69 | 74 20 69 6e 74 6f 20 74 |py of.Xi|t into t|
|00004a80| 68 65 20 6e 61 6d 65 64 | 20 66 69 6c 65 2e 20 20 |he named| file. |
|00004a90| 49 66 20 5c 66 49 66 69 | 6c 65 5c 66 50 20 69 73 |If \fIfi|le\fP is|
|00004aa0| 20 67 69 76 65 6e 20 61 | 73 20 2d 2c 20 74 68 65 | given a|s -, the|
|00004ab0| 20 74 61 62 6c 65 20 6f | 66 20 0a 58 63 6f 6e 74 | table o|f .Xcont|
|00004ac0| 65 6e 74 73 20 69 73 20 | 63 6f 70 69 65 64 20 74 |ents is |copied t|
|00004ad0| 6f 20 73 74 61 6e 64 61 | 72 64 20 6f 75 74 70 75 |o standa|rd outpu|
|00004ae0| 74 2e 0a 58 2e 54 50 0a | 58 2e 42 49 20 2d 70 20 |t..X.TP.|X.BI -p |
|00004af0| 66 69 6c 65 0a 58 50 75 | 74 73 20 61 20 74 61 62 |file.XPu|ts a tab|
|00004b00| 6c 65 20 6f 66 20 63 6f | 6e 74 65 6e 74 73 20 6f |le of co|ntents o|
|00004b10| 6e 74 6f 20 74 68 65 20 | 74 61 70 65 2e 20 20 54 |nto the |tape. T|
|00004b20| 68 65 20 63 6f 6e 74 65 | 6e 74 73 20 6f 66 20 74 |he conte|nts of t|
|00004b30| 68 65 20 74 61 62 6c 65 | 0a 58 61 72 65 20 74 61 |he table|.Xare ta|
|00004b40| 6b 65 6e 20 66 72 6f 6d | 20 74 68 65 20 6e 61 6d |ken from| the nam|
|00004b50| 65 64 20 66 69 6c 65 2c | 20 6f 72 20 66 72 6f 6d |ed file,| or from|
|00004b60| 20 73 74 61 6e 64 61 72 | 64 20 69 6e 70 75 74 20 | standar|d input |
|00004b70| 69 66 20 5c 66 49 66 69 | 6c 65 5c 66 50 0a 58 69 |if \fIfi|le\fP.Xi|
|00004b80| 73 20 67 69 76 65 6e 20 | 61 73 20 2d 2e 20 20 54 |s given |as -. T|
|00004b90| 68 69 73 20 66 6c 61 67 | 20 6d 61 79 20 62 65 20 |his flag| may be |
|00004ba0| 75 73 65 64 20 74 6f 20 | 63 72 65 61 74 65 20 61 |used to |create a|
|00004bb0| 6e 64 20 72 65 77 72 69 | 74 65 20 74 61 62 6c 65 |nd rewri|te table|
|00004bc0| 73 0a 58 6f 66 20 63 6f | 6e 74 65 6e 74 73 2e 0a |s.Xof co|ntents..|
|00004bd0| 58 2e 54 50 0a 58 2e 42 | 20 2d 69 0a 58 49 6e 69 |X.TP.X.B| -i.XIni|
|00004be0| 74 69 61 6c 69 7a 65 73 | 20 61 20 74 61 70 65 20 |tializes| a tape |
|00004bf0| 62 79 20 63 72 65 61 74 | 69 6e 67 20 61 20 62 6c |by creat|ing a bl|
|00004c00| 61 6e 6b 20 74 61 62 6c | 65 20 6f 66 20 63 6f 6e |ank tabl|e of con|
|00004c10| 74 65 6e 74 73 20 61 74 | 20 74 68 65 0a 58 66 72 |tents at| the.Xfr|
|00004c20| 6f 6e 74 20 6f 66 20 74 | 68 65 20 74 61 70 65 2e |ont of t|he tape.|
|00004c30| 20 20 59 6f 75 20 6d 75 | 73 74 20 69 6e 69 74 69 | You mu|st initi|
|00004c40| 61 6c 69 7a 65 20 61 20 | 74 61 70 65 20 77 69 74 |alize a |tape wit|
|00004c50| 68 20 74 68 65 20 2d 69 | 20 66 6c 61 67 20 62 65 |h the -i| flag be|
|00004c60| 66 6f 72 65 0a 58 79 6f | 75 20 63 61 6e 20 77 72 |fore.Xyo|u can wr|
|00004c70| 69 74 65 20 61 20 74 61 | 62 6c 65 20 6f 66 20 63 |ite a ta|ble of c|
|00004c80| 6f 6e 74 65 6e 74 73 20 | 6f 6e 74 6f 20 69 74 20 |ontents |onto it |
|00004c90| 66 6f 72 20 74 68 65 20 | 66 69 72 73 74 20 74 69 |for the |first ti|
|00004ca0| 6d 65 2e 0a 58 2e 54 50 | 20 0a 58 2e 42 20 2d 76 |me..X.TP| .X.B -v|
|00004cb0| 0a 58 56 65 72 69 66 69 | 65 73 20 74 68 61 74 20 |.XVerifi|es that |
|00004cc0| 74 68 65 20 74 61 70 65 | 20 69 6e 20 74 68 65 20 |the tape| in the |
|00004cd0| 74 61 70 65 20 64 72 69 | 76 65 20 68 61 73 20 70 |tape dri|ve has p|
|00004ce0| 72 65 76 69 6f 75 73 6c | 79 20 62 65 65 6e 20 69 |reviousl|y been i|
|00004cf0| 6e 69 74 69 61 6c 69 7a | 65 64 0a 58 77 69 74 68 |nitializ|ed.Xwith|
|00004d00| 20 65 78 65 74 6f 63 20 | 2d 69 2e 0a 58 2e 54 50 | exetoc |-i..X.TP|
|00004d10| 0a 58 2e 42 20 2d 71 0a | 58 43 61 75 73 65 73 20 |.X.B -q.|XCauses |
|00004d20| 74 68 65 20 70 72 6f 67 | 72 61 6d 20 74 6f 20 77 |the prog|ram to w|
|00004d30| 6f 72 6b 20 6d 6f 72 65 | 20 71 75 69 65 74 6c 79 |ork more| quietly|
|00004d40| 20 74 68 61 6e 20 69 74 | 20 6f 74 68 65 72 77 69 | than it| otherwi|
|00004d50| 73 65 20 77 6f 75 6c 64 | 2e 0a 58 2e 4c 50 0a 58 |se would|..X.LP.X|
|00004d60| 41 6e 79 20 6f 74 68 65 | 72 20 6f 70 74 69 6f 6e |Any othe|r option|
|00004d70| 20 63 61 75 73 65 73 20 | 65 78 65 74 6f 63 20 74 | causes |exetoc t|
|00004d80| 6f 20 64 65 6c 69 76 65 | 72 20 61 20 6c 65 6e 67 |o delive|r a leng|
|00004d90| 74 68 79 20 6d 65 73 73 | 61 67 65 20 65 78 70 6c |thy mess|age expl|
|00004da0| 61 69 6e 69 6e 67 0a 58 | 74 68 65 20 6c 65 67 61 |aining.X|the lega|
|00004db0| 6c 20 66 6c 61 67 73 2e | 0a 58 2e 53 48 20 22 45 |l flags.|.X.SH "E|
|00004dc0| 4e 56 49 52 49 4f 4e 4d | 45 4e 54 20 56 41 52 49 |NVIRIONM|ENT VARI|
|00004dd0| 41 42 4c 45 53 22 0a 58 | 2e 54 50 0a 58 45 58 45 |ABLES".X|.TP.XEXE|
|00004de0| 42 59 54 45 0a 58 53 70 | 65 63 69 66 69 65 73 20 |BYTE.XSp|ecifies |
|00004df0| 74 68 65 20 64 65 66 61 | 75 6c 74 20 74 61 70 65 |the defa|ult tape|
|00004e00| 20 64 72 69 76 65 20 74 | 6f 20 75 73 65 2e 20 20 | drive t|o use. |
|00004e10| 45 78 65 74 6f 63 20 69 | 73 20 6e 6f 72 6d 61 6c |Exetoc i|s normal|
|00004e20| 6c 79 20 6c 69 6e 6b 65 | 64 0a 58 77 69 74 68 20 |ly linke|d.Xwith |
|00004e30| 74 68 65 20 72 65 6d 6f | 74 65 20 74 61 70 65 20 |the remo|te tape |
|00004e40| 6c 69 62 72 61 72 79 2c | 20 61 6c 6c 6f 77 69 6e |library,| allowin|
|00004e50| 67 20 79 6f 75 20 74 6f | 20 75 73 65 20 6e 61 6d |g you to| use nam|
|00004e60| 65 73 20 6f 66 20 74 68 | 65 20 66 6f 72 6d 0a 58 |es of th|e form.X|
|00004e70| 5c 66 49 68 6f 73 74 3a | 64 65 76 69 63 65 5c 66 |\fIhost:|device\f|
|00004e80| 50 20 66 6f 72 20 64 69 | 72 65 63 74 20 61 63 63 |P for di|rect acc|
|00004e90| 65 73 73 20 74 6f 20 72 | 65 6d 6f 74 65 20 74 61 |ess to r|emote ta|
|00004ea0| 70 65 20 64 72 69 76 65 | 73 2e 0a 58 2e 53 48 20 |pe drive|s..X.SH |
|00004eb0| 22 45 58 49 54 20 53 54 | 41 54 55 53 22 0a 58 45 |"EXIT ST|ATUS".XE|
|00004ec0| 78 65 74 6f 63 20 65 78 | 69 74 73 20 77 69 74 68 |xetoc ex|its with|
|00004ed0| 20 6f 6e 65 20 6f 66 20 | 74 68 65 20 66 6f 6c 6c | one of |the foll|
|00004ee0| 6f 77 69 6e 67 20 77 65 | 6c 6c 2d 64 65 66 69 6e |owing we|ll-defin|
|00004ef0| 65 64 20 73 74 61 74 75 | 73 20 63 6f 64 65 73 3a |ed statu|s codes:|
|00004f00| 0a 58 2e 54 50 0a 58 30 | 0a 58 69 6e 64 69 63 61 |.X.TP.X0|.Xindica|
|00004f10| 74 65 73 20 73 75 63 63 | 65 73 73 66 75 6c 20 63 |tes succ|essful c|
|00004f20| 6f 6d 70 6c 65 74 69 6f | 6e 20 6f 66 20 61 6e 20 |ompletio|n of an |
|00004f30| 6f 70 65 72 61 74 69 6f | 6e 2e 0a 58 2e 54 50 0a |operatio|n..X.TP.|
|00004f40| 58 31 0a 58 69 6e 64 69 | 63 61 74 65 73 20 61 6e |X1.Xindi|cates an|
|00004f50| 20 65 72 72 6f 72 20 69 | 6e 20 75 73 61 67 65 20 | error i|n usage |
|00004f60| 28 69 6c 6c 65 67 61 6c | 20 63 6f 6d 6d 61 6e 64 |(illegal| command|
|00004f70| 20 6c 69 6e 65 20 66 6c | 61 67 2c 20 66 6f 72 20 | line fl|ag, for |
|00004f80| 69 6e 73 74 61 6e 63 65 | 29 2e 0a 58 2e 54 50 0a |instance|)..X.TP.|
|00004f90| 58 32 0a 58 69 6e 64 69 | 63 61 74 65 73 20 61 6e |X2.Xindi|cates an|
|00004fa0| 20 49 2f 4f 20 65 72 72 | 6f 72 20 6f 66 20 73 6f | I/O err|or of so|
|00004fb0| 6d 65 20 6b 69 6e 64 2e | 20 20 41 20 64 69 61 67 |me kind.| A diag|
|00004fc0| 6e 6f 73 74 69 63 20 6d | 65 73 73 61 67 65 20 69 |nostic m|essage i|
|00004fd0| 73 20 70 72 69 6e 74 65 | 64 0a 58 6f 6e 20 73 74 |s printe|d.Xon st|
|00004fe0| 61 6e 64 61 72 64 20 65 | 72 72 6f 72 20 69 6e 20 |andard e|rror in |
|00004ff0| 74 68 69 73 20 63 61 73 | 65 2c 20 65 78 70 6c 61 |this cas|e, expla|
|00005000| 69 6e 69 6e 67 20 77 68 | 61 74 20 74 68 65 20 65 |ining wh|at the e|
|00005010| 72 72 6f 72 20 77 61 73 | 2e 0a 58 2e 54 50 0a 58 |rror was|..X.TP.X|
|00005020| 33 0a 58 69 6e 64 69 63 | 61 74 65 73 20 74 68 61 |3.Xindic|ates tha|
|00005030| 74 20 61 20 72 65 61 64 | 2c 20 77 72 69 74 65 2c |t a read|, write,|
|00005040| 20 6f 72 20 76 65 72 69 | 66 79 20 6f 70 65 72 61 | or veri|fy opera|
|00005050| 74 69 6f 6e 20 77 61 73 | 20 61 74 74 65 6d 70 74 |tion was| attempt|
|00005060| 65 64 20 77 69 74 68 20 | 61 20 0a 58 74 61 70 65 |ed with |a .Xtape|
|00005070| 20 74 68 61 74 20 68 61 | 73 20 6e 65 76 65 72 20 | that ha|s never |
|00005080| 62 65 65 6e 20 69 6e 69 | 74 69 61 6c 69 7a 65 64 |been ini|tialized|
|00005090| 20 74 6f 20 68 6f 6c 64 | 20 61 20 74 61 62 6c 65 | to hold| a table|
|000050a0| 20 6f 66 20 63 6f 6e 74 | 65 6e 74 73 2e 0a 58 2e | of cont|ents..X.|
|000050b0| 54 50 0a 58 34 0a 58 69 | 6e 64 69 63 61 74 65 73 |TP.X4.Xi|ndicates|
|000050c0| 20 74 68 61 74 20 74 68 | 65 20 74 61 62 6c 65 20 | that th|e table |
|000050d0| 6f 66 20 63 6f 6e 74 65 | 6e 74 73 20 66 69 6c 65 |of conte|nts file|
|000050e0| 20 79 6f 75 20 61 72 65 | 20 74 72 79 69 6e 67 20 | you are| trying |
|000050f0| 74 6f 20 77 72 69 74 65 | 20 6f 6e 74 6f 0a 58 74 |to write| onto.Xt|
|00005100| 68 65 20 74 61 70 65 20 | 69 73 20 74 6f 6f 20 6c |he tape |is too l|
|00005110| 61 72 67 65 20 74 6f 20 | 66 69 74 2e 0a 58 2e 53 |arge to |fit..X.S|
|00005120| 48 20 42 55 47 53 0a 58 | 54 68 65 20 74 61 70 65 |H BUGS.X|The tape|
|00005130| 20 69 73 20 72 65 77 6f | 75 6e 64 20 61 66 74 65 | is rewo|und afte|
|00005140| 72 20 5c 66 49 61 6e 79 | 5c 66 50 20 65 78 65 74 |r \fIany|\fP exet|
|00005150| 6f 63 20 6f 70 65 72 61 | 74 69 6f 6e 2c 20 65 76 |oc opera|tion, ev|
|00005160| 65 6e 20 69 66 20 74 68 | 65 20 6e 6f 2d 72 65 77 |en if th|e no-rew|
|00005170| 69 6e 64 0a 58 64 65 76 | 69 63 65 20 77 61 73 20 |ind.Xdev|ice was |
|00005180| 73 70 65 63 69 66 69 65 | 64 20 6f 6e 20 74 68 65 |specifie|d on the|
|00005190| 20 63 6f 6d 6d 61 6e 64 | 20 6c 69 6e 65 2e 0a 58 | command| line..X|
|000051a0| 2e 53 48 20 22 53 45 45 | 20 41 4c 53 4f 22 0a 58 |.SH "SEE| ALSO".X|
|000051b0| 2e 6e 66 0a 58 64 64 28 | 31 29 2c 20 62 64 64 28 |.nf.Xdd(|1), bdd(|
|000051c0| 31 29 2c 20 6d 74 28 31 | 29 0a 58 2e 53 48 20 41 |1), mt(1|).X.SH A|
|000051d0| 55 54 48 4f 52 0a 58 2e | 6e 66 0a 58 4d 61 74 74 |UTHOR.X.|nf.XMatt|
|000051e0| 20 4c 61 6e 64 61 75 2c | 20 42 42 4e 20 53 79 73 | Landau,| BBN Sys|
|000051f0| 74 65 6d 73 20 61 6e 64 | 20 54 65 63 68 6e 6f 6c |tems and| Technol|
|00005200| 6f 67 69 65 73 20 43 6f | 72 70 2e 20 20 28 6d 6c |ogies Co|rp. (ml|
|00005210| 61 6e 64 61 75 40 62 62 | 6e 2e 63 6f 6d 29 0a 45 |andau@bb|n.com).E|
|00005220| 4e 44 5f 4f 46 5f 65 78 | 65 74 6f 63 2e 6d 61 6e |ND_OF_ex|etoc.man|
|00005230| 0a 69 66 20 74 65 73 74 | 20 33 32 32 34 20 2d 6e |.if test| 3224 -n|
|00005240| 65 20 60 77 63 20 2d 63 | 20 3c 65 78 65 74 6f 63 |e `wc -c| <exetoc|
|00005250| 2e 6d 61 6e 60 3b 20 74 | 68 65 6e 0a 20 20 20 20 |.man`; t|hen. |
|00005260| 65 63 68 6f 20 73 68 61 | 72 3a 20 5c 22 65 78 65 |echo sha|r: \"exe|
|00005270| 74 6f 63 2e 6d 61 6e 5c | 22 20 75 6e 70 61 63 6b |toc.man\|" unpack|
|00005280| 65 64 20 77 69 74 68 20 | 77 72 6f 6e 67 20 73 69 |ed with |wrong si|
|00005290| 7a 65 21 0a 66 69 0a 23 | 20 65 6e 64 20 6f 66 20 |ze!.fi.#| end of |
|000052a0| 6f 76 65 72 77 72 69 74 | 69 6e 67 20 63 68 65 63 |overwrit|ing chec|
|000052b0| 6b 0a 66 69 0a 65 63 68 | 6f 20 73 68 61 72 3a 20 |k.fi.ech|o shar: |
|000052c0| 45 6e 64 20 6f 66 20 73 | 68 65 6c 6c 20 61 72 63 |End of s|hell arc|
|000052d0| 68 69 76 65 2e 0a 65 78 | 69 74 20 30 0a 0a 65 78 |hive..ex|it 0..ex|
|000052e0| 69 74 20 30 20 23 20 4a | 75 73 74 20 69 6e 20 63 |it 0 # J|ust in c|
|000052f0| 61 73 65 2e 2e 2e 0a | |ase.... | |
+--------+-------------------------+-------------------------+--------+--------+