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 text
| default
| |
99%
| file
| C source text
| default
| |
98%
| file
| C source, 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 31 33 69 30 36 |Subject:| v13i06|
|00000010| 33 3a 20 20 47 65 6e 65 | 72 69 63 20 75 73 65 72 |3: Gene|ric user|
|00000020| 20 69 6e 74 65 72 66 61 | 63 65 20 6b 69 74 2c 20 | interfa|ce kit, |
|00000030| 50 61 72 74 30 31 2f 30 | 32 0a 4e 65 77 73 67 72 |Part01/0|2.Newsgr|
|00000040| 6f 75 70 73 3a 20 63 6f | 6d 70 2e 73 6f 75 72 63 |oups: co|mp.sourc|
|00000050| 65 73 2e 75 6e 69 78 0a | 53 65 6e 64 65 72 3a 20 |es.unix.|Sender: |
|00000060| 73 6f 75 72 63 65 73 0a | 41 70 70 72 6f 76 65 64 |sources.|Approved|
|00000070| 3a 20 72 73 61 6c 7a 40 | 75 75 6e 65 74 2e 55 55 |: rsalz@|uunet.UU|
|00000080| 2e 4e 45 54 0a 0a 53 75 | 62 6d 69 74 74 65 64 2d |.NET..Su|bmitted-|
|00000090| 62 79 3a 20 4d 61 72 63 | 20 4d 61 6a 6b 61 20 3c |by: Marc| Majka <|
|000000a0| 6d 61 6a 6b 61 40 75 62 | 63 2e 63 73 6e 65 74 3e |majka@ub|c.csnet>|
|000000b0| 0a 50 6f 73 74 69 6e 67 | 2d 6e 75 6d 62 65 72 3a |.Posting|-number:|
|000000c0| 20 56 6f 6c 75 6d 65 20 | 31 33 2c 20 49 73 73 75 | Volume |13, Issu|
|000000d0| 65 20 36 33 0a 41 72 63 | 68 69 76 65 2d 6e 61 6d |e 63.Arc|hive-nam|
|000000e0| 65 3a 20 69 66 61 63 65 | 2f 70 61 72 74 30 31 0a |e: iface|/part01.|
|000000f0| 0a 5b 20 20 54 68 69 73 | 20 75 73 65 73 20 42 53 |.[ This| uses BS|
|00000100| 44 20 74 74 79 20 64 72 | 69 76 65 72 2c 20 61 6e |D tty dr|iver, an|
|00000110| 64 20 77 69 6c 6c 20 74 | 61 6b 65 20 61 20 62 69 |d will t|ake a bi|
|00000120| 74 20 6f 66 20 67 72 75 | 6e 64 67 65 20 74 6f 20 |t of gru|ndge to |
|00000130| 70 6f 72 74 20 69 74 0a | 20 20 20 74 6f 20 53 79 |port it.| to Sy|
|00000140| 73 74 65 6d 56 2c 20 6c | 65 74 20 61 6c 6f 6e 65 |stemV, l|et alone|
|00000150| 20 56 65 72 73 69 6f 6e | 37 2e 20 20 2d 2d 72 24 | Version|7. --r$|
|00000160| 20 5d 0a 0a 54 68 69 73 | 20 70 61 63 6b 61 67 65 | ]..This| package|
|00000170| 20 63 6f 6e 74 61 69 6e | 73 20 61 20 22 67 65 6e | contain|s a "gen|
|00000180| 65 72 69 63 22 20 75 73 | 65 72 20 69 6e 74 65 72 |eric" us|er inter|
|00000190| 66 61 63 65 20 77 68 69 | 63 68 20 6d 61 79 20 62 |face whi|ch may b|
|000001a0| 65 20 75 73 65 66 75 6c | 2e 0a 49 74 20 70 72 6f |e useful|..It pro|
|000001b0| 76 69 64 65 73 20 77 6f | 72 64 20 63 6f 6d 70 6c |vides wo|rd compl|
|000001c0| 65 74 69 6f 6e 2c 20 43 | 42 52 45 41 4b 20 49 2f |etion, C|BREAK I/|
|000001d0| 4f 2c 20 61 6e 64 20 6b | 65 79 62 69 6e 64 69 6e |O, and k|eybindin|
|000001e0| 67 2e 20 20 49 74 20 69 | 73 0a 72 65 61 73 6f 6e |g. It i|s.reason|
|000001f0| 61 62 6c 79 20 65 61 73 | 79 20 74 6f 20 74 61 69 |ably eas|y to tai|
|00000200| 6c 6f 72 20 74 6f 20 61 | 6e 20 61 70 70 6c 69 63 |lor to a|n applic|
|00000210| 61 74 69 6f 6e 2e 20 20 | 54 68 65 20 64 69 73 74 |ation. |The dist|
|00000220| 72 69 62 75 74 65 64 0a | 76 65 72 73 69 6f 6e 20 |ributed.|version |
|00000230| 63 6f 6d 70 69 6c 65 73 | 20 61 6e 64 20 72 75 6e |compiles| and run|
|00000240| 73 2c 20 61 6e 64 20 63 | 6f 6e 74 61 69 6e 73 20 |s, and c|ontains |
|00000250| 61 20 63 6f 75 70 6c 65 | 20 6f 66 20 66 75 6e 63 |a couple| of func|
|00000260| 74 69 6f 6e 73 0a 77 68 | 69 63 68 20 64 65 6d 6f |tions.wh|ich demo|
|00000270| 6e 73 74 72 61 74 65 20 | 74 68 65 20 66 6c 61 76 |nstrate |the flav|
|00000280| 6f 75 72 20 6f 66 20 74 | 68 65 20 69 6e 74 65 72 |our of t|he inter|
|00000290| 66 61 63 65 2e 20 20 43 | 75 74 20 6f 6e 20 74 68 |face. C|ut on th|
|000002a0| 65 20 6c 69 6e 65 0a 61 | 6e 64 20 66 65 65 64 20 |e line.a|nd feed |
|000002b0| 74 6f 20 22 73 68 22 2e | 20 49 74 20 77 69 6c 6c |to "sh".| It will|
|000002c0| 20 63 72 65 61 74 65 20 | 74 68 65 20 64 69 72 65 | create |the dire|
|000002d0| 63 74 6f 72 79 20 22 69 | 66 61 63 65 22 20 61 6e |ctory "i|face" an|
|000002e0| 64 20 70 75 74 0a 65 76 | 65 72 79 74 68 69 6e 67 |d put.ev|erything|
|000002f0| 20 69 6e 20 74 68 65 72 | 65 2e 0a 0a 4d 61 6e 69 | in ther|e...Mani|
|00000300| 66 65 73 74 3a 0a 63 6f | 6d 63 2e 63 20 20 20 2d |fest:.co|mc.c -|
|00000310| 20 77 6f 72 64 20 63 6f | 6d 70 6c 65 74 69 6f 6e | word co|mpletion|
|00000320| 20 72 6f 75 74 69 6e 65 | 0a 65 78 65 63 2e 63 20 | routine|.exec.c |
|00000330| 20 20 2d 20 65 78 65 63 | 75 74 69 76 65 2d 74 79 | - exec|utive-ty|
|00000340| 70 65 20 66 75 6e 63 74 | 69 6f 6e 73 0a 69 66 61 |pe funct|ions.ifa|
|00000350| 63 65 2e 68 20 20 2d 20 | 68 65 61 64 65 72 20 73 |ce.h - |header s|
|00000360| 74 75 66 66 0a 66 6e 73 | 2e 63 20 20 20 20 2d 20 |tuff.fns|.c - |
|00000370| 65 78 61 6d 70 6c 65 20 | 66 75 6e 63 74 69 6f 6e |example |function|
|00000380| 73 20 74 6f 20 64 65 6d | 6f 20 69 66 61 63 65 0a |s to dem|o iface.|
|00000390| 69 6e 69 74 2e 63 20 20 | 20 2d 20 69 6e 69 74 69 |init.c | - initi|
|000003a0| 61 6c 69 7a 61 74 69 6f | 6e 20 72 6f 75 74 69 6e |alizatio|n routin|
|000003b0| 65 73 0a 69 6f 2e 63 20 | 20 20 20 20 2d 20 69 6e |es.io.c | - in|
|000003c0| 70 75 74 2f 6f 75 74 70 | 75 74 20 72 6f 75 74 69 |put/outp|ut routi|
|000003d0| 6e 65 73 0a 69 66 61 63 | 65 2e 63 20 20 2d 20 6d |nes.ifac|e.c - m|
|000003e0| 61 69 6e 20 72 6f 75 74 | 69 6e 65 0a 4d 61 6b 65 |ain rout|ine.Make|
|000003f0| 66 69 6c 65 20 2d 20 74 | 6f 20 63 6f 6d 70 69 6c |file - t|o compil|
|00000400| 65 20 69 74 0a 52 45 41 | 44 4d 45 20 20 20 2d 20 |e it.REA|DME - |
|00000410| 64 65 73 63 72 69 62 65 | 73 20 77 68 61 74 20 69 |describe|s what i|
|00000420| 74 20 69 73 20 61 6e 64 | 20 68 6f 77 20 69 74 20 |t is and| how it |
|00000430| 77 6f 72 6b 73 0a 0a 2d | 2d 2d 0a 4d 61 72 63 20 |works..-|--.Marc |
|00000440| 4d 61 6a 6b 61 0a 0a 0a | 2d 20 2d 20 2d 20 43 55 |Majka...|- - - CU|
|00000450| 54 20 2d 20 2d 20 2d 20 | 43 55 54 20 2d 20 2d 20 |T - - - |CUT - - |
|00000460| 2d 20 43 55 54 20 2d 20 | 2d 20 2d 20 43 55 54 20 |- CUT - |- - CUT |
|00000470| 2d 20 2d 20 2d 20 43 55 | 54 20 2d 20 2d 20 2d 20 |- - - CU|T - - - |
|00000480| 43 55 54 20 2d 20 2d 20 | 2d 0a 23 21 20 2f 62 69 |CUT - - |-.#! /bi|
|00000490| 6e 2f 73 68 0a 23 20 54 | 68 69 73 20 69 73 20 61 |n/sh.# T|his is a|
|000004a0| 20 73 68 65 6c 6c 20 61 | 72 63 68 69 76 65 2c 20 | shell a|rchive, |
|000004b0| 6d 65 61 6e 69 6e 67 3a | 0a 23 20 31 2e 20 52 65 |meaning:|.# 1. Re|
|000004c0| 6d 6f 76 65 20 65 76 65 | 72 79 74 68 69 6e 67 20 |move eve|rything |
|000004d0| 61 62 6f 76 65 20 74 68 | 65 20 23 21 20 2f 62 69 |above th|e #! /bi|
|000004e0| 6e 2f 73 68 20 6c 69 6e | 65 2e 0a 23 20 32 2e 20 |n/sh lin|e..# 2. |
|000004f0| 53 61 76 65 20 74 68 65 | 20 72 65 73 75 6c 74 69 |Save the| resulti|
|00000500| 6e 67 20 74 65 78 74 20 | 69 6e 20 61 20 66 69 6c |ng text |in a fil|
|00000510| 65 2e 0a 23 20 33 2e 20 | 45 78 65 63 75 74 65 20 |e..# 3. |Execute |
|00000520| 74 68 65 20 66 69 6c 65 | 20 77 69 74 68 20 2f 62 |the file| with /b|
|00000530| 69 6e 2f 73 68 20 28 6e | 6f 74 20 63 73 68 29 20 |in/sh (n|ot csh) |
|00000540| 74 6f 20 63 72 65 61 74 | 65 20 74 68 65 20 66 69 |to creat|e the fi|
|00000550| 6c 65 73 3a 0a 23 20 20 | 20 20 69 66 61 63 65 0a |les:.# | iface.|
|00000560| 65 78 70 6f 72 74 20 50 | 41 54 48 3b 20 50 41 54 |export P|ATH; PAT|
|00000570| 48 3d 2f 62 69 6e 3a 24 | 50 41 54 48 0a 69 66 20 |H=/bin:$|PATH.if |
|00000580| 74 65 73 74 20 21 20 2d | 64 20 27 69 66 61 63 65 |test ! -|d 'iface|
|00000590| 27 0a 74 68 65 6e 0a 09 | 6d 6b 64 69 72 20 27 69 |'.then..|mkdir 'i|
|000005a0| 66 61 63 65 27 0a 66 69 | 0a 63 64 20 27 69 66 61 |face'.fi|.cd 'ifa|
|000005b0| 63 65 27 0a 69 66 20 74 | 65 73 74 20 2d 66 20 27 |ce'.if t|est -f '|
|000005c0| 63 6f 6d 63 2e 63 27 0a | 74 68 65 6e 0a 09 65 63 |comc.c'.|then..ec|
|000005d0| 68 6f 20 73 68 61 72 3a | 20 77 69 6c 6c 20 6e 6f |ho shar:| will no|
|000005e0| 74 20 6f 76 65 72 2d 77 | 72 69 74 65 20 65 78 69 |t over-w|rite exi|
|000005f0| 73 74 69 6e 67 20 66 69 | 6c 65 20 22 27 63 6f 6d |sting fi|le "'com|
|00000600| 63 2e 63 27 22 0a 65 6c | 73 65 0a 63 61 74 20 3c |c.c'".el|se.cat <|
|00000610| 3c 20 5c 53 48 41 52 5f | 45 4f 46 20 3e 20 27 63 |< \SHAR_|EOF > 'c|
|00000620| 6f 6d 63 2e 63 27 0a 2f | 2a 0a 09 67 65 74 63 6f |omc.c'./|*..getco|
|00000630| 6d 3a 20 67 65 74 20 61 | 20 63 6f 6d 6d 61 6e 64 |m: get a| command|
|00000640| 20 28 63 68 61 72 61 63 | 74 65 72 20 73 74 72 69 | (charac|ter stri|
|00000650| 6e 67 29 20 66 72 6f 6d | 20 73 74 61 6e 64 61 72 |ng) from| standar|
|00000660| 64 20 69 6e 70 75 74 0a | 09 67 65 74 63 6f 6d 20 |d input.|.getcom |
|00000670| 74 61 6b 65 73 20 61 20 | 6c 69 73 74 20 6f 66 20 |takes a |list of |
|00000680| 63 68 61 72 61 63 74 65 | 72 20 73 74 72 69 6e 67 |characte|r string|
|00000690| 73 20 69 6e 20 74 68 65 | 20 73 61 6d 65 20 66 6f |s in the| same fo|
|000006a0| 72 6d 61 74 0a 09 61 73 | 20 74 68 61 74 20 75 73 |rmat..as| that us|
|000006b0| 65 64 20 66 6f 72 20 61 | 72 67 76 2c 20 61 6e 64 |ed for a|rgv, and|
|000006c0| 20 61 20 63 6f 75 6e 74 | 20 6f 66 20 74 68 65 20 | a count| of the |
|000006d0| 6e 75 6d 62 65 72 20 6f | 66 20 73 74 72 69 6e 67 |number o|f string|
|000006e0| 73 0a 09 69 6e 20 74 68 | 65 20 6c 69 73 74 2c 20 |s..in th|e list, |
|000006f0| 61 73 20 69 6e 20 61 72 | 67 63 2e 20 20 49 74 20 |as in ar|gc. It |
|00000700| 64 6f 65 73 20 45 4d 41 | 43 53 2d 73 74 79 6c 65 |does EMA|CS-style|
|00000710| 20 73 74 72 69 6e 67 0a | 09 63 6f 6d 70 6c 65 74 | string.|.complet|
|00000720| 69 6f 6e 2e 20 20 47 65 | 74 63 6f 6d 20 72 65 74 |ion. Ge|tcom ret|
|00000730| 75 72 6e 73 20 61 73 20 | 69 74 73 20 76 61 6c 75 |urns as |its valu|
|00000740| 65 2c 20 74 68 65 20 69 | 6e 64 65 78 20 6f 66 20 |e, the i|ndex of |
|00000750| 74 68 65 0a 09 63 6f 6d | 6d 61 6e 64 2e 20 20 2d |the..com|mand. -|
|00000760| 31 20 69 73 20 72 65 74 | 75 72 6e 65 64 20 69 66 |1 is ret|urned if|
|00000770| 20 74 68 65 20 75 73 65 | 72 20 61 62 6f 72 74 73 | the use|r aborts|
|00000780| 20 74 68 65 20 63 6f 6d | 70 6c 65 74 69 6f 6e 2e | the com|pletion.|
|00000790| 0a 09 4e 6f 74 65 20 74 | 68 61 74 20 74 68 65 20 |..Note t|hat the |
|000007a0| 63 6f 6d 6d 61 6e 64 20 | 6c 69 73 74 20 22 63 6c |command |list "cl|
|000007b0| 69 73 74 22 20 6d 75 73 | 74 20 63 6f 6e 74 61 69 |ist" mus|t contai|
|000007c0| 6e 20 69 74 73 20 73 74 | 72 69 6e 67 73 0a 09 69 |n its st|rings..i|
|000007d0| 6e 20 73 6f 72 74 65 64 | 20 6f 72 64 65 72 2e 20 |n sorted| order. |
|000007e0| 20 41 6c 73 6f 20 6e 6f | 74 65 20 74 68 61 74 20 | Also no|te that |
|000007f0| 67 65 74 63 6f 6d 20 65 | 78 70 65 63 74 73 20 74 |getcom e|xpects t|
|00000800| 6f 20 68 61 76 65 20 74 | 68 65 0a 09 74 65 72 6d |o have t|he..term|
|00000810| 69 6e 61 6c 20 69 6e 20 | 72 61 77 20 6f 72 20 63 |inal in |raw or c|
|00000820| 62 72 65 61 6b 20 6d 6f | 64 65 2c 20 77 69 74 68 |break mo|de, with|
|00000830| 20 6e 6f 20 63 68 61 72 | 61 63 74 65 72 20 65 63 | no char|acter ec|
|00000840| 68 6f 69 6e 67 2e 0a 0a | 09 43 68 61 72 61 63 74 |hoing...|.Charact|
|00000850| 65 72 73 20 61 72 65 20 | 72 65 61 64 20 61 6e 64 |ers are |read and|
|00000860| 20 61 70 70 65 6e 64 65 | 64 20 74 6f 20 61 20 63 | appende|d to a c|
|00000870| 6f 6d 6d 61 6e 64 20 73 | 74 72 69 6e 67 20 22 63 |ommand s|tring "c|
|00000880| 6d 64 22 2e 0a 09 43 65 | 72 74 61 69 6e 20 63 68 |md"...Ce|rtain ch|
|00000890| 61 72 61 63 74 65 72 73 | 20 68 61 76 65 20 73 70 |aracters| have sp|
|000008a0| 65 63 69 61 6c 20 6d 65 | 61 6e 69 6e 67 73 3a 0a |ecial me|anings:.|
|000008b0| 0a 09 3f 20 63 61 75 73 | 65 73 20 67 65 74 63 6f |..? caus|es getco|
|000008c0| 6d 20 74 6f 20 70 72 69 | 6e 74 20 61 6c 6c 20 70 |m to pri|nt all p|
|000008d0| 6f 73 73 69 62 6c 65 20 | 63 6f 6d 70 6c 65 74 69 |ossible |completi|
|000008e0| 6f 6e 73 0a 09 5e 47 20 | 61 6e 64 20 45 53 43 20 |ons..^G |and ESC |
|000008f0| 61 62 6f 72 74 20 61 6e | 64 20 72 65 74 75 72 6e |abort an|d return|
|00000900| 20 2d 31 0a 09 3c 73 70 | 61 63 65 3e 2c 20 3c 74 | -1..<sp|ace>, <t|
|00000910| 61 62 3e 2c 20 61 6e 64 | 20 3c 72 65 74 75 72 6e |ab>, and| <return|
|00000920| 3e 20 63 61 75 73 65 20 | 67 65 74 63 6f 6d 20 74 |> cause |getcom t|
|00000930| 6f 20 63 6f 6d 70 6c 65 | 74 65 0a 09 3c 6c 69 6e |o comple|te..<lin|
|00000940| 65 66 65 65 64 3e 20 63 | 61 75 73 65 73 20 63 6f |efeed> c|auses co|
|00000950| 6d 70 6c 65 74 69 6f 6e | 20 74 6f 20 74 68 65 20 |mpletion| to the |
|00000960| 66 69 72 73 74 20 70 6f | 73 73 69 62 6c 65 20 73 |first po|ssible s|
|00000970| 74 72 69 6e 67 0a 09 3c | 62 61 63 6b 73 70 61 63 |tring..<|backspac|
|00000980| 65 3e 20 68 61 73 20 74 | 68 65 20 65 78 70 65 63 |e> has t|he expec|
|00000990| 74 65 64 20 72 65 73 75 | 6c 74 0a 09 3c 44 45 4c |ted resu|lt..<DEL|
|000009a0| 3e 20 69 73 20 74 72 65 | 61 74 65 64 20 61 74 20 |> is tre|ated at |
|000009b0| 3c 62 61 63 6b 73 70 61 | 63 65 3e 0a 09 5e 55 20 |<backspa|ce>..^U |
|000009c0| 63 6c 65 61 72 73 20 74 | 68 65 20 63 6d 64 20 73 |clears t|he cmd s|
|000009d0| 74 72 69 6e 67 20 61 6e | 64 20 72 65 73 74 61 72 |tring an|d restar|
|000009e0| 74 73 20 63 6f 6d 70 6c | 65 74 69 6f 6e 0a 0a 2a |ts compl|etion..*|
|000009f0| 2f 0a 23 69 6e 63 6c 75 | 64 65 20 3c 73 74 64 69 |/.#inclu|de <stdi|
|00000a00| 6f 2e 68 3e 0a 0a 67 65 | 74 63 6f 6d 28 63 6c 69 |o.h>..ge|tcom(cli|
|00000a10| 73 74 2c 6e 63 6d 64 2c | 70 72 6f 6d 70 74 29 0a |st,ncmd,|prompt).|
|00000a20| 63 68 61 72 20 2a 2a 63 | 6c 69 73 74 3b 0a 69 6e |char **c|list;.in|
|00000a30| 74 20 6e 63 6d 64 3b 0a | 63 68 61 72 20 2a 70 72 |t ncmd;.|char *pr|
|00000a40| 6f 6d 70 74 3b 0a 7b 0a | 09 69 6e 74 20 63 6e 2c |ompt;.{.|.int cn,|
|00000a50| 66 69 72 73 74 2c 6c 61 | 73 74 2c 6d 61 74 63 68 |first,la|st,match|
|00000a60| 2c 65 6e 64 70 74 2c 73 | 74 61 72 74 2c 69 2c 63 |,endpt,s|tart,i,c|
|00000a70| 3b 0a 09 63 68 61 72 20 | 2a 65 6e 74 72 79 2c 63 |;..char |*entry,c|
|00000a80| 6d 64 5b 32 35 36 5d 3b | 0a 0a 09 6d 61 74 63 68 |md[256];|...match|
|00000a90| 20 3d 20 65 6e 64 70 74 | 20 3d 20 73 74 61 72 74 | = endpt| = start|
|00000aa0| 20 3d 20 66 69 72 73 74 | 20 3d 20 30 3b 0a 09 6c | = first| = 0;..l|
|00000ab0| 61 73 74 20 3d 20 6e 63 | 6d 64 20 2d 20 31 3b 0a |ast = nc|md - 1;.|
|00000ac0| 09 63 6d 64 5b 30 5d 20 | 3d 20 27 5c 30 27 3b 0a |.cmd[0] |= '\0';.|
|00000ad0| 0a 09 77 68 69 6c 65 20 | 28 21 6d 61 74 63 68 29 |..while |(!match)|
|00000ae0| 20 7b 0a 09 09 63 20 3d | 20 67 65 74 63 68 61 72 | {...c =| getchar|
|00000af0| 28 29 3b 0a 0a 09 09 73 | 77 69 74 63 68 28 63 29 |();....s|witch(c)|
|00000b00| 20 7b 0a 0a 09 09 09 63 | 61 73 65 20 27 3f 27 3a | {.....c|ase '?':|
|00000b10| 0a 09 09 09 09 6d 61 74 | 63 68 20 3d 20 74 72 79 |.....mat|ch = try|
|00000b20| 5f 6d 61 74 63 68 28 26 | 66 69 72 73 74 2c 26 6c |_match(&|first,&l|
|00000b30| 61 73 74 2c 26 73 74 61 | 72 74 2c 26 65 6e 64 70 |ast,&sta|rt,&endp|
|00000b40| 74 2c 26 63 6e 2c 63 6c | 69 73 74 2c 63 6d 64 29 |t,&cn,cl|ist,cmd)|
|00000b50| 3b 0a 09 09 09 09 69 66 | 20 28 21 6d 61 74 63 68 |;.....if| (!match|
|00000b60| 29 20 7b 0a 09 09 09 09 | 09 70 72 69 6e 74 66 28 |) {.....|.printf(|
|00000b70| 22 5c 62 20 5c 62 5c 6e | 5c 6e 22 29 3b 0a 09 09 |"\b \b\n|\n");...|
|00000b80| 09 09 09 68 65 6c 70 63 | 6f 6d 28 63 6c 69 73 74 |...helpc|om(clist|
|00000b90| 2c 66 69 72 73 74 2c 6c | 61 73 74 29 3b 0a 09 09 |,first,l|ast);...|
|00000ba0| 09 09 09 70 72 69 6e 74 | 66 28 22 5c 6e 25 73 20 |...print|f("\n%s |
|00000bb0| 25 73 22 2c 70 72 6f 6d | 70 74 2c 63 6d 64 29 3b |%s",prom|pt,cmd);|
|00000bc0| 0a 09 09 09 09 7d 0a 09 | 09 09 09 65 6c 73 65 20 |.....}..|...else |
|00000bd0| 7b 0a 09 09 09 09 09 65 | 6e 74 72 79 20 3d 20 63 |{......e|ntry = c|
|00000be0| 6c 69 73 74 5b 63 6e 5d | 3b 0a 09 09 09 09 09 66 |list[cn]|;......f|
|00000bf0| 6f 72 20 28 69 20 3d 20 | 65 6e 64 70 74 3b 20 65 |or (i = |endpt; e|
|00000c00| 6e 74 72 79 5b 69 5d 20 | 21 3d 20 27 5c 30 27 3b |ntry[i] |!= '\0';|
|00000c10| 20 69 2b 2b 29 0a 09 09 | 09 09 09 09 70 72 69 6e | i++)...|....prin|
|00000c20| 74 66 28 22 25 63 22 2c | 65 6e 74 72 79 5b 69 5d |tf("%c",|entry[i]|
|00000c30| 29 3b 0a 09 09 09 09 7d | 0a 09 09 09 09 62 72 65 |);.....}|.....bre|
|00000c40| 61 6b 3b 0a 0a 09 09 09 | 63 61 73 65 20 27 5c 30 |ak;.....|case '\0|
|00000c50| 37 27 3a 20 2f 2a 20 5e | 47 20 2a 2f 0a 09 09 09 |7': /* ^|G */....|
|00000c60| 63 61 73 65 20 27 5c 30 | 33 33 27 3a 20 2f 2a 20 |case '\0|33': /* |
|00000c70| 45 53 43 20 2a 2f 0a 09 | 09 09 63 61 73 65 20 27 |ESC */..|..case '|
|00000c80| 5c 30 34 27 3a 20 2f 2a | 20 5e 44 20 2a 2f 0a 09 |\04': /*| ^D */..|
|00000c90| 09 09 09 72 65 74 75 72 | 6e 28 2d 31 29 3b 0a 0a |...retur|n(-1);..|
|00000ca0| 09 09 09 63 61 73 65 20 | 27 20 27 3a 20 2f 2a 20 |...case |' ': /* |
|00000cb0| 62 6c 61 6e 6b 20 2a 2f | 0a 09 09 09 63 61 73 65 |blank */|....case|
|00000cc0| 20 27 5c 74 27 3a 20 20 | 2f 2a 20 74 61 62 20 2a | '\t': |/* tab *|
|00000cd0| 2f 0a 09 09 09 63 61 73 | 65 20 27 5c 72 27 3a 20 |/....cas|e '\r': |
|00000ce0| 2f 2a 20 72 65 74 75 72 | 6e 20 2a 2f 0a 09 09 09 |/* retur|n */....|
|00000cf0| 09 6d 61 74 63 68 20 3d | 20 74 72 79 5f 6d 61 74 |.match =| try_mat|
|00000d00| 63 68 28 26 66 69 72 73 | 74 2c 26 6c 61 73 74 2c |ch(&firs|t,&last,|
|00000d10| 26 73 74 61 72 74 2c 26 | 65 6e 64 70 74 2c 26 63 |&start,&|endpt,&c|
|00000d20| 6e 2c 63 6c 69 73 74 2c | 63 6d 64 29 3b 0a 09 09 |n,clist,|cmd);...|
|00000d30| 09 09 69 66 20 28 6d 61 | 74 63 68 29 20 7b 0a 09 |..if (ma|tch) {..|
|00000d40| 09 09 09 09 65 6e 74 72 | 79 20 3d 20 63 6c 69 73 |....entr|y = clis|
|00000d50| 74 5b 63 6e 5d 3b 0a 09 | 09 09 09 09 66 6f 72 20 |t[cn];..|....for |
|00000d60| 28 69 20 3d 20 65 6e 64 | 70 74 3b 20 65 6e 74 72 |(i = end|pt; entr|
|00000d70| 79 5b 69 5d 20 21 3d 20 | 27 5c 30 27 3b 20 69 2b |y[i] != |'\0'; i+|
|00000d80| 2b 29 0a 09 09 09 09 09 | 09 70 72 69 6e 74 66 28 |+)......|.printf(|
|00000d90| 22 25 63 22 2c 65 6e 74 | 72 79 5b 69 5d 29 3b 0a |"%c",ent|ry[i]);.|
|00000da0| 09 09 09 09 7d 0a 2f 2a | 09 09 09 09 65 6c 73 65 |....}./*|....else|
|00000db0| 20 70 72 69 6e 74 66 28 | 22 25 63 22 2c 37 29 3b | printf(|"%c",7);|
|00000dc0| 20 2a 2f 0a 09 09 09 09 | 62 72 65 61 6b 3b 0a 0a | */.....|break;..|
|00000dd0| 09 09 09 63 61 73 65 20 | 27 5c 6e 27 3a 20 2f 2a |...case |'\n': /*|
|00000de0| 20 6e 65 77 6c 69 6e 65 | 20 2a 2f 0a 09 09 09 09 | newline| */.....|
|00000df0| 6d 61 74 63 68 20 3d 20 | 74 72 79 5f 6d 61 74 63 |match = |try_matc|
|00000e00| 68 28 26 66 69 72 73 74 | 2c 26 6c 61 73 74 2c 26 |h(&first|,&last,&|
|00000e10| 73 74 61 72 74 2c 26 65 | 6e 64 70 74 2c 26 63 6e |start,&e|ndpt,&cn|
|00000e20| 2c 63 6c 69 73 74 2c 63 | 6d 64 29 3b 0a 09 09 09 |,clist,c|md);....|
|00000e30| 09 69 66 20 28 21 73 74 | 72 63 6d 70 28 63 6c 69 |.if (!st|rcmp(cli|
|00000e40| 73 74 5b 66 69 72 73 74 | 5d 2c 63 6d 64 29 29 20 |st[first|],cmd)) |
|00000e50| 7b 0a 09 09 09 09 09 63 | 6e 20 3d 20 66 69 72 73 |{......c|n = firs|
|00000e60| 74 3b 0a 09 09 09 09 09 | 6d 61 74 63 68 20 3d 20 |t;......|match = |
|00000e70| 31 3b 0a 09 09 09 09 7d | 0a 09 09 09 09 69 66 20 |1;.....}|.....if |
|00000e80| 28 21 6d 61 74 63 68 29 | 20 70 72 69 6e 74 66 28 |(!match)| printf(|
|00000e90| 22 25 63 22 2c 37 29 3b | 0a 09 09 09 09 62 72 65 |"%c",7);|.....bre|
|00000ea0| 61 6b 3b 0a 0a 09 09 09 | 63 61 73 65 20 27 5c 62 |ak;.....|case '\b|
|00000eb0| 27 3a 20 2f 2a 20 62 61 | 63 6b 73 70 61 63 65 20 |': /* ba|ckspace |
|00000ec0| 2a 2f 0a 09 09 09 63 61 | 73 65 20 31 32 37 3a 09 |*/....ca|se 127:.|
|00000ed0| 2f 2a 20 44 45 4c 20 2a | 2f 0a 09 09 09 09 69 66 |/* DEL *|/.....if|
|00000ee0| 20 28 65 6e 64 70 74 20 | 3e 20 30 29 20 7b 0a 09 | (endpt |> 0) {..|
|00000ef0| 09 09 09 09 70 72 69 6e | 74 66 28 22 5c 62 20 5c |....prin|tf("\b \|
|00000f00| 62 22 29 3b 0a 09 09 09 | 09 09 65 6e 64 70 74 2d |b");....|..endpt-|
|00000f10| 2d 3b 0a 09 09 09 09 09 | 63 6d 64 5b 65 6e 64 70 |-;......|cmd[endp|
|00000f20| 74 5d 20 3d 20 27 5c 30 | 27 3b 0a 09 09 09 09 7d |t] = '\0|';.....}|
|00000f30| 0a 09 09 09 09 73 74 61 | 72 74 20 3d 20 66 69 72 |.....sta|rt = fir|
|00000f40| 73 74 20 3d 20 30 3b 0a | 09 09 09 09 6c 61 73 74 |st = 0;.|....last|
|00000f50| 20 3d 20 6e 63 6d 64 20 | 2d 20 31 3b 0a 09 09 09 | = ncmd |- 1;....|
|00000f60| 09 62 72 65 61 6b 3b 0a | 0a 09 09 09 63 61 73 65 |.break;.|....case|
|00000f70| 20 27 5c 30 32 35 27 3a | 20 20 2f 2a 20 5e 55 20 | '\025':| /* ^U |
|00000f80| 2a 2f 0a 09 09 09 09 66 | 6f 72 20 28 69 20 3d 20 |*/.....f|or (i = |
|00000f90| 30 3b 20 69 20 3c 20 65 | 6e 64 70 74 3b 20 69 2b |0; i < e|ndpt; i+|
|00000fa0| 2b 29 20 70 72 69 6e 74 | 66 28 22 5c 62 20 5c 62 |+) print|f("\b \b|
|00000fb0| 22 29 3b 0a 09 09 09 09 | 6d 61 74 63 68 20 3d 20 |");.....|match = |
|00000fc0| 65 6e 64 70 74 20 3d 20 | 73 74 61 72 74 20 3d 20 |endpt = |start = |
|00000fd0| 66 69 72 73 74 20 3d 20 | 30 3b 0a 09 09 09 09 6c |first = |0;.....l|
|00000fe0| 61 73 74 20 3d 20 6e 63 | 6d 64 20 2d 20 31 3b 0a |ast = nc|md - 1;.|
|00000ff0| 09 09 09 09 63 6d 64 5b | 30 5d 20 3d 20 27 5c 30 |....cmd[|0] = '\0|
|00001000| 27 3b 0a 09 09 09 09 62 | 72 65 61 6b 3b 0a 0a 09 |';.....b|reak;...|
|00001010| 09 09 64 65 66 61 75 6c | 74 3a 20 2f 2a 20 61 6e |..defaul|t: /* an|
|00001020| 79 74 68 69 6e 67 20 65 | 6c 73 65 20 2a 2f 0a 09 |ything e|lse */..|
|00001030| 09 09 09 70 72 69 6e 74 | 66 28 22 25 63 22 2c 63 |...print|f("%c",c|
|00001040| 29 3b 0a 09 09 09 09 63 | 6d 64 5b 65 6e 64 70 74 |);.....c|md[endpt|
|00001050| 2b 2b 5d 20 3d 20 63 3b | 0a 09 09 09 09 63 6d 64 |++] = c;|.....cmd|
|00001060| 5b 65 6e 64 70 74 5d 20 | 3d 20 27 5c 30 27 3b 0a |[endpt] |= '\0';.|
|00001070| 09 09 09 09 62 72 65 61 | 6b 3b 0a 09 09 7d 0a 09 |....brea|k;...}..|
|00001080| 7d 0a 09 72 65 74 75 72 | 6e 28 63 6e 29 3b 0a 7d |}..retur|n(cn);.}|
|00001090| 0a 0a 74 72 79 5f 6d 61 | 74 63 68 28 66 2c 6c 2c |..try_ma|tch(f,l,|
|000010a0| 73 2c 70 2c 6e 2c 63 6c | 69 73 74 2c 63 6d 64 29 |s,p,n,cl|ist,cmd)|
|000010b0| 0a 69 6e 74 20 2a 66 2c | 2a 6c 2c 2a 73 2c 2a 70 |.int *f,|*l,*s,*p|
|000010c0| 2c 2a 6e 3b 0a 63 68 61 | 72 20 2a 2a 63 6c 69 73 |,*n;.cha|r **clis|
|000010d0| 74 2c 2a 63 6d 64 3b 0a | 7b 0a 09 69 6e 74 20 69 |t,*cmd;.|{..int i|
|000010e0| 2c 6b 2c 74 66 2c 74 6c | 3b 0a 09 63 68 61 72 20 |,k,tf,tl|;..char |
|000010f0| 2a 66 65 6e 74 2c 2a 6c | 65 6e 74 3b 0a 0a 09 69 |*fent,*l|ent;...i|
|00001100| 66 20 28 2a 70 20 3d 3d | 20 30 29 20 72 65 74 75 |f (*p ==| 0) retu|
|00001110| 72 6e 28 30 29 3b 0a 09 | 74 66 20 3d 20 2a 66 3b |rn(0);..|tf = *f;|
|00001120| 0a 09 74 6c 20 3d 20 2a | 6c 3b 0a 09 6b 20 3d 20 |..tl = *|l;..k = |
|00001130| 2a 70 20 2b 20 31 3b 0a | 09 66 65 6e 74 20 3d 20 |*p + 1;.|.fent = |
|00001140| 63 6c 69 73 74 5b 74 66 | 5d 3b 0a 09 6c 65 6e 74 |clist[tf|];..lent|
|00001150| 20 3d 20 63 6c 69 73 74 | 5b 74 6c 5d 3b 0a 0a 09 | = clist|[tl];...|
|00001160| 66 6f 72 20 28 69 20 3d | 20 2a 73 20 2b 20 31 3b |for (i =| *s + 1;|
|00001170| 20 69 20 3c 20 6b 3b 20 | 69 2b 2b 29 20 7b 0a 09 | i < k; |i++) {..|
|00001180| 09 66 65 6e 74 20 3d 20 | 63 6c 69 73 74 5b 74 66 |.fent = |clist[tf|
|00001190| 5d 3b 0a 09 09 77 68 69 | 6c 65 20 28 28 74 66 20 |];...whi|le ((tf |
|000011a0| 3c 20 74 6c 29 20 26 26 | 20 28 73 74 72 6e 63 6d |< tl) &&| (strncm|
|000011b0| 70 28 63 6d 64 2c 66 65 | 6e 74 2c 69 29 20 3e 20 |p(cmd,fe|nt,i) > |
|000011c0| 30 29 29 20 66 65 6e 74 | 20 3d 20 63 6c 69 73 74 |0)) fent| = clist|
|000011d0| 5b 2b 2b 74 66 5d 3b 0a | 09 09 6c 65 6e 74 20 3d |[++tf];.|..lent =|
|000011e0| 20 63 6c 69 73 74 5b 74 | 6c 5d 3b 0a 09 09 77 68 | clist[t|l];...wh|
|000011f0| 69 6c 65 20 28 28 74 6c | 20 3e 20 74 66 29 20 26 |ile ((tl| > tf) &|
|00001200| 26 20 28 73 74 72 6e 63 | 6d 70 28 63 6d 64 2c 6c |& (strnc|mp(cmd,l|
|00001210| 65 6e 74 2c 69 29 20 3c | 20 30 29 29 20 6c 65 6e |ent,i) <| 0)) len|
|00001220| 74 20 3d 20 63 6c 69 73 | 74 5b 2d 2d 74 6c 5d 3b |t = clis|t[--tl];|
|00001230| 0a 09 7d 0a 0a 09 69 66 | 20 28 74 66 20 3d 3d 20 |..}...if| (tf == |
|00001240| 74 6c 29 20 7b 0a 09 09 | 69 66 20 28 73 74 72 6e |tl) {...|if (strn|
|00001250| 63 6d 70 28 63 6d 64 2c | 66 65 6e 74 2c 2a 70 29 |cmp(cmd,|fent,*p)|
|00001260| 20 3d 3d 20 30 29 20 7b | 0a 09 09 09 2a 66 20 3d | == 0) {|....*f =|
|00001270| 20 74 66 3b 20 2a 6c 20 | 3d 20 74 6c 3b 20 2a 73 | tf; *l |= tl; *s|
|00001280| 20 3d 20 2a 70 3b 20 2a | 6e 20 3d 20 74 66 3b 0a | = *p; *|n = tf;.|
|00001290| 09 09 09 72 65 74 75 72 | 6e 28 31 29 3b 0a 09 09 |...retur|n(1);...|
|000012a0| 7d 0a 09 09 65 6c 73 65 | 20 7b 0a 09 09 09 69 20 |}...else| {....i |
|000012b0| 3d 20 2a 73 3b 0a 09 09 | 09 77 68 69 6c 65 20 28 |= *s;...|.while (|
|000012c0| 28 69 20 3c 20 2a 70 29 | 20 26 26 20 28 63 6d 64 |(i < *p)| && (cmd|
|000012d0| 5b 69 5d 20 3d 3d 20 66 | 65 6e 74 5b 69 5d 29 29 |[i] == f|ent[i]))|
|000012e0| 20 69 2b 2b 3b 0a 09 09 | 09 63 6d 64 5b 69 5d 20 | i++;...|.cmd[i] |
|000012f0| 3d 20 27 5c 30 27 3b 0a | 09 09 09 6b 20 3d 20 69 |= '\0';.|...k = i|
|00001300| 3b 0a 09 09 09 66 6f 72 | 20 28 3b 20 69 20 3c 20 |;....for| (; i < |
|00001310| 2a 70 3b 20 69 2b 2b 29 | 20 70 72 69 6e 74 66 28 |*p; i++)| printf(|
|00001320| 22 5c 62 20 5c 62 22 29 | 3b 0a 09 09 09 2a 70 20 |"\b \b")|;....*p |
|00001330| 3d 20 6b 3b 0a 09 09 09 | 72 65 74 75 72 6e 28 30 |= k;....|return(0|
|00001340| 29 3b 0a 09 09 7d 0a 09 | 7d 0a 09 65 6c 73 65 20 |);...}..|}..else |
|00001350| 7b 0a 09 09 69 20 3d 20 | 2a 70 3b 0a 09 09 77 68 |{...i = |*p;...wh|
|00001360| 69 6c 65 20 28 66 65 6e | 74 5b 69 5d 20 3d 3d 20 |ile (fen|t[i] == |
|00001370| 6c 65 6e 74 5b 69 5d 29 | 20 7b 0a 09 09 09 63 6d |lent[i])| {....cm|
|00001380| 64 5b 69 5d 20 3d 20 66 | 65 6e 74 5b 69 5d 3b 0a |d[i] = f|ent[i];.|
|00001390| 09 09 09 70 72 69 6e 74 | 66 28 22 25 63 22 2c 63 |...print|f("%c",c|
|000013a0| 6d 64 5b 69 2b 2b 5d 29 | 3b 0a 09 09 7d 0a 09 09 |md[i++])|;...}...|
|000013b0| 63 6d 64 5b 69 5d 20 3d | 20 27 5c 30 27 3b 0a 09 |cmd[i] =| '\0';..|
|000013c0| 09 2a 66 20 3d 20 74 66 | 3b 20 2a 6c 20 3d 20 74 |.*f = tf|; *l = t|
|000013d0| 6c 3b 20 2a 70 20 3d 20 | 69 3b 20 2a 73 20 3d 20 |l; *p = |i; *s = |
|000013e0| 2a 70 3b 0a 09 09 72 65 | 74 75 72 6e 28 30 29 3b |*p;...re|turn(0);|
|000013f0| 0a 09 7d 0a 7d 0a 0a 68 | 65 6c 70 63 6f 6d 28 77 |..}.}..h|elpcom(w|
|00001400| 2c 66 2c 6c 29 0a 63 68 | 61 72 20 2a 2a 77 3b 0a |,f,l).ch|ar **w;.|
|00001410| 69 6e 74 20 66 2c 6c 3b | 0a 7b 0a 09 69 6e 74 20 |int f,l;|.{..int |
|00001420| 6d 61 78 2c 20 69 2c 20 | 6c 65 6e 2c 20 6e 3b 0a |max, i, |len, n;.|
|00001430| 0a 09 6d 61 78 20 3d 20 | 30 3b 0a 09 66 6f 72 20 |..max = |0;..for |
|00001440| 28 69 20 3d 20 66 3b 20 | 69 20 3c 3d 20 6c 3b 20 |(i = f; |i <= l; |
|00001450| 69 2b 2b 29 20 7b 0a 09 | 09 6c 65 6e 20 3d 20 73 |i++) {..|.len = s|
|00001460| 74 72 6c 65 6e 28 77 5b | 69 5d 29 3b 0a 09 09 69 |trlen(w[|i]);...i|
|00001470| 66 20 28 6c 65 6e 20 3e | 20 6d 61 78 29 20 6d 61 |f (len >| max) ma|
|00001480| 78 20 3d 20 6c 65 6e 3b | 0a 09 7d 0a 09 6e 20 3d |x = len;|..}..n =|
|00001490| 20 28 6c 20 2d 20 66 29 | 20 2b 20 31 3b 0a 0a 09 | (l - f)| + 1;...|
|000014a0| 70 72 69 6e 74 66 28 22 | 3f 20 63 68 6f 6f 73 65 |printf("|? choose|
|000014b0| 20 6f 6e 65 20 6f 66 20 | 74 68 65 20 66 6f 6c 6c | one of |the foll|
|000014c0| 6f 77 69 6e 67 5c 6e 22 | 29 3b 0a 09 70 72 69 6e |owing\n"|);..prin|
|000014d0| 74 6c 69 73 74 28 6d 61 | 78 2c 6e 2c 77 2b 66 29 |tlist(ma|x,n,w+f)|
|000014e0| 3b 0a 09 70 72 69 6e 74 | 66 28 22 5c 6e 5c 6e 22 |;..print|f("\n\n"|
|000014f0| 29 3b 0a 09 70 72 69 6e | 74 66 28 22 3f 20 3f 20 |);..prin|tf("? ? |
|00001500| 66 6f 72 20 63 6f 6d 6d | 61 6e 64 20 6c 69 73 74 |for comm|and list|
|00001510| 5c 6e 22 29 3b 0a 09 70 | 72 69 6e 74 66 28 22 3f |\n");..p|rintf("?|
|00001520| 20 5e 44 2c 20 5e 47 20 | 6f 72 20 45 53 43 20 74 | ^D, ^G |or ESC t|
|00001530| 6f 20 65 78 69 74 2c 20 | 5e 55 20 74 6f 20 63 6c |o exit, |^U to cl|
|00001540| 65 61 72 5c 6e 22 29 3b | 0a 09 70 72 69 6e 74 66 |ear\n");|..printf|
|00001550| 28 22 3f 20 3c 73 70 61 | 63 65 3e 2c 20 3c 74 61 |("? <spa|ce>, <ta|
|00001560| 62 3e 20 6f 72 20 3c 72 | 65 74 75 72 6e 3e 20 74 |b> or <r|eturn> t|
|00001570| 6f 20 63 6f 6d 70 6c 65 | 74 65 5c 6e 22 29 3b 0a |o comple|te\n");.|
|00001580| 09 70 72 69 6e 74 66 28 | 22 3f 20 3c 6c 69 6e 65 |.printf(|"? <line|
|00001590| 66 65 65 64 3e 20 74 6f | 20 69 6e 73 69 73 74 20 |feed> to| insist |
|000015a0| 6f 6e 20 66 69 72 73 74 | 20 63 68 6f 69 63 65 5c |on first| choice\|
|000015b0| 6e 22 29 3b 0a 7d 0a 0a | 70 72 69 6e 74 6c 69 73 |n");.}..|printlis|
|000015c0| 74 28 73 69 7a 65 2c 69 | 74 65 6d 73 2c 6c 69 73 |t(size,i|tems,lis|
|000015d0| 74 29 0a 69 6e 74 20 73 | 69 7a 65 2c 69 74 65 6d |t).int s|ize,item|
|000015e0| 73 3b 0a 63 68 61 72 20 | 2a 6c 69 73 74 5b 5d 3b |s;.char |*list[];|
|000015f0| 0a 7b 0a 09 69 6e 74 20 | 72 6f 77 73 2c 20 63 6f |.{..int |rows, co|
|00001600| 6c 73 2c 20 69 2c 20 6a | 2c 20 78 2c 20 79 2c 20 |ls, i, j|, x, y, |
|00001610| 6c 65 6e 2c 20 6e 3b 0a | 09 63 68 61 72 20 62 6c |len, n;.|.char bl|
|00001620| 61 6e 6b 5b 32 35 36 5d | 3b 0a 0a 09 66 6f 72 20 |ank[256]|;...for |
|00001630| 28 69 20 3d 20 30 3b 20 | 69 20 3c 20 32 35 36 3b |(i = 0; |i < 256;|
|00001640| 20 69 2b 2b 29 20 62 6c | 61 6e 6b 5b 69 5d 20 3d | i++) bl|ank[i] =|
|00001650| 20 27 20 27 3b 0a 0a 09 | 73 69 7a 65 20 2b 3d 20 | ' ';...|size += |
|00001660| 31 3b 0a 0a 09 63 6f 6c | 73 20 3d 20 37 39 20 2f |1;...col|s = 79 /|
|00001670| 20 73 69 7a 65 3b 0a 09 | 72 6f 77 73 20 3d 20 69 | size;..|rows = i|
|00001680| 74 65 6d 73 20 2f 20 63 | 6f 6c 73 3b 0a 09 69 66 |tems / c|ols;..if|
|00001690| 20 28 69 74 65 6d 73 20 | 3e 20 28 72 6f 77 73 20 | (items |> (rows |
|000016a0| 2a 20 63 6f 6c 73 29 29 | 20 72 6f 77 73 2b 2b 3b |* cols))| rows++;|
|000016b0| 0a 09 63 6f 6c 73 20 3d | 20 69 74 65 6d 73 20 2f |..cols =| items /|
|000016c0| 20 72 6f 77 73 3b 0a 09 | 69 66 20 28 69 74 65 6d | rows;..|if (item|
|000016d0| 73 20 3e 20 28 72 6f 77 | 73 20 2a 20 63 6f 6c 73 |s > (row|s * cols|
|000016e0| 29 29 20 63 6f 6c 73 2b | 2b 3b 0a 0a 09 6e 20 3d |)) cols+|+;...n =|
|000016f0| 20 72 6f 77 73 20 2a 20 | 63 6f 6c 73 3b 0a 09 79 | rows * |cols;..y|
|00001700| 20 3d 20 2d 31 3b 0a 09 | 78 20 3d 20 30 3b 0a 0a | = -1;..|x = 0;..|
|00001710| 09 66 6f 72 20 28 69 20 | 3d 20 30 3b 20 69 20 3c |.for (i |= 0; i <|
|00001720| 20 6e 3b 20 69 2b 2b 29 | 20 7b 0a 09 09 69 66 20 | n; i++)| {...if |
|00001730| 28 21 28 69 20 25 20 63 | 6f 6c 73 29 29 20 7b 0a |(!(i % c|ols)) {.|
|00001740| 09 09 09 70 72 69 6e 74 | 66 28 22 5c 6e 22 29 3b |...print|f("\n");|
|00001750| 0a 09 09 09 79 2b 2b 3b | 0a 09 09 09 78 20 3d 20 |....y++;|....x = |
|00001760| 79 3b 0a 09 09 7d 0a 09 | 09 69 66 20 28 78 20 3c |y;...}..|.if (x <|
|00001770| 20 69 74 65 6d 73 29 20 | 7b 0a 09 09 09 6c 65 6e | items) |{....len|
|00001780| 20 3d 20 73 74 72 6c 65 | 6e 28 6c 69 73 74 5b 78 | = strle|n(list[x|
|00001790| 5d 29 3b 0a 09 09 09 6a | 20 3d 20 28 73 69 7a 65 |]);....j| = (size|
|000017a0| 20 2d 20 6c 65 6e 29 20 | 2b 20 31 3b 0a 09 09 09 | - len) |+ 1;....|
|000017b0| 62 6c 61 6e 6b 5b 6a 5d | 20 3d 20 27 5c 30 27 3b |blank[j]| = '\0';|
|000017c0| 0a 09 09 09 70 72 69 6e | 74 66 28 22 25 73 25 73 |....prin|tf("%s%s|
|000017d0| 22 2c 6c 69 73 74 5b 78 | 5d 2c 62 6c 61 6e 6b 29 |",list[x|],blank)|
|000017e0| 3b 0a 09 09 09 62 6c 61 | 6e 6b 5b 6a 5d 20 3d 20 |;....bla|nk[j] = |
|000017f0| 27 20 27 3b 0a 09 09 7d | 0a 09 09 78 20 2b 3d 20 |' ';...}|...x += |
|00001800| 72 6f 77 73 3b 0a 09 7d | 0a 7d 0a 0a 53 48 41 52 |rows;..}|.}..SHAR|
|00001810| 5f 45 4f 46 0a 66 69 20 | 23 20 65 6e 64 20 6f 66 |_EOF.fi |# end of|
|00001820| 20 6f 76 65 72 77 72 69 | 74 69 6e 67 20 63 68 65 | overwri|ting che|
|00001830| 63 6b 0a 69 66 20 74 65 | 73 74 20 2d 66 20 27 65 |ck.if te|st -f 'e|
|00001840| 78 65 63 2e 63 27 0a 74 | 68 65 6e 0a 09 65 63 68 |xec.c'.t|hen..ech|
|00001850| 6f 20 73 68 61 72 3a 20 | 77 69 6c 6c 20 6e 6f 74 |o shar: |will not|
|00001860| 20 6f 76 65 72 2d 77 72 | 69 74 65 20 65 78 69 73 | over-wr|ite exis|
|00001870| 74 69 6e 67 20 66 69 6c | 65 20 22 27 65 78 65 63 |ting fil|e "'exec|
|00001880| 2e 63 27 22 0a 65 6c 73 | 65 0a 63 61 74 20 3c 3c |.c'".els|e.cat <<|
|00001890| 20 5c 53 48 41 52 5f 45 | 4f 46 20 3e 20 27 65 78 | \SHAR_E|OF > 'ex|
|000018a0| 65 63 2e 63 27 0a 23 69 | 6e 63 6c 75 64 65 20 22 |ec.c'.#i|nclude "|
|000018b0| 69 66 61 63 65 2e 68 22 | 0a 0a 70 72 69 6e 74 5f |iface.h"|..print_|
|000018c0| 76 65 72 73 69 6f 6e 28 | 29 0a 7b 0a 09 69 6e 74 |version(|).{..int|
|000018d0| 20 72 65 66 3b 0a 0a 09 | 72 65 66 20 3d 20 73 79 | ref;...|ref = sy|
|000018e0| 6d 5f 72 65 66 28 22 76 | 65 72 73 69 6f 6e 22 29 |m_ref("v|ersion")|
|000018f0| 3b 0a 09 70 72 69 6e 74 | 66 28 22 76 65 72 73 69 |;..print|f("versi|
|00001900| 6f 6e 20 25 73 5c 6e 22 | 2c 73 79 6d 62 6f 6c 5b |on %s\n"|,symbol[|
|00001910| 72 65 66 5d 2e 73 74 72 | 76 61 6c 29 3b 0a 7d 0a |ref].str|val);.}.|
|00001920| 0a 65 78 65 63 28 72 65 | 66 29 0a 69 6e 74 20 72 |.exec(re|f).int r|
|00001930| 65 66 3b 0a 7b 0a 09 69 | 6e 74 20 28 2a 63 6f 6d |ef;.{..i|nt (*com|
|00001940| 70 74 72 29 28 29 3b 0a | 0a 09 63 6f 6d 70 74 72 |ptr)();.|..comptr|
|00001950| 20 3d 20 63 70 74 72 5b | 73 79 6d 62 6f 6c 5b 72 | = cptr[|symbol[r|
|00001960| 65 66 5d 2e 76 61 6c 75 | 65 5d 3b 0a 09 28 2a 63 |ef].valu|e];..(*c|
|00001970| 6f 6d 70 74 72 29 28 29 | 3b 0a 7d 0a 0a 45 53 43 |omptr)()|;.}..ESC|
|00001980| 5f 70 72 65 66 69 78 28 | 29 0a 7b 0a 09 69 6e 74 |_prefix(|).{..int|
|00001990| 20 72 65 66 3b 0a 0a 09 | 6c 61 73 74 6b 65 79 20 | ref;...|lastkey |
|000019a0| 3d 20 67 65 74 63 68 61 | 72 28 29 3b 0a 09 72 65 |= getcha|r();..re|
|000019b0| 66 20 3d 20 62 69 6e 64 | 69 6e 67 5b 6c 61 73 74 |f = bind|ing[last|
|000019c0| 6b 65 79 5d 5b 31 5d 3b | 0a 09 65 78 65 63 28 72 |key][1];|..exec(r|
|000019d0| 65 66 29 3b 0a 7d 0a 0a | 43 54 4c 5f 58 5f 70 72 |ef);.}..|CTL_X_pr|
|000019e0| 65 66 69 78 28 29 0a 7b | 0a 09 69 6e 74 20 72 65 |efix().{|..int re|
|000019f0| 66 3b 0a 0a 09 6c 61 73 | 74 6b 65 79 20 3d 20 67 |f;...las|tkey = g|
|00001a00| 65 74 63 68 61 72 28 29 | 3b 0a 09 72 65 66 20 3d |etchar()|;..ref =|
|00001a10| 20 62 69 6e 64 69 6e 67 | 5b 6c 61 73 74 6b 65 79 | binding|[lastkey|
|00001a20| 5d 5b 32 5d 3b 0a 09 65 | 78 65 63 28 72 65 66 29 |][2];..e|xec(ref)|
|00001a30| 3b 0a 7d 0a 0a 43 54 4c | 5f 59 5f 70 72 65 66 69 |;.}..CTL|_Y_prefi|
|00001a40| 78 28 29 0a 7b 0a 09 69 | 6e 74 20 72 65 66 3b 0a |x().{..i|nt ref;.|
|00001a50| 0a 09 6c 61 73 74 6b 65 | 79 20 3d 20 67 65 74 63 |..lastke|y = getc|
|00001a60| 68 61 72 28 29 3b 0a 09 | 72 65 66 20 3d 20 62 69 |har();..|ref = bi|
|00001a70| 6e 64 69 6e 67 5b 6c 61 | 73 74 6b 65 79 5d 5b 33 |nding[la|stkey][3|
|00001a80| 5d 3b 0a 09 65 78 65 63 | 28 72 65 66 29 3b 0a 7d |];..exec|(ref);.}|
|00001a90| 0a 0a 42 4f 47 55 53 28 | 29 0a 7b 0a 09 70 75 74 |..BOGUS(|).{..put|
|00001aa0| 63 68 61 72 28 27 5c 30 | 37 27 29 3b 0a 7d 0a 0a |char('\0|7');.}..|
|00001ab0| 71 75 69 74 28 29 0a 7b | 0a 09 6f 6c 64 74 65 72 |quit().{|..oldter|
|00001ac0| 6d 28 29 3b 0a 09 65 78 | 69 74 28 30 29 3b 0a 7d |m();..ex|it(0);.}|
|00001ad0| 0a 0a 6f 6c 64 74 65 72 | 6d 28 29 0a 7b 0a 09 69 |..oldter|m().{..i|
|00001ae0| 6f 63 74 6c 28 66 69 6c | 65 6e 6f 28 73 74 64 69 |octl(fil|eno(stdi|
|00001af0| 6e 29 2c 54 49 4f 43 47 | 45 54 50 2c 26 69 6f 62 |n),TIOCG|ETP,&iob|
|00001b00| 61 73 69 63 29 3b 0a 09 | 69 6f 62 61 73 69 63 2e |asic);..|iobasic.|
|00001b10| 73 67 5f 66 6c 61 67 73 | 20 3d 20 6f 6c 64 66 6c |sg_flags| = oldfl|
|00001b20| 61 67 73 3b 0a 09 69 6f | 63 74 6c 28 66 69 6c 65 |ags;..io|ctl(file|
|00001b30| 6e 6f 28 73 74 64 69 6e | 29 2c 54 49 4f 43 53 45 |no(stdin|),TIOCSE|
|00001b40| 54 50 2c 26 69 6f 62 61 | 73 69 63 29 3b 0a 0a 09 |TP,&ioba|sic);...|
|00001b50| 69 6f 63 74 6c 28 66 69 | 6c 65 6e 6f 28 73 74 64 |ioctl(fi|leno(std|
|00001b60| 69 6e 29 2c 54 49 4f 43 | 47 4c 54 43 2c 26 74 65 |in),TIOC|GLTC,&te|
|00001b70| 72 6d 63 29 3b 0a 09 74 | 65 72 6d 63 2e 74 5f 73 |rmc);..t|ermc.t_s|
|00001b80| 75 73 70 63 20 3d 20 32 | 36 3b 0a 09 74 65 72 6d |uspc = 2|6;..term|
|00001b90| 63 2e 74 5f 64 73 75 73 | 70 63 20 3d 20 32 35 3b |c.t_dsus|pc = 25;|
|00001ba0| 0a 09 69 6f 63 74 6c 28 | 66 69 6c 65 6e 6f 28 73 |..ioctl(|fileno(s|
|00001bb0| 74 64 69 6e 29 2c 54 49 | 4f 43 53 4c 54 43 2c 26 |tdin),TI|OCSLTC,&|
|00001bc0| 74 65 72 6d 63 29 3b 0a | 7d 0a 0a 6e 65 77 74 65 |termc);.|}..newte|
|00001bd0| 72 6d 28 29 0a 7b 0a 09 | 69 6f 63 74 6c 28 66 69 |rm().{..|ioctl(fi|
|00001be0| 6c 65 6e 6f 28 73 74 64 | 69 6e 29 2c 54 49 4f 43 |leno(std|in),TIOC|
|00001bf0| 47 45 54 50 2c 26 69 6f | 62 61 73 69 63 29 3b 0a |GETP,&io|basic);.|
|00001c00| 09 6f 6c 64 66 6c 61 67 | 73 20 3d 20 69 6f 62 61 |.oldflag|s = ioba|
|00001c10| 73 69 63 2e 73 67 5f 66 | 6c 61 67 73 3b 0a 09 69 |sic.sg_f|lags;..i|
|00001c20| 6f 62 61 73 69 63 2e 73 | 67 5f 66 6c 61 67 73 20 |obasic.s|g_flags |
|00001c30| 7c 3d 20 43 42 52 45 41 | 4b 3b 0a 09 69 6f 62 61 ||= CBREA|K;..ioba|
|00001c40| 73 69 63 2e 73 67 5f 66 | 6c 61 67 73 20 26 3d 20 |sic.sg_f|lags &= |
|00001c50| 7e 45 43 48 4f 3b 0a 09 | 69 6f 63 74 6c 28 66 69 |~ECHO;..|ioctl(fi|
|00001c60| 6c 65 6e 6f 28 73 74 64 | 69 6e 29 2c 54 49 4f 43 |leno(std|in),TIOC|
|00001c70| 53 45 54 4e 2c 26 69 6f | 62 61 73 69 63 29 3b 0a |SETN,&io|basic);.|
|00001c80| 0a 09 69 6f 63 74 6c 28 | 66 69 6c 65 6e 6f 28 73 |..ioctl(|fileno(s|
|00001c90| 74 64 69 6e 29 2c 54 49 | 4f 43 47 4c 54 43 2c 26 |tdin),TI|OCGLTC,&|
|00001ca0| 74 65 72 6d 63 29 3b 0a | 09 74 65 72 6d 63 2e 74 |termc);.|.termc.t|
|00001cb0| 5f 73 75 73 70 63 20 3d | 20 2d 31 3b 0a 09 74 65 |_suspc =| -1;..te|
|00001cc0| 72 6d 63 2e 74 5f 64 73 | 75 73 70 63 20 3d 20 2d |rmc.t_ds|uspc = -|
|00001cd0| 31 3b 0a 09 69 6f 63 74 | 6c 28 66 69 6c 65 6e 6f |1;..ioct|l(fileno|
|00001ce0| 28 73 74 64 69 6e 29 2c | 54 49 4f 43 53 4c 54 43 |(stdin),|TIOCSLTC|
|00001cf0| 2c 26 74 65 72 6d 63 29 | 3b 0a 7d 0a 0a 65 78 74 |,&termc)|;.}..ext|
|00001d00| 65 6e 64 65 64 5f 63 6f | 6d 6d 61 6e 64 28 29 0a |ended_co|mmand().|
|00001d10| 7b 0a 09 69 6e 74 20 63 | 6e 2c 20 72 65 66 3b 0a |{..int c|n, ref;.|
|00001d20| 0a 09 70 72 69 6e 74 66 | 28 22 3a 20 22 29 3b 0a |..printf|(": ");.|
|00001d30| 09 63 6e 20 3d 20 67 65 | 74 63 6f 6d 28 63 6d 64 |.cn = ge|tcom(cmd|
|00001d40| 73 2c 6e 63 6d 64 73 2c | 22 3a 22 29 3b 0a 09 70 |s,ncmds,|":");..p|
|00001d50| 72 69 6e 74 66 28 22 5c | 6e 22 29 3b 0a 09 72 65 |rintf("\|n");..re|
|00001d60| 66 20 3d 20 73 79 6d 5f | 72 65 66 28 63 6d 64 73 |f = sym_|ref(cmds|
|00001d70| 5b 63 6e 5d 29 3b 0a 09 | 65 78 65 63 28 72 65 66 |[cn]);..|exec(ref|
|00001d80| 29 3b 0a 7d 0a 0a 73 79 | 6d 5f 72 65 66 28 6e 61 |);.}..sy|m_ref(na|
|00001d90| 6d 65 29 0a 63 68 61 72 | 20 2a 6e 61 6d 65 3b 0a |me).char| *name;.|
|00001da0| 7b 0a 09 69 6e 74 20 72 | 65 66 3b 0a 0a 09 69 66 |{..int r|ef;...if|
|00001db0| 20 28 6e 61 6d 65 20 3d | 3d 20 4e 55 4c 4c 29 20 | (name =|= NULL) |
|00001dc0| 72 65 74 75 72 6e 28 30 | 29 3b 0a 0a 09 66 6f 72 |return(0|);...for|
|00001dd0| 20 28 72 65 66 20 3d 20 | 30 3b 0a 09 09 20 73 79 | (ref = |0;... sy|
|00001de0| 6d 62 6f 6c 5b 72 65 66 | 5d 2e 6e 61 6d 65 20 21 |mbol[ref|].name !|
|00001df0| 3d 20 4e 55 4c 4c 20 26 | 26 20 73 74 72 63 6d 70 |= NULL &|& strcmp|
|00001e00| 28 6e 61 6d 65 2c 73 79 | 6d 62 6f 6c 5b 72 65 66 |(name,sy|mbol[ref|
|00001e10| 5d 2e 6e 61 6d 65 29 3b | 0a 09 09 20 72 65 66 2b |].name);|... ref+|
|00001e20| 2b 29 3b 0a 0a 09 69 66 | 20 28 73 79 6d 62 6f 6c |+);...if| (symbol|
|00001e30| 5b 72 65 66 5d 2e 6e 61 | 6d 65 20 21 3d 20 4e 55 |[ref].na|me != NU|
|00001e40| 4c 4c 29 20 72 65 74 75 | 72 6e 28 72 65 66 29 3b |LL) retu|rn(ref);|
|00001e50| 0a 09 72 65 74 75 72 6e | 28 30 29 3b 0a 7d 0a 0a |..return|(0);.}..|
|00001e60| 64 65 73 63 72 69 62 65 | 5f 6b 65 79 28 29 0a 7b |describe|_key().{|
|00001e70| 0a 09 63 68 61 72 20 6b | 65 79 3b 0a 09 69 6e 74 |..char k|ey;..int|
|00001e80| 20 74 61 62 2c 20 72 65 | 66 3b 0a 0a 09 70 72 69 | tab, re|f;...pri|
|00001e90| 6e 74 66 28 22 64 65 73 | 63 72 69 62 65 2d 6b 65 |ntf("des|cribe-ke|
|00001ea0| 79 3a 20 22 29 3b 0a 09 | 6b 65 79 20 3d 20 67 65 |y: ");..|key = ge|
|00001eb0| 74 63 68 61 72 28 29 3b | 0a 0a 09 73 77 69 74 63 |tchar();|...switc|
|00001ec0| 68 20 28 6b 65 79 29 20 | 7b 0a 09 09 63 61 73 65 |h (key) |{...case|
|00001ed0| 20 32 37 3a 20 70 72 69 | 6e 74 66 28 22 45 53 43 | 27: pri|ntf("ESC|
|00001ee0| 2d 22 29 3b 20 20 20 74 | 61 62 20 3d 20 31 3b 20 |-"); t|ab = 1; |
|00001ef0| 62 72 65 61 6b 3b 0a 09 | 09 63 61 73 65 20 32 34 |break;..|.case 24|
|00001f00| 3a 20 70 72 69 6e 74 66 | 28 22 43 54 4c 2d 58 2d |: printf|("CTL-X-|
|00001f10| 22 29 3b 20 74 61 62 20 | 3d 20 32 3b 20 62 72 65 |"); tab |= 2; bre|
|00001f20| 61 6b 3b 0a 09 09 63 61 | 73 65 20 32 35 3a 20 70 |ak;...ca|se 25: p|
|00001f30| 72 69 6e 74 66 28 22 43 | 54 4c 2d 59 2d 22 29 3b |rintf("C|TL-Y-");|
|00001f40| 20 74 61 62 20 3d 20 33 | 3b 20 62 72 65 61 6b 3b | tab = 3|; break;|
|00001f50| 0a 09 09 64 65 66 61 75 | 6c 74 3a 20 70 75 74 5f |...defau|lt: put_|
|00001f60| 63 68 61 72 28 6b 65 79 | 29 3b 09 74 61 62 20 3d |char(key|);.tab =|
|00001f70| 20 30 3b 20 62 72 65 61 | 6b 3b 0a 09 7d 0a 0a 09 | 0; brea|k;..}...|
|00001f80| 69 66 20 28 74 61 62 29 | 20 7b 0a 09 09 6b 65 79 |if (tab)| {...key|
|00001f90| 20 3d 20 67 65 74 63 68 | 61 72 28 29 3b 0a 09 09 | = getch|ar();...|
|00001fa0| 70 75 74 5f 63 68 61 72 | 28 6b 65 79 29 3b 0a 09 |put_char|(key);..|
|00001fb0| 7d 0a 0a 09 72 65 66 20 | 3d 20 62 69 6e 64 69 6e |}...ref |= bindin|
|00001fc0| 67 5b 6b 65 79 5d 5b 74 | 61 62 5d 3b 0a 09 70 72 |g[key][t|ab];..pr|
|00001fd0| 69 6e 74 66 28 22 20 69 | 73 20 62 6f 75 6e 64 20 |intf(" i|s bound |
|00001fe0| 74 6f 20 74 68 65 20 63 | 6f 6d 6d 61 6e 64 20 5c |to the c|ommand \|
|00001ff0| 22 25 73 5c 22 5c 6e 22 | 2c 73 79 6d 62 6f 6c 5b |"%s\"\n"|,symbol[|
|00002000| 72 65 66 5d 2e 6e 61 6d | 65 29 3b 0a 7d 0a 0a 62 |ref].nam|e);.}..b|
|00002010| 69 6e 64 5f 6b 65 79 28 | 29 0a 7b 0a 09 63 68 61 |ind_key(|).{..cha|
|00002020| 72 20 6b 65 79 3b 0a 09 | 69 6e 74 20 74 61 62 2c |r key;..|int tab,|
|00002030| 20 72 65 66 2c 20 63 6e | 3b 0a 0a 09 70 72 69 6e | ref, cn|;...prin|
|00002040| 74 66 28 22 62 69 6e 64 | 2d 6b 65 79 3a 20 22 29 |tf("bind|-key: ")|
|00002050| 3b 0a 09 6b 65 79 20 3d | 20 67 65 74 63 68 61 72 |;..key =| getchar|
|00002060| 28 29 3b 0a 0a 09 73 77 | 69 74 63 68 20 28 6b 65 |();...sw|itch (ke|
|00002070| 79 29 20 7b 0a 09 09 63 | 61 73 65 20 32 37 3a 20 |y) {...c|ase 27: |
|00002080| 70 72 69 6e 74 66 28 22 | 45 53 43 2d 22 29 3b 20 |printf("|ESC-"); |
|00002090| 20 20 74 61 62 20 3d 20 | 31 3b 20 62 72 65 61 6b | tab = |1; break|
|000020a0| 3b 0a 09 09 63 61 73 65 | 20 32 34 3a 20 70 72 69 |;...case| 24: pri|
|000020b0| 6e 74 66 28 22 43 54 4c | 2d 58 2d 22 29 3b 20 74 |ntf("CTL|-X-"); t|
|000020c0| 61 62 20 3d 20 32 3b 20 | 62 72 65 61 6b 3b 0a 09 |ab = 2; |break;..|
|000020d0| 09 63 61 73 65 20 32 35 | 3a 20 70 72 69 6e 74 66 |.case 25|: printf|
|000020e0| 28 22 43 54 4c 2d 59 2d | 22 29 3b 20 74 61 62 20 |("CTL-Y-|"); tab |
|000020f0| 3d 20 33 3b 20 62 72 65 | 61 6b 3b 0a 09 09 64 65 |= 3; bre|ak;...de|
|00002100| 66 61 75 6c 74 3a 20 70 | 75 74 5f 63 68 61 72 28 |fault: p|ut_char(|
|00002110| 6b 65 79 29 3b 09 74 61 | 62 20 3d 20 30 3b 20 62 |key);.ta|b = 0; b|
|00002120| 72 65 61 6b 3b 0a 09 7d | 0a 0a 09 69 66 20 28 74 |reak;..}|...if (t|
|00002130| 61 62 29 20 7b 0a 09 09 | 6b 65 79 20 3d 20 67 65 |ab) {...|key = ge|
|00002140| 74 63 68 61 72 28 29 3b | 0a 09 09 70 75 74 5f 63 |tchar();|...put_c|
|00002150| 68 61 72 28 6b 65 79 29 | 3b 0a 09 7d 0a 0a 09 70 |har(key)|;..}...p|
|00002160| 72 69 6e 74 66 28 22 20 | 74 6f 20 63 6f 6d 6d 61 |rintf(" |to comma|
|00002170| 6e 64 3a 20 22 29 3b 0a | 09 63 6e 20 3d 20 67 65 |nd: ");.|.cn = ge|
|00002180| 74 63 6f 6d 28 63 6d 64 | 73 2c 6e 63 6d 64 73 2c |tcom(cmd|s,ncmds,|
|00002190| 22 62 69 6e 64 2d 6b 65 | 79 20 74 6f 20 63 6f 6d |"bind-ke|y to com|
|000021a0| 6d 61 6e 64 3a 22 29 3b | 0a 09 70 72 69 6e 74 66 |mand:");|..printf|
|000021b0| 28 22 5c 6e 22 29 3b 0a | 09 72 65 66 20 3d 20 73 |("\n");.|.ref = s|
|000021c0| 79 6d 5f 72 65 66 28 63 | 6d 64 73 5b 63 6e 5d 29 |ym_ref(c|mds[cn])|
|000021d0| 3b 0a 09 62 69 6e 64 69 | 6e 67 5b 6b 65 79 5d 5b |;..bindi|ng[key][|
|000021e0| 74 61 62 5d 20 3d 20 72 | 65 66 3b 0a 7d 0a 0a 64 |tab] = r|ef;.}..d|
|000021f0| 65 73 63 72 69 62 65 5f | 62 69 6e 64 69 6e 67 73 |escribe_|bindings|
|00002200| 28 29 0a 7b 0a 09 69 6e | 74 20 69 2c 20 6b 2c 20 |().{..in|t i, k, |
|00002210| 78 2c 20 6d 61 78 3b 0a | 0a 09 6d 61 78 20 3d 20 |x, max;.|..max = |
|00002220| 30 3b 0a 09 66 6f 72 20 | 28 69 20 3d 20 31 3b 20 |0;..for |(i = 1; |
|00002230| 69 20 3c 20 6e 63 6d 64 | 73 3b 20 69 2b 2b 29 20 |i < ncmd|s; i++) |
|00002240| 7b 0a 09 09 78 20 3d 20 | 73 74 72 6c 65 6e 28 63 |{...x = |strlen(c|
|00002250| 6d 64 73 5b 69 5d 29 3b | 0a 09 09 69 66 20 28 78 |mds[i]);|...if (x|
|00002260| 20 3e 20 6d 61 78 29 20 | 6d 61 78 20 3d 20 78 3b | > max) |max = x;|
|00002270| 0a 09 7d 0a 0a 09 66 6f | 72 20 28 69 20 3d 20 31 |..}...fo|r (i = 1|
|00002280| 3b 20 69 20 3c 20 6e 63 | 6d 64 73 3b 20 69 2b 2b |; i < nc|mds; i++|
|00002290| 29 20 7b 0a 09 09 78 20 | 3d 20 73 79 6d 5f 72 65 |) {...x |= sym_re|
|000022a0| 66 28 63 6d 64 73 5b 69 | 5d 29 3b 0a 09 09 70 72 |f(cmds[i|]);...pr|
|000022b0| 69 6e 74 66 28 22 25 73 | 22 2c 63 6d 64 73 5b 69 |intf("%s|",cmds[i|
|000022c0| 5d 29 3b 0a 09 09 66 6f | 72 20 28 6b 20 3d 20 73 |]);...fo|r (k = s|
|000022d0| 74 72 6c 65 6e 28 63 6d | 64 73 5b 69 5d 29 3b 20 |trlen(cm|ds[i]); |
|000022e0| 6b 20 3c 20 6d 61 78 3b | 20 6b 2b 2b 29 20 70 72 |k < max;| k++) pr|
|000022f0| 69 6e 74 66 28 22 20 22 | 29 3b 0a 09 09 70 72 69 |intf(" "|);...pri|
|00002300| 6e 74 66 28 22 20 20 22 | 29 3b 0a 0a 09 09 66 6f |ntf(" "|);....fo|
|00002310| 72 20 28 6b 20 3d 20 30 | 3b 20 6b 20 3c 20 31 32 |r (k = 0|; k < 12|
|00002320| 38 3b 20 6b 2b 2b 29 0a | 09 09 09 69 66 20 28 62 |8; k++).|...if (b|
|00002330| 69 6e 64 69 6e 67 5b 6b | 5d 5b 30 5d 20 3d 3d 20 |inding[k|][0] == |
|00002340| 78 29 20 7b 0a 09 09 09 | 09 70 72 69 6e 74 66 28 |x) {....|.printf(|
|00002350| 22 20 28 22 29 3b 0a 09 | 09 09 09 70 75 74 5f 63 |" (");..|...put_c|
|00002360| 68 61 72 28 6b 29 3b 0a | 09 09 09 09 70 72 69 6e |har(k);.|....prin|
|00002370| 74 66 28 22 29 22 29 3b | 0a 09 09 09 7d 0a 09 09 |tf(")");|....}...|
|00002380| 66 6f 72 20 28 6b 20 3d | 20 30 3b 20 6b 20 3c 20 |for (k =| 0; k < |
|00002390| 31 32 38 3b 20 6b 2b 2b | 29 0a 09 09 09 69 66 20 |128; k++|)....if |
|000023a0| 28 62 69 6e 64 69 6e 67 | 5b 6b 5d 5b 31 5d 20 3d |(binding|[k][1] =|
|000023b0| 3d 20 78 29 20 7b 0a 09 | 09 09 09 70 72 69 6e 74 |= x) {..|...print|
|000023c0| 66 28 22 20 28 45 53 43 | 2d 22 29 3b 0a 09 09 09 |f(" (ESC|-");....|
|000023d0| 09 70 75 74 5f 63 68 61 | 72 28 6b 29 3b 0a 09 09 |.put_cha|r(k);...|
|000023e0| 09 09 70 72 69 6e 74 66 | 28 22 29 22 29 3b 0a 09 |..printf|(")");..|
|000023f0| 09 09 7d 0a 09 09 66 6f | 72 20 28 6b 20 3d 20 30 |..}...fo|r (k = 0|
|00002400| 3b 20 6b 20 3c 20 31 32 | 38 3b 20 6b 2b 2b 29 0a |; k < 12|8; k++).|
|00002410| 09 09 09 69 66 20 28 62 | 69 6e 64 69 6e 67 5b 6b |...if (b|inding[k|
|00002420| 5d 5b 32 5d 20 3d 3d 20 | 78 29 20 7b 0a 09 09 09 |][2] == |x) {....|
|00002430| 09 70 72 69 6e 74 66 28 | 22 20 28 43 54 4c 2d 58 |.printf(|" (CTL-X|
|00002440| 2d 22 29 3b 0a 09 09 09 | 09 70 75 74 5f 63 68 61 |-");....|.put_cha|
|00002450| 72 28 6b 29 3b 0a 09 09 | 09 09 70 72 69 6e 74 66 |r(k);...|..printf|
|00002460| 28 22 29 22 29 3b 0a 09 | 09 09 7d 0a 09 09 66 6f |(")");..|..}...fo|
|00002470| 72 20 28 6b 20 3d 20 30 | 3b 20 6b 20 3c 20 31 32 |r (k = 0|; k < 12|
|00002480| 38 3b 20 6b 2b 2b 29 0a | 09 09 09 69 66 20 28 62 |8; k++).|...if (b|
|00002490| 69 6e 64 69 6e 67 5b 6b | 5d 5b 33 5d 20 3d 3d 20 |inding[k|][3] == |
|000024a0| 78 29 20 7b 0a 09 09 09 | 09 70 72 69 6e 74 66 28 |x) {....|.printf(|
|000024b0| 22 20 28 43 54 4c 2d 59 | 2d 22 29 3b 0a 09 09 09 |" (CTL-Y|-");....|
|000024c0| 09 70 75 74 5f 63 68 61 | 72 28 6b 29 3b 0a 09 09 |.put_cha|r(k);...|
|000024d0| 09 09 70 72 69 6e 74 66 | 28 22 29 22 29 3b 0a 09 |..printf|(")");..|
|000024e0| 09 09 7d 0a 09 09 70 72 | 69 6e 74 66 28 22 5c 6e |..}...pr|intf("\n|
|000024f0| 22 29 3b 0a 09 7d 0a 7d | 0a 0a 64 75 6d 70 5f 73 |");..}.}|..dump_s|
|00002500| 79 6d 62 6f 6c 5f 74 61 | 62 6c 65 28 29 0a 7b 0a |ymbol_ta|ble().{.|
|00002510| 09 69 6e 74 20 69 3b 0a | 0a 09 66 6f 72 20 28 69 |.int i;.|..for (i|
|00002520| 20 3d 20 30 3b 20 69 20 | 3c 3d 20 6e 73 79 6d 73 | = 0; i |<= nsyms|
|00002530| 3b 20 69 2b 2b 29 20 7b | 0a 09 09 70 72 69 6e 74 |; i++) {|...print|
|00002540| 66 28 22 25 34 64 3a 20 | 25 73 20 22 2c 69 2c 73 |f("%4d: |%s ",i,s|
|00002550| 79 6d 62 6f 6c 5b 69 5d | 2e 6e 61 6d 65 29 3b 0a |ymbol[i]|.name);.|
|00002560| 09 09 73 77 69 74 63 68 | 20 28 73 79 6d 62 6f 6c |..switch| (symbol|
|00002570| 5b 69 5d 2e 74 79 70 65 | 29 20 7b 0a 09 09 09 63 |[i].type|) {....c|
|00002580| 61 73 65 20 43 4f 4d 4d | 41 4e 44 3a 20 20 70 72 |ase COMM|AND: pr|
|00002590| 69 6e 74 66 28 22 5b 63 | 6f 6d 6d 61 6e 64 5d 20 |intf("[c|ommand] |
|000025a0| 22 29 3b 20 62 72 65 61 | 6b 3b 0a 09 09 09 63 61 |"); brea|k;....ca|
|000025b0| 73 65 20 56 41 52 49 41 | 42 4c 45 3a 20 70 72 69 |se VARIA|BLE: pri|
|000025c0| 6e 74 66 28 22 5b 76 61 | 72 69 61 62 6c 65 5d 20 |ntf("[va|riable] |
|000025d0| 22 29 3b 20 62 72 65 61 | 6b 3b 0a 09 09 09 64 65 |"); brea|k;....de|
|000025e0| 66 61 75 6c 74 3a 20 70 | 72 69 6e 74 66 28 22 5b |fault: p|rintf("[|
|000025f0| 25 64 5d 20 22 2c 73 79 | 6d 62 6f 6c 5b 69 5d 2e |%d] ",sy|mbol[i].|
|00002600| 74 79 70 65 29 3b 0a 09 | 09 7d 0a 09 09 70 72 69 |type);..|.}...pri|
|00002610| 6e 74 66 28 22 5c 22 25 | 73 5c 22 20 25 64 5c 6e |ntf("\"%|s\" %d\n|
|00002620| 22 2c 73 79 6d 62 6f 6c | 5b 69 5d 2e 73 74 72 76 |",symbol|[i].strv|
|00002630| 61 6c 2c 73 79 6d 62 6f | 6c 5b 69 5d 2e 76 61 6c |al,symbo|l[i].val|
|00002640| 75 65 29 3b 0a 09 7d 0a | 7d 0a 53 48 41 52 5f 45 |ue);..}.|}.SHAR_E|
|00002650| 4f 46 0a 66 69 20 23 20 | 65 6e 64 20 6f 66 20 6f |OF.fi # |end of o|
|00002660| 76 65 72 77 72 69 74 69 | 6e 67 20 63 68 65 63 6b |verwriti|ng check|
|00002670| 0a 69 66 20 74 65 73 74 | 20 2d 66 20 27 69 66 61 |.if test| -f 'ifa|
|00002680| 63 65 2e 68 27 0a 74 68 | 65 6e 0a 09 65 63 68 6f |ce.h'.th|en..echo|
|00002690| 20 73 68 61 72 3a 20 77 | 69 6c 6c 20 6e 6f 74 20 | shar: w|ill not |
|000026a0| 6f 76 65 72 2d 77 72 69 | 74 65 20 65 78 69 73 74 |over-wri|te exist|
|000026b0| 69 6e 67 20 66 69 6c 65 | 20 22 27 69 66 61 63 65 |ing file| "'iface|
|000026c0| 2e 68 27 22 0a 65 6c 73 | 65 0a 63 61 74 20 3c 3c |.h'".els|e.cat <<|
|000026d0| 20 5c 53 48 41 52 5f 45 | 4f 46 20 3e 20 27 69 66 | \SHAR_E|OF > 'if|
|000026e0| 61 63 65 2e 68 27 0a 23 | 69 6e 63 6c 75 64 65 20 |ace.h'.#|include |
|000026f0| 3c 73 65 74 6a 6d 70 2e | 68 3e 0a 23 69 6e 63 6c |<setjmp.|h>.#incl|
|00002700| 75 64 65 20 3c 73 67 74 | 74 79 2e 68 3e 0a 23 69 |ude <sgt|ty.h>.#i|
|00002710| 6e 63 6c 75 64 65 20 3c | 73 69 67 6e 61 6c 2e 68 |nclude <|signal.h|
|00002720| 3e 0a 23 69 6e 63 6c 75 | 64 65 20 3c 73 74 64 69 |>.#inclu|de <stdi|
|00002730| 6f 2e 68 3e 0a 23 64 65 | 66 69 6e 65 20 4e 53 59 |o.h>.#de|fine NSY|
|00002740| 4d 20 32 35 36 0a 23 64 | 65 66 69 6e 65 20 43 4f |M 256.#d|efine CO|
|00002750| 4d 4d 41 4e 44 20 30 0a | 23 64 65 66 69 6e 65 20 |MMAND 0.|#define |
|00002760| 56 41 52 49 41 42 4c 45 | 20 31 0a 65 78 74 65 72 |VARIABLE| 1.exter|
|00002770| 6e 20 63 68 61 72 20 2a | 63 6d 64 73 5b 32 35 36 |n char *|cmds[256|
|00002780| 5d 2c 20 2a 73 79 6d 73 | 5b 4e 53 59 4d 5d 2c 20 |], *syms|[NSYM], |
|00002790| 6c 61 73 74 6b 65 79 3b | 0a 65 78 74 65 72 6e 20 |lastkey;|.extern |
|000027a0| 69 6e 74 20 28 2a 63 70 | 74 72 5b 32 35 36 5d 29 |int (*cp|tr[256])|
|000027b0| 28 29 2c 20 62 69 6e 64 | 69 6e 67 5b 31 32 38 5d |(), bind|ing[128]|
|000027c0| 5b 34 5d 3b 0a 65 78 74 | 65 72 6e 20 69 6e 74 20 |[4];.ext|ern int |
|000027d0| 6f 6c 64 66 6c 61 67 73 | 2c 20 6e 63 6d 64 73 2c |oldflags|, ncmds,|
|000027e0| 20 6e 73 79 6d 73 3b 0a | 0a 65 78 74 65 72 6e 20 | nsyms;.|.extern |
|000027f0| 73 74 72 75 63 74 20 6c | 74 63 68 61 72 73 20 74 |struct l|tchars t|
|00002800| 65 72 6d 63 3b 0a 65 78 | 74 65 72 6e 20 73 74 72 |ermc;.ex|tern str|
|00002810| 75 63 74 20 73 67 74 74 | 79 62 20 69 6f 62 61 73 |uct sgtt|yb iobas|
|00002820| 69 63 3b 0a 6a 6d 70 5f | 62 75 66 20 74 6f 70 65 |ic;.jmp_|buf tope|
|00002830| 6e 76 3b 0a 76 6f 69 64 | 20 73 69 67 74 72 61 70 |nv;.void| sigtrap|
|00002840| 28 29 3b 0a 76 6f 69 64 | 20 61 64 64 63 6f 6d 28 |();.void| addcom(|
|00002850| 29 3b 0a 63 68 61 72 20 | 2a 73 74 72 63 70 79 28 |);.char |*strcpy(|
|00002860| 29 3b 0a 0a 73 74 72 75 | 63 74 20 73 79 6d 5f 73 |);..stru|ct sym_s|
|00002870| 74 72 75 63 74 20 7b 0a | 09 63 68 61 72 20 2a 6e |truct {.|.char *n|
|00002880| 61 6d 65 2c 2a 73 74 72 | 76 61 6c 3b 0a 09 69 6e |ame,*str|val;..in|
|00002890| 74 20 74 79 70 65 2c 76 | 61 6c 75 65 3b 0a 7d 3b |t type,v|alue;.};|
|000028a0| 0a 65 78 74 65 72 6e 20 | 73 74 72 75 63 74 20 73 |.extern |struct s|
|000028b0| 79 6d 5f 73 74 72 75 63 | 74 20 73 79 6d 62 6f 6c |ym_struc|t symbol|
|000028c0| 5b 4e 53 59 4d 5d 3b 0a | 53 48 41 52 5f 45 4f 46 |[NSYM];.|SHAR_EOF|
|000028d0| 0a 66 69 20 23 20 65 6e | 64 20 6f 66 20 6f 76 65 |.fi # en|d of ove|
|000028e0| 72 77 72 69 74 69 6e 67 | 20 63 68 65 63 6b 0a 69 |rwriting| check.i|
|000028f0| 66 20 74 65 73 74 20 2d | 66 20 27 66 6e 73 2e 63 |f test -|f 'fns.c|
|00002900| 27 0a 74 68 65 6e 0a 09 | 65 63 68 6f 20 73 68 61 |'.then..|echo sha|
|00002910| 72 3a 20 77 69 6c 6c 20 | 6e 6f 74 20 6f 76 65 72 |r: will |not over|
|00002920| 2d 77 72 69 74 65 20 65 | 78 69 73 74 69 6e 67 20 |-write e|xisting |
|00002930| 66 69 6c 65 20 22 27 66 | 6e 73 2e 63 27 22 0a 65 |file "'f|ns.c'".e|
|00002940| 6c 73 65 0a 63 61 74 20 | 3c 3c 20 5c 53 48 41 52 |lse.cat |<< \SHAR|
|00002950| 5f 45 4f 46 20 3e 20 27 | 66 6e 73 2e 63 27 0a 23 |_EOF > '|fns.c'.#|
|00002960| 69 6e 63 6c 75 64 65 20 | 22 69 66 61 63 65 2e 68 |include |"iface.h|
|00002970| 22 0a 0a 64 6f 5f 73 6f | 6d 65 74 68 69 6e 67 28 |"..do_so|mething(|
|00002980| 29 0a 7b 0a 09 6c 6f 6e | 67 20 72 61 6e 64 6f 6d |).{..lon|g random|
|00002990| 28 29 3b 0a 09 69 6e 74 | 20 69 3b 0a 09 63 68 61 |();..int| i;..cha|
|000029a0| 72 20 6e 61 6d 65 5b 31 | 32 38 5d 3b 0a 0a 09 69 |r name[1|28];...i|
|000029b0| 20 3d 20 28 69 6e 74 29 | 28 72 61 6e 64 6f 6d 28 | = (int)|(random(|
|000029c0| 29 20 25 20 31 31 29 3b | 0a 0a 09 73 77 69 74 63 |) % 11);|...switc|
|000029d0| 68 20 28 69 29 20 7b 0a | 09 09 63 61 73 65 20 20 |h (i) {.|..case |
|000029e0| 30 3a 20 70 72 69 6e 74 | 66 28 22 48 65 6c 6c 6f |0: print|f("Hello|
|000029f0| 20 57 6f 72 6c 64 5c 6e | 22 29 3b 20 62 72 65 61 | World\n|"); brea|
|00002a00| 6b 3b 0a 09 09 63 61 73 | 65 20 20 31 3a 20 70 72 |k;...cas|e 1: pr|
|00002a10| 69 6e 74 66 28 22 54 68 | 69 73 20 73 70 61 63 65 |intf("Th|is space|
|00002a20| 20 69 6e 74 65 6e 74 69 | 6f 6e 61 6c 6c 79 20 6c | intenti|onally l|
|00002a30| 65 66 74 20 62 6c 61 6e | 6b 5c 6e 22 29 3b 20 62 |eft blan|k\n"); b|
|00002a40| 72 65 61 6b 3b 0a 09 09 | 63 61 73 65 20 20 32 3a |reak;...|case 2:|
|00002a50| 20 70 72 69 6e 74 66 28 | 22 2a 2a 2a 52 45 50 4c | printf(|"***REPL|
|00002a60| 41 43 45 20 54 48 49 53 | 20 4c 49 4e 45 20 57 49 |ACE THIS| LINE WI|
|00002a70| 54 48 20 59 4f 55 52 20 | 4d 45 53 53 41 47 45 2a |TH YOUR |MESSAGE*|
|00002a80| 2a 2a 5c 6e 22 29 3b 20 | 62 72 65 61 6b 3b 0a 09 |**\n"); |break;..|
|00002a90| 09 63 61 73 65 20 20 33 | 3a 20 70 72 69 6e 74 66 |.case 3|: printf|
|00002aa0| 28 22 54 65 73 74 69 6e | 67 20 31 2c 20 32 2c 20 |("Testin|g 1, 2, |
|00002ab0| 33 2c 20 34 5c 6e 22 29 | 3b 20 62 72 65 61 6b 3b |3, 4\n")|; break;|
|00002ac0| 0a 09 09 63 61 73 65 20 | 20 34 3a 20 70 72 69 6e |...case | 4: prin|
|00002ad0| 74 66 28 22 50 6c 65 61 | 73 65 20 69 67 6e 6f 72 |tf("Plea|se ignor|
|00002ae0| 65 20 74 68 69 73 20 6d | 65 73 73 61 67 65 5c 6e |e this m|essage\n|
|00002af0| 22 29 3b 20 62 72 65 61 | 6b 3b 0a 09 09 63 61 73 |"); brea|k;...cas|
|00002b00| 65 20 20 35 3a 20 70 72 | 69 6e 74 66 28 22 45 72 |e 5: pr|intf("Er|
|00002b10| 72 6f 72 5c 30 37 5c 6e | 22 29 3b 20 62 72 65 61 |ror\07\n|"); brea|
|00002b20| 6b 3b 0a 09 09 63 61 73 | 65 20 20 36 3a 20 70 72 |k;...cas|e 6: pr|
|00002b30| 69 6e 74 66 28 22 76 65 | 72 73 69 6f 6e 20 30 2e |intf("ve|rsion 0.|
|00002b40| 30 5c 6e 22 29 3b 20 62 | 72 65 61 6b 3b 0a 09 09 |0\n"); b|reak;...|
|00002b50| 63 61 73 65 20 20 37 3a | 20 70 72 69 6e 74 66 28 |case 7:| printf(|
|00002b60| 22 57 68 61 74 20 74 68 | 65 20 68 65 6c 6c 20 69 |"What th|e hell i|
|00002b70| 73 20 61 20 4d 69 6d 73 | 65 79 20 54 6f 76 65 3f |s a Mims|ey Tove?|
|00002b80| 5c 6e 22 29 3b 20 62 72 | 65 61 6b 3b 0a 09 09 63 |\n"); br|eak;...c|
|00002b90| 61 73 65 20 20 38 3a 20 | 70 72 69 6e 74 66 28 22 |ase 8: |printf("|
|00002ba0| 28 63 6f 72 65 20 6e 6f | 74 20 64 75 6d 70 65 64 |(core no|t dumped|
|00002bb0| 29 5c 6e 22 29 3b 20 62 | 72 65 61 6b 3b 0a 09 09 |)\n"); b|reak;...|
|00002bc0| 63 61 73 65 20 20 39 3a | 20 70 72 69 6e 74 66 28 |case 9:| printf(|
|00002bd0| 22 5b 79 6e 71 5d 20 22 | 29 3b 20 70 75 74 5f 63 |"[ynq] "|); put_c|
|00002be0| 68 61 72 28 67 65 74 63 | 68 61 72 28 29 29 3b 20 |har(getc|har()); |
|00002bf0| 70 72 69 6e 74 66 28 22 | 5c 6e 22 29 3b 20 62 72 |printf("|\n"); br|
|00002c00| 65 61 6b 3b 0a 09 09 63 | 61 73 65 20 31 30 3a 0a |eak;...c|ase 10:.|
|00002c10| 09 09 09 70 72 69 6e 74 | 66 28 22 50 6c 65 61 73 |...print|f("Pleas|
|00002c20| 65 20 65 6e 74 65 72 20 | 79 6f 75 72 20 6e 61 6d |e enter |your nam|
|00002c30| 65 3a 20 22 29 3b 0a 09 | 09 09 67 65 74 5f 73 74 |e: ");..|..get_st|
|00002c40| 72 69 6e 67 28 6e 61 6d | 65 29 3b 0a 09 09 09 70 |ring(nam|e);....p|
|00002c50| 72 69 6e 74 66 28 22 5c | 6e 54 68 61 6e 6b 20 79 |rintf("\|nThank y|
|00002c60| 6f 75 5c 6e 22 29 3b 0a | 09 09 09 62 72 65 61 6b |ou\n");.|...break|
|00002c70| 3b 0a 09 7d 0a 7d 0a 0a | 64 6f 5f 6e 6f 74 68 69 |;..}.}..|do_nothi|
|00002c80| 6e 67 28 29 20 7b 70 72 | 69 6e 74 66 28 22 44 6f |ng() {pr|intf("Do|
|00002c90| 6e 65 21 5c 6e 22 29 3b | 7d 0a 53 48 41 52 5f 45 |ne!\n");|}.SHAR_E|
|00002ca0| 4f 46 0a 66 69 20 23 20 | 65 6e 64 20 6f 66 20 6f |OF.fi # |end of o|
|00002cb0| 76 65 72 77 72 69 74 69 | 6e 67 20 63 68 65 63 6b |verwriti|ng check|
|00002cc0| 0a 69 66 20 74 65 73 74 | 20 2d 66 20 27 69 6e 69 |.if test| -f 'ini|
|00002cd0| 74 2e 63 27 0a 74 68 65 | 6e 0a 09 65 63 68 6f 20 |t.c'.the|n..echo |
|00002ce0| 73 68 61 72 3a 20 77 69 | 6c 6c 20 6e 6f 74 20 6f |shar: wi|ll not o|
|00002cf0| 76 65 72 2d 77 72 69 74 | 65 20 65 78 69 73 74 69 |ver-writ|e existi|
|00002d00| 6e 67 20 66 69 6c 65 20 | 22 27 69 6e 69 74 2e 63 |ng file |"'init.c|
|00002d10| 27 22 0a 65 6c 73 65 0a | 63 61 74 20 3c 3c 20 5c |'".else.|cat << \|
|00002d20| 53 48 41 52 5f 45 4f 46 | 20 3e 20 27 69 6e 69 74 |SHAR_EOF| > 'init|
|00002d30| 2e 63 27 0a 23 69 6e 63 | 6c 75 64 65 20 22 69 66 |.c'.#inc|lude "if|
|00002d40| 61 63 65 2e 68 22 0a 0a | 69 6e 69 74 28 29 0a 7b |ace.h"..|init().{|
|00002d50| 0a 09 73 72 61 6e 64 6f | 6d 28 67 65 74 70 69 64 |..srando|m(getpid|
|00002d60| 28 29 29 3b 0a 09 73 69 | 67 6e 61 6c 28 53 49 47 |());..si|gnal(SIG|
|00002d70| 49 4e 54 2c 73 69 67 74 | 72 61 70 29 3b 0a 09 73 |INT,sigt|rap);..s|
|00002d80| 69 67 6e 61 6c 28 53 49 | 47 48 55 50 2c 73 69 67 |ignal(SI|GHUP,sig|
|00002d90| 74 72 61 70 29 3b 0a 09 | 6e 65 77 74 65 72 6d 28 |trap);..|newterm(|
|00002da0| 29 3b 0a 09 69 6e 69 74 | 5f 73 79 6d 62 6f 6c 73 |);..init|_symbols|
|00002db0| 28 29 3b 0a 09 69 6e 69 | 74 5f 76 61 72 69 61 62 |();..ini|t_variab|
|00002dc0| 6c 65 73 28 29 3b 0a 09 | 69 6e 69 74 5f 62 69 6e |les();..|init_bin|
|00002dd0| 64 69 6e 67 73 28 29 3b | 0a 7d 0a 0a 69 6e 69 74 |dings();|.}..init|
|00002de0| 5f 73 79 6d 62 6f 6c 73 | 28 29 0a 7b 0a 09 69 6e |_symbols|().{..in|
|00002df0| 74 20 69 2c 6a 3b 0a 09 | 63 68 61 72 20 2a 6d 61 |t i,j;..|char *ma|
|00002e00| 6c 6c 6f 63 28 29 3b 0a | 09 69 6e 74 20 28 2a 63 |lloc();.|.int (*c|
|00002e10| 6f 6d 6d 61 6e 64 5f 70 | 74 72 28 29 29 28 29 3b |ommand_p|tr())();|
|00002e20| 0a 0a 09 66 6f 72 20 28 | 69 20 3d 20 30 3b 20 69 |...for (|i = 0; i|
|00002e30| 20 3c 20 31 32 38 3b 20 | 69 2b 2b 29 0a 09 09 66 | < 128; |i++)...f|
|00002e40| 6f 72 20 28 6a 20 3d 20 | 30 3b 20 6a 20 3c 20 34 |or (j = |0; j < 4|
|00002e50| 3b 20 6a 2b 2b 29 20 62 | 69 6e 64 69 6e 67 5b 69 |; j++) b|inding[i|
|00002e60| 5d 5b 6a 5d 20 3d 20 30 | 3b 0a 0a 09 6e 73 79 6d |][j] = 0|;...nsym|
|00002e70| 73 20 3d 20 30 3b 0a 09 | 63 6d 64 73 5b 30 5d 20 |s = 0;..|cmds[0] |
|00002e80| 3d 20 6d 61 6c 6c 6f 63 | 28 36 29 3b 0a 09 73 74 |= malloc|(6);..st|
|00002e90| 72 63 70 79 28 63 6d 64 | 73 5b 30 5d 2c 22 42 4f |rcpy(cmd|s[0],"BO|
|00002ea0| 47 55 53 22 29 3b 0a 09 | 63 70 74 72 5b 30 5d 20 |GUS");..|cptr[0] |
|00002eb0| 3d 20 63 6f 6d 6d 61 6e | 64 5f 70 74 72 28 22 42 |= comman|d_ptr("B|
|00002ec0| 4f 47 55 53 22 29 3b 0a | 09 73 79 6d 62 6f 6c 5b |OGUS");.|.symbol[|
|00002ed0| 30 5d 2e 6e 61 6d 65 20 | 3d 20 63 6d 64 73 5b 30 |0].name |= cmds[0|
|00002ee0| 5d 3b 0a 09 73 79 6d 62 | 6f 6c 5b 30 5d 2e 76 61 |];..symb|ol[0].va|
|00002ef0| 6c 75 65 20 3d 20 30 3b | 0a 09 6e 63 6d 64 73 20 |lue = 0;|..ncmds |
|00002f00| 3d 20 31 3b 0a 0a 09 61 | 64 64 63 6f 6d 28 22 43 |= 1;...a|ddcom("C|
|00002f10| 54 4c 2d 58 2d 70 72 65 | 66 69 78 22 29 3b 0a 09 |TL-X-pre|fix");..|
|00002f20| 61 64 64 63 6f 6d 28 22 | 43 54 4c 2d 59 2d 70 72 |addcom("|CTL-Y-pr|
|00002f30| 65 66 69 78 22 29 3b 0a | 09 61 64 64 63 6f 6d 28 |efix");.|.addcom(|
|00002f40| 22 45 53 43 2d 70 72 65 | 66 69 78 22 29 3b 0a 09 |"ESC-pre|fix");..|
|00002f50| 61 64 64 63 6f 6d 28 22 | 62 69 6e 64 2d 6b 65 79 |addcom("|bind-key|
|00002f60| 22 29 3b 0a 09 61 64 64 | 63 6f 6d 28 22 64 65 73 |");..add|com("des|
|00002f70| 63 72 69 62 65 2d 62 69 | 6e 64 69 6e 67 73 22 29 |cribe-bi|ndings")|
|00002f80| 3b 0a 09 61 64 64 63 6f | 6d 28 22 64 65 73 63 72 |;..addco|m("descr|
|00002f90| 69 62 65 2d 6b 65 79 22 | 29 3b 0a 09 61 64 64 63 |ibe-key"|);..addc|
|00002fa0| 6f 6d 28 22 64 6f 2d 6e | 6f 74 68 69 6e 67 22 29 |om("do-n|othing")|
|00002fb0| 3b 0a 09 61 64 64 63 6f | 6d 28 22 64 6f 2d 73 6f |;..addco|m("do-so|
|00002fc0| 6d 65 74 68 69 6e 67 22 | 29 3b 0a 09 61 64 64 63 |mething"|);..addc|
|00002fd0| 6f 6d 28 22 64 75 6d 70 | 2d 73 79 6d 62 6f 6c 2d |om("dump|-symbol-|
|00002fe0| 74 61 62 6c 65 22 29 3b | 0a 09 61 64 64 63 6f 6d |table");|..addcom|
|00002ff0| 28 22 65 78 74 65 6e 64 | 65 64 2d 63 6f 6d 6d 61 |("extend|ed-comma|
|00003000| 6e 64 22 29 3b 0a 09 61 | 64 64 63 6f 6d 28 22 70 |nd");..a|ddcom("p|
|00003010| 72 69 6e 74 2d 76 65 72 | 73 69 6f 6e 22 29 3b 0a |rint-ver|sion");.|
|00003020| 09 61 64 64 63 6f 6d 28 | 22 71 75 69 74 22 29 3b |.addcom(|"quit");|
|00003030| 0a 7d 0a 0a 69 6e 69 74 | 5f 76 61 72 69 61 62 6c |.}..init|_variabl|
|00003040| 65 73 28 29 0a 7b 0a 09 | 61 64 64 76 61 72 28 22 |es().{..|addvar("|
|00003050| 64 75 6d 6d 79 22 2c 22 | 22 2c 30 29 3b 0a 09 61 |dummy","|",0);..a|
|00003060| 64 64 76 61 72 28 22 76 | 65 72 73 69 6f 6e 22 2c |ddvar("v|ersion",|
|00003070| 22 30 2e 30 22 2c 30 29 | 3b 0a 7d 0a 0a 76 6f 69 |"0.0",0)|;.}..voi|
|00003080| 64 20 61 64 64 63 6f 6d | 28 73 74 72 29 0a 63 68 |d addcom|(str).ch|
|00003090| 61 72 20 2a 73 74 72 3b | 0a 7b 0a 09 63 68 61 72 |ar *str;|.{..char|
|000030a0| 20 2a 6d 61 6c 6c 6f 63 | 28 29 3b 0a 09 69 6e 74 | *malloc|();..int|
|000030b0| 20 72 65 66 3b 0a 0a 09 | 69 66 20 28 73 74 72 63 | ref;...|if (strc|
|000030c0| 6d 70 28 73 74 72 2c 63 | 6d 64 73 5b 6e 63 6d 64 |mp(str,c|mds[ncmd|
|000030d0| 73 2d 31 5d 29 20 3c 20 | 30 29 20 7b 0a 09 09 70 |s-1]) < |0) {...p|
|000030e0| 72 69 6e 74 66 28 22 23 | 20 59 75 63 6b 21 20 69 |rintf("#| Yuck! i|
|000030f0| 6e 69 74 69 61 6c 20 63 | 6f 6d 6d 61 6e 64 20 25 |nitial c|ommand %|
|00003100| 73 20 69 73 20 6f 75 74 | 20 6f 66 20 70 6c 61 63 |s is out| of plac|
|00003110| 65 21 5c 6e 22 2c 73 74 | 72 29 3b 0a 09 09 71 75 |e!\n",st|r);...qu|
|00003120| 69 74 28 29 3b 0a 09 7d | 0a 0a 09 63 6d 64 73 5b |it();..}|...cmds[|
|00003130| 6e 63 6d 64 73 5d 20 3d | 20 6d 61 6c 6c 6f 63 28 |ncmds] =| malloc(|
|00003140| 28 75 6e 73 69 67 6e 65 | 64 29 28 73 74 72 6c 65 |(unsigne|d)(strle|
|00003150| 6e 28 73 74 72 29 2b 31 | 29 29 3b 0a 09 73 74 72 |n(str)+1|));..str|
|00003160| 63 70 79 28 63 6d 64 73 | 5b 6e 63 6d 64 73 5d 2c |cpy(cmds|[ncmds],|
|00003170| 73 74 72 29 3b 0a 09 63 | 70 74 72 5b 6e 63 6d 64 |str);..c|ptr[ncmd|
|00003180| 73 5d 20 3d 20 63 6f 6d | 6d 61 6e 64 5f 70 74 72 |s] = com|mand_ptr|
|00003190| 28 73 74 72 29 3b 0a 09 | 6e 63 6d 64 73 2b 2b 3b |(str);..|ncmds++;|
|000031a0| 0a 0a 09 66 6f 72 20 28 | 72 65 66 20 3d 20 31 3b |...for (|ref = 1;|
|000031b0| 20 28 72 65 66 20 3c 20 | 4e 53 59 4d 29 20 26 26 | (ref < |NSYM) &&|
|000031c0| 20 28 73 79 6d 62 6f 6c | 5b 72 65 66 5d 2e 6e 61 | (symbol|[ref].na|
|000031d0| 6d 65 20 21 3d 20 4e 55 | 4c 4c 29 3b 20 72 65 66 |me != NU|LL); ref|
|000031e0| 2b 2b 29 3b 0a 09 73 79 | 6d 62 6f 6c 5b 72 65 66 |++);..sy|mbol[ref|
|000031f0| 5d 2e 6e 61 6d 65 20 3d | 20 63 6d 64 73 5b 6e 63 |].name =| cmds[nc|
|00003200| 6d 64 73 2d 31 5d 3b 0a | 09 73 79 6d 62 6f 6c 5b |mds-1];.|.symbol[|
|00003210| 72 65 66 5d 2e 74 79 70 | 65 20 3d 20 43 4f 4d 4d |ref].typ|e = COMM|
|00003220| 41 4e 44 3b 0a 09 73 79 | 6d 62 6f 6c 5b 72 65 66 |AND;..sy|mbol[ref|
|00003230| 5d 2e 76 61 6c 75 65 20 | 3d 20 6e 63 6d 64 73 2d |].value |= ncmds-|
|00003240| 31 3b 0a 09 61 64 64 73 | 79 6d 28 73 79 6d 62 6f |1;..adds|ym(symbo|
|00003250| 6c 5b 72 65 66 5d 2e 6e | 61 6d 65 29 3b 0a 7d 0a |l[ref].n|ame);.}.|
|00003260| 0a 61 64 64 76 61 72 28 | 73 74 72 2c 73 74 72 76 |.addvar(|str,strv|
|00003270| 61 6c 2c 76 61 6c 29 0a | 63 68 61 72 20 2a 73 74 |al,val).|char *st|
|00003280| 72 2c 20 2a 73 74 72 76 | 61 6c 3b 0a 69 6e 74 20 |r, *strv|al;.int |
|00003290| 76 61 6c 3b 0a 7b 0a 09 | 63 68 61 72 20 2a 6d 61 |val;.{..|char *ma|
|000032a0| 6c 6c 6f 63 28 29 3b 0a | 09 69 6e 74 20 72 65 66 |lloc();.|.int ref|
|000032b0| 3b 0a 0a 09 66 6f 72 20 | 28 72 65 66 20 3d 20 31 |;...for |(ref = 1|
|000032c0| 3b 20 28 72 65 66 20 3c | 20 4e 53 59 4d 29 20 26 |; (ref <| NSYM) &|
|000032d0| 26 20 28 73 79 6d 62 6f | 6c 5b 72 65 66 5d 2e 6e |& (symbo|l[ref].n|
|000032e0| 61 6d 65 20 21 3d 20 4e | 55 4c 4c 29 3b 20 72 65 |ame != N|ULL); re|
|000032f0| 66 2b 2b 29 3b 0a 09 73 | 79 6d 62 6f 6c 5b 72 65 |f++);..s|ymbol[re|
|00003300| 66 5d 2e 6e 61 6d 65 20 | 3d 20 6d 61 6c 6c 6f 63 |f].name |= malloc|
|00003310| 28 73 74 72 6c 65 6e 28 | 73 74 72 29 20 2b 20 31 |(strlen(|str) + 1|
|00003320| 29 3b 0a 09 73 74 72 63 | 70 79 28 73 79 6d 62 6f |);..strc|py(symbo|
|00003330| 6c 5b 72 65 66 5d 2e 6e | 61 6d 65 2c 73 74 72 29 |l[ref].n|ame,str)|
|00003340| 3b 0a 09 73 79 6d 62 6f | 6c 5b 72 65 66 5d 2e 73 |;..symbo|l[ref].s|
|00003350| 74 72 76 61 6c 20 3d 20 | 6d 61 6c 6c 6f 63 28 73 |trval = |malloc(s|
|00003360| 74 72 6c 65 6e 28 73 74 | 72 76 61 6c 29 20 2b 20 |trlen(st|rval) + |
|00003370| 31 29 3b 0a 09 73 74 72 | 63 70 79 28 73 79 6d 62 |1);..str|cpy(symb|
|00003380| 6f 6c 5b 72 65 66 5d 2e | 73 74 72 76 61 6c 2c 73 |ol[ref].|strval,s|
|00003390| 74 72 76 61 6c 29 3b 0a | 09 73 79 6d 62 6f 6c 5b |trval);.|.symbol[|
|000033a0| 72 65 66 5d 2e 74 79 70 | 65 20 3d 20 56 41 52 49 |ref].typ|e = VARI|
|000033b0| 41 42 4c 45 3b 0a 09 73 | 79 6d 62 6f 6c 5b 72 65 |ABLE;..s|ymbol[re|
|000033c0| 66 5d 2e 76 61 6c 75 65 | 20 3d 20 76 61 6c 3b 0a |f].value| = val;.|
|000033d0| 09 61 64 64 73 79 6d 28 | 73 74 72 29 3b 0a 7d 0a |.addsym(|str);.}.|
|000033e0| 0a 69 6e 74 20 28 2a 63 | 6f 6d 6d 61 6e 64 5f 70 |.int (*c|ommand_p|
|000033f0| 74 72 28 73 74 72 29 29 | 28 29 0a 63 68 61 72 20 |tr(str))|().char |
|00003400| 2a 73 74 72 3b 0a 7b 0a | 09 69 6e 74 20 42 4f 47 |*str;.{.|.int BOG|
|00003410| 55 53 28 29 2c 20 43 54 | 4c 5f 58 5f 70 72 65 66 |US(), CT|L_X_pref|
|00003420| 69 78 28 29 2c 20 43 54 | 4c 5f 59 5f 70 72 65 66 |ix(), CT|L_Y_pref|
|00003430| 69 78 28 29 2c 20 45 53 | 43 5f 70 72 65 66 69 78 |ix(), ES|C_prefix|
|00003440| 28 29 3b 0a 09 69 6e 74 | 20 71 75 69 74 28 29 2c |();..int| quit(),|
|00003450| 20 65 78 74 65 6e 64 65 | 64 5f 63 6f 6d 6d 61 6e | extende|d_comman|
|00003460| 64 28 29 2c 20 64 75 6d | 70 5f 73 79 6d 62 6f 6c |d(), dum|p_symbol|
|00003470| 5f 74 61 62 6c 65 28 29 | 3b 0a 09 69 6e 74 20 64 |_table()|;..int d|
|00003480| 65 73 63 72 69 62 65 5f | 62 69 6e 64 69 6e 67 73 |escribe_|bindings|
|00003490| 28 29 2c 20 64 65 73 63 | 72 69 62 65 5f 6b 65 79 |(), desc|ribe_key|
|000034a0| 28 29 2c 20 62 69 6e 64 | 5f 6b 65 79 28 29 2c 20 |(), bind|_key(), |
|000034b0| 70 72 69 6e 74 5f 76 65 | 72 73 69 6f 6e 28 29 3b |print_ve|rsion();|
|000034c0| 0a 09 69 6e 74 20 64 6f | 5f 73 6f 6d 65 74 68 69 |..int do|_somethi|
|000034d0| 6e 67 28 29 2c 20 64 6f | 5f 6e 6f 74 68 69 6e 67 |ng(), do|_nothing|
|000034e0| 28 29 3b 0a 0a 09 69 66 | 20 28 21 73 74 72 63 6d |();...if| (!strcm|
|000034f0| 70 28 73 74 72 2c 22 42 | 4f 47 55 53 22 29 29 20 |p(str,"B|OGUS")) |
|00003500| 72 65 74 75 72 6e 28 42 | 4f 47 55 53 29 3b 0a 09 |return(B|OGUS);..|
|00003510| 69 66 20 28 21 73 74 72 | 63 6d 70 28 73 74 72 2c |if (!str|cmp(str,|
|00003520| 22 43 54 4c 2d 58 2d 70 | 72 65 66 69 78 22 29 29 |"CTL-X-p|refix"))|
|00003530| 20 72 65 74 75 72 6e 28 | 43 54 4c 5f 58 5f 70 72 | return(|CTL_X_pr|
|00003540| 65 66 69 78 29 3b 0a 09 | 69 66 20 28 21 73 74 72 |efix);..|if (!str|
|00003550| 63 6d 70 28 73 74 72 2c | 22 43 54 4c 2d 59 2d 70 |cmp(str,|"CTL-Y-p|
|00003560| 72 65 66 69 78 22 29 29 | 20 72 65 74 75 72 6e 28 |refix"))| return(|
|00003570| 43 54 4c 5f 59 5f 70 72 | 65 66 69 78 29 3b 0a 09 |CTL_Y_pr|efix);..|
|00003580| 69 66 20 28 21 73 74 72 | 63 6d 70 28 73 74 72 2c |if (!str|cmp(str,|
|00003590| 22 45 53 43 2d 70 72 65 | 66 69 78 22 29 29 20 72 |"ESC-pre|fix")) r|
|000035a0| 65 74 75 72 6e 28 45 53 | 43 5f 70 72 65 66 69 78 |eturn(ES|C_prefix|
|000035b0| 29 3b 0a 09 69 66 20 28 | 21 73 74 72 63 6d 70 28 |);..if (|!strcmp(|
|000035c0| 73 74 72 2c 22 62 69 6e | 64 2d 6b 65 79 22 29 29 |str,"bin|d-key"))|
|000035d0| 20 72 65 74 75 72 6e 28 | 62 69 6e 64 5f 6b 65 79 | return(|bind_key|
|000035e0| 29 3b 0a 09 69 66 20 28 | 21 73 74 72 63 6d 70 28 |);..if (|!strcmp(|
|000035f0| 73 74 72 2c 22 64 65 73 | 63 72 69 62 65 2d 62 69 |str,"des|cribe-bi|
|00003600| 6e 64 69 6e 67 73 22 29 | 29 20 72 65 74 75 72 6e |ndings")|) return|
|00003610| 28 64 65 73 63 72 69 62 | 65 5f 62 69 6e 64 69 6e |(describ|e_bindin|
|00003620| 67 73 29 3b 0a 09 69 66 | 20 28 21 73 74 72 63 6d |gs);..if| (!strcm|
|00003630| 70 28 73 74 72 2c 22 64 | 65 73 63 72 69 62 65 2d |p(str,"d|escribe-|
|00003640| 6b 65 79 22 29 29 20 72 | 65 74 75 72 6e 28 64 65 |key")) r|eturn(de|
|00003650| 73 63 72 69 62 65 5f 6b | 65 79 29 3b 0a 09 69 66 |scribe_k|ey);..if|
|00003660| 20 28 21 73 74 72 63 6d | 70 28 73 74 72 2c 22 64 | (!strcm|p(str,"d|
|00003670| 6f 2d 6e 6f 74 68 69 6e | 67 22 29 29 20 72 65 74 |o-nothin|g")) ret|
|00003680| 75 72 6e 28 64 6f 5f 6e | 6f 74 68 69 6e 67 29 3b |urn(do_n|othing);|
|00003690| 0a 09 69 66 20 28 21 73 | 74 72 63 6d 70 28 73 74 |..if (!s|trcmp(st|
|000036a0| 72 2c 22 64 6f 2d 73 6f | 6d 65 74 68 69 6e 67 22 |r,"do-so|mething"|
|000036b0| 29 29 20 72 65 74 75 72 | 6e 28 64 6f 5f 73 6f 6d |)) retur|n(do_som|
|000036c0| 65 74 68 69 6e 67 29 3b | 0a 09 69 66 20 28 21 73 |ething);|..if (!s|
|000036d0| 74 72 63 6d 70 28 73 74 | 72 2c 22 64 75 6d 70 2d |trcmp(st|r,"dump-|
|000036e0| 73 79 6d 62 6f 6c 2d 74 | 61 62 6c 65 22 29 29 20 |symbol-t|able")) |
|000036f0| 72 65 74 75 72 6e 28 64 | 75 6d 70 5f 73 79 6d 62 |return(d|ump_symb|
|00003700| 6f 6c 5f 74 61 62 6c 65 | 29 3b 0a 09 69 66 20 28 |ol_table|);..if (|
|00003710| 21 73 74 72 63 6d 70 28 | 73 74 72 2c 22 65 78 74 |!strcmp(|str,"ext|
|00003720| 65 6e 64 65 64 2d 63 6f | 6d 6d 61 6e 64 22 29 29 |ended-co|mmand"))|
|00003730| 20 72 65 74 75 72 6e 28 | 65 78 74 65 6e 64 65 64 | return(|extended|
|00003740| 5f 63 6f 6d 6d 61 6e 64 | 29 3b 0a 09 69 66 20 28 |_command|);..if (|
|00003750| 21 73 74 72 63 6d 70 28 | 73 74 72 2c 22 70 72 69 |!strcmp(|str,"pri|
|00003760| 6e 74 2d 76 65 72 73 69 | 6f 6e 22 29 29 20 72 65 |nt-versi|on")) re|
|00003770| 74 75 72 6e 28 70 72 69 | 6e 74 5f 76 65 72 73 69 |turn(pri|nt_versi|
|00003780| 6f 6e 29 3b 0a 09 69 66 | 20 28 21 73 74 72 63 6d |on);..if| (!strcm|
|00003790| 70 28 73 74 72 2c 22 71 | 75 69 74 22 29 29 20 72 |p(str,"q|uit")) r|
|000037a0| 65 74 75 72 6e 28 71 75 | 69 74 29 3b 0a 09 72 65 |eturn(qu|it);..re|
|000037b0| 74 75 72 6e 28 42 4f 47 | 55 53 29 3b 0a 7d 0a 0a |turn(BOG|US);.}..|
|000037c0| 61 64 64 73 79 6d 28 73 | 74 72 29 0a 63 68 61 72 |addsym(s|tr).char|
|000037d0| 20 2a 73 74 72 3b 0a 7b | 0a 09 69 6e 74 20 69 2c | *str;.{|..int i,|
|000037e0| 20 6a 2c 20 73 63 61 6e | 3b 0a 09 63 68 61 72 20 | j, scan|;..char |
|000037f0| 2a 6d 61 6c 6c 6f 63 28 | 29 3b 0a 0a 09 69 20 3d |*malloc(|);...i =|
|00003800| 20 30 3b 0a 09 73 63 61 | 6e 20 3d 20 31 3b 0a 0a | 0;..sca|n = 1;..|
|00003810| 09 77 68 69 6c 65 20 28 | 28 73 63 61 6e 29 20 26 |.while (|(scan) &|
|00003820| 26 20 28 69 20 3c 20 6e | 73 79 6d 73 29 29 0a 09 |& (i < n|syms))..|
|00003830| 09 69 66 20 28 73 74 72 | 63 6d 70 28 73 74 72 2c |.if (str|cmp(str,|
|00003840| 73 79 6d 73 5b 69 5d 29 | 20 3c 20 30 29 20 73 63 |syms[i])| < 0) sc|
|00003850| 61 6e 20 3d 20 30 3b 0a | 09 09 65 6c 73 65 20 69 |an = 0;.|..else i|
|00003860| 2b 2b 3b 0a 0a 09 66 6f | 72 20 28 6a 20 3d 20 6e |++;...fo|r (j = n|
|00003870| 73 79 6d 73 3b 20 6a 20 | 3e 20 69 3b 20 6a 2d 2d |syms; j |> i; j--|
|00003880| 29 20 73 79 6d 73 5b 6a | 5d 20 3d 20 73 79 6d 73 |) syms[j|] = syms|
|00003890| 5b 6a 2d 31 5d 3b 0a 0a | 09 73 79 6d 73 5b 69 5d |[j-1];..|.syms[i]|
|000038a0| 20 3d 20 6d 61 6c 6c 6f | 63 28 73 74 72 6c 65 6e | = mallo|c(strlen|
|000038b0| 28 73 74 72 29 20 2b 20 | 31 29 3b 0a 09 73 74 72 |(str) + |1);..str|
|000038c0| 63 70 79 28 73 79 6d 73 | 5b 69 5d 2c 73 74 72 29 |cpy(syms|[i],str)|
|000038d0| 3b 0a 09 6e 73 79 6d 73 | 2b 2b 3b 0a 7d 0a 0a 69 |;..nsyms|++;.}..i|
|000038e0| 6e 69 74 5f 62 69 6e 64 | 69 6e 67 73 28 29 0a 7b |nit_bind|ings().{|
|000038f0| 0a 09 62 69 6e 64 69 6e | 67 5b 27 20 27 5d 5b 30 |..bindin|g[' '][0|
|00003900| 5d 20 3d 20 73 79 6d 5f | 72 65 66 28 22 64 6f 2d |] = sym_|ref("do-|
|00003910| 73 6f 6d 65 74 68 69 6e | 67 22 29 3b 0a 09 62 69 |somethin|g");..bi|
|00003920| 6e 64 69 6e 67 5b 27 64 | 27 5d 5b 30 5d 20 3d 20 |nding['d|'][0] = |
|00003930| 73 79 6d 5f 72 65 66 28 | 22 64 6f 2d 73 6f 6d 65 |sym_ref(|"do-some|
|00003940| 74 68 69 6e 67 22 29 3b | 0a 09 62 69 6e 64 69 6e |thing");|..bindin|
|00003950| 67 5b 27 6e 27 5d 5b 30 | 5d 20 3d 20 73 79 6d 5f |g['n'][0|] = sym_|
|00003960| 72 65 66 28 22 64 6f 2d | 6e 6f 74 68 69 6e 67 22 |ref("do-|nothing"|
|00003970| 29 3b 0a 09 62 69 6e 64 | 69 6e 67 5b 27 71 27 5d |);..bind|ing['q']|
|00003980| 5b 30 5d 20 3d 20 73 79 | 6d 5f 72 65 66 28 22 71 |[0] = sy|m_ref("q|
|00003990| 75 69 74 22 29 3b 0a 09 | 62 69 6e 64 69 6e 67 5b |uit");..|binding[|
|000039a0| 27 78 27 5d 5b 30 5d 20 | 3d 20 73 79 6d 5f 72 65 |'x'][0] |= sym_re|
|000039b0| 66 28 22 65 78 74 65 6e | 64 65 64 2d 63 6f 6d 6d |f("exten|ded-comm|
|000039c0| 61 6e 64 22 29 3b 0a 09 | 62 69 6e 64 69 6e 67 5b |and");..|binding[|
|000039d0| 27 78 27 5d 5b 31 5d 20 | 3d 20 73 79 6d 5f 72 65 |'x'][1] |= sym_re|
|000039e0| 66 28 22 65 78 74 65 6e | 64 65 64 2d 63 6f 6d 6d |f("exten|ded-comm|
|000039f0| 61 6e 64 22 29 3b 0a 09 | 62 69 6e 64 69 6e 67 5b |and");..|binding[|
|00003a00| 32 34 5d 20 5b 30 5d 20 | 3d 20 73 79 6d 5f 72 65 |24] [0] |= sym_re|
|00003a10| 66 28 22 43 54 4c 2d 58 | 2d 70 72 65 66 69 78 22 |f("CTL-X|-prefix"|
|00003a20| 29 3b 0a 09 62 69 6e 64 | 69 6e 67 5b 32 35 5d 20 |);..bind|ing[25] |
|00003a30| 5b 30 5d 20 3d 20 73 79 | 6d 5f 72 65 66 28 22 43 |[0] = sy|m_ref("C|
|00003a40| 54 4c 2d 59 2d 70 72 65 | 66 69 78 22 29 3b 0a 09 |TL-Y-pre|fix");..|
|00003a50| 62 69 6e 64 69 6e 67 5b | 32 37 5d 20 5b 30 5d 20 |binding[|27] [0] |
|00003a60| 3d 20 73 79 6d 5f 72 65 | 66 28 22 45 53 43 2d 70 |= sym_re|f("ESC-p|
|00003a70| 72 65 66 69 78 22 29 3b | 0a 09 62 69 6e 64 69 6e |refix");|..bindin|
|00003a80| 67 5b 32 37 5d 20 5b 31 | 5d 20 3d 20 73 79 6d 5f |g[27] [1|] = sym_|
|00003a90| 72 65 66 28 22 71 75 69 | 74 22 29 3b 0a 7d 0a 53 |ref("qui|t");.}.S|
|00003aa0| 48 41 52 5f 45 4f 46 0a | 66 69 20 23 20 65 6e 64 |HAR_EOF.|fi # end|
|00003ab0| 20 6f 66 20 6f 76 65 72 | 77 72 69 74 69 6e 67 20 | of over|writing |
|00003ac0| 63 68 65 63 6b 0a 69 66 | 20 74 65 73 74 20 2d 66 |check.if| test -f|
|00003ad0| 20 27 69 6f 2e 63 27 0a | 74 68 65 6e 0a 09 65 63 | 'io.c'.|then..ec|
|00003ae0| 68 6f 20 73 68 61 72 3a | 20 77 69 6c 6c 20 6e 6f |ho shar:| will no|
|00003af0| 74 20 6f 76 65 72 2d 77 | 72 69 74 65 20 65 78 69 |t over-w|rite exi|
|00003b00| 73 74 69 6e 67 20 66 69 | 6c 65 20 22 27 69 6f 2e |sting fi|le "'io.|
|00003b10| 63 27 22 0a 65 6c 73 65 | 0a 63 61 74 20 3c 3c 20 |c'".else|.cat << |
|00003b20| 5c 53 48 41 52 5f 45 4f | 46 20 3e 20 27 69 6f 2e |\SHAR_EO|F > 'io.|
|00003b30| 63 27 0a 23 69 6e 63 6c | 75 64 65 20 3c 73 74 64 |c'.#incl|ude <std|
|00003b40| 69 6f 2e 68 3e 0a 0a 67 | 65 74 5f 73 74 72 69 6e |io.h>..g|et_strin|
|00003b50| 67 28 73 74 72 29 0a 63 | 68 61 72 20 2a 73 74 72 |g(str).c|har *str|
|00003b60| 3b 0a 7b 0a 09 63 68 61 | 72 20 63 3b 0a 09 69 6e |;.{..cha|r c;..in|
|00003b70| 74 20 69 3b 0a 0a 09 69 | 20 3d 20 30 3b 0a 09 73 |t i;...i| = 0;..s|
|00003b80| 74 72 5b 69 5d 20 3d 20 | 27 5c 30 27 3b 0a 0a 09 |tr[i] = |'\0';...|
|00003b90| 77 68 69 6c 65 20 28 27 | 5c 6e 27 20 21 3d 20 28 |while ('|\n' != (|
|00003ba0| 63 20 3d 20 67 65 74 63 | 68 61 72 28 29 29 29 20 |c = getc|har())) |
|00003bb0| 7b 0a 09 09 73 77 69 74 | 63 68 20 28 63 29 20 7b |{...swit|ch (c) {|
|00003bc0| 0a 09 09 63 61 73 65 20 | 38 3a 20 2f 2a 20 42 41 |...case |8: /* BA|
|00003bd0| 43 4b 53 50 41 43 45 20 | 2a 2f 0a 09 09 09 69 66 |CKSPACE |*/....if|
|00003be0| 20 28 69 20 3e 20 30 29 | 20 7b 0a 09 09 09 09 69 | (i > 0)| {.....i|
|00003bf0| 66 20 28 73 74 72 5b 69 | 2d 31 5d 20 3c 20 33 32 |f (str[i|-1] < 32|
|00003c00| 20 7c 7c 20 73 74 72 5b | 69 2d 31 5d 20 3d 3d 20 | || str[|i-1] == |
|00003c10| 31 32 37 29 20 70 72 69 | 6e 74 66 28 22 5c 62 20 |127) pri|ntf("\b |
|00003c20| 5c 62 22 29 3b 0a 09 09 | 09 09 73 74 72 5b 2d 2d |\b");...|..str[--|
|00003c30| 69 5d 20 3d 20 27 5c 30 | 27 3b 0a 09 09 09 09 70 |i] = '\0|';.....p|
|00003c40| 72 69 6e 74 66 28 22 5c | 62 20 5c 62 22 29 3b 0a |rintf("\|b \b");.|
|00003c50| 09 09 09 09 66 66 6c 75 | 73 68 28 73 74 64 6f 75 |....fflu|sh(stdou|
|00003c60| 74 29 3b 0a 09 09 09 7d | 0a 09 09 09 62 72 65 61 |t);....}|....brea|
|00003c70| 6b 3b 0a 09 09 63 61 73 | 65 20 31 32 37 3a 20 2f |k;...cas|e 127: /|
|00003c80| 2a 20 44 45 4c 20 2a 2f | 0a 09 09 09 66 6f 72 20 |* DEL */|....for |
|00003c90| 28 69 2d 2d 3b 20 69 20 | 3e 20 30 3b 20 69 2d 2d |(i--; i |> 0; i--|
|00003ca0| 29 20 7b 0a 09 09 09 09 | 69 66 20 28 73 74 72 5b |) {.....|if (str[|
|00003cb0| 69 2d 31 5d 20 3c 20 33 | 32 20 7c 7c 20 73 74 72 |i-1] < 3|2 || str|
|00003cc0| 5b 69 2d 31 5d 20 3d 3d | 20 31 32 37 29 20 70 72 |[i-1] ==| 127) pr|
|00003cd0| 69 6e 74 66 28 22 5c 62 | 20 5c 62 22 29 3b 0a 09 |intf("\b| \b");..|
|00003ce0| 09 09 09 70 72 69 6e 74 | 66 28 22 5c 62 20 5c 62 |...print|f("\b \b|
|00003cf0| 22 29 3b 0a 09 09 09 7d | 0a 09 09 09 73 74 72 5b |");....}|....str[|
|00003d00| 30 5d 20 3d 20 27 5c 30 | 27 3b 0a 09 09 09 66 66 |0] = '\0|';....ff|
|00003d10| 6c 75 73 68 28 73 74 64 | 6f 75 74 29 3b 0a 09 09 |lush(std|out);...|
|00003d20| 09 62 72 65 61 6b 3b 0a | 09 09 64 65 66 61 75 6c |.break;.|..defaul|
|00003d30| 74 3a 0a 09 09 09 70 75 | 74 5f 63 68 61 72 28 63 |t:....pu|t_char(c|
|00003d40| 29 3b 0a 09 09 09 73 74 | 72 5b 69 2b 2b 5d 20 3d |);....st|r[i++] =|
|00003d50| 20 63 3b 0a 09 09 09 62 | 72 65 61 6b 3b 0a 09 09 | c;....b|reak;...|
|00003d60| 7d 0a 09 7d 0a 09 73 74 | 72 5b 69 5d 20 3d 20 27 |}..}..st|r[i] = '|
|00003d70| 5c 30 27 3b 0a 7d 0a 0a | 70 75 74 5f 63 68 61 72 |\0';.}..|put_char|
|00003d80| 28 63 29 0a 63 68 61 72 | 20 63 3b 0a 7b 0a 09 69 |(c).char| c;.{..i|
|00003d90| 66 20 28 63 20 3e 20 33 | 31 29 20 7b 0a 09 09 69 |f (c > 3|1) {...i|
|00003da0| 66 20 28 63 20 3d 3d 20 | 31 32 37 29 20 70 72 69 |f (c == |127) pri|
|00003db0| 6e 74 66 28 22 5e 3f 22 | 29 3b 0a 09 09 65 6c 73 |ntf("^?"|);...els|
|00003dc0| 65 20 70 72 69 6e 74 66 | 28 22 25 63 22 2c 63 29 |e printf|("%c",c)|
|00003dd0| 3b 0a 09 7d 0a 09 65 6c | 73 65 20 70 72 69 6e 74 |;..}..el|se print|
|00003de0| 66 28 22 5e 25 63 22 2c | 63 2b 36 34 29 3b 0a 7d |f("^%c",|c+64);.}|
|00003df0| 0a 53 48 41 52 5f 45 4f | 46 0a 66 69 20 23 20 65 |.SHAR_EO|F.fi # e|
|00003e00| 6e 64 20 6f 66 20 6f 76 | 65 72 77 72 69 74 69 6e |nd of ov|erwritin|
|00003e10| 67 20 63 68 65 63 6b 0a | 69 66 20 74 65 73 74 20 |g check.|if test |
|00003e20| 2d 66 20 27 69 66 61 63 | 65 2e 63 27 0a 74 68 65 |-f 'ifac|e.c'.the|
|00003e30| 6e 0a 09 65 63 68 6f 20 | 73 68 61 72 3a 20 77 69 |n..echo |shar: wi|
|00003e40| 6c 6c 20 6e 6f 74 20 6f | 76 65 72 2d 77 72 69 74 |ll not o|ver-writ|
|00003e50| 65 20 65 78 69 73 74 69 | 6e 67 20 66 69 6c 65 20 |e existi|ng file |
|00003e60| 22 27 69 66 61 63 65 2e | 63 27 22 0a 65 6c 73 65 |"'iface.|c'".else|
|00003e70| 0a 63 61 74 20 3c 3c 20 | 5c 53 48 41 52 5f 45 4f |.cat << |\SHAR_EO|
|00003e80| 46 20 3e 20 27 69 66 61 | 63 65 2e 63 27 0a 23 69 |F > 'ifa|ce.c'.#i|
|00003e90| 6e 63 6c 75 64 65 20 3c | 73 65 74 6a 6d 70 2e 68 |nclude <|setjmp.h|
|00003ea0| 3e 0a 23 69 6e 63 6c 75 | 64 65 20 3c 73 67 74 74 |>.#inclu|de <sgtt|
|00003eb0| 79 2e 68 3e 0a 23 69 6e | 63 6c 75 64 65 20 3c 73 |y.h>.#in|clude <s|
|00003ec0| 69 67 6e 61 6c 2e 68 3e | 0a 23 69 6e 63 6c 75 64 |ignal.h>|.#includ|
|00003ed0| 65 20 3c 73 74 64 69 6f | 2e 68 3e 0a 0a 23 64 65 |e <stdio|.h>..#de|
|00003ee0| 66 69 6e 65 20 4e 53 59 | 4d 20 32 35 36 0a 23 64 |fine NSY|M 256.#d|
|00003ef0| 65 66 69 6e 65 20 66 6f | 72 65 76 65 72 20 66 6f |efine fo|rever fo|
|00003f00| 72 28 3b 3b 29 0a 0a 63 | 68 61 72 20 2a 63 6d 64 |r(;;)..c|har *cmd|
|00003f10| 73 5b 32 35 36 5d 2c 20 | 2a 73 79 6d 73 5b 4e 53 |s[256], |*syms[NS|
|00003f20| 59 4d 5d 2c 20 6c 61 73 | 74 6b 65 79 3b 0a 69 6e |YM], las|tkey;.in|
|00003f30| 74 20 28 2a 63 70 74 72 | 5b 32 35 36 5d 29 28 29 |t (*cptr|[256])()|
|00003f40| 2c 20 62 69 6e 64 69 6e | 67 5b 31 32 38 5d 5b 34 |, bindin|g[128][4|
|00003f50| 5d 3b 0a 69 6e 74 20 6f | 6c 64 66 6c 61 67 73 2c |];.int o|ldflags,|
|00003f60| 20 6e 63 6d 64 73 2c 20 | 6e 73 79 6d 73 3b 0a 0a | ncmds, |nsyms;..|
|00003f70| 73 74 72 75 63 74 20 6c | 74 63 68 61 72 73 20 74 |struct l|tchars t|
|00003f80| 65 72 6d 63 3b 0a 73 74 | 72 75 63 74 20 73 67 74 |ermc;.st|ruct sgt|
|00003f90| 74 79 62 20 69 6f 62 61 | 73 69 63 3b 0a 6a 6d 70 |tyb ioba|sic;.jmp|
|00003fa0| 5f 62 75 66 20 74 6f 70 | 65 6e 76 3b 0a 76 6f 69 |_buf top|env;.voi|
|00003fb0| 64 20 73 69 67 74 72 61 | 70 28 29 3b 0a 0a 73 74 |d sigtra|p();..st|
|00003fc0| 72 75 63 74 20 73 79 6d | 5f 73 74 72 75 63 74 20 |ruct sym|_struct |
|00003fd0| 7b 0a 09 63 68 61 72 20 | 2a 6e 61 6d 65 2c 2a 73 |{..char |*name,*s|
|00003fe0| 74 72 76 61 6c 3b 0a 09 | 69 6e 74 20 74 79 70 65 |trval;..|int type|
|00003ff0| 2c 76 61 6c 75 65 3b 0a | 7d 3b 0a 73 74 72 75 63 |,value;.|};.struc|
|00004000| 74 20 73 79 6d 5f 73 74 | 72 75 63 74 20 73 79 6d |t sym_st|ruct sym|
|00004010| 62 6f 6c 5b 4e 53 59 4d | 5d 3b 0a 0a 0a 6d 61 69 |bol[NSYM|];...mai|
|00004020| 6e 28 29 0a 7b 0a 09 70 | 72 69 6e 74 66 28 22 57 |n().{..p|rintf("W|
|00004030| 65 6c 63 6f 6d 65 20 74 | 6f 20 69 6e 74 65 72 66 |elcome t|o interf|
|00004040| 61 63 65 5c 6e 22 29 3b | 0a 09 69 6e 69 74 28 29 |ace\n");|..init()|
|00004050| 3b 0a 09 70 72 69 6e 74 | 5f 76 65 72 73 69 6f 6e |;..print|_version|
|00004060| 28 29 3b 0a 09 75 73 65 | 72 5f 6c 65 76 65 6c 28 |();..use|r_level(|
|00004070| 29 3b 0a 09 65 78 69 74 | 28 30 29 3b 0a 7d 0a 0a |);..exit|(0);.}..|
|00004080| 75 73 65 72 5f 6c 65 76 | 65 6c 28 29 0a 7b 0a 09 |user_lev|el().{..|
|00004090| 69 6e 74 20 72 65 66 3b | 0a 0a 09 66 6f 72 65 76 |int ref;|...forev|
|000040a0| 65 72 20 7b 0a 09 09 69 | 66 20 28 73 65 74 6a 6d |er {...i|f (setjm|
|000040b0| 70 28 74 6f 70 65 6e 76 | 29 29 20 70 72 69 6e 74 |p(topenv|)) print|
|000040c0| 66 28 22 74 6f 70 20 6c | 65 76 65 6c 5c 6e 22 29 |f("top l|evel\n")|
|000040d0| 3b 0a 09 09 6c 61 73 74 | 6b 65 79 20 3d 20 67 65 |;...last|key = ge|
|000040e0| 74 63 68 61 72 28 29 3b | 0a 09 09 72 65 66 20 3d |tchar();|...ref =|
|000040f0| 20 62 69 6e 64 69 6e 67 | 5b 6c 61 73 74 6b 65 79 | binding|[lastkey|
|00004100| 5d 5b 30 5d 3b 0a 09 09 | 65 78 65 63 28 72 65 66 |][0];...|exec(ref|
|00004110| 29 3b 0a 09 7d 0a 7d 0a | 0a 76 6f 69 64 20 73 69 |);..}.}.|.void si|
|00004120| 67 74 72 61 70 28 73 69 | 67 29 0a 69 6e 74 20 73 |gtrap(si|g).int s|
|00004130| 69 67 3b 0a 7b 0a 09 73 | 77 69 74 63 68 28 73 69 |ig;.{..s|witch(si|
|00004140| 67 29 20 7b 0a 09 09 63 | 61 73 65 20 53 49 47 49 |g) {...c|ase SIGI|
|00004150| 4e 54 3a 0a 09 09 09 70 | 72 69 6e 74 66 28 22 5c |NT:....p|rintf("\|
|00004160| 6e 49 6e 74 65 72 72 75 | 70 74 5c 6e 22 29 3b 0a |nInterru|pt\n");.|
|00004170| 09 09 09 6c 6f 6e 67 6a | 6d 70 28 74 6f 70 65 6e |...longj|mp(topen|
|00004180| 76 2c 31 29 3b 0a 09 09 | 63 61 73 65 20 53 49 47 |v,1);...|case SIG|
|00004190| 48 55 50 3a 0a 09 09 09 | 71 75 69 74 28 29 3b 0a |HUP:....|quit();.|
|000041a0| 09 7d 0a 7d 0a 53 48 41 | 52 5f 45 4f 46 0a 66 69 |.}.}.SHA|R_EOF.fi|
|000041b0| 20 23 20 65 6e 64 20 6f | 66 20 6f 76 65 72 77 72 | # end o|f overwr|
|000041c0| 69 74 69 6e 67 20 63 68 | 65 63 6b 0a 69 66 20 74 |iting ch|eck.if t|
|000041d0| 65 73 74 20 2d 66 20 27 | 4d 61 6b 65 66 69 6c 65 |est -f '|Makefile|
|000041e0| 27 0a 74 68 65 6e 0a 09 | 65 63 68 6f 20 73 68 61 |'.then..|echo sha|
|000041f0| 72 3a 20 77 69 6c 6c 20 | 6e 6f 74 20 6f 76 65 72 |r: will |not over|
|00004200| 2d 77 72 69 74 65 20 65 | 78 69 73 74 69 6e 67 20 |-write e|xisting |
|00004210| 66 69 6c 65 20 22 27 4d | 61 6b 65 66 69 6c 65 27 |file "'M|akefile'|
|00004220| 22 0a 65 6c 73 65 0a 63 | 61 74 20 3c 3c 20 5c 53 |".else.c|at << \S|
|00004230| 48 41 52 5f 45 4f 46 20 | 3e 20 27 4d 61 6b 65 66 |HAR_EOF |> 'Makef|
|00004240| 69 6c 65 27 0a 43 46 4c | 41 47 53 20 3d 20 2d 4f |ile'.CFL|AGS = -O|
|00004250| 0a 42 49 4e 3d 69 66 61 | 63 65 0a 0a 69 66 61 63 |.BIN=ifa|ce..ifac|
|00004260| 65 3a 20 69 66 61 63 65 | 2e 6f 20 69 6e 69 74 2e |e: iface|.o init.|
|00004270| 6f 20 66 6e 73 2e 6f 20 | 65 78 65 63 2e 6f 20 69 |o fns.o |exec.o i|
|00004280| 66 61 63 65 2e 68 20 63 | 6f 6d 63 2e 6f 20 69 6f |face.h c|omc.o io|
|00004290| 2e 6f 0a 09 63 63 20 2d | 67 20 2d 6f 20 24 7b 42 |.o..cc -|g -o ${B|
|000042a0| 49 4e 7d 20 69 66 61 63 | 65 2e 6f 20 69 6e 69 74 |IN} ifac|e.o init|
|000042b0| 2e 6f 20 66 6e 73 2e 6f | 20 65 78 65 63 2e 6f 20 |.o fns.o| exec.o |
|000042c0| 63 6f 6d 63 2e 6f 20 69 | 6f 2e 6f 0a 0a 6c 69 6e |comc.o i|o.o..lin|
|000042d0| 74 3a 0a 09 6c 69 6e 74 | 20 69 66 61 63 65 2e 63 |t:..lint| iface.c|
|000042e0| 20 69 6e 69 74 2e 63 20 | 66 6e 73 2e 63 20 65 78 | init.c |fns.c ex|
|000042f0| 65 63 2e 63 20 69 66 61 | 63 65 2e 68 20 63 6f 6d |ec.c ifa|ce.h com|
|00004300| 63 2e 63 20 69 6f 2e 63 | 0a 53 48 41 52 5f 45 4f |c.c io.c|.SHAR_EO|
|00004310| 46 0a 66 69 20 23 20 65 | 6e 64 20 6f 66 20 6f 76 |F.fi # e|nd of ov|
|00004320| 65 72 77 72 69 74 69 6e | 67 20 63 68 65 63 6b 0a |erwritin|g check.|
|00004330| 69 66 20 74 65 73 74 20 | 2d 66 20 27 52 45 41 44 |if test |-f 'READ|
|00004340| 4d 45 27 0a 74 68 65 6e | 0a 09 65 63 68 6f 20 73 |ME'.then|..echo s|
|00004350| 68 61 72 3a 20 77 69 6c | 6c 20 6e 6f 74 20 6f 76 |har: wil|l not ov|
|00004360| 65 72 2d 77 72 69 74 65 | 20 65 78 69 73 74 69 6e |er-write| existin|
|00004370| 67 20 66 69 6c 65 20 22 | 27 52 45 41 44 4d 45 27 |g file "|'README'|
|00004380| 22 0a 65 6c 73 65 0a 63 | 61 74 20 3c 3c 20 5c 53 |".else.c|at << \S|
|00004390| 48 41 52 5f 45 4f 46 20 | 3e 20 27 52 45 41 44 4d |HAR_EOF |> 'READM|
|000043a0| 45 27 0a 54 68 69 73 20 | 64 69 72 65 63 74 6f 72 |E'.This |director|
|000043b0| 79 20 63 6f 6e 74 61 69 | 6e 73 20 74 68 65 20 70 |y contai|ns the p|
|000043c0| 72 6f 67 72 61 6d 20 69 | 66 61 63 65 2e 20 20 49 |rogram i|face. I|
|000043d0| 66 61 63 65 20 69 73 20 | 61 20 67 65 6e 65 72 69 |face is |a generi|
|000043e0| 63 20 75 73 65 72 20 69 | 6e 74 65 72 66 61 63 65 |c user i|nterface|
|000043f0| 2c 0a 77 68 69 63 68 20 | 73 75 70 70 6f 72 74 73 |,.which |supports|
|00004400| 3a 0a 0a 2d 20 43 42 52 | 45 41 4b 20 6d 6f 64 65 |:..- CBR|EAK mode|
|00004410| 20 74 65 72 6d 69 6e 61 | 6c 20 49 2f 4f 0a 2d 20 | termina|l I/O.- |
|00004420| 4b 65 79 62 69 6e 64 69 | 6e 67 73 20 66 6f 72 20 |Keybindi|ngs for |
|00004430| 69 6e 76 6f 6b 69 6e 67 | 20 74 6f 70 2d 6c 65 76 |invoking| top-lev|
|00004440| 65 6c 20 66 75 6e 63 74 | 69 6f 6e 73 0a 2d 20 65 |el funct|ions.- e|
|00004450| 78 74 65 6e 64 65 64 2d | 63 6f 6d 6d 61 6e 64 20 |xtended-|command |
|00004460| 66 75 6e 63 74 69 6f 6e | 20 69 6e 76 6f 63 61 74 |function| invocat|
|00004470| 69 6f 6e 0a 2d 20 4e 61 | 6d 65 20 63 6f 6d 70 6c |ion.- Na|me compl|
|00004480| 65 74 69 6f 6e 0a 0a 0a | 49 6e 74 65 72 6e 61 6c |etion...|Internal|
|00004490| 6c 79 2c 20 69 66 61 63 | 65 20 68 61 73 20 74 68 |ly, ifac|e has th|
|000044a0| 65 20 66 6f 6c 6c 6f 77 | 69 6e 67 20 73 74 72 75 |e follow|ing stru|
|000044b0| 63 74 75 72 65 73 3a 0a | 0a 2d 20 34 20 6b 65 79 |ctures:.|.- 4 key|
|000044c0| 62 69 6e 64 69 6e 67 20 | 74 61 62 6c 65 73 20 66 |binding |tables f|
|000044d0| 6f 72 20 72 65 67 75 6c | 61 72 20 6b 65 79 73 20 |or regul|ar keys |
|000044e0| 61 6e 64 20 45 53 43 2c | 20 43 54 4c 2d 58 20 61 |and ESC,| CTL-X a|
|000044f0| 6e 64 20 43 54 4c 2d 59 | 20 70 72 65 66 69 78 20 |nd CTL-Y| prefix |
|00004500| 6b 65 79 73 0a 2d 20 41 | 20 73 79 6d 62 6f 6c 20 |keys.- A| symbol |
|00004510| 74 61 62 6c 65 20 66 6f | 72 20 63 6f 6d 6d 61 6e |table fo|r comman|
|00004520| 64 20 72 65 66 65 72 65 | 6e 63 65 73 0a 0a 0a 54 |d refere|nces...T|
|00004530| 68 65 20 69 6e 74 65 72 | 66 61 63 65 20 63 61 6e |he inter|face can|
|00004540| 20 62 65 20 65 61 73 69 | 6c 79 20 65 78 74 65 6e | be easi|ly exten|
|00004550| 64 65 64 20 74 6f 20 61 | 6e 79 20 61 70 70 6c 69 |ded to a|ny appli|
|00004560| 63 61 74 69 6f 6e 20 62 | 79 20 61 64 64 69 6e 67 |cation b|y adding|
|00004570| 20 6e 65 77 20 66 75 6e | 63 74 69 6f 6e 73 0a 69 | new fun|ctions.i|
|00004580| 6e 20 74 68 65 20 66 69 | 6c 65 20 66 6e 73 2e 63 |n the fi|le fns.c|
|00004590| 2c 20 61 64 64 69 6e 67 | 20 74 68 65 20 6e 61 6d |, adding| the nam|
|000045a0| 65 73 20 74 6f 20 74 68 | 65 20 73 79 6d 62 6f 6c |es to th|e symbol|
|000045b0| 20 74 61 62 6c 65 20 69 | 6e 20 69 6e 69 74 5f 73 | table i|n init_s|
|000045c0| 79 6d 62 6f 6c 73 20 69 | 6e 20 74 68 65 0a 66 69 |ymbols i|n the.fi|
|000045d0| 6c 65 20 69 6e 69 74 2e | 63 2c 20 61 6e 64 20 61 |le init.|c, and a|
|000045e0| 64 64 69 6e 67 20 61 20 | 74 65 73 74 20 74 6f 20 |dding a |test to |
|000045f0| 74 68 65 20 6e 61 6d 65 | 2d 74 6f 2d 66 75 6e 63 |the name|-to-func|
|00004600| 74 69 6f 6e 2d 70 6f 69 | 6e 74 65 72 20 72 6f 75 |tion-poi|nter rou|
|00004610| 74 69 6e 65 20 63 61 6c | 6c 65 64 0a 63 6f 6d 6d |tine cal|led.comm|
|00004620| 61 6e 64 5f 70 74 72 2c | 20 69 6e 20 74 68 65 20 |and_ptr,| in the |
|00004630| 66 69 6c 65 20 69 6e 69 | 74 2e 63 2e 20 20 4b 65 |file ini|t.c. Ke|
|00004640| 79 20 62 69 6e 64 69 6e | 67 73 20 6d 61 79 20 62 |y bindin|gs may b|
|00004650| 65 20 6d 61 64 65 20 69 | 6e 20 69 6e 69 74 5f 62 |e made i|n init_b|
|00004660| 69 6e 64 69 6e 67 73 2e | 0a 0a 0a 53 65 76 65 72 |indings.|...Sever|
|00004670| 61 6c 20 74 6f 70 2d 6c | 65 76 65 6c 20 66 75 6e |al top-l|evel fun|
|00004680| 63 74 69 6f 6e 73 20 65 | 78 69 73 74 2e 20 20 54 |ctions e|xist. T|
|00004690| 68 65 79 20 61 72 65 3a | 0a 0a 42 4f 47 55 53 3a |hey are:|..BOGUS:|
|000046a0| 20 20 70 72 69 6e 74 73 | 20 61 20 42 45 4c 4c 20 | prints| a BELL |
|000046b0| 63 68 61 72 61 63 74 65 | 72 20 28 5e 47 20 6f 72 |characte|r (^G or|
|000046c0| 20 5c 30 37 29 20 63 61 | 75 73 69 6e 67 20 74 68 | \07) ca|using th|
|000046d0| 65 20 74 65 72 6d 69 6e | 61 6c 20 74 6f 20 66 65 |e termin|al to fe|
|000046e0| 65 70 2e 0a 09 67 65 6e | 65 72 61 6c 6c 79 20 75 |ep...gen|erally u|
|000046f0| 73 65 64 20 61 73 20 61 | 20 62 69 6e 64 69 6e 67 |sed as a| binding|
|00004700| 20 66 6f 72 20 6f 74 68 | 65 72 77 69 73 65 20 75 | for oth|erwise u|
|00004710| 6e 62 6f 75 6e 64 20 6b | 65 79 73 2c 20 6f 72 20 |nbound k|eys, or |
|00004720| 61 73 20 61 6e 0a 09 65 | 72 72 6f 72 20 66 75 6e |as an..e|rror fun|
|00004730| 63 74 69 6f 6e 2e 0a 0a | 43 54 4c 2d 58 2d 70 72 |ction...|CTL-X-pr|
|00004740| 65 66 69 78 3a 20 73 77 | 69 74 63 68 65 73 20 74 |efix: sw|itches t|
|00004750| 6f 20 74 68 65 20 43 54 | 4c 2d 58 20 6b 65 79 6d |o the CT|L-X keym|
|00004760| 61 70 20 61 6e 64 20 22 | 65 78 65 63 75 74 65 73 |ap and "|executes|
|00004770| 22 20 74 68 65 20 6e 65 | 78 74 20 63 68 61 72 61 |" the ne|xt chara|
|00004780| 63 74 65 72 2e 0a 0a 43 | 54 4c 2d 59 2d 70 72 65 |cter...C|TL-Y-pre|
|00004790| 66 69 78 3a 20 73 77 69 | 74 63 68 65 73 20 74 6f |fix: swi|tches to|
|000047a0| 20 74 68 65 20 43 54 4c | 2d 59 20 6b 65 79 6d 61 | the CTL|-Y keyma|
|000047b0| 70 20 61 6e 64 20 22 65 | 78 65 63 75 74 65 73 22 |p and "e|xecutes"|
|000047c0| 20 74 68 65 20 6e 65 78 | 74 20 63 68 61 72 61 63 | the nex|t charac|
|000047d0| 74 65 72 2e 0a 0a 45 53 | 43 2d 70 72 65 66 69 78 |ter...ES|C-prefix|
|000047e0| 3a 20 73 77 69 74 63 68 | 65 73 20 74 6f 20 74 68 |: switch|es to th|
|000047f0| 65 20 45 53 43 20 6b 65 | 79 6d 61 70 20 61 6e 64 |e ESC ke|ymap and|
|00004800| 20 22 65 78 65 63 75 74 | 65 73 22 20 74 68 65 20 | "execut|es" the |
|00004810| 6e 65 78 74 20 63 68 61 | 72 61 63 74 65 72 2e 0a |next cha|racter..|
|00004820| 0a 62 69 6e 64 2d 6b 65 | 79 3a 20 63 68 61 6e 67 |.bind-ke|y: chang|
|00004830| 65 73 20 61 6e 20 65 6e | 74 72 79 20 69 6e 20 61 |es an en|try in a|
|00004840| 20 6b 65 79 62 69 6e 64 | 69 6e 67 20 74 61 62 6c | keybind|ing tabl|
|00004850| 65 2e 0a 0a 64 65 73 63 | 72 69 62 65 2d 62 69 6e |e...desc|ribe-bin|
|00004860| 64 69 6e 67 73 3a 20 70 | 72 69 6e 74 73 20 61 20 |dings: p|rints a |
|00004870| 6c 69 73 74 20 6f 66 20 | 63 6f 6d 6d 61 6e 64 20 |list of |command |
|00004880| 6e 61 6d 65 73 20 61 6e | 64 20 61 73 73 6f 63 69 |names an|d associ|
|00004890| 61 6c 65 64 20 6b 65 79 | 62 69 6e 64 69 6e 67 73 |aled key|bindings|
|000048a0| 0a 0a 64 65 73 63 72 69 | 62 65 2d 6b 65 79 3a 20 |..descri|be-key: |
|000048b0| 70 72 69 6e 74 73 20 74 | 68 65 20 63 6f 6d 6d 61 |prints t|he comma|
|000048c0| 6e 64 20 6e 61 6d 65 20 | 61 73 73 6f 63 69 61 74 |nd name |associat|
|000048d0| 65 64 20 77 69 74 68 20 | 61 20 6b 65 79 2e 0a 0a |ed with |a key...|
|000048e0| 65 78 74 65 6e 64 65 64 | 2d 63 6f 6d 6d 61 6e 64 |extended|-command|
|000048f0| 3a 20 61 6c 6c 6f 77 73 | 20 63 6f 6d 6d 61 6e 64 |: allows| command|
|00004900| 20 69 6e 76 6f 63 61 74 | 69 6f 6e 20 62 79 20 6e | invocat|ion by n|
|00004910| 61 6d 65 2e 0a 0a 71 75 | 69 74 3a 20 72 65 73 65 |ame...qu|it: rese|
|00004920| 74 73 20 74 68 65 20 74 | 65 72 6d 69 6e 61 6c 20 |ts the t|erminal |
|00004930| 61 6e 64 20 65 78 69 74 | 73 2e 0a 0a 0a 54 77 6f |and exit|s....Two|
|00004940| 20 63 6f 6d 6d 61 6e 64 | 73 20 63 61 6c 6c 65 64 | command|s called|
|00004950| 20 22 64 6f 2d 73 6f 6d | 65 74 68 69 6e 67 22 20 | "do-som|ething" |
|00004960| 61 6e 64 20 22 64 6f 2d | 6e 6f 74 68 69 6e 67 22 |and "do-|nothing"|
|00004970| 20 68 61 76 65 20 62 65 | 65 6e 20 69 6e 63 6c 75 | have be|en inclu|
|00004980| 64 65 64 20 69 6e 0a 74 | 68 69 73 20 64 69 73 74 |ded in.t|his dist|
|00004990| 72 69 62 75 74 69 6f 6e | 2e 20 20 54 68 65 79 20 |ribution|. They |
|000049a0| 61 72 65 20 6a 75 73 74 | 20 74 68 65 72 65 20 74 |are just| there t|
|000049b0| 6f 20 64 65 6d 6f 6e 73 | 74 72 61 74 65 20 68 6f |o demons|trate ho|
|000049c0| 77 20 6e 65 77 20 63 6f | 6d 6d 61 6e 64 73 20 6d |w new co|mmands m|
|000049d0| 61 79 0a 62 65 20 61 64 | 64 65 64 2e 0a 0a 0a 54 |ay.be ad|ded....T|
|000049e0| 68 69 73 20 69 6e 74 65 | 72 66 61 63 65 20 68 61 |his inte|rface ha|
|000049f0| 73 20 70 72 6f 76 65 6e | 20 75 73 65 66 75 6c 20 |s proven| useful |
|00004a00| 69 6e 20 64 65 76 65 6c | 6f 70 69 6e 67 20 73 65 |in devel|oping se|
|00004a10| 76 65 72 61 6c 20 70 72 | 6f 67 72 61 6d 73 20 61 |veral pr|ograms a|
|00004a20| 74 20 55 42 43 2e 20 20 | 48 61 76 65 0a 66 75 6e |t UBC. |Have.fun|
|00004a30| 20 77 69 74 68 20 69 74 | 20 61 6e 64 20 66 65 65 | with it| and fee|
|00004a40| 6c 20 66 72 65 65 20 74 | 6f 20 61 64 64 20 6f 72 |l free t|o add or|
|00004a50| 20 63 68 61 6e 67 65 20 | 61 6e 79 74 68 69 6e 67 | change |anything|
|00004a60| 2e 20 20 49 74 20 69 73 | 20 61 6c 6c 20 70 75 62 |. It is| all pub|
|00004a70| 6c 69 63 20 64 6f 6d 61 | 69 6e 2e 0a 50 6c 65 61 |lic doma|in..Plea|
|00004a80| 73 65 20 6c 65 61 76 65 | 20 6d 79 20 6e 61 6d 65 |se leave| my name|
|00004a90| 20 61 74 74 61 63 68 65 | 64 2e 20 20 50 6c 65 61 | attache|d. Plea|
|00004aa0| 73 65 20 64 6f 6e 27 74 | 20 73 65 6c 6c 20 69 74 |se don't| sell it|
|00004ab0| 20 66 6f 72 20 70 72 6f | 66 69 74 2e 20 20 43 6f | for pro|fit. Co|
|00004ac0| 6d 6d 65 6e 74 73 20 61 | 6e 64 0a 73 75 67 67 65 |mments a|nd.sugge|
|00004ad0| 73 74 69 6f 6e 73 20 61 | 72 65 20 77 65 6c 63 6f |stions a|re welco|
|00004ae0| 6d 65 2e 0a 0a 2d 2d 2d | 0a 4d 61 72 63 20 4d 61 |me...---|.Marc Ma|
|00004af0| 6a 6b 61 20 20 2d 20 20 | 55 42 43 20 4c 61 62 6f |jka - |UBC Labo|
|00004b00| 72 61 74 6f 72 79 20 66 | 6f 72 20 43 6f 6d 70 75 |ratory f|or Compu|
|00004b10| 74 61 74 69 6f 6e 61 6c | 20 56 69 73 69 6f 6e 0a |tational| Vision.|
|00004b20| 0a 43 44 4e 3a 20 20 6d | 61 6a 6b 61 40 76 69 73 |.CDN: m|ajka@vis|
|00004b30| 69 6f 6e 2e 75 62 63 2e | 63 64 6e 0a 55 55 43 50 |ion.ubc.|cdn.UUCP|
|00004b40| 3a 20 6d 61 6a 6b 61 40 | 75 62 63 2d 76 69 73 69 |: majka@|ubc-visi|
|00004b50| 6f 6e 2e 75 75 63 70 0a | 53 48 41 52 5f 45 4f 46 |on.uucp.|SHAR_EOF|
|00004b60| 0a 66 69 20 23 20 65 6e | 64 20 6f 66 20 6f 76 65 |.fi # en|d of ove|
|00004b70| 72 77 72 69 74 69 6e 67 | 20 63 68 65 63 6b 0a 63 |rwriting| check.c|
|00004b80| 64 20 2e 2e 0a 23 20 45 | 6e 64 20 6f 66 20 73 68 |d ...# E|nd of sh|
|00004b90| 65 6c 6c 20 61 72 63 68 | 69 76 65 0a 65 78 69 74 |ell arch|ive.exit|
|00004ba0| 20 30 0a 0a | | 0.. | |
+--------+-------------------------+-------------------------+--------+--------+