home *** CD-ROM | disk | FTP | other *** search
open in:
MacOS 8.1
|
Win98
|
DOS
browse contents |
view JSON data
|
view as text
This file was processed as: SHell self-extracting ARchive
(archive/shar).
Confidence | Program | Detection | Match Type | Support
|
---|
100%
| dexvert
| Newsgroup Content (archive/news)
| magic
| Supported |
100%
| dexvert
| SHell self-extracting ARchive (archive/shar)
| magic
| Supported |
100%
| dexvert
| Internet Message Format (text/imf)
| magic
| Supported |
1%
| dexvert
| Text File (text/txt)
| fallback
| Supported |
100%
| file
| news or mail, ASCII text
| default
| |
100%
| checkBytes
| Printable ASCII
| default
| |
100%
| perlTextCheck
| Likely Text (Perl)
| default
| |
100%
| siegfried
| fmt/329 Shell Archive Format
| default
| |
100%
| detectItEasy
| Format: plain text[LF]
| default (weak)
| |
100%
| xdgMime
| message/rfc822
| default
|
|
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 53 75 62 6a 65 63 74 3a | 20 20 76 30 39 69 30 33 |Subject:| v09i03|
|00000010| 38 3a 20 20 4d 69 63 72 | 6f 45 4d 41 43 53 20 33 |8: Micr|oEMACS 3|
|00000020| 2e 38 62 2c 20 50 61 72 | 74 30 36 2f 31 34 0a 4e |.8b, Par|t06/14.N|
|00000030| 65 77 73 67 72 6f 75 70 | 73 3a 20 6d 6f 64 2e 73 |ewsgroup|s: mod.s|
|00000040| 6f 75 72 63 65 73 0a 41 | 70 70 72 6f 76 65 64 3a |ources.A|pproved:|
|00000050| 20 72 73 40 6d 69 72 72 | 6f 72 2e 54 4d 43 2e 43 | rs@mirr|or.TMC.C|
|00000060| 4f 4d 0a 0a 53 75 62 6d | 69 74 74 65 64 20 62 79 |OM..Subm|itted by|
|00000070| 3a 20 69 68 6e 70 34 21 | 69 74 69 76 61 78 21 64 |: ihnp4!|itivax!d|
|00000080| 75 6e 63 61 6e 21 6c 61 | 77 72 65 6e 63 65 20 28 |uncan!la|wrence (|
|00000090| 44 61 6e 69 65 6c 20 4c | 61 77 72 65 6e 63 65 29 |Daniel L|awrence)|
|000000a0| 0a 4d 6f 64 2e 73 6f 75 | 72 63 65 73 3a 20 56 6f |.Mod.sou|rces: Vo|
|000000b0| 6c 75 6d 65 20 39 2c 20 | 49 73 73 75 65 20 33 38 |lume 9, |Issue 38|
|000000c0| 0a 41 72 63 68 69 76 65 | 2d 6e 61 6d 65 3a 20 75 |.Archive|-name: u|
|000000d0| 65 6d 61 63 73 33 2e 38 | 62 2f 50 61 72 74 30 36 |emacs3.8|b/Part06|
|000000e0| 0a 0a 23 21 20 2f 62 69 | 6e 2f 73 68 0a 23 20 54 |..#! /bi|n/sh.# T|
|000000f0| 68 69 73 20 69 73 20 61 | 20 73 68 65 6c 6c 20 61 |his is a| shell a|
|00000100| 72 63 68 69 76 65 2e 20 | 20 52 65 6d 6f 76 65 20 |rchive. | Remove |
|00000110| 61 6e 79 74 68 69 6e 67 | 20 62 65 66 6f 72 65 20 |anything| before |
|00000120| 74 68 69 73 20 6c 69 6e | 65 2c 0a 23 20 74 68 65 |this lin|e,.# the|
|00000130| 6e 20 75 6e 70 61 63 6b | 20 69 74 20 62 79 20 73 |n unpack| it by s|
|00000140| 61 76 69 6e 67 20 69 74 | 20 69 6e 20 61 20 66 69 |aving it| in a fi|
|00000150| 6c 65 20 61 6e 64 20 74 | 79 70 69 6e 67 20 22 73 |le and t|yping "s|
|00000160| 68 20 66 69 6c 65 22 2e | 0a 23 20 49 66 20 74 68 |h file".|.# If th|
|00000170| 69 73 20 61 72 63 68 69 | 76 65 20 69 73 20 63 6f |is archi|ve is co|
|00000180| 6d 70 6c 65 74 65 2c 20 | 79 6f 75 20 77 69 6c 6c |mplete, |you will|
|00000190| 20 73 65 65 20 74 68 65 | 20 6d 65 73 73 61 67 65 | see the| message|
|000001a0| 3a 0a 23 09 09 22 45 6e | 64 20 6f 66 20 61 72 63 |:.#.."En|d of arc|
|000001b0| 68 69 76 65 20 36 20 28 | 6f 66 20 31 34 29 2e 22 |hive 6 (|of 14)."|
|000001c0| 0a 23 20 43 6f 6e 74 65 | 6e 74 73 3a 20 20 62 69 |.# Conte|nts: bi|
|000001d0| 6e 64 2e 63 20 62 75 66 | 66 65 72 2e 63 20 77 6f |nd.c buf|fer.c wo|
|000001e0| 72 64 2e 63 0a 23 20 57 | 72 61 70 70 65 64 20 62 |rd.c.# W|rapped b|
|000001f0| 79 20 72 73 40 6d 69 72 | 72 6f 72 20 6f 6e 20 46 |y rs@mir|ror on F|
|00000200| 72 69 20 4d 61 72 20 31 | 33 20 31 33 3a 32 34 3a |ri Mar 1|3 13:24:|
|00000210| 31 32 20 31 39 38 37 0a | 50 41 54 48 3d 2f 62 69 |12 1987.|PATH=/bi|
|00000220| 6e 3a 2f 75 73 72 2f 62 | 69 6e 3a 2f 75 73 72 2f |n:/usr/b|in:/usr/|
|00000230| 75 63 62 20 3b 20 65 78 | 70 6f 72 74 20 50 41 54 |ucb ; ex|port PAT|
|00000240| 48 0a 65 63 68 6f 20 73 | 68 61 72 3a 20 45 78 74 |H.echo s|har: Ext|
|00000250| 72 61 63 74 69 6e 67 20 | 5c 22 62 69 6e 64 2e 63 |racting |\"bind.c|
|00000260| 5c 22 20 5c 28 31 34 39 | 36 33 20 63 68 61 72 61 |\" \(149|63 chara|
|00000270| 63 74 65 72 73 5c 29 0a | 69 66 20 74 65 73 74 20 |cters\).|if test |
|00000280| 2d 66 20 62 69 6e 64 2e | 63 20 3b 20 74 68 65 6e |-f bind.|c ; then|
|00000290| 20 0a 20 20 65 63 68 6f | 20 73 68 61 72 3a 20 57 | . echo| shar: W|
|000002a0| 69 6c 6c 20 6e 6f 74 20 | 6f 76 65 72 2d 77 72 69 |ill not |over-wri|
|000002b0| 74 65 20 65 78 69 73 74 | 69 6e 67 20 66 69 6c 65 |te exist|ing file|
|000002c0| 20 5c 22 62 69 6e 64 2e | 63 5c 22 0a 65 6c 73 65 | \"bind.|c\".else|
|000002d0| 0a 73 65 64 20 22 73 2f | 5e 58 2f 2f 22 20 3e 62 |.sed "s/|^X//" >b|
|000002e0| 69 6e 64 2e 63 20 3c 3c | 27 45 4e 44 5f 4f 46 5f |ind.c <<|'END_OF_|
|000002f0| 62 69 6e 64 2e 63 27 0a | 58 2f 2a 09 54 68 69 73 |bind.c'.|X/*.This|
|00000300| 20 66 69 6c 65 20 69 73 | 20 66 6f 72 20 66 75 6e | file is| for fun|
|00000310| 63 74 69 6f 6e 73 20 68 | 61 76 69 6e 67 20 74 6f |ctions h|aving to|
|00000320| 20 64 6f 20 77 69 74 68 | 20 6b 65 79 20 62 69 6e | do with| key bin|
|00000330| 64 69 6e 67 73 2c 0a 58 | 09 64 65 73 63 72 69 70 |dings,.X|.descrip|
|00000340| 74 69 6f 6e 73 2c 20 68 | 65 6c 70 20 63 6f 6d 6d |tions, h|elp comm|
|00000350| 61 6e 64 73 20 61 6e 64 | 20 73 74 61 72 74 75 70 |ands and| startup|
|00000360| 20 66 69 6c 65 2e 0a 58 | 0a 58 09 77 72 69 74 74 | file..X|.X.writt|
|00000370| 65 6e 20 31 31 2d 66 65 | 62 2d 38 36 20 62 79 20 |en 11-fe|b-86 by |
|00000380| 44 61 6e 69 65 6c 20 4c | 61 77 72 65 6e 63 65 0a |Daniel L|awrence.|
|00000390| 58 09 09 09 09 09 09 09 | 09 2a 2f 0a 58 0a 58 23 |X.......|.*/.X.X#|
|000003a0| 69 6e 63 6c 75 64 65 09 | 3c 73 74 64 69 6f 2e 68 |include.|<stdio.h|
|000003b0| 3e 0a 58 23 69 6e 63 6c | 75 64 65 09 22 65 73 74 |>.X#incl|ude."est|
|000003c0| 72 75 63 74 2e 68 22 0a | 58 23 69 6e 63 6c 75 64 |ruct.h".|X#includ|
|000003d0| 65 09 22 65 64 65 66 2e | 68 22 0a 58 23 69 6e 63 |e."edef.|h".X#inc|
|000003e0| 6c 75 64 65 09 22 65 70 | 61 74 68 2e 68 22 0a 58 |lude."ep|ath.h".X|
|000003f0| 0a 58 23 69 66 09 4d 45 | 47 41 4d 41 58 20 26 20 |.X#if.ME|GAMAX & |
|00000400| 53 54 35 32 30 0a 58 6f | 76 65 72 6c 61 79 09 22 |ST520.Xo|verlay."|
|00000410| 62 69 6e 64 22 0a 58 23 | 65 6e 64 69 66 0a 58 0a |bind".X#|endif.X.|
|00000420| 58 65 78 74 65 72 6e 20 | 69 6e 74 20 6d 65 74 61 |Xextern |int meta|
|00000430| 28 29 2c 20 63 65 78 28 | 29 2c 20 75 6e 61 72 67 |(), cex(|), unarg|
|00000440| 28 29 2c 20 63 74 72 6c | 67 28 29 3b 20 2f 2a 20 |(), ctrl|g(); /* |
|00000450| 64 75 6d 6d 79 20 70 72 | 65 66 69 78 20 62 69 6e |dummy pr|efix bin|
|00000460| 64 69 6e 67 20 66 75 6e | 63 74 69 6f 6e 73 20 2a |ding fun|ctions *|
|00000470| 2f 0a 58 0a 58 64 65 73 | 6b 65 79 28 66 2c 20 6e |/.X.Xdes|key(f, n|
|00000480| 29 09 2f 2a 20 64 65 73 | 63 72 69 62 65 20 74 68 |)./* des|cribe th|
|00000490| 65 20 63 6f 6d 6d 61 6e | 64 20 66 6f 72 20 61 20 |e comman|d for a |
|000004a0| 63 65 72 74 61 69 6e 20 | 6b 65 79 20 2a 2f 0a 58 |certain |key */.X|
|000004b0| 0a 58 7b 0a 58 09 72 65 | 67 69 73 74 65 72 20 69 |.X{.X.re|gister i|
|000004c0| 6e 74 20 63 3b 09 09 2f | 2a 20 63 6f 6d 6d 61 6e |nt c;../|* comman|
|000004d0| 64 20 63 68 61 72 61 63 | 74 65 72 20 74 6f 20 64 |d charac|ter to d|
|000004e0| 65 73 63 72 69 62 65 20 | 2a 2f 0a 58 09 72 65 67 |escribe |*/.X.reg|
|000004f0| 69 73 74 65 72 20 63 68 | 61 72 20 2a 70 74 72 3b |ister ch|ar *ptr;|
|00000500| 09 2f 2a 20 73 74 72 69 | 6e 67 20 70 6f 69 6e 74 |./* stri|ng point|
|00000510| 65 72 20 74 6f 20 73 63 | 61 6e 20 6f 75 74 70 75 |er to sc|an outpu|
|00000520| 74 20 73 74 72 69 6e 67 | 73 20 2a 2f 0a 58 09 72 |t string|s */.X.r|
|00000530| 65 67 69 73 74 65 72 20 | 4b 45 59 54 41 42 20 2a |egister |KEYTAB *|
|00000540| 6b 74 70 3b 09 2f 2a 20 | 70 6f 69 6e 74 65 72 20 |ktp;./* |pointer |
|00000550| 69 6e 74 6f 20 74 68 65 | 20 63 6f 6d 6d 61 6e 64 |into the| command|
|00000560| 20 74 61 62 6c 65 20 2a | 2f 0a 58 09 72 65 67 69 | table *|/.X.regi|
|00000570| 73 74 65 72 20 69 6e 74 | 20 66 6f 75 6e 64 3b 09 |ster int| found;.|
|00000580| 2f 2a 20 6d 61 74 63 68 | 65 64 20 63 6f 6d 6d 61 |/* match|ed comma|
|00000590| 6e 64 20 66 6c 61 67 20 | 2a 2f 0a 58 09 72 65 67 |nd flag |*/.X.reg|
|000005a0| 69 73 74 65 72 20 4e 42 | 49 4e 44 20 2a 6e 70 74 |ister NB|IND *npt|
|000005b0| 72 3b 09 2f 2a 20 70 6f | 69 6e 74 65 72 20 69 6e |r;./* po|inter in|
|000005c0| 74 6f 20 74 68 65 20 6e | 61 6d 65 20 62 69 6e 64 |to the n|ame bind|
|000005d0| 69 6e 67 20 74 61 62 6c | 65 20 2a 2f 0a 58 09 63 |ing tabl|e */.X.c|
|000005e0| 68 61 72 20 6f 75 74 73 | 65 71 5b 38 30 5d 3b 09 |har outs|eq[80];.|
|000005f0| 2f 2a 20 6f 75 74 70 75 | 74 20 62 75 66 66 65 72 |/* outpu|t buffer|
|00000600| 20 66 6f 72 20 63 6f 6d | 6d 61 6e 64 20 73 65 71 | for com|mand seq|
|00000610| 75 65 6e 63 65 20 2a 2f | 0a 58 0a 58 09 2f 2a 20 |uence */|.X.X./* |
|00000620| 70 72 6f 6d 70 74 20 74 | 68 65 20 75 73 65 72 20 |prompt t|he user |
|00000630| 74 6f 20 74 79 70 65 20 | 75 73 20 61 20 6b 65 79 |to type |us a key|
|00000640| 20 74 6f 20 64 65 73 63 | 72 69 62 65 20 2a 2f 0a | to desc|ribe */.|
|00000650| 58 09 6d 6c 77 72 69 74 | 65 28 22 3a 20 64 65 73 |X.mlwrit|e(": des|
|00000660| 63 72 69 62 65 2d 6b 65 | 79 20 22 29 3b 0a 58 0a |cribe-ke|y ");.X.|
|00000670| 58 09 2f 2a 20 67 65 74 | 20 74 68 65 20 63 6f 6d |X./* get| the com|
|00000680| 6d 61 6e 64 20 73 65 71 | 75 65 6e 63 65 20 74 6f |mand seq|uence to|
|00000690| 20 64 65 73 63 72 69 62 | 65 20 2a 2f 0a 58 09 63 | describ|e */.X.c|
|000006a0| 20 3d 20 67 65 74 63 6b | 65 79 28 46 41 4c 53 45 | = getck|ey(FALSE|
|000006b0| 29 3b 09 09 09 2f 2a 20 | 67 65 74 20 61 20 63 6f |);.../* |get a co|
|000006c0| 6d 6d 61 6e 64 20 73 65 | 71 75 65 6e 63 65 20 2a |mmand se|quence *|
|000006d0| 2f 0a 58 0a 58 09 2f 2a | 20 63 68 61 6e 67 65 20 |/.X.X./*| change |
|000006e0| 69 74 20 74 6f 20 73 6f | 6d 65 74 68 69 6e 67 20 |it to so|mething |
|000006f0| 77 65 20 63 61 6e 20 70 | 72 69 6e 74 20 61 73 20 |we can p|rint as |
|00000700| 77 65 6c 6c 20 2a 2f 0a | 58 09 63 6d 64 73 74 72 |well */.|X.cmdstr|
|00000710| 28 63 2c 20 26 6f 75 74 | 73 65 71 5b 30 5d 29 3b |(c, &out|seq[0]);|
|00000720| 0a 58 0a 58 09 2f 2a 20 | 61 6e 64 20 64 75 6d 70 |.X.X./* |and dump|
|00000730| 20 69 74 20 6f 75 74 20 | 2a 2f 0a 58 09 70 74 72 | it out |*/.X.ptr|
|00000740| 20 3d 20 26 6f 75 74 73 | 65 71 5b 30 5d 3b 0a 58 | = &outs|eq[0];.X|
|00000750| 09 77 68 69 6c 65 20 28 | 2a 70 74 72 29 0a 58 09 |.while (|*ptr).X.|
|00000760| 09 54 54 70 75 74 63 28 | 2a 70 74 72 2b 2b 29 3b |.TTputc(|*ptr++);|
|00000770| 0a 58 09 54 54 70 75 74 | 63 28 27 20 27 29 3b 09 |.X.TTput|c(' ');.|
|00000780| 09 2f 2a 20 73 70 61 63 | 65 20 69 74 20 6f 75 74 |./* spac|e it out|
|00000790| 20 2a 2f 0a 58 0a 58 09 | 2f 2a 20 66 69 6e 64 20 | */.X.X.|/* find |
|000007a0| 74 68 65 20 72 69 67 68 | 74 20 2d 3e 66 75 6e 63 |the righ|t ->func|
|000007b0| 74 69 6f 6e 20 2a 2f 0a | 58 09 6b 74 70 20 3d 20 |tion */.|X.ktp = |
|000007c0| 26 6b 65 79 74 61 62 5b | 30 5d 3b 0a 58 09 66 6f |&keytab[|0];.X.fo|
|000007d0| 75 6e 64 20 3d 20 46 41 | 4c 53 45 3b 0a 58 09 77 |und = FA|LSE;.X.w|
|000007e0| 68 69 6c 65 20 28 6b 74 | 70 2d 3e 6b 5f 66 70 20 |hile (kt|p->k_fp |
|000007f0| 21 3d 20 4e 55 4c 4c 29 | 20 7b 0a 58 09 09 69 66 |!= NULL)| {.X..if|
|00000800| 20 28 6b 74 70 2d 3e 6b | 5f 63 6f 64 65 20 3d 3d | (ktp->k|_code ==|
|00000810| 20 63 29 20 7b 0a 58 09 | 09 09 66 6f 75 6e 64 20 | c) {.X.|..found |
|00000820| 3d 20 54 52 55 45 3b 0a | 58 09 09 09 62 72 65 61 |= TRUE;.|X...brea|
|00000830| 6b 3b 0a 58 09 09 7d 0a | 58 09 09 2b 2b 6b 74 70 |k;.X..}.|X..++ktp|
|00000840| 3b 0a 58 09 7d 0a 58 0a | 58 09 69 66 20 28 21 66 |;.X.}.X.|X.if (!f|
|00000850| 6f 75 6e 64 29 0a 58 09 | 09 73 74 72 63 70 79 28 |ound).X.|.strcpy(|
|00000860| 6f 75 74 73 65 71 2c 22 | 4e 6f 74 20 42 6f 75 6e |outseq,"|Not Boun|
|00000870| 64 22 29 3b 0a 58 09 65 | 6c 73 65 20 7b 0a 58 09 |d");.X.e|lse {.X.|
|00000880| 09 2f 2a 20 6d 61 74 63 | 68 20 69 74 20 61 67 61 |./* matc|h it aga|
|00000890| 69 6e 73 74 20 74 68 65 | 20 6e 61 6d 65 20 62 69 |inst the| name bi|
|000008a0| 6e 64 69 6e 67 20 74 61 | 62 6c 65 20 2a 2f 0a 58 |nding ta|ble */.X|
|000008b0| 09 09 6e 70 74 72 20 3d | 20 26 6e 61 6d 65 73 5b |..nptr =| &names[|
|000008c0| 30 5d 3b 0a 58 09 09 73 | 74 72 63 70 79 28 6f 75 |0];.X..s|trcpy(ou|
|000008d0| 74 73 65 71 2c 22 5b 42 | 61 64 20 62 69 6e 64 69 |tseq,"[B|ad bindi|
|000008e0| 6e 67 5d 22 29 3b 0a 58 | 09 09 77 68 69 6c 65 20 |ng]");.X|..while |
|000008f0| 28 6e 70 74 72 2d 3e 6e | 5f 66 75 6e 63 20 21 3d |(nptr->n|_func !=|
|00000900| 20 4e 55 4c 4c 29 20 7b | 0a 58 09 09 09 69 66 20 | NULL) {|.X...if |
|00000910| 28 6e 70 74 72 2d 3e 6e | 5f 66 75 6e 63 20 3d 3d |(nptr->n|_func ==|
|00000920| 20 6b 74 70 2d 3e 6b 5f | 66 70 29 20 7b 0a 58 09 | ktp->k_|fp) {.X.|
|00000930| 09 09 09 73 74 72 63 70 | 79 28 6f 75 74 73 65 71 |...strcp|y(outseq|
|00000940| 2c 20 6e 70 74 72 2d 3e | 6e 5f 6e 61 6d 65 29 3b |, nptr->|n_name);|
|00000950| 0a 58 09 09 09 09 62 72 | 65 61 6b 3b 0a 58 09 09 |.X....br|eak;.X..|
|00000960| 09 7d 0a 58 09 09 09 2b | 2b 6e 70 74 72 3b 0a 58 |.}.X...+|+nptr;.X|
|00000970| 09 09 7d 0a 58 09 7d 0a | 58 0a 58 09 2f 2a 20 6f |..}.X.}.|X.X./* o|
|00000980| 75 74 70 75 74 20 74 68 | 65 20 63 6f 6d 6d 61 6e |utput th|e comman|
|00000990| 64 20 73 65 71 75 65 6e | 63 65 20 2a 2f 0a 58 09 |d sequen|ce */.X.|
|000009a0| 70 74 72 20 3d 20 26 6f | 75 74 73 65 71 5b 30 5d |ptr = &o|utseq[0]|
|000009b0| 3b 0a 58 09 77 68 69 6c | 65 20 28 2a 70 74 72 29 |;.X.whil|e (*ptr)|
|000009c0| 0a 58 09 09 54 54 70 75 | 74 63 28 2a 70 74 72 2b |.X..TTpu|tc(*ptr+|
|000009d0| 2b 29 3b 0a 58 7d 0a 58 | 0a 58 63 6d 64 73 74 72 |+);.X}.X|.Xcmdstr|
|000009e0| 28 63 2c 20 73 65 71 29 | 09 2f 2a 20 63 68 61 6e |(c, seq)|./* chan|
|000009f0| 67 65 20 61 20 6b 65 79 | 20 63 6f 6d 6d 61 6e 64 |ge a key| command|
|00000a00| 20 74 6f 20 61 20 73 74 | 72 69 6e 67 20 77 65 20 | to a st|ring we |
|00000a10| 63 61 6e 20 70 72 69 6e | 74 20 6f 75 74 20 2a 2f |can prin|t out */|
|00000a20| 0a 58 0a 58 69 6e 74 20 | 63 3b 09 09 2f 2a 20 73 |.X.Xint |c;../* s|
|00000a30| 65 71 75 65 6e 63 65 20 | 74 6f 20 74 72 61 6e 73 |equence |to trans|
|00000a40| 6c 61 74 65 20 2a 2f 0a | 58 63 68 61 72 20 2a 73 |late */.|Xchar *s|
|00000a50| 65 71 3b 09 2f 2a 20 64 | 65 73 74 69 6e 61 74 69 |eq;./* d|estinati|
|00000a60| 6f 6e 20 73 74 72 69 6e | 67 20 66 6f 72 20 73 65 |on strin|g for se|
|00000a70| 71 75 65 6e 63 65 20 2a | 2f 0a 58 0a 58 7b 0a 58 |quence *|/.X.X{.X|
|00000a80| 09 63 68 61 72 20 2a 70 | 74 72 3b 09 2f 2a 20 70 |.char *p|tr;./* p|
|00000a90| 6f 69 6e 74 65 72 20 69 | 6e 74 6f 20 63 75 72 72 |ointer i|nto curr|
|00000aa0| 65 6e 74 20 70 6f 73 69 | 74 69 6f 6e 20 69 6e 20 |ent posi|tion in |
|00000ab0| 73 65 71 75 65 6e 63 65 | 20 2a 2f 0a 58 0a 58 09 |sequence| */.X.X.|
|00000ac0| 70 74 72 20 3d 20 73 65 | 71 3b 0a 58 0a 58 09 2f |ptr = se|q;.X.X./|
|00000ad0| 2a 20 61 70 70 6c 79 20 | 6d 65 74 61 20 73 65 71 |* apply |meta seq|
|00000ae0| 75 65 6e 63 65 20 69 66 | 20 6e 65 65 64 65 64 20 |uence if| needed |
|00000af0| 2a 2f 0a 58 09 69 66 20 | 28 63 20 26 20 4d 45 54 |*/.X.if |(c & MET|
|00000b00| 41 29 20 7b 0a 58 09 09 | 2a 70 74 72 2b 2b 20 3d |A) {.X..|*ptr++ =|
|00000b10| 20 27 4d 27 3b 0a 58 09 | 09 2a 70 74 72 2b 2b 20 | 'M';.X.|.*ptr++ |
|00000b20| 3d 20 27 2d 27 3b 0a 58 | 09 7d 0a 58 0a 58 09 2f |= '-';.X|.}.X.X./|
|00000b30| 2a 20 61 70 70 6c 79 20 | 5e 58 20 73 65 71 75 65 |* apply |^X seque|
|00000b40| 6e 63 65 20 69 66 20 6e | 65 65 64 65 64 20 2a 2f |nce if n|eeded */|
|00000b50| 0a 58 09 69 66 20 28 63 | 20 26 20 43 54 4c 58 29 |.X.if (c| & CTLX)|
|00000b60| 20 7b 0a 58 09 09 2a 70 | 74 72 2b 2b 20 3d 20 27 | {.X..*p|tr++ = '|
|00000b70| 5e 27 3b 0a 58 09 09 2a | 70 74 72 2b 2b 20 3d 20 |^';.X..*|ptr++ = |
|00000b80| 27 58 27 3b 0a 58 09 7d | 0a 58 0a 58 09 2f 2a 20 |'X';.X.}|.X.X./* |
|00000b90| 61 70 70 6c 79 20 53 50 | 45 43 20 73 65 71 75 65 |apply SP|EC seque|
|00000ba0| 6e 63 65 20 69 66 20 6e | 65 65 64 65 64 20 2a 2f |nce if n|eeded */|
|00000bb0| 0a 58 09 69 66 20 28 63 | 20 26 20 53 50 45 43 29 |.X.if (c| & SPEC)|
|00000bc0| 20 7b 0a 58 09 09 2a 70 | 74 72 2b 2b 20 3d 20 27 | {.X..*p|tr++ = '|
|00000bd0| 46 27 3b 0a 58 09 09 2a | 70 74 72 2b 2b 20 3d 20 |F';.X..*|ptr++ = |
|00000be0| 27 4e 27 3b 0a 58 09 7d | 0a 58 0a 58 09 2f 2a 20 |'N';.X.}|.X.X./* |
|00000bf0| 61 70 70 6c 79 20 63 6f | 6e 74 72 6f 6c 20 73 65 |apply co|ntrol se|
|00000c00| 71 75 65 6e 63 65 20 69 | 66 20 6e 65 65 64 65 64 |quence i|f needed|
|00000c10| 20 2a 2f 0a 58 09 69 66 | 20 28 63 20 26 20 43 54 | */.X.if| (c & CT|
|00000c20| 52 4c 29 20 7b 0a 58 09 | 09 2a 70 74 72 2b 2b 20 |RL) {.X.|.*ptr++ |
|00000c30| 3d 20 27 5e 27 3b 0a 58 | 09 7d 0a 58 0a 58 09 63 |= '^';.X|.}.X.X.c|
|00000c40| 20 3d 20 63 20 26 20 32 | 35 35 3b 09 2f 2a 20 73 | = c & 2|55;./* s|
|00000c50| 74 72 69 70 20 74 68 65 | 20 70 72 65 66 69 78 65 |trip the| prefixe|
|00000c60| 73 20 2a 2f 0a 58 0a 58 | 09 2f 2a 20 61 6e 64 20 |s */.X.X|./* and |
|00000c70| 6f 75 74 70 75 74 20 74 | 68 65 20 66 69 6e 61 6c |output t|he final|
|00000c80| 20 73 65 71 75 65 6e 63 | 65 20 2a 2f 0a 58 0a 58 | sequenc|e */.X.X|
|00000c90| 09 2a 70 74 72 2b 2b 20 | 3d 20 63 3b 0a 58 09 2a |.*ptr++ |= c;.X.*|
|00000ca0| 70 74 72 20 3d 20 30 3b | 09 2f 2a 20 74 65 72 6d |ptr = 0;|./* term|
|00000cb0| 69 6e 61 74 65 20 74 68 | 65 20 73 74 72 69 6e 67 |inate th|e string|
|00000cc0| 20 2a 2f 0a 58 7d 0a 58 | 0a 58 68 65 6c 70 28 66 | */.X}.X|.Xhelp(f|
|00000cd0| 2c 20 6e 29 09 2f 2a 20 | 67 69 76 65 20 6d 65 20 |, n)./* |give me |
|00000ce0| 73 6f 6d 65 20 68 65 6c | 70 21 21 21 21 0a 58 09 |some hel|p!!!!.X.|
|00000cf0| 09 20 20 20 62 72 69 6e | 67 20 75 70 20 61 20 66 |. brin|g up a f|
|00000d00| 61 6b 65 20 62 75 66 66 | 65 72 20 61 6e 64 20 72 |ake buff|er and r|
|00000d10| 65 61 64 20 74 68 65 20 | 68 65 6c 70 20 66 69 6c |ead the |help fil|
|00000d20| 65 0a 58 09 09 20 20 20 | 69 6e 74 6f 20 69 74 20 |e.X.. |into it |
|00000d30| 77 69 74 68 20 76 69 65 | 77 20 6d 6f 64 65 09 09 |with vie|w mode..|
|00000d40| 09 2a 2f 0a 58 7b 0a 58 | 09 72 65 67 69 73 74 65 |.*/.X{.X|.registe|
|00000d50| 72 20 57 49 4e 44 4f 57 | 20 2a 77 70 3b 09 2f 2a |r WINDOW| *wp;./*|
|00000d60| 20 73 63 61 6e 69 6e 67 | 20 70 6f 69 6e 74 65 72 | scaning| pointer|
|00000d70| 20 74 6f 20 77 69 6e 64 | 6f 77 73 20 2a 2f 0a 58 | to wind|ows */.X|
|00000d80| 09 72 65 67 69 73 74 65 | 72 20 42 55 46 46 45 52 |.registe|r BUFFER|
|00000d90| 20 2a 62 70 3b 09 2f 2a | 20 62 75 66 66 65 72 20 | *bp;./*| buffer |
|00000da0| 70 6f 69 6e 74 65 72 20 | 74 6f 20 68 65 6c 70 20 |pointer |to help |
|00000db0| 2a 2f 0a 58 09 63 68 61 | 72 20 2a 66 6e 61 6d 65 |*/.X.cha|r *fname|
|00000dc0| 3b 09 09 2f 2a 20 70 74 | 72 20 74 6f 20 66 69 6c |;../* pt|r to fil|
|00000dd0| 65 20 72 65 74 75 72 6e | 65 64 20 62 79 20 66 6c |e return|ed by fl|
|00000de0| 6f 6f 6b 28 29 20 2a 2f | 0a 58 0a 58 09 2f 2a 20 |ook() */|.X.X./* |
|00000df0| 66 69 72 73 74 20 63 68 | 65 63 6b 20 69 66 20 77 |first ch|eck if w|
|00000e00| 65 20 61 72 65 20 61 6c | 72 65 61 64 79 20 68 65 |e are al|ready he|
|00000e10| 72 65 20 2a 2f 0a 58 09 | 62 70 20 3d 20 62 66 69 |re */.X.|bp = bfi|
|00000e20| 6e 64 28 22 65 6d 61 63 | 73 2e 68 6c 70 22 2c 20 |nd("emac|s.hlp", |
|00000e30| 46 41 4c 53 45 2c 20 42 | 46 49 4e 56 53 29 3b 0a |FALSE, B|FINVS);.|
|00000e40| 58 0a 58 09 69 66 20 28 | 62 70 20 3d 3d 20 4e 55 |X.X.if (|bp == NU|
|00000e50| 4c 4c 29 20 7b 0a 58 09 | 09 66 6e 61 6d 65 20 3d |LL) {.X.|.fname =|
|00000e60| 20 66 6c 6f 6f 6b 28 70 | 61 74 68 6e 61 6d 65 5b | flook(p|athname[|
|00000e70| 31 5d 2c 20 46 41 4c 53 | 45 29 3b 0a 58 09 09 69 |1], FALS|E);.X..i|
|00000e80| 66 20 28 66 6e 61 6d 65 | 20 3d 3d 20 4e 55 4c 4c |f (fname| == NULL|
|00000e90| 29 20 7b 0a 58 09 09 09 | 6d 6c 77 72 69 74 65 28 |) {.X...|mlwrite(|
|00000ea0| 22 5b 48 65 6c 70 20 66 | 69 6c 65 20 69 73 20 6e |"[Help f|ile is n|
|00000eb0| 6f 74 20 6f 6e 6c 69 6e | 65 5d 22 29 3b 0a 58 09 |ot onlin|e]");.X.|
|00000ec0| 09 09 72 65 74 75 72 6e | 28 46 41 4c 53 45 29 3b |..return|(FALSE);|
|00000ed0| 0a 58 09 09 7d 0a 58 09 | 7d 0a 58 0a 58 09 2f 2a |.X..}.X.|}.X.X./*|
|00000ee0| 20 73 70 6c 69 74 20 74 | 68 65 20 63 75 72 72 65 | split t|he curre|
|00000ef0| 6e 74 20 77 69 6e 64 6f | 77 20 74 6f 20 6d 61 6b |nt windo|w to mak|
|00000f00| 65 20 72 6f 6f 6d 20 66 | 6f 72 20 74 68 65 20 68 |e room f|or the h|
|00000f10| 65 6c 70 20 73 74 75 66 | 66 20 2a 2f 0a 58 09 69 |elp stuf|f */.X.i|
|00000f20| 66 20 28 73 70 6c 69 74 | 77 69 6e 64 28 46 41 4c |f (split|wind(FAL|
|00000f30| 53 45 2c 20 31 29 20 3d | 3d 20 46 41 4c 53 45 29 |SE, 1) =|= FALSE)|
|00000f40| 0a 58 09 09 09 72 65 74 | 75 72 6e 28 46 41 4c 53 |.X...ret|urn(FALS|
|00000f50| 45 29 3b 0a 58 0a 58 09 | 69 66 20 28 62 70 20 3d |E);.X.X.|if (bp =|
|00000f60| 3d 20 4e 55 4c 4c 29 20 | 7b 0a 58 09 09 2f 2a 20 |= NULL) |{.X../* |
|00000f70| 61 6e 64 20 72 65 61 64 | 20 74 68 65 20 73 74 75 |and read| the stu|
|00000f80| 66 66 20 69 6e 20 2a 2f | 0a 58 09 09 69 66 20 28 |ff in */|.X..if (|
|00000f90| 67 65 74 66 69 6c 65 28 | 66 6e 61 6d 65 2c 20 46 |getfile(|fname, F|
|00000fa0| 41 4c 53 45 29 20 3d 3d | 20 46 41 4c 53 45 29 0a |ALSE) ==| FALSE).|
|00000fb0| 58 09 09 09 72 65 74 75 | 72 6e 28 46 41 4c 53 45 |X...retu|rn(FALSE|
|00000fc0| 29 3b 0a 58 09 7d 20 65 | 6c 73 65 0a 58 09 09 73 |);.X.} e|lse.X..s|
|00000fd0| 77 62 75 66 66 65 72 28 | 62 70 29 3b 0a 58 0a 58 |wbuffer(|bp);.X.X|
|00000fe0| 09 2f 2a 20 6d 61 6b 65 | 20 74 68 69 73 20 77 69 |./* make| this wi|
|00000ff0| 6e 64 6f 77 20 69 6e 20 | 56 49 45 57 20 6d 6f 64 |ndow in |VIEW mod|
|00001000| 65 2c 20 75 70 64 61 74 | 65 20 61 6c 6c 20 6d 6f |e, updat|e all mo|
|00001010| 64 65 20 6c 69 6e 65 73 | 20 2a 2f 0a 58 09 63 75 |de lines| */.X.cu|
|00001020| 72 77 70 2d 3e 77 5f 62 | 75 66 70 2d 3e 62 5f 6d |rwp->w_b|ufp->b_m|
|00001030| 6f 64 65 20 7c 3d 20 4d | 44 56 49 45 57 3b 0a 58 |ode |= M|DVIEW;.X|
|00001040| 09 63 75 72 77 70 2d 3e | 77 5f 62 75 66 70 2d 3e |.curwp->|w_bufp->|
|00001050| 62 5f 66 6c 61 67 20 7c | 3d 20 42 46 49 4e 56 53 |b_flag ||= BFINVS|
|00001060| 3b 0a 58 09 77 70 20 3d | 20 77 68 65 61 64 70 3b |;.X.wp =| wheadp;|
|00001070| 0a 58 09 77 68 69 6c 65 | 20 28 77 70 20 21 3d 20 |.X.while| (wp != |
|00001080| 4e 55 4c 4c 29 20 7b 0a | 58 09 09 77 70 2d 3e 77 |NULL) {.|X..wp->w|
|00001090| 5f 66 6c 61 67 20 7c 3d | 20 57 46 4d 4f 44 45 3b |_flag |=| WFMODE;|
|000010a0| 0a 58 09 09 77 70 20 3d | 20 77 70 2d 3e 77 5f 77 |.X..wp =| wp->w_w|
|000010b0| 6e 64 70 3b 0a 58 09 7d | 0a 58 09 72 65 74 75 72 |ndp;.X.}|.X.retur|
|000010c0| 6e 28 54 52 55 45 29 3b | 0a 58 7d 0a 58 0a 58 69 |n(TRUE);|.X}.X.Xi|
|000010d0| 6e 74 20 28 2a 66 6e 63 | 6d 61 74 63 68 28 66 6e |nt (*fnc|match(fn|
|000010e0| 61 6d 65 29 29 28 29 20 | 2f 2a 20 6d 61 74 63 68 |ame))() |/* match|
|000010f0| 20 66 6e 61 6d 65 20 74 | 6f 20 61 20 66 75 6e 63 | fname t|o a func|
|00001100| 74 69 6f 6e 20 69 6e 20 | 74 68 65 20 6e 61 6d 65 |tion in |the name|
|00001110| 73 20 74 61 62 6c 65 0a | 58 09 09 09 20 20 20 20 |s table.|X... |
|00001120| 61 6e 64 20 72 65 74 75 | 72 6e 20 61 6e 79 20 6d |and retu|rn any m|
|00001130| 61 74 63 68 20 6f 72 20 | 4e 55 4c 4c 20 69 66 20 |atch or |NULL if |
|00001140| 6e 6f 6e 65 09 09 2a 2f | 0a 58 0a 58 63 68 61 72 |none..*/|.X.Xchar|
|00001150| 20 2a 66 6e 61 6d 65 3b | 09 2f 2a 20 6e 61 6d 65 | *fname;|./* name|
|00001160| 20 74 6f 20 61 74 74 65 | 6d 70 74 20 74 6f 20 6d | to atte|mpt to m|
|00001170| 61 74 63 68 20 2a 2f 0a | 58 0a 58 7b 0a 58 09 72 |atch */.|X.X{.X.r|
|00001180| 65 67 69 73 74 65 72 20 | 4e 42 49 4e 44 20 2a 66 |egister |NBIND *f|
|00001190| 66 70 3b 09 2f 2a 20 70 | 6f 69 6e 74 65 72 20 74 |fp;./* p|ointer t|
|000011a0| 6f 20 65 6e 74 72 79 20 | 69 6e 20 6e 61 6d 65 20 |o entry |in name |
|000011b0| 62 69 6e 64 69 6e 67 20 | 74 61 62 6c 65 20 2a 2f |binding |table */|
|000011c0| 0a 58 0a 58 09 2f 2a 20 | 73 63 61 6e 20 74 68 72 |.X.X./* |scan thr|
|000011d0| 6f 75 67 68 20 74 68 65 | 20 74 61 62 6c 65 2c 20 |ough the| table, |
|000011e0| 72 65 74 75 72 6e 69 6e | 67 20 61 6e 79 20 6d 61 |returnin|g any ma|
|000011f0| 74 63 68 20 2a 2f 0a 58 | 09 66 66 70 20 3d 20 26 |tch */.X|.ffp = &|
|00001200| 6e 61 6d 65 73 5b 30 5d | 3b 0a 58 09 77 68 69 6c |names[0]|;.X.whil|
|00001210| 65 20 28 66 66 70 2d 3e | 6e 5f 66 75 6e 63 20 21 |e (ffp->|n_func !|
|00001220| 3d 20 4e 55 4c 4c 29 20 | 7b 0a 58 09 09 69 66 20 |= NULL) |{.X..if |
|00001230| 28 73 74 72 63 6d 70 28 | 66 6e 61 6d 65 2c 20 66 |(strcmp(|fname, f|
|00001240| 66 70 2d 3e 6e 5f 6e 61 | 6d 65 29 20 3d 3d 20 30 |fp->n_na|me) == 0|
|00001250| 29 0a 58 09 09 09 72 65 | 74 75 72 6e 28 66 66 70 |).X...re|turn(ffp|
|00001260| 2d 3e 6e 5f 66 75 6e 63 | 29 3b 0a 58 09 09 2b 2b |->n_func|);.X..++|
|00001270| 66 66 70 3b 0a 58 09 7d | 0a 58 09 72 65 74 75 72 |ffp;.X.}|.X.retur|
|00001280| 6e 28 4e 55 4c 4c 29 3b | 0a 58 7d 0a 58 0a 58 2f |n(NULL);|.X}.X.X/|
|00001290| 2a 20 62 69 6e 64 74 6f | 6b 65 79 3a 09 61 64 64 |* bindto|key:.add|
|000012a0| 20 61 20 6e 65 77 20 6b | 65 79 20 74 6f 20 74 68 | a new k|ey to th|
|000012b0| 65 20 6b 65 79 20 62 69 | 6e 64 69 6e 67 20 74 61 |e key bi|nding ta|
|000012c0| 62 6c 65 09 09 2a 2f 0a | 58 0a 58 62 69 6e 64 74 |ble..*/.|X.Xbindt|
|000012d0| 6f 6b 65 79 28 66 2c 20 | 6e 29 0a 58 0a 58 69 6e |okey(f, |n).X.Xin|
|000012e0| 74 20 66 2c 20 6e 3b 09 | 2f 2a 20 63 6f 6d 6d 61 |t f, n;.|/* comma|
|000012f0| 6e 64 20 61 72 67 75 6d | 65 6e 74 73 20 5b 49 47 |nd argum|ents [IG|
|00001300| 4e 4f 52 45 44 5d 20 2a | 2f 0a 58 0a 58 7b 0a 58 |NORED] *|/.X.X{.X|
|00001310| 09 72 65 67 69 73 74 65 | 72 20 69 6e 74 20 63 3b |.registe|r int c;|
|00001320| 09 09 2f 2a 20 63 6f 6d | 6d 61 6e 64 20 6b 65 79 |../* com|mand key|
|00001330| 20 74 6f 20 62 69 6e 64 | 20 2a 2f 0a 58 09 72 65 | to bind| */.X.re|
|00001340| 67 69 73 74 65 72 20 28 | 2a 6b 66 75 6e 63 29 28 |gister (|*kfunc)(|
|00001350| 29 3b 09 2f 2a 20 70 74 | 72 20 74 6f 20 74 68 65 |);./* pt|r to the|
|00001360| 20 72 65 71 75 65 78 74 | 65 64 20 66 75 6e 63 74 | requext|ed funct|
|00001370| 69 6f 6e 20 74 6f 20 62 | 69 6e 64 20 74 6f 20 2a |ion to b|ind to *|
|00001380| 2f 0a 58 09 72 65 67 69 | 73 74 65 72 20 63 68 61 |/.X.regi|ster cha|
|00001390| 72 20 2a 70 74 72 3b 09 | 2f 2a 20 70 74 72 20 74 |r *ptr;.|/* ptr t|
|000013a0| 6f 20 64 75 6d 70 20 6f | 75 74 20 69 6e 70 75 74 |o dump o|ut input|
|000013b0| 20 6b 65 79 20 73 74 72 | 69 6e 67 20 2a 2f 0a 58 | key str|ing */.X|
|000013c0| 09 72 65 67 69 73 74 65 | 72 20 4b 45 59 54 41 42 |.registe|r KEYTAB|
|000013d0| 20 2a 6b 74 70 3b 09 2f | 2a 20 70 6f 69 6e 74 65 | *ktp;./|* pointe|
|000013e0| 72 20 69 6e 74 6f 20 74 | 68 65 20 63 6f 6d 6d 61 |r into t|he comma|
|000013f0| 6e 64 20 74 61 62 6c 65 | 20 2a 2f 0a 58 09 72 65 |nd table| */.X.re|
|00001400| 67 69 73 74 65 72 20 69 | 6e 74 20 66 6f 75 6e 64 |gister i|nt found|
|00001410| 3b 09 2f 2a 20 6d 61 74 | 63 68 65 64 20 63 6f 6d |;./* mat|ched com|
|00001420| 6d 61 6e 64 20 66 6c 61 | 67 20 2a 2f 0a 58 09 63 |mand fla|g */.X.c|
|00001430| 68 61 72 20 6f 75 74 73 | 65 71 5b 38 30 5d 3b 09 |har outs|eq[80];.|
|00001440| 2f 2a 20 6f 75 74 70 75 | 74 20 62 75 66 66 65 72 |/* outpu|t buffer|
|00001450| 20 66 6f 72 20 6b 65 79 | 73 74 72 6f 6b 65 20 73 | for key|stroke s|
|00001460| 65 71 75 65 6e 63 65 20 | 2a 2f 0a 58 09 69 6e 74 |equence |*/.X.int|
|00001470| 20 28 2a 67 65 74 6e 61 | 6d 65 28 29 29 28 29 3b | (*getna|me())();|
|00001480| 0a 58 0a 58 09 2f 2a 20 | 70 72 6f 6d 70 74 20 74 |.X.X./* |prompt t|
|00001490| 68 65 20 75 73 65 72 20 | 74 6f 20 74 79 70 65 20 |he user |to type |
|000014a0| 69 6e 20 61 20 6b 65 79 | 20 74 6f 20 62 69 6e 64 |in a key| to bind|
|000014b0| 20 2a 2f 0a 58 09 6d 6c | 77 72 69 74 65 28 22 3a | */.X.ml|write(":|
|000014c0| 20 62 69 6e 64 2d 74 6f | 2d 6b 65 79 20 22 29 3b | bind-to|-key ");|
|000014d0| 0a 58 0a 58 09 2f 2a 20 | 67 65 74 20 74 68 65 20 |.X.X./* |get the |
|000014e0| 66 75 6e 63 74 69 6f 6e | 20 6e 61 6d 65 20 74 6f |function| name to|
|000014f0| 20 62 69 6e 64 20 69 74 | 20 74 6f 20 2a 2f 0a 58 | bind it| to */.X|
|00001500| 09 6b 66 75 6e 63 20 3d | 20 67 65 74 6e 61 6d 65 |.kfunc =| getname|
|00001510| 28 29 3b 0a 58 09 69 66 | 20 28 6b 66 75 6e 63 20 |();.X.if| (kfunc |
|00001520| 3d 3d 20 4e 55 4c 4c 29 | 20 7b 0a 58 09 09 6d 6c |== NULL)| {.X..ml|
|00001530| 77 72 69 74 65 28 22 5b | 4e 6f 20 73 75 63 68 20 |write("[|No such |
|00001540| 66 75 6e 63 74 69 6f 6e | 5d 22 29 3b 0a 58 09 09 |function|]");.X..|
|00001550| 72 65 74 75 72 6e 28 46 | 41 4c 53 45 29 3b 0a 58 |return(F|ALSE);.X|
|00001560| 09 7d 0a 58 09 54 54 70 | 75 74 63 28 27 20 27 29 |.}.X.TTp|utc(' ')|
|00001570| 3b 09 09 2f 2a 20 73 70 | 61 63 65 20 69 74 20 6f |;../* sp|ace it o|
|00001580| 75 74 20 2a 2f 0a 58 09 | 54 54 66 6c 75 73 68 28 |ut */.X.|TTflush(|
|00001590| 29 3b 0a 58 0a 58 09 2f | 2a 20 67 65 74 20 74 68 |);.X.X./|* get th|
|000015a0| 65 20 63 6f 6d 6d 61 6e | 64 20 73 65 71 75 65 6e |e comman|d sequen|
|000015b0| 63 65 20 74 6f 20 62 69 | 6e 64 20 2a 2f 0a 58 09 |ce to bi|nd */.X.|
|000015c0| 63 20 3d 20 67 65 74 63 | 6b 65 79 28 28 6b 66 75 |c = getc|key((kfu|
|000015d0| 6e 63 20 3d 3d 20 6d 65 | 74 61 29 20 7c 7c 20 28 |nc == me|ta) || (|
|000015e0| 6b 66 75 6e 63 20 3d 3d | 20 63 65 78 29 20 7c 7c |kfunc ==| cex) |||
|000015f0| 0a 58 09 20 20 20 20 20 | 20 20 20 20 20 20 20 28 |.X. | (|
|00001600| 6b 66 75 6e 63 20 3d 3d | 20 75 6e 61 72 67 29 20 |kfunc ==| unarg) |
|00001610| 7c 7c 20 28 6b 66 75 6e | 63 20 3d 3d 20 63 74 72 ||| (kfun|c == ctr|
|00001620| 6c 67 29 29 3b 0a 58 0a | 58 09 2f 2a 20 63 68 61 |lg));.X.|X./* cha|
|00001630| 6e 67 65 20 69 74 20 74 | 6f 20 73 6f 6d 65 74 68 |nge it t|o someth|
|00001640| 69 6e 67 20 77 65 20 63 | 61 6e 20 70 72 69 6e 74 |ing we c|an print|
|00001650| 20 61 73 20 77 65 6c 6c | 20 2a 2f 0a 58 09 63 6d | as well| */.X.cm|
|00001660| 64 73 74 72 28 63 2c 20 | 26 6f 75 74 73 65 71 5b |dstr(c, |&outseq[|
|00001670| 30 5d 29 3b 0a 58 0a 58 | 09 2f 2a 20 61 6e 64 20 |0]);.X.X|./* and |
|00001680| 64 75 6d 70 20 69 74 20 | 6f 75 74 20 2a 2f 0a 58 |dump it |out */.X|
|00001690| 09 70 74 72 20 3d 20 26 | 6f 75 74 73 65 71 5b 30 |.ptr = &|outseq[0|
|000016a0| 5d 3b 0a 58 09 77 68 69 | 6c 65 20 28 2a 70 74 72 |];.X.whi|le (*ptr|
|000016b0| 29 0a 58 09 09 54 54 70 | 75 74 63 28 2a 70 74 72 |).X..TTp|utc(*ptr|
|000016c0| 2b 2b 29 3b 0a 58 0a 58 | 09 2f 2a 20 69 66 20 74 |++);.X.X|./* if t|
|000016d0| 68 65 20 66 75 6e 63 74 | 69 6f 6e 20 69 73 20 61 |he funct|ion is a|
|000016e0| 20 70 72 65 66 69 78 20 | 6b 65 79 20 2a 2f 0a 58 | prefix |key */.X|
|000016f0| 09 69 66 20 28 6b 66 75 | 6e 63 20 3d 3d 20 6d 65 |.if (kfu|nc == me|
|00001700| 74 61 20 7c 7c 20 6b 66 | 75 6e 63 20 3d 3d 20 63 |ta || kf|unc == c|
|00001710| 65 78 20 7c 7c 0a 58 09 | 20 20 20 20 6b 66 75 6e |ex ||.X.| kfun|
|00001720| 63 20 3d 3d 20 75 6e 61 | 72 67 20 7c 7c 20 6b 66 |c == una|rg || kf|
|00001730| 75 6e 63 20 3d 3d 20 63 | 74 72 6c 67 29 20 7b 0a |unc == c|trlg) {.|
|00001740| 58 0a 58 09 09 2f 2a 20 | 73 65 61 72 63 68 20 66 |X.X../* |search f|
|00001750| 6f 72 20 61 6e 20 65 78 | 69 73 74 69 6e 67 20 62 |or an ex|isting b|
|00001760| 69 6e 64 69 6e 67 20 66 | 6f 72 20 74 68 65 20 70 |inding f|or the p|
|00001770| 72 65 66 69 78 20 6b 65 | 79 20 2a 2f 0a 58 09 09 |refix ke|y */.X..|
|00001780| 6b 74 70 20 3d 20 26 6b | 65 79 74 61 62 5b 30 5d |ktp = &k|eytab[0]|
|00001790| 3b 0a 58 09 09 66 6f 75 | 6e 64 20 3d 20 46 41 4c |;.X..fou|nd = FAL|
|000017a0| 53 45 3b 0a 58 09 09 77 | 68 69 6c 65 20 28 6b 74 |SE;.X..w|hile (kt|
|000017b0| 70 2d 3e 6b 5f 66 70 20 | 21 3d 20 4e 55 4c 4c 29 |p->k_fp |!= NULL)|
|000017c0| 20 7b 0a 58 09 09 09 69 | 66 20 28 6b 74 70 2d 3e | {.X...i|f (ktp->|
|000017d0| 6b 5f 66 70 20 3d 3d 20 | 6b 66 75 6e 63 29 0a 58 |k_fp == |kfunc).X|
|000017e0| 09 09 09 09 75 6e 62 69 | 6e 64 63 68 61 72 28 6b |....unbi|ndchar(k|
|000017f0| 74 70 2d 3e 6b 5f 63 6f | 64 65 29 3b 0a 58 09 09 |tp->k_co|de);.X..|
|00001800| 09 2b 2b 6b 74 70 3b 0a | 58 09 09 7d 0a 58 0a 58 |.++ktp;.|X..}.X.X|
|00001810| 09 09 2f 2a 20 72 65 73 | 65 74 20 74 68 65 20 61 |../* res|et the a|
|00001820| 70 70 72 6f 70 72 69 61 | 74 65 20 67 6c 6f 62 61 |ppropria|te globa|
|00001830| 6c 20 70 72 65 66 69 78 | 20 76 61 72 69 61 62 6c |l prefix| variabl|
|00001840| 65 20 2a 2f 0a 58 09 09 | 69 66 20 28 6b 66 75 6e |e */.X..|if (kfun|
|00001850| 63 20 3d 3d 20 6d 65 74 | 61 29 0a 58 09 09 09 6d |c == met|a).X...m|
|00001860| 65 74 61 63 20 3d 20 63 | 3b 0a 58 09 09 69 66 20 |etac = c|;.X..if |
|00001870| 28 6b 66 75 6e 63 20 3d | 3d 20 63 65 78 29 0a 58 |(kfunc =|= cex).X|
|00001880| 09 09 09 63 74 6c 78 63 | 20 3d 20 63 3b 0a 58 09 |...ctlxc| = c;.X.|
|00001890| 09 69 66 20 28 6b 66 75 | 6e 63 20 3d 3d 20 75 6e |.if (kfu|nc == un|
|000018a0| 61 72 67 29 0a 58 09 09 | 09 72 65 70 74 63 20 3d |arg).X..|.reptc =|
|000018b0| 20 63 3b 0a 58 09 09 69 | 66 20 28 6b 66 75 6e 63 | c;.X..i|f (kfunc|
|000018c0| 20 3d 3d 20 63 74 72 6c | 67 29 0a 58 09 09 09 61 | == ctrl|g).X...a|
|000018d0| 62 6f 72 74 63 20 3d 20 | 63 3b 0a 58 09 7d 0a 58 |bortc = |c;.X.}.X|
|000018e0| 0a 58 09 2f 2a 20 73 65 | 61 72 63 68 20 74 68 65 |.X./* se|arch the|
|000018f0| 20 74 61 62 6c 65 20 74 | 6f 20 73 65 65 20 69 66 | table t|o see if|
|00001900| 20 69 74 20 65 78 69 73 | 74 73 20 2a 2f 0a 58 09 | it exis|ts */.X.|
|00001910| 6b 74 70 20 3d 20 26 6b | 65 79 74 61 62 5b 30 5d |ktp = &k|eytab[0]|
|00001920| 3b 0a 58 09 66 6f 75 6e | 64 20 3d 20 46 41 4c 53 |;.X.foun|d = FALS|
|00001930| 45 3b 0a 58 09 77 68 69 | 6c 65 20 28 6b 74 70 2d |E;.X.whi|le (ktp-|
|00001940| 3e 6b 5f 66 70 20 21 3d | 20 4e 55 4c 4c 29 20 7b |>k_fp !=| NULL) {|
|00001950| 0a 58 09 09 69 66 20 28 | 6b 74 70 2d 3e 6b 5f 63 |.X..if (|ktp->k_c|
|00001960| 6f 64 65 20 3d 3d 20 63 | 29 20 7b 0a 58 09 09 09 |ode == c|) {.X...|
|00001970| 66 6f 75 6e 64 20 3d 20 | 54 52 55 45 3b 0a 58 09 |found = |TRUE;.X.|
|00001980| 09 09 62 72 65 61 6b 3b | 0a 58 09 09 7d 0a 58 09 |..break;|.X..}.X.|
|00001990| 09 2b 2b 6b 74 70 3b 0a | 58 09 7d 0a 58 0a 58 09 |.++ktp;.|X.}.X.X.|
|000019a0| 69 66 20 28 66 6f 75 6e | 64 29 20 7b 09 2f 2a 20 |if (foun|d) {./* |
|000019b0| 69 74 20 65 78 69 73 74 | 73 2c 20 6a 75 73 74 20 |it exist|s, just |
|000019c0| 63 68 61 6e 67 65 20 69 | 74 20 74 68 65 6e 20 2a |change i|t then *|
|000019d0| 2f 0a 58 09 09 6b 74 70 | 2d 3e 6b 5f 66 70 20 3d |/.X..ktp|->k_fp =|
|000019e0| 20 6b 66 75 6e 63 3b 0a | 58 09 7d 20 65 6c 73 65 | kfunc;.|X.} else|
|000019f0| 20 7b 09 2f 2a 20 6f 74 | 68 65 72 77 69 73 65 20 | {./* ot|herwise |
|00001a00| 77 65 20 6e 65 65 64 20 | 74 6f 20 61 64 64 20 69 |we need |to add i|
|00001a10| 74 20 74 6f 20 74 68 65 | 20 65 6e 64 20 2a 2f 0a |t to the| end */.|
|00001a20| 58 09 09 2f 2a 20 69 66 | 20 77 65 20 72 75 6e 20 |X../* if| we run |
|00001a30| 6f 75 74 20 6f 66 20 62 | 69 6e 64 69 6e 67 20 72 |out of b|inding r|
|00001a40| 6f 6f 6d 2c 20 62 69 74 | 63 68 20 2a 2f 0a 58 09 |oom, bit|ch */.X.|
|00001a50| 09 69 66 20 28 6b 74 70 | 20 3e 3d 20 26 6b 65 79 |.if (ktp| >= &key|
|00001a60| 74 61 62 5b 4e 42 49 4e | 44 53 5d 29 20 7b 0a 58 |tab[NBIN|DS]) {.X|
|00001a70| 09 09 09 6d 6c 77 72 69 | 74 65 28 22 42 69 6e 64 |...mlwri|te("Bind|
|00001a80| 69 6e 67 20 74 61 62 6c | 65 20 46 55 4c 4c 21 22 |ing tabl|e FULL!"|
|00001a90| 29 3b 0a 58 09 09 09 72 | 65 74 75 72 6e 28 46 41 |);.X...r|eturn(FA|
|00001aa0| 4c 53 45 29 3b 0a 58 09 | 09 7d 0a 58 0a 58 09 09 |LSE);.X.|.}.X.X..|
|00001ab0| 6b 74 70 2d 3e 6b 5f 63 | 6f 64 65 20 3d 20 63 3b |ktp->k_c|ode = c;|
|00001ac0| 09 2f 2a 20 61 64 64 20 | 6b 65 79 63 6f 64 65 20 |./* add |keycode |
|00001ad0| 2a 2f 0a 58 09 09 6b 74 | 70 2d 3e 6b 5f 66 70 20 |*/.X..kt|p->k_fp |
|00001ae0| 3d 20 6b 66 75 6e 63 3b | 09 2f 2a 20 61 6e 64 20 |= kfunc;|./* and |
|00001af0| 74 68 65 20 66 75 6e 63 | 74 69 6f 6e 20 70 6f 69 |the func|tion poi|
|00001b00| 6e 74 65 72 20 2a 2f 0a | 58 09 09 2b 2b 6b 74 70 |nter */.|X..++ktp|
|00001b10| 3b 09 09 09 2f 2a 20 61 | 6e 64 20 6d 61 6b 65 20 |;.../* a|nd make |
|00001b20| 73 75 72 65 20 74 68 65 | 20 6e 65 78 74 20 69 73 |sure the| next is|
|00001b30| 20 6e 75 6c 6c 20 2a 2f | 0a 58 09 09 6b 74 70 2d | null */|.X..ktp-|
|00001b40| 3e 6b 5f 63 6f 64 65 20 | 3d 20 30 3b 0a 58 09 09 |>k_code |= 0;.X..|
|00001b50| 6b 74 70 2d 3e 6b 5f 66 | 70 20 3d 20 4e 55 4c 4c |ktp->k_f|p = NULL|
|00001b60| 3b 0a 58 09 7d 0a 58 09 | 72 65 74 75 72 6e 28 54 |;.X.}.X.|return(T|
|00001b70| 52 55 45 29 3b 0a 58 7d | 0a 58 0a 58 2f 2a 20 75 |RUE);.X}|.X.X/* u|
|00001b80| 6e 62 69 6e 64 6b 65 79 | 3a 09 64 65 6c 65 74 65 |nbindkey|:.delete|
|00001b90| 20 61 20 6b 65 79 20 66 | 72 6f 6d 20 74 68 65 20 | a key f|rom the |
|00001ba0| 6b 65 79 20 62 69 6e 64 | 69 6e 67 20 74 61 62 6c |key bind|ing tabl|
|00001bb0| 65 09 2a 2f 0a 58 0a 58 | 75 6e 62 69 6e 64 6b 65 |e.*/.X.X|unbindke|
|00001bc0| 79 28 66 2c 20 6e 29 0a | 58 0a 58 69 6e 74 20 66 |y(f, n).|X.Xint f|
|00001bd0| 2c 20 6e 3b 09 2f 2a 20 | 63 6f 6d 6d 61 6e 64 20 |, n;./* |command |
|00001be0| 61 72 67 75 6d 65 6e 74 | 73 20 5b 49 47 4e 4f 52 |argument|s [IGNOR|
|00001bf0| 45 44 5d 20 2a 2f 0a 58 | 0a 58 7b 0a 58 09 72 65 |ED] */.X|.X{.X.re|
|00001c00| 67 69 73 74 65 72 20 69 | 6e 74 20 63 3b 09 09 2f |gister i|nt c;../|
|00001c10| 2a 20 63 6f 6d 6d 61 6e | 64 20 6b 65 79 20 74 6f |* comman|d key to|
|00001c20| 20 75 6e 62 69 6e 64 20 | 2a 2f 0a 58 09 72 65 67 | unbind |*/.X.reg|
|00001c30| 69 73 74 65 72 20 63 68 | 61 72 20 2a 70 74 72 3b |ister ch|ar *ptr;|
|00001c40| 09 2f 2a 20 70 74 72 20 | 74 6f 20 64 75 6d 70 20 |./* ptr |to dump |
|00001c50| 6f 75 74 20 69 6e 70 75 | 74 20 6b 65 79 20 73 74 |out inpu|t key st|
|00001c60| 72 69 6e 67 20 2a 2f 0a | 58 09 63 68 61 72 20 6f |ring */.|X.char o|
|00001c70| 75 74 73 65 71 5b 38 30 | 5d 3b 09 2f 2a 20 6f 75 |utseq[80|];./* ou|
|00001c80| 74 70 75 74 20 62 75 66 | 66 65 72 20 66 6f 72 20 |tput buf|fer for |
|00001c90| 6b 65 79 73 74 72 6f 6b | 65 20 73 65 71 75 65 6e |keystrok|e sequen|
|00001ca0| 63 65 20 2a 2f 0a 58 0a | 58 09 2f 2a 20 70 72 6f |ce */.X.|X./* pro|
|00001cb0| 6d 70 74 20 74 68 65 20 | 75 73 65 72 20 74 6f 20 |mpt the |user to |
|00001cc0| 74 79 70 65 20 69 6e 20 | 61 20 6b 65 79 20 74 6f |type in |a key to|
|00001cd0| 20 75 6e 62 69 6e 64 20 | 2a 2f 0a 58 09 6d 6c 77 | unbind |*/.X.mlw|
|00001ce0| 72 69 74 65 28 22 3a 20 | 75 6e 62 69 6e 64 2d 6b |rite(": |unbind-k|
|00001cf0| 65 79 20 22 29 3b 0a 58 | 0a 58 09 2f 2a 20 67 65 |ey ");.X|.X./* ge|
|00001d00| 74 20 74 68 65 20 63 6f | 6d 6d 61 6e 64 20 73 65 |t the co|mmand se|
|00001d10| 71 75 65 6e 63 65 20 74 | 6f 20 75 6e 62 69 6e 64 |quence t|o unbind|
|00001d20| 20 2a 2f 0a 58 09 63 20 | 3d 20 67 65 74 63 6b 65 | */.X.c |= getcke|
|00001d30| 79 28 46 41 4c 53 45 29 | 3b 09 09 2f 2a 20 67 65 |y(FALSE)|;../* ge|
|00001d40| 74 20 61 20 63 6f 6d 6d | 61 6e 64 20 73 65 71 75 |t a comm|and sequ|
|00001d50| 65 6e 63 65 20 2a 2f 0a | 58 0a 58 09 2f 2a 20 63 |ence */.|X.X./* c|
|00001d60| 68 61 6e 67 65 20 69 74 | 20 74 6f 20 73 6f 6d 65 |hange it| to some|
|00001d70| 74 68 69 6e 67 20 77 65 | 20 63 61 6e 20 70 72 69 |thing we| can pri|
|00001d80| 6e 74 20 61 73 20 77 65 | 6c 6c 20 2a 2f 0a 58 09 |nt as we|ll */.X.|
|00001d90| 63 6d 64 73 74 72 28 63 | 2c 20 26 6f 75 74 73 65 |cmdstr(c|, &outse|
|00001da0| 71 5b 30 5d 29 3b 0a 58 | 0a 58 09 2f 2a 20 61 6e |q[0]);.X|.X./* an|
|00001db0| 64 20 64 75 6d 70 20 69 | 74 20 6f 75 74 20 2a 2f |d dump i|t out */|
|00001dc0| 0a 58 09 70 74 72 20 3d | 20 26 6f 75 74 73 65 71 |.X.ptr =| &outseq|
|00001dd0| 5b 30 5d 3b 0a 58 09 77 | 68 69 6c 65 20 28 2a 70 |[0];.X.w|hile (*p|
|00001de0| 74 72 29 0a 58 09 09 54 | 54 70 75 74 63 28 2a 70 |tr).X..T|Tputc(*p|
|00001df0| 74 72 2b 2b 29 3b 0a 58 | 0a 58 09 2f 2a 20 69 66 |tr++);.X|.X./* if|
|00001e00| 20 69 74 20 69 73 6e 27 | 74 20 62 6f 75 6e 64 2c | it isn'|t bound,|
|00001e10| 20 62 69 74 63 68 20 2a | 2f 0a 58 09 69 66 20 28 | bitch *|/.X.if (|
|00001e20| 75 6e 62 69 6e 64 63 68 | 61 72 28 63 29 20 3d 3d |unbindch|ar(c) ==|
|00001e30| 20 46 41 4c 53 45 29 20 | 7b 0a 58 09 09 6d 6c 77 | FALSE) |{.X..mlw|
|00001e40| 72 69 74 65 28 22 5b 4b | 65 79 20 6e 6f 74 20 62 |rite("[K|ey not b|
|00001e50| 6f 75 6e 64 5d 22 29 3b | 0a 58 09 09 72 65 74 75 |ound]");|.X..retu|
|00001e60| 72 6e 28 46 41 4c 53 45 | 29 3b 0a 58 09 7d 0a 58 |rn(FALSE|);.X.}.X|
|00001e70| 09 72 65 74 75 72 6e 28 | 54 52 55 45 29 3b 0a 58 |.return(|TRUE);.X|
|00001e80| 7d 0a 58 0a 58 75 6e 62 | 69 6e 64 63 68 61 72 28 |}.X.Xunb|indchar(|
|00001e90| 63 29 0a 58 0a 58 69 6e | 74 20 63 3b 09 09 2f 2a |c).X.Xin|t c;../*|
|00001ea0| 20 63 6f 6d 6d 61 6e 64 | 20 6b 65 79 20 74 6f 20 | command| key to |
|00001eb0| 75 6e 62 69 6e 64 20 2a | 2f 0a 58 0a 58 7b 0a 58 |unbind *|/.X.X{.X|
|00001ec0| 09 72 65 67 69 73 74 65 | 72 20 4b 45 59 54 41 42 |.registe|r KEYTAB|
|00001ed0| 20 2a 6b 74 70 3b 09 2f | 2a 20 70 6f 69 6e 74 65 | *ktp;./|* pointe|
|00001ee0| 72 20 69 6e 74 6f 20 74 | 68 65 20 63 6f 6d 6d 61 |r into t|he comma|
|00001ef0| 6e 64 20 74 61 62 6c 65 | 20 2a 2f 0a 58 09 72 65 |nd table| */.X.re|
|00001f00| 67 69 73 74 65 72 20 4b | 45 59 54 41 42 20 2a 73 |gister K|EYTAB *s|
|00001f10| 6b 74 70 3b 09 2f 2a 20 | 73 61 76 65 64 20 70 6f |ktp;./* |saved po|
|00001f20| 69 6e 74 65 72 20 69 6e | 74 6f 20 74 68 65 20 63 |inter in|to the c|
|00001f30| 6f 6d 6d 61 6e 64 20 74 | 61 62 6c 65 20 2a 2f 0a |ommand t|able */.|
|00001f40| 58 09 72 65 67 69 73 74 | 65 72 20 69 6e 74 20 66 |X.regist|er int f|
|00001f50| 6f 75 6e 64 3b 09 2f 2a | 20 6d 61 74 63 68 65 64 |ound;./*| matched|
|00001f60| 20 63 6f 6d 6d 61 6e 64 | 20 66 6c 61 67 20 2a 2f | command| flag */|
|00001f70| 0a 58 0a 58 09 2f 2a 20 | 73 65 61 72 63 68 20 74 |.X.X./* |search t|
|00001f80| 68 65 20 74 61 62 6c 65 | 20 74 6f 20 73 65 65 20 |he table| to see |
|00001f90| 69 66 20 74 68 65 20 6b | 65 79 20 65 78 69 73 74 |if the k|ey exist|
|00001fa0| 73 20 2a 2f 0a 58 09 6b | 74 70 20 3d 20 26 6b 65 |s */.X.k|tp = &ke|
|00001fb0| 79 74 61 62 5b 30 5d 3b | 0a 58 09 66 6f 75 6e 64 |ytab[0];|.X.found|
|00001fc0| 20 3d 20 46 41 4c 53 45 | 3b 0a 58 09 77 68 69 6c | = FALSE|;.X.whil|
|00001fd0| 65 20 28 6b 74 70 2d 3e | 6b 5f 66 70 20 21 3d 20 |e (ktp->|k_fp != |
|00001fe0| 4e 55 4c 4c 29 20 7b 0a | 58 09 09 69 66 20 28 6b |NULL) {.|X..if (k|
|00001ff0| 74 70 2d 3e 6b 5f 63 6f | 64 65 20 3d 3d 20 63 29 |tp->k_co|de == c)|
|00002000| 20 7b 0a 58 09 09 09 66 | 6f 75 6e 64 20 3d 20 54 | {.X...f|ound = T|
|00002010| 52 55 45 3b 0a 58 09 09 | 09 62 72 65 61 6b 3b 0a |RUE;.X..|.break;.|
|00002020| 58 09 09 7d 0a 58 09 09 | 2b 2b 6b 74 70 3b 0a 58 |X..}.X..|++ktp;.X|
|00002030| 09 7d 0a 58 0a 58 09 2f | 2a 20 69 66 20 69 74 20 |.}.X.X./|* if it |
|00002040| 69 73 6e 27 74 20 62 6f | 75 6e 64 2c 20 62 69 74 |isn't bo|und, bit|
|00002050| 63 68 20 2a 2f 0a 58 09 | 69 66 20 28 21 66 6f 75 |ch */.X.|if (!fou|
|00002060| 6e 64 29 0a 58 09 09 72 | 65 74 75 72 6e 28 46 41 |nd).X..r|eturn(FA|
|00002070| 4c 53 45 29 3b 0a 58 0a | 58 09 2f 2a 20 73 61 76 |LSE);.X.|X./* sav|
|00002080| 65 20 74 68 65 20 70 6f | 69 6e 74 65 72 20 61 6e |e the po|inter an|
|00002090| 64 20 73 63 61 6e 20 74 | 6f 20 74 68 65 20 65 6e |d scan t|o the en|
|000020a0| 64 20 6f 66 20 74 68 65 | 20 74 61 62 6c 65 20 2a |d of the| table *|
|000020b0| 2f 0a 58 09 73 6b 74 70 | 20 3d 20 6b 74 70 3b 0a |/.X.sktp| = ktp;.|
|000020c0| 58 09 77 68 69 6c 65 20 | 28 6b 74 70 2d 3e 6b 5f |X.while |(ktp->k_|
|000020d0| 66 70 20 21 3d 20 4e 55 | 4c 4c 29 0a 58 09 09 2b |fp != NU|LL).X..+|
|000020e0| 2b 6b 74 70 3b 0a 58 09 | 2d 2d 6b 74 70 3b 09 09 |+ktp;.X.|--ktp;..|
|000020f0| 2f 2a 20 62 61 63 6b 75 | 70 20 74 6f 20 74 68 65 |/* backu|p to the|
|00002100| 20 6c 61 73 74 20 6c 65 | 67 69 74 20 65 6e 74 72 | last le|git entr|
|00002110| 79 20 2a 2f 0a 58 0a 58 | 09 2f 2a 20 63 6f 70 79 |y */.X.X|./* copy|
|00002120| 20 74 68 65 20 6c 61 73 | 74 20 65 6e 74 72 79 20 | the las|t entry |
|00002130| 74 6f 20 74 68 65 20 63 | 75 72 72 65 6e 74 20 6f |to the c|urrent o|
|00002140| 6e 65 20 2a 2f 0a 58 09 | 73 6b 74 70 2d 3e 6b 5f |ne */.X.|sktp->k_|
|00002150| 63 6f 64 65 20 3d 20 6b | 74 70 2d 3e 6b 5f 63 6f |code = k|tp->k_co|
|00002160| 64 65 3b 0a 58 09 73 6b | 74 70 2d 3e 6b 5f 66 70 |de;.X.sk|tp->k_fp|
|00002170| 20 20 20 3d 20 6b 74 70 | 2d 3e 6b 5f 66 70 3b 0a | = ktp|->k_fp;.|
|00002180| 58 0a 58 09 2f 2a 20 6e | 75 6c 6c 20 6f 75 74 20 |X.X./* n|ull out |
|00002190| 74 68 65 20 6c 61 73 74 | 20 6f 6e 65 20 2a 2f 0a |the last| one */.|
|000021a0| 58 09 6b 74 70 2d 3e 6b | 5f 63 6f 64 65 20 3d 20 |X.ktp->k|_code = |
|000021b0| 30 3b 0a 58 09 6b 74 70 | 2d 3e 6b 5f 66 70 20 3d |0;.X.ktp|->k_fp =|
|000021c0| 20 4e 55 4c 4c 3b 0a 58 | 09 72 65 74 75 72 6e 28 | NULL;.X|.return(|
|000021d0| 54 52 55 45 29 3b 0a 58 | 7d 0a 58 0a 58 64 65 73 |TRUE);.X|}.X.Xdes|
|000021e0| 62 69 6e 64 28 66 2c 20 | 6e 29 09 2f 2a 20 64 65 |bind(f, |n)./* de|
|000021f0| 73 63 72 69 62 65 20 62 | 69 6e 64 69 6e 67 73 0a |scribe b|indings.|
|00002200| 58 09 09 20 20 20 62 72 | 69 6e 67 20 75 70 20 61 |X.. br|ing up a|
|00002210| 20 66 61 6b 65 20 62 75 | 66 66 65 72 20 61 6e 64 | fake bu|ffer and|
|00002220| 20 6c 69 73 74 20 74 68 | 65 20 6b 65 79 20 62 69 | list th|e key bi|
|00002230| 6e 64 69 6e 67 73 0a 58 | 09 09 20 20 20 69 6e 74 |ndings.X|.. int|
|00002240| 6f 20 69 74 20 77 69 74 | 68 20 76 69 65 77 20 6d |o it wit|h view m|
|00002250| 6f 64 65 09 09 09 2a 2f | 0a 58 0a 58 23 69 66 09 |ode...*/|.X.X#if.|
|00002260| 41 50 52 4f 50 0a 58 7b | 0a 58 09 62 75 69 6c 64 |APROP.X{|.X.build|
|00002270| 6c 69 73 74 28 54 52 55 | 45 2c 20 22 22 29 3b 0a |list(TRU|E, "");.|
|00002280| 58 7d 0a 58 0a 58 61 70 | 72 6f 28 66 2c 20 6e 29 |X}.X.Xap|ro(f, n)|
|00002290| 09 2f 2a 20 41 70 72 6f | 70 6f 73 20 28 4c 69 73 |./* Apro|pos (Lis|
|000022a0| 74 20 66 75 6e 63 74 69 | 6f 6e 73 20 74 68 61 74 |t functi|ons that|
|000022b0| 20 6d 61 74 63 68 20 61 | 20 73 75 62 73 74 72 69 | match a| substri|
|000022c0| 6e 67 29 20 2a 2f 0a 58 | 0a 58 7b 0a 58 09 63 68 |ng) */.X|.X{.X.ch|
|000022d0| 61 72 20 6d 73 74 72 69 | 6e 67 5b 4e 53 54 52 49 |ar mstri|ng[NSTRI|
|000022e0| 4e 47 5d 3b 09 2f 2a 20 | 73 74 72 69 6e 67 20 74 |NG];./* |string t|
|000022f0| 6f 20 6d 61 74 63 68 20 | 63 6d 64 20 6e 61 6d 65 |o match |cmd name|
|00002300| 73 20 74 6f 20 2a 2f 0a | 58 09 69 6e 74 20 73 74 |s to */.|X.int st|
|00002310| 61 74 75 73 3b 09 09 2f | 2a 20 73 74 61 74 75 73 |atus;../|* status|
|00002320| 20 72 65 74 75 72 6e 20 | 2a 2f 0a 58 0a 58 09 73 | return |*/.X.X.s|
|00002330| 74 61 74 75 73 20 3d 20 | 6d 6c 72 65 70 6c 79 28 |tatus = |mlreply(|
|00002340| 22 41 70 72 6f 70 6f 73 | 20 73 74 72 69 6e 67 3a |"Apropos| string:|
|00002350| 20 22 2c 20 6d 73 74 72 | 69 6e 67 2c 20 4e 53 54 | ", mstr|ing, NST|
|00002360| 52 49 4e 47 20 2d 20 31 | 29 3b 0a 58 09 69 66 20 |RING - 1|);.X.if |
|00002370| 28 73 74 61 74 75 73 20 | 21 3d 20 54 52 55 45 29 |(status |!= TRUE)|
|00002380| 0a 58 09 09 72 65 74 75 | 72 6e 28 73 74 61 74 75 |.X..retu|rn(statu|
|00002390| 73 29 3b 0a 58 0a 58 09 | 72 65 74 75 72 6e 28 62 |s);.X.X.|return(b|
|000023a0| 75 69 6c 64 6c 69 73 74 | 28 46 41 4c 53 45 2c 20 |uildlist|(FALSE, |
|000023b0| 6d 73 74 72 69 6e 67 29 | 29 3b 0a 58 7d 0a 58 0a |mstring)|);.X}.X.|
|000023c0| 58 62 75 69 6c 64 6c 69 | 73 74 28 74 79 70 65 2c |Xbuildli|st(type,|
|000023d0| 20 6d 73 74 72 69 6e 67 | 29 20 20 2f 2a 20 62 75 | mstring|) /* bu|
|000023e0| 69 6c 64 20 61 20 62 69 | 6e 64 69 6e 67 20 6c 69 |ild a bi|nding li|
|000023f0| 73 74 20 28 6c 69 6d 69 | 74 65 64 20 6f 72 20 66 |st (limi|ted or f|
|00002400| 75 6c 6c 29 20 2a 2f 0a | 58 0a 58 69 6e 74 20 74 |ull) */.|X.Xint t|
|00002410| 79 70 65 3b 09 2f 2a 20 | 74 72 75 65 20 3d 20 66 |ype;./* |true = f|
|00002420| 75 6c 6c 20 6c 69 73 74 | 2c 20 20 20 66 61 6c 73 |ull list|, fals|
|00002430| 65 20 3d 20 70 61 72 74 | 69 61 6c 20 6c 69 73 74 |e = part|ial list|
|00002440| 20 2a 2f 0a 58 63 68 61 | 72 20 2a 6d 73 74 72 69 | */.Xcha|r *mstri|
|00002450| 6e 67 3b 09 2f 2a 20 6d | 61 74 63 68 20 73 74 72 |ng;./* m|atch str|
|00002460| 69 6e 67 20 69 66 20 61 | 20 70 61 72 74 69 61 6c |ing if a| partial|
|00002470| 20 6c 69 73 74 20 2a 2f | 0a 58 0a 58 23 65 6e 64 | list */|.X.X#end|
|00002480| 69 66 0a 58 7b 0a 58 09 | 72 65 67 69 73 74 65 72 |if.X{.X.|register|
|00002490| 20 57 49 4e 44 4f 57 20 | 2a 77 70 3b 09 2f 2a 20 | WINDOW |*wp;./* |
|000024a0| 73 63 6e 61 6e 69 6e 67 | 20 70 6f 69 6e 74 65 72 |scnaning| pointer|
|000024b0| 20 74 6f 20 77 69 6e 64 | 6f 77 73 20 2a 2f 0a 58 | to wind|ows */.X|
|000024c0| 09 72 65 67 69 73 74 65 | 72 20 4b 45 59 54 41 42 |.registe|r KEYTAB|
|000024d0| 20 2a 6b 74 70 3b 09 2f | 2a 20 70 6f 69 6e 74 65 | *ktp;./|* pointe|
|000024e0| 72 20 69 6e 74 6f 20 74 | 68 65 20 63 6f 6d 6d 61 |r into t|he comma|
|000024f0| 6e 64 20 74 61 62 6c 65 | 20 2a 2f 0a 58 09 72 65 |nd table| */.X.re|
|00002500| 67 69 73 74 65 72 20 4e | 42 49 4e 44 20 2a 6e 70 |gister N|BIND *np|
|00002510| 74 72 3b 09 2f 2a 20 70 | 6f 69 6e 74 65 72 20 69 |tr;./* p|ointer i|
|00002520| 6e 74 6f 20 74 68 65 20 | 6e 61 6d 65 20 62 69 6e |nto the |name bin|
|00002530| 64 69 6e 67 20 74 61 62 | 6c 65 20 2a 2f 0a 58 09 |ding tab|le */.X.|
|00002540| 72 65 67 69 73 74 65 72 | 20 42 55 46 46 45 52 20 |register| BUFFER |
|00002550| 2a 62 70 3b 09 2f 2a 20 | 62 75 66 66 65 72 20 74 |*bp;./* |buffer t|
|00002560| 6f 20 70 75 74 20 62 69 | 6e 64 69 6e 67 20 6c 69 |o put bi|nding li|
|00002570| 73 74 20 69 6e 74 6f 20 | 2a 2f 0a 58 09 63 68 61 |st into |*/.X.cha|
|00002580| 72 20 2a 73 74 72 70 3b | 09 09 2f 2a 20 70 6f 69 |r *strp;|../* poi|
|00002590| 6e 74 65 72 20 69 6e 74 | 20 73 74 72 69 6e 67 20 |nter int| string |
|000025a0| 74 6f 20 73 65 6e 64 20 | 2a 2f 0a 58 09 69 6e 74 |to send |*/.X.int|
|000025b0| 20 63 70 6f 73 3b 09 09 | 2f 2a 20 63 75 72 72 65 | cpos;..|/* curre|
|000025c0| 6e 74 20 70 6f 73 69 74 | 69 6f 6e 20 74 6f 20 75 |nt posit|ion to u|
|000025d0| 73 65 20 69 6e 20 6f 75 | 74 73 65 71 20 2a 2f 0a |se in ou|tseq */.|
|000025e0| 58 09 63 68 61 72 20 6f | 75 74 73 65 71 5b 38 30 |X.char o|utseq[80|
|000025f0| 5d 3b 09 2f 2a 20 6f 75 | 74 70 75 74 20 62 75 66 |];./* ou|tput buf|
|00002600| 66 65 72 20 66 6f 72 20 | 6b 65 79 73 74 72 6f 6b |fer for |keystrok|
|00002610| 65 20 73 65 71 75 65 6e | 63 65 20 2a 2f 0a 58 0a |e sequen|ce */.X.|
|00002620| 58 09 2f 2a 20 73 70 6c | 69 74 20 74 68 65 20 63 |X./* spl|it the c|
|00002630| 75 72 72 65 6e 74 20 77 | 69 6e 64 6f 77 20 74 6f |urrent w|indow to|
|00002640| 20 6d 61 6b 65 20 72 6f | 6f 6d 20 66 6f 72 20 74 | make ro|om for t|
|00002650| 68 65 20 62 69 6e 64 69 | 6e 67 20 6c 69 73 74 20 |he bindi|ng list |
|00002660| 2a 2f 0a 58 09 69 66 20 | 28 73 70 6c 69 74 77 69 |*/.X.if |(splitwi|
|00002670| 6e 64 28 46 41 4c 53 45 | 2c 20 31 29 20 3d 3d 20 |nd(FALSE|, 1) == |
|00002680| 46 41 4c 53 45 29 0a 58 | 09 09 09 72 65 74 75 72 |FALSE).X|...retur|
|00002690| 6e 28 46 41 4c 53 45 29 | 3b 0a 58 0a 58 09 2f 2a |n(FALSE)|;.X.X./*|
|000026a0| 20 61 6e 64 20 67 65 74 | 20 61 20 62 75 66 66 65 | and get| a buffe|
|000026b0| 72 20 66 6f 72 20 69 74 | 20 2a 2f 0a 58 09 62 70 |r for it| */.X.bp|
|000026c0| 20 3d 20 62 66 69 6e 64 | 28 22 42 69 6e 64 69 6e | = bfind|("Bindin|
|000026d0| 67 20 6c 69 73 74 22 2c | 20 54 52 55 45 2c 20 30 |g list",| TRUE, 0|
|000026e0| 29 3b 0a 58 09 69 66 20 | 28 62 70 20 3d 3d 20 4e |);.X.if |(bp == N|
|000026f0| 55 4c 4c 20 7c 7c 20 62 | 63 6c 65 61 72 28 62 70 |ULL || b|clear(bp|
|00002700| 29 20 3d 3d 20 46 41 4c | 53 45 29 20 7b 0a 58 09 |) == FAL|SE) {.X.|
|00002710| 09 6d 6c 77 72 69 74 65 | 28 22 43 61 6e 20 6e 6f |.mlwrite|("Can no|
|00002720| 74 20 64 69 73 70 6c 61 | 79 20 62 69 6e 64 69 6e |t displa|y bindin|
|00002730| 67 20 6c 69 73 74 22 29 | 3b 0a 58 09 09 72 65 74 |g list")|;.X..ret|
|00002740| 75 72 6e 28 46 41 4c 53 | 45 29 3b 0a 58 09 7d 0a |urn(FALS|E);.X.}.|
|00002750| 58 0a 58 09 2f 2a 20 6c | 65 74 20 75 73 20 6b 6e |X.X./* l|et us kn|
|00002760| 6f 77 20 74 68 69 73 20 | 69 73 20 69 6e 20 70 72 |ow this |is in pr|
|00002770| 6f 67 72 65 73 73 20 2a | 2f 0a 58 09 6d 6c 77 72 |ogress *|/.X.mlwr|
|00002780| 69 74 65 28 22 5b 42 75 | 69 6c 64 69 6e 67 20 62 |ite("[Bu|ilding b|
|00002790| 69 6e 64 69 6e 67 20 6c | 69 73 74 5d 22 29 3b 0a |inding l|ist]");.|
|000027a0| 58 0a 58 09 2f 2a 20 64 | 69 73 63 6f 6e 65 63 74 |X.X./* d|isconect|
|000027b0| 20 74 68 65 20 63 75 72 | 72 65 6e 74 20 62 75 66 | the cur|rent buf|
|000027c0| 66 65 72 20 2a 2f 0a 58 | 20 20 20 20 20 20 20 20 |fer */.X| |
|000027d0| 69 66 20 28 2d 2d 63 75 | 72 62 70 2d 3e 62 5f 6e |if (--cu|rbp->b_n|
|000027e0| 77 6e 64 20 3d 3d 20 30 | 29 20 7b 20 20 20 20 20 |wnd == 0|) { |
|000027f0| 20 20 20 20 20 20 20 20 | 2f 2a 20 4c 61 73 74 20 | |/* Last |
|00002800| 75 73 65 2e 20 20 20 20 | 20 20 20 20 20 20 20 20 |use. | |
|00002810| 2a 2f 0a 58 20 20 20 20 | 20 20 20 20 20 20 20 20 |*/.X | |
|00002820| 20 20 20 20 63 75 72 62 | 70 2d 3e 62 5f 64 6f 74 | curb|p->b_dot|
|00002830| 70 20 20 3d 20 63 75 72 | 77 70 2d 3e 77 5f 64 6f |p = cur|wp->w_do|
|00002840| 74 70 3b 0a 58 20 20 20 | 20 20 20 20 20 20 20 20 |tp;.X | |
|00002850| 20 20 20 20 20 63 75 72 | 62 70 2d 3e 62 5f 64 6f | cur|bp->b_do|
|00002860| 74 6f 20 20 3d 20 63 75 | 72 77 70 2d 3e 77 5f 64 |to = cu|rwp->w_d|
|00002870| 6f 74 6f 3b 0a 58 20 20 | 20 20 20 20 20 20 20 20 |oto;.X | |
|00002880| 20 20 20 20 20 20 63 75 | 72 62 70 2d 3e 62 5f 6d | cu|rbp->b_m|
|00002890| 61 72 6b 70 20 3d 20 63 | 75 72 77 70 2d 3e 77 5f |arkp = c|urwp->w_|
|000028a0| 6d 61 72 6b 70 3b 0a 58 | 20 20 20 20 20 20 20 20 |markp;.X| |
|000028b0| 20 20 20 20 20 20 20 20 | 63 75 72 62 70 2d 3e 62 | |curbp->b|
|000028c0| 5f 6d 61 72 6b 6f 20 3d | 20 63 75 72 77 70 2d 3e |_marko =| curwp->|
|000028d0| 77 5f 6d 61 72 6b 6f 3b | 0a 58 20 20 20 20 20 20 |w_marko;|.X |
|000028e0| 20 20 7d 0a 58 0a 58 09 | 2f 2a 20 63 6f 6e 6e 65 | }.X.X.|/* conne|
|000028f0| 63 74 20 74 68 65 20 63 | 75 72 72 65 6e 74 20 77 |ct the c|urrent w|
|00002900| 69 6e 64 6f 77 20 74 6f | 20 74 68 69 73 20 62 75 |indow to| this bu|
|00002910| 66 66 65 72 20 2a 2f 0a | 58 09 63 75 72 62 70 20 |ffer */.|X.curbp |
|00002920| 3d 20 62 70 3b 09 2f 2a | 20 6d 61 6b 65 20 74 68 |= bp;./*| make th|
|00002930| 69 73 20 62 75 66 66 65 | 72 20 63 75 72 72 65 6e |is buffe|r curren|
|00002940| 74 20 69 6e 20 63 75 72 | 72 65 6e 74 20 77 69 6e |t in cur|rent win|
|00002950| 64 6f 77 20 2a 2f 0a 58 | 09 62 70 2d 3e 62 5f 6d |dow */.X|.bp->b_m|
|00002960| 6f 64 65 20 3d 20 30 3b | 09 09 2f 2a 20 6e 6f 20 |ode = 0;|../* no |
|00002970| 6d 6f 64 65 73 20 61 63 | 74 69 76 65 20 69 6e 20 |modes ac|tive in |
|00002980| 62 69 6e 64 69 6e 67 20 | 6c 69 73 74 20 2a 2f 0a |binding |list */.|
|00002990| 58 09 62 70 2d 3e 62 5f | 6e 77 6e 64 2b 2b 3b 09 |X.bp->b_|nwnd++;.|
|000029a0| 09 2f 2a 20 6d 61 72 6b | 20 75 73 20 61 73 20 6d |./* mark| us as m|
|000029b0| 6f 72 65 20 69 6e 20 75 | 73 65 20 2a 2f 0a 58 09 |ore in u|se */.X.|
|000029c0| 77 70 20 3d 20 63 75 72 | 77 70 3b 0a 58 09 77 70 |wp = cur|wp;.X.wp|
|000029d0| 2d 3e 77 5f 62 75 66 70 | 20 3d 20 62 70 3b 0a 58 |->w_bufp| = bp;.X|
|000029e0| 09 77 70 2d 3e 77 5f 6c | 69 6e 65 70 20 3d 20 62 |.wp->w_l|inep = b|
|000029f0| 70 2d 3e 62 5f 6c 69 6e | 65 70 3b 0a 58 09 77 70 |p->b_lin|ep;.X.wp|
|00002a00| 2d 3e 77 5f 66 6c 61 67 | 20 3d 20 57 46 48 41 52 |->w_flag| = WFHAR|
|00002a10| 44 7c 57 46 46 4f 52 43 | 45 3b 0a 58 09 77 70 2d |D|WFFORC|E;.X.wp-|
|00002a20| 3e 77 5f 64 6f 74 70 20 | 3d 20 62 70 2d 3e 62 5f |>w_dotp |= bp->b_|
|00002a30| 64 6f 74 70 3b 0a 58 09 | 77 70 2d 3e 77 5f 64 6f |dotp;.X.|wp->w_do|
|00002a40| 74 6f 20 3d 20 62 70 2d | 3e 62 5f 64 6f 74 6f 3b |to = bp-|>b_doto;|
|00002a50| 0a 58 09 77 70 2d 3e 77 | 5f 6d 61 72 6b 70 20 3d |.X.wp->w|_markp =|
|00002a60| 20 4e 55 4c 4c 3b 0a 58 | 09 77 70 2d 3e 77 5f 6d | NULL;.X|.wp->w_m|
|00002a70| 61 72 6b 6f 20 3d 20 30 | 3b 0a 58 0a 58 09 2f 2a |arko = 0|;.X.X./*|
|00002a80| 20 62 75 69 6c 64 20 74 | 68 65 20 63 6f 6e 74 65 | build t|he conte|
|00002a90| 6e 74 73 20 6f 66 20 74 | 68 69 73 20 77 69 6e 64 |nts of t|his wind|
|00002aa0| 6f 77 2c 20 69 6e 73 65 | 72 74 69 6e 67 20 69 74 |ow, inse|rting it|
|00002ab0| 20 6c 69 6e 65 20 62 79 | 20 6c 69 6e 65 20 2a 2f | line by| line */|
|00002ac0| 0a 58 09 6e 70 74 72 20 | 3d 20 26 6e 61 6d 65 73 |.X.nptr |= &names|
|00002ad0| 5b 30 5d 3b 0a 58 09 77 | 68 69 6c 65 20 28 6e 70 |[0];.X.w|hile (np|
|00002ae0| 74 72 2d 3e 6e 5f 66 75 | 6e 63 20 21 3d 20 4e 55 |tr->n_fu|nc != NU|
|00002af0| 4c 4c 29 20 7b 0a 58 0a | 58 09 09 2f 2a 20 61 64 |LL) {.X.|X../* ad|
|00002b00| 64 20 69 6e 20 74 68 65 | 20 63 6f 6d 6d 61 6e 64 |d in the| command|
|00002b10| 20 6e 61 6d 65 20 2a 2f | 0a 58 09 09 73 74 72 63 | name */|.X..strc|
|00002b20| 70 79 28 6f 75 74 73 65 | 71 2c 20 6e 70 74 72 2d |py(outse|q, nptr-|
|00002b30| 3e 6e 5f 6e 61 6d 65 29 | 3b 0a 58 09 09 63 70 6f |>n_name)|;.X..cpo|
|00002b40| 73 20 3d 20 73 74 72 6c | 65 6e 28 6f 75 74 73 65 |s = strl|en(outse|
|00002b50| 71 29 3b 0a 58 09 09 0a | 58 23 69 66 09 41 50 52 |q);.X...|X#if.APR|
|00002b60| 4f 50 0a 58 09 09 2f 2a | 20 69 66 20 77 65 20 61 |OP.X../*| if we a|
|00002b70| 72 65 20 65 78 65 63 75 | 74 69 6e 67 20 61 6e 20 |re execu|ting an |
|00002b80| 61 70 72 6f 70 6f 73 20 | 63 6f 6d 6d 61 6e 64 2e |apropos |command.|
|00002b90| 2e 2e 2e 2e 20 2a 2f 0a | 58 09 09 69 66 20 28 74 |.... */.|X..if (t|
|00002ba0| 79 70 65 20 3d 3d 20 46 | 41 4c 53 45 20 26 26 0a |ype == F|ALSE &&.|
|00002bb0| 58 09 09 20 20 20 20 2f | 2a 20 61 6e 64 20 63 75 |X.. /|* and cu|
|00002bc0| 72 72 65 6e 74 20 73 74 | 72 69 6e 67 20 64 6f 65 |rrent st|ring doe|
|00002bd0| 73 6e 27 74 20 69 6e 63 | 6c 75 64 65 20 74 68 65 |sn't inc|lude the|
|00002be0| 20 73 65 61 72 63 68 20 | 73 74 72 69 6e 67 20 2a | search |string *|
|00002bf0| 2f 0a 58 09 09 20 20 20 | 20 73 74 72 69 6e 63 28 |/.X.. | strinc(|
|00002c00| 6f 75 74 73 65 71 2c 20 | 6d 73 74 72 69 6e 67 29 |outseq, |mstring)|
|00002c10| 20 3d 3d 20 46 41 4c 53 | 45 29 0a 58 09 09 09 67 | == FALS|E).X...g|
|00002c20| 6f 74 6f 20 66 61 69 6c | 3b 0a 58 23 65 6e 64 69 |oto fail|;.X#endi|
|00002c30| 66 0a 58 09 09 2f 2a 20 | 73 65 61 72 63 68 20 64 |f.X../* |search d|
|00002c40| 6f 77 6e 20 61 6e 79 20 | 6b 65 79 73 20 62 6f 75 |own any |keys bou|
|00002c50| 6e 64 20 74 6f 20 74 68 | 69 73 20 2a 2f 0a 58 09 |nd to th|is */.X.|
|00002c60| 09 6b 74 70 20 3d 20 26 | 6b 65 79 74 61 62 5b 30 |.ktp = &|keytab[0|
|00002c70| 5d 3b 0a 58 09 09 77 68 | 69 6c 65 20 28 6b 74 70 |];.X..wh|ile (ktp|
|00002c80| 2d 3e 6b 5f 66 70 20 21 | 3d 20 4e 55 4c 4c 29 20 |->k_fp !|= NULL) |
|00002c90| 7b 0a 58 09 09 09 69 66 | 20 28 6b 74 70 2d 3e 6b |{.X...if| (ktp->k|
|00002ca0| 5f 66 70 20 3d 3d 20 6e | 70 74 72 2d 3e 6e 5f 66 |_fp == n|ptr->n_f|
|00002cb0| 75 6e 63 29 20 7b 0a 58 | 09 09 09 09 2f 2a 20 70 |unc) {.X|..../* p|
|00002cc0| 61 64 64 20 6f 75 74 20 | 73 6f 6d 65 20 73 70 61 |add out |some spa|
|00002cd0| 63 65 73 20 2a 2f 0a 58 | 09 09 09 09 77 68 69 6c |ces */.X|....whil|
|00002ce0| 65 20 28 63 70 6f 73 20 | 3c 20 32 35 29 0a 58 09 |e (cpos |< 25).X.|
|00002cf0| 09 09 09 09 6f 75 74 73 | 65 71 5b 63 70 6f 73 2b |....outs|eq[cpos+|
|00002d00| 2b 5d 20 3d 20 27 20 27 | 3b 0a 58 0a 58 09 09 09 |+] = ' '|;.X.X...|
|00002d10| 09 2f 2a 20 61 64 64 20 | 69 6e 20 74 68 65 20 63 |./* add |in the c|
|00002d20| 6f 6d 6d 61 6e 64 20 73 | 65 71 75 65 6e 63 65 20 |ommand s|equence |
|00002d30| 2a 2f 0a 58 09 09 09 09 | 63 6d 64 73 74 72 28 6b |*/.X....|cmdstr(k|
|00002d40| 74 70 2d 3e 6b 5f 63 6f | 64 65 2c 20 26 6f 75 74 |tp->k_co|de, &out|
|00002d50| 73 65 71 5b 63 70 6f 73 | 5d 29 3b 0a 58 09 09 09 |seq[cpos|]);.X...|
|00002d60| 09 77 68 69 6c 65 20 28 | 6f 75 74 73 65 71 5b 63 |.while (|outseq[c|
|00002d70| 70 6f 73 5d 20 21 3d 20 | 30 29 0a 58 09 09 09 09 |pos] != |0).X....|
|00002d80| 09 2b 2b 63 70 6f 73 3b | 0a 58 0a 58 09 09 09 09 |.++cpos;|.X.X....|
|00002d90| 2f 2a 20 61 6e 64 20 61 | 64 64 20 69 74 20 61 73 |/* and a|dd it as|
|00002da0| 20 61 20 6c 69 6e 65 20 | 69 6e 74 6f 20 74 68 65 | a line |into the|
|00002db0| 20 62 75 66 66 65 72 20 | 2a 2f 0a 58 09 09 09 09 | buffer |*/.X....|
|00002dc0| 73 74 72 70 20 3d 20 26 | 6f 75 74 73 65 71 5b 30 |strp = &|outseq[0|
|00002dd0| 5d 3b 0a 58 09 09 09 09 | 77 68 69 6c 65 20 28 2a |];.X....|while (*|
|00002de0| 73 74 72 70 20 21 3d 20 | 30 29 0a 58 09 09 09 09 |strp != |0).X....|
|00002df0| 09 6c 69 6e 73 65 72 74 | 28 31 2c 20 2a 73 74 72 |.linsert|(1, *str|
|00002e00| 70 2b 2b 29 3b 0a 58 09 | 09 09 09 6c 6e 65 77 6c |p++);.X.|...lnewl|
|00002e10| 69 6e 65 28 29 3b 0a 58 | 0a 58 09 09 09 09 63 70 |ine();.X|.X....cp|
|00002e20| 6f 73 20 3d 20 30 3b 09 | 2f 2a 20 61 6e 64 20 63 |os = 0;.|/* and c|
|00002e30| 6c 65 61 72 20 74 68 65 | 20 6c 69 6e 65 20 2a 2f |lear the| line */|
|00002e40| 0a 58 09 09 09 7d 0a 58 | 09 09 09 2b 2b 6b 74 70 |.X...}.X|...++ktp|
|00002e50| 3b 0a 58 09 09 7d 0a 58 | 0a 58 09 09 2f 2a 20 69 |;.X..}.X|.X../* i|
|00002e60| 66 20 6e 6f 20 6b 65 79 | 20 77 61 73 20 62 6f 75 |f no key| was bou|
|00002e70| 6e 64 2c 20 77 65 20 6e | 65 65 64 20 74 6f 20 64 |nd, we n|eed to d|
|00002e80| 75 6d 70 20 69 74 20 61 | 6e 79 77 61 79 20 2a 2f |ump it a|nyway */|
|00002e90| 0a 58 09 09 69 66 20 28 | 63 70 6f 73 20 3e 20 30 |.X..if (|cpos > 0|
|00002ea0| 29 20 7b 0a 58 09 09 09 | 6f 75 74 73 65 71 5b 63 |) {.X...|outseq[c|
|00002eb0| 70 6f 73 5d 20 3d 20 30 | 3b 0a 58 09 09 09 73 74 |pos] = 0|;.X...st|
|00002ec0| 72 70 20 3d 20 26 6f 75 | 74 73 65 71 5b 30 5d 3b |rp = &ou|tseq[0];|
|00002ed0| 0a 58 09 09 09 77 68 69 | 6c 65 20 28 2a 73 74 72 |.X...whi|le (*str|
|00002ee0| 70 20 21 3d 20 30 29 0a | 58 09 09 09 09 6c 69 6e |p != 0).|X....lin|
|00002ef0| 73 65 72 74 28 31 2c 20 | 2a 73 74 72 70 2b 2b 29 |sert(1, |*strp++)|
|00002f00| 3b 0a 58 09 09 09 6c 6e | 65 77 6c 69 6e 65 28 29 |;.X...ln|ewline()|
|00002f10| 3b 0a 58 09 09 7d 0a 58 | 0a 58 66 61 69 6c 3a 09 |;.X..}.X|.Xfail:.|
|00002f20| 09 2f 2a 20 61 6e 64 20 | 6f 6e 20 74 6f 20 74 68 |./* and |on to th|
|00002f30| 65 20 6e 65 78 74 20 6e | 61 6d 65 20 2a 2f 0a 58 |e next n|ame */.X|
|00002f40| 09 09 2b 2b 6e 70 74 72 | 3b 0a 58 09 7d 0a 58 0a |..++nptr|;.X.}.X.|
|00002f50| 58 09 63 75 72 77 70 2d | 3e 77 5f 62 75 66 70 2d |X.curwp-|>w_bufp-|
|00002f60| 3e 62 5f 6d 6f 64 65 20 | 7c 3d 20 4d 44 56 49 45 |>b_mode ||= MDVIE|
|00002f70| 57 3b 2f 2a 20 70 75 74 | 20 74 68 69 73 20 62 75 |W;/* put| this bu|
|00002f80| 66 66 65 72 20 76 69 65 | 77 20 6d 6f 64 65 20 2a |ffer vie|w mode *|
|00002f90| 2f 0a 58 09 63 75 72 62 | 70 2d 3e 62 5f 66 6c 61 |/.X.curb|p->b_fla|
|00002fa0| 67 20 26 3d 20 7e 42 46 | 43 48 47 3b 09 2f 2a 20 |g &= ~BF|CHG;./* |
|00002fb0| 64 6f 6e 27 74 20 66 6c | 61 67 20 74 68 69 73 20 |don't fl|ag this |
|00002fc0| 61 73 20 61 20 63 68 61 | 6e 67 65 20 2a 2f 0a 58 |as a cha|nge */.X|
|00002fd0| 09 77 70 2d 3e 77 5f 64 | 6f 74 70 20 3d 20 6c 66 |.wp->w_d|otp = lf|
|00002fe0| 6f 72 77 28 62 70 2d 3e | 62 5f 6c 69 6e 65 70 29 |orw(bp->|b_linep)|
|00002ff0| 3b 2f 2a 20 62 61 63 6b | 20 74 6f 20 74 68 65 20 |;/* back| to the |
|00003000| 62 65 67 69 6e 6e 69 6e | 67 20 2a 2f 0a 58 09 77 |beginnin|g */.X.w|
|00003010| 70 2d 3e 77 5f 64 6f 74 | 6f 20 3d 20 30 3b 0a 58 |p->w_dot|o = 0;.X|
|00003020| 09 77 70 20 3d 20 77 68 | 65 61 64 70 3b 09 09 09 |.wp = wh|eadp;...|
|00003030| 2f 2a 20 61 6e 64 20 75 | 70 64 61 74 65 20 41 4c |/* and u|pdate AL|
|00003040| 4c 20 6d 6f 64 65 20 6c | 69 6e 65 73 20 2a 2f 0a |L mode l|ines */.|
|00003050| 58 09 77 68 69 6c 65 20 | 28 77 70 20 21 3d 20 4e |X.while |(wp != N|
|00003060| 55 4c 4c 29 20 7b 0a 58 | 09 09 77 70 2d 3e 77 5f |ULL) {.X|..wp->w_|
|00003070| 66 6c 61 67 20 7c 3d 20 | 57 46 4d 4f 44 45 3b 0a |flag |= |WFMODE;.|
|00003080| 58 09 09 77 70 20 3d 20 | 77 70 2d 3e 77 5f 77 6e |X..wp = |wp->w_wn|
|00003090| 64 70 3b 0a 58 09 7d 0a | 58 09 6d 6c 77 72 69 74 |dp;.X.}.|X.mlwrit|
|000030a0| 65 28 22 22 29 3b 09 2f | 2a 20 63 6c 65 61 72 20 |e("");./|* clear |
|000030b0| 74 68 65 20 6d 6f 64 65 | 20 6c 69 6e 65 20 2a 2f |the mode| line */|
|000030c0| 0a 58 09 72 65 74 75 72 | 6e 28 54 52 55 45 29 3b |.X.retur|n(TRUE);|
|000030d0| 0a 58 7d 0a 58 0a 58 23 | 69 66 09 41 50 52 4f 50 |.X}.X.X#|if.APROP|
|000030e0| 0a 58 73 74 72 69 6e 63 | 28 73 6f 75 72 63 65 2c |.Xstrinc|(source,|
|000030f0| 20 73 75 62 29 09 2f 2a | 20 64 6f 65 73 20 73 6f | sub)./*| does so|
|00003100| 75 72 63 65 20 69 6e 63 | 6c 75 64 65 20 73 75 62 |urce inc|lude sub|
|00003110| 3f 20 2a 2f 0a 58 0a 58 | 63 68 61 72 20 2a 73 6f |? */.X.X|char *so|
|00003120| 75 72 63 65 3b 09 2f 2a | 20 73 74 72 69 6e 67 20 |urce;./*| string |
|00003130| 74 6f 20 73 65 61 72 63 | 68 20 69 6e 20 2a 2f 0a |to searc|h in */.|
|00003140| 58 63 68 61 72 20 2a 73 | 75 62 3b 09 2f 2a 20 73 |Xchar *s|ub;./* s|
|00003150| 75 62 73 74 72 69 6e 67 | 20 74 6f 20 6c 6f 6f 6b |ubstring| to look|
|00003160| 20 66 6f 72 20 2a 2f 0a | 58 0a 58 7b 0a 58 09 63 | for */.|X.X{.X.c|
|00003170| 68 61 72 20 2a 73 70 3b | 09 2f 2a 20 70 74 72 20 |har *sp;|./* ptr |
|00003180| 69 6e 74 6f 20 73 6f 75 | 72 63 65 20 2a 2f 0a 58 |into sou|rce */.X|
|00003190| 09 63 68 61 72 20 2a 6e | 78 74 73 70 3b 09 2f 2a |.char *n|xtsp;./*|
|000031a0| 20 6e 65 78 74 20 70 74 | 72 20 69 6e 74 6f 20 73 | next pt|r into s|
|000031b0| 6f 75 72 63 65 20 2a 2f | 0a 58 09 63 68 61 72 20 |ource */|.X.char |
|000031c0| 2a 74 70 3b 09 2f 2a 20 | 70 74 72 20 69 6e 74 6f |*tp;./* |ptr into|
|000031d0| 20 73 75 62 73 74 72 69 | 6e 67 20 2a 2f 0a 58 0a | substri|ng */.X.|
|000031e0| 58 09 2f 2a 20 66 6f 72 | 20 65 61 63 68 20 63 68 |X./* for| each ch|
|000031f0| 61 72 61 63 74 65 72 20 | 69 6e 20 74 68 65 20 73 |aracter |in the s|
|00003200| 6f 75 72 63 65 20 73 74 | 72 69 6e 67 20 2a 2f 0a |ource st|ring */.|
|00003210| 58 09 73 70 20 3d 20 73 | 6f 75 72 63 65 3b 0a 58 |X.sp = s|ource;.X|
|00003220| 09 77 68 69 6c 65 20 28 | 2a 73 70 29 20 7b 0a 58 |.while (|*sp) {.X|
|00003230| 09 09 74 70 20 3d 20 73 | 75 62 3b 0a 58 09 09 6e |..tp = s|ub;.X..n|
|00003240| 78 74 73 70 20 3d 20 73 | 70 3b 0a 58 0a 58 09 09 |xtsp = s|p;.X.X..|
|00003250| 2f 2a 20 69 73 20 74 68 | 65 20 73 75 62 73 74 72 |/* is th|e substr|
|00003260| 69 6e 67 20 68 65 72 65 | 3f 20 2a 2f 0a 58 09 09 |ing here|? */.X..|
|00003270| 77 68 69 6c 65 20 28 2a | 74 70 29 20 7b 0a 58 09 |while (*|tp) {.X.|
|00003280| 09 09 69 66 20 28 2a 6e | 78 74 73 70 2b 2b 20 21 |..if (*n|xtsp++ !|
|00003290| 3d 20 2a 74 70 29 0a 58 | 09 09 09 09 62 72 65 61 |= *tp).X|....brea|
|000032a0| 6b 3b 0a 58 09 09 09 65 | 6c 73 65 0a 58 09 09 09 |k;.X...e|lse.X...|
|000032b0| 09 74 70 2b 2b 3b 0a 58 | 09 09 7d 0a 58 0a 58 09 |.tp++;.X|..}.X.X.|
|000032c0| 09 2f 2a 20 79 65 73 2c | 20 72 65 74 75 72 6e 20 |./* yes,| return |
|000032d0| 61 20 73 75 63 63 65 73 | 73 20 2a 2f 0a 58 09 09 |a succes|s */.X..|
|000032e0| 69 66 20 28 2a 74 70 20 | 3d 3d 20 30 29 0a 58 09 |if (*tp |== 0).X.|
|000032f0| 09 09 72 65 74 75 72 6e | 28 54 52 55 45 29 3b 0a |..return|(TRUE);.|
|00003300| 58 0a 58 09 09 2f 2a 20 | 6e 6f 2c 20 6f 6e 77 61 |X.X../* |no, onwa|
|00003310| 72 64 20 2a 2f 0a 58 09 | 09 73 70 2b 2b 3b 0a 58 |rd */.X.|.sp++;.X|
|00003320| 09 7d 0a 58 09 72 65 74 | 75 72 6e 28 46 41 4c 53 |.}.X.ret|urn(FALS|
|00003330| 45 29 3b 0a 58 7d 0a 58 | 23 65 6e 64 69 66 0a 58 |E);.X}.X|#endif.X|
|00003340| 0a 58 67 65 74 63 6b 65 | 79 28 6d 66 6c 61 67 29 |.Xgetcke|y(mflag)|
|00003350| 09 2f 2a 20 67 65 74 20 | 61 20 63 6f 6d 6d 61 6e |./* get |a comman|
|00003360| 64 20 6b 65 79 20 73 65 | 71 75 65 6e 63 65 20 66 |d key se|quence f|
|00003370| 72 6f 6d 20 74 68 65 20 | 6b 65 79 62 6f 61 72 64 |rom the |keyboard|
|00003380| 09 2a 2f 0a 58 0a 58 69 | 6e 74 20 6d 66 6c 61 67 |.*/.X.Xi|nt mflag|
|00003390| 3b 09 2f 2a 20 67 6f 69 | 6e 67 20 66 6f 72 20 61 |;./* goi|ng for a|
|000033a0| 20 6d 65 74 61 20 73 65 | 71 75 65 6e 63 65 3f 20 | meta se|quence? |
|000033b0| 2a 2f 0a 58 0a 58 7b 0a | 58 09 72 65 67 69 73 74 |*/.X.X{.|X.regist|
|000033c0| 65 72 20 69 6e 74 20 63 | 3b 09 09 2f 2a 20 63 68 |er int c|;../* ch|
|000033d0| 61 72 61 63 74 65 72 20 | 66 65 74 63 68 65 64 20 |aracter |fetched |
|000033e0| 2a 2f 0a 58 09 72 65 67 | 69 73 74 65 72 20 63 68 |*/.X.reg|ister ch|
|000033f0| 61 72 20 2a 74 70 3b 09 | 2f 2a 20 70 6f 69 6e 74 |ar *tp;.|/* point|
|00003400| 65 72 20 69 6e 74 6f 20 | 74 68 65 20 74 6f 6b 65 |er into |the toke|
|00003410| 6e 20 2a 2f 0a 58 09 63 | 68 61 72 20 74 6f 6b 5b |n */.X.c|har tok[|
|00003420| 4e 53 54 52 49 4e 47 5d | 3b 09 2f 2a 20 63 6f 6d |NSTRING]|;./* com|
|00003430| 6d 61 6e 64 20 69 6e 63 | 6f 6d 69 6e 67 20 2a 2f |mand inc|oming */|
|00003440| 0a 58 0a 58 09 2f 2a 20 | 63 68 65 63 6b 20 74 6f |.X.X./* |check to|
|00003450| 20 73 65 65 20 69 66 20 | 77 65 20 61 72 65 20 65 | see if |we are e|
|00003460| 78 65 63 75 74 69 6e 67 | 20 61 20 63 6f 6d 6d 61 |xecuting| a comma|
|00003470| 6e 64 20 6c 69 6e 65 20 | 2a 2f 0a 58 09 69 66 20 |nd line |*/.X.if |
|00003480| 28 63 6c 65 78 65 63 29 | 20 7b 0a 58 09 09 6d 61 |(clexec)| {.X..ma|
|00003490| 63 61 72 67 28 74 6f 6b | 29 3b 09 2f 2a 20 67 65 |carg(tok|);./* ge|
|000034a0| 74 20 74 68 65 20 6e 65 | 78 74 20 74 6f 6b 65 6e |t the ne|xt token|
|000034b0| 20 2a 2f 0a 58 0a 58 09 | 09 2f 2a 20 70 61 72 73 | */.X.X.|./* pars|
|000034c0| 65 20 69 74 20 75 70 20 | 2a 2f 0a 58 09 09 74 70 |e it up |*/.X..tp|
|000034d0| 20 3d 20 26 74 6f 6b 5b | 30 5d 3b 0a 58 09 09 63 | = &tok[|0];.X..c|
|000034e0| 20 3d 20 30 3b 0a 58 0a | 58 09 09 2f 2a 20 66 69 | = 0;.X.|X../* fi|
|000034f0| 72 73 74 2c 20 74 68 65 | 20 4d 45 54 41 20 70 72 |rst, the| META pr|
|00003500| 65 66 69 78 20 2a 2f 0a | 58 09 09 69 66 20 28 2a |efix */.|X..if (*|
|00003510| 74 70 20 3d 3d 20 27 4d | 27 20 26 26 20 2a 28 74 |tp == 'M|' && *(t|
|00003520| 70 2b 31 29 20 3d 3d 20 | 27 2d 27 29 20 7b 0a 58 |p+1) == |'-') {.X|
|00003530| 09 09 09 63 20 3d 20 4d | 45 54 41 3b 0a 58 09 09 |...c = M|ETA;.X..|
|00003540| 09 74 70 20 2b 3d 20 32 | 3b 0a 58 09 09 7d 0a 58 |.tp += 2|;.X..}.X|
|00003550| 0a 58 09 09 2f 2a 20 6e | 65 78 74 20 74 68 65 20 |.X../* n|ext the |
|00003560| 66 75 6e 63 74 69 6f 6e | 20 70 72 65 66 69 78 20 |function| prefix |
|00003570| 2a 2f 0a 58 09 09 69 66 | 20 28 2a 74 70 20 3d 3d |*/.X..if| (*tp ==|
|00003580| 20 27 46 27 20 26 26 20 | 2a 28 74 70 2b 31 29 20 | 'F' && |*(tp+1) |
|00003590| 3d 3d 20 27 4e 27 29 20 | 7b 0a 58 09 09 09 63 20 |== 'N') |{.X...c |
|000035a0| 7c 3d 20 53 50 45 43 3b | 0a 58 09 09 09 74 70 20 ||= SPEC;|.X...tp |
|000035b0| 2b 3d 20 32 3b 0a 58 09 | 09 7d 0a 58 0a 58 09 09 |+= 2;.X.|.}.X.X..|
|000035c0| 2f 2a 20 63 6f 6e 74 72 | 6f 6c 2d 78 20 61 73 20 |/* contr|ol-x as |
|000035d0| 77 65 6c 6c 2e 2e 2e 20 | 2a 2f 0a 58 09 09 69 66 |well... |*/.X..if|
|000035e0| 20 28 2a 74 70 20 3d 3d | 20 27 5e 27 20 26 26 20 | (*tp ==| '^' && |
|000035f0| 2a 28 74 70 2b 31 29 20 | 3d 3d 20 27 58 27 29 20 |*(tp+1) |== 'X') |
|00003600| 7b 0a 58 09 09 09 63 20 | 7c 3d 20 43 54 4c 58 3b |{.X...c ||= CTLX;|
|00003610| 0a 58 09 09 09 74 70 20 | 2b 3d 20 32 3b 0a 58 09 |.X...tp |+= 2;.X.|
|00003620| 09 7d 0a 58 0a 58 09 09 | 2f 2a 20 61 20 63 6f 6e |.}.X.X..|/* a con|
|00003630| 74 72 6f 6c 20 63 68 61 | 72 3f 20 2a 2f 0a 58 09 |trol cha|r? */.X.|
|00003640| 09 69 66 20 28 2a 74 70 | 20 3d 3d 20 27 5e 27 20 |.if (*tp| == '^' |
|00003650| 26 26 20 2a 28 74 70 2b | 31 29 20 21 3d 20 30 29 |&& *(tp+|1) != 0)|
|00003660| 20 7b 0a 58 09 09 09 63 | 20 7c 3d 20 43 54 52 4c | {.X...c| |= CTRL|
|00003670| 3b 0a 58 09 09 09 2b 2b | 74 70 3b 0a 58 09 09 7d |;.X...++|tp;.X..}|
|00003680| 0a 58 0a 58 09 09 2f 2a | 20 6d 61 6b 65 20 73 75 |.X.X../*| make su|
|00003690| 72 65 20 77 65 20 61 72 | 65 20 6e 6f 74 20 6c 6f |re we ar|e not lo|
|000036a0| 77 65 72 20 63 61 73 65 | 20 2a 2f 0a 58 09 09 69 |wer case| */.X..i|
|000036b0| 66 20 28 63 20 3e 3d 20 | 27 61 27 20 26 26 20 63 |f (c >= |'a' && c|
|000036c0| 20 3c 3d 20 27 7a 27 29 | 0a 58 09 09 09 63 20 2d | <= 'z')|.X...c -|
|000036d0| 3d 20 33 32 3b 0a 58 0a | 58 09 09 2f 2a 20 74 68 |= 32;.X.|X../* th|
|000036e0| 65 20 66 69 6e 61 6c 20 | 73 65 71 75 65 6e 63 65 |e final |sequence|
|000036f0| 2e 2e 2e 20 2a 2f 0a 58 | 09 09 63 20 7c 3d 20 2a |... */.X|..c |= *|
|00003700| 74 70 3b 0a 58 0a 58 09 | 09 72 65 74 75 72 6e 28 |tp;.X.X.|.return(|
|00003710| 63 29 3b 0a 58 09 7d 0a | 58 0a 58 09 2f 2a 20 6f |c);.X.}.|X.X./* o|
|00003720| 72 20 74 68 65 20 6e 6f | 72 6d 61 6c 20 77 61 79 |r the no|rmal way|
|00003730| 20 2a 2f 0a 58 09 69 66 | 20 28 6d 66 6c 61 67 29 | */.X.if| (mflag)|
|00003740| 0a 58 09 09 63 20 3d 20 | 67 65 74 31 6b 65 79 28 |.X..c = |get1key(|
|00003750| 29 3b 0a 58 09 65 6c 73 | 65 0a 58 09 09 63 20 3d |);.X.els|e.X..c =|
|00003760| 20 67 65 74 63 6d 64 28 | 29 3b 0a 58 09 72 65 74 | getcmd(|);.X.ret|
|00003770| 75 72 6e 28 63 29 3b 0a | 58 7d 0a 58 0a 58 2f 2a |urn(c);.|X}.X.X/*|
|00003780| 20 65 78 65 63 75 74 65 | 20 74 68 65 20 73 74 61 | execute| the sta|
|00003790| 72 74 75 70 20 66 69 6c | 65 20 2a 2f 0a 58 0a 58 |rtup fil|e */.X.X|
|000037a0| 73 74 61 72 74 75 70 28 | 73 66 6e 61 6d 65 29 0a |startup(|sfname).|
|000037b0| 58 0a 58 63 68 61 72 20 | 2a 73 66 6e 61 6d 65 3b |X.Xchar |*sfname;|
|000037c0| 09 2f 2a 20 6e 61 6d 65 | 20 6f 66 20 73 74 61 72 |./* name| of star|
|000037d0| 74 75 70 20 66 69 6c 65 | 20 28 6e 75 6c 6c 20 69 |tup file| (null i|
|000037e0| 66 20 64 65 66 61 75 6c | 74 29 20 2a 2f 0a 58 0a |f defaul|t) */.X.|
|000037f0| 58 7b 0a 58 09 63 68 61 | 72 20 2a 66 6e 61 6d 65 |X{.X.cha|r *fname|
|00003800| 3b 09 2f 2a 20 72 65 73 | 75 6c 74 69 6e 67 20 66 |;./* res|ulting f|
|00003810| 69 6c 65 20 6e 61 6d 65 | 20 74 6f 20 65 78 65 63 |ile name| to exec|
|00003820| 75 74 65 20 2a 2f 0a 58 | 0a 58 09 2f 2a 20 6c 6f |ute */.X|.X./* lo|
|00003830| 6f 6b 20 75 70 20 74 68 | 65 20 73 74 61 72 74 75 |ok up th|e startu|
|00003840| 70 20 66 69 6c 65 20 2a | 2f 0a 58 09 69 66 20 28 |p file *|/.X.if (|
|00003850| 2a 73 66 6e 61 6d 65 20 | 21 3d 20 30 29 0a 58 09 |*sfname |!= 0).X.|
|00003860| 09 66 6e 61 6d 65 20 3d | 20 66 6c 6f 6f 6b 28 73 |.fname =| flook(s|
|00003870| 66 6e 61 6d 65 2c 20 54 | 52 55 45 29 3b 0a 58 09 |fname, T|RUE);.X.|
|00003880| 65 6c 73 65 0a 58 09 09 | 66 6e 61 6d 65 20 3d 20 |else.X..|fname = |
|00003890| 66 6c 6f 6f 6b 28 70 61 | 74 68 6e 61 6d 65 5b 30 |flook(pa|thname[0|
|000038a0| 5d 2c 20 54 52 55 45 29 | 3b 0a 58 0a 58 09 2f 2a |], TRUE)|;.X.X./*|
|000038b0| 20 69 66 20 69 74 20 69 | 73 6e 27 74 20 61 72 6f | if it i|sn't aro|
|000038c0| 75 6e 64 2c 20 64 6f 6e | 27 74 20 73 77 65 61 74 |und, don|'t sweat|
|000038d0| 20 69 74 20 2a 2f 0a 58 | 09 69 66 20 28 66 6e 61 | it */.X|.if (fna|
|000038e0| 6d 65 20 3d 3d 20 4e 55 | 4c 4c 29 0a 58 09 09 72 |me == NU|LL).X..r|
|000038f0| 65 74 75 72 6e 28 54 52 | 55 45 29 3b 0a 58 0a 58 |eturn(TR|UE);.X.X|
|00003900| 09 2f 2a 20 6f 74 68 65 | 72 77 69 73 65 2c 20 65 |./* othe|rwise, e|
|00003910| 78 65 63 75 74 65 20 74 | 68 65 20 73 75 63 6b 65 |xecute t|he sucke|
|00003920| 72 20 2a 2f 0a 58 09 72 | 65 74 75 72 6e 28 64 6f |r */.X.r|eturn(do|
|00003930| 66 69 6c 65 28 66 6e 61 | 6d 65 29 29 3b 0a 58 7d |file(fna|me));.X}|
|00003940| 0a 58 0a 58 2f 2a 09 4c | 6f 6f 6b 20 75 70 20 74 |.X.X/*.L|ook up t|
|00003950| 68 65 20 65 78 69 73 74 | 61 6e 63 65 20 6f 66 20 |he exist|ance of |
|00003960| 61 20 66 69 6c 65 20 61 | 6c 6f 6e 67 20 74 68 65 |a file a|long the|
|00003970| 20 6e 6f 72 6d 61 6c 20 | 6f 72 20 50 41 54 48 0a | normal |or PATH.|
|00003980| 58 09 65 6e 76 69 72 6f | 6e 6d 65 6e 74 20 76 61 |X.enviro|nment va|
|00003990| 72 69 61 62 6c 65 2e 20 | 4c 6f 6f 6b 20 66 69 72 |riable. |Look fir|
|000039a0| 73 74 20 69 6e 20 74 68 | 65 20 48 4f 4d 45 20 64 |st in th|e HOME d|
|000039b0| 69 72 65 63 74 6f 72 79 | 20 69 66 0a 58 09 61 73 |irectory| if.X.as|
|000039c0| 6b 65 64 20 61 6e 64 20 | 70 6f 73 73 69 62 6c 65 |ked and |possible|
|000039d0| 0a 58 2a 2f 0a 58 0a 58 | 63 68 61 72 20 2a 66 6c |.X*/.X.X|char *fl|
|000039e0| 6f 6f 6b 28 66 6e 61 6d | 65 2c 20 68 66 6c 61 67 |ook(fnam|e, hflag|
|000039f0| 29 0a 58 0a 58 63 68 61 | 72 20 2a 66 6e 61 6d 65 |).X.Xcha|r *fname|
|00003a00| 3b 09 2f 2a 20 62 61 73 | 65 20 66 69 6c 65 20 6e |;./* bas|e file n|
|00003a10| 61 6d 65 20 74 6f 20 73 | 65 61 72 63 68 20 66 6f |ame to s|earch fo|
|00003a20| 72 20 2a 2f 0a 58 69 6e | 74 20 68 66 6c 61 67 3b |r */.Xin|t hflag;|
|00003a30| 09 2f 2a 20 4c 6f 6f 6b | 20 69 6e 20 74 68 65 20 |./* Look| in the |
|00003a40| 48 4f 4d 45 20 65 6e 76 | 69 72 6f 6e 6d 65 6e 74 |HOME env|ironment|
|00003a50| 20 76 61 72 69 61 62 6c | 65 20 66 69 72 73 74 3f | variabl|e first?|
|00003a60| 20 2a 2f 0a 58 0a 58 7b | 0a 58 09 72 65 67 69 73 | */.X.X{|.X.regis|
|00003a70| 74 65 72 20 63 68 61 72 | 20 2a 68 6f 6d 65 3b 09 |ter char| *home;.|
|00003a80| 2f 2a 20 70 61 74 68 20 | 74 6f 20 68 6f 6d 65 20 |/* path |to home |
|00003a90| 64 69 72 65 63 74 6f 72 | 79 20 2a 2f 0a 58 09 72 |director|y */.X.r|
|00003aa0| 65 67 69 73 74 65 72 20 | 63 68 61 72 20 2a 70 61 |egister |char *pa|
|00003ab0| 74 68 3b 09 2f 2a 20 65 | 6e 76 69 72 6f 6e 6d 65 |th;./* e|nvironme|
|00003ac0| 6e 74 61 6c 20 50 41 54 | 48 20 76 61 72 69 61 62 |ntal PAT|H variab|
|00003ad0| 6c 65 20 2a 2f 0a 58 09 | 72 65 67 69 73 74 65 72 |le */.X.|register|
|00003ae0| 20 63 68 61 72 20 2a 73 | 70 3b 09 2f 2a 20 70 6f | char *s|p;./* po|
|00003af0| 69 6e 74 65 72 20 69 6e | 74 6f 20 70 61 74 68 20 |inter in|to path |
|00003b00| 73 70 65 63 20 2a 2f 0a | 58 09 72 65 67 69 73 74 |spec */.|X.regist|
|00003b10| 65 72 20 69 6e 74 20 69 | 3b 09 09 2f 2a 20 69 6e |er int i|;../* in|
|00003b20| 64 65 78 20 2a 2f 0a 58 | 09 72 65 67 69 73 74 65 |dex */.X|.registe|
|00003b30| 72 20 69 6e 74 20 73 74 | 61 74 75 73 3b 09 2f 2a |r int st|atus;./*|
|00003b40| 20 72 65 74 75 72 6e 20 | 73 74 61 74 75 73 20 2a | return |status *|
|00003b50| 2f 0a 58 09 73 74 61 74 | 69 63 20 63 68 61 72 20 |/.X.stat|ic char |
|00003b60| 66 73 70 65 63 5b 4e 53 | 54 52 49 4e 47 5d 3b 09 |fspec[NS|TRING];.|
|00003b70| 2f 2a 20 66 75 6c 6c 20 | 70 61 74 68 20 73 70 65 |/* full |path spe|
|00003b80| 63 20 74 6f 20 73 65 61 | 72 63 68 20 2a 2f 0a 58 |c to sea|rch */.X|
|00003b90| 09 63 68 61 72 20 2a 67 | 65 74 65 6e 76 28 29 3b |.char *g|etenv();|
|00003ba0| 0a 58 0a 58 23 69 66 09 | 28 28 4d 53 44 4f 53 20 |.X.X#if.|((MSDOS |
|00003bb0| 7c 20 41 4d 49 47 41 29 | 20 26 20 28 4c 41 54 54 || AMIGA)| & (LATT|
|00003bc0| 49 43 45 20 7c 20 41 5a | 54 45 43 20 7c 20 4d 53 |ICE | AZ|TEC | MS|
|00003bd0| 43 29 29 20 7c 20 56 37 | 20 7c 20 55 53 47 20 7c |C)) | V7| | USG ||
|00003be0| 20 42 53 44 0a 58 0a 58 | 09 69 66 20 28 68 66 6c | BSD.X.X|.if (hfl|
|00003bf0| 61 67 29 20 7b 0a 58 09 | 09 68 6f 6d 65 20 3d 20 |ag) {.X.|.home = |
|00003c00| 67 65 74 65 6e 76 28 22 | 48 4f 4d 45 22 29 3b 0a |getenv("|HOME");.|
|00003c10| 58 09 09 69 66 20 28 68 | 6f 6d 65 20 21 3d 20 4e |X..if (h|ome != N|
|00003c20| 55 4c 4c 29 20 7b 0a 58 | 09 09 09 2f 2a 20 62 75 |ULL) {.X|.../* bu|
|00003c30| 69 6c 64 20 68 6f 6d 65 | 20 64 69 72 20 66 69 6c |ild home| dir fil|
|00003c40| 65 20 73 70 65 63 20 2a | 2f 0a 58 09 09 09 73 74 |e spec *|/.X...st|
|00003c50| 72 63 70 79 28 66 73 70 | 65 63 2c 20 68 6f 6d 65 |rcpy(fsp|ec, home|
|00003c60| 29 3b 0a 58 09 09 09 73 | 74 72 63 61 74 28 66 73 |);.X...s|trcat(fs|
|00003c70| 70 65 63 2c 20 22 2f 22 | 29 3b 0a 58 09 09 09 73 |pec, "/"|);.X...s|
|00003c80| 74 72 63 61 74 28 66 73 | 70 65 63 2c 20 66 6e 61 |trcat(fs|pec, fna|
|00003c90| 6d 65 29 3b 0a 58 0a 58 | 09 09 09 2f 2a 20 61 6e |me);.X.X|.../* an|
|00003ca0| 64 20 74 72 79 20 69 74 | 20 6f 75 74 20 2a 2f 0a |d try it| out */.|
|00003cb0| 58 09 09 09 73 74 61 74 | 75 73 20 3d 20 66 66 72 |X...stat|us = ffr|
|00003cc0| 6f 70 65 6e 28 66 73 70 | 65 63 29 3b 0a 58 09 09 |open(fsp|ec);.X..|
|00003cd0| 09 69 66 20 28 73 74 61 | 74 75 73 20 3d 3d 20 46 |.if (sta|tus == F|
|00003ce0| 49 4f 53 55 43 29 20 7b | 0a 58 09 09 09 09 66 66 |IOSUC) {|.X....ff|
|00003cf0| 63 6c 6f 73 65 28 29 3b | 0a 58 09 09 09 09 72 65 |close();|.X....re|
|00003d00| 74 75 72 6e 28 66 73 70 | 65 63 29 3b 0a 58 09 09 |turn(fsp|ec);.X..|
|00003d10| 09 7d 0a 58 09 09 7d 0a | 58 09 7d 0a 58 0a 58 09 |.}.X..}.|X.}.X.X.|
|00003d20| 2f 2a 20 67 65 74 20 74 | 68 65 20 50 41 54 48 20 |/* get t|he PATH |
|00003d30| 76 61 72 69 61 62 6c 65 | 20 2a 2f 0a 58 09 70 61 |variable| */.X.pa|
|00003d40| 74 68 20 3d 20 67 65 74 | 65 6e 76 28 22 50 41 54 |th = get|env("PAT|
|00003d50| 48 22 29 3b 0a 58 09 69 | 66 20 28 70 61 74 68 20 |H");.X.i|f (path |
|00003d60| 21 3d 20 4e 55 4c 4c 29 | 0a 58 09 09 77 68 69 6c |!= NULL)|.X..whil|
|00003d70| 65 20 28 2a 70 61 74 68 | 29 20 7b 0a 58 0a 58 09 |e (*path|) {.X.X.|
|00003d80| 09 09 2f 2a 20 62 75 69 | 6c 64 20 6e 65 78 74 20 |../* bui|ld next |
|00003d90| 70 6f 73 73 69 62 6c 65 | 20 66 69 6c 65 20 73 70 |possible| file sp|
|00003da0| 65 63 20 2a 2f 0a 58 09 | 09 09 73 70 20 3d 20 66 |ec */.X.|..sp = f|
|00003db0| 73 70 65 63 3b 0a 58 09 | 09 09 77 68 69 6c 65 20 |spec;.X.|..while |
|00003dc0| 28 2a 70 61 74 68 20 26 | 26 20 28 2a 70 61 74 68 |(*path &|& (*path|
|00003dd0| 20 21 3d 20 50 41 54 48 | 43 48 52 29 29 0a 58 09 | != PATH|CHR)).X.|
|00003de0| 09 09 09 2a 73 70 2b 2b | 20 3d 20 2a 70 61 74 68 |...*sp++| = *path|
|00003df0| 2b 2b 3b 0a 58 09 09 09 | 2a 73 70 2b 2b 20 3d 20 |++;.X...|*sp++ = |
|00003e00| 27 2f 27 3b 0a 58 09 09 | 09 2a 73 70 20 3d 20 30 |'/';.X..|.*sp = 0|
|00003e10| 3b 0a 58 09 09 09 73 74 | 72 63 61 74 28 66 73 70 |;.X...st|rcat(fsp|
|00003e20| 65 63 2c 20 66 6e 61 6d | 65 29 3b 0a 58 0a 58 09 |ec, fnam|e);.X.X.|
|00003e30| 09 09 2f 2a 20 61 6e 64 | 20 74 72 79 20 69 74 20 |../* and| try it |
|00003e40| 6f 75 74 20 2a 2f 0a 58 | 09 09 09 73 74 61 74 75 |out */.X|...statu|
|00003e50| 73 20 3d 20 66 66 72 6f | 70 65 6e 28 66 73 70 65 |s = ffro|pen(fspe|
|00003e60| 63 29 3b 0a 58 09 09 09 | 69 66 20 28 73 74 61 74 |c);.X...|if (stat|
|00003e70| 75 73 20 3d 3d 20 46 49 | 4f 53 55 43 29 20 7b 0a |us == FI|OSUC) {.|
|00003e80| 58 09 09 09 09 66 66 63 | 6c 6f 73 65 28 29 3b 0a |X....ffc|lose();.|
|00003e90| 58 09 09 09 09 72 65 74 | 75 72 6e 28 66 73 70 65 |X....ret|urn(fspe|
|00003ea0| 63 29 3b 0a 58 09 09 09 | 7d 0a 58 0a 58 09 09 09 |c);.X...|}.X.X...|
|00003eb0| 69 66 20 28 2a 70 61 74 | 68 20 3d 3d 20 50 41 54 |if (*pat|h == PAT|
|00003ec0| 48 43 48 52 29 0a 58 09 | 09 09 09 2b 2b 70 61 74 |HCHR).X.|...++pat|
|00003ed0| 68 3b 0a 58 09 09 7d 0a | 58 23 65 6e 64 69 66 0a |h;.X..}.|X#endif.|
|00003ee0| 58 0a 58 09 2f 2a 20 6c | 6f 6f 6b 20 69 74 20 75 |X.X./* l|ook it u|
|00003ef0| 70 20 76 69 61 20 74 68 | 65 20 6f 6c 64 20 74 61 |p via th|e old ta|
|00003f00| 62 6c 65 20 6d 65 74 68 | 6f 64 20 2a 2f 0a 58 09 |ble meth|od */.X.|
|00003f10| 66 6f 72 20 28 69 3d 32 | 3b 20 69 20 3c 20 4e 50 |for (i=2|; i < NP|
|00003f20| 4e 41 4d 45 53 3b 20 69 | 2b 2b 29 20 7b 0a 58 09 |NAMES; i|++) {.X.|
|00003f30| 09 73 74 72 63 70 79 28 | 66 73 70 65 63 2c 20 70 |.strcpy(|fspec, p|
|00003f40| 61 74 68 6e 61 6d 65 5b | 69 5d 29 3b 0a 58 09 09 |athname[|i]);.X..|
|00003f50| 73 74 72 63 61 74 28 66 | 73 70 65 63 2c 20 66 6e |strcat(f|spec, fn|
|00003f60| 61 6d 65 29 3b 0a 58 0a | 58 09 09 2f 2a 20 61 6e |ame);.X.|X../* an|
|00003f70| 64 20 74 72 79 20 69 74 | 20 6f 75 74 20 2a 2f 0a |d try it| out */.|
|00003f80| 58 09 09 73 74 61 74 75 | 73 20 3d 20 66 66 72 6f |X..statu|s = ffro|
|00003f90| 70 65 6e 28 66 73 70 65 | 63 29 3b 0a 58 09 09 69 |pen(fspe|c);.X..i|
|00003fa0| 66 20 28 73 74 61 74 75 | 73 20 3d 3d 20 46 49 4f |f (statu|s == FIO|
|00003fb0| 53 55 43 29 20 7b 0a 58 | 09 09 09 66 66 63 6c 6f |SUC) {.X|...ffclo|
|00003fc0| 73 65 28 29 3b 0a 58 09 | 09 09 72 65 74 75 72 6e |se();.X.|..return|
|00003fd0| 28 66 73 70 65 63 29 3b | 0a 58 09 09 7d 0a 58 09 |(fspec);|.X..}.X.|
|00003fe0| 7d 0a 58 0a 58 09 72 65 | 74 75 72 6e 28 4e 55 4c |}.X.X.re|turn(NUL|
|00003ff0| 4c 29 3b 09 2f 2a 20 6e | 6f 20 73 75 63 68 20 6c |L);./* n|o such l|
|00004000| 75 63 6b 20 2a 2f 0a 58 | 7d 0a 58 0a 45 4e 44 5f |uck */.X|}.X.END_|
|00004010| 4f 46 5f 62 69 6e 64 2e | 63 0a 69 66 20 74 65 73 |OF_bind.|c.if tes|
|00004020| 74 20 31 34 39 36 33 20 | 2d 6e 65 20 60 77 63 20 |t 14963 |-ne `wc |
|00004030| 2d 63 20 3c 62 69 6e 64 | 2e 63 60 3b 20 74 68 65 |-c <bind|.c`; the|
|00004040| 6e 0a 20 20 20 20 65 63 | 68 6f 20 73 68 61 72 3a |n. ec|ho shar:|
|00004050| 20 5c 22 62 69 6e 64 2e | 63 5c 22 20 75 6e 70 61 | \"bind.|c\" unpa|
|00004060| 63 6b 65 64 20 77 69 74 | 68 20 77 72 6f 6e 67 20 |cked wit|h wrong |
|00004070| 73 69 7a 65 21 0a 66 69 | 0a 23 20 65 6e 64 20 6f |size!.fi|.# end o|
|00004080| 66 20 6f 76 65 72 77 72 | 69 74 69 6e 67 20 63 68 |f overwr|iting ch|
|00004090| 65 63 6b 0a 66 69 0a 65 | 63 68 6f 20 73 68 61 72 |eck.fi.e|cho shar|
|000040a0| 3a 20 45 78 74 72 61 63 | 74 69 6e 67 20 5c 22 62 |: Extrac|ting \"b|
|000040b0| 75 66 66 65 72 2e 63 5c | 22 20 5c 28 31 35 35 32 |uffer.c\|" \(1552|
|000040c0| 39 20 63 68 61 72 61 63 | 74 65 72 73 5c 29 0a 69 |9 charac|ters\).i|
|000040d0| 66 20 74 65 73 74 20 2d | 66 20 62 75 66 66 65 72 |f test -|f buffer|
|000040e0| 2e 63 20 3b 20 74 68 65 | 6e 20 0a 20 20 65 63 68 |.c ; the|n . ech|
|000040f0| 6f 20 73 68 61 72 3a 20 | 57 69 6c 6c 20 6e 6f 74 |o shar: |Will not|
|00004100| 20 6f 76 65 72 2d 77 72 | 69 74 65 20 65 78 69 73 | over-wr|ite exis|
|00004110| 74 69 6e 67 20 66 69 6c | 65 20 5c 22 62 75 66 66 |ting fil|e \"buff|
|00004120| 65 72 2e 63 5c 22 0a 65 | 6c 73 65 0a 73 65 64 20 |er.c\".e|lse.sed |
|00004130| 22 73 2f 5e 58 2f 2f 22 | 20 3e 62 75 66 66 65 72 |"s/^X//"| >buffer|
|00004140| 2e 63 20 3c 3c 27 45 4e | 44 5f 4f 46 5f 62 75 66 |.c <<'EN|D_OF_buf|
|00004150| 66 65 72 2e 63 27 0a 58 | 2f 2a 0a 58 20 2a 20 42 |fer.c'.X|/*.X * B|
|00004160| 75 66 66 65 72 20 6d 61 | 6e 61 67 65 6d 65 6e 74 |uffer ma|nagement|
|00004170| 2e 0a 58 20 2a 20 53 6f | 6d 65 20 6f 66 20 74 68 |..X * So|me of th|
|00004180| 65 20 66 75 6e 63 74 69 | 6f 6e 73 20 61 72 65 20 |e functi|ons are |
|00004190| 69 6e 74 65 72 6e 61 6c | 2c 0a 58 20 2a 20 61 6e |internal|,.X * an|
|000041a0| 64 20 73 6f 6d 65 20 61 | 72 65 20 61 63 74 75 61 |d some a|re actua|
|000041b0| 6c 6c 79 20 61 74 74 61 | 63 68 65 64 20 74 6f 20 |lly atta|ched to |
|000041c0| 75 73 65 72 0a 58 20 2a | 20 6b 65 79 73 2e 20 4c |user.X *| keys. L|
|000041d0| 69 6b 65 20 65 76 65 72 | 79 6f 6e 65 20 65 6c 73 |ike ever|yone els|
|000041e0| 65 2c 20 74 68 65 79 20 | 73 65 74 20 68 69 6e 74 |e, they |set hint|
|000041f0| 73 0a 58 20 2a 20 66 6f | 72 20 74 68 65 20 64 69 |s.X * fo|r the di|
|00004200| 73 70 6c 61 79 20 73 79 | 73 74 65 6d 2e 0a 58 20 |splay sy|stem..X |
|00004210| 2a 2f 0a 58 23 69 6e 63 | 6c 75 64 65 20 20 20 20 |*/.X#inc|lude |
|00004220| 20 20 20 20 3c 73 74 64 | 69 6f 2e 68 3e 0a 58 23 | <std|io.h>.X#|
|00004230| 69 6e 63 6c 75 64 65 09 | 22 65 73 74 72 75 63 74 |include.|"estruct|
|00004240| 2e 68 22 0a 58 23 69 6e | 63 6c 75 64 65 20 20 20 |.h".X#in|clude |
|00004250| 20 20 20 20 20 22 65 64 | 65 66 2e 68 22 0a 58 0a | "ed|ef.h".X.|
|00004260| 58 23 69 66 09 4d 45 47 | 41 4d 41 58 20 26 20 53 |X#if.MEG|AMAX & S|
|00004270| 54 35 32 30 0a 58 6f 76 | 65 72 6c 61 79 09 22 62 |T520.Xov|erlay."b|
|00004280| 75 66 66 65 72 22 0a 58 | 23 65 6e 64 69 66 0a 58 |uffer".X|#endif.X|
|00004290| 0a 58 2f 2a 0a 58 20 2a | 20 41 74 74 61 63 68 20 |.X/*.X *| Attach |
|000042a0| 61 20 62 75 66 66 65 72 | 20 74 6f 20 61 20 77 69 |a buffer| to a wi|
|000042b0| 6e 64 6f 77 2e 20 54 68 | 65 0a 58 20 2a 20 76 61 |ndow. Th|e.X * va|
|000042c0| 6c 75 65 73 20 6f 66 20 | 64 6f 74 20 61 6e 64 20 |lues of |dot and |
|000042d0| 6d 61 72 6b 20 63 6f 6d | 65 20 66 72 6f 6d 20 74 |mark com|e from t|
|000042e0| 68 65 20 62 75 66 66 65 | 72 0a 58 20 2a 20 69 66 |he buffe|r.X * if|
|000042f0| 20 74 68 65 20 75 73 65 | 20 63 6f 75 6e 74 20 69 | the use| count i|
|00004300| 73 20 30 2e 20 4f 74 68 | 65 72 77 69 73 65 2c 20 |s 0. Oth|erwise, |
|00004310| 74 68 65 79 20 63 6f 6d | 65 0a 58 20 2a 20 66 72 |they com|e.X * fr|
|00004320| 6f 6d 20 73 6f 6d 65 20 | 6f 74 68 65 72 20 77 69 |om some |other wi|
|00004330| 6e 64 6f 77 2e 0a 58 20 | 2a 2f 0a 58 75 73 65 62 |ndow..X |*/.Xuseb|
|00004340| 75 66 66 65 72 28 66 2c | 20 6e 29 0a 58 7b 0a 58 |uffer(f,| n).X{.X|
|00004350| 20 20 20 20 20 20 20 20 | 72 65 67 69 73 74 65 72 | |register|
|00004360| 20 42 55 46 46 45 52 20 | 2a 62 70 3b 0a 58 20 20 | BUFFER |*bp;.X |
|00004370| 20 20 20 20 20 20 72 65 | 67 69 73 74 65 72 20 69 | re|gister i|
|00004380| 6e 74 20 20 20 20 73 3b | 0a 58 20 20 20 20 20 20 |nt s;|.X |
|00004390| 20 20 63 68 61 72 20 20 | 20 20 20 20 20 20 20 20 | char | |
|000043a0| 20 20 62 75 66 6e 5b 4e | 42 55 46 4e 5d 3b 0a 58 | bufn[N|BUFN];.X|
|000043b0| 0a 58 20 20 20 20 20 20 | 20 20 69 66 20 28 28 73 |.X | if ((s|
|000043c0| 3d 6d 6c 72 65 70 6c 79 | 28 22 55 73 65 20 62 75 |=mlreply|("Use bu|
|000043d0| 66 66 65 72 3a 20 22 2c | 20 62 75 66 6e 2c 20 4e |ffer: ",| bufn, N|
|000043e0| 42 55 46 4e 29 29 20 21 | 3d 20 54 52 55 45 29 0a |BUFN)) !|= TRUE).|
|000043f0| 58 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |X | |
|00004400| 20 72 65 74 75 72 6e 20 | 28 73 29 3b 0a 58 20 20 | return |(s);.X |
|00004410| 20 20 20 20 20 20 69 66 | 20 28 28 62 70 3d 62 66 | if| ((bp=bf|
|00004420| 69 6e 64 28 62 75 66 6e | 2c 20 54 52 55 45 2c 20 |ind(bufn|, TRUE, |
|00004430| 30 29 29 20 3d 3d 20 4e | 55 4c 4c 29 0a 58 20 20 |0)) == N|ULL).X |
|00004440| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 72 65 | | re|
|00004450| 74 75 72 6e 20 28 46 41 | 4c 53 45 29 3b 0a 58 09 |turn (FA|LSE);.X.|
|00004460| 72 65 74 75 72 6e 28 73 | 77 62 75 66 66 65 72 28 |return(s|wbuffer(|
|00004470| 62 70 29 29 3b 0a 58 7d | 0a 58 0a 58 6e 65 78 74 |bp));.X}|.X.Xnext|
|00004480| 62 75 66 66 65 72 28 66 | 2c 20 6e 29 09 2f 2a 20 |buffer(f|, n)./* |
|00004490| 73 77 69 74 63 68 20 74 | 6f 20 74 68 65 20 6e 65 |switch t|o the ne|
|000044a0| 78 74 20 62 75 66 66 65 | 72 20 69 6e 20 74 68 65 |xt buffe|r in the|
|000044b0| 20 62 75 66 66 65 72 20 | 6c 69 73 74 20 2a 2f 0a | buffer |list */.|
|000044c0| 58 0a 58 7b 0a 58 20 20 | 20 20 20 20 20 20 72 65 |X.X{.X | re|
|000044d0| 67 69 73 74 65 72 20 42 | 55 46 46 45 52 20 2a 62 |gister B|UFFER *b|
|000044e0| 70 3b 0a 58 0a 58 09 62 | 70 20 3d 20 63 75 72 62 |p;.X.X.b|p = curb|
|000044f0| 70 2d 3e 62 5f 62 75 66 | 70 3b 0a 58 09 2f 2a 20 |p->b_buf|p;.X./* |
|00004500| 63 79 63 6c 65 20 74 68 | 72 6f 75 67 68 20 74 68 |cycle th|rough th|
|00004510| 65 20 62 75 66 66 65 72 | 73 20 74 6f 20 66 69 6e |e buffer|s to fin|
|00004520| 64 20 61 6e 20 65 6c 69 | 67 61 62 6c 65 20 6f 6e |d an eli|gable on|
|00004530| 65 20 2a 2f 0a 58 09 77 | 68 69 6c 65 20 28 62 70 |e */.X.w|hile (bp|
|00004540| 20 3d 3d 20 4e 55 4c 4c | 20 7c 7c 20 62 70 2d 3e | == NULL| || bp->|
|00004550| 62 5f 66 6c 61 67 20 26 | 20 42 46 49 4e 56 53 29 |b_flag &| BFINVS)|
|00004560| 20 7b 0a 58 09 09 69 66 | 20 28 62 70 20 3d 3d 20 | {.X..if| (bp == |
|00004570| 4e 55 4c 4c 29 0a 58 09 | 09 09 62 70 20 3d 20 62 |NULL).X.|..bp = b|
|00004580| 68 65 61 64 70 3b 0a 58 | 09 09 65 6c 73 65 0a 58 |headp;.X|..else.X|
|00004590| 09 09 09 62 70 20 3d 20 | 62 70 2d 3e 62 5f 62 75 |...bp = |bp->b_bu|
|000045a0| 66 70 3b 0a 58 09 7d 0a | 58 09 72 65 74 75 72 6e |fp;.X.}.|X.return|
|000045b0| 28 73 77 62 75 66 66 65 | 72 28 62 70 29 29 3b 0a |(swbuffe|r(bp));.|
|000045c0| 58 7d 0a 58 0a 58 73 77 | 62 75 66 66 65 72 28 62 |X}.X.Xsw|buffer(b|
|000045d0| 70 29 09 2f 2a 20 6d 61 | 6b 65 20 62 75 66 66 65 |p)./* ma|ke buffe|
|000045e0| 72 20 42 50 20 63 75 72 | 72 65 6e 74 20 2a 2f 0a |r BP cur|rent */.|
|000045f0| 58 0a 58 42 55 46 46 45 | 52 20 2a 62 70 3b 0a 58 |X.XBUFFE|R *bp;.X|
|00004600| 0a 58 7b 0a 58 20 20 20 | 20 20 20 20 20 72 65 67 |.X{.X | reg|
|00004610| 69 73 74 65 72 20 57 49 | 4e 44 4f 57 20 2a 77 70 |ister WI|NDOW *wp|
|00004620| 3b 0a 58 0a 58 20 20 20 | 20 20 20 20 20 69 66 20 |;.X.X | if |
|00004630| 28 2d 2d 63 75 72 62 70 | 2d 3e 62 5f 6e 77 6e 64 |(--curbp|->b_nwnd|
|00004640| 20 3d 3d 20 30 29 20 7b | 20 20 20 20 20 20 20 20 | == 0) {| |
|00004650| 20 20 20 20 20 2f 2a 20 | 4c 61 73 74 20 75 73 65 | /* |Last use|
|00004660| 2e 20 20 20 20 20 20 20 | 20 20 20 20 20 2a 2f 0a |. | */.|
|00004670| 58 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |X | |
|00004680| 20 63 75 72 62 70 2d 3e | 62 5f 64 6f 74 70 20 20 | curbp->|b_dotp |
|00004690| 3d 20 63 75 72 77 70 2d | 3e 77 5f 64 6f 74 70 3b |= curwp-|>w_dotp;|
|000046a0| 0a 58 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |.X | |
|000046b0| 20 20 63 75 72 62 70 2d | 3e 62 5f 64 6f 74 6f 20 | curbp-|>b_doto |
|000046c0| 20 3d 20 63 75 72 77 70 | 2d 3e 77 5f 64 6f 74 6f | = curwp|->w_doto|
|000046d0| 3b 0a 58 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |;.X | |
|000046e0| 20 20 20 63 75 72 62 70 | 2d 3e 62 5f 6d 61 72 6b | curbp|->b_mark|
|000046f0| 70 20 3d 20 63 75 72 77 | 70 2d 3e 77 5f 6d 61 72 |p = curw|p->w_mar|
|00004700| 6b 70 3b 0a 58 20 20 20 | 20 20 20 20 20 20 20 20 |kp;.X | |
|00004710| 20 20 20 20 20 63 75 72 | 62 70 2d 3e 62 5f 6d 61 | cur|bp->b_ma|
|00004720| 72 6b 6f 20 3d 20 63 75 | 72 77 70 2d 3e 77 5f 6d |rko = cu|rwp->w_m|
|00004730| 61 72 6b 6f 3b 0a 58 20 | 20 20 20 20 20 20 20 7d |arko;.X | }|
|00004740| 0a 58 20 20 20 20 20 20 | 20 20 63 75 72 62 70 20 |.X | curbp |
|00004750| 3d 20 62 70 3b 20 20 20 | 20 20 20 20 20 20 20 20 |= bp; | |
|00004760| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004770| 20 20 2f 2a 20 53 77 69 | 74 63 68 2e 20 20 20 20 | /* Swi|tch. |
|00004780| 20 20 20 20 20 20 20 20 | 20 20 2a 2f 0a 58 09 69 | | */.X.i|
|00004790| 66 20 28 63 75 72 62 70 | 2d 3e 62 5f 61 63 74 69 |f (curbp|->b_acti|
|000047a0| 76 65 20 21 3d 20 54 52 | 55 45 29 20 7b 09 09 2f |ve != TR|UE) {../|
|000047b0| 2a 20 62 75 66 66 65 72 | 20 6e 6f 74 20 61 63 74 |* buffer| not act|
|000047c0| 69 76 65 20 79 65 74 2a | 2f 0a 58 09 09 2f 2a 20 |ive yet*|/.X../* |
|000047d0| 72 65 61 64 20 69 74 20 | 69 6e 20 61 6e 64 20 61 |read it |in and a|
|000047e0| 63 74 69 76 61 74 65 20 | 69 74 20 2a 2f 0a 58 09 |ctivate |it */.X.|
|000047f0| 09 72 65 61 64 69 6e 28 | 63 75 72 62 70 2d 3e 62 |.readin(|curbp->b|
|00004800| 5f 66 6e 61 6d 65 2c 20 | 54 52 55 45 29 3b 0a 58 |_fname, |TRUE);.X|
|00004810| 09 09 63 75 72 62 70 2d | 3e 62 5f 64 6f 74 70 20 |..curbp-|>b_dotp |
|00004820| 3d 20 6c 66 6f 72 77 28 | 63 75 72 62 70 2d 3e 62 |= lforw(|curbp->b|
|00004830| 5f 6c 69 6e 65 70 29 3b | 0a 58 09 09 63 75 72 62 |_linep);|.X..curb|
|00004840| 70 2d 3e 62 5f 64 6f 74 | 6f 20 3d 20 30 3b 0a 58 |p->b_dot|o = 0;.X|
|00004850| 09 09 63 75 72 62 70 2d | 3e 62 5f 61 63 74 69 76 |..curbp-|>b_activ|
|00004860| 65 20 3d 20 54 52 55 45 | 3b 0a 58 09 7d 0a 58 20 |e = TRUE|;.X.}.X |
|00004870| 20 20 20 20 20 20 20 63 | 75 72 77 70 2d 3e 77 5f | c|urwp->w_|
|00004880| 62 75 66 70 20 20 3d 20 | 62 70 3b 0a 58 20 20 20 |bufp = |bp;.X |
|00004890| 20 20 20 20 20 63 75 72 | 77 70 2d 3e 77 5f 6c 69 | cur|wp->w_li|
|000048a0| 6e 65 70 20 3d 20 62 70 | 2d 3e 62 5f 6c 69 6e 65 |nep = bp|->b_line|
|000048b0| 70 3b 20 20 20 20 20 20 | 20 20 20 20 20 2f 2a 20 |p; | /* |
|000048c0| 46 6f 72 20 6d 61 63 72 | 6f 73 2c 20 69 67 6e 6f |For macr|os, igno|
|000048d0| 72 65 64 2e 20 2a 2f 0a | 58 20 20 20 20 20 20 20 |red. */.|X |
|000048e0| 20 63 75 72 77 70 2d 3e | 77 5f 66 6c 61 67 20 7c | curwp->|w_flag ||
|000048f0| 3d 20 57 46 4d 4f 44 45 | 7c 57 46 46 4f 52 43 45 |= WFMODE||WFFORCE|
|00004900| 7c 57 46 48 41 52 44 3b | 20 2f 2a 20 51 75 69 74 ||WFHARD;| /* Quit|
|00004910| 65 20 6e 61 73 74 79 2e | 20 20 20 20 20 20 20 20 |e nasty.| |
|00004920| 20 2a 2f 0a 58 20 20 20 | 20 20 20 20 20 69 66 20 | */.X | if |
|00004930| 28 62 70 2d 3e 62 5f 6e | 77 6e 64 2b 2b 20 3d 3d |(bp->b_n|wnd++ ==|
|00004940| 20 30 29 20 7b 20 20 20 | 20 20 20 20 20 20 20 20 | 0) { | |
|00004950| 20 20 20 20 20 2f 2a 20 | 46 69 72 73 74 20 75 73 | /* |First us|
|00004960| 65 2e 20 20 20 20 20 20 | 20 20 20 20 20 2a 2f 0a |e. | */.|
|00004970| 58 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |X | |
|00004980| 20 63 75 72 77 70 2d 3e | 77 5f 64 6f 74 70 20 20 | curwp->|w_dotp |
|00004990| 3d 20 62 70 2d 3e 62 5f | 64 6f 74 70 3b 0a 58 20 |= bp->b_|dotp;.X |
|000049a0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 63 | | c|
|000049b0| 75 72 77 70 2d 3e 77 5f | 64 6f 74 6f 20 20 3d 20 |urwp->w_|doto = |
|000049c0| 62 70 2d 3e 62 5f 64 6f | 74 6f 3b 0a 58 20 20 20 |bp->b_do|to;.X |
|000049d0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 63 75 72 | | cur|
|000049e0| 77 70 2d 3e 77 5f 6d 61 | 72 6b 70 20 3d 20 62 70 |wp->w_ma|rkp = bp|
|000049f0| 2d 3e 62 5f 6d 61 72 6b | 70 3b 0a 58 20 20 20 20 |->b_mark|p;.X |
|00004a00| 20 20 20 20 20 20 20 20 | 20 20 20 20 63 75 72 77 | | curw|
|00004a10| 70 2d 3e 77 5f 6d 61 72 | 6b 6f 20 3d 20 62 70 2d |p->w_mar|ko = bp-|
|00004a20| 3e 62 5f 6d 61 72 6b 6f | 3b 0a 58 20 20 20 20 20 |>b_marko|;.X |
|00004a30| 20 20 20 20 20 20 20 20 | 20 20 20 72 65 74 75 72 | | retur|
|00004a40| 6e 20 28 54 52 55 45 29 | 3b 0a 58 20 20 20 20 20 |n (TRUE)|;.X |
|00004a50| 20 20 20 7d 0a 58 20 20 | 20 20 20 20 20 20 77 70 | }.X | wp|
|00004a60| 20 3d 20 77 68 65 61 64 | 70 3b 20 20 20 20 20 20 | = whead|p; |
|00004a70| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004a80| 20 20 20 20 20 20 2f 2a | 20 4c 6f 6f 6b 20 66 6f | /*| Look fo|
|00004a90| 72 20 6f 6c 64 2e 20 20 | 20 20 20 20 20 20 2a 2f |r old. | */|
|00004aa0| 0a 58 20 20 20 20 20 20 | 20 20 77 68 69 6c 65 20 |.X | while |
|00004ab0| 28 77 70 20 21 3d 20 4e | 55 4c 4c 29 20 7b 0a 58 |(wp != N|ULL) {.X|
|00004ac0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004ad0| 69 66 20 28 77 70 21 3d | 63 75 72 77 70 20 26 26 |if (wp!=|curwp &&|
|00004ae0| 20 77 70 2d 3e 77 5f 62 | 75 66 70 3d 3d 62 70 29 | wp->w_b|ufp==bp)|
|00004af0| 20 7b 0a 58 20 20 20 20 | 20 20 20 20 20 20 20 20 | {.X | |
|00004b00| 20 20 20 20 20 20 20 20 | 20 20 20 20 63 75 72 77 | | curw|
|00004b10| 70 2d 3e 77 5f 64 6f 74 | 70 20 20 3d 20 77 70 2d |p->w_dot|p = wp-|
|00004b20| 3e 77 5f 64 6f 74 70 3b | 0a 58 20 20 20 20 20 20 |>w_dotp;|.X |
|00004b30| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004b40| 20 20 63 75 72 77 70 2d | 3e 77 5f 64 6f 74 6f 20 | curwp-|>w_doto |
|00004b50| 20 3d 20 77 70 2d 3e 77 | 5f 64 6f 74 6f 3b 0a 58 | = wp->w|_doto;.X|
|00004b60| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004b70| 20 20 20 20 20 20 20 20 | 63 75 72 77 70 2d 3e 77 | |curwp->w|
|00004b80| 5f 6d 61 72 6b 70 20 3d | 20 77 70 2d 3e 77 5f 6d |_markp =| wp->w_m|
|00004b90| 61 72 6b 70 3b 0a 58 20 | 20 20 20 20 20 20 20 20 |arkp;.X | |
|00004ba0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 63 | | c|
|00004bb0| 75 72 77 70 2d 3e 77 5f | 6d 61 72 6b 6f 20 3d 20 |urwp->w_|marko = |
|00004bc0| 77 70 2d 3e 77 5f 6d 61 | 72 6b 6f 3b 0a 58 20 20 |wp->w_ma|rko;.X |
|00004bd0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004be0| 20 20 20 20 20 20 62 72 | 65 61 6b 3b 0a 58 20 20 | br|eak;.X |
|00004bf0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 7d 0a | | }.|
|00004c00| 58 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |X | |
|00004c10| 20 77 70 20 3d 20 77 70 | 2d 3e 77 5f 77 6e 64 70 | wp = wp|->w_wndp|
|00004c20| 3b 0a 58 20 20 20 20 20 | 20 20 20 7d 0a 58 20 20 |;.X | }.X |
|00004c30| 20 20 20 20 20 20 72 65 | 74 75 72 6e 20 28 54 52 | re|turn (TR|
|00004c40| 55 45 29 3b 0a 58 7d 0a | 58 0a 58 2f 2a 0a 58 20 |UE);.X}.|X.X/*.X |
|00004c50| 2a 20 44 69 73 70 6f 73 | 65 20 6f 66 20 61 20 62 |* Dispos|e of a b|
|00004c60| 75 66 66 65 72 2c 20 62 | 79 20 6e 61 6d 65 2e 0a |uffer, b|y name..|
|00004c70| 58 20 2a 20 41 73 6b 20 | 66 6f 72 20 74 68 65 20 |X * Ask |for the |
|00004c80| 6e 61 6d 65 2e 20 4c 6f | 6f 6b 20 69 74 20 75 70 |name. Lo|ok it up|
|00004c90| 20 28 64 6f 6e 27 74 20 | 67 65 74 20 74 6f 6f 0a | (don't |get too.|
|00004ca0| 58 20 2a 20 75 70 73 65 | 74 20 69 66 20 69 74 20 |X * upse|t if it |
|00004cb0| 69 73 6e 27 74 20 74 68 | 65 72 65 20 61 74 20 61 |isn't th|ere at a|
|00004cc0| 6c 6c 21 29 2e 20 47 65 | 74 20 71 75 69 74 65 20 |ll!). Ge|t quite |
|00004cd0| 75 70 73 65 74 0a 58 20 | 2a 20 69 66 20 74 68 65 |upset.X |* if the|
|00004ce0| 20 62 75 66 66 65 72 20 | 69 73 20 62 65 69 6e 67 | buffer |is being|
|00004cf0| 20 64 69 73 70 6c 61 79 | 65 64 2e 20 43 6c 65 61 | display|ed. Clea|
|00004d00| 72 20 74 68 65 20 62 75 | 66 66 65 72 20 28 61 73 |r the bu|ffer (as|
|00004d10| 6b 0a 58 20 2a 20 69 66 | 20 74 68 65 20 62 75 66 |k.X * if| the buf|
|00004d20| 66 65 72 20 68 61 73 20 | 62 65 65 6e 20 63 68 61 |fer has |been cha|
|00004d30| 6e 67 65 64 29 2e 20 54 | 68 65 6e 20 66 72 65 65 |nged). T|hen free|
|00004d40| 20 74 68 65 20 68 65 61 | 64 65 72 0a 58 20 2a 20 | the hea|der.X * |
|00004d50| 6c 69 6e 65 20 61 6e 64 | 20 74 68 65 20 62 75 66 |line and| the buf|
|00004d60| 66 65 72 20 68 65 61 64 | 65 72 2e 20 42 6f 75 6e |fer head|er. Boun|
|00004d70| 64 20 74 6f 20 22 43 2d | 58 20 4b 22 2e 0a 58 20 |d to "C-|X K"..X |
|00004d80| 2a 2f 0a 58 6b 69 6c 6c | 62 75 66 66 65 72 28 66 |*/.Xkill|buffer(f|
|00004d90| 2c 20 6e 29 0a 58 0a 58 | 7b 0a 58 09 72 65 67 69 |, n).X.X|{.X.regi|
|00004da0| 73 74 65 72 20 42 55 46 | 46 45 52 20 2a 62 70 3b |ster BUF|FER *bp;|
|00004db0| 0a 58 20 20 20 20 20 20 | 20 20 72 65 67 69 73 74 |.X | regist|
|00004dc0| 65 72 20 69 6e 74 20 20 | 20 20 73 3b 0a 58 20 20 |er int | s;.X |
|00004dd0| 20 20 20 20 20 20 63 68 | 61 72 20 62 75 66 6e 5b | ch|ar bufn[|
|00004de0| 4e 42 55 46 4e 5d 3b 0a | 58 0a 58 20 20 20 20 20 |NBUFN];.|X.X |
|00004df0| 20 20 20 69 66 20 28 28 | 73 3d 6d 6c 72 65 70 6c | if ((|s=mlrepl|
|00004e00| 79 28 22 4b 69 6c 6c 20 | 62 75 66 66 65 72 3a 20 |y("Kill |buffer: |
|00004e10| 22 2c 20 62 75 66 6e 2c | 20 4e 42 55 46 4e 29 29 |", bufn,| NBUFN))|
|00004e20| 20 21 3d 20 54 52 55 45 | 29 0a 58 20 20 20 20 20 | != TRUE|).X |
|00004e30| 20 20 20 20 20 20 20 20 | 20 20 20 72 65 74 75 72 | | retur|
|00004e40| 6e 28 73 29 3b 0a 58 20 | 20 20 20 20 20 20 20 69 |n(s);.X | i|
|00004e50| 66 20 28 28 62 70 3d 62 | 66 69 6e 64 28 62 75 66 |f ((bp=b|find(buf|
|00004e60| 6e 2c 20 46 41 4c 53 45 | 2c 20 30 29 29 20 3d 3d |n, FALSE|, 0)) ==|
|00004e70| 20 4e 55 4c 4c 29 20 2f | 2a 20 45 61 73 79 20 69 | NULL) /|* Easy i|
|00004e80| 66 20 75 6e 6b 6e 6f 77 | 6e 2e 20 20 20 20 20 2a |f unknow|n. *|
|00004e90| 2f 0a 58 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |/.X | |
|00004ea0| 20 20 20 72 65 74 75 72 | 6e 20 28 54 52 55 45 29 | retur|n (TRUE)|
|00004eb0| 3b 0a 58 09 69 66 28 62 | 70 2d 3e 62 5f 66 6c 61 |;.X.if(b|p->b_fla|
|00004ec0| 67 20 26 20 42 46 49 4e | 56 53 29 09 09 2f 2a 20 |g & BFIN|VS)../* |
|00004ed0| 44 65 61 6c 20 77 69 74 | 68 20 73 70 65 63 69 61 |Deal wit|h specia|
|00004ee0| 6c 20 62 75 66 66 65 72 | 73 09 2a 2f 0a 58 09 09 |l buffer|s.*/.X..|
|00004ef0| 09 72 65 74 75 72 6e 20 | 28 54 52 55 45 29 3b 09 |.return |(TRUE);.|
|00004f00| 09 2f 2a 20 62 79 20 64 | 6f 69 6e 67 20 6e 6f 74 |./* by d|oing not|
|00004f10| 68 69 6e 67 2e 09 2a 2f | 0a 58 09 72 65 74 75 72 |hing..*/|.X.retur|
|00004f20| 6e 28 7a 6f 74 62 75 66 | 28 62 70 29 29 3b 0a 58 |n(zotbuf|(bp));.X|
|00004f30| 7d 0a 58 0a 58 7a 6f 74 | 62 75 66 28 62 70 29 09 |}.X.Xzot|buf(bp).|
|00004f40| 2f 2a 20 6b 69 6c 6c 20 | 74 68 65 20 62 75 66 66 |/* kill |the buff|
|00004f50| 65 72 20 70 6f 69 6e 74 | 65 64 20 74 6f 20 62 79 |er point|ed to by|
|00004f60| 20 62 70 20 2a 2f 0a 58 | 0a 58 72 65 67 69 73 74 | bp */.X|.Xregist|
|00004f70| 65 72 20 42 55 46 46 45 | 52 20 2a 62 70 3b 0a 58 |er BUFFE|R *bp;.X|
|00004f80| 0a 58 7b 0a 58 20 20 20 | 20 20 20 20 20 72 65 67 |.X{.X | reg|
|00004f90| 69 73 74 65 72 20 42 55 | 46 46 45 52 20 2a 62 70 |ister BU|FFER *bp|
|00004fa0| 31 3b 0a 58 20 20 20 20 | 20 20 20 20 72 65 67 69 |1;.X | regi|
|00004fb0| 73 74 65 72 20 42 55 46 | 46 45 52 20 2a 62 70 32 |ster BUF|FER *bp2|
|00004fc0| 3b 0a 58 20 20 20 20 20 | 20 20 20 72 65 67 69 73 |;.X | regis|
|00004fd0| 74 65 72 20 69 6e 74 20 | 20 20 20 73 3b 0a 58 0a |ter int | s;.X.|
|00004fe0| 58 20 20 20 20 20 20 20 | 20 69 66 20 28 62 70 2d |X | if (bp-|
|00004ff0| 3e 62 5f 6e 77 6e 64 20 | 21 3d 20 30 29 20 7b 20 |>b_nwnd |!= 0) { |
|00005000| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00005010| 20 2f 2a 20 45 72 72 6f | 72 20 69 66 20 6f 6e 20 | /* Erro|r if on |
|00005020| 73 63 72 65 65 6e 2e 20 | 20 2a 2f 0a 58 20 20 20 |screen. | */.X |
|00005030| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 6d 6c 77 | | mlw|
|00005040| 72 69 74 65 28 22 42 75 | 66 66 65 72 20 69 73 20 |rite("Bu|ffer is |
|00005050| 62 65 69 6e 67 20 64 69 | 73 70 6c 61 79 65 64 22 |being di|splayed"|
|00005060| 29 3b 0a 58 20 20 20 20 | 20 20 20 20 20 20 20 20 |);.X | |
|00005070| 20 20 20 20 72 65 74 75 | 72 6e 20 28 46 41 4c 53 | retu|rn (FALS|
|00005080| 45 29 3b 0a 58 20 20 20 | 20 20 20 20 20 7d 0a 58 |E);.X | }.X|
|00005090| 20 20 20 20 20 20 20 20 | 69 66 20 28 28 73 3d 62 | |if ((s=b|
|000050a0| 63 6c 65 61 72 28 62 70 | 29 29 20 21 3d 20 54 52 |clear(bp|)) != TR|
|000050b0| 55 45 29 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |UE) | |
|000050c0| 2f 2a 20 42 6c 6f 77 20 | 74 65 78 74 20 61 77 61 |/* Blow |text awa|
|000050d0| 79 2e 20 20 20 20 20 20 | 2a 2f 0a 58 20 20 20 20 |y. |*/.X |
|000050e0| 20 20 20 20 20 20 20 20 | 20 20 20 20 72 65 74 75 | | retu|
|000050f0| 72 6e 20 28 73 29 3b 0a | 58 20 20 20 20 20 20 20 |rn (s);.|X |
|00005100| 20 66 72 65 65 28 28 63 | 68 61 72 20 2a 29 20 62 | free((c|har *) b|
|00005110| 70 2d 3e 62 5f 6c 69 6e | 65 70 29 3b 20 20 20 20 |p->b_lin|ep); |
|00005120| 20 20 20 20 20 20 20 20 | 20 2f 2a 20 52 65 6c 65 | | /* Rele|
|00005130| 61 73 65 20 68 65 61 64 | 65 72 20 6c 69 6e 65 2e |ase head|er line.|
|00005140| 20 2a 2f 0a 58 20 20 20 | 20 20 20 20 20 62 70 31 | */.X | bp1|
|00005150| 20 3d 20 4e 55 4c 4c 3b | 20 20 20 20 20 20 20 20 | = NULL;| |
|00005160| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00005170| 20 20 20 20 20 2f 2a 20 | 46 69 6e 64 20 74 68 65 | /* |Find the|
|00005180| 20 68 65 61 64 65 72 2e | 20 20 20 20 20 2a 2f 0a | header.| */.|
|00005190| 58 20 20 20 20 20 20 20 | 20 62 70 32 20 3d 20 62 |X | bp2 = b|
|000051a0| 68 65 61 64 70 3b 0a 58 | 20 20 20 20 20 20 20 20 |headp;.X| |
|000051b0| 77 68 69 6c 65 20 28 62 | 70 32 20 21 3d 20 62 70 |while (b|p2 != bp|
|000051c0| 29 20 7b 0a 58 20 20 20 | 20 20 20 20 20 20 20 20 |) {.X | |
|000051d0| 20 20 20 20 20 62 70 31 | 20 3d 20 62 70 32 3b 0a | bp1| = bp2;.|
|000051e0| 58 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |X | |
|000051f0| 20 62 70 32 20 3d 20 62 | 70 32 2d 3e 62 5f 62 75 | bp2 = b|p2->b_bu|
|00005200| 66 70 3b 0a 58 20 20 20 | 20 20 20 20 20 7d 0a 58 |fp;.X | }.X|
|00005210| 20 20 20 20 20 20 20 20 | 62 70 32 20 3d 20 62 70 | |bp2 = bp|
|00005220| 32 2d 3e 62 5f 62 75 66 | 70 3b 20 20 20 20 20 20 |2->b_buf|p; |
|00005230| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00005240| 2f 2a 20 4e 65 78 74 20 | 6f 6e 65 20 69 6e 20 63 |/* Next |one in c|
|00005250| 68 61 69 6e 2e 20 20 20 | 2a 2f 0a 58 20 20 20 20 |hain. |*/.X |
|00005260| 20 20 20 20 69 66 20 28 | 62 70 31 20 3d 3d 20 4e | if (|bp1 == N|
|00005270| 55 4c 4c 29 20 20 20 20 | 20 20 20 20 20 20 20 20 |ULL) | |
|00005280| 20 20 20 20 20 20 20 20 | 20 20 20 20 2f 2a 20 55 | | /* U|
|00005290| 6e 6c 69 6e 6b 20 69 74 | 2e 20 20 20 20 20 20 20 |nlink it|. |
|000052a0| 20 20 20 20 2a 2f 0a 58 | 20 20 20 20 20 20 20 20 | */.X| |
|000052b0| 20 20 20 20 20 20 20 20 | 62 68 65 61 64 70 20 3d | |bheadp =|
|000052c0| 20 62 70 32 3b 0a 58 20 | 20 20 20 20 20 20 20 65 | bp2;.X | e|
|000052d0| 6c 73 65 0a 58 20 20 20 | 20 20 20 20 20 20 20 20 |lse.X | |
|000052e0| 20 20 20 20 20 62 70 31 | 2d 3e 62 5f 62 75 66 70 | bp1|->b_bufp|
|000052f0| 20 3d 20 62 70 32 3b 0a | 58 20 20 20 20 20 20 20 | = bp2;.|X |
|00005300| 20 66 72 65 65 28 28 63 | 68 61 72 20 2a 29 20 62 | free((c|har *) b|
|00005310| 70 29 3b 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |p); | |
|00005320| 20 20 20 20 20 20 20 20 | 20 2f 2a 20 52 65 6c 65 | | /* Rele|
|00005330| 61 73 65 20 62 75 66 66 | 65 72 20 62 6c 6f 63 6b |ase buff|er block|
|00005340| 20 2a 2f 0a 58 20 20 20 | 20 20 20 20 20 72 65 74 | */.X | ret|
|00005350| 75 72 6e 20 28 54 52 55 | 45 29 3b 0a 58 7d 0a 58 |urn (TRU|E);.X}.X|
|00005360| 0a 58 6e 61 6d 65 62 75 | 66 66 65 72 28 66 2c 6e |.Xnamebu|ffer(f,n|
|00005370| 29 09 09 2f 2a 09 52 65 | 6e 61 6d 65 20 74 68 65 |)../*.Re|name the|
|00005380| 20 63 75 72 72 65 6e 74 | 20 62 75 66 66 65 72 09 | current| buffer.|
|00005390| 2a 2f 0a 58 0a 58 69 6e | 74 20 66 2c 20 6e 3b 09 |*/.X.Xin|t f, n;.|
|000053a0| 09 2f 2a 20 64 65 66 61 | 75 6c 74 20 46 6c 61 67 |./* defa|ult Flag|
|000053b0| 20 26 20 4e 75 6d 65 72 | 69 63 20 61 72 67 20 2a | & Numer|ic arg *|
|000053c0| 2f 0a 58 0a 58 7b 0a 58 | 09 72 65 67 69 73 74 65 |/.X.X{.X|.registe|
|000053d0| 72 20 42 55 46 46 45 52 | 20 2a 62 70 3b 09 2f 2a |r BUFFER| *bp;./*|
|000053e0| 20 70 6f 69 6e 74 65 72 | 20 74 6f 20 73 63 61 6e | pointer| to scan|
|000053f0| 20 74 68 72 6f 75 67 68 | 20 61 6c 6c 20 62 75 66 | through| all buf|
|00005400| 66 65 72 73 20 2a 2f 0a | 58 09 63 68 61 72 20 62 |fers */.|X.char b|
|00005410| 75 66 6e 5b 4e 42 55 46 | 4e 5d 3b 09 2f 2a 20 62 |ufn[NBUF|N];./* b|
|00005420| 75 66 66 65 72 20 74 6f | 20 68 6f 6c 64 20 62 75 |uffer to| hold bu|
|00005430| 66 66 65 72 20 6e 61 6d | 65 20 2a 2f 0a 58 0a 58 |ffer nam|e */.X.X|
|00005440| 09 2f 2a 20 70 72 6f 6d | 70 74 20 66 6f 72 20 61 |./* prom|pt for a|
|00005450| 6e 64 20 67 65 74 20 74 | 68 65 20 6e 65 77 20 62 |nd get t|he new b|
|00005460| 75 66 66 65 72 20 6e 61 | 6d 65 20 2a 2f 0a 58 61 |uffer na|me */.Xa|
|00005470| 73 6b 3a 09 69 66 20 28 | 6d 6c 72 65 70 6c 79 28 |sk:.if (|mlreply(|
|00005480| 22 43 68 61 6e 67 65 20 | 62 75 66 66 65 72 20 6e |"Change |buffer n|
|00005490| 61 6d 65 20 74 6f 3a 20 | 22 2c 20 62 75 66 6e 2c |ame to: |", bufn,|
|000054a0| 20 4e 42 55 46 4e 29 20 | 21 3d 20 54 52 55 45 29 | NBUFN) |!= TRUE)|
|000054b0| 0a 58 09 09 72 65 74 75 | 72 6e 28 46 41 4c 53 45 |.X..retu|rn(FALSE|
|000054c0| 29 3b 0a 58 0a 58 09 2f | 2a 20 61 6e 64 20 63 68 |);.X.X./|* and ch|
|000054d0| 65 63 6b 20 66 6f 72 20 | 64 75 70 6c 69 63 61 74 |eck for |duplicat|
|000054e0| 65 73 20 2a 2f 0a 58 09 | 62 70 20 3d 20 62 68 65 |es */.X.|bp = bhe|
|000054f0| 61 64 70 3b 0a 58 09 77 | 68 69 6c 65 20 28 62 70 |adp;.X.w|hile (bp|
|00005500| 20 21 3d 20 4e 55 4c 4c | 29 20 7b 0a 58 09 09 69 | != NULL|) {.X..i|
|00005510| 66 20 28 62 70 20 21 3d | 20 63 75 72 62 70 29 20 |f (bp !=| curbp) |
|00005520| 7b 0a 58 09 09 09 2f 2a | 20 69 66 20 74 68 65 20 |{.X.../*| if the |
|00005530| 6e 61 6d 65 73 20 74 68 | 65 20 73 61 6d 65 20 2a |names th|e same *|
|00005540| 2f 0a 58 09 09 09 69 66 | 20 28 73 74 72 63 6d 70 |/.X...if| (strcmp|
|00005550| 28 62 75 66 6e 2c 20 62 | 70 2d 3e 62 5f 62 6e 61 |(bufn, b|p->b_bna|
|00005560| 6d 65 29 20 3d 3d 20 30 | 29 0a 58 09 09 09 09 67 |me) == 0|).X....g|
|00005570| 6f 74 6f 20 61 73 6b 3b | 20 20 2f 2a 20 74 72 79 |oto ask;| /* try|
|00005580| 20 61 67 61 69 6e 20 2a | 2f 0a 58 09 09 7d 0a 58 | again *|/.X..}.X|
|00005590| 09 09 62 70 20 3d 20 62 | 70 2d 3e 62 5f 62 75 66 |..bp = b|p->b_buf|
|000055a0| 70 3b 09 2f 2a 20 6f 6e | 77 61 72 64 20 2a 2f 0a |p;./* on|ward */.|
|000055b0| 58 09 7d 0a 58 0a 58 09 | 73 74 72 63 70 79 28 63 |X.}.X.X.|strcpy(c|
|000055c0| 75 72 62 70 2d 3e 62 5f | 62 6e 61 6d 65 2c 20 62 |urbp->b_|bname, b|
|000055d0| 75 66 6e 29 3b 09 2f 2a | 20 63 6f 70 79 20 62 75 |ufn);./*| copy bu|
|000055e0| 66 66 65 72 20 6e 61 6d | 65 20 74 6f 20 73 74 72 |ffer nam|e to str|
|000055f0| 75 63 74 75 72 65 20 2a | 2f 0a 58 09 63 75 72 77 |ucture *|/.X.curw|
|00005600| 70 2d 3e 77 5f 66 6c 61 | 67 20 7c 3d 20 57 46 4d |p->w_fla|g |= WFM|
|00005610| 4f 44 45 3b 09 2f 2a 20 | 6d 61 6b 65 20 6d 6f 64 |ODE;./* |make mod|
|00005620| 65 20 6c 69 6e 65 20 72 | 65 70 6c 6f 74 20 2a 2f |e line r|eplot */|
|00005630| 0a 58 09 6d 6c 65 72 61 | 73 65 28 29 3b 0a 58 09 |.X.mlera|se();.X.|
|00005640| 72 65 74 75 72 6e 28 54 | 52 55 45 29 3b 0a 58 7d |return(T|RUE);.X}|
|00005650| 0a 58 0a 58 2f 2a 0a 58 | 20 2a 20 4c 69 73 74 20 |.X.X/*.X| * List |
|00005660| 61 6c 6c 20 6f 66 20 74 | 68 65 20 61 63 74 69 76 |all of t|he activ|
|00005670| 65 0a 58 20 2a 20 62 75 | 66 66 65 72 73 2e 20 46 |e.X * bu|ffers. F|
|00005680| 69 72 73 74 20 75 70 64 | 61 74 65 20 74 68 65 20 |irst upd|ate the |
|00005690| 73 70 65 63 69 61 6c 0a | 58 20 2a 20 62 75 66 66 |special.|X * buff|
|000056a0| 65 72 20 74 68 61 74 20 | 68 6f 6c 64 73 20 74 68 |er that |holds th|
|000056b0| 65 20 6c 69 73 74 2e 20 | 4e 65 78 74 20 6d 61 6b |e list. |Next mak|
|000056c0| 65 0a 58 20 2a 20 73 75 | 72 65 20 61 74 20 6c 65 |e.X * su|re at le|
|000056d0| 61 73 74 20 31 20 77 69 | 6e 64 6f 77 20 69 73 20 |ast 1 wi|ndow is |
|000056e0| 64 69 73 70 6c 61 79 69 | 6e 67 20 74 68 65 0a 58 |displayi|ng the.X|
|000056f0| 20 2a 20 62 75 66 66 65 | 72 20 6c 69 73 74 2c 20 | * buffe|r list, |
|00005700| 73 70 6c 69 74 74 69 6e | 67 20 74 68 65 20 73 63 |splittin|g the sc|
|00005710| 72 65 65 6e 20 69 66 20 | 74 68 69 73 0a 58 20 2a |reen if |this.X *|
|00005720| 20 69 73 20 77 68 61 74 | 20 69 74 20 74 61 6b 65 | is what| it take|
|00005730| 73 2e 20 4c 61 73 74 6c | 79 2c 20 72 65 70 61 69 |s. Lastl|y, repai|
|00005740| 6e 74 20 61 6c 6c 20 6f | 66 0a 58 20 2a 20 74 68 |nt all o|f.X * th|
|00005750| 65 20 77 69 6e 64 6f 77 | 73 20 74 68 61 74 20 61 |e window|s that a|
|00005760| 72 65 20 64 69 73 70 6c | 61 79 69 6e 67 20 74 68 |re displ|aying th|
|00005770| 65 0a 58 20 2a 20 6c 69 | 73 74 2e 20 42 6f 75 6e |e.X * li|st. Boun|
|00005780| 64 20 74 6f 20 22 43 2d | 58 20 43 2d 42 22 2e 0a |d to "C-|X C-B"..|
|00005790| 58 20 2a 2f 0a 58 6c 69 | 73 74 62 75 66 66 65 72 |X */.Xli|stbuffer|
|000057a0| 73 28 66 2c 20 6e 29 0a | 58 7b 0a 58 20 20 20 20 |s(f, n).|X{.X |
|000057b0| 20 20 20 20 72 65 67 69 | 73 74 65 72 20 57 49 4e | regi|ster WIN|
|000057c0| 44 4f 57 20 2a 77 70 3b | 0a 58 20 20 20 20 20 20 |DOW *wp;|.X |
|000057d0| 20 20 72 65 67 69 73 74 | 65 72 20 42 55 46 46 45 | regist|er BUFFE|
|000057e0| 52 20 2a 62 70 3b 0a 58 | 20 20 20 20 20 20 20 20 |R *bp;.X| |
|000057f0| 72 65 67 69 73 74 65 72 | 20 69 6e 74 20 20 20 20 |register| int |
|00005800| 73 3b 0a 58 0a 58 20 20 | 20 20 20 20 20 20 69 66 |s;.X.X | if|
|00005810| 20 28 28 73 3d 6d 61 6b | 65 6c 69 73 74 28 29 29 | ((s=mak|elist())|
|00005820| 20 21 3d 20 54 52 55 45 | 29 0a 58 20 20 20 20 20 | != TRUE|).X |
|00005830| 20 20 20 20 20 20 20 20 | 20 20 20 72 65 74 75 72 | | retur|
|00005840| 6e 20 28 73 29 3b 0a 58 | 20 20 20 20 20 20 20 20 |n (s);.X| |
|00005850| 69 66 20 28 62 6c 69 73 | 74 70 2d 3e 62 5f 6e 77 |if (blis|tp->b_nw|
|00005860| 6e 64 20 3d 3d 20 30 29 | 20 7b 20 20 20 20 20 20 |nd == 0)| { |
|00005870| 20 20 20 20 20 20 20 20 | 2f 2a 20 4e 6f 74 20 6f | |/* Not o|
|00005880| 6e 20 73 63 72 65 65 6e | 20 79 65 74 2e 20 20 20 |n screen| yet. |
|00005890| 2a 2f 0a 58 20 20 20 20 | 20 20 20 20 20 20 20 20 |*/.X | |
|000058a0| 20 20 20 20 69 66 20 28 | 28 77 70 3d 77 70 6f 70 | if (|(wp=wpop|
|000058b0| 75 70 28 29 29 20 3d 3d | 20 4e 55 4c 4c 29 0a 58 |up()) ==| NULL).X|
|000058c0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000058d0| 20 20 20 20 20 20 20 20 | 72 65 74 75 72 6e 20 28 | |return (|
|000058e0| 46 41 4c 53 45 29 3b 0a | 58 20 20 20 20 20 20 20 |FALSE);.|X |
|000058f0| 20 20 20 20 20 20 20 20 | 20 62 70 20 3d 20 77 70 | | bp = wp|
|00005900| 2d 3e 77 5f 62 75 66 70 | 3b 0a 58 20 20 20 20 20 |->w_bufp|;.X |
|00005910| 20 20 20 20 20 20 20 20 | 20 20 20 69 66 20 28 2d | | if (-|
|00005920| 2d 62 70 2d 3e 62 5f 6e | 77 6e 64 20 3d 3d 20 30 |-bp->b_n|wnd == 0|
|00005930| 29 20 7b 0a 58 20 20 20 | 20 20 20 20 20 20 20 20 |) {.X | |
|00005940| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 62 70 2d | | bp-|
|00005950| 3e 62 5f 64 6f 74 70 20 | 20 3d 20 77 70 2d 3e 77 |>b_dotp | = wp->w|
|00005960| 5f 64 6f 74 70 3b 0a 58 | 20 20 20 20 20 20 20 20 |_dotp;.X| |
|00005970| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00005980| 62 70 2d 3e 62 5f 64 6f | 74 6f 20 20 3d 20 77 70 |bp->b_do|to = wp|
|00005990| 2d 3e 77 5f 64 6f 74 6f | 3b 0a 58 20 20 20 20 20 |->w_doto|;.X |
|000059a0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000059b0| 20 20 20 62 70 2d 3e 62 | 5f 6d 61 72 6b 70 20 3d | bp->b|_markp =|
|000059c0| 20 77 70 2d 3e 77 5f 6d | 61 72 6b 70 3b 0a 58 20 | wp->w_m|arkp;.X |
|000059d0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000059e0| 20 20 20 20 20 20 20 62 | 70 2d 3e 62 5f 6d 61 72 | b|p->b_mar|
|000059f0| 6b 6f 20 3d 20 77 70 2d | 3e 77 5f 6d 61 72 6b 6f |ko = wp-|>w_marko|
|00005a00| 3b 0a 58 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |;.X | |
|00005a10| 20 20 20 7d 0a 58 20 20 | 20 20 20 20 20 20 20 20 | }.X | |
|00005a20| 20 20 20 20 20 20 77 70 | 2d 3e 77 5f 62 75 66 70 | wp|->w_bufp|
|00005a30| 20 20 3d 20 62 6c 69 73 | 74 70 3b 0a 58 20 20 20 | = blis|tp;.X |
|00005a40| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 2b 2b 62 | | ++b|
|00005a50| 6c 69 73 74 70 2d 3e 62 | 5f 6e 77 6e 64 3b 0a 58 |listp->b|_nwnd;.X|
|00005a60| 20 20 20 20 20 20 20 20 | 7d 0a 58 20 20 20 20 20 | |}.X |
|00005a70| 20 20 20 77 70 20 3d 20 | 77 68 65 61 64 70 3b 0a | wp = |wheadp;.|
|00005a80| 58 20 20 20 20 20 20 20 | 20 77 68 69 6c 65 20 28 |X | while (|
|00005a90| 77 70 20 21 3d 20 4e 55 | 4c 4c 29 20 7b 0a 58 20 |wp != NU|LL) {.X |
|00005aa0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 69 | | i|
|00005ab0| 66 20 28 77 70 2d 3e 77 | 5f 62 75 66 70 20 3d 3d |f (wp->w|_bufp ==|
|00005ac0| 20 62 6c 69 73 74 70 29 | 20 7b 0a 58 20 20 20 20 | blistp)| {.X |
|00005ad0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00005ae0| 20 20 20 20 77 70 2d 3e | 77 5f 6c 69 6e 65 70 20 | wp->|w_linep |
|00005af0| 3d 20 6c 66 6f 72 77 28 | 62 6c 69 73 74 70 2d 3e |= lforw(|blistp->|
|00005b00| 62 5f 6c 69 6e 65 70 29 | 3b 0a 58 20 20 20 20 20 |b_linep)|;.X |
|00005b10| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00005b20| 20 20 20 77 70 2d 3e 77 | 5f 64 6f 74 70 20 20 3d | wp->w|_dotp =|
|00005b30| 20 6c 66 6f 72 77 28 62 | 6c 69 73 74 70 2d 3e 62 | lforw(b|listp->b|
|00005b40| 5f 6c 69 6e 65 70 29 3b | 0a 58 20 20 20 20 20 20 |_linep);|.X |
|00005b50| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00005b60| 20 20 77 70 2d 3e 77 5f | 64 6f 74 6f 20 20 3d 20 | wp->w_|doto = |
|00005b70| 30 3b 0a 58 20 20 20 20 | 20 20 20 20 20 20 20 20 |0;.X | |
|00005b80| 20 20 20 20 20 20 20 20 | 20 20 20 20 77 70 2d 3e | | wp->|
|00005b90| 77 5f 6d 61 72 6b 70 20 | 3d 20 4e 55 4c 4c 3b 0a |w_markp |= NULL;.|
|00005ba0| 58 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |X | |
|00005bb0| 20 20 20 20 20 20 20 20 | 20 77 70 2d 3e 77 5f 6d | | wp->w_m|
|00005bc0| 61 72 6b 6f 20 3d 20 30 | 3b 0a 58 20 20 20 20 20 |arko = 0|;.X |
|00005bd0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00005be0| 20 20 20 77 70 2d 3e 77 | 5f 66 6c 61 67 20 7c 3d | wp->w|_flag |=|
|00005bf0| 20 57 46 4d 4f 44 45 7c | 57 46 48 41 52 44 3b 0a | WFMODE||WFHARD;.|
|00005c00| 58 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |X | |
|00005c10| 20 7d 0a 58 20 20 20 20 | 20 20 20 20 20 20 20 20 | }.X | |
|00005c20| 20 20 20 20 77 70 20 3d | 20 77 70 2d 3e 77 5f 77 | wp =| wp->w_w|
|00005c30| 6e 64 70 3b 0a 58 20 20 | 20 20 20 20 20 20 7d 0a |ndp;.X | }.|
|00005c40| 58 20 20 20 20 20 20 20 | 20 72 65 74 75 72 6e 20 |X | return |
|00005c50| 28 54 52 55 45 29 3b 0a | 58 7d 0a 58 0a 58 2f 2a |(TRUE);.|X}.X.X/*|
|00005c60| 0a 58 20 2a 20 54 68 69 | 73 20 72 6f 75 74 69 6e |.X * Thi|s routin|
|00005c70| 65 20 72 65 62 75 69 6c | 64 73 20 74 68 65 0a 58 |e rebuil|ds the.X|
|00005c80| 20 2a 20 74 65 78 74 20 | 69 6e 20 74 68 65 20 73 | * text |in the s|
|00005c90| 70 65 63 69 61 6c 20 73 | 65 63 72 65 74 20 62 75 |pecial s|ecret bu|
|00005ca0| 66 66 65 72 0a 58 20 2a | 20 74 68 61 74 20 68 6f |ffer.X *| that ho|
|00005cb0| 6c 64 73 20 74 68 65 20 | 62 75 66 66 65 72 20 6c |lds the |buffer l|
|00005cc0| 69 73 74 2e 20 49 74 20 | 69 73 20 63 61 6c 6c 65 |ist. It |is calle|
|00005cd0| 64 0a 58 20 2a 20 62 79 | 20 74 68 65 20 6c 69 73 |d.X * by| the lis|
|00005ce0| 74 20 62 75 66 66 65 72 | 73 20 63 6f 6d 6d 61 6e |t buffer|s comman|
|00005cf0| 64 2e 20 52 65 74 75 72 | 6e 20 54 52 55 45 0a 58 |d. Retur|n TRUE.X|
|00005d00| 20 2a 20 69 66 20 65 76 | 65 72 79 74 68 69 6e 67 | * if ev|erything|
|00005d10| 20 77 6f 72 6b 73 2e 20 | 52 65 74 75 72 6e 20 46 | works. |Return F|
|00005d20| 41 4c 53 45 20 69 66 20 | 74 68 65 72 65 0a 58 20 |ALSE if |there.X |
|00005d30| 2a 20 69 73 20 61 6e 20 | 65 72 72 6f 72 20 28 69 |* is an |error (i|
|00005d40| 66 20 74 68 65 72 65 20 | 69 73 20 6e 6f 20 6d 65 |f there |is no me|
|00005d50| 6d 6f 72 79 29 2e 0a 58 | 20 2a 2f 0a 58 6d 61 6b |mory)..X| */.Xmak|
|00005d60| 65 6c 69 73 74 28 29 0a | 58 7b 0a 58 20 20 20 20 |elist().|X{.X |
|00005d70| 20 20 20 20 72 65 67 69 | 73 74 65 72 20 63 68 61 | regi|ster cha|
|00005d80| 72 20 20 20 2a 63 70 31 | 3b 0a 58 20 20 20 20 20 |r *cp1|;.X |
|00005d90| 20 20 20 72 65 67 69 73 | 74 65 72 20 63 68 61 72 | regis|ter char|
|00005da0| 20 20 20 2a 63 70 32 3b | 0a 58 20 20 20 20 20 20 | *cp2;|.X |
|00005db0| 20 20 72 65 67 69 73 74 | 65 72 20 69 6e 74 20 20 | regist|er int |
|00005dc0| 20 20 63 3b 0a 58 20 20 | 20 20 20 20 20 20 72 65 | c;.X | re|
|00005dd0| 67 69 73 74 65 72 20 42 | 55 46 46 45 52 20 2a 62 |gister B|UFFER *b|
|00005de0| 70 3b 0a 58 20 20 20 20 | 20 20 20 20 72 65 67 69 |p;.X | regi|
|00005df0| 73 74 65 72 20 4c 49 4e | 45 20 20 20 2a 6c 70 3b |ster LIN|E *lp;|
|00005e00| 0a 58 20 20 20 20 20 20 | 20 20 72 65 67 69 73 74 |.X | regist|
|00005e10| 65 72 20 69 6e 74 20 20 | 20 20 73 3b 0a 58 09 72 |er int | s;.X.r|
|00005e20| 65 67 69 73 74 65 72 20 | 69 6e 74 09 69 3b 0a 58 |egister |int.i;.X|
|00005e30| 20 20 20 20 20 20 20 20 | 6c 6f 6e 67 09 6e 62 79 | |long.nby|
|00005e40| 74 65 73 3b 09 09 2f 2a | 20 23 20 6f 66 20 62 79 |tes;../*| # of by|
|00005e50| 74 65 73 20 69 6e 20 63 | 75 72 72 65 6e 74 20 62 |tes in c|urrent b|
|00005e60| 75 66 66 65 72 20 2a 2f | 0a 58 20 20 20 20 20 20 |uffer */|.X |
|00005e70| 20 20 63 68 61 72 20 20 | 20 20 20 20 20 20 20 20 | char | |
|00005e80| 20 20 62 5b 37 2b 31 5d | 3b 0a 58 20 20 20 20 20 | b[7+1]|;.X |
|00005e90| 20 20 20 63 68 61 72 20 | 20 20 20 20 20 20 20 20 | char | |
|00005ea0| 20 20 20 6c 69 6e 65 5b | 31 32 38 5d 3b 0a 58 0a | line[|128];.X.|
|00005eb0| 58 20 20 20 20 20 20 20 | 20 62 6c 69 73 74 70 2d |X | blistp-|
|00005ec0| 3e 62 5f 66 6c 61 67 20 | 26 3d 20 7e 42 46 43 48 |>b_flag |&= ~BFCH|
|00005ed0| 47 3b 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |G; | |
|00005ee0| 20 2f 2a 20 44 6f 6e 27 | 74 20 63 6f 6d 70 6c 61 | /* Don'|t compla|
|00005ef0| 69 6e 21 20 20 20 20 20 | 20 2a 2f 0a 58 20 20 20 |in! | */.X |
|00005f00| 20 20 20 20 20 69 66 20 | 28 28 73 3d 62 63 6c 65 | if |((s=bcle|
|00005f10| 61 72 28 62 6c 69 73 74 | 70 29 29 20 21 3d 20 54 |ar(blist|p)) != T|
|00005f20| 52 55 45 29 20 20 20 20 | 20 20 20 20 20 2f 2a 20 |RUE) | /* |
|00005f30| 42 6c 6f 77 20 6f 6c 64 | 20 74 65 78 74 20 61 77 |Blow old| text aw|
|00005f40| 61 79 20 20 20 2a 2f 0a | 58 20 20 20 20 20 20 20 |ay */.|X |
|00005f50| 20 20 20 20 20 20 20 20 | 20 72 65 74 75 72 6e 20 | | return |
|00005f60| 28 73 29 3b 0a 58 20 20 | 20 20 20 20 20 20 73 74 |(s);.X | st|
|00005f70| 72 63 70 79 28 62 6c 69 | 73 74 70 2d 3e 62 5f 66 |rcpy(bli|stp->b_f|
|00005f80| 6e 61 6d 65 2c 20 22 22 | 29 3b 0a 58 20 20 20 20 |name, ""|);.X |
|00005f90| 20 20 20 20 69 66 20 28 | 61 64 64 6c 69 6e 65 28 | if (|addline(|
|00005fa0| 22 41 43 20 4d 4f 44 45 | 53 20 20 20 20 20 20 20 |"AC MODE|S |
|00005fb0| 53 69 7a 65 20 42 75 66 | 66 65 72 20 20 20 20 20 |Size Buf|fer |
|00005fc0| 20 20 20 46 69 6c 65 22 | 29 20 3d 3d 20 46 41 4c | File"|) == FAL|
|00005fd0| 53 45 0a 58 20 20 20 20 | 20 20 20 20 7c 7c 20 20 |SE.X | || |
|00005fe0| 61 64 64 6c 69 6e 65 28 | 22 2d 2d 20 2d 2d 2d 2d |addline(|"-- ----|
|00005ff0| 2d 20 20 20 20 20 20 20 | 2d 2d 2d 2d 20 2d 2d 2d |- |---- ---|
|00006000| 2d 2d 2d 20 20 20 20 20 | 20 20 20 2d 2d 2d 2d 22 |--- | ----"|
|00006010| 29 20 3d 3d 20 46 41 4c | 53 45 29 0a 58 20 20 20 |) == FAL|SE).X |
|00006020| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 72 65 74 | | ret|
|00006030| 75 72 6e 20 28 46 41 4c | 53 45 29 3b 0a 58 20 20 |urn (FAL|SE);.X |
|00006040| 20 20 20 20 20 20 62 70 | 20 3d 20 62 68 65 61 64 | bp| = bhead|
|00006050| 70 3b 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |p; | |
|00006060| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 2f 2a | | /*|
|00006070| 20 46 6f 72 20 61 6c 6c | 20 62 75 66 66 65 72 73 | For all| buffers|
|00006080| 20 20 20 20 20 20 2a 2f | 0a 58 0a 58 09 2f 2a 20 | */|.X.X./* |
|00006090| 62 75 69 6c 64 20 6c 69 | 6e 65 20 74 6f 20 72 65 |build li|ne to re|
|000060a0| 70 6f 72 74 20 67 6c 6f | 62 61 6c 20 6d 6f 64 65 |port glo|bal mode|
|000060b0| 20 73 65 74 74 69 6e 67 | 73 20 2a 2f 0a 58 09 63 | setting|s */.X.c|
|000060c0| 70 31 20 3d 20 26 6c 69 | 6e 65 5b 30 5d 3b 0a 58 |p1 = &li|ne[0];.X|
|000060d0| 09 2a 63 70 31 2b 2b 20 | 3d 20 27 20 27 3b 0a 58 |.*cp1++ |= ' ';.X|
|000060e0| 09 2a 63 70 31 2b 2b 20 | 3d 20 27 20 27 3b 0a 58 |.*cp1++ |= ' ';.X|
|000060f0| 09 2a 63 70 31 2b 2b 20 | 3d 20 27 20 27 3b 0a 58 |.*cp1++ |= ' ';.X|
|00006100| 0a 58 09 2f 2a 20 6f 75 | 74 70 75 74 20 74 68 65 |.X./* ou|tput the|
|00006110| 20 6d 6f 64 65 20 63 6f | 64 65 73 20 2a 2f 0a 58 | mode co|des */.X|
|00006120| 09 66 6f 72 20 28 69 20 | 3d 20 30 3b 20 69 20 3c |.for (i |= 0; i <|
|00006130| 20 4e 55 4d 4d 4f 44 45 | 53 3b 20 69 2b 2b 29 0a | NUMMODE|S; i++).|
|00006140| 58 09 09 69 66 20 28 67 | 6d 6f 64 65 20 26 20 28 |X..if (g|mode & (|
|00006150| 31 20 3c 3c 20 69 29 29 | 0a 58 09 09 09 2a 63 70 |1 << i))|.X...*cp|
|00006160| 31 2b 2b 20 3d 20 6d 6f | 64 65 63 6f 64 65 5b 69 |1++ = mo|decode[i|
|00006170| 5d 3b 0a 58 09 09 65 6c | 73 65 0a 58 09 09 09 2a |];.X..el|se.X...*|
|00006180| 63 70 31 2b 2b 20 3d 20 | 27 2e 27 3b 0a 58 09 73 |cp1++ = |'.';.X.s|
|00006190| 74 72 63 70 79 28 63 70 | 31 2c 20 22 20 20 20 20 |trcpy(cp|1, " |
|000061a0| 20 20 20 20 20 47 6c 6f | 62 61 6c 20 4d 6f 64 65 | Glo|bal Mode|
|000061b0| 73 22 29 3b 0a 58 09 69 | 66 20 28 61 64 64 6c 69 |s");.X.i|f (addli|
|000061c0| 6e 65 28 6c 69 6e 65 29 | 20 3d 3d 20 46 41 4c 53 |ne(line)| == FALS|
|000061d0| 45 29 0a 58 09 09 72 65 | 74 75 72 6e 28 46 41 4c |E).X..re|turn(FAL|
|000061e0| 53 45 29 3b 0a 58 0a 58 | 09 2f 2a 20 6f 75 74 70 |SE);.X.X|./* outp|
|000061f0| 75 74 20 74 68 65 20 6c | 69 73 74 20 6f 66 20 62 |ut the l|ist of b|
|00006200| 75 66 66 65 72 73 20 2a | 2f 0a 58 20 20 20 20 20 |uffers *|/.X |
|00006210| 20 20 20 77 68 69 6c 65 | 20 28 62 70 20 21 3d 20 | while| (bp != |
|00006220| 4e 55 4c 4c 29 20 7b 0a | 58 20 20 20 20 20 20 20 |NULL) {.|X |
|00006230| 20 20 20 20 20 20 20 20 | 20 69 66 20 28 28 62 70 | | if ((bp|
|00006240| 2d 3e 62 5f 66 6c 61 67 | 26 42 46 49 4e 56 53 29 |->b_flag|&BFINVS)|
|00006250| 20 21 3d 20 30 29 20 7b | 20 2f 2a 20 53 6b 69 70 | != 0) {| /* Skip|
|00006260| 20 6d 61 67 69 63 20 6f | 6e 65 73 2e 20 20 20 20 | magic o|nes. |
|00006270| 20 2a 2f 0a 58 20 20 20 | 20 20 20 20 20 20 20 20 | */.X | |
|00006280| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 62 70 20 | | bp |
|00006290| 3d 20 62 70 2d 3e 62 5f | 62 75 66 70 3b 0a 58 20 |= bp->b_|bufp;.X |
|000062a0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000062b0| 20 20 20 20 20 20 20 63 | 6f 6e 74 69 6e 75 65 3b | c|ontinue;|
|000062c0| 0a 58 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |.X | |
|000062d0| 20 20 7d 0a 58 20 20 20 | 20 20 20 20 20 20 20 20 | }.X | |
|000062e0| 20 20 20 20 20 63 70 31 | 20 3d 20 26 6c 69 6e 65 | cp1| = &line|
|000062f0| 5b 30 5d 3b 20 20 20 20 | 20 20 20 20 20 20 20 20 |[0]; | |
|00006300| 20 20 20 20 20 2f 2a 20 | 53 74 61 72 74 20 61 74 | /* |Start at|
|00006310| 20 6c 65 66 74 20 65 64 | 67 65 20 20 20 2a 2f 0a | left ed|ge */.|
|00006320| 58 0a 58 09 09 2f 2a 20 | 6f 75 74 70 75 74 20 73 |X.X../* |output s|
|00006330| 74 61 74 75 73 20 6f 66 | 20 41 43 54 49 56 45 20 |tatus of| ACTIVE |
|00006340| 66 6c 61 67 20 28 68 61 | 73 20 74 68 65 20 66 69 |flag (ha|s the fi|
|00006350| 6c 65 20 62 65 65 6e 20 | 72 65 61 64 20 69 6e 3f |le been |read in?|
|00006360| 20 2a 2f 0a 58 20 20 20 | 20 20 20 20 20 20 20 20 | */.X | |
|00006370| 20 20 20 20 20 69 66 20 | 28 62 70 2d 3e 62 5f 61 | if |(bp->b_a|
|00006380| 63 74 69 76 65 20 3d 3d | 20 54 52 55 45 29 20 20 |ctive ==| TRUE) |
|00006390| 20 20 2f 2a 20 22 40 22 | 20 69 66 20 61 63 74 69 | /* "@"| if acti|
|000063a0| 76 61 74 65 64 20 20 20 | 20 20 20 20 2a 2f 0a 58 |vated | */.X|
|000063b0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000063c0| 20 20 20 20 20 20 20 20 | 2a 63 70 31 2b 2b 20 3d | |*cp1++ =|
|000063d0| 20 27 40 27 3b 0a 58 20 | 20 20 20 20 20 20 20 20 | '@';.X | |
|000063e0| 20 20 20 20 20 20 20 65 | 6c 73 65 0a 58 20 20 20 | e|lse.X |
|000063f0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.