home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume8 / jove / part03 < prev    next >
SHell self-extracting ARchive  |  1987-02-02  |  57.8 KB

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).

ConfidenceProgramDetectionMatch TypeSupport
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 30 38 69 30 32 |Subject:| v08i02|
|00000010| 32 3a 20 20 54 68 65 20 | 4a 4f 56 45 20 74 65 78 |2: The |JOVE tex|
|00000020| 74 20 65 64 69 74 6f 72 | 2c 20 50 61 72 74 30 33 |t editor|, Part03|
|00000030| 2f 31 33 0a 4e 65 77 73 | 67 72 6f 75 70 73 3a 20 |/13.News|groups: |
|00000040| 6d 6f 64 2e 73 6f 75 72 | 63 65 73 0a 41 70 70 72 |mod.sour|ces.Appr|
|00000050| 6f 76 65 64 3a 20 6d 69 | 72 72 6f 72 21 72 73 0a |oved: mi|rror!rs.|
|00000060| 0a 53 75 62 6d 69 74 74 | 65 64 20 62 79 3a 20 73 |.Submitt|ed by: s|
|00000070| 65 69 73 6d 6f 21 72 6f | 63 68 65 73 74 65 72 21 |eismo!ro|chester!|
|00000080| 6a 70 61 79 6e 65 20 28 | 4a 6f 6e 61 74 68 61 6e |jpayne (|Jonathan|
|00000090| 20 50 61 79 6e 65 29 0a | 4d 6f 64 2e 73 6f 75 72 | Payne).|Mod.sour|
|000000a0| 63 65 73 3a 20 56 6f 6c | 75 6d 65 20 38 2c 20 49 |ces: Vol|ume 8, I|
|000000b0| 73 73 75 65 20 32 32 0a | 41 72 63 68 69 76 65 2d |ssue 22.|Archive-|
|000000c0| 6e 61 6d 65 3a 20 6a 6f | 76 65 2f 50 61 72 74 30 |name: jo|ve/Part0|
|000000d0| 33 0a 0a 23 21 20 2f 62 | 69 6e 2f 73 68 0a 23 20 |3..#! /b|in/sh.# |
|000000e0| 54 68 69 73 20 69 73 20 | 61 20 73 68 65 6c 6c 20 |This is |a shell |
|000000f0| 61 72 63 68 69 76 65 2e | 20 20 52 65 6d 6f 76 65 |archive.| Remove|
|00000100| 20 61 6e 79 74 68 69 6e | 67 20 62 65 66 6f 72 65 | anythin|g before|
|00000110| 20 74 68 69 73 20 6c 69 | 6e 65 2c 0a 23 20 74 68 | this li|ne,.# th|
|00000120| 65 6e 20 75 6e 70 61 63 | 6b 20 69 74 20 62 79 20 |en unpac|k it by |
|00000130| 73 61 76 69 6e 67 20 69 | 74 20 69 6e 20 61 20 66 |saving i|t in a f|
|00000140| 69 6c 65 20 61 6e 64 20 | 74 79 70 69 6e 67 20 22 |ile and |typing "|
|00000150| 73 68 20 66 69 6c 65 22 | 2e 0a 23 20 49 66 20 61 |sh file"|..# If a|
|00000160| 6c 6c 20 67 6f 65 73 20 | 77 65 6c 6c 2c 20 79 6f |ll goes |well, yo|
|00000170| 75 20 77 69 6c 6c 20 73 | 65 65 20 74 68 65 20 6d |u will s|ee the m|
|00000180| 65 73 73 61 67 65 20 22 | 45 6e 64 20 6f 66 20 61 |essage "|End of a|
|00000190| 72 63 68 69 76 65 20 33 | 20 28 6f 66 20 31 33 29 |rchive 3| (of 13)|
|000001a0| 2e 22 0a 23 20 43 6f 6e | 74 65 6e 74 73 3a 20 20 |.".# Con|tents: |
|000001b0| 65 78 74 65 6e 64 2e 63 | 20 66 70 2e 63 20 66 75 |extend.c| fp.c fu|
|000001c0| 6e 63 64 65 66 73 2e 63 | 20 69 6e 73 65 72 74 2e |ncdefs.c| insert.|
|000001d0| 63 20 74 61 62 6c 65 2e | 63 0a 50 41 54 48 3d 2f |c table.|c.PATH=/|
|000001e0| 62 69 6e 3a 2f 75 73 72 | 2f 62 69 6e 3a 2f 75 73 |bin:/usr|/bin:/us|
|000001f0| 72 2f 75 63 62 3b 20 65 | 78 70 6f 72 74 20 50 41 |r/ucb; e|xport PA|
|00000200| 54 48 0a 65 63 68 6f 20 | 73 68 61 72 3a 20 65 78 |TH.echo |shar: ex|
|00000210| 74 72 61 63 74 69 6e 67 | 20 22 27 65 78 74 65 6e |tracting| "'exten|
|00000220| 64 2e 63 27 22 20 27 28 | 31 37 39 36 39 20 63 68 |d.c'" '(|17969 ch|
|00000230| 61 72 61 63 74 65 72 73 | 29 27 0a 69 66 20 74 65 |aracters|)'.if te|
|00000240| 73 74 20 2d 66 20 27 65 | 78 74 65 6e 64 2e 63 27 |st -f 'e|xtend.c'|
|00000250| 20 3b 20 74 68 65 6e 20 | 0a 20 20 65 63 68 6f 20 | ; then |. echo |
|00000260| 73 68 61 72 3a 20 77 69 | 6c 6c 20 6e 6f 74 20 6f |shar: wi|ll not o|
|00000270| 76 65 72 2d 77 72 69 74 | 65 20 65 78 69 73 74 69 |ver-writ|e existi|
|00000280| 6e 67 20 66 69 6c 65 20 | 22 27 65 78 74 65 6e 64 |ng file |"'extend|
|00000290| 2e 63 27 22 0a 65 6c 73 | 65 0a 73 65 64 20 27 73 |.c'".els|e.sed 's|
|000002a0| 2f 5e 58 2f 2f 27 20 3e | 65 78 74 65 6e 64 2e 63 |/^X//' >|extend.c|
|000002b0| 20 3c 3c 27 40 2f 2f 45 | 2a 4f 2a 46 20 65 78 74 | <<'@//E|*O*F ext|
|000002c0| 65 6e 64 2e 63 2f 2f 27 | 0a 58 2f 2a 2a 2a 2a 2a |end.c//'|.X/*****|
|000002d0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000002e0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000002f0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000300| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000310| 2a 2a 2a 0a 58 20 2a 20 | 54 68 69 73 20 70 72 6f |***.X * |This pro|
|00000320| 67 72 61 6d 20 69 73 20 | 43 6f 70 79 72 69 67 68 |gram is |Copyrigh|
|00000330| 74 20 28 43 29 20 31 39 | 38 36 20 62 79 20 4a 6f |t (C) 19|86 by Jo|
|00000340| 6e 61 74 68 61 6e 20 50 | 61 79 6e 65 2e 20 20 4a |nathan P|ayne. J|
|00000350| 4f 56 45 20 69 73 20 20 | 20 20 20 20 20 2a 0a 58 |OVE is | *.X|
|00000360| 20 2a 20 70 72 6f 76 69 | 64 65 64 20 74 6f 20 79 | * provi|ded to y|
|00000370| 6f 75 20 77 69 74 68 6f | 75 74 20 63 68 61 72 67 |ou witho|ut charg|
|00000380| 65 2c 20 61 6e 64 20 77 | 69 74 68 20 6e 6f 20 77 |e, and w|ith no w|
|00000390| 61 72 72 61 6e 74 79 2e | 20 20 59 6f 75 20 6d 61 |arranty.| You ma|
|000003a0| 79 20 67 69 76 65 20 20 | 2a 0a 58 20 2a 20 61 77 |y give |*.X * aw|
|000003b0| 61 79 20 63 6f 70 69 65 | 73 20 6f 66 20 4a 4f 56 |ay copie|s of JOV|
|000003c0| 45 2c 20 69 6e 63 6c 75 | 64 69 6e 67 20 73 6f 75 |E, inclu|ding sou|
|000003d0| 72 63 65 73 2c 20 70 72 | 6f 76 69 64 65 64 20 74 |rces, pr|ovided t|
|000003e0| 68 61 74 20 74 68 69 73 | 20 6e 6f 74 69 63 65 20 |hat this| notice |
|000003f0| 69 73 20 2a 0a 58 20 2a | 20 69 6e 63 6c 75 64 65 |is *.X *| include|
|00000400| 64 20 69 6e 20 61 6c 6c | 20 74 68 65 20 66 69 6c |d in all| the fil|
|00000410| 65 73 2e 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |es. | |
|00000420| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000430| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 2a 0a | | *.|
|00000440| 58 20 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |X ******|********|
|00000450| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000460| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000470| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000480| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2f 0a 58 0a 58 23 |********|**/.X.X#|
|00000490| 69 6e 63 6c 75 64 65 20 | 22 6a 6f 76 65 2e 68 22 |include |"jove.h"|
|000004a0| 0a 58 23 69 6e 63 6c 75 | 64 65 20 22 69 6f 2e 68 |.X#inclu|de "io.h|
|000004b0| 22 0a 58 23 69 6e 63 6c | 75 64 65 20 22 74 65 72 |".X#incl|ude "ter|
|000004c0| 6d 63 61 70 2e 68 22 0a | 58 23 69 6e 63 6c 75 64 |mcap.h".|X#includ|
|000004d0| 65 20 22 63 74 79 70 65 | 2e 68 22 0a 58 23 69 66 |e "ctype|.h".X#if|
|000004e0| 64 65 66 20 4a 4f 42 5f | 43 4f 4e 54 52 4f 4c 0a |def JOB_|CONTROL.|
|000004f0| 58 23 09 69 6e 63 6c 75 | 64 65 20 3c 73 69 67 6e |X#.inclu|de <sign|
|00000500| 61 6c 2e 68 3e 0a 58 23 | 65 6e 64 69 66 0a 58 0a |al.h>.X#|endif.X.|
|00000510| 58 23 69 6e 63 6c 75 64 | 65 20 3c 76 61 72 61 72 |X#includ|e <varar|
|00000520| 67 73 2e 68 3e 0a 58 0a | 58 69 6e 74 09 49 6e 4a |gs.h>.X.|Xint.InJ|
|00000530| 6f 76 65 72 63 20 3d 20 | 30 3b 0a 58 0a 58 65 78 |overc = |0;.X.Xex|
|00000540| 74 65 72 6e 20 69 6e 74 | 09 67 65 74 63 68 28 29 |tern int|.getch()|
|00000550| 2c 0a 58 09 09 67 65 74 | 63 68 61 72 28 29 3b 0a |,.X..get|char();.|
|00000560| 58 0a 58 2f 2a 20 41 75 | 74 6f 20 65 78 65 63 75 |X.X/* Au|to execu|
|00000570| 74 65 20 63 6f 64 65 20 | 2a 2f 0a 58 0a 58 23 64 |te code |*/.X.X#d|
|00000580| 65 66 69 6e 65 20 4e 45 | 58 45 43 53 09 32 30 0a |efine NE|XECS.20.|
|00000590| 58 0a 58 70 72 69 76 61 | 74 65 20 73 74 72 75 63 |X.Xpriva|te struc|
|000005a0| 74 20 7b 0a 58 09 63 68 | 61 72 09 2a 61 5f 70 61 |t {.X.ch|ar.*a_pa|
|000005b0| 74 74 65 72 6e 3b 0a 58 | 09 64 61 74 61 5f 6f 62 |ttern;.X|.data_ob|
|000005c0| 6a 09 2a 61 5f 63 6d 64 | 3b 0a 58 7d 20 41 75 74 |j.*a_cmd|;.X} Aut|
|000005d0| 6f 45 78 65 63 73 5b 4e | 45 58 45 43 53 5d 20 3d |oExecs[N|EXECS] =|
|000005e0| 20 7b 30 7d 3b 0a 58 0a | 58 70 72 69 76 61 74 65 | {0};.X.|Xprivate|
|000005f0| 20 69 6e 74 09 45 78 65 | 63 49 6e 64 65 78 20 3d | int.Exe|cIndex =|
|00000600| 20 30 3b 0a 58 0a 58 2f | 2a 20 43 6f 6d 6d 61 6e | 0;.X.X/|* Comman|
|00000610| 64 20 61 75 74 6f 2d 65 | 78 65 63 75 74 65 2e 20 |d auto-e|xecute. |
|00000620| 2a 2f 0a 58 0a 58 43 41 | 75 74 6f 45 78 65 63 28 |*/.X.XCA|utoExec(|
|00000630| 29 0a 58 7b 0a 58 09 44 | 65 66 41 75 74 6f 45 78 |).X{.X.D|efAutoEx|
|00000640| 65 63 28 66 69 6e 64 63 | 6f 6d 29 3b 0a 58 7d 0a |ec(findc|om);.X}.|
|00000650| 58 0a 58 2f 2a 20 4d 61 | 63 72 6f 20 61 75 74 6f |X.X/* Ma|cro auto|
|00000660| 2d 65 78 65 63 75 74 65 | 2e 20 2a 2f 0a 58 0a 58 |-execute|. */.X.X|
|00000670| 4d 41 75 74 6f 45 78 65 | 63 28 29 0a 58 7b 0a 58 |MAutoExe|c().X{.X|
|00000680| 09 44 65 66 41 75 74 6f | 45 78 65 63 28 66 69 6e |.DefAuto|Exec(fin|
|00000690| 64 6d 61 63 29 3b 0a 58 | 7d 0a 58 0a 58 2f 2a 20 |dmac);.X|}.X.X/* |
|000006a0| 56 41 52 41 52 47 53 30 | 20 2a 2f 0a 58 0a 58 44 |VARARGS0| */.X.XD|
|000006b0| 65 66 41 75 74 6f 45 78 | 65 63 28 70 72 6f 63 29 |efAutoEx|ec(proc)|
|000006c0| 0a 58 64 61 74 61 5f 6f | 62 6a 09 2a 28 2a 70 72 |.Xdata_o|bj.*(*pr|
|000006d0| 6f 63 29 28 29 3b 0a 58 | 7b 0a 58 09 64 61 74 61 |oc)();.X|{.X.data|
|000006e0| 5f 6f 62 6a 09 2a 64 3b | 0a 58 09 63 68 61 72 09 |_obj.*d;|.X.char.|
|000006f0| 2a 70 61 74 74 65 72 6e | 3b 0a 58 09 69 6e 74 09 |*pattern|;.X.int.|
|00000700| 69 3b 0a 58 0a 58 09 69 | 66 20 28 45 78 65 63 49 |i;.X.X.i|f (ExecI|
|00000710| 6e 64 65 78 20 3e 3d 20 | 4e 45 58 45 43 53 29 0a |ndex >= |NEXECS).|
|00000720| 58 09 09 63 6f 6d 70 6c | 61 69 6e 28 22 54 6f 6f |X..compl|ain("Too|
|00000730| 20 6d 61 6e 79 20 61 75 | 74 6f 2d 65 78 65 63 75 | many au|to-execu|
|00000740| 74 65 73 2c 20 6d 61 78 | 20 25 64 2e 22 2c 20 4e |tes, max| %d.", N|
|00000750| 45 58 45 43 53 29 3b 0a | 58 09 69 66 20 28 28 64 |EXECS);.|X.if ((d|
|00000760| 20 3d 20 28 2a 70 72 6f | 63 29 28 50 72 6f 63 46 | = (*pro|c)(ProcF|
|00000770| 6d 74 29 29 20 3d 3d 20 | 30 29 0a 58 09 09 72 65 |mt)) == |0).X..re|
|00000780| 74 75 72 6e 3b 0a 58 09 | 70 61 74 74 65 72 6e 20 |turn;.X.|pattern |
|00000790| 3d 20 61 73 6b 28 28 63 | 68 61 72 20 2a 29 20 30 |= ask((c|har *) 0|
|000007a0| 2c 20 22 3a 20 25 66 20 | 25 73 20 22 2c 20 64 2d |, ": %f |%s ", d-|
|000007b0| 3e 4e 61 6d 65 29 3b 0a | 58 09 66 6f 72 20 28 69 |>Name);.|X.for (i|
|000007c0| 20 3d 20 30 3b 20 69 20 | 3c 20 45 78 65 63 49 6e | = 0; i |< ExecIn|
|000007d0| 64 65 78 3b 20 69 2b 2b | 29 0a 58 09 09 69 66 20 |dex; i++|).X..if |
|000007e0| 28 28 41 75 74 6f 45 78 | 65 63 73 5b 69 5d 2e 61 |((AutoEx|ecs[i].a|
|000007f0| 5f 63 6d 64 20 3d 3d 20 | 64 29 20 26 26 0a 58 09 |_cmd == |d) &&.X.|
|00000800| 09 20 20 20 20 28 73 74 | 72 63 6d 70 28 70 61 74 |. (st|rcmp(pat|
|00000810| 74 65 72 6e 2c 20 41 75 | 74 6f 45 78 65 63 73 5b |tern, Au|toExecs[|
|00000820| 69 5d 2e 61 5f 70 61 74 | 74 65 72 6e 29 20 3d 3d |i].a_pat|tern) ==|
|00000830| 20 30 29 29 0a 58 09 09 | 20 20 20 20 09 72 65 74 | 0)).X..| .ret|
|00000840| 75 72 6e 3b 09 09 2f 2a | 20 45 6c 69 6d 69 6e 61 |urn;../*| Elimina|
|00000850| 74 65 20 64 75 70 6c 69 | 63 61 74 65 73 2e 20 2a |te dupli|cates. *|
|00000860| 2f 0a 58 09 41 75 74 6f | 45 78 65 63 73 5b 45 78 |/.X.Auto|Execs[Ex|
|00000870| 65 63 49 6e 64 65 78 5d | 2e 61 5f 70 61 74 74 65 |ecIndex]|.a_patte|
|00000880| 72 6e 20 3d 20 63 6f 70 | 79 73 74 72 28 70 61 74 |rn = cop|ystr(pat|
|00000890| 74 65 72 6e 29 3b 0a 58 | 09 41 75 74 6f 45 78 65 |tern);.X|.AutoExe|
|000008a0| 63 73 5b 45 78 65 63 49 | 6e 64 65 78 5d 2e 61 5f |cs[ExecI|ndex].a_|
|000008b0| 63 6d 64 20 3d 20 64 3b | 0a 58 09 45 78 65 63 49 |cmd = d;|.X.ExecI|
|000008c0| 6e 64 65 78 2b 2b 3b 0a | 58 7d 0a 58 0a 58 2f 2a |ndex++;.|X}.X.X/*|
|000008d0| 20 44 6f 41 75 74 6f 45 | 78 65 63 3a 20 4e 45 57 | DoAutoE|xec: NEW|
|000008e0| 20 61 6e 64 20 4f 4c 44 | 20 61 72 65 20 66 69 6c | and OLD| are fil|
|000008f0| 65 20 6e 61 6d 65 73 2c | 20 61 6e 64 20 69 66 20 |e names,| and if |
|00000900| 4e 45 57 20 61 6e 64 20 | 4f 4c 44 20 61 72 65 6e |NEW and |OLD aren|
|00000910| 27 74 20 74 68 65 0a 58 | 20 20 20 73 61 6d 65 20 |'t the.X| same |
|00000920| 6b 69 6e 64 20 6f 66 20 | 66 69 6c 65 20 28 69 2e |kind of |file (i.|
|00000930| 65 2e 2c 20 6d 61 74 63 | 68 20 74 68 65 20 73 61 |e., matc|h the sa|
|00000940| 6d 65 20 70 61 74 74 65 | 72 6e 29 20 6f 72 20 4f |me patte|rn) or O|
|00000950| 4c 44 20 69 73 20 30 20 | 61 6e 64 20 69 74 0a 58 |LD is 0 |and it.X|
|00000960| 20 20 20 6d 61 74 63 68 | 65 73 2c 20 77 65 20 65 | match|es, we e|
|00000970| 78 65 63 75 74 65 20 74 | 68 65 20 63 6f 6d 6d 61 |xecute t|he comma|
|00000980| 6e 64 20 61 73 73 6f 63 | 69 61 74 65 64 20 77 69 |nd assoc|iated wi|
|00000990| 74 68 20 74 68 61 74 20 | 6b 69 6e 64 20 6f 66 20 |th that |kind of |
|000009a0| 66 69 6c 65 2e 20 2a 2f | 0a 58 20 0a 58 44 6f 41 |file. */|.X .XDoA|
|000009b0| 75 74 6f 45 78 65 63 28 | 6e 65 77 2c 20 6f 6c 64 |utoExec(|new, old|
|000009c0| 29 0a 58 72 65 67 69 73 | 74 65 72 20 63 68 61 72 |).Xregis|ter char|
|000009d0| 09 2a 6e 65 77 2c 0a 58 | 09 09 2a 6f 6c 64 3b 0a |.*new,.X|..*old;.|
|000009e0| 58 7b 0a 58 09 72 65 67 | 69 73 74 65 72 20 69 6e |X{.X.reg|ister in|
|000009f0| 74 09 69 3b 0a 58 0a 58 | 09 65 78 70 5f 70 20 3d |t.i;.X.X|.exp_p =|
|00000a00| 20 59 45 53 3b 0a 58 09 | 65 78 70 20 3d 20 31 3b | YES;.X.|exp = 1;|
|00000a10| 09 2f 2a 20 53 6f 20 6d | 69 6e 6f 72 20 6d 6f 64 |./* So m|inor mod|
|00000a20| 65 73 20 64 6f 6e 27 74 | 20 74 6f 67 67 6c 65 2e |es don't| toggle.|
|00000a30| 20 20 57 65 20 61 6c 77 | 61 79 73 20 77 61 6e 74 | We alw|ays want|
|00000a40| 0a 58 09 09 09 20 20 20 | 74 68 65 6d 20 6f 6e 2e |.X... |them on.|
|00000a50| 20 2a 2f 0a 58 09 69 66 | 20 28 6e 65 77 20 3d 3d | */.X.if| (new ==|
|00000a60| 20 30 29 0a 58 09 09 72 | 65 74 75 72 6e 3b 0a 58 | 0).X..r|eturn;.X|
|00000a70| 09 66 6f 72 20 28 69 20 | 3d 20 30 3b 20 69 20 3c |.for (i |= 0; i <|
|00000a80| 20 45 78 65 63 49 6e 64 | 65 78 3b 20 69 2b 2b 29 | ExecInd|ex; i++)|
|00000a90| 0a 58 09 09 69 66 20 28 | 28 4c 6f 6f 6b 69 6e 67 |.X..if (|(Looking|
|00000aa0| 41 74 28 41 75 74 6f 45 | 78 65 63 73 5b 69 5d 2e |At(AutoE|xecs[i].|
|00000ab0| 61 5f 70 61 74 74 65 72 | 6e 2c 20 6e 65 77 2c 20 |a_patter|n, new, |
|00000ac0| 30 29 29 20 26 26 0a 58 | 09 09 20 20 20 20 28 6f |0)) &&.X|.. (o|
|00000ad0| 6c 64 20 3d 3d 20 30 20 | 7c 7c 20 21 4c 6f 6f 6b |ld == 0 ||| !Look|
|00000ae0| 69 6e 67 41 74 28 41 75 | 74 6f 45 78 65 63 73 5b |ingAt(Au|toExecs[|
|00000af0| 69 5d 2e 61 5f 70 61 74 | 74 65 72 6e 2c 20 6f 6c |i].a_pat|tern, ol|
|00000b00| 64 2c 20 30 29 29 29 0a | 58 09 09 09 45 78 65 63 |d, 0))).|X...Exec|
|00000b10| 43 6d 64 28 41 75 74 6f | 45 78 65 63 73 5b 69 5d |Cmd(Auto|Execs[i]|
|00000b20| 2e 61 5f 63 6d 64 29 3b | 0a 58 7d 0a 58 0a 58 42 |.a_cmd);|.X}.X.XB|
|00000b30| 69 6e 64 41 4b 65 79 28 | 29 0a 58 7b 0a 58 09 42 |indAKey(|).X{.X.B|
|00000b40| 69 6e 64 53 6f 6d 65 74 | 68 69 6e 67 28 66 69 6e |indSomet|hing(fin|
|00000b50| 64 63 6f 6d 29 3b 0a 58 | 7d 0a 58 0a 58 42 69 6e |dcom);.X|}.X.XBin|
|00000b60| 64 4d 61 63 28 29 0a 58 | 7b 0a 58 09 42 69 6e 64 |dMac().X|{.X.Bind|
|00000b70| 53 6f 6d 65 74 68 69 6e | 67 28 66 69 6e 64 6d 61 |Somethin|g(findma|
|00000b80| 63 29 3b 0a 58 7d 0a 58 | 0a 58 65 78 74 65 72 6e |c);.X}.X|.Xextern|
|00000b90| 20 69 6e 74 09 45 73 63 | 50 72 65 66 69 78 28 29 | int.Esc|Prefix()|
|00000ba0| 2c 0a 58 09 09 43 74 6c | 78 50 72 65 66 69 78 28 |,.X..Ctl|xPrefix(|
|00000bb0| 29 2c 0a 58 09 09 4d 69 | 73 63 50 72 65 66 69 78 |),.X..Mi|scPrefix|
|00000bc0| 28 29 3b 0a 58 0a 58 64 | 61 74 61 5f 6f 62 6a 20 |();.X.Xd|ata_obj |
|00000bd0| 2a 2a 0a 58 49 73 50 72 | 65 66 69 78 28 63 70 29 |**.XIsPr|efix(cp)|
|00000be0| 0a 58 64 61 74 61 5f 6f | 62 6a 09 2a 63 70 3b 0a |.Xdata_o|bj.*cp;.|
|00000bf0| 58 7b 0a 58 09 69 6e 74 | 09 28 2a 70 72 6f 63 29 |X{.X.int|.(*proc)|
|00000c00| 28 29 3b 0a 58 0a 58 09 | 69 66 20 28 63 70 20 3d |();.X.X.|if (cp =|
|00000c10| 3d 20 30 20 7c 7c 20 28 | 63 70 2d 3e 54 79 70 65 |= 0 || (|cp->Type|
|00000c20| 20 26 20 54 59 50 45 4d | 41 53 4b 29 20 21 3d 20 | & TYPEM|ASK) != |
|00000c30| 46 55 4e 43 54 49 4f 4e | 29 0a 58 09 09 72 65 74 |FUNCTION|).X..ret|
|00000c40| 75 72 6e 20 30 3b 0a 58 | 09 70 72 6f 63 20 3d 20 |urn 0;.X|.proc = |
|00000c50| 28 28 73 74 72 75 63 74 | 20 63 6d 64 20 2a 29 20 |((struct| cmd *) |
|00000c60| 63 70 29 2d 3e 63 5f 70 | 72 6f 63 3b 0a 58 09 69 |cp)->c_p|roc;.X.i|
|00000c70| 66 20 28 70 72 6f 63 20 | 3d 3d 20 45 73 63 50 72 |f (proc |== EscPr|
|00000c80| 65 66 69 78 29 0a 58 09 | 09 72 65 74 75 72 6e 20 |efix).X.|.return |
|00000c90| 70 72 65 66 31 6d 61 70 | 3b 0a 58 09 69 66 20 28 |pref1map|;.X.if (|
|00000ca0| 70 72 6f 63 20 3d 3d 20 | 43 74 6c 78 50 72 65 66 |proc == |CtlxPref|
|00000cb0| 69 78 29 0a 58 09 09 72 | 65 74 75 72 6e 20 70 72 |ix).X..r|eturn pr|
|00000cc0| 65 66 32 6d 61 70 3b 0a | 58 09 69 66 20 28 70 72 |ef2map;.|X.if (pr|
|00000cd0| 6f 63 20 3d 3d 20 4d 69 | 73 63 50 72 65 66 69 78 |oc == Mi|scPrefix|
|00000ce0| 29 0a 58 09 09 72 65 74 | 75 72 6e 20 6d 69 73 63 |).X..ret|urn misc|
|00000cf0| 6d 61 70 3b 0a 58 09 72 | 65 74 75 72 6e 20 30 3b |map;.X.r|eturn 0;|
|00000d00| 0a 58 7d 0a 58 0a 58 75 | 6e 62 69 6e 64 5f 61 75 |.X}.X.Xu|nbind_au|
|00000d10| 78 28 63 29 0a 58 7b 0a | 58 09 69 66 20 28 63 20 |x(c).X{.|X.if (c |
|00000d20| 3d 3d 20 43 52 20 7c 7c | 20 63 20 3d 3d 20 4c 46 |== CR ||| c == LF|
|00000d30| 29 0a 58 09 09 72 65 74 | 75 72 6e 20 46 41 4c 53 |).X..ret|urn FALS|
|00000d40| 45 3b 09 2f 2a 20 74 65 | 6c 6c 73 20 64 6f 5f 61 |E;./* te|lls do_a|
|00000d50| 73 6b 20 74 6f 20 72 65 | 74 75 72 6e 20 2a 2f 0a |sk to re|turn */.|
|00000d60| 58 09 49 6e 73 65 72 74 | 28 63 29 3b 0a 58 09 72 |X.Insert|(c);.X.r|
|00000d70| 65 74 75 72 6e 20 21 46 | 41 4c 53 45 3b 0a 58 7d |eturn !F|ALSE;.X}|
|00000d80| 0a 58 0a 58 55 6e 62 69 | 6e 64 43 28 29 0a 58 7b |.X.XUnbi|ndC().X{|
|00000d90| 0a 58 09 63 68 61 72 09 | 2a 6b 65 79 73 3b 0a 58 |.X.char.|*keys;.X|
|00000da0| 09 64 61 74 61 5f 6f 62 | 6a 09 2a 2a 6d 61 70 20 |.data_ob|j.**map |
|00000db0| 3d 20 6d 61 69 6e 6d 61 | 70 3b 0a 58 0a 58 09 6b |= mainma|p;.X.X.k|
|00000dc0| 65 79 73 20 3d 20 64 6f | 5f 61 73 6b 28 22 5c 72 |eys = do|_ask("\r|
|00000dd0| 5c 6e 5c 30 31 5c 30 32 | 5c 30 33 5c 30 34 5c 30 |\n\01\02|\03\04\0|
|00000de0| 35 5c 30 36 5c 30 31 30 | 5c 30 31 31 5c 30 31 33 |5\06\010|\011\013|
|00000df0| 5c 30 31 34 5c 30 31 36 | 5c 30 31 37 5c 30 32 30 |\014\016|\017\020|
|00000e00| 5c 30 32 31 5c 30 32 32 | 5c 30 32 33 5c 30 32 34 |\021\022|\023\024|
|00000e10| 5c 30 32 35 5c 30 32 36 | 5c 30 32 37 5c 30 33 30 |\025\026|\027\030|
|00000e20| 5c 30 33 31 5c 30 33 32 | 5c 30 33 33 5c 30 33 34 |\031\032|\033\034|
|00000e30| 5c 30 33 35 5c 30 33 36 | 5c 30 33 37 22 2c 20 75 |\035\036|\037", u|
|00000e40| 6e 62 69 6e 64 5f 61 75 | 78 2c 20 28 63 68 61 72 |nbind_au|x, (char|
|00000e50| 20 2a 29 20 30 2c 20 50 | 72 6f 63 46 6d 74 29 3b | *) 0, P|rocFmt);|
|00000e60| 0a 58 09 69 66 20 28 6b | 65 79 73 20 3d 3d 20 30 |.X.if (k|eys == 0|
|00000e70| 29 0a 58 09 09 72 65 74 | 75 72 6e 3b 0a 58 09 66 |).X..ret|urn;.X.f|
|00000e80| 6f 72 20 28 3b 3b 29 20 | 7b 0a 58 09 09 69 66 20 |or (;;) |{.X..if |
|00000e90| 28 6b 65 79 73 5b 31 5d | 20 3d 3d 20 27 5c 30 27 |(keys[1]| == '\0'|
|00000ea0| 29 0a 58 09 09 09 62 72 | 65 61 6b 3b 0a 58 09 09 |).X...br|eak;.X..|
|00000eb0| 69 66 20 28 28 6d 61 70 | 20 3d 20 49 73 50 72 65 |if ((map| = IsPre|
|00000ec0| 66 69 78 28 6d 61 70 5b | 2a 6b 65 79 73 5d 29 29 |fix(map[|*keys]))|
|00000ed0| 20 3d 3d 20 30 29 0a 58 | 09 09 09 62 72 65 61 6b | == 0).X|...break|
|00000ee0| 3b 0a 58 09 09 6b 65 79 | 73 2b 2b 3b 0a 58 09 7d |;.X..key|s++;.X.}|
|00000ef0| 0a 58 09 69 66 20 28 6b | 65 79 73 5b 31 5d 20 21 |.X.if (k|eys[1] !|
|00000f00| 3d 20 30 29 0a 58 09 09 | 63 6f 6d 70 6c 61 69 6e |= 0).X..|complain|
|00000f10| 28 22 54 68 61 74 27 73 | 20 6e 6f 74 20 61 20 6c |("That's| not a l|
|00000f20| 65 67 69 74 69 6d 61 74 | 65 20 6b 65 79 20 73 65 |egitimat|e key se|
|00000f30| 71 75 65 6e 63 65 2e 22 | 29 3b 0a 58 09 6d 61 70 |quence."|);.X.map|
|00000f40| 5b 6b 65 79 73 5b 30 5d | 5d 20 3d 20 30 3b 0a 58 |[keys[0]|] = 0;.X|
|00000f50| 7d 0a 58 09 09 0a 58 61 | 64 64 67 65 74 63 28 29 |}.X...Xa|ddgetc()|
|00000f60| 0a 58 7b 0a 58 09 69 6e | 74 09 63 3b 0a 58 0a 58 |.X{.X.in|t.c;.X.X|
|00000f70| 09 69 66 20 28 21 49 6e | 4a 6f 76 65 72 63 29 0a |.if (!In|Joverc).|
|00000f80| 58 09 09 41 73 6b 69 6e | 67 20 3d 20 73 74 72 6c |X..Askin|g = strl|
|00000f90| 65 6e 28 6d 65 73 67 62 | 75 66 29 3b 0a 58 09 63 |en(mesgb|uf);.X.c|
|00000fa0| 20 3d 20 67 65 74 63 68 | 28 29 3b 0a 58 09 69 66 | = getch|();.X.if|
|00000fb0| 20 28 49 6e 4a 6f 76 65 | 72 63 29 20 7b 0a 58 09 | (InJove|rc) {.X.|
|00000fc0| 09 69 66 20 28 63 20 3d | 3d 20 27 5c 6e 27 29 0a |.if (c =|= '\n').|
|00000fd0| 58 09 09 09 72 65 74 75 | 72 6e 20 45 4f 46 3b 09 |X...retu|rn EOF;.|
|00000fe0| 2f 2a 20 74 68 69 73 20 | 69 73 6e 27 74 20 70 61 |/* this |isn't pa|
|00000ff0| 72 74 20 6f 66 20 74 68 | 65 20 73 65 71 75 65 6e |rt of th|e sequen|
|00001000| 63 65 20 2a 2f 0a 58 09 | 09 65 6c 73 65 20 69 66 |ce */.X.|.else if|
|00001010| 20 28 63 20 3d 3d 20 27 | 5c 5c 27 29 20 7b 0a 58 | (c == '|\\') {.X|
|00001020| 09 09 09 69 66 20 28 28 | 63 20 3d 20 67 65 74 63 |...if ((|c = getc|
|00001030| 68 28 29 29 20 3d 3d 20 | 4c 46 29 0a 58 09 09 09 |h()) == |LF).X...|
|00001040| 09 63 6f 6d 70 6c 61 69 | 6e 28 22 5b 50 72 65 6d |.complai|n("[Prem|
|00001050| 61 74 75 72 65 20 65 6e | 64 20 6f 66 20 6c 69 6e |ature en|d of lin|
|00001060| 65 5d 22 29 3b 0a 58 09 | 09 7d 20 65 6c 73 65 20 |e]");.X.|.} else |
|00001070| 69 66 20 28 63 20 3d 3d | 20 27 5e 27 29 20 7b 0a |if (c ==| '^') {.|
|00001080| 58 09 09 09 69 66 20 28 | 28 63 20 3d 20 67 65 74 |X...if (|(c = get|
|00001090| 63 68 28 29 29 20 3d 3d | 20 27 3f 27 29 0a 58 09 |ch()) ==| '?').X.|
|000010a0| 09 09 09 63 20 3d 20 52 | 55 42 4f 55 54 3b 0a 58 |...c = R|UBOUT;.X|
|000010b0| 09 09 09 65 6c 73 65 20 | 69 66 20 28 69 73 61 6c |...else |if (isal|
|000010c0| 70 68 61 28 63 29 20 7c | 7c 20 69 6e 64 65 78 28 |pha(c) ||| index(|
|000010d0| 22 5b 5c 5c 5d 5e 5f 22 | 2c 20 63 29 29 0a 58 09 |"[\\]^_"|, c)).X.|
|000010e0| 09 09 09 63 20 3d 20 63 | 20 2d 20 27 40 27 3b 0a |...c = c| - '@';.|
|000010f0| 58 09 09 09 65 6c 73 65 | 0a 58 09 09 09 09 63 6f |X...else|.X....co|
|00001100| 6d 70 6c 61 69 6e 28 22 | 5b 55 6e 6b 6e 6f 77 6e |mplain("|[Unknown|
|00001110| 20 63 6f 6e 74 72 6f 6c | 20 63 68 61 72 61 63 74 | control| charact|
|00001120| 65 72 5d 22 29 3b 0a 58 | 09 09 7d 0a 58 09 7d 0a |er]");.X|..}.X.}.|
|00001130| 58 0a 58 09 41 73 6b 69 | 6e 67 20 3d 20 30 3b 0a |X.X.Aski|ng = 0;.|
|00001140| 58 09 61 64 64 5f 6d 65 | 73 73 28 22 25 70 20 22 |X.add_me|ss("%p "|
|00001150| 2c 20 63 29 3b 0a 58 0a | 58 09 72 65 74 75 72 6e |, c);.X.|X.return|
|00001160| 20 63 3b 0a 58 7d 0a 58 | 0a 58 42 69 6e 64 57 4d | c;.X}.X|.XBindWM|
|00001170| 61 70 28 6d 61 70 2c 20 | 6c 61 73 74 6b 65 79 2c |ap(map, |lastkey,|
|00001180| 20 63 6d 64 29 0a 58 64 | 61 74 61 5f 6f 62 6a 09 | cmd).Xd|ata_obj.|
|00001190| 2a 2a 6d 61 70 2c 0a 58 | 09 09 2a 63 6d 64 3b 0a |**map,.X|..*cmd;.|
|000011a0| 58 7b 0a 58 09 64 61 74 | 61 5f 6f 62 6a 09 2a 2a |X{.X.dat|a_obj.**|
|000011b0| 6e 65 78 74 6d 61 70 3b | 0a 58 09 69 6e 74 09 63 |nextmap;|.X.int.c|
|000011c0| 3b 0a 58 0a 58 09 63 20 | 3d 20 61 64 64 67 65 74 |;.X.X.c |= addget|
|000011d0| 63 28 29 3b 0a 58 09 69 | 66 20 28 63 20 3d 3d 20 |c();.X.i|f (c == |
|000011e0| 45 4f 46 29 20 7b 0a 58 | 09 09 69 66 20 28 6c 61 |EOF) {.X|..if (la|
|000011f0| 73 74 6b 65 79 20 3d 3d | 20 45 4f 46 29 0a 58 09 |stkey ==| EOF).X.|
|00001200| 09 09 63 6f 6d 70 6c 61 | 69 6e 28 22 5b 45 6d 70 |..compla|in("[Emp|
|00001210| 74 79 20 6b 65 79 20 73 | 65 71 75 65 6e 63 65 5d |ty key s|equence]|
|00001220| 22 29 3b 0a 58 09 09 63 | 6f 6d 70 6c 61 69 6e 28 |");.X..c|omplain(|
|00001230| 22 5b 50 72 65 6d 61 74 | 75 72 65 20 65 6e 64 20 |"[Premat|ure end |
|00001240| 6f 66 20 6b 65 79 20 73 | 65 71 75 65 6e 63 65 5d |of key s|equence]|
|00001250| 22 29 3b 0a 58 09 7d 20 | 65 6c 73 65 20 7b 0a 58 |");.X.} |else {.X|
|00001260| 09 09 69 66 20 28 6e 65 | 78 74 6d 61 70 20 3d 20 |..if (ne|xtmap = |
|00001270| 49 73 50 72 65 66 69 78 | 28 6d 61 70 5b 63 5d 29 |IsPrefix|(map[c])|
|00001280| 29 0a 58 09 09 09 42 69 | 6e 64 57 4d 61 70 28 6e |).X...Bi|ndWMap(n|
|00001290| 65 78 74 6d 61 70 2c 20 | 63 2c 20 63 6d 64 29 3b |extmap, |c, cmd);|
|000012a0| 0a 58 09 09 65 6c 73 65 | 0a 58 09 09 09 6d 61 70 |.X..else|.X...map|
|000012b0| 5b 63 5d 20 3d 20 63 6d | 64 3b 0a 58 09 7d 0a 58 |[c] = cm|d;.X.}.X|
|000012c0| 7d 0a 58 0a 58 2f 2a 20 | 56 41 52 41 52 47 53 30 |}.X.X/* |VARARGS0|
|000012d0| 20 2a 2f 0a 58 0a 58 42 | 69 6e 64 53 6f 6d 65 74 | */.X.XB|indSomet|
|000012e0| 68 69 6e 67 28 70 72 6f | 63 29 0a 58 64 61 74 61 |hing(pro|c).Xdata|
|000012f0| 5f 6f 62 6a 09 2a 28 2a | 70 72 6f 63 29 28 29 3b |_obj.*(*|proc)();|
|00001300| 0a 58 7b 0a 58 09 64 61 | 74 61 5f 6f 62 6a 09 2a |.X{.X.da|ta_obj.*|
|00001310| 64 3b 0a 58 0a 58 09 69 | 66 20 28 28 64 20 3d 20 |d;.X.X.i|f ((d = |
|00001320| 28 2a 70 72 6f 63 29 28 | 50 72 6f 63 46 6d 74 29 |(*proc)(|ProcFmt)|
|00001330| 29 20 3d 3d 20 30 29 0a | 58 09 09 72 65 74 75 72 |) == 0).|X..retur|
|00001340| 6e 3b 0a 58 09 73 5f 6d | 65 73 73 28 22 3a 20 25 |n;.X.s_m|ess(": %|
|00001350| 66 20 25 73 20 22 2c 20 | 64 2d 3e 4e 61 6d 65 29 |f %s ", |d->Name)|
|00001360| 3b 0a 58 09 42 69 6e 64 | 57 4d 61 70 28 6d 61 69 |;.X.Bind|WMap(mai|
|00001370| 6e 6d 61 70 2c 20 45 4f | 46 2c 20 64 29 3b 0a 58 |nmap, EO|F, d);.X|
|00001380| 7d 0a 58 0a 58 2f 2a 20 | 44 65 73 63 72 69 62 65 |}.X.X/* |Describe|
|00001390| 20 6b 65 79 20 2a 2f 0a | 58 0a 58 44 65 73 63 57 | key */.|X.XDescW|
|000013a0| 4d 61 70 28 6d 61 70 2c | 20 6b 65 79 29 0a 58 64 |Map(map,| key).Xd|
|000013b0| 61 74 61 5f 6f 62 6a 09 | 2a 2a 6d 61 70 3b 0a 58 |ata_obj.|**map;.X|
|000013c0| 7b 0a 58 09 64 61 74 61 | 5f 6f 62 6a 09 2a 63 70 |{.X.data|_obj.*cp|
|000013d0| 20 3d 20 6d 61 70 5b 6b | 65 79 5d 2c 0a 58 09 09 | = map[k|ey],.X..|
|000013e0| 09 2a 2a 70 72 65 66 70 | 3b 0a 58 0a 58 09 69 66 |.**prefp|;.X.X.if|
|000013f0| 20 28 63 70 20 3d 3d 20 | 30 29 0a 58 09 09 61 64 | (cp == |0).X..ad|
|00001400| 64 5f 6d 65 73 73 28 22 | 69 73 20 75 6e 62 6f 75 |d_mess("|is unbou|
|00001410| 6e 64 2e 22 29 3b 0a 58 | 09 65 6c 73 65 20 69 66 |nd.");.X|.else if|
|00001420| 20 28 70 72 65 66 70 20 | 3d 20 49 73 50 72 65 66 | (prefp |= IsPref|
|00001430| 69 78 28 63 70 29 29 0a | 58 09 09 44 65 73 63 57 |ix(cp)).|X..DescW|
|00001440| 4d 61 70 28 70 72 65 66 | 70 2c 20 61 64 64 67 65 |Map(pref|p, addge|
|00001450| 74 63 28 29 29 3b 0a 58 | 09 65 6c 73 65 0a 58 09 |tc());.X|.else.X.|
|00001460| 09 61 64 64 5f 6d 65 73 | 73 28 22 69 73 20 62 6f |.add_mes|s("is bo|
|00001470| 75 6e 64 20 74 6f 20 25 | 73 2e 22 2c 20 63 70 2d |und to %|s.", cp-|
|00001480| 3e 4e 61 6d 65 29 3b 0a | 58 7d 0a 58 0a 58 4b 65 |>Name);.|X}.X.XKe|
|00001490| 79 44 65 73 63 28 29 0a | 58 7b 0a 58 09 73 5f 6d |yDesc().|X{.X.s_m|
|000014a0| 65 73 73 28 50 72 6f 63 | 46 6d 74 29 3b 0a 58 09 |ess(Proc|Fmt);.X.|
|000014b0| 44 65 73 63 57 4d 61 70 | 28 6d 61 69 6e 6d 61 70 |DescWMap|(mainmap|
|000014c0| 2c 20 61 64 64 67 65 74 | 63 28 29 29 3b 0a 58 7d |, addget|c());.X}|
|000014d0| 0a 58 0a 58 44 65 73 63 | 43 6f 6d 28 29 0a 58 7b |.X.XDesc|Com().X{|
|000014e0| 0a 58 09 64 61 74 61 5f | 6f 62 6a 09 2a 64 70 3b |.X.data_|obj.*dp;|
|000014f0| 0a 58 09 63 68 61 72 09 | 70 61 74 74 65 72 6e 5b |.X.char.|pattern[|
|00001500| 31 30 30 5d 2c 0a 58 09 | 09 64 6f 63 5f 74 79 70 |100],.X.|.doc_typ|
|00001510| 65 5b 34 30 5d 2c 0a 58 | 09 09 2a 66 69 6c 65 20 |e[40],.X|..*file |
|00001520| 3d 20 43 6d 64 44 62 3b | 0a 58 09 46 69 6c 65 09 |= CmdDb;|.X.File.|
|00001530| 2a 66 70 3b 0a 58 0a 58 | 09 69 66 20 28 21 73 74 |*fp;.X.X|.if (!st|
|00001540| 72 63 6d 70 28 4c 61 73 | 74 43 6d 64 2d 3e 4e 61 |rcmp(Las|tCmd->Na|
|00001550| 6d 65 2c 20 22 64 65 73 | 63 72 69 62 65 2d 76 61 |me, "des|cribe-va|
|00001560| 72 69 61 62 6c 65 22 29 | 29 0a 58 09 09 64 70 20 |riable")|).X..dp |
|00001570| 3d 20 28 64 61 74 61 5f | 6f 62 6a 20 2a 29 20 66 |= (data_|obj *) f|
|00001580| 69 6e 64 76 61 72 28 50 | 72 6f 63 46 6d 74 29 3b |indvar(P|rocFmt);|
|00001590| 0a 58 09 65 6c 73 65 0a | 58 09 09 64 70 20 3d 20 |.X.else.|X..dp = |
|000015a0| 28 64 61 74 61 5f 6f 62 | 6a 20 2a 29 20 66 69 6e |(data_ob|j *) fin|
|000015b0| 64 63 6f 6d 28 50 72 6f | 63 46 6d 74 29 3b 0a 58 |dcom(Pro|cFmt);.X|
|000015c0| 0a 58 09 69 66 20 28 64 | 70 20 3d 3d 20 30 29 0a |.X.if (d|p == 0).|
|000015d0| 58 09 09 72 65 74 75 72 | 6e 3b 0a 58 09 66 70 20 |X..retur|n;.X.fp |
|000015e0| 3d 20 6f 70 65 6e 5f 66 | 69 6c 65 28 66 69 6c 65 |= open_f|ile(file|
|000015f0| 2c 20 69 6f 62 75 66 66 | 2c 20 46 5f 52 45 41 44 |, iobuff|, F_READ|
|00001600| 2c 20 43 4f 4d 50 4c 41 | 49 4e 2c 20 51 55 49 45 |, COMPLA|IN, QUIE|
|00001610| 54 29 3b 0a 58 09 50 6c | 61 63 75 72 28 49 4c 49 |T);.X.Pl|acur(ILI|
|00001620| 2c 20 30 29 3b 0a 58 09 | 66 6c 75 73 68 6f 28 29 |, 0);.X.|flusho()|
|00001630| 3b 0a 58 09 73 70 72 69 | 6e 74 66 28 70 61 74 74 |;.X.spri|ntf(patt|
|00001640| 65 72 6e 2c 20 22 5e 3a | 65 6e 74 72 79 20 5c 22 |ern, "^:|entry \"|
|00001650| 25 73 5c 22 20 5c 22 5c | 5c 28 5b 5e 5c 22 5d 2a |%s\" \"\|\([^\"]*|
|00001660| 5c 5c 29 5c 22 22 2c 20 | 64 70 2d 3e 4e 61 6d 65 |\\)\"", |dp->Name|
|00001670| 29 3b 0a 58 09 54 4f 73 | 74 61 72 74 28 22 48 65 |);.X.TOs|tart("He|
|00001680| 6c 70 22 2c 20 54 52 55 | 45 29 3b 0a 58 09 66 6f |lp", TRU|E);.X.fo|
|00001690| 72 20 28 3b 3b 29 20 7b | 0a 58 09 09 69 66 20 28 |r (;;) {|.X..if (|
|000016a0| 66 5f 67 65 74 73 28 66 | 70 2c 20 67 65 6e 62 75 |f_gets(f|p, genbu|
|000016b0| 66 2c 20 4c 42 53 49 5a | 45 29 20 3d 3d 20 45 4f |f, LBSIZ|E) == EO|
|000016c0| 46 29 20 7b 0a 58 09 09 | 09 54 79 70 65 6f 75 74 |F) {.X..|.Typeout|
|000016d0| 28 22 54 68 65 72 65 20 | 69 73 20 6e 6f 20 64 6f |("There |is no do|
|000016e0| 63 75 6d 65 6e 74 61 74 | 69 6f 6e 20 66 6f 72 20 |cumentat|ion for |
|000016f0| 5c 22 25 73 5c 22 2e 22 | 2c 20 64 70 2d 3e 4e 61 |\"%s\"."|, dp->Na|
|00001700| 6d 65 29 3b 0a 58 09 09 | 09 67 6f 74 6f 20 6f 75 |me);.X..|.goto ou|
|00001710| 74 61 68 65 72 65 3b 0a | 58 09 09 7d 0a 58 09 09 |tahere;.|X..}.X..|
|00001720| 69 66 20 28 28 73 74 72 | 6e 63 6d 70 28 67 65 6e |if ((str|ncmp(gen|
|00001730| 62 75 66 2c 20 22 3a 65 | 6e 74 72 79 22 2c 20 36 |buf, ":e|ntry", 6|
|00001740| 29 20 3d 3d 20 30 29 20 | 26 26 20 4c 6f 6f 6b 69 |) == 0) |&& Looki|
|00001750| 6e 67 41 74 28 70 61 74 | 74 65 72 6e 2c 20 67 65 |ngAt(pat|tern, ge|
|00001760| 6e 62 75 66 2c 20 30 29 | 29 0a 58 09 09 09 62 72 |nbuf, 0)|).X...br|
|00001770| 65 61 6b 3b 0a 58 09 7d | 0a 58 09 2f 2a 20 66 6f |eak;.X.}|.X./* fo|
|00001780| 75 6e 64 20 69 74 20 2e | 2e 2e 20 6c 65 74 27 73 |und it .|.. let's|
|00001790| 20 70 72 69 6e 74 20 69 | 74 20 2a 2f 0a 58 09 70 | print i|t */.X.p|
|000017a0| 75 74 6d 61 74 63 68 28 | 31 2c 20 64 6f 63 5f 74 |utmatch(|1, doc_t|
|000017b0| 79 70 65 2c 20 73 69 7a | 65 6f 66 20 64 6f 63 5f |ype, siz|eof doc_|
|000017c0| 74 79 70 65 29 3b 0a 58 | 09 69 66 20 28 73 74 72 |type);.X|.if (str|
|000017d0| 63 6d 70 28 22 56 61 72 | 69 61 62 6c 65 22 2c 20 |cmp("Var|iable", |
|000017e0| 64 6f 63 5f 74 79 70 65 | 29 20 3d 3d 20 30 29 0a |doc_type|) == 0).|
|000017f0| 58 09 09 54 79 70 65 6f | 75 74 28 64 70 2d 3e 4e |X..Typeo|ut(dp->N|
|00001800| 61 6d 65 29 3b 0a 58 09 | 65 6c 73 65 20 69 66 20 |ame);.X.|else if |
|00001810| 28 73 74 72 63 6d 70 28 | 22 43 6f 6d 6d 61 6e 64 |(strcmp(|"Command|
|00001820| 22 2c 20 64 6f 63 5f 74 | 79 70 65 29 20 3d 3d 20 |", doc_t|ype) == |
|00001830| 30 29 20 7b 0a 58 09 09 | 63 68 61 72 09 62 69 6e |0) {.X..|char.bin|
|00001840| 64 69 6e 67 5b 31 32 38 | 5d 3b 0a 58 0a 58 09 09 |ding[128|];.X.X..|
|00001850| 66 69 6e 64 5f 62 69 6e | 64 73 28 64 70 2c 20 62 |find_bin|ds(dp, b|
|00001860| 69 6e 64 69 6e 67 29 3b | 0a 58 09 09 69 66 20 28 |inding);|.X..if (|
|00001870| 62 6c 6e 6b 70 28 62 69 | 6e 64 69 6e 67 29 29 0a |blnkp(bi|nding)).|
|00001880| 58 09 09 09 54 79 70 65 | 6f 75 74 28 22 54 6f 20 |X...Type|out("To |
|00001890| 69 6e 76 6f 6b 65 20 25 | 73 2c 20 74 79 70 65 20 |invoke %|s, type |
|000018a0| 5c 22 45 53 43 20 58 20 | 25 73 3c 63 72 3e 5c 22 |\"ESC X |%s<cr>\"|
|000018b0| 2e 22 2c 0a 58 09 09 09 | 09 64 70 2d 3e 4e 61 6d |.",.X...|.dp->Nam|
|000018c0| 65 2c 0a 58 09 09 09 09 | 64 70 2d 3e 4e 61 6d 65 |e,.X....|dp->Name|
|000018d0| 29 3b 0a 58 09 09 65 6c | 73 65 0a 58 09 09 09 54 |);.X..el|se.X...T|
|000018e0| 79 70 65 6f 75 74 28 22 | 54 79 70 65 20 5c 22 25 |ypeout("|Type \"%|
|000018f0| 73 5c 22 20 74 6f 20 69 | 6e 76 6f 6b 65 20 25 73 |s\" to i|nvoke %s|
|00001900| 2e 22 2c 20 62 69 6e 64 | 69 6e 67 2c 20 64 70 2d |.", bind|ing, dp-|
|00001910| 3e 4e 61 6d 65 29 3b 0a | 58 09 7d 0a 58 09 54 79 |>Name);.|X.}.X.Ty|
|00001920| 70 65 6f 75 74 28 22 22 | 29 3b 0a 58 09 77 68 69 |peout(""|);.X.whi|
|00001930| 6c 65 20 28 66 5f 67 65 | 74 73 28 66 70 2c 20 67 |le (f_ge|ts(fp, g|
|00001940| 65 6e 62 75 66 2c 20 4c | 42 53 49 5a 45 29 20 21 |enbuf, L|BSIZE) !|
|00001950| 3d 20 45 4f 46 29 0a 58 | 09 09 69 66 20 28 73 74 |= EOF).X|..if (st|
|00001960| 72 6e 63 6d 70 28 67 65 | 6e 62 75 66 2c 20 22 3a |rncmp(ge|nbuf, ":|
|00001970| 65 6e 74 72 79 22 2c 20 | 36 29 20 3d 3d 20 30 29 |entry", |6) == 0)|
|00001980| 0a 58 09 09 09 67 6f 74 | 6f 20 6f 75 74 61 68 65 |.X...got|o outahe|
|00001990| 72 65 3b 0a 58 09 09 65 | 6c 73 65 0a 58 09 09 09 |re;.X..e|lse.X...|
|000019a0| 54 79 70 65 6f 75 74 28 | 22 25 73 22 2c 20 67 65 |Typeout(|"%s", ge|
|000019b0| 6e 62 75 66 29 3b 0a 58 | 6f 75 74 61 68 65 72 65 |nbuf);.X|outahere|
|000019c0| 3a 0a 58 09 66 5f 63 6c | 6f 73 65 28 66 70 29 3b |:.X.f_cl|ose(fp);|
|000019d0| 0a 58 09 54 4f 73 74 6f | 70 28 29 3b 0a 58 7d 0a |.X.TOsto|p();.X}.|
|000019e0| 58 0a 58 44 65 73 63 42 | 69 6e 64 69 6e 67 73 28 |X.XDescB|indings(|
|000019f0| 29 0a 58 7b 0a 58 09 65 | 78 74 65 72 6e 20 69 6e |).X{.X.e|xtern in|
|00001a00| 74 09 54 79 70 65 6f 75 | 74 28 29 3b 0a 58 0a 58 |t.Typeou|t();.X.X|
|00001a10| 09 54 4f 73 74 61 72 74 | 28 22 4b 65 79 20 42 69 |.TOstart|("Key Bi|
|00001a20| 6e 64 69 6e 67 73 22 2c | 20 54 52 55 45 29 3b 0a |ndings",| TRUE);.|
|00001a30| 58 09 44 65 73 63 4d 61 | 70 28 6d 61 69 6e 6d 61 |X.DescMa|p(mainma|
|00001a40| 70 2c 20 4e 75 6c 6c 53 | 74 72 29 3b 0a 58 09 54 |p, NullS|tr);.X.T|
|00001a50| 4f 73 74 6f 70 28 29 3b | 0a 58 7d 0a 58 0a 58 44 |Ostop();|.X}.X.XD|
|00001a60| 65 73 63 4d 61 70 28 6d | 61 70 2c 20 70 72 65 66 |escMap(m|ap, pref|
|00001a70| 29 0a 58 64 61 74 61 5f | 6f 62 6a 09 2a 2a 6d 61 |).Xdata_|obj.**ma|
|00001a80| 70 3b 0a 58 63 68 61 72 | 09 2a 70 72 65 66 3b 0a |p;.Xchar|.*pref;.|
|00001a90| 58 7b 0a 58 09 69 6e 74 | 09 63 31 2c 0a 58 09 09 |X{.X.int|.c1,.X..|
|00001aa0| 63 32 20 3d 20 30 2c 0a | 58 09 09 6e 75 6d 62 65 |c2 = 0,.|X..numbe|
|00001ab0| 74 77 65 65 6e 3b 0a 58 | 09 63 68 61 72 09 6b 65 |tween;.X|.char.ke|
|00001ac0| 79 64 65 73 63 62 75 66 | 5b 34 30 5d 3b 0a 58 09 |ydescbuf|[40];.X.|
|00001ad0| 64 61 74 61 5f 6f 62 6a | 09 2a 2a 70 72 65 66 70 |data_obj|.**prefp|
|00001ae0| 3b 0a 58 0a 58 09 66 6f | 72 20 28 63 31 20 3d 20 |;.X.X.fo|r (c1 = |
|00001af0| 30 3b 20 63 31 20 3c 20 | 30 32 30 30 20 26 26 20 |0; c1 < |0200 && |
|00001b00| 63 32 20 3c 20 30 32 30 | 30 3b 20 63 31 20 3d 20 |c2 < 020|0; c1 = |
|00001b10| 63 32 20 2b 20 31 29 20 | 7b 0a 58 09 09 63 32 20 |c2 + 1) |{.X..c2 |
|00001b20| 3d 20 63 31 3b 0a 58 09 | 09 69 66 20 28 6d 61 70 |= c1;.X.|.if (map|
|00001b30| 5b 63 31 5d 20 3d 3d 20 | 30 29 0a 58 09 09 09 63 |[c1] == |0).X...c|
|00001b40| 6f 6e 74 69 6e 75 65 3b | 0a 58 09 09 77 68 69 6c |ontinue;|.X..whil|
|00001b50| 65 20 28 2b 2b 63 32 20 | 3c 20 30 32 30 30 20 26 |e (++c2 |< 0200 &|
|00001b60| 26 20 6d 61 70 5b 63 31 | 5d 20 3d 3d 20 6d 61 70 |& map[c1|] == map|
|00001b70| 5b 63 32 5d 29 0a 58 09 | 09 09 3b 0a 58 09 09 63 |[c2]).X.|..;.X..c|
|00001b80| 32 2d 2d 3b 0a 58 09 09 | 6e 75 6d 62 65 74 77 65 |2--;.X..|numbetwe|
|00001b90| 65 6e 20 3d 20 63 32 20 | 2d 20 63 31 3b 0a 58 09 |en = c2 |- c1;.X.|
|00001ba0| 09 69 66 20 28 6e 75 6d | 62 65 74 77 65 65 6e 20 |.if (num|between |
|00001bb0| 3d 3d 20 31 29 0a 58 09 | 09 09 73 70 72 69 6e 74 |== 1).X.|..sprint|
|00001bc0| 66 28 6b 65 79 64 65 73 | 63 62 75 66 2c 20 22 25 |f(keydes|cbuf, "%|
|00001bd0| 73 20 7b 25 70 2c 25 70 | 7d 22 2c 20 70 72 65 66 |s {%p,%p|}", pref|
|00001be0| 2c 20 63 31 2c 20 63 32 | 29 3b 0a 58 09 09 65 6c |, c1, c2|);.X..el|
|00001bf0| 73 65 20 69 66 20 28 6e | 75 6d 62 65 74 77 65 65 |se if (n|umbetwee|
|00001c00| 6e 20 3d 3d 20 30 29 0a | 58 09 09 09 73 70 72 69 |n == 0).|X...spri|
|00001c10| 6e 74 66 28 6b 65 79 64 | 65 73 63 62 75 66 2c 20 |ntf(keyd|escbuf, |
|00001c20| 22 25 73 20 25 70 22 2c | 20 70 72 65 66 2c 20 63 |"%s %p",| pref, c|
|00001c30| 31 29 3b 0a 58 09 09 65 | 6c 73 65 0a 58 09 09 09 |1);.X..e|lse.X...|
|00001c40| 73 70 72 69 6e 74 66 28 | 6b 65 79 64 65 73 63 62 |sprintf(|keydescb|
|00001c50| 75 66 2c 20 22 25 73 20 | 5b 25 70 2d 25 70 5d 22 |uf, "%s |[%p-%p]"|
|00001c60| 2c 20 70 72 65 66 2c 20 | 63 31 2c 20 63 32 29 3b |, pref, |c1, c2);|
|00001c70| 0a 58 09 09 69 66 20 28 | 70 72 65 66 70 20 3d 20 |.X..if (|prefp = |
|00001c80| 49 73 50 72 65 66 69 78 | 28 6d 61 70 5b 63 31 5d |IsPrefix|(map[c1]|
|00001c90| 29 29 0a 58 09 09 09 44 | 65 73 63 4d 61 70 28 70 |)).X...D|escMap(p|
|00001ca0| 72 65 66 70 2c 20 6b 65 | 79 64 65 73 63 62 75 66 |refp, ke|ydescbuf|
|00001cb0| 29 3b 0a 58 09 09 65 6c | 73 65 0a 58 09 09 09 54 |);.X..el|se.X...T|
|00001cc0| 79 70 65 6f 75 74 28 22 | 25 2d 31 34 73 25 73 22 |ypeout("|%-14s%s"|
|00001cd0| 2c 20 6b 65 79 64 65 73 | 63 62 75 66 2c 20 6d 61 |, keydes|cbuf, ma|
|00001ce0| 70 5b 63 31 5d 2d 3e 4e | 61 6d 65 29 3b 0a 58 09 |p[c1]->N|ame);.X.|
|00001cf0| 7d 0a 58 7d 0a 58 0a 58 | 70 72 69 76 61 74 65 0a |}.X}.X.X|private.|
|00001d00| 58 66 69 6e 64 5f 62 69 | 6e 64 73 28 64 70 2c 20 |Xfind_bi|nds(dp, |
|00001d10| 62 75 66 29 0a 58 64 61 | 74 61 5f 6f 62 6a 09 2a |buf).Xda|ta_obj.*|
|00001d20| 64 70 3b 0a 58 63 68 61 | 72 09 2a 62 75 66 3b 0a |dp;.Xcha|r.*buf;.|
|00001d30| 58 7b 0a 58 09 63 68 61 | 72 09 2a 65 6e 64 70 3b |X{.X.cha|r.*endp;|
|00001d40| 0a 58 0a 58 09 62 75 66 | 5b 30 5d 20 3d 20 27 5c |.X.X.buf|[0] = '\|
|00001d50| 30 27 3b 0a 58 09 66 62 | 5f 61 75 78 28 64 70 2c |0';.X.fb|_aux(dp,|
|00001d60| 20 6d 61 69 6e 6d 61 70 | 2c 20 28 63 68 61 72 20 | mainmap|, (char |
|00001d70| 2a 29 20 30 2c 20 62 75 | 66 29 3b 0a 58 09 65 6e |*) 0, bu|f);.X.en|
|00001d80| 64 70 20 3d 20 62 75 66 | 20 2b 20 73 74 72 6c 65 |dp = buf| + strle|
|00001d90| 6e 28 62 75 66 29 20 2d | 20 32 3b 0a 58 09 69 66 |n(buf) -| 2;.X.if|
|00001da0| 20 28 28 65 6e 64 70 20 | 3e 20 62 75 66 29 20 26 | ((endp |> buf) &|
|00001db0| 26 20 28 73 74 72 63 6d | 70 28 65 6e 64 70 2c 20 |& (strcm|p(endp, |
|00001dc0| 22 2c 20 22 29 20 3d 3d | 20 30 29 29 0a 58 09 09 |", ") ==| 0)).X..|
|00001dd0| 2a 65 6e 64 70 20 3d 20 | 27 5c 30 27 3b 0a 58 7d |*endp = |'\0';.X}|
|00001de0| 0a 58 0a 58 70 72 69 76 | 61 74 65 0a 58 66 62 5f |.X.Xpriv|ate.Xfb_|
|00001df0| 61 75 78 28 63 70 2c 20 | 6d 61 70 2c 20 70 72 65 |aux(cp, |map, pre|
|00001e00| 66 69 78 2c 20 62 75 66 | 29 0a 58 72 65 67 69 73 |fix, buf|).Xregis|
|00001e10| 74 65 72 20 64 61 74 61 | 5f 6f 62 6a 09 2a 63 70 |ter data|_obj.*cp|
|00001e20| 2c 0a 58 09 09 09 2a 2a | 6d 61 70 3b 0a 58 63 68 |,.X...**|map;.Xch|
|00001e30| 61 72 09 2a 62 75 66 2c | 0a 58 09 2a 70 72 65 66 |ar.*buf,|.X.*pref|
|00001e40| 69 78 3b 0a 58 7b 0a 58 | 09 69 6e 74 09 63 31 2c |ix;.X{.X|.int.c1,|
|00001e50| 0a 58 09 09 63 32 3b 0a | 58 09 63 68 61 72 09 2a |.X..c2;.|X.char.*|
|00001e60| 62 75 66 70 20 3d 20 62 | 75 66 20 2b 20 73 74 72 |bufp = b|uf + str|
|00001e70| 6c 65 6e 28 62 75 66 29 | 2c 0a 58 09 09 70 72 65 |len(buf)|,.X..pre|
|00001e80| 66 62 75 66 5b 32 30 5d | 3b 0a 58 09 64 61 74 61 |fbuf[20]|;.X.data|
|00001e90| 5f 6f 62 6a 09 2a 2a 70 | 72 65 66 70 3b 0a 58 0a |_obj.**p|refp;.X.|
|00001ea0| 58 09 66 6f 72 20 28 63 | 31 20 3d 20 63 32 20 3d |X.for (c|1 = c2 =|
|00001eb0| 20 30 3b 20 63 31 20 3c | 20 30 32 30 30 20 26 26 | 0; c1 <| 0200 &&|
|00001ec0| 20 63 32 20 3c 20 30 32 | 30 30 3b 20 63 31 20 3d | c2 < 02|00; c1 =|
|00001ed0| 20 63 32 20 2b 20 31 29 | 20 7b 0a 58 09 09 63 32 | c2 + 1)| {.X..c2|
|00001ee0| 20 3d 20 63 31 3b 0a 58 | 09 09 69 66 20 28 6d 61 | = c1;.X|..if (ma|
|00001ef0| 70 5b 63 31 5d 20 3d 3d | 20 63 70 29 20 7b 0a 58 |p[c1] ==| cp) {.X|
|00001f00| 09 09 09 77 68 69 6c 65 | 20 28 2b 2b 63 32 20 3c |...while| (++c2 <|
|00001f10| 20 30 32 30 30 20 26 26 | 20 6d 61 70 5b 63 31 5d | 0200 &&| map[c1]|
|00001f20| 20 3d 3d 20 6d 61 70 5b | 63 32 5d 29 0a 58 09 09 | == map[|c2]).X..|
|00001f30| 09 09 3b 0a 58 09 09 09 | 63 32 2d 2d 3b 0a 58 09 |..;.X...|c2--;.X.|
|00001f40| 09 09 69 66 20 28 70 72 | 65 66 69 78 29 0a 58 09 |..if (pr|efix).X.|
|00001f50| 09 09 09 73 70 72 69 6e | 74 66 28 62 75 66 70 2c |...sprin|tf(bufp,|
|00001f60| 20 22 25 73 20 22 2c 20 | 70 72 65 66 69 78 29 3b | "%s ", |prefix);|
|00001f70| 0a 58 09 09 09 62 75 66 | 70 20 2b 3d 20 73 74 72 |.X...buf|p += str|
|00001f80| 6c 65 6e 28 62 75 66 70 | 29 3b 0a 58 09 09 09 73 |len(bufp|);.X...s|
|00001f90| 77 69 74 63 68 20 28 63 | 32 20 2d 20 63 31 29 20 |witch (c|2 - c1) |
|00001fa0| 7b 0a 58 09 09 09 63 61 | 73 65 20 30 3a 0a 58 09 |{.X...ca|se 0:.X.|
|00001fb0| 09 09 09 73 70 72 69 6e | 74 66 28 62 75 66 70 2c |...sprin|tf(bufp,|
|00001fc0| 20 22 25 70 2c 20 22 2c | 20 63 31 29 3b 0a 58 09 | "%p, ",| c1);.X.|
|00001fd0| 09 09 09 62 72 65 61 6b | 3b 0a 58 09 0a 58 09 09 |...break|;.X..X..|
|00001fe0| 09 63 61 73 65 20 31 3a | 0a 58 09 09 09 09 73 70 |.case 1:|.X....sp|
|00001ff0| 72 69 6e 74 66 28 62 75 | 66 70 2c 20 22 7b 25 70 |rintf(bu|fp, "{%p|
|00002000| 2c 25 70 7d 2c 20 22 2c | 20 63 31 2c 20 63 32 29 |,%p}, ",| c1, c2)|
|00002010| 3b 0a 58 09 09 09 09 62 | 72 65 61 6b 3b 0a 58 09 |;.X....b|reak;.X.|
|00002020| 0a 58 09 09 09 64 65 66 | 61 75 6c 74 3a 0a 58 09 |.X...def|ault:.X.|
|00002030| 09 09 09 73 70 72 69 6e | 74 66 28 62 75 66 70 2c |...sprin|tf(bufp,|
|00002040| 20 22 5b 25 70 2d 25 70 | 5d 2c 20 22 2c 20 63 31 | "[%p-%p|], ", c1|
|00002050| 2c 20 63 32 29 3b 0a 58 | 09 09 09 09 62 72 65 61 |, c2);.X|....brea|
|00002060| 6b 3b 0a 58 09 09 09 7d | 0a 58 09 09 7d 0a 58 09 |k;.X...}|.X..}.X.|
|00002070| 09 69 66 20 28 70 72 65 | 66 70 20 3d 20 49 73 50 |.if (pre|fp = IsP|
|00002080| 72 65 66 69 78 28 6d 61 | 70 5b 63 31 5d 29 29 20 |refix(ma|p[c1])) |
|00002090| 7b 0a 58 09 09 09 73 70 | 72 69 6e 74 66 28 70 72 |{.X...sp|rintf(pr|
|000020a0| 65 66 62 75 66 2c 20 22 | 25 70 22 2c 20 63 31 29 |efbuf, "|%p", c1)|
|000020b0| 3b 0a 58 09 09 09 66 62 | 5f 61 75 78 28 63 70 2c |;.X...fb|_aux(cp,|
|000020c0| 20 70 72 65 66 70 2c 20 | 70 72 65 66 62 75 66 2c | prefp, |prefbuf,|
|000020d0| 20 62 75 66 70 29 3b 0a | 58 09 09 7d 0a 58 09 09 | bufp);.|X..}.X..|
|000020e0| 62 75 66 70 20 2b 3d 20 | 73 74 72 6c 65 6e 28 62 |bufp += |strlen(b|
|000020f0| 75 66 70 29 3b 0a 58 09 | 7d 0a 58 7d 0a 58 0a 58 |ufp);.X.|}.X}.X.X|
|00002100| 41 70 72 6f 70 6f 73 28 | 29 0a 58 7b 0a 58 09 72 |Apropos(|).X{.X.r|
|00002110| 65 67 69 73 74 65 72 20 | 73 74 72 75 63 74 20 63 |egister |struct c|
|00002120| 6d 64 09 2a 63 70 3b 0a | 58 09 72 65 67 69 73 74 |md.*cp;.|X.regist|
|00002130| 65 72 20 73 74 72 75 63 | 74 20 6d 61 63 72 6f 09 |er struc|t macro.|
|00002140| 2a 6d 3b 0a 58 09 72 65 | 67 69 73 74 65 72 20 73 |*m;.X.re|gister s|
|00002150| 74 72 75 63 74 20 76 61 | 72 69 61 62 6c 65 09 2a |truct va|riable.*|
|00002160| 76 3b 0a 58 09 63 68 61 | 72 09 2a 61 6e 73 3b 0a |v;.X.cha|r.*ans;.|
|00002170| 58 09 69 6e 74 09 61 6e | 79 66 73 20 3d 20 30 2c |X.int.an|yfs = 0,|
|00002180| 0a 58 09 09 61 6e 79 76 | 73 20 3d 20 30 2c 0a 58 |.X..anyv|s = 0,.X|
|00002190| 09 09 61 6e 79 6d 73 20 | 3d 20 30 3b 0a 58 09 63 |..anyms |= 0;.X.c|
|000021a0| 68 61 72 09 62 75 66 5b | 32 35 36 5d 3b 0a 58 0a |har.buf[|256];.X.|
|000021b0| 58 09 61 6e 73 20 3d 20 | 61 73 6b 28 28 63 68 61 |X.ans = |ask((cha|
|000021c0| 72 20 2a 29 20 30 2c 20 | 22 3a 20 25 66 20 28 6b |r *) 0, |": %f (k|
|000021d0| 65 79 77 6f 72 64 29 20 | 22 29 3b 0a 58 09 54 4f |eyword) |");.X.TO|
|000021e0| 73 74 61 72 74 28 22 48 | 65 6c 70 22 2c 20 54 52 |start("H|elp", TR|
|000021f0| 55 45 29 3b 0a 58 09 66 | 6f 72 20 28 63 70 20 3d |UE);.X.f|or (cp =|
|00002200| 20 63 6f 6d 6d 61 6e 64 | 73 3b 20 63 70 2d 3e 4e | command|s; cp->N|
|00002210| 61 6d 65 20 21 3d 20 30 | 3b 20 63 70 2b 2b 29 0a |ame != 0|; cp++).|
|00002220| 58 09 09 69 66 20 28 73 | 69 6e 64 65 78 28 61 6e |X..if (s|index(an|
|00002230| 73 2c 20 63 70 2d 3e 4e | 61 6d 65 29 29 20 7b 0a |s, cp->N|ame)) {.|
|00002240| 58 09 09 09 69 66 20 28 | 61 6e 79 66 73 20 3d 3d |X...if (|anyfs ==|
|00002250| 20 30 29 20 7b 0a 58 09 | 09 09 09 54 79 70 65 6f | 0) {.X.|...Typeo|
|00002260| 75 74 28 22 43 6f 6d 6d | 61 6e 64 73 22 29 3b 0a |ut("Comm|ands");.|
|00002270| 58 09 09 09 09 54 79 70 | 65 6f 75 74 28 22 2d 2d |X....Typ|eout("--|
|00002280| 2d 2d 2d 2d 2d 2d 22 29 | 3b 0a 58 09 09 09 7d 0a |------")|;.X...}.|
|00002290| 58 09 09 09 66 69 6e 64 | 5f 62 69 6e 64 73 28 28 |X...find|_binds((|
|000022a0| 64 61 74 61 5f 6f 62 6a | 20 2a 29 20 63 70 2c 20 |data_obj| *) cp, |
|000022b0| 62 75 66 29 3b 0a 58 09 | 09 09 69 66 20 28 62 75 |buf);.X.|..if (bu|
|000022c0| 66 5b 30 5d 29 0a 58 09 | 09 09 09 54 79 70 65 6f |f[0]).X.|...Typeo|
|000022d0| 75 74 28 22 3a 20 25 2d | 33 35 73 28 25 73 29 22 |ut(": %-|35s(%s)"|
|000022e0| 2c 20 63 70 2d 3e 4e 61 | 6d 65 2c 20 62 75 66 29 |, cp->Na|me, buf)|
|000022f0| 3b 0a 58 09 09 09 65 6c | 73 65 0a 58 09 09 09 09 |;.X...el|se.X....|
|00002300| 54 79 70 65 6f 75 74 28 | 22 3a 20 25 73 22 2c 20 |Typeout(|": %s", |
|00002310| 63 70 2d 3e 4e 61 6d 65 | 29 3b 0a 58 09 09 09 61 |cp->Name|);.X...a|
|00002320| 6e 79 66 73 2b 2b 3b 0a | 58 09 09 7d 0a 58 09 69 |nyfs++;.|X..}.X.i|
|00002330| 66 20 28 61 6e 79 66 73 | 29 0a 58 09 09 54 79 70 |f (anyfs|).X..Typ|
|00002340| 65 6f 75 74 28 4e 75 6c | 6c 53 74 72 29 3b 0a 58 |eout(Nul|lStr);.X|
|00002350| 09 66 6f 72 20 28 76 20 | 3d 20 76 61 72 69 61 62 |.for (v |= variab|
|00002360| 6c 65 73 3b 20 76 2d 3e | 4e 61 6d 65 20 21 3d 20 |les; v->|Name != |
|00002370| 30 3b 20 76 2b 2b 29 0a | 58 09 09 69 66 20 28 73 |0; v++).|X..if (s|
|00002380| 69 6e 64 65 78 28 61 6e | 73 2c 20 76 2d 3e 4e 61 |index(an|s, v->Na|
|00002390| 6d 65 29 29 20 7b 0a 58 | 09 09 09 69 66 20 28 61 |me)) {.X|...if (a|
|000023a0| 6e 79 76 73 20 3d 3d 20 | 30 29 20 7b 0a 58 09 09 |nyvs == |0) {.X..|
|000023b0| 09 09 54 79 70 65 6f 75 | 74 28 22 56 61 72 69 61 |..Typeou|t("Varia|
|000023c0| 62 6c 65 73 22 29 3b 0a | 58 09 09 09 09 54 79 70 |bles");.|X....Typ|
|000023d0| 65 6f 75 74 28 22 2d 2d | 2d 2d 2d 2d 2d 2d 2d 22 |eout("--|-------"|
|000023e0| 29 3b 0a 58 09 09 09 7d | 0a 58 09 09 09 61 6e 79 |);.X...}|.X...any|
|000023f0| 76 73 2b 2b 3b 0a 58 09 | 09 09 76 70 72 5f 61 75 |vs++;.X.|..vpr_au|
|00002400| 78 28 76 2c 20 62 75 66 | 29 3b 0a 58 09 09 09 54 |x(v, buf|);.X...T|
|00002410| 79 70 65 6f 75 74 28 22 | 3a 20 73 65 74 20 25 2d |ypeout("|: set %-|
|00002420| 32 36 73 25 73 22 2c 20 | 76 2d 3e 4e 61 6d 65 2c |26s%s", |v->Name,|
|00002430| 20 62 75 66 29 3b 0a 58 | 09 09 7d 0a 58 09 69 66 | buf);.X|..}.X.if|
|00002440| 20 28 61 6e 79 76 73 29 | 0a 58 09 09 54 79 70 65 | (anyvs)|.X..Type|
|00002450| 6f 75 74 28 4e 75 6c 6c | 53 74 72 29 3b 0a 58 09 |out(Null|Str);.X.|
|00002460| 66 6f 72 20 28 6d 20 3d | 20 6d 61 63 72 6f 73 3b |for (m =| macros;|
|00002470| 20 6d 20 21 3d 20 30 3b | 20 6d 20 3d 20 6d 2d 3e | m != 0;| m = m->|
|00002480| 6d 5f 6e 65 78 74 6d 29 | 0a 58 09 09 69 66 20 28 |m_nextm)|.X..if (|
|00002490| 73 69 6e 64 65 78 28 61 | 6e 73 2c 20 6d 2d 3e 4e |sindex(a|ns, m->N|
|000024a0| 61 6d 65 29 29 20 7b 0a | 58 09 09 09 69 66 20 28 |ame)) {.|X...if (|
|000024b0| 61 6e 79 6d 73 20 3d 3d | 20 30 29 20 7b 0a 58 09 |anyms ==| 0) {.X.|
|000024c0| 09 09 09 54 79 70 65 6f | 75 74 28 22 4d 61 63 72 |...Typeo|ut("Macr|
|000024d0| 6f 73 22 29 3b 0a 58 09 | 09 09 09 54 79 70 65 6f |os");.X.|...Typeo|
|000024e0| 75 74 28 22 2d 2d 2d 2d | 2d 2d 22 29 3b 0a 58 09 |ut("----|--");.X.|
|000024f0| 09 09 7d 0a 58 09 09 09 | 61 6e 79 6d 73 2b 2b 3b |..}.X...|anyms++;|
|00002500| 0a 58 09 09 09 66 69 6e | 64 5f 62 69 6e 64 73 28 |.X...fin|d_binds(|
|00002510| 28 64 61 74 61 5f 6f 62 | 6a 20 2a 29 20 6d 2c 20 |(data_ob|j *) m, |
|00002520| 62 75 66 29 3b 0a 58 09 | 09 09 69 66 20 28 62 75 |buf);.X.|..if (bu|
|00002530| 66 5b 30 5d 29 0a 58 09 | 09 09 09 54 79 70 65 6f |f[0]).X.|...Typeo|
|00002540| 75 74 28 22 3a 20 25 2d | 33 35 73 28 25 73 29 22 |ut(": %-|35s(%s)"|
|00002550| 2c 20 6d 2d 3e 4e 61 6d | 65 2c 20 62 75 66 29 3b |, m->Nam|e, buf);|
|00002560| 0a 58 09 09 09 65 6c 73 | 65 0a 58 09 09 09 09 54 |.X...els|e.X....T|
|00002570| 79 70 65 6f 75 74 28 22 | 3a 20 25 2d 33 35 73 25 |ypeout("|: %-35s%|
|00002580| 73 22 2c 20 22 65 78 65 | 63 75 74 65 2d 6d 61 63 |s", "exe|cute-mac|
|00002590| 72 6f 22 2c 20 6d 2d 3e | 4e 61 6d 65 29 3b 0a 58 |ro", m->|Name);.X|
|000025a0| 09 09 7d 0a 58 09 54 4f | 73 74 6f 70 28 29 3b 0a |..}.X.TO|stop();.|
|000025b0| 58 7d 0a 58 0a 58 45 78 | 74 65 6e 64 28 29 0a 58 |X}.X.XEx|tend().X|
|000025c0| 7b 0a 58 09 64 61 74 61 | 5f 6f 62 6a 09 2a 64 3b |{.X.data|_obj.*d;|
|000025d0| 0a 58 0a 58 09 69 66 20 | 28 64 20 3d 20 66 69 6e |.X.X.if |(d = fin|
|000025e0| 64 63 6f 6d 28 22 3a 20 | 22 29 29 0a 58 09 09 45 |dcom(": |")).X..E|
|000025f0| 78 65 63 43 6d 64 28 64 | 29 3b 0a 58 7d 0a 58 0a |xecCmd(d|);.X}.X.|
|00002600| 58 2f 2a 20 52 65 61 64 | 20 61 20 70 6f 73 69 74 |X/* Read| a posit|
|00002610| 69 76 65 20 69 6e 74 65 | 67 65 72 20 66 72 6f 6d |ive inte|ger from|
|00002620| 20 43 50 2e 20 20 49 74 | 20 6d 75 73 74 20 62 65 | CP. It| must be|
|00002630| 20 69 6e 20 62 61 73 65 | 20 42 41 53 45 2c 20 61 | in base| BASE, a|
|00002640| 6e 64 0a 58 20 20 20 63 | 6f 6d 70 6c 61 69 6e 73 |nd.X c|omplains|
|00002650| 20 69 66 20 69 74 20 69 | 73 6e 27 74 2e 20 20 49 | if it i|sn't. I|
|00002660| 66 20 61 6c 6c 69 6e 74 | 73 20 69 73 20 6e 6f 6e |f allint|s is non|
|00002670| 7a 65 72 6f 2c 20 61 6c | 6c 20 74 68 65 20 63 68 |zero, al|l the ch|
|00002680| 61 72 61 63 74 65 72 73 | 0a 58 20 20 20 69 6e 20 |aracters|.X in |
|00002690| 74 68 65 20 73 74 72 69 | 6e 67 20 6d 75 73 74 20 |the stri|ng must |
|000026a0| 62 65 20 69 6e 74 65 67 | 65 72 73 20 6f 72 20 77 |be integ|ers or w|
|000026b0| 65 20 72 65 74 75 72 6e | 20 2d 31 3b 20 6f 74 68 |e return| -1; oth|
|000026c0| 65 72 77 69 73 65 20 77 | 65 20 73 74 6f 70 0a 58 |erwise w|e stop.X|
|000026d0| 20 20 20 72 65 61 64 69 | 6e 67 20 61 74 20 74 68 | readi|ng at th|
|000026e0| 65 20 66 69 72 73 74 20 | 6e 6f 6e 64 69 67 69 74 |e first |nondigit|
|000026f0| 2e 20 2a 2f 0a 58 0a 58 | 63 68 72 5f 74 6f 5f 69 |. */.X.X|chr_to_i|
|00002700| 6e 74 28 63 70 2c 20 62 | 61 73 65 2c 20 61 6c 6c |nt(cp, b|ase, all|
|00002710| 69 6e 74 73 29 0a 58 72 | 65 67 69 73 74 65 72 20 |ints).Xr|egister |
|00002720| 63 68 61 72 09 2a 63 70 | 3b 0a 58 7b 0a 58 09 72 |char.*cp|;.X{.X.r|
|00002730| 65 67 69 73 74 65 72 20 | 69 6e 74 09 63 3b 0a 58 |egister |int.c;.X|
|00002740| 09 69 6e 74 09 76 61 6c | 75 65 20 3d 20 30 3b 0a |.int.val|ue = 0;.|
|00002750| 58 0a 58 09 77 68 69 6c | 65 20 28 63 20 3d 20 2a |X.X.whil|e (c = *|
|00002760| 63 70 2b 2b 29 20 7b 0a | 58 09 09 69 66 20 28 21 |cp++) {.|X..if (!|
|00002770| 69 73 64 69 67 69 74 28 | 63 29 29 20 7b 0a 58 09 |isdigit(|c)) {.X.|
|00002780| 09 09 69 66 20 28 61 6c | 6c 69 6e 74 73 29 0a 58 |..if (al|lints).X|
|00002790| 09 09 09 09 72 65 74 75 | 72 6e 20 2d 31 3b 0a 58 |....retu|rn -1;.X|
|000027a0| 09 09 09 62 72 65 61 6b | 3b 0a 58 09 09 7d 0a 58 |...break|;.X..}.X|
|000027b0| 09 09 63 20 3d 20 63 20 | 2d 20 27 30 27 3b 0a 58 |..c = c |- '0';.X|
|000027c0| 09 09 69 66 20 28 63 20 | 3e 3d 20 62 61 73 65 29 |..if (c |>= base)|
|000027d0| 0a 58 09 09 09 63 6f 6d | 70 6c 61 69 6e 28 22 59 |.X...com|plain("Y|
|000027e0| 6f 75 20 6d 75 73 74 20 | 73 70 65 63 69 66 79 20 |ou must |specify |
|000027f0| 69 6e 20 62 61 73 65 20 | 25 64 2e 22 2c 20 62 61 |in base |%d.", ba|
|00002800| 73 65 29 3b 0a 58 09 09 | 76 61 6c 75 65 20 3d 20 |se);.X..|value = |
|00002810| 76 61 6c 75 65 20 2a 20 | 62 61 73 65 20 2b 20 63 |value * |base + c|
|00002820| 3b 0a 58 09 7d 0a 58 09 | 72 65 74 75 72 6e 20 76 |;.X.}.X.|return v|
|00002830| 61 6c 75 65 3b 0a 58 7d | 0a 58 0a 58 61 73 6b 5f |alue;.X}|.X.Xask_|
|00002840| 69 6e 74 28 70 72 6f 6d | 70 74 2c 20 62 61 73 65 |int(prom|pt, base|
|00002850| 29 0a 58 63 68 61 72 09 | 2a 70 72 6f 6d 70 74 3b |).Xchar.|*prompt;|
|00002860| 0a 58 69 6e 74 09 62 61 | 73 65 3b 0a 58 7b 0a 58 |.Xint.ba|se;.X{.X|
|00002870| 09 63 68 61 72 09 2a 76 | 61 6c 20 3d 20 61 73 6b |.char.*v|al = ask|
|00002880| 28 28 63 68 61 72 20 2a | 29 20 30 2c 20 70 72 6f |((char *|) 0, pro|
|00002890| 6d 70 74 29 3b 0a 58 09 | 69 6e 74 09 76 61 6c 75 |mpt);.X.|int.valu|
|000028a0| 65 20 3d 20 63 68 72 5f | 74 6f 5f 69 6e 74 28 76 |e = chr_|to_int(v|
|000028b0| 61 6c 2c 20 62 61 73 65 | 2c 20 31 29 3b 0a 58 0a |al, base|, 1);.X.|
|000028c0| 58 09 69 66 20 28 76 61 | 6c 75 65 20 3c 20 30 29 |X.if (va|lue < 0)|
|000028d0| 0a 58 09 09 63 6f 6d 70 | 6c 61 69 6e 28 22 54 68 |.X..comp|lain("Th|
|000028e0| 61 74 27 73 20 6e 6f 74 | 20 61 20 6e 75 6d 62 65 |at's not| a numbe|
|000028f0| 72 21 22 29 3b 0a 58 09 | 72 65 74 75 72 6e 20 76 |r!");.X.|return v|
|00002900| 61 6c 75 65 3b 0a 58 7d | 0a 58 0a 58 70 72 69 76 |alue;.X}|.X.Xpriv|
|00002910| 61 74 65 0a 58 76 70 72 | 5f 61 75 78 28 76 70 2c |ate.Xvpr|_aux(vp,|
|00002920| 20 62 75 66 29 0a 58 72 | 65 67 69 73 74 65 72 20 | buf).Xr|egister |
|00002930| 73 74 72 75 63 74 20 76 | 61 72 69 61 62 6c 65 09 |struct v|ariable.|
|00002940| 2a 76 70 3b 0a 58 63 68 | 61 72 09 2a 62 75 66 3b |*vp;.Xch|ar.*buf;|
|00002950| 0a 58 7b 0a 58 09 73 77 | 69 74 63 68 20 28 76 70 |.X{.X.sw|itch (vp|
|00002960| 2d 3e 76 5f 66 6c 61 67 | 73 20 26 20 56 5f 54 59 |->v_flag|s & V_TY|
|00002970| 50 45 4d 41 53 4b 29 20 | 7b 0a 58 09 63 61 73 65 |PEMASK) |{.X.case|
|00002980| 20 56 5f 42 41 53 45 31 | 30 3a 0a 58 09 09 73 70 | V_BASE1|0:.X..sp|
|00002990| 72 69 6e 74 66 28 62 75 | 66 2c 20 22 25 64 22 2c |rintf(bu|f, "%d",|
|000029a0| 20 2a 28 76 70 2d 3e 76 | 5f 76 61 6c 75 65 29 29 | *(vp->v|_value))|
|000029b0| 3b 0a 58 09 09 62 72 65 | 61 6b 3b 0a 58 0a 58 09 |;.X..bre|ak;.X.X.|
|000029c0| 63 61 73 65 20 56 5f 42 | 41 53 45 38 3a 0a 58 09 |case V_B|ASE8:.X.|
|000029d0| 09 73 70 72 69 6e 74 66 | 28 62 75 66 2c 20 22 25 |.sprintf|(buf, "%|
|000029e0| 6f 22 2c 20 2a 28 76 70 | 2d 3e 76 5f 76 61 6c 75 |o", *(vp|->v_valu|
|000029f0| 65 29 29 3b 0a 58 09 09 | 62 72 65 61 6b 3b 0a 58 |e));.X..|break;.X|
|00002a00| 0a 58 09 63 61 73 65 20 | 56 5f 42 4f 4f 4c 3a 0a |.X.case |V_BOOL:.|
|00002a10| 58 09 09 73 70 72 69 6e | 74 66 28 62 75 66 2c 20 |X..sprin|tf(buf, |
|00002a20| 28 2a 28 76 70 2d 3e 76 | 5f 76 61 6c 75 65 29 29 |(*(vp->v|_value))|
|00002a30| 20 3f 20 22 6f 6e 22 20 | 3a 20 22 6f 66 66 22 29 | ? "on" |: "off")|
|00002a40| 3b 0a 58 09 09 62 72 65 | 61 6b 3b 0a 58 0a 58 09 |;.X..bre|ak;.X.X.|
|00002a50| 63 61 73 65 20 56 5f 53 | 54 52 49 4e 47 3a 0a 58 |case V_S|TRING:.X|
|00002a60| 09 63 61 73 65 20 56 5f | 46 49 4c 45 4e 41 4d 45 |.case V_|FILENAME|
|00002a70| 3a 0a 58 09 09 73 70 72 | 69 6e 74 66 28 62 75 66 |:.X..spr|intf(buf|
|00002a80| 2c 20 22 25 73 22 2c 20 | 28 63 68 61 72 20 2a 29 |, "%s", |(char *)|
|00002a90| 20 76 70 2d 3e 76 5f 76 | 61 6c 75 65 29 3b 0a 58 | vp->v_v|alue);.X|
|00002aa0| 09 09 62 72 65 61 6b 3b | 0a 58 0a 58 09 63 61 73 |..break;|.X.X.cas|
|00002ab0| 65 20 56 5f 43 48 41 52 | 3a 0a 58 09 09 73 70 72 |e V_CHAR|:.X..spr|
|00002ac0| 69 6e 74 66 28 62 75 66 | 2c 20 22 25 70 22 2c 20 |intf(buf|, "%p", |
|00002ad0| 2a 28 76 70 2d 3e 76 5f | 76 61 6c 75 65 29 29 3b |*(vp->v_|value));|
|00002ae0| 0a 58 09 09 62 72 65 61 | 6b 3b 0a 58 09 7d 0a 58 |.X..brea|k;.X.}.X|
|00002af0| 7d 0a 58 0a 58 50 72 56 | 61 72 28 29 0a 58 7b 0a |}.X.XPrV|ar().X{.|
|00002b00| 58 09 73 74 72 75 63 74 | 20 76 61 72 69 61 62 6c |X.struct| variabl|
|00002b10| 65 09 2a 76 70 3b 0a 58 | 09 63 68 61 72 09 70 72 |e.*vp;.X|.char.pr|
|00002b20| 62 75 66 5b 32 35 36 5d | 3b 0a 58 0a 58 09 69 66 |buf[256]|;.X.X.if|
|00002b30| 20 28 28 76 70 20 3d 20 | 28 73 74 72 75 63 74 20 | ((vp = |(struct |
|00002b40| 76 61 72 69 61 62 6c 65 | 20 2a 29 20 66 69 6e 64 |variable| *) find|
|00002b50| 76 61 72 28 50 72 6f 63 | 46 6d 74 29 29 20 3d 3d |var(Proc|Fmt)) ==|
|00002b60| 20 30 29 0a 58 09 09 72 | 65 74 75 72 6e 3b 0a 58 | 0).X..r|eturn;.X|
|00002b70| 09 76 70 72 5f 61 75 78 | 28 76 70 2c 20 70 72 62 |.vpr_aux|(vp, prb|
|00002b80| 75 66 29 3b 0a 58 09 73 | 5f 6d 65 73 73 28 22 3a |uf);.X.s|_mess(":|
|00002b90| 20 25 66 20 25 73 20 3d | 3e 20 25 73 22 2c 20 76 | %f %s =|> %s", v|
|00002ba0| 70 2d 3e 4e 61 6d 65 2c | 20 70 72 62 75 66 29 3b |p->Name,| prbuf);|
|00002bb0| 0a 58 7d 0a 58 0a 58 53 | 65 74 56 61 72 28 29 0a |.X}.X.XS|etVar().|
|00002bc0| 58 7b 0a 58 09 73 74 72 | 75 63 74 20 76 61 72 69 |X{.X.str|uct vari|
|00002bd0| 61 62 6c 65 09 2a 76 70 | 3b 0a 58 09 63 68 61 72 |able.*vp|;.X.char|
|00002be0| 09 2a 70 72 6f 6d 70 74 | 3b 0a 58 0a 58 09 69 66 |.*prompt|;.X.X.if|
|00002bf0| 20 28 28 76 70 20 3d 20 | 28 73 74 72 75 63 74 20 | ((vp = |(struct |
|00002c00| 76 61 72 69 61 62 6c 65 | 20 2a 29 20 66 69 6e 64 |variable| *) find|
|00002c10| 76 61 72 28 50 72 6f 63 | 46 6d 74 29 29 20 3d 3d |var(Proc|Fmt)) ==|
|00002c20| 20 30 29 0a 58 09 09 72 | 65 74 75 72 6e 3b 0a 58 | 0).X..r|eturn;.X|
|00002c30| 09 70 72 6f 6d 70 74 20 | 3d 20 73 70 72 69 6e 74 |.prompt |= sprint|
|00002c40| 28 22 3a 20 25 66 20 25 | 73 20 22 2c 20 76 70 2d |(": %f %|s ", vp-|
|00002c50| 3e 4e 61 6d 65 29 3b 0a | 58 0a 58 09 73 77 69 74 |>Name);.|X.X.swit|
|00002c60| 63 68 20 28 76 70 2d 3e | 76 5f 66 6c 61 67 73 20 |ch (vp->|v_flags |
|00002c70| 26 20 56 5f 54 59 50 45 | 4d 41 53 4b 29 20 7b 0a |& V_TYPE|MASK) {.|
|00002c80| 58 09 63 61 73 65 20 56 | 5f 42 41 53 45 31 30 3a |X.case V|_BASE10:|
|00002c90| 0a 58 09 63 61 73 65 20 | 56 5f 42 41 53 45 38 3a |.X.case |V_BASE8:|
|00002ca0| 0a 58 09 20 20 20 20 7b | 0a 58 09 20 20 20 20 09 |.X. {|.X. .|
|00002cb0| 69 6e 74 09 76 61 6c 75 | 65 3b 0a 58 0a 58 09 09 |int.valu|e;.X.X..|
|00002cc0| 76 61 6c 75 65 20 3d 20 | 61 73 6b 5f 69 6e 74 28 |value = |ask_int(|
|00002cd0| 70 72 6f 6d 70 74 2c 20 | 28 28 76 70 2d 3e 76 5f |prompt, |((vp->v_|
|00002ce0| 66 6c 61 67 73 20 26 20 | 56 5f 54 59 50 45 4d 41 |flags & |V_TYPEMA|
|00002cf0| 53 4b 29 20 3d 3d 20 56 | 5f 42 41 53 45 31 30 29 |SK) == V|_BASE10)|
|00002d00| 0a 58 09 09 09 09 09 20 | 20 3f 20 31 30 20 3a 20 |.X..... | ? 10 : |
|00002d10| 38 29 3b 0a 58 09 09 2a | 28 76 70 2d 3e 76 5f 76 |8);.X..*|(vp->v_v|
|00002d20| 61 6c 75 65 29 20 3d 20 | 76 61 6c 75 65 3b 0a 58 |alue) = |value;.X|
|00002d30| 09 20 20 20 20 09 62 72 | 65 61 6b 3b 0a 58 09 20 |. .br|eak;.X. |
|00002d40| 20 20 20 7d 0a 58 0a 58 | 09 63 61 73 65 20 56 5f | }.X.X|.case V_|
|00002d50| 42 4f 4f 4c 3a 0a 58 09 | 20 20 20 20 7b 0a 58 09 |BOOL:.X.| {.X.|
|00002d60| 20 20 20 20 09 63 68 61 | 72 09 2a 64 65 66 20 3d | .cha|r.*def =|
|00002d70| 20 2a 28 76 70 2d 3e 76 | 5f 76 61 6c 75 65 29 20 | *(vp->v|_value) |
|00002d80| 3f 20 22 6f 66 66 22 20 | 3a 20 22 6f 6e 22 2c 0a |? "off" |: "on",.|
|00002d90| 58 09 20 20 20 20 09 09 | 2a 6f 6e 5f 6f 66 66 3b |X. ..|*on_off;|
|00002da0| 0a 58 09 20 20 20 20 09 | 69 6e 74 09 76 61 6c 75 |.X. .|int.valu|
|00002db0| 65 3b 0a 58 0a 58 09 20 | 20 20 20 09 6f 6e 5f 6f |e;.X.X. | .on_o|
|00002dc0| 66 66 20 3d 20 61 73 6b | 28 64 65 66 2c 20 70 72 |ff = ask|(def, pr|
|00002dd0| 6f 6d 70 74 29 3b 0a 58 | 09 09 69 66 20 28 63 61 |ompt);.X|..if (ca|
|00002de0| 73 65 63 6d 70 28 6f 6e | 5f 6f 66 66 2c 20 22 6f |secmp(on|_off, "o|
|00002df0| 6e 22 29 20 3d 3d 20 30 | 29 0a 58 09 09 09 76 61 |n") == 0|).X...va|
|00002e00| 6c 75 65 20 3d 20 4f 4e | 3b 0a 58 09 20 20 20 20 |lue = ON|;.X. |
|00002e10| 09 65 6c 73 65 20 69 66 | 20 28 63 61 73 65 63 6d |.else if| (casecm|
|00002e20| 70 28 6f 6e 5f 6f 66 66 | 2c 20 22 6f 66 66 22 29 |p(on_off|, "off")|
|00002e30| 20 3d 3d 20 30 29 0a 58 | 09 20 20 20 20 09 09 76 | == 0).X|. ..v|
|00002e40| 61 6c 75 65 20 3d 20 4f | 46 46 3b 0a 58 09 20 20 |alue = O|FF;.X. |
|00002e50| 20 20 09 65 6c 73 65 0a | 58 09 20 20 20 20 09 09 | .else.|X. ..|
|00002e60| 63 6f 6d 70 6c 61 69 6e | 28 22 42 6f 6f 6c 65 61 |complain|("Boolea|
|00002e70| 6e 20 76 61 72 69 61 62 | 6c 65 73 20 6d 75 73 74 |n variab|les must|
|00002e80| 20 62 65 20 4f 4e 20 6f | 72 20 4f 46 46 2e 22 29 | be ON o|r OFF.")|
|00002e90| 3b 0a 58 09 20 20 20 20 | 09 2a 28 76 70 2d 3e 76 |;.X. |.*(vp->v|
|00002ea0| 5f 76 61 6c 75 65 29 20 | 3d 20 76 61 6c 75 65 3b |_value) |= value;|
|00002eb0| 0a 58 09 20 20 20 20 09 | 73 5f 6d 65 73 73 28 22 |.X. .|s_mess("|
|00002ec0| 25 73 25 73 22 2c 20 70 | 72 6f 6d 70 74 2c 20 76 |%s%s", p|rompt, v|
|00002ed0| 61 6c 75 65 20 3f 20 22 | 6f 6e 22 20 3a 20 22 6f |alue ? "|on" : "o|
|00002ee0| 66 66 22 29 3b 0a 58 09 | 20 20 20 20 09 62 72 65 |ff");.X.| .bre|
|00002ef0| 61 6b 3b 0a 58 09 20 20 | 20 20 7d 0a 58 0a 58 09 |ak;.X. | }.X.X.|
|00002f00| 63 61 73 65 20 56 5f 46 | 49 4c 45 4e 41 4d 45 3a |case V_F|ILENAME:|
|00002f10| 0a 58 09 20 20 20 20 7b | 0a 58 09 09 63 68 61 72 |.X. {|.X..char|
|00002f20| 09 66 62 75 66 5b 46 49 | 4c 45 53 49 5a 45 5d 3b |.fbuf[FI|LESIZE];|
|00002f30| 0a 58 0a 58 09 20 20 20 | 20 09 73 70 72 69 6e 74 |.X.X. | .sprint|
|00002f40| 66 28 26 70 72 6f 6d 70 | 74 5b 73 74 72 6c 65 6e |f(&promp|t[strlen|
|00002f50| 28 70 72 6f 6d 70 74 29 | 5d 2c 20 22 28 64 65 66 |(prompt)|], "(def|
|00002f60| 61 75 6c 74 20 25 73 29 | 20 22 2c 20 76 70 2d 3e |ault %s)| ", vp->|
|00002f70| 76 5f 76 61 6c 75 65 29 | 3b 0a 58 09 20 20 20 20 |v_value)|;.X. |
|00002f80| 09 28 76 6f 69 64 29 20 | 61 73 6b 5f 66 69 6c 65 |.(void) |ask_file|
|00002f90| 28 70 72 6f 6d 70 74 2c | 20 28 63 68 61 72 20 2a |(prompt,| (char *|
|00002fa0| 29 20 76 70 2d 3e 76 5f | 76 61 6c 75 65 2c 20 66 |) vp->v_|value, f|
|00002fb0| 62 75 66 29 3b 0a 58 09 | 09 73 74 72 63 70 79 28 |buf);.X.|.strcpy(|
|00002fc0| 28 63 68 61 72 20 2a 29 | 20 76 70 2d 3e 76 5f 76 |(char *)| vp->v_v|
|00002fd0| 61 6c 75 65 2c 20 66 62 | 75 66 29 3b 0a 58 09 20 |alue, fb|uf);.X. |
|00002fe0| 20 20 20 09 62 72 65 61 | 6b 3b 0a 58 09 20 20 20 | .brea|k;.X. |
|00002ff0| 20 7d 0a 58 0a 58 09 63 | 61 73 65 20 56 5f 53 54 | }.X.X.c|ase V_ST|
|00003000| 52 49 4e 47 3a 0a 58 09 | 20 20 20 20 7b 0a 58 09 |RING:.X.| {.X.|
|00003010| 09 63 68 61 72 09 2a 73 | 74 72 3b 0a 58 0a 58 09 |.char.*s|tr;.X.X.|
|00003020| 20 20 20 20 09 2f 2a 20 | 44 6f 5f 61 73 6b 28 29 | ./* |Do_ask()|
|00003030| 20 73 6f 20 79 6f 75 20 | 63 61 6e 20 73 65 74 20 | so you |can set |
|00003040| 73 74 72 69 6e 67 20 74 | 6f 20 22 22 20 69 66 20 |string t|o "" if |
|00003050| 79 6f 75 20 73 6f 20 64 | 65 73 69 72 65 2e 20 2a |you so d|esire. *|
|00003060| 2f 0a 58 09 20 20 20 20 | 09 73 74 72 20 3d 20 64 |/.X. |.str = d|
|00003070| 6f 5f 61 73 6b 28 22 5c | 72 5c 6e 22 2c 20 28 69 |o_ask("\|r\n", (i|
|00003080| 6e 74 20 28 2a 29 28 29 | 29 20 30 2c 20 28 63 68 |nt (*)()|) 0, (ch|
|00003090| 61 72 20 2a 29 20 76 70 | 2d 3e 76 5f 76 61 6c 75 |ar *) vp|->v_valu|
|000030a0| 65 2c 20 70 72 6f 6d 70 | 74 29 3b 0a 58 09 20 20 |e, promp|t);.X. |
|000030b0| 20 20 09 69 66 20 28 73 | 74 72 20 3d 3d 20 30 29 | .if (s|tr == 0)|
|000030c0| 0a 58 09 09 09 73 74 72 | 20 3d 20 4e 75 6c 6c 53 |.X...str| = NullS|
|000030d0| 74 72 3b 0a 58 09 20 20 | 20 20 09 73 74 72 63 70 |tr;.X. | .strcp|
|000030e0| 79 28 28 63 68 61 72 20 | 2a 29 20 76 70 2d 3e 76 |y((char |*) vp->v|
|000030f0| 5f 76 61 6c 75 65 2c 20 | 73 74 72 29 3b 0a 58 09 |_value, |str);.X.|
|00003100| 09 2f 2a 20 2e 2e 2e 20 | 61 6e 64 20 68 6f 70 65 |./* ... |and hope|
|00003110| 20 74 68 65 72 65 20 69 | 73 20 65 6e 6f 75 67 68 | there i|s enough|
|00003120| 20 72 6f 6f 6d 2e 20 2a | 2f 0a 58 09 20 20 20 20 | room. *|/.X. |
|00003130| 09 62 72 65 61 6b 3b 0a | 58 09 20 20 20 20 7d 0a |.break;.|X. }.|
|00003140| 58 09 63 61 73 65 20 56 | 5f 43 48 41 52 3a 0a 58 |X.case V|_CHAR:.X|
|00003150| 09 09 66 5f 6d 65 73 73 | 28 70 72 6f 6d 70 74 29 |..f_mess|(prompt)|
|00003160| 3b 0a 58 09 20 20 20 20 | 09 2a 28 76 70 2d 3e 76 |;.X. |.*(vp->v|
|00003170| 5f 76 61 6c 75 65 29 20 | 3d 20 61 64 64 67 65 74 |_value) |= addget|
|00003180| 63 28 29 3b 0a 58 09 09 | 62 72 65 61 6b 3b 09 20 |c();.X..|break;. |
|00003190| 20 20 20 09 0a 58 0a 58 | 09 7d 0a 58 09 69 66 20 | ..X.X|.}.X.if |
|000031a0| 28 76 70 2d 3e 76 5f 66 | 6c 61 67 73 20 26 20 56 |(vp->v_f|lags & V|
|000031b0| 5f 4d 4f 44 45 4c 49 4e | 45 29 0a 58 09 09 55 70 |_MODELIN|E).X..Up|
|000031c0| 64 4d 6f 64 4c 69 6e 65 | 2b 2b 3b 0a 58 09 69 66 |dModLine|++;.X.if|
|000031d0| 20 28 76 70 2d 3e 76 5f | 66 6c 61 67 73 20 26 20 | (vp->v_|flags & |
|000031e0| 56 5f 43 4c 52 53 43 52 | 45 45 4e 29 0a 58 09 09 |V_CLRSCR|EEN).X..|
|000031f0| 43 6c 41 6e 64 52 65 64 | 72 61 77 28 29 3b 0a 58 |ClAndRed|raw();.X|
|00003200| 09 69 66 20 28 76 70 2d | 3e 76 5f 66 6c 61 67 73 |.if (vp-|>v_flags|
|00003210| 20 26 20 56 5f 54 54 59 | 5f 52 45 53 45 54 29 0a | & V_TTY|_RESET).|
|00003220| 58 09 09 74 74 79 5f 72 | 65 73 65 74 28 29 3b 0a |X..tty_r|eset();.|
|00003230| 58 7d 0a 58 09 09 09 0a | 58 2f 2a 20 43 6f 6d 6d |X}.X....|X/* Comm|
|00003240| 61 6e 64 20 63 6f 6d 70 | 6c 65 74 69 6f 6e 20 2d |and comp|letion -|
|00003250| 20 70 6f 73 73 69 62 6c | 65 20 69 73 20 61 6e 20 | possibl|e is an |
|00003260| 61 72 72 61 79 20 6f 66 | 20 73 74 72 69 6e 67 73 |array of| strings|
|00003270| 2c 20 70 72 6f 6d 70 74 | 20 69 73 0a 58 20 20 20 |, prompt| is.X |
|00003280| 74 68 65 20 70 72 6f 6d | 70 74 20 74 6f 20 75 73 |the prom|pt to us|
|00003290| 65 2c 20 61 6e 64 20 66 | 6c 61 67 73 20 61 72 65 |e, and f|lags are|
|000032a0| 20 2e 2e 2e 20 77 65 6c | 6c 20 72 65 61 64 20 6a | ... wel|l read j|
|000032b0| 6f 76 65 2e 68 2e 0a 58 | 0a 58 20 20 20 49 66 20 |ove.h..X|.X If |
|000032c0| 66 6c 61 67 73 20 61 72 | 65 20 52 45 54 5f 53 54 |flags ar|e RET_ST|
|000032d0| 41 54 45 2c 20 61 6e 64 | 20 74 68 65 20 75 73 65 |ATE, and| the use|
|000032e0| 72 20 68 69 74 73 20 3c | 72 65 74 75 72 6e 3e 20 |r hits <|return> |
|000032f0| 77 68 61 74 20 74 68 65 | 79 20 74 79 70 65 64 0a |what the|y typed.|
|00003300| 58 20 20 20 73 6f 20 66 | 61 72 20 69 73 20 69 6e |X so f|ar is in|
|00003310| 20 74 68 65 20 4d 69 6e | 69 62 75 66 20 73 74 72 | the Min|ibuf str|
|00003320| 69 6e 67 2e 20 2a 2f 0a | 58 0a 58 70 72 69 76 61 |ing. */.|X.Xpriva|
|00003330| 74 65 20 63 68 61 72 09 | 2a 2a 50 6f 73 73 69 62 |te char.|**Possib|
|00003340| 6c 65 3b 0a 58 70 72 69 | 76 61 74 65 20 69 6e 74 |le;.Xpri|vate int|
|00003350| 09 63 6f 6d 70 5f 76 61 | 6c 75 65 2c 0a 58 09 09 |.comp_va|lue,.X..|
|00003360| 63 6f 6d 70 5f 66 6c 61 | 67 73 3b 0a 58 0a 58 61 |comp_fla|gs;.X.Xa|
|00003370| 75 78 5f 63 6f 6d 70 6c | 65 74 65 28 63 29 0a 58 |ux_compl|ete(c).X|
|00003380| 7b 0a 58 09 69 6e 74 09 | 63 6f 6d 6d 61 6e 64 2c |{.X.int.|command,|
|00003390| 0a 58 09 09 6c 65 6e 67 | 74 68 2c 0a 58 09 09 69 |.X..leng|th,.X..i|
|000033a0| 3b 0a 58 0a 58 09 69 66 | 20 28 63 6f 6d 70 5f 66 |;.X.X.if| (comp_f|
|000033b0| 6c 61 67 73 20 26 20 43 | 41 53 45 49 4e 44 29 20 |lags & C|ASEIND) |
|000033c0| 7b 0a 58 09 09 63 68 61 | 72 09 2a 6c 70 3b 0a 58 |{.X..cha|r.*lp;.X|
|000033d0| 0a 58 09 09 66 6f 72 20 | 28 6c 70 20 3d 20 6c 69 |.X..for |(lp = li|
|000033e0| 6e 65 62 75 66 3b 20 2a | 6c 70 20 21 3d 20 27 5c |nebuf; *|lp != '\|
|000033f0| 30 27 3b 20 6c 70 2b 2b | 29 0a 58 09 09 09 69 66 |0'; lp++|).X...if|
|00003400| 20 28 69 73 75 70 70 65 | 72 28 2a 6c 70 29 29 0a | (isuppe|r(*lp)).|
|00003410| 58 09 09 09 09 2a 6c 70 | 20 3d 20 74 6f 6c 6f 77 |X....*lp| = tolow|
|00003420| 65 72 28 2a 6c 70 29 3b | 0a 58 09 7d 0a 58 09 73 |er(*lp);|.X.}.X.s|
|00003430| 77 69 74 63 68 20 28 63 | 29 20 7b 0a 58 09 63 61 |witch (c|) {.X.ca|
|00003440| 73 65 20 45 4f 46 3a 0a | 58 09 09 63 6f 6d 70 5f |se EOF:.|X..comp_|
|00003450| 76 61 6c 75 65 20 3d 20 | 2d 31 3b 0a 58 09 09 72 |value = |-1;.X..r|
|00003460| 65 74 75 72 6e 20 30 3b | 0a 58 0a 58 09 63 61 73 |eturn 0;|.X.X.cas|
|00003470| 65 20 27 5c 72 27 3a 0a | 58 09 63 61 73 65 20 27 |e '\r':.|X.case '|
|00003480| 5c 6e 27 3a 0a 58 09 09 | 63 6f 6d 6d 61 6e 64 20 |\n':.X..|command |
|00003490| 3d 20 6d 61 74 63 68 28 | 50 6f 73 73 69 62 6c 65 |= match(|Possible|
|000034a0| 2c 20 6c 69 6e 65 62 75 | 66 29 3b 0a 58 09 09 69 |, linebu|f);.X..i|
|000034b0| 66 20 28 63 6f 6d 6d 61 | 6e 64 20 3e 3d 20 30 29 |f (comma|nd >= 0)|
|000034c0| 20 7b 0a 58 09 09 09 63 | 6f 6d 70 5f 76 61 6c 75 | {.X...c|omp_valu|
|000034d0| 65 20 3d 20 63 6f 6d 6d | 61 6e 64 3b 0a 58 09 09 |e = comm|and;.X..|
|000034e0| 09 72 65 74 75 72 6e 20 | 30 3b 09 2f 2a 20 74 65 |.return |0;./* te|
|000034f0| 6c 6c 73 20 61 73 6b 20 | 74 6f 20 73 74 6f 70 20 |lls ask |to stop |
|00003500| 2a 2f 0a 58 09 09 7d 0a | 58 09 09 69 66 20 28 65 |*/.X..}.|X..if (e|
|00003510| 6f 6c 70 28 29 20 26 26 | 20 62 6f 6c 70 28 29 29 |olp() &&| bolp())|
|00003520| 20 7b 0a 58 09 09 09 63 | 6f 6d 70 5f 76 61 6c 75 | {.X...c|omp_valu|
|00003530| 65 20 3d 20 4e 55 4c 4c | 53 54 52 49 4e 47 3b 0a |e = NULL|STRING;.|
|00003540| 58 09 09 09 72 65 74 75 | 72 6e 20 30 3b 0a 58 09 |X...retu|rn 0;.X.|
|00003550| 09 7d 0a 58 09 09 69 66 | 20 28 63 6f 6d 70 5f 66 |.}.X..if| (comp_f|
|00003560| 6c 61 67 73 20 26 20 52 | 45 54 5f 53 54 41 54 45 |lags & R|ET_STATE|
|00003570| 29 20 73 77 69 74 63 68 | 20 28 63 6f 6d 6d 61 6e |) switch| (comman|
|00003580| 64 29 20 7b 0a 58 09 09 | 09 63 61 73 65 20 55 4e |d) {.X..|.case UN|
|00003590| 49 51 55 45 3a 0a 58 09 | 09 09 63 61 73 65 20 4f |IQUE:.X.|..case O|
|000035a0| 52 49 47 49 4e 41 4c 3a | 0a 58 09 09 09 63 61 73 |RIGINAL:|.X...cas|
|000035b0| 65 20 4e 55 4c 4c 53 54 | 52 49 4e 47 3a 0a 58 09 |e NULLST|RING:.X.|
|000035c0| 09 09 09 63 6f 6d 70 5f | 76 61 6c 75 65 20 3d 20 |...comp_|value = |
|000035d0| 63 6f 6d 6d 61 6e 64 3b | 0a 58 09 09 09 09 72 65 |command;|.X....re|
|000035e0| 74 75 72 6e 20 30 3b 0a | 58 0a 58 09 09 09 64 65 |turn 0;.|X.X...de|
|000035f0| 66 61 75 6c 74 3a 0a 58 | 09 09 09 09 62 72 65 61 |fault:.X|....brea|
|00003600| 6b 3b 0a 58 09 09 7d 0a | 58 09 09 69 66 20 28 49 |k;.X..}.|X..if (I|
|00003610| 6e 4a 6f 76 65 72 63 29 | 0a 58 09 09 09 63 6f 6d |nJoverc)|.X...com|
|00003620| 70 6c 61 69 6e 28 22 5b | 5c 22 25 73 5c 22 20 75 |plain("[|\"%s\" u|
|00003630| 6e 6b 6e 6f 77 6e 5d 22 | 2c 20 6c 69 6e 65 62 75 |nknown]"|, linebu|
|00003640| 66 29 3b 0a 58 09 09 72 | 62 65 6c 6c 28 29 3b 0a |f);.X..r|bell();.|
|00003650| 58 09 09 62 72 65 61 6b | 3b 0a 58 0a 58 09 63 61 |X..break|;.X.X.ca|
|00003660| 73 65 20 27 5c 74 27 3a | 0a 58 09 63 61 73 65 20 |se '\t':|.X.case |
|00003670| 27 20 27 3a 0a 58 09 20 | 20 20 20 7b 0a 58 09 09 |' ':.X. | {.X..|
|00003680| 69 6e 74 09 6d 69 6e 6d | 61 74 63 68 20 3d 20 31 |int.minm|atch = 1|
|00003690| 30 30 30 2c 0a 58 09 20 | 20 20 20 09 09 6d 61 78 |000,.X. | ..max|
|000036a0| 6d 61 74 63 68 20 3d 20 | 30 2c 0a 58 09 20 20 20 |match = |0,.X. |
|000036b0| 20 09 09 6e 75 6d 66 6f | 75 6e 64 20 3d 20 30 2c | ..numfo|und = 0,|
|000036c0| 0a 58 09 20 20 20 20 09 | 09 6c 61 73 74 6d 61 74 |.X. .|.lastmat|
|000036d0| 63 68 20 3d 20 2d 31 2c | 0a 58 09 09 09 6c 65 6e |ch = -1,|.X...len|
|000036e0| 67 74 68 20 3d 20 73 74 | 72 6c 65 6e 28 6c 69 6e |gth = st|rlen(lin|
|000036f0| 65 62 75 66 29 3b 0a 58 | 0a 58 09 09 66 6f 72 20 |ebuf);.X|.X..for |
|00003700| 28 69 20 3d 20 30 3b 20 | 50 6f 73 73 69 62 6c 65 |(i = 0; |Possible|
|00003710| 5b 69 5d 20 21 3d 20 30 | 3b 20 69 2b 2b 29 20 7b |[i] != 0|; i++) {|
|00003720| 0a 58 09 09 09 69 6e 74 | 09 74 68 69 73 5f 6c 65 |.X...int|.this_le|
|00003730| 6e 3b 0a 58 0a 58 09 09 | 09 74 68 69 73 5f 6c 65 |n;.X.X..|.this_le|
|00003740| 6e 20 3d 20 6e 75 6d 63 | 6f 6d 70 28 50 6f 73 73 |n = numc|omp(Poss|
|00003750| 69 62 6c 65 5b 69 5d 2c | 20 6c 69 6e 65 62 75 66 |ible[i],| linebuf|
|00003760| 29 3b 0a 58 09 09 09 6d | 61 78 6d 61 74 63 68 20 |);.X...m|axmatch |
|00003770| 3d 20 6d 61 78 28 6d 61 | 78 6d 61 74 63 68 2c 20 |= max(ma|xmatch, |
|00003780| 74 68 69 73 5f 6c 65 6e | 29 3b 0a 58 09 09 09 69 |this_len|);.X...i|
|00003790| 66 20 28 74 68 69 73 5f | 6c 65 6e 20 3e 3d 20 6c |f (this_|len >= l|
|000037a0| 65 6e 67 74 68 29 20 7b | 0a 58 09 09 09 09 69 66 |ength) {|.X....if|
|000037b0| 20 28 6e 75 6d 66 6f 75 | 6e 64 29 0a 58 09 09 09 | (numfou|nd).X...|
|000037c0| 09 09 6d 69 6e 6d 61 74 | 63 68 20 3d 20 6d 69 6e |..minmat|ch = min|
|000037d0| 28 6d 69 6e 6d 61 74 63 | 68 2c 20 6e 75 6d 63 6f |(minmatc|h, numco|
|000037e0| 6d 70 28 50 6f 73 73 69 | 62 6c 65 5b 6c 61 73 74 |mp(Possi|ble[last|
|000037f0| 6d 61 74 63 68 5d 2c 20 | 50 6f 73 73 69 62 6c 65 |match], |Possible|
|00003800| 5b 69 5d 29 29 3b 0a 58 | 09 09 09 09 65 6c 73 65 |[i]));.X|....else|
|00003810| 0a 58 09 09 09 09 09 6d | 69 6e 6d 61 74 63 68 20 |.X.....m|inmatch |
|00003820| 3d 20 73 74 72 6c 65 6e | 28 50 6f 73 73 69 62 6c |= strlen|(Possibl|
|00003830| 65 5b 69 5d 29 3b 0a 58 | 09 09 09 09 6e 75 6d 66 |e[i]);.X|....numf|
|00003840| 6f 75 6e 64 2b 2b 3b 0a | 58 09 09 09 09 6c 61 73 |ound++;.|X....las|
|00003850| 74 6d 61 74 63 68 20 3d | 20 69 3b 0a 58 09 09 09 |tmatch =| i;.X...|
|00003860| 09 69 66 20 28 73 74 72 | 63 6d 70 28 6c 69 6e 65 |.if (str|cmp(line|
|00003870| 62 75 66 2c 20 50 6f 73 | 73 69 62 6c 65 5b 69 5d |buf, Pos|sible[i]|
|00003880| 29 20 3d 3d 20 30 29 0a | 58 09 09 09 09 09 62 72 |) == 0).|X.....br|
|00003890| 65 61 6b 3b 0a 58 09 09 | 09 7d 0a 58 09 09 7d 0a |eak;.X..|.}.X..}.|
|000038a0| 58 0a 58 09 09 69 66 20 | 28 6e 75 6d 66 6f 75 6e |X.X..if |(numfoun|
|000038b0| 64 20 3d 3d 20 30 29 20 | 7b 0a 58 09 09 09 72 62 |d == 0) |{.X...rb|
|000038c0| 65 6c 6c 28 29 3b 0a 58 | 09 09 09 69 66 20 28 49 |ell();.X|...if (I|
|000038d0| 6e 4a 6f 76 65 72 63 29 | 0a 58 09 09 09 09 63 6f |nJoverc)|.X....co|
|000038e0| 6d 70 6c 61 69 6e 28 22 | 5b 5c 22 25 73 5c 22 20 |mplain("|[\"%s\" |
|000038f0| 75 6e 6b 6e 6f 77 6e 5d | 22 2c 20 6c 69 6e 65 62 |unknown]|", lineb|
|00003900| 75 66 29 3b 0a 58 09 09 | 09 2f 2a 20 49 66 20 77 |uf);.X..|./* If w|
|00003910| 65 27 72 65 20 6e 6f 74 | 20 69 6e 20 74 68 65 20 |e're not| in the |
|00003920| 2e 6a 6f 76 65 72 63 20 | 74 68 65 6e 0a 58 09 09 |.joverc |then.X..|
|00003930| 09 20 20 20 6c 65 74 27 | 73 20 64 6f 20 73 6f 6d |. let'|s do som|
|00003940| 65 74 68 69 6e 67 20 68 | 65 6c 70 66 75 6c 20 66 |ething h|elpful f|
|00003950| 6f 72 20 74 68 65 0a 58 | 09 09 09 20 20 20 75 73 |or the.X|... us|
|00003960| 65 72 2e 20 2a 2f 0a 58 | 09 09 09 69 66 20 28 6d |er. */.X|...if (m|
|00003970| 61 78 6d 61 74 63 68 20 | 3c 20 6c 65 6e 67 74 68 |axmatch |< length|
|00003980| 29 20 7b 0a 58 09 09 09 | 09 63 68 61 72 09 2a 63 |) {.X...|.char.*c|
|00003990| 70 3b 0a 58 0a 58 09 09 | 09 09 63 70 20 3d 20 6c |p;.X.X..|..cp = l|
|000039a0| 69 6e 65 62 75 66 20 2b | 20 6d 61 78 6d 61 74 63 |inebuf +| maxmatc|
|000039b0| 68 3b 0a 58 09 09 09 09 | 2a 63 70 20 3d 20 30 3b |h;.X....|*cp = 0;|
|000039c0| 0a 58 09 09 09 09 45 6f | 6c 28 29 3b 0a 58 09 09 |.X....Eo|l();.X..|
|000039d0| 09 7d 0a 58 09 09 09 62 | 72 65 61 6b 3b 0a 58 09 |.}.X...b|reak;.X.|
|000039e0| 09 7d 0a 58 09 20 20 20 | 20 09 69 66 20 28 63 20 |.}.X. | .if (c |
|000039f0| 21 3d 20 27 5c 74 27 20 | 26 26 20 6e 75 6d 66 6f |!= '\t' |&& numfo|
|00003a00| 75 6e 64 20 3d 3d 20 31 | 29 20 7b 0a 58 09 20 20 |und == 1|) {.X. |
|00003a10| 20 20 09 09 63 6f 6d 70 | 5f 76 61 6c 75 65 20 3d | ..comp|_value =|
|00003a20| 20 6c 61 73 74 6d 61 74 | 63 68 3b 0a 58 09 09 09 | lastmat|ch;.X...|
|00003a30| 72 65 74 75 72 6e 20 30 | 3b 0a 58 09 09 7d 0a 58 |return 0|;.X..}.X|
|00003a40| 09 09 6e 75 6c 6c 5f 6e | 63 70 79 28 6c 69 6e 65 |..null_n|cpy(line|
|00003a50| 62 75 66 2c 20 50 6f 73 | 73 69 62 6c 65 5b 6c 61 |buf, Pos|sible[la|
|00003a60| 73 74 6d 61 74 63 68 5d | 2c 20 6d 69 6e 6d 61 74 |stmatch]|, minmat|
|00003a70| 63 68 29 3b 0a 58 09 20 | 20 20 20 09 45 6f 6c 28 |ch);.X. | .Eol(|
|00003a80| 29 3b 0a 58 09 09 69 66 | 20 28 6d 69 6e 6d 61 74 |);.X..if| (minmat|
|00003a90| 63 68 20 3d 3d 20 6c 65 | 6e 67 74 68 29 09 2f 2a |ch == le|ngth)./*|
|00003aa0| 20 4e 6f 20 64 69 66 66 | 65 72 65 6e 63 65 20 2a | No diff|erence *|
|00003ab0| 2f 0a 58 09 09 09 72 62 | 65 6c 6c 28 29 3b 0a 58 |/.X...rb|ell();.X|
|00003ac0| 09 09 62 72 65 61 6b 3b | 0a 58 09 20 20 20 20 7d |..break;|.X. }|
|00003ad0| 0a 58 0a 58 09 63 61 73 | 65 20 27 3f 27 3a 0a 58 |.X.X.cas|e '?':.X|
|00003ae0| 09 09 69 66 20 28 49 6e | 4a 6f 76 65 72 63 29 0a |..if (In|Joverc).|
|00003af0| 58 09 09 09 63 6f 6d 70 | 6c 61 69 6e 28 28 63 68 |X...comp|lain((ch|
|00003b00| 61 72 20 2a 29 20 30 29 | 3b 0a 58 09 09 2f 2a 20 |ar *) 0)|;.X../* |
|00003b10| 6b 6c 75 64 67 65 3a 20 | 69 6e 20 63 61 73 65 20 |kludge: |in case |
|00003b20| 77 65 27 72 65 20 75 73 | 69 6e 67 20 55 73 65 42 |we're us|ing UseB|
|00003b30| 75 66 66 65 72 73 2c 20 | 69 6e 20 77 68 69 63 68 |uffers, |in which|
|00003b40| 20 63 61 73 65 0a 58 09 | 09 20 20 20 6c 69 6e 65 | case.X.|. line|
|00003b50| 62 75 66 20 67 65 74 73 | 20 77 72 69 74 74 65 6e |buf gets| written|
|00003b60| 20 61 6c 6c 20 6f 76 65 | 72 20 2a 2f 0a 58 09 09 | all ove|r */.X..|
|00003b70| 73 74 72 63 70 79 28 4d | 69 6e 69 62 75 66 2c 20 |strcpy(M|inibuf, |
|00003b80| 6c 69 6e 65 62 75 66 29 | 3b 0a 58 09 09 6c 65 6e |linebuf)|;.X..len|
|00003b90| 67 74 68 20 3d 20 73 74 | 72 6c 65 6e 28 4d 69 6e |gth = st|rlen(Min|
|00003ba0| 69 62 75 66 29 3b 0a 58 | 09 09 54 4f 73 74 61 72 |ibuf);.X|..TOstar|
|00003bb0| 74 28 22 43 6f 6d 70 6c | 65 74 69 6f 6e 22 2c 20 |t("Compl|etion", |
|00003bc0| 54 52 55 45 29 3b 09 2f | 2a 20 66 6f 72 20 6e 6f |TRUE);./|* for no|
|00003bd0| 77 20 2e 2e 2e 20 2a 2f | 0a 58 09 09 66 6f 72 20 |w ... */|.X..for |
|00003be0| 28 69 20 3d 20 30 3b 20 | 50 6f 73 73 69 62 6c 65 |(i = 0; |Possible|
|00003bf0| 5b 69 5d 3b 20 69 2b 2b | 29 0a 58 09 09 09 69 66 |[i]; i++|).X...if|
|00003c00| 20 28 6e 75 6d 63 6f 6d | 70 28 50 6f 73 73 69 62 | (numcom|p(Possib|
|00003c10| 6c 65 5b 69 5d 2c 20 4d | 69 6e 69 62 75 66 29 20 |le[i], M|inibuf) |
|00003c20| 3e 3d 20 6c 65 6e 67 74 | 68 29 20 7b 0a 58 09 09 |>= lengt|h) {.X..|
|00003c30| 09 09 54 79 70 65 6f 75 | 74 28 50 6f 73 73 69 62 |..Typeou|t(Possib|
|00003c40| 6c 65 5b 69 5d 29 3b 0a | 58 09 09 09 09 69 66 20 |le[i]);.|X....if |
|00003c50| 28 54 4f 61 62 6f 72 74 | 20 21 3d 20 30 29 0a 58 |(TOabort| != 0).X|
|00003c60| 09 09 09 09 09 62 72 65 | 61 6b 3b 0a 58 09 09 09 |.....bre|ak;.X...|
|00003c70| 7d 0a 58 0a 58 09 09 54 | 4f 73 74 6f 70 28 29 3b |}.X.X..T|Ostop();|
|00003c80| 0a 58 09 09 62 72 65 61 | 6b 3b 0a 58 09 7d 0a 58 |.X..brea|k;.X.}.X|
|00003c90| 09 72 65 74 75 72 6e 20 | 21 46 41 4c 53 45 3b 0a |.return |!FALSE;.|
|00003ca0| 58 7d 0a 58 0a 58 63 6f | 6d 70 6c 65 74 65 28 70 |X}.X.Xco|mplete(p|
|00003cb0| 6f 73 73 69 62 6c 65 2c | 20 70 72 6f 6d 70 74 2c |ossible,| prompt,|
|00003cc0| 20 66 6c 61 67 73 29 0a | 58 72 65 67 69 73 74 65 | flags).|Xregiste|
|00003cd0| 72 20 63 68 61 72 09 2a | 70 6f 73 73 69 62 6c 65 |r char.*|possible|
|00003ce0| 5b 5d 3b 0a 58 63 68 61 | 72 09 2a 70 72 6f 6d 70 |[];.Xcha|r.*promp|
|00003cf0| 74 3b 0a 58 7b 0a 58 09 | 50 6f 73 73 69 62 6c 65 |t;.X{.X.|Possible|
|00003d00| 20 3d 20 70 6f 73 73 69 | 62 6c 65 3b 0a 58 09 63 | = possi|ble;.X.c|
|00003d10| 6f 6d 70 5f 66 6c 61 67 | 73 20 3d 20 66 6c 61 67 |omp_flag|s = flag|
|00003d20| 73 3b 0a 58 09 28 76 6f | 69 64 29 20 64 6f 5f 61 |s;.X.(vo|id) do_a|
|00003d30| 73 6b 28 22 5c 72 5c 6e | 20 5c 74 3f 22 2c 20 61 |sk("\r\n| \t?", a|
|00003d40| 75 78 5f 63 6f 6d 70 6c | 65 74 65 2c 20 4e 75 6c |ux_compl|ete, Nul|
|00003d50| 6c 53 74 72 2c 20 70 72 | 6f 6d 70 74 29 3b 0a 58 |lStr, pr|ompt);.X|
|00003d60| 09 72 65 74 75 72 6e 20 | 63 6f 6d 70 5f 76 61 6c |.return |comp_val|
|00003d70| 75 65 3b 0a 58 7d 0a 58 | 0a 58 6d 61 74 63 68 28 |ue;.X}.X|.Xmatch(|
|00003d80| 63 68 6f 69 63 65 73 2c | 20 77 68 61 74 29 0a 58 |choices,| what).X|
|00003d90| 72 65 67 69 73 74 65 72 | 20 63 68 61 72 09 2a 2a |register| char.**|
|00003da0| 63 68 6f 69 63 65 73 2c | 0a 58 09 09 2a 77 68 61 |choices,|.X..*wha|
|00003db0| 74 3b 0a 58 7b 0a 58 09 | 72 65 67 69 73 74 65 72 |t;.X{.X.|register|
|00003dc0| 20 69 6e 74 09 6c 65 6e | 3b 0a 58 09 69 6e 74 09 | int.len|;.X.int.|
|00003dd0| 69 2c 0a 58 09 09 66 6f | 75 6e 64 20 3d 20 30 2c |i,.X..fo|und = 0,|
|00003de0| 0a 58 09 09 73 61 76 65 | 2c 0a 58 09 09 65 78 61 |.X..save|,.X..exa|
|00003df0| 63 74 6d 61 74 63 68 20 | 3d 20 2d 31 3b 0a 58 0a |ctmatch |= -1;.X.|
|00003e00| 58 09 6c 65 6e 20 3d 20 | 73 74 72 6c 65 6e 28 77 |X.len = |strlen(w|
|00003e10| 68 61 74 29 3b 0a 58 09 | 69 66 20 28 6c 65 6e 20 |hat);.X.|if (len |
|00003e20| 3d 3d 20 30 29 0a 58 09 | 09 72 65 74 75 72 6e 20 |== 0).X.|.return |
|00003e30| 4e 55 4c 4c 53 54 52 49 | 4e 47 3b 0a 58 09 66 6f |NULLSTRI|NG;.X.fo|
|00003e40| 72 20 28 69 20 3d 20 30 | 3b 20 63 68 6f 69 63 65 |r (i = 0|; choice|
|00003e50| 73 5b 69 5d 3b 20 69 2b | 2b 29 20 7b 0a 58 09 09 |s[i]; i+|+) {.X..|
|00003e60| 69 66 20 28 73 74 72 6e | 63 6d 70 28 77 68 61 74 |if (strn|cmp(what|
|00003e70| 2c 20 63 68 6f 69 63 65 | 73 5b 69 5d 2c 20 6c 65 |, choice|s[i], le|
|00003e80| 6e 29 20 3d 3d 20 30 29 | 20 7b 0a 58 09 09 09 69 |n) == 0)| {.X...i|
|00003e90| 66 20 28 73 74 72 63 6d | 70 28 77 68 61 74 2c 20 |f (strcm|p(what, |
|00003ea0| 63 68 6f 69 63 65 73 5b | 69 5d 29 20 3d 3d 20 30 |choices[|i]) == 0|
|00003eb0| 29 0a 58 09 09 09 09 65 | 78 61 63 74 6d 61 74 63 |).X....e|xactmatc|
|00003ec0| 68 20 3d 20 69 3b 0a 58 | 09 09 09 73 61 76 65 20 |h = i;.X|...save |
|00003ed0| 3d 20 69 3b 0a 58 09 09 | 09 66 6f 75 6e 64 2b 2b |= i;.X..|.found++|
|00003ee0| 3b 09 2f 2a 20 46 6f 75 | 6e 64 20 6f 6e 65 2e 20 |;./* Fou|nd one. |
|00003ef0| 2a 2f 0a 58 09 09 7d 0a | 58 09 7d 0a 58 0a 58 09 |*/.X..}.|X.}.X.X.|
|00003f00| 69 66 20 28 66 6f 75 6e | 64 20 3d 3d 20 30 29 0a |if (foun|d == 0).|
|00003f10| 58 09 09 73 61 76 65 20 | 3d 20 4f 52 49 47 49 4e |X..save |= ORIGIN|
|00003f20| 41 4c 3b 0a 58 09 65 6c | 73 65 20 69 66 20 28 66 |AL;.X.el|se if (f|
|00003f30| 6f 75 6e 64 20 3e 20 31 | 29 20 7b 0a 58 09 09 69 |ound > 1|) {.X..i|
|00003f40| 66 20 28 65 78 61 63 74 | 6d 61 74 63 68 20 21 3d |f (exact|match !=|
|00003f50| 20 2d 31 29 0a 58 09 09 | 09 73 61 76 65 20 3d 20 | -1).X..|.save = |
|00003f60| 65 78 61 63 74 6d 61 74 | 63 68 3b 0a 58 09 09 65 |exactmat|ch;.X..e|
|00003f70| 6c 73 65 0a 58 09 09 09 | 73 61 76 65 20 3d 20 41 |lse.X...|save = A|
|00003f80| 4d 42 49 47 55 4f 55 53 | 3b 0a 58 09 7d 0a 58 0a |MBIGUOUS|;.X.}.X.|
|00003f90| 58 09 72 65 74 75 72 6e | 20 73 61 76 65 3b 0a 58 |X.return| save;.X|
|00003fa0| 7d 0a 58 0a 58 53 6f 75 | 72 63 65 28 29 0a 58 7b |}.X.XSou|rce().X{|
|00003fb0| 0a 58 09 63 68 61 72 09 | 2a 63 6f 6d 2c 0a 58 09 |.X.char.|*com,.X.|
|00003fc0| 09 62 75 66 5b 46 49 4c | 45 53 49 5a 45 5d 3b 0a |.buf[FIL|ESIZE];.|
|00003fd0| 58 0a 58 09 73 70 72 69 | 6e 74 66 28 62 75 66 2c |X.X.spri|ntf(buf,|
|00003fe0| 20 22 25 73 2f 2e 6a 6f | 76 65 72 63 22 2c 20 67 | "%s/.jo|verc", g|
|00003ff0| 65 74 65 6e 76 28 22 48 | 4f 4d 45 22 29 29 3b 0a |etenv("H|OME"));.|
|00004000| 58 09 63 6f 6d 20 3d 20 | 61 73 6b 5f 66 69 6c 65 |X.com = |ask_file|
|00004010| 28 28 63 68 61 72 20 2a | 29 20 30 2c 20 62 75 66 |((char *|) 0, buf|
|00004020| 2c 20 62 75 66 29 3b 0a | 58 09 69 66 20 28 6a 6f |, buf);.|X.if (jo|
|00004030| 76 65 72 63 28 62 75 66 | 29 20 3d 3d 20 4e 49 4c |verc(buf|) == NIL|
|00004040| 29 0a 58 09 09 63 6f 6d | 70 6c 61 69 6e 28 49 4f |).X..com|plain(IO|
|00004050| 65 72 72 28 22 72 65 61 | 64 22 2c 20 63 6f 6d 29 |err("rea|d", com)|
|00004060| 29 3b 0a 58 7d 0a 58 0a | 58 42 75 66 50 6f 73 28 |);.X}.X.|XBufPos(|
|00004070| 29 0a 58 7b 0a 58 09 72 | 65 67 69 73 74 65 72 20 |).X{.X.r|egister |
|00004080| 4c 69 6e 65 09 2a 6c 70 | 20 3d 20 63 75 72 62 75 |Line.*lp| = curbu|
|00004090| 66 2d 3e 62 5f 66 69 72 | 73 74 3b 0a 58 09 72 65 |f->b_fir|st;.X.re|
|000040a0| 67 69 73 74 65 72 20 69 | 6e 74 09 69 2c 0a 58 09 |gister i|nt.i,.X.|
|000040b0| 09 09 64 6f 74 6c 69 6e | 65 3b 0a 58 09 6c 6f 6e |..dotlin|e;.X.lon|
|000040c0| 67 09 64 6f 74 63 68 61 | 72 2c 0a 58 09 09 6e 63 |g.dotcha|r,.X..nc|
|000040d0| 68 61 72 73 3b 0a 58 0a | 58 09 66 6f 72 20 28 69 |hars;.X.|X.for (i|
|000040e0| 20 3d 20 6e 63 68 61 72 | 73 20 3d 20 30 3b 20 6c | = nchar|s = 0; l|
|000040f0| 70 20 21 3d 20 30 3b 20 | 69 2b 2b 2c 20 6c 70 20 |p != 0; |i++, lp |
|00004100| 3d 20 6c 70 2d 3e 6c 5f | 6e 65 78 74 29 20 7b 0a |= lp->l_|next) {.|
|00004110| 58 09 09 69 66 20 28 6c | 70 20 3d 3d 20 63 75 72 |X..if (l|p == cur|
|00004120| 6c 69 6e 65 29 20 7b 0a | 58 09 09 09 64 6f 74 63 |line) {.|X...dotc|
|00004130| 68 61 72 20 3d 20 6e 63 | 68 61 72 73 20 2b 20 63 |har = nc|hars + c|
|00004140| 75 72 63 68 61 72 3b 0a | 58 09 09 09 64 6f 74 6c |urchar;.|X...dotl|
|00004150| 69 6e 65 20 3d 20 69 20 | 2b 20 31 3b 0a 58 09 09 |ine = i |+ 1;.X..|
|00004160| 7d 0a 58 09 09 6e 63 68 | 61 72 73 20 2b 3d 20 6c |}.X..nch|ars += l|
|00004170| 65 6e 67 74 68 28 6c 70 | 29 20 2b 20 28 6c 70 2d |ength(lp|) + (lp-|
|00004180| 3e 6c 5f 6e 65 78 74 20 | 21 3d 20 30 29 3b 20 2f |>l_next |!= 0); /|
|00004190| 2a 20 69 6e 63 6c 75 64 | 65 20 74 68 65 20 4e 4c |* includ|e the NL|
|000041a0| 20 2a 2f 0a 58 09 7d 0a | 58 0a 58 09 73 5f 6d 65 | */.X.}.|X.X.s_me|
|000041b0| 73 73 28 22 5b 5c 22 25 | 73 5c 22 20 6c 69 6e 65 |ss("[\"%|s\" line|
|000041c0| 20 25 64 20 6f 66 20 25 | 64 2c 20 63 68 61 72 20 | %d of %|d, char |
|000041d0| 25 44 20 6f 66 20 25 44 | 20 28 25 64 25 25 29 5d |%D of %D| (%d%%)]|
|000041e0| 22 2c 0a 58 09 09 09 66 | 69 6c 65 6e 61 6d 65 28 |",.X...f|ilename(|
|000041f0| 63 75 72 62 75 66 29 2c | 0a 58 09 09 09 64 6f 74 |curbuf),|.X...dot|
|00004200| 6c 69 6e 65 2c 0a 58 09 | 09 09 69 2c 0a 58 09 09 |line,.X.|..i,.X..|
|00004210| 09 64 6f 74 63 68 61 72 | 2c 0a 58 09 09 09 6e 63 |.dotchar|,.X...nc|
|00004220| 68 61 72 73 2c 0a 58 09 | 09 09 28 69 6e 74 29 20 |hars,.X.|..(int) |
|00004230| 28 28 28 6c 6f 6e 67 29 | 20 64 6f 74 63 68 61 72 |(((long)| dotchar|
|00004240| 20 2a 20 31 30 30 29 20 | 2f 20 6e 63 68 61 72 73 | * 100) |/ nchars|
|00004250| 29 29 3b 0a 58 7d 0a 58 | 0a 58 23 64 65 66 69 6e |));.X}.X|.X#defin|
|00004260| 65 20 49 46 5f 55 4e 42 | 4f 55 4e 44 09 2d 31 0a |e IF_UNB|OUND.-1.|
|00004270| 58 23 64 65 66 69 6e 65 | 20 49 46 5f 54 52 55 45 |X#define| IF_TRUE|
|00004280| 09 09 31 0a 58 23 64 65 | 66 69 6e 65 20 49 46 5f |..1.X#de|fine IF_|
|00004290| 46 41 4c 53 45 09 21 49 | 46 5f 54 52 55 45 0a 58 |FALSE.!I|F_TRUE.X|
|000042a0| 0a 58 64 6f 5f 69 66 28 | 63 6d 64 29 0a 58 63 68 |.Xdo_if(|cmd).Xch|
|000042b0| 61 72 09 2a 63 6d 64 3b | 0a 58 7b 0a 58 09 69 6e |ar.*cmd;|.X{.X.in|
|000042c0| 74 09 70 69 64 2c 0a 58 | 09 09 73 74 61 74 75 73 |t.pid,.X|..status|
|000042d0| 3b 0a 58 0a 58 09 73 77 | 69 74 63 68 20 28 70 69 |;.X.X.sw|itch (pi|
|000042e0| 64 20 3d 20 66 6f 72 6b | 28 29 29 20 7b 0a 58 09 |d = fork|()) {.X.|
|000042f0| 63 61 73 65 20 2d 31 3a | 0a 58 09 09 63 6f 6d 70 |case -1:|.X..comp|
|00004300| 6c 61 69 6e 28 22 5b 46 | 6f 72 6b 20 66 61 69 6c |lain("[F|ork fail|
|00004310| 65 64 3a 20 69 66 5d 22 | 29 3b 0a 58 0a 58 09 63 |ed: if]"|);.X.X.c|
|00004320| 61 73 65 20 30 3a 0a 58 | 09 20 20 20 20 7b 0a 58 |ase 0:.X|. {.X|
|00004330| 09 09 63 68 61 72 09 2a | 61 72 67 73 5b 31 32 5d |..char.*|args[12]|
|00004340| 2c 0a 58 09 09 09 2a 63 | 70 20 3d 20 63 6d 64 2c |,.X...*c|p = cmd,|
|00004350| 0a 58 09 09 09 2a 2a 61 | 70 20 3d 20 61 72 67 73 |.X...**a|p = args|
|00004360| 3b 0a 58 0a 58 09 20 20 | 20 20 09 2a 61 70 2b 2b |;.X.X. | .*ap++|
|00004370| 20 3d 20 63 6d 64 3b 0a | 58 09 20 20 20 20 09 66 | = cmd;.|X. .f|
|00004380| 6f 72 20 28 3b 3b 29 20 | 7b 0a 58 09 09 09 69 66 |or (;;) |{.X...if|
|00004390| 20 28 28 63 70 20 3d 20 | 69 6e 64 65 78 28 63 70 | ((cp = |index(cp|
|000043a0| 2c 20 27 20 27 29 29 20 | 3d 3d 20 30 29 0a 58 09 |, ' ')) |== 0).X.|
|000043b0| 09 09 09 62 72 65 61 6b | 3b 0a 58 09 09 09 2a 63 |...break|;.X...*c|
|000043c0| 70 2b 2b 20 3d 20 27 5c | 30 27 3b 0a 58 09 09 09 |p++ = '\|0';.X...|
|000043d0| 2a 61 70 2b 2b 20 3d 20 | 63 70 3b 0a 58 09 09 7d |*ap++ = |cp;.X..}|
|000043e0| 0a 58 09 09 2a 61 70 20 | 3d 20 30 3b 0a 58 0a 58 |.X..*ap |= 0;.X.X|
|000043f0| 09 09 63 6c 6f 73 65 28 | 30 29 3b 09 2f 2a 09 77 |..close(|0);./*.w|
|00004400| 65 20 77 61 6e 74 20 72 | 65 61 64 73 20 74 6f 20 |e want r|eads to |
|00004410| 66 61 69 6c 20 2a 2f 0a | 58 09 09 2f 2a 20 63 6c |fail */.|X../* cl|
|00004420| 6f 73 65 28 31 29 3b 09 | 20 62 75 74 20 6e 6f 74 |ose(1);.| but not|
|00004430| 20 77 72 69 74 65 73 20 | 6f 72 20 69 6f 63 74 6c | writes |or ioctl|
|00004440| 27 73 0a 58 09 09 63 6c | 6f 73 65 28 32 29 3b 20 |'s.X..cl|ose(2); |
|00004450| 20 20 20 2a 2f 0a 58 0a | 58 09 20 20 20 20 09 28 | */.X.|X. .(|
|00004460| 76 6f 69 64 29 20 65 78 | 65 63 76 70 28 61 72 67 |void) ex|ecvp(arg|
|00004470| 73 5b 30 5d 2c 20 61 72 | 67 73 29 3b 0a 58 09 09 |s[0], ar|gs);.X..|
|00004480| 5f 65 78 69 74 28 2d 31 | 30 29 3b 09 2f 2a 20 73 |_exit(-1|0);./* s|
|00004490| 69 67 6e 61 6c 73 20 65 | 78 65 63 20 65 72 72 6f |ignals e|xec erro|
|000044a0| 72 20 28 73 65 65 20 62 | 65 6c 6f 77 29 20 2a 2f |r (see b|elow) */|
|000044b0| 0a 58 09 20 20 20 20 7d | 0a 58 09 7d 0a 58 23 69 |.X. }|.X.}.X#i|
|000044c0| 66 64 65 66 20 49 50 52 | 4f 43 53 0a 58 09 73 69 |fdef IPR|OCS.X.si|
|000044d0| 67 68 6f 6c 64 28 53 49 | 47 43 48 4c 44 29 3b 0a |ghold(SI|GCHLD);.|
|000044e0| 58 23 65 6e 64 69 66 0a | 58 09 64 6f 77 61 69 74 |X#endif.|X.dowait|
|000044f0| 28 70 69 64 2c 20 26 73 | 74 61 74 75 73 29 3b 0a |(pid, &s|tatus);.|
|00004500| 58 23 69 66 64 65 66 20 | 49 50 52 4f 43 53 0a 58 |X#ifdef |IPROCS.X|
|00004510| 09 73 69 67 72 65 6c 73 | 65 28 53 49 47 43 48 4c |.sigrels|e(SIGCHL|
|00004520| 44 29 3b 0a 58 23 65 6e | 64 69 66 0a 58 09 69 66 |D);.X#en|dif.X.if|
|00004530| 20 28 73 74 61 74 75 73 | 20 3d 3d 20 2d 31 30 29 | (status| == -10)|
|00004540| 0a 58 09 09 63 6f 6d 70 | 6c 61 69 6e 28 22 5b 45 |.X..comp|lain("[E|
|00004550| 78 65 63 20 66 61 69 6c | 65 64 5d 22 29 3b 0a 58 |xec fail|ed]");.X|
|00004560| 09 69 66 20 28 73 74 61 | 74 75 73 20 3c 20 30 29 |.if (sta|tus < 0)|
|00004570| 0a 58 09 09 63 6f 6d 70 | 6c 61 69 6e 28 22 5b 45 |.X..comp|lain("[E|
|00004580| 78 69 74 20 25 64 5d 22 | 2c 20 73 74 61 74 75 73 |xit %d]"|, status|
|00004590| 29 3b 0a 58 09 72 65 74 | 75 72 6e 20 28 73 74 61 |);.X.ret|urn (sta|
|000045a0| 74 75 73 20 3d 3d 20 30 | 29 3b 09 2f 2a 20 30 20 |tus == 0|);./* 0 |
|000045b0| 6d 65 61 6e 73 20 73 75 | 63 63 65 73 73 66 75 6c |means su|ccessful|
|000045c0| 20 2a 2f 0a 58 7d 0a 58 | 0a 58 6a 6f 76 65 72 63 | */.X}.X|.Xjoverc|
|000045d0| 28 66 69 6c 65 29 0a 58 | 63 68 61 72 09 2a 66 69 |(file).X|char.*fi|
|000045e0| 6c 65 3b 0a 58 7b 0a 58 | 09 63 68 61 72 09 62 75 |le;.X{.X|.char.bu|
|000045f0| 66 5b 4c 42 53 49 5a 45 | 5d 2c 0a 58 09 09 6c 62 |f[LBSIZE|],.X..lb|
|00004600| 75 66 5b 31 32 38 5d 3b | 0a 58 09 69 6e 74 09 6c |uf[128];|.X.int.l|
|00004610| 6e 75 6d 20 3d 20 30 2c | 0a 58 09 09 65 6f 66 20 |num = 0,|.X..eof |
|00004620| 3d 20 46 41 4c 53 45 3b | 0a 58 09 6a 6d 70 5f 62 |= FALSE;|.X.jmp_b|
|00004630| 75 66 09 73 61 76 65 6a | 6d 70 3b 0a 58 09 69 6e |uf.savej|mp;.X.in|
|00004640| 74 09 49 66 53 74 61 74 | 75 73 20 3d 20 49 46 5f |t.IfStat|us = IF_|
|00004650| 55 4e 42 4f 55 4e 44 3b | 0a 58 09 46 69 6c 65 09 |UNBOUND;|.X.File.|
|00004660| 2a 66 70 3b 0a 58 0a 58 | 09 66 70 20 3d 20 6f 70 |*fp;.X.X|.fp = op|
|00004670| 65 6e 5f 66 69 6c 65 28 | 66 69 6c 65 2c 20 62 75 |en_file(|file, bu|
|00004680| 66 2c 20 46 5f 52 45 41 | 44 2c 20 21 43 4f 4d 50 |f, F_REA|D, !COMP|
|00004690| 4c 41 49 4e 2c 20 51 55 | 49 45 54 29 3b 0a 58 09 |LAIN, QU|IET);.X.|
|000046a0| 69 66 20 28 66 70 20 3d | 3d 20 4e 49 4c 29 0a 58 |if (fp =|= NIL).X|
|000046b0| 09 09 72 65 74 75 72 6e | 20 4e 49 4c 3b 0a 58 0a |..return| NIL;.X.|
|000046c0| 58 09 2f 2a 20 43 61 74 | 63 68 20 61 6e 79 20 65 |X./* Cat|ch any e|
|000046d0| 72 72 6f 72 73 2c 20 68 | 65 72 65 2c 20 61 6e 64 |rrors, h|ere, and|
|000046e0| 20 64 6f 20 74 68 65 20 | 72 69 67 68 74 20 74 68 | do the |right th|
|000046f0| 69 6e 67 20 77 69 74 68 | 20 74 68 65 6d 2c 0a 58 |ing with| them,.X|
|00004700| 09 20 20 20 61 6e 64 20 | 74 68 65 6e 20 72 65 73 |. and |then res|
|00004710| 74 6f 72 65 20 74 68 65 | 20 65 72 72 6f 72 20 68 |tore the| error h|
|00004720| 61 6e 64 6c 65 20 74 6f | 20 77 68 6f 65 76 65 72 |andle to| whoever|
|00004730| 20 64 69 64 20 61 20 73 | 65 74 6a 6d 70 0a 58 09 | did a s|etjmp.X.|
|00004740| 20 20 20 6c 61 73 74 2e | 20 2a 2f 0a 58 0a 58 09 | last.| */.X.X.|
|00004750| 70 75 73 68 5f 65 6e 76 | 28 73 61 76 65 6a 6d 70 |push_env|(savejmp|
|00004760| 29 3b 0a 58 09 69 66 20 | 28 73 65 74 6a 6d 70 28 |);.X.if |(setjmp(|
|00004770| 6d 61 69 6e 6a 6d 70 29 | 29 20 7b 0a 58 09 09 42 |mainjmp)|) {.X..B|
|00004780| 75 66 66 65 72 09 2a 73 | 61 76 65 62 75 66 20 3d |uffer.*s|avebuf =|
|00004790| 20 63 75 72 62 75 66 3b | 0a 58 0a 58 09 09 53 65 | curbuf;|.X.X..Se|
|000047a0| 74 42 75 66 28 64 6f 5f | 73 65 6c 65 63 74 28 28 |tBuf(do_|select((|
|000047b0| 57 69 6e 64 6f 77 20 2a | 29 20 30 2c 20 22 52 43 |Window *|) 0, "RC|
|000047c0| 20 65 72 72 6f 72 73 22 | 29 29 3b 0a 58 09 09 69 | errors"|));.X..i|
|000047d0| 6e 73 5f 73 74 72 28 73 | 70 72 69 6e 74 28 22 25 |ns_str(s|print("%|
|000047e0| 73 3a 25 64 3a 25 73 5c | 74 25 73 5c 6e 22 2c 20 |s:%d:%s\|t%s\n", |
|000047f0| 70 72 5f 6e 61 6d 65 28 | 66 69 6c 65 29 2c 20 6c |pr_name(|file), l|
|00004800| 6e 75 6d 2c 20 6c 62 75 | 66 2c 20 6d 65 73 67 62 |num, lbu|f, mesgb|
|00004810| 75 66 29 2c 20 4e 4f 29 | 3b 0a 58 09 09 75 6e 6d |uf), NO)|;.X..unm|
|00004820| 6f 64 69 66 79 28 29 3b | 0a 58 09 09 53 65 74 42 |odify();|.X..SetB|
|00004830| 75 66 28 73 61 76 65 62 | 75 66 29 3b 0a 58 09 09 |uf(saveb|uf);.X..|
|00004840| 41 73 6b 69 6e 67 20 3d | 20 30 3b 0a 58 09 7d 0a |Asking =| 0;.X.}.|
|00004850| 58 09 49 6e 4a 6f 76 65 | 72 63 20 3d 20 31 3b 0a |X.InJove|rc = 1;.|
|00004860| 58 09 69 66 20 28 21 65 | 6f 66 29 20 64 6f 20 7b |X.if (!e|of) do {|
|00004870| 0a 58 09 09 65 6f 66 20 | 3d 20 28 66 5f 67 65 74 |.X..eof |= (f_get|
|00004880| 73 28 66 70 2c 20 6c 62 | 75 66 2c 20 73 69 7a 65 |s(fp, lb|uf, size|
|00004890| 6f 66 20 6c 62 75 66 29 | 20 3d 3d 20 45 4f 46 29 |of lbuf)| == EOF)|
|000048a0| 3b 0a 58 09 09 6c 6e 75 | 6d 2b 2b 3b 0a 58 09 09 |;.X..lnu|m++;.X..|
|000048b0| 69 66 20 28 63 61 73 65 | 6e 63 6d 70 28 6c 62 75 |if (case|ncmp(lbu|
|000048c0| 66 2c 20 22 69 66 22 2c | 20 32 29 20 3d 3d 20 30 |f, "if",| 2) == 0|
|000048d0| 29 20 7b 0a 58 09 09 09 | 63 68 61 72 09 63 6d 64 |) {.X...|char.cmd|
|000048e0| 5b 31 32 38 5d 3b 0a 58 | 0a 58 09 09 09 69 66 20 |[128];.X|.X...if |
|000048f0| 28 49 66 53 74 61 74 75 | 73 20 21 3d 20 49 46 5f |(IfStatu|s != IF_|
|00004900| 55 4e 42 4f 55 4e 44 29 | 0a 58 09 09 09 09 63 6f |UNBOUND)|.X....co|
|00004910| 6d 70 6c 61 69 6e 28 22 | 5b 43 61 6e 6e 6f 74 20 |mplain("|[Cannot |
|00004920| 68 61 76 65 20 6e 65 73 | 74 65 64 20 69 66 27 73 |have nes|ted if's|
|00004930| 5d 22 29 3b 0a 58 09 09 | 09 69 66 20 28 4c 6f 6f |]");.X..|.if (Loo|
|00004940| 6b 69 6e 67 41 74 28 22 | 69 66 5b 20 5c 74 5d 2a |kingAt("|if[ \t]*|
|00004950| 5c 5c 28 2e 2a 5c 5c 29 | 24 22 2c 20 6c 62 75 66 |\\(.*\\)|$", lbuf|
|00004960| 2c 20 30 29 20 3d 3d 20 | 30 29 0a 58 09 09 09 09 |, 0) == |0).X....|
|00004970| 63 6f 6d 70 6c 61 69 6e | 28 22 5b 49 66 20 73 79 |complain|("[If sy|
|00004980| 6e 74 61 78 20 65 72 72 | 6f 72 5d 22 29 3b 0a 58 |ntax err|or]");.X|
|00004990| 09 09 09 70 75 74 6d 61 | 74 63 68 28 31 2c 20 63 |...putma|tch(1, c|
|000049a0| 6d 64 2c 20 73 69 7a 65 | 6f 66 20 63 6d 64 29 3b |md, size|of cmd);|
|000049b0| 0a 58 09 09 09 49 66 53 | 74 61 74 75 73 20 3d 20 |.X...IfS|tatus = |
|000049c0| 64 6f 5f 69 66 28 63 6d | 64 29 20 3f 20 49 46 5f |do_if(cm|d) ? IF_|
|000049d0| 54 52 55 45 20 3a 20 49 | 46 5f 46 41 4c 53 45 3b |TRUE : I|F_FALSE;|
|000049e0| 0a 58 09 09 09 63 6f 6e | 74 69 6e 75 65 3b 0a 58 |.X...con|tinue;.X|
|000049f0| 09 09 7d 20 65 6c 73 65 | 20 69 66 20 28 63 61 73 |..} else| if (cas|
|00004a00| 65 6e 63 6d 70 28 6c 62 | 75 66 2c 20 22 65 6c 73 |encmp(lb|uf, "els|
|00004a10| 65 22 2c 20 34 29 20 3d | 3d 20 30 29 20 7b 0a 58 |e", 4) =|= 0) {.X|
|00004a20| 09 09 09 69 66 20 28 49 | 66 53 74 61 74 75 73 20 |...if (I|fStatus |
|00004a30| 3d 3d 20 49 46 5f 55 4e | 42 4f 55 4e 44 29 0a 58 |== IF_UN|BOUND).X|
|00004a40| 09 09 09 09 63 6f 6d 70 | 6c 61 69 6e 28 22 5b 55 |....comp|lain("[U|
|00004a50| 6e 65 78 70 65 63 74 65 | 64 20 60 65 6c 73 65 27 |nexpecte|d `else'|
|00004a60| 5d 22 29 3b 0a 58 09 09 | 09 49 66 53 74 61 74 75 |]");.X..|.IfStatu|
|00004a70| 73 20 3d 20 21 49 66 53 | 74 61 74 75 73 3b 0a 58 |s = !IfS|tatus;.X|
|00004a80| 09 09 09 63 6f 6e 74 69 | 6e 75 65 3b 0a 58 09 09 |...conti|nue;.X..|
|00004a90| 7d 20 65 6c 73 65 20 69 | 66 20 28 63 61 73 65 6e |} else i|f (casen|
|00004aa0| 63 6d 70 28 6c 62 75 66 | 2c 20 22 65 6e 64 69 66 |cmp(lbuf|, "endif|
|00004ab0| 22 2c 20 35 29 20 3d 3d | 20 30 29 20 7b 0a 58 09 |", 5) ==| 0) {.X.|
|00004ac0| 09 09 69 66 20 28 49 66 | 53 74 61 74 75 73 20 3d |..if (If|Status =|
|00004ad0| 3d 20 49 46 5f 55 4e 42 | 4f 55 4e 44 29 0a 58 09 |= IF_UNB|OUND).X.|
|00004ae0| 09 09 09 63 6f 6d 70 6c | 61 69 6e 28 22 5b 55 6e |...compl|ain("[Un|
|00004af0| 65 78 70 65 63 74 65 64 | 20 60 65 6e 64 69 66 27 |expected| `endif'|
|00004b00| 5d 22 29 3b 0a 58 09 09 | 09 49 66 53 74 61 74 75 |]");.X..|.IfStatu|
|00004b10| 73 20 3d 20 49 46 5f 55 | 4e 42 4f 55 4e 44 3b 0a |s = IF_U|NBOUND;.|
|00004b20| 58 09 09 09 63 6f 6e 74 | 69 6e 75 65 3b 0a 58 09 |X...cont|inue;.X.|
|00004b30| 09 7d 0a 58 09 09 69 66 | 20 28 49 66 53 74 61 74 |.}.X..if| (IfStat|
|00004b40| 75 73 20 3d 3d 20 49 46 | 5f 46 41 4c 53 45 29 0a |us == IF|_FALSE).|
|00004b50| 58 09 09 09 63 6f 6e 74 | 69 6e 75 65 3b 0a 58 09 |X...cont|inue;.X.|
|00004b60| 09 28 76 6f 69 64 29 20 | 73 74 72 63 61 74 28 6c |.(void) |strcat(l|
|00004b70| 62 75 66 2c 20 22 5c 6e | 22 29 3b 0a 58 09 09 49 |buf, "\n|");.X..I|
|00004b80| 6e 70 75 74 70 20 3d 20 | 6c 62 75 66 3b 0a 58 09 |nputp = |lbuf;.X.|
|00004b90| 09 77 68 69 6c 65 20 28 | 2a 49 6e 70 75 74 70 20 |.while (|*Inputp |
|00004ba0| 3d 3d 20 27 20 27 20 7c | 7c 20 2a 49 6e 70 75 74 |== ' ' ||| *Input|
|00004bb0| 70 20 3d 3d 20 27 5c 74 | 27 29 0a 58 09 09 09 49 |p == '\t|').X...I|
|00004bc0| 6e 70 75 74 70 2b 2b 3b | 09 2f 2a 20 73 6b 69 70 |nputp++;|./* skip|
|00004bd0| 20 77 68 69 74 65 20 73 | 70 61 63 65 20 2a 2f 0a | white s|pace */.|
|00004be0| 58 09 09 45 78 74 65 6e | 64 28 29 3b 0a 58 09 7d |X..Exten|d();.X.}|
|00004bf0| 20 77 68 69 6c 65 20 28 | 21 65 6f 66 29 3b 0a 58 | while (|!eof);.X|
|00004c00| 0a 58 09 66 5f 63 6c 6f | 73 65 28 66 70 29 3b 0a |.X.f_clo|se(fp);.|
|00004c10| 58 09 70 6f 70 5f 65 6e | 76 28 73 61 76 65 6a 6d |X.pop_en|v(savejm|
|00004c20| 70 29 3b 0a 58 09 49 6e | 70 75 74 70 20 3d 20 30 |p);.X.In|putp = 0|
|00004c30| 3b 0a 58 09 41 73 6b 69 | 6e 67 20 3d 20 30 3b 0a |;.X.Aski|ng = 0;.|
|00004c40| 58 09 49 6e 4a 6f 76 65 | 72 63 20 3d 20 30 3b 0a |X.InJove|rc = 0;.|
|00004c50| 58 09 69 66 20 28 49 66 | 53 74 61 74 75 73 20 21 |X.if (If|Status !|
|00004c60| 3d 20 49 46 5f 55 4e 42 | 4f 55 4e 44 29 0a 58 09 |= IF_UNB|OUND).X.|
|00004c70| 09 63 6f 6d 70 6c 61 69 | 6e 28 22 5b 4d 69 73 73 |.complai|n("[Miss|
|00004c80| 69 6e 67 20 65 6e 64 69 | 66 5d 22 29 3b 0a 58 09 |ing endi|f]");.X.|
|00004c90| 72 65 74 75 72 6e 20 21 | 4e 49 4c 3b 0a 58 7d 0a |return !|NIL;.X}.|
|00004ca0| 40 2f 2f 45 2a 4f 2a 46 | 20 65 78 74 65 6e 64 2e |@//E*O*F| extend.|
|00004cb0| 63 2f 2f 0a 69 66 20 74 | 65 73 74 20 31 37 39 36 |c//.if t|est 1796|
|00004cc0| 39 20 2d 6e 65 20 22 60 | 77 63 20 2d 63 20 3c 27 |9 -ne "`|wc -c <'|
|00004cd0| 65 78 74 65 6e 64 2e 63 | 27 60 22 3b 20 74 68 65 |extend.c|'`"; the|
|00004ce0| 6e 0a 20 20 20 20 65 63 | 68 6f 20 73 68 61 72 3a |n. ec|ho shar:|
|00004cf0| 20 65 72 72 6f 72 20 74 | 72 61 6e 73 6d 69 74 74 | error t|ransmitt|
|00004d00| 69 6e 67 20 22 27 65 78 | 74 65 6e 64 2e 63 27 22 |ing "'ex|tend.c'"|
|00004d10| 20 27 28 73 68 6f 75 6c | 64 20 68 61 76 65 20 62 | '(shoul|d have b|
|00004d20| 65 65 6e 20 31 37 39 36 | 39 20 63 68 61 72 61 63 |een 1796|9 charac|
|00004d30| 74 65 72 73 29 27 0a 66 | 69 0a 66 69 20 23 20 65 |ters)'.f|i.fi # e|
|00004d40| 6e 64 20 6f 66 20 6f 76 | 65 72 77 72 69 74 69 6e |nd of ov|erwritin|
|00004d50| 67 20 63 68 65 63 6b 0a | 65 63 68 6f 20 73 68 61 |g check.|echo sha|
|00004d60| 72 3a 20 65 78 74 72 61 | 63 74 69 6e 67 20 22 27 |r: extra|cting "'|
|00004d70| 66 70 2e 63 27 22 20 27 | 28 35 31 35 31 20 63 68 |fp.c'" '|(5151 ch|
|00004d80| 61 72 61 63 74 65 72 73 | 29 27 0a 69 66 20 74 65 |aracters|)'.if te|
|00004d90| 73 74 20 2d 66 20 27 66 | 70 2e 63 27 20 3b 20 74 |st -f 'f|p.c' ; t|
|00004da0| 68 65 6e 20 0a 20 20 65 | 63 68 6f 20 73 68 61 72 |hen . e|cho shar|
|00004db0| 3a 20 77 69 6c 6c 20 6e | 6f 74 20 6f 76 65 72 2d |: will n|ot over-|
|00004dc0| 77 72 69 74 65 20 65 78 | 69 73 74 69 6e 67 20 66 |write ex|isting f|
|00004dd0| 69 6c 65 20 22 27 66 70 | 2e 63 27 22 0a 65 6c 73 |ile "'fp|.c'".els|
|00004de0| 65 0a 73 65 64 20 27 73 | 2f 5e 58 2f 2f 27 20 3e |e.sed 's|/^X//' >|
|00004df0| 66 70 2e 63 20 3c 3c 27 | 40 2f 2f 45 2a 4f 2a 46 |fp.c <<'|@//E*O*F|
|00004e00| 20 66 70 2e 63 2f 2f 27 | 0a 58 2f 2a 2a 2a 2a 2a | fp.c//'|.X/*****|
|00004e10| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004e20| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004e30| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004e40| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004e50| 2a 2a 2a 0a 58 20 2a 20 | 54 68 69 73 20 70 72 6f |***.X * |This pro|
|00004e60| 67 72 61 6d 20 69 73 20 | 43 6f 70 79 72 69 67 68 |gram is |Copyrigh|
|00004e70| 74 20 28 43 29 20 31 39 | 38 36 20 62 79 20 4a 6f |t (C) 19|86 by Jo|
|00004e80| 6e 61 74 68 61 6e 20 50 | 61 79 6e 65 2e 20 20 4a |nathan P|ayne. J|
|00004e90| 4f 56 45 20 69 73 20 20 | 20 20 20 20 20 2a 0a 58 |OVE is | *.X|
|00004ea0| 20 2a 20 70 72 6f 76 69 | 64 65 64 20 74 6f 20 79 | * provi|ded to y|
|00004eb0| 6f 75 20 77 69 74 68 6f | 75 74 20 63 68 61 72 67 |ou witho|ut charg|
|00004ec0| 65 2c 20 61 6e 64 20 77 | 69 74 68 20 6e 6f 20 77 |e, and w|ith no w|
|00004ed0| 61 72 72 61 6e 74 79 2e | 20 20 59 6f 75 20 6d 61 |arranty.| You ma|
|00004ee0| 79 20 67 69 76 65 20 20 | 2a 0a 58 20 2a 20 61 77 |y give |*.X * aw|
|00004ef0| 61 79 20 63 6f 70 69 65 | 73 20 6f 66 20 4a 4f 56 |ay copie|s of JOV|
|00004f00| 45 2c 20 69 6e 63 6c 75 | 64 69 6e 67 20 73 6f 75 |E, inclu|ding sou|
|00004f10| 72 63 65 73 2c 20 70 72 | 6f 76 69 64 65 64 20 74 |rces, pr|ovided t|
|00004f20| 68 61 74 20 74 68 69 73 | 20 6e 6f 74 69 63 65 20 |hat this| notice |
|00004f30| 69 73 20 2a 0a 58 20 2a | 20 69 6e 63 6c 75 64 65 |is *.X *| include|
|00004f40| 64 20 69 6e 20 61 6c 6c | 20 74 68 65 20 66 69 6c |d in all| the fil|
|00004f50| 65 73 2e 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |es. | |
|00004f60| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004f70| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 2a 0a | | *.|
|00004f80| 58 20 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |X ******|********|
|00004f90| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004fa0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004fb0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004fc0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2f 0a 58 0a 58 23 |********|**/.X.X#|
|00004fd0| 69 6e 63 6c 75 64 65 20 | 22 6a 6f 76 65 2e 68 22 |include |"jove.h"|
|00004fe0| 0a 58 23 69 6e 63 6c 75 | 64 65 20 22 69 6f 2e 68 |.X#inclu|de "io.h|
|00004ff0| 22 0a 58 23 69 6e 63 6c | 75 64 65 20 22 74 65 72 |".X#incl|ude "ter|
|00005000| 6d 63 61 70 2e 68 22 0a | 58 23 69 6e 63 6c 75 64 |mcap.h".|X#includ|
|00005010| 65 20 3c 73 79 73 2f 73 | 74 61 74 2e 68 3e 0a 58 |e <sys/s|tat.h>.X|
|00005020| 23 69 6e 63 6c 75 64 65 | 20 3c 73 79 73 2f 66 69 |#include| <sys/fi|
|00005030| 6c 65 2e 68 3e 0a 58 23 | 69 6e 63 6c 75 64 65 20 |le.h>.X#|include |
|00005040| 3c 65 72 72 6e 6f 2e 68 | 3e 0a 58 0a 58 23 64 65 |<errno.h|>.X.X#de|
|00005050| 66 69 6e 65 20 4d 41 58 | 46 49 4c 45 53 09 32 30 |fine MAX|FILES.20|
|00005060| 09 2f 2a 20 67 6f 6f 64 | 20 65 6e 6f 75 67 68 20 |./* good| enough |
|00005070| 66 6f 72 20 6d 79 20 70 | 75 72 70 6f 73 65 73 20 |for my p|urposes |
|00005080| 2a 2f 0a 58 0a 58 73 74 | 61 74 69 63 20 46 69 6c |*/.X.Xst|atic Fil|
|00005090| 65 09 5f 6f 70 65 6e 66 | 69 6c 65 73 5b 4d 41 58 |e._openf|iles[MAX|
|000050a0| 46 49 4c 45 53 5d 20 3d | 20 7b 30 7d 3b 0a 58 0a |FILES] =| {0};.X.|
|000050b0| 58 73 74 61 74 69 63 20 | 46 69 6c 65 20 2a 0a 58 |Xstatic |File *.X|
|000050c0| 66 5f 61 6c 6c 6f 63 28 | 6e 61 6d 65 2c 20 66 6c |f_alloc(|name, fl|
|000050d0| 61 67 73 2c 20 66 64 2c | 20 62 75 66 66 65 72 2c |ags, fd,| buffer,|
|000050e0| 20 62 75 66 5f 73 69 7a | 65 29 0a 58 63 68 61 72 | buf_siz|e).Xchar|
|000050f0| 09 2a 6e 61 6d 65 2c 0a | 58 09 2a 62 75 66 66 65 |.*name,.|X.*buffe|
|00005100| 72 3b 0a 58 7b 0a 58 09 | 72 65 67 69 73 74 65 72 |r;.X{.X.|register|
|00005110| 20 46 69 6c 65 09 2a 66 | 70 3b 0a 58 09 72 65 67 | File.*f|p;.X.reg|
|00005120| 69 73 74 65 72 20 69 6e | 74 09 69 3b 0a 58 0a 58 |ister in|t.i;.X.X|
|00005130| 09 66 6f 72 20 28 66 70 | 20 3d 20 5f 6f 70 65 6e |.for (fp| = _open|
|00005140| 66 69 6c 65 73 2c 20 69 | 20 3d 20 30 3b 20 69 20 |files, i| = 0; i |
|00005150| 3c 20 4d 41 58 46 49 4c | 45 53 3b 20 69 2b 2b 2c |< MAXFIL|ES; i++,|
|00005160| 20 66 70 2b 2b 29 0a 58 | 09 09 69 66 20 28 66 70 | fp++).X|..if (fp|
|00005170| 2d 3e 66 5f 66 6c 61 67 | 73 20 3d 3d 20 30 29 0a |->f_flag|s == 0).|
|00005180| 58 09 09 09 62 72 65 61 | 6b 3b 0a 58 09 69 66 20 |X...brea|k;.X.if |
|00005190| 28 69 20 3d 3d 20 4d 41 | 58 46 49 4c 45 53 29 0a |(i == MA|XFILES).|
|000051a0| 58 09 09 63 6f 6d 70 6c | 61 69 6e 28 22 5b 54 6f |X..compl|ain("[To|
|000051b0| 6f 20 6d 61 6e 79 20 6f | 70 65 6e 20 66 69 6c 65 |o many o|pen file|
|000051c0| 73 21 5d 22 29 3b 0a 58 | 09 66 70 2d 3e 66 5f 62 |s!]");.X|.fp->f_b|
|000051d0| 75 66 73 69 7a 65 20 3d | 20 62 75 66 5f 73 69 7a |ufsize =| buf_siz|
|000051e0| 65 3b 0a 58 09 66 70 2d | 3e 66 5f 63 6e 74 20 3d |e;.X.fp-|>f_cnt =|
|000051f0| 20 30 3b 0a 58 09 66 70 | 2d 3e 66 5f 66 64 20 3d | 0;.X.fp|->f_fd =|
|00005200| 20 66 64 3b 0a 58 09 66 | 70 2d 3e 66 5f 66 6c 61 | fd;.X.f|p->f_fla|
|00005210| 67 73 20 3d 20 66 6c 61 | 67 73 3b 0a 58 09 69 66 |gs = fla|gs;.X.if|
|00005220| 20 28 62 75 66 66 65 72 | 20 3d 3d 20 30 29 20 7b | (buffer| == 0) {|
|00005230| 0a 58 09 09 62 75 66 66 | 65 72 20 3d 20 65 6d 61 |.X..buff|er = ema|
|00005240| 6c 6c 6f 63 28 62 75 66 | 5f 73 69 7a 65 29 3b 0a |lloc(buf|_size);.|
|00005250| 58 09 09 66 70 2d 3e 66 | 5f 66 6c 61 67 73 20 7c |X..fp->f|_flags ||
|00005260| 3d 20 46 5f 4d 59 42 55 | 46 3b 0a 58 09 7d 0a 58 |= F_MYBU|F;.X.}.X|
|00005270| 09 66 70 2d 3e 66 5f 62 | 61 73 65 20 3d 20 66 70 |.fp->f_b|ase = fp|
|00005280| 2d 3e 66 5f 70 74 72 20 | 3d 20 62 75 66 66 65 72 |->f_ptr |= buffer|
|00005290| 3b 0a 58 09 66 70 2d 3e | 66 5f 6e 61 6d 65 20 3d |;.X.fp->|f_name =|
|000052a0| 20 63 6f 70 79 73 74 72 | 28 6e 61 6d 65 29 3b 0a | copystr|(name);.|
|000052b0| 58 0a 58 09 72 65 74 75 | 72 6e 20 66 70 3b 0a 58 |X.X.retu|rn fp;.X|
|000052c0| 7d 0a 58 0a 58 67 63 5f | 6f 70 65 6e 66 69 6c 65 |}.X.Xgc_|openfile|
|000052d0| 73 28 29 0a 58 7b 0a 58 | 09 72 65 67 69 73 74 65 |s().X{.X|.registe|
|000052e0| 72 20 46 69 6c 65 09 2a | 66 70 3b 0a 58 0a 58 09 |r File.*|fp;.X.X.|
|000052f0| 66 6f 72 20 28 66 70 20 | 3d 20 5f 6f 70 65 6e 66 |for (fp |= _openf|
|00005300| 69 6c 65 73 3b 20 66 70 | 20 3c 20 26 5f 6f 70 65 |iles; fp| < &_ope|
|00005310| 6e 66 69 6c 65 73 5b 4d | 41 58 46 49 4c 45 53 5d |nfiles[M|AXFILES]|
|00005320| 3b 20 66 70 2b 2b 29 0a | 58 09 09 69 66 20 28 66 |; fp++).|X..if (f|
|00005330| 70 2d 3e 66 5f 66 6c 61 | 67 73 20 21 3d 20 30 20 |p->f_fla|gs != 0 |
|00005340| 26 26 20 28 66 70 2d 3e | 66 5f 66 6c 61 67 73 20 |&& (fp->|f_flags |
|00005350| 26 20 46 5f 4c 4f 43 4b | 45 44 29 20 3d 3d 20 30 |& F_LOCK|ED) == 0|
|00005360| 29 0a 58 09 09 09 66 5f | 63 6c 6f 73 65 28 66 70 |).X...f_|close(fp|
|00005370| 29 3b 0a 58 7d 0a 58 0a | 58 46 69 6c 65 20 2a 0a |);.X}.X.|XFile *.|
|00005380| 58 66 64 5f 6f 70 65 6e | 28 6e 61 6d 65 2c 20 66 |Xfd_open|(name, f|
|00005390| 6c 61 67 73 2c 20 66 64 | 2c 20 62 75 66 66 65 72 |lags, fd|, buffer|
|000053a0| 2c 20 62 73 69 7a 65 29 | 0a 58 63 68 61 72 09 2a |, bsize)|.Xchar.*|
|000053b0| 6e 61 6d 65 2c 0a 58 09 | 2a 62 75 66 66 65 72 3b |name,.X.|*buffer;|
|000053c0| 0a 58 7b 0a 58 09 72 65 | 74 75 72 6e 20 66 5f 61 |.X{.X.re|turn f_a|
|000053d0| 6c 6c 6f 63 28 6e 61 6d | 65 2c 20 66 6c 61 67 73 |lloc(nam|e, flags|
|000053e0| 2c 20 66 64 2c 20 62 75 | 66 66 65 72 2c 20 62 73 |, fd, bu|ffer, bs|
|000053f0| 69 7a 65 29 3b 0a 58 7d | 0a 58 0a 58 46 69 6c 65 |ize);.X}|.X.XFile|
|00005400| 20 2a 0a 58 66 5f 6f 70 | 65 6e 28 6e 61 6d 65 2c | *.Xf_op|en(name,|
|00005410| 20 66 6c 61 67 73 2c 20 | 62 75 66 66 65 72 2c 20 | flags, |buffer, |
|00005420| 62 75 66 5f 73 69 7a 65 | 29 0a 58 63 68 61 72 09 |buf_size|).Xchar.|
|00005430| 2a 6e 61 6d 65 2c 0a 58 | 09 2a 62 75 66 66 65 72 |*name,.X|.*buffer|
|00005440| 3b 0a 58 7b 0a 58 09 72 | 65 67 69 73 74 65 72 20 |;.X{.X.r|egister |
|00005450| 69 6e 74 09 66 64 3b 0a | 58 09 69 6e 74 09 6d 6f |int.fd;.|X.int.mo|
|00005460| 64 65 20 3d 20 46 5f 4d | 4f 44 45 28 66 6c 61 67 |de = F_M|ODE(flag|
|00005470| 73 29 3b 0a 58 0a 58 09 | 69 66 20 28 6d 6f 64 65 |s);.X.X.|if (mode|
|00005480| 20 3d 3d 20 46 5f 52 45 | 41 44 29 0a 58 09 09 66 | == F_RE|AD).X..f|
|00005490| 64 20 3d 20 6f 70 65 6e | 28 6e 61 6d 65 2c 20 30 |d = open|(name, 0|
|000054a0| 29 3b 0a 58 09 69 66 20 | 28 6d 6f 64 65 20 3d 3d |);.X.if |(mode ==|
|000054b0| 20 46 5f 41 50 50 45 4e | 44 29 20 7b 0a 58 09 09 | F_APPEN|D) {.X..|
|000054c0| 66 64 20 3d 20 6f 70 65 | 6e 28 6e 61 6d 65 2c 20 |fd = ope|n(name, |
|000054d0| 31 29 3b 0a 58 09 09 69 | 66 20 28 66 64 20 3d 3d |1);.X..i|f (fd ==|
|000054e0| 20 2d 31 29 0a 58 09 09 | 09 6d 6f 64 65 20 3d 20 | -1).X..|.mode = |
|000054f0| 46 5f 57 52 49 54 45 3b | 0a 58 09 09 65 6c 73 65 |F_WRITE;|.X..else|
|00005500| 0a 58 09 09 09 28 76 6f | 69 64 29 20 6c 73 65 65 |.X...(vo|id) lsee|
|00005510| 6b 28 66 64 2c 20 30 4c | 2c 20 32 29 3b 0a 58 09 |k(fd, 0L|, 2);.X.|
|00005520| 7d 0a 58 09 69 66 20 28 | 6d 6f 64 65 20 3d 3d 20 |}.X.if (|mode == |
|00005530| 46 5f 57 52 49 54 45 29 | 0a 58 09 09 66 64 20 3d |F_WRITE)|.X..fd =|
|00005540| 20 63 72 65 61 74 28 6e | 61 6d 65 2c 20 43 72 65 | creat(n|ame, Cre|
|00005550| 61 74 4d 6f 64 65 29 3b | 0a 58 09 69 66 20 28 66 |atMode);|.X.if (f|
|00005560| 64 20 3d 3d 20 2d 31 29 | 0a 58 09 09 72 65 74 75 |d == -1)|.X..retu|
|00005570| 72 6e 20 4e 49 4c 3b 0a | 58 09 72 65 74 75 72 6e |rn NIL;.|X.return|
|00005580| 20 66 5f 61 6c 6c 6f 63 | 28 6e 61 6d 65 2c 20 66 | f_alloc|(name, f|
|00005590| 6c 61 67 73 2c 20 66 64 | 2c 20 62 75 66 66 65 72 |lags, fd|, buffer|
|000055a0| 2c 20 62 75 66 5f 73 69 | 7a 65 29 3b 0a 58 7d 0a |, buf_si|ze);.X}.|
|000055b0| 58 0a 58 66 5f 63 6c 6f | 73 65 28 66 70 29 0a 58 |X.Xf_clo|se(fp).X|
|000055c0| 46 69 6c 65 09 2a 66 70 | 3b 0a 58 7b 0a 58 09 66 |File.*fp|;.X{.X.f|
|000055d0| 6c 75 73 68 28 66 70 29 | 3b 0a 58 23 69 66 64 65 |lush(fp)|;.X#ifde|
|000055e0| 66 20 42 53 44 34 5f 32 | 20 0a 58 09 69 66 20 28 |f BSD4_2| .X.if (|
|000055f0| 66 70 2d 3e 66 5f 66 6c | 61 67 73 20 26 20 28 46 |fp->f_fl|ags & (F|
|00005600| 5f 57 52 49 54 45 7c 46 | 5f 41 50 50 45 4e 44 29 |_WRITE|F|_APPEND)|
|00005610| 29 0a 58 09 09 28 76 6f | 69 64 29 20 66 73 79 6e |).X..(vo|id) fsyn|
|00005620| 63 28 66 70 2d 3e 66 5f | 66 64 29 3b 0a 58 23 65 |c(fp->f_|fd);.X#e|
|00005630| 6e 64 69 66 20 0a 58 09 | 28 76 6f 69 64 29 20 63 |ndif .X.|(void) c|
|00005640| 6c 6f 73 65 28 66 70 2d | 3e 66 5f 66 64 29 3b 0a |lose(fp-|>f_fd);.|
|00005650| 58 09 69 66 20 28 66 70 | 2d 3e 66 5f 66 6c 61 67 |X.if (fp|->f_flag|
|00005660| 73 20 26 20 46 5f 4d 59 | 42 55 46 29 0a 58 09 09 |s & F_MY|BUF).X..|
|00005670| 66 72 65 65 28 66 70 2d | 3e 66 5f 62 61 73 65 29 |free(fp-|>f_base)|
|00005680| 3b 0a 58 09 66 72 65 65 | 28 66 70 2d 3e 66 5f 6e |;.X.free|(fp->f_n|
|00005690| 61 6d 65 29 3b 0a 58 09 | 66 70 2d 3e 66 5f 66 6c |ame);.X.|fp->f_fl|
|000056a0| 61 67 73 20 3d 20 30 3b | 09 2f 2a 20 69 6e 64 69 |ags = 0;|./* indi|
|000056b0| 63 61 74 65 73 20 74 68 | 61 74 20 77 65 27 72 65 |cates th|at we're|
|000056c0| 20 61 76 61 69 6c 61 62 | 6c 65 20 2a 2f 0a 58 7d | availab|le */.X}|
|000056d0| 0a 58 0a 58 66 69 6c 62 | 75 66 28 66 70 29 0a 58 |.X.Xfilb|uf(fp).X|
|000056e0| 46 69 6c 65 09 2a 66 70 | 3b 0a 58 7b 0a 58 09 69 |File.*fp|;.X{.X.i|
|000056f0| 66 20 28 66 70 2d 3e 66 | 5f 66 6c 61 67 73 20 26 |f (fp->f|_flags &|
|00005700| 20 28 46 5f 45 4f 46 7c | 46 5f 45 52 52 29 29 0a | (F_EOF||F_ERR)).|
|00005710| 58 09 09 72 65 74 75 72 | 6e 20 45 4f 46 3b 0a 58 |X..retur|n EOF;.X|
|00005720| 09 66 70 2d 3e 66 5f 70 | 74 72 20 3d 20 66 70 2d |.fp->f_p|tr = fp-|
|00005730| 3e 66 5f 62 61 73 65 3b | 0a 58 09 66 70 2d 3e 66 |>f_base;|.X.fp->f|
|00005740| 5f 63 6e 74 20 3d 20 72 | 65 61 64 28 66 70 2d 3e |_cnt = r|ead(fp->|
|00005750| 66 5f 66 64 2c 20 66 70 | 2d 3e 66 5f 62 61 73 65 |f_fd, fp|->f_base|
|00005760| 2c 20 66 70 2d 3e 66 5f | 62 75 66 73 69 7a 65 29 |, fp->f_|bufsize)|
|00005770| 3b 0a 58 09 69 66 20 28 | 66 70 2d 3e 66 5f 63 6e |;.X.if (|fp->f_cn|
|00005780| 74 20 3d 3d 20 2d 31 29 | 20 7b 0a 58 09 09 70 72 |t == -1)| {.X..pr|
|00005790| 69 6e 74 66 28 22 5b 52 | 65 61 64 20 65 72 72 6f |intf("[R|ead erro|
|000057a0| 72 20 25 64 5d 22 2c 20 | 65 72 72 6e 6f 29 3b 0a |r %d]", |errno);.|
|000057b0| 58 09 09 66 70 2d 3e 66 | 5f 66 6c 61 67 73 20 7c |X..fp->f|_flags ||
|000057c0| 3d 20 46 5f 45 52 52 3b | 0a 58 09 7d 0a 58 09 69 |= F_ERR;|.X.}.X.i|
|000057d0| 66 20 28 66 70 2d 3e 66 | 5f 63 6e 74 20 3d 3d 20 |f (fp->f|_cnt == |
|000057e0| 30 29 20 7b 0a 58 09 09 | 66 70 2d 3e 66 5f 66 6c |0) {.X..|fp->f_fl|
|000057f0| 61 67 73 20 7c 3d 20 46 | 5f 45 4f 46 3b 0a 58 09 |ags |= F|_EOF;.X.|
|00005800| 09 72 65 74 75 72 6e 20 | 45 4f 46 3b 0a 58 09 7d |.return |EOF;.X.}|
|00005810| 0a 58 09 69 6f 5f 63 68 | 61 72 73 20 2b 3d 20 66 |.X.io_ch|ars += f|
|00005820| 70 2d 3e 66 5f 63 6e 74 | 3b 0a 58 09 72 65 74 75 |p->f_cnt|;.X.retu|
|00005830| 72 6e 20 67 65 74 63 28 | 66 70 29 3b 0a 58 7d 0a |rn getc(|fp);.X}.|
|00005840| 58 0a 58 70 75 74 73 74 | 72 28 73 29 0a 58 72 65 |X.Xputst|r(s).Xre|
|00005850| 67 69 73 74 65 72 20 63 | 68 61 72 09 2a 73 3b 0a |gister c|har.*s;.|
|00005860| 58 7b 0a 58 09 72 65 67 | 69 73 74 65 72 20 69 6e |X{.X.reg|ister in|
|00005870| 74 09 63 3b 0a 58 0a 58 | 09 77 68 69 6c 65 20 28 |t.c;.X.X|.while (|
|00005880| 63 20 3d 20 2a 73 2b 2b | 29 0a 58 09 09 70 75 74 |c = *s++|).X..put|
|00005890| 63 68 61 72 28 63 29 3b | 0a 58 7d 0a 58 0a 58 66 |char(c);|.X}.X.Xf|
|000058a0| 70 75 74 6e 63 68 61 72 | 28 73 2c 20 6e 2c 20 66 |putnchar|(s, n, f|
|000058b0| 70 29 0a 58 72 65 67 69 | 73 74 65 72 20 63 68 61 |p).Xregi|ster cha|
|000058c0| 72 09 2a 73 3b 0a 58 72 | 65 67 69 73 74 65 72 20 |r.*s;.Xr|egister |
|000058d0| 69 6e 74 09 6e 3b 0a 58 | 72 65 67 69 73 74 65 72 |int.n;.X|register|
|000058e0| 20 46 69 6c 65 09 2a 66 | 70 3b 0a 58 7b 0a 58 09 | File.*f|p;.X{.X.|
|000058f0| 77 68 69 6c 65 20 28 2d | 2d 6e 20 3e 3d 20 30 29 |while (-|-n >= 0)|
|00005900| 0a 58 09 09 70 75 74 63 | 28 2a 73 2b 2b 2c 20 66 |.X..putc|(*s++, f|
|00005910| 70 29 3b 0a 58 7d 0a 58 | 0a 58 66 6c 75 73 68 6f |p);.X}.X|.Xflusho|
|00005920| 28 29 0a 58 7b 0a 58 09 | 5f 66 6c 75 73 68 28 45 |().X{.X.|_flush(E|
|00005930| 4f 46 2c 20 73 74 64 6f | 75 74 29 3b 0a 58 7d 0a |OF, stdo|ut);.X}.|
|00005940| 58 0a 58 66 6c 75 73 68 | 28 66 70 29 0a 58 46 69 |X.Xflush|(fp).XFi|
|00005950| 6c 65 09 2a 66 70 3b 0a | 58 7b 0a 58 09 5f 66 6c |le.*fp;.|X{.X._fl|
|00005960| 75 73 68 28 45 4f 46 2c | 20 66 70 29 3b 0a 58 7d |ush(EOF,| fp);.X}|
|00005970| 0a 58 0a 58 5f 66 6c 75 | 73 68 28 63 2c 20 66 70 |.X.X_flu|sh(c, fp|
|00005980| 29 0a 58 72 65 67 69 73 | 74 65 72 20 46 69 6c 65 |).Xregis|ter File|
|00005990| 09 2a 66 70 3b 0a 58 7b | 0a 58 09 72 65 67 69 73 |.*fp;.X{|.X.regis|
|000059a0| 74 65 72 20 69 6e 74 09 | 6e 3b 0a 58 0a 58 09 69 |ter int.|n;.X.X.i|
|000059b0| 66 20 28 66 70 2d 3e 66 | 5f 66 6c 61 67 73 20 26 |f (fp->f|_flags &|
|000059c0| 20 28 46 5f 52 45 41 44 | 20 7c 20 46 5f 53 54 52 | (F_READ| | F_STR|
|000059d0| 49 4e 47 20 7c 20 46 5f | 45 52 52 29 29 0a 58 09 |ING | F_|ERR)).X.|
|000059e0| 09 72 65 74 75 72 6e 3b | 0a 58 09 69 66 20 28 28 |.return;|.X.if ((|
|000059f0| 28 6e 20 3d 20 28 66 70 | 2d 3e 66 5f 70 74 72 20 |(n = (fp|->f_ptr |
|00005a00| 2d 20 66 70 2d 3e 66 5f | 62 61 73 65 29 29 20 3e |- fp->f_|base)) >|
|00005a10| 20 30 29 20 26 26 0a 58 | 09 20 20 20 20 28 77 72 | 0) &&.X|. (wr|
|00005a20| 69 74 65 28 66 70 2d 3e | 66 5f 66 64 2c 20 66 70 |ite(fp->|f_fd, fp|
|00005a30| 2d 3e 66 5f 62 61 73 65 | 2c 20 6e 29 20 21 3d 20 |->f_base|, n) != |
|00005a40| 6e 29 20 26 26 0a 58 09 | 20 20 20 20 28 66 70 20 |n) &&.X.| (fp |
|00005a50| 21 3d 20 73 74 64 6f 75 | 74 29 29 20 7b 0a 58 09 |!= stdou|t)) {.X.|
|00005a60| 20 20 20 20 09 66 70 2d | 3e 66 5f 66 6c 61 67 73 | .fp-|>f_flags|
|00005a70| 20 7c 3d 20 46 5f 45 52 | 52 3b 0a 58 09 09 65 72 | |= F_ER|R;.X..er|
|00005a80| 72 6f 72 28 22 5b 49 2f | 4f 20 65 72 72 6f 72 28 |ror("[I/|O error(|
|00005a90| 25 64 29 3b 20 66 69 6c | 65 20 3d 20 25 73 2c 20 |%d); fil|e = %s, |
|00005aa0| 66 64 20 3d 20 25 64 5d | 22 2c 0a 58 09 09 09 65 |fd = %d]|",.X...e|
|00005ab0| 72 72 6e 6f 2c 20 66 70 | 2d 3e 66 5f 6e 61 6d 65 |rrno, fp|->f_name|
|00005ac0| 2c 20 66 70 2d 3e 66 5f | 66 64 29 3b 0a 58 09 7d |, fp->f_|fd);.X.}|
|00005ad0| 0a 58 0a 58 09 69 66 20 | 28 66 70 20 3d 3d 20 73 |.X.X.if |(fp == s|
|00005ae0| 74 64 6f 75 74 29 0a 58 | 09 09 4f 6b 61 79 41 62 |tdout).X|..OkayAb|
|00005af0| 6f 72 74 20 3d 20 59 45 | 53 3b 0a 58 09 66 70 2d |ort = YE|S;.X.fp-|
|00005b00| 3e 66 5f 63 6e 74 20 3d | 20 66 70 2d 3e 66 5f 62 |>f_cnt =| fp->f_b|
|00005b10| 75 66 73 69 7a 65 3b 0a | 58 09 66 70 2d 3e 66 5f |ufsize;.|X.fp->f_|
|00005b20| 70 74 72 20 3d 20 66 70 | 2d 3e 66 5f 62 61 73 65 |ptr = fp|->f_base|
|00005b30| 3b 0a 58 09 69 66 20 28 | 63 20 21 3d 20 45 4f 46 |;.X.if (|c != EOF|
|00005b40| 29 0a 58 09 09 70 75 74 | 63 28 63 2c 20 66 70 29 |).X..put|c(c, fp)|
|00005b50| 3b 0a 58 7d 0a 58 0a 58 | 66 5f 67 65 74 73 28 66 |;.X}.X.X|f_gets(f|
|00005b60| 70 2c 20 62 75 66 2c 20 | 6d 61 78 29 0a 58 72 65 |p, buf, |max).Xre|
|00005b70| 67 69 73 74 65 72 20 46 | 69 6c 65 09 2a 66 70 3b |gister F|ile.*fp;|
|00005b80| 0a 58 63 68 61 72 09 2a | 62 75 66 3b 0a 58 7b 0a |.Xchar.*|buf;.X{.|
|00005b90| 58 09 72 65 67 69 73 74 | 65 72 20 63 68 61 72 09 |X.regist|er char.|
|00005ba0| 2a 63 70 20 3d 20 62 75 | 66 3b 0a 58 09 72 65 67 |*cp = bu|f;.X.reg|
|00005bb0| 69 73 74 65 72 20 69 6e | 74 09 63 3b 0a 58 09 63 |ister in|t.c;.X.c|
|00005bc0| 68 61 72 09 2a 65 6e 64 | 70 20 3d 20 62 75 66 20 |har.*end|p = buf |
|00005bd0| 2b 20 6d 61 78 20 2d 20 | 31 3b 0a 58 0a 58 09 69 |+ max - |1;.X.X.i|
|00005be0| 66 20 28 66 70 2d 3e 66 | 5f 66 6c 61 67 73 20 26 |f (fp->f|_flags &|
|00005bf0| 20 46 5f 45 4f 46 29 0a | 58 09 09 72 65 74 75 72 | F_EOF).|X..retur|
|00005c00| 6e 20 45 4f 46 3b 0a 58 | 09 77 68 69 6c 65 20 28 |n EOF;.X|.while (|
|00005c10| 28 28 63 20 3d 20 67 65 | 74 63 28 66 70 29 29 20 |((c = ge|tc(fp)) |
|00005c20| 21 3d 20 45 4f 46 29 20 | 26 26 20 28 63 20 21 3d |!= EOF) |&& (c !=|
|00005c30| 20 27 5c 6e 27 29 29 20 | 7b 0a 58 09 09 69 66 20 | '\n')) |{.X..if |
|00005c40| 28 63 20 3d 3d 20 4e 55 | 4c 4c 29 0a 58 09 09 09 |(c == NU|LL).X...|
|00005c50| 63 6f 6e 74 69 6e 75 65 | 3b 09 2f 2a 20 73 6f 72 |continue|;./* sor|
|00005c60| 72 79 20 77 65 20 64 6f | 6e 27 74 20 72 65 61 64 |ry we do|n't read|
|00005c70| 20 6e 75 6c 6c 73 20 2a | 2f 0a 58 09 09 69 66 20 | nulls *|/.X..if |
|00005c80| 28 63 70 20 3e 3d 20 65 | 6e 64 70 29 20 7b 0a 58 |(cp >= e|ndp) {.X|
|00005c90| 09 09 09 61 64 64 5f 6d | 65 73 73 28 22 20 5b 4c |...add_m|ess(" [L|
|00005ca0| 69 6e 65 20 74 6f 6f 20 | 6c 6f 6e 67 5d 22 29 3b |ine too |long]");|
|00005cb0| 0a 58 09 09 09 72 62 65 | 6c 6c 28 29 3b 0a 58 09 |.X...rbe|ll();.X.|
|00005cc0| 09 09 72 65 74 75 72 6e | 20 45 4f 46 3b 0a 58 09 |..return| EOF;.X.|
|00005cd0| 09 7d 0a 58 09 09 2a 63 | 70 2b 2b 20 3d 20 63 3b |.}.X..*c|p++ = c;|
|00005ce0| 0a 58 09 7d 0a 58 09 2a | 63 70 20 3d 20 27 5c 30 |.X.}.X.*|cp = '\0|
|00005cf0| 27 3b 0a 58 09 69 66 20 | 28 63 20 3d 3d 20 45 4f |';.X.if |(c == EO|
|00005d00| 46 29 20 7b 0a 58 09 09 | 69 66 20 28 63 70 20 21 |F) {.X..|if (cp !|
|00005d10| 3d 20 62 75 66 29 0a 58 | 09 09 09 61 64 64 5f 6d |= buf).X|...add_m|
|00005d20| 65 73 73 28 22 20 5b 49 | 6e 63 6f 6d 70 6c 65 74 |ess(" [I|ncomplet|
|00005d30| 65 20 6c 61 73 74 20 6c | 69 6e 65 5d 22 29 3b 0a |e last l|ine]");.|
|00005d40| 58 09 09 66 70 2d 3e 66 | 5f 66 6c 61 67 73 20 7c |X..fp->f|_flags ||
|00005d50| 3d 20 46 5f 45 4f 46 3b | 0a 58 09 09 72 65 74 75 |= F_EOF;|.X..retu|
|00005d60| 72 6e 20 45 4f 46 3b 0a | 58 09 7d 0a 58 09 69 6f |rn EOF;.|X.}.X.io|
|00005d70| 5f 6c 69 6e 65 73 2b 2b | 3b 0a 58 09 72 65 74 75 |_lines++|;.X.retu|
|00005d80| 72 6e 20 4e 49 4c 3b 09 | 2f 2a 20 74 68 69 73 20 |rn NIL;.|/* this |
|00005d90| 6d 65 61 6e 73 20 6f 6b | 61 79 20 2a 2f 0a 58 7d |means ok|ay */.X}|
|00005da0| 0a 58 0a 58 2f 2a 20 44 | 65 61 6c 73 20 77 69 74 |.X.X/* D|eals wit|
|00005db0| 68 20 6f 75 74 70 75 74 | 20 74 6f 20 74 68 65 20 |h output| to the |
|00005dc0| 74 65 72 6d 69 6e 61 6c | 2c 20 73 65 74 74 69 6e |terminal|, settin|
|00005dd0| 67 20 75 70 20 74 68 65 | 20 61 6d 6f 75 6e 74 20 |g up the| amount |
|00005de0| 6f 66 20 63 68 61 72 61 | 63 74 65 72 73 0a 58 20 |of chara|cters.X |
|00005df0| 20 20 74 6f 20 62 65 20 | 62 75 66 66 65 72 65 64 | to be |buffered|
|00005e00| 20 64 65 70 65 6e 64 69 | 6e 67 20 6f 6e 20 74 68 | dependi|ng on th|
|00005e10| 65 20 6f 75 74 70 75 74 | 20 62 61 75 64 20 72 61 |e output| baud ra|
|00005e20| 74 65 2e 20 20 57 68 79 | 20 69 74 27 73 20 69 6e |te. Why| it's in|
|00005e30| 20 61 20 0a 58 20 20 20 | 73 65 70 61 72 61 74 65 | a .X |separate|
|00005e40| 20 66 69 6c 65 20 49 20 | 64 6f 6e 27 74 20 6b 6e | file I |don't kn|
|00005e50| 6f 77 20 2e 2e 2e 20 2a | 2f 0a 58 0a 58 73 74 61 |ow ... *|/.X.Xsta|
|00005e60| 74 69 63 20 63 68 61 72 | 09 6f 6e 65 5f 62 75 66 |tic char|.one_buf|
|00005e70| 3b 0a 58 0a 58 69 6e 74 | 09 42 75 66 53 69 7a 65 |;.X.Xint|.BufSize|
|00005e80| 20 3d 20 31 3b 0a 58 0a | 58 73 74 61 74 69 63 20 | = 1;.X.|Xstatic |
|00005e90| 46 69 6c 65 09 5f 73 74 | 64 6f 75 74 20 3d 20 7b |File._st|dout = {|
|00005ea0| 31 2c 20 31 2c 20 31 2c | 20 46 5f 57 52 49 54 45 |1, 1, 1,| F_WRITE|
|00005eb0| 2c 20 26 6f 6e 65 5f 62 | 75 66 2c 20 26 6f 6e 65 |, &one_b|uf, &one|
|00005ec0| 5f 62 75 66 7d 3b 0a 58 | 46 69 6c 65 09 2a 73 74 |_buf};.X|File.*st|
|00005ed0| 64 6f 75 74 20 3d 20 26 | 5f 73 74 64 6f 75 74 3b |dout = &|_stdout;|
|00005ee0| 0a 58 0a 58 2f 2a 20 70 | 75 74 20 61 20 73 74 72 |.X.X/* p|ut a str|
|00005ef0| 69 6e 67 20 77 69 74 68 | 20 70 61 64 64 69 6e 67 |ing with| padding|
|00005f00| 20 2a 2f 0a 58 0a 58 74 | 70 75 74 63 28 63 29 0a | */.X.Xt|putc(c).|
|00005f10| 58 7b 0a 58 09 70 75 74 | 63 68 61 72 28 63 29 3b |X{.X.put|char(c);|
|00005f20| 0a 58 7d 0a 58 0a 58 23 | 75 6e 64 65 66 20 70 75 |.X}.X.X#|undef pu|
|00005f30| 74 63 68 61 72 09 09 2f | 2a 20 66 6f 72 20 66 69 |tchar../|* for fi|
|00005f40| 6c 65 73 20 77 68 69 63 | 68 20 66 6f 72 67 65 74 |les whic|h forget|
|00005f50| 20 74 6f 20 69 6e 63 6c | 75 64 65 20 69 6f 2e 68 | to incl|ude io.h|
|00005f60| 2c 0a 58 09 09 09 20 20 | 20 68 65 72 65 27 73 20 |,.X... | here's |
|00005f70| 61 20 72 65 61 6c 20 70 | 75 74 63 68 61 72 20 70 |a real p|utchar p|
|00005f80| 72 6f 63 65 64 75 72 65 | 2e 20 2a 2f 0a 58 70 75 |rocedure|. */.Xpu|
|00005f90| 74 63 68 61 72 28 63 29 | 0a 58 7b 0a 58 09 70 75 |tchar(c)|.X{.X.pu|
|00005fa0| 74 63 28 63 2c 20 73 74 | 64 6f 75 74 29 3b 0a 58 |tc(c, st|dout);.X|
|00005fb0| 7d 0a 58 0a 58 70 75 74 | 70 61 64 28 73 74 72 2c |}.X.Xput|pad(str,|
|00005fc0| 20 6c 69 6e 65 73 29 0a | 58 63 68 61 72 09 2a 73 | lines).|Xchar.*s|
|00005fd0| 74 72 3b 0a 58 7b 0a 58 | 09 69 66 20 28 73 74 72 |tr;.X{.X|.if (str|
|00005fe0| 29 0a 58 09 09 74 70 75 | 74 73 28 73 74 72 2c 20 |).X..tpu|ts(str, |
|00005ff0| 6c 69 6e 65 73 2c 20 74 | 70 75 74 63 29 3b 0a 58 |lines, t|putc);.X|
|00006000| 7d 0a 58 0a 58 2f 2a 20 | 44 65 74 65 72 6d 69 6e |}.X.X/* |Determin|
|00006010| 65 20 74 68 65 20 6e 75 | 6d 62 65 72 20 6f 66 20 |e the nu|mber of |
|00006020| 63 68 61 72 61 63 74 65 | 72 73 20 74 6f 20 62 75 |characte|rs to bu|
|00006030| 66 66 65 72 20 61 74 20 | 65 61 63 68 20 62 61 75 |ffer at |each bau|
|00006040| 64 20 72 61 74 65 2e 20 | 20 54 68 65 0a 58 20 20 |d rate. | The.X |
|00006050| 20 6c 6f 77 65 72 20 74 | 68 65 20 6e 75 6d 62 65 | lower t|he numbe|
|00006060| 72 2c 20 74 68 65 20 71 | 75 69 63 6b 65 72 20 74 |r, the q|uicker t|
|00006070| 68 65 20 72 65 73 70 6f | 6e 73 65 20 77 68 65 6e |he respo|nse when|
|00006080| 20 6e 65 77 20 69 6e 70 | 75 74 20 61 72 72 69 76 | new inp|ut arriv|
|00006090| 65 73 2e 20 20 4f 66 0a | 58 20 20 20 63 6f 75 72 |es. Of.|X cour|
|000060a0| 73 65 20 74 68 65 20 6c | 6f 77 65 72 20 74 68 65 |se the l|ower the|
|000060b0| 20 6e 75 6d 62 65 72 2c | 20 74 68 65 20 6d 6f 72 | number,| the mor|
|000060c0| 65 20 70 72 6f 6e 65 20 | 74 68 65 20 70 72 6f 67 |e prone |the prog|
|000060d0| 72 61 6d 20 69 73 20 74 | 6f 20 73 74 6f 70 20 69 |ram is t|o stop i|
|000060e0| 6e 0a 58 20 20 20 6f 75 | 74 70 75 74 2e 20 20 44 |n.X ou|tput. D|
|000060f0| 65 63 69 64 65 20 77 68 | 61 74 20 6d 61 74 74 65 |ecide wh|at matte|
|00006100| 72 73 20 6d 6f 73 74 20 | 74 6f 20 79 6f 75 2e 20 |rs most |to you. |
|00006110| 54 68 69 73 20 73 65 74 | 73 20 42 75 66 53 69 7a |This set|s BufSiz|
|00006120| 65 20 74 6f 20 74 68 65 | 20 72 69 67 68 74 0a 58 |e to the| right.X|
|00006130| 20 20 20 6e 75 6d 62 65 | 72 20 6f 72 20 63 68 61 | numbe|r or cha|
|00006140| 72 73 2c 20 61 6e 64 20 | 69 6e 69 74 69 61 69 7a |rs, and |initiaiz|
|00006150| 65 73 20 60 73 74 64 6f | 75 74 27 2e 20 20 2a 2f |es `stdo|ut'. */|
|00006160| 0a 58 0a 58 73 65 74 74 | 6f 75 74 28 74 74 62 75 |.X.Xsett|out(ttbu|
|00006170| 66 29 0a 58 63 68 61 72 | 09 2a 74 74 62 75 66 3b |f).Xchar|.*ttbuf;|
|00006180| 0a 58 7b 0a 58 09 73 74 | 61 74 69 63 20 69 6e 74 |.X{.X.st|atic int|
|00006190| 20 73 70 65 65 64 73 5b | 5d 20 3d 20 7b 0a 58 09 | speeds[|] = {.X.|
|000061a0| 09 31 2c 09 2f 2a 20 30 | 09 2a 2f 0a 58 09 09 31 |.1,./* 0|.*/.X..1|
|000061b0| 2c 09 2f 2a 20 35 30 09 | 2a 2f 0a 58 09 09 31 2c |,./* 50.|*/.X..1,|
|000061c0| 09 2f 2a 20 37 35 09 2a | 2f 0a 58 09 09 31 2c 09 |./* 75.*|/.X..1,.|
|000061d0| 2f 2a 20 31 31 30 09 2a | 2f 0a 58 09 09 31 2c 09 |/* 110.*|/.X..1,.|
|000061e0| 2f 2a 20 31 33 34 09 2a | 2f 0a 58 09 09 31 2c 09 |/* 134.*|/.X..1,.|
|000061f0| 2f 2a 20 31 35 30 09 2a | 2f 0a 58 09 09 31 2c 09 |/* 150.*|/.X..1,.|
|00006200| 2f 2a 20 32 30 30 09 2a | 2f 0a 58 09 09 32 2c 09 |/* 200.*|/.X..2,.|
|00006210| 2f 2a 20 33 30 30 09 2a | 2f 0a 58 09 09 34 2c 09 |/* 300.*|/.X..4,.|
|00006220| 2f 2a 20 36 30 30 09 2a | 2f 0a 58 09 09 38 2c 09 |/* 600.*|/.X..8,.|
|00006230| 2f 2a 20 31 32 30 30 20 | 2a 2f 0a 58 09 09 31 36 |/* 1200 |*/.X..16|
|00006240| 2c 09 2f 2a 20 31 38 30 | 30 09 2a 2f 0a 58 09 09 |,./* 180|0.*/.X..|
|00006250| 33 32 2c 09 2f 2a 20 32 | 34 30 30 09 2a 2f 0a 58 |32,./* 2|400.*/.X|
|00006260| 09 09 31 32 38 2c 09 2f | 2a 20 34 38 30 30 09 2a |..128,./|* 4800.*|
|00006270| 2f 0a 58 09 09 32 35 36 | 2c 09 2f 2a 20 39 36 30 |/.X..256|,./* 960|
|00006280| 30 09 2a 2f 0a 58 09 09 | 35 31 32 2c 09 2f 2a 20 |0.*/.X..|512,./* |
|00006290| 45 58 54 41 09 2a 2f 0a | 58 09 09 35 31 32 09 2f |EXTA.*/.|X..512./|
|000062a0| 2a 20 45 58 54 09 2a 2f | 0a 58 09 7d 3b 0a 58 09 |* EXT.*/|.X.};.X.|
|000062b0| 42 75 66 53 69 7a 65 20 | 3d 20 6d 69 6e 28 35 31 |BufSize |= min(51|
|000062c0| 32 2c 20 28 73 70 65 65 | 64 73 5b 6f 73 70 65 65 |2, (spee|ds[ospee|
|000062d0| 64 5d 20 2a 20 6d 61 78 | 28 4c 49 20 2f 20 32 34 |d] * max|(LI / 24|
|000062e0| 2c 20 31 29 29 29 3b 0a | 58 09 73 74 64 6f 75 74 |, 1)));.|X.stdout|
|000062f0| 20 3d 20 66 64 5f 6f 70 | 65 6e 28 22 2f 64 65 76 | = fd_op|en("/dev|
|00006300| 2f 74 74 79 22 2c 20 46 | 5f 57 52 49 54 45 7c 46 |/tty", F|_WRITE|F|
|00006310| 5f 4c 4f 43 4b 45 44 2c | 20 31 2c 20 74 74 62 75 |_LOCKED,| 1, ttbu|
|00006320| 66 2c 20 42 75 66 53 69 | 7a 65 29 3b 0a 58 7d 0a |f, BufSi|ze);.X}.|
|00006330| 58 0a 40 2f 2f 45 2a 4f | 2a 46 20 66 70 2e 63 2f |X.@//E*O|*F fp.c/|
|00006340| 2f 0a 69 66 20 74 65 73 | 74 20 35 31 35 31 20 2d |/.if tes|t 5151 -|
|00006350| 6e 65 20 22 60 77 63 20 | 2d 63 20 3c 27 66 70 2e |ne "`wc |-c <'fp.|
|00006360| 63 27 60 22 3b 20 74 68 | 65 6e 0a 20 20 20 20 65 |c'`"; th|en. e|
|00006370| 63 68 6f 20 73 68 61 72 | 3a 20 65 72 72 6f 72 20 |cho shar|: error |
|00006380| 74 72 61 6e 73 6d 69 74 | 74 69 6e 67 20 22 27 66 |transmit|ting "'f|
|00006390| 70 2e 63 27 22 20 27 28 | 73 68 6f 75 6c 64 20 68 |p.c'" '(|should h|
|000063a0| 61 76 65 20 62 65 65 6e | 20 35 31 35 31 20 63 68 |ave been| 5151 ch|
|000063b0| 61 72 61 63 74 65 72 73 | 29 27 0a 66 69 0a 66 69 |aracters|)'.fi.fi|
|000063c0| 20 23 20 65 6e 64 20 6f | 66 20 6f 76 65 72 77 72 | # end o|f overwr|
|000063d0| 69 74 69 6e 67 20 63 68 | 65 63 6b 0a 65 63 68 6f |iting ch|eck.echo|
|000063e0| 20 73 68 61 72 3a 20 65 | 78 74 72 61 63 74 69 6e | shar: e|xtractin|
|000063f0| 67 20 22 27 66 75 6e 63 | 64 65 66 73 2e 63 27 22 |g "'func|defs.c'"|
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.