home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume14 / jove4.9 / part10 < prev    next >
SHell self-extracting ARchive  |  1988-04-25  |  41.0 KB

view JSON data     |     view as text     |     open on a Mac     |     open on a PC

This file was processed as: SHell self-extracting ARchive (archive/shar).

You can browse this item here: part10

ConfidenceProgramDetectionMatch TypeSupport
100% dexvert Newsgroup Content (archive/news) magic Supported
100% dexvert SHell self-extracting ARchive (archive/shar) magic Supported
100% dexvert Internet Message Format (text/imf) magic Supported
1% dexvert Text File (text/txt) fallback Supported
100% file news or mail text default
99% 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 34 69 30 36 |Subject:| v14i06|
|00000010| 36 3a 20 20 4a 6f 76 65 | 2c 20 61 6e 20 65 6d 61 |6: Jove|, an ema|
|00000020| 63 73 20 76 61 72 69 61 | 6e 74 2c 20 76 65 72 73 |cs varia|nt, vers|
|00000030| 69 6f 6e 20 34 2e 39 2c | 20 50 61 72 74 31 30 2f |ion 4.9,| Part10/|
|00000040| 32 31 0a 4e 65 77 73 67 | 72 6f 75 70 73 3a 20 63 |21.Newsg|roups: c|
|00000050| 6f 6d 70 2e 73 6f 75 72 | 63 65 73 2e 75 6e 69 78 |omp.sour|ces.unix|
|00000060| 0a 53 65 6e 64 65 72 3a | 20 73 6f 75 72 63 65 73 |.Sender:| sources|
|00000070| 0a 41 70 70 72 6f 76 65 | 64 3a 20 72 73 61 6c 7a |.Approve|d: rsalz|
|00000080| 40 75 75 6e 65 74 2e 55 | 55 2e 4e 45 54 0a 0a 53 |@uunet.U|U.NET..S|
|00000090| 75 62 6d 69 74 74 65 64 | 2d 62 79 3a 20 4a 6f 6e |ubmitted|-by: Jon|
|000000a0| 61 74 68 61 6e 20 50 61 | 79 6e 65 20 3c 6a 70 61 |athan Pa|yne <jpa|
|000000b0| 79 6e 65 40 63 73 2e 72 | 6f 63 68 65 73 74 65 72 |yne@cs.r|ochester|
|000000c0| 2e 65 64 75 3e 0a 50 6f | 73 74 69 6e 67 2d 6e 75 |.edu>.Po|sting-nu|
|000000d0| 6d 62 65 72 3a 20 56 6f | 6c 75 6d 65 20 31 34 2c |mber: Vo|lume 14,|
|000000e0| 20 49 73 73 75 65 20 36 | 36 0a 41 72 63 68 69 76 | Issue 6|6.Archiv|
|000000f0| 65 2d 6e 61 6d 65 3a 20 | 6a 6f 76 65 34 2e 39 2f |e-name: |jove4.9/|
|00000100| 70 61 72 74 31 30 0a 0a | 23 21 20 2f 62 69 6e 2f |part10..|#! /bin/|
|00000110| 73 68 0a 23 20 54 68 69 | 73 20 69 73 20 61 20 73 |sh.# Thi|s is a s|
|00000120| 68 65 6c 6c 20 61 72 63 | 68 69 76 65 2e 20 20 52 |hell arc|hive. R|
|00000130| 65 6d 6f 76 65 20 61 6e | 79 74 68 69 6e 67 20 62 |emove an|ything b|
|00000140| 65 66 6f 72 65 20 74 68 | 69 73 20 6c 69 6e 65 2c |efore th|is line,|
|00000150| 20 74 68 65 6e 20 75 6e | 70 61 63 6b 0a 23 20 69 | then un|pack.# i|
|00000160| 74 20 62 79 20 73 61 76 | 69 6e 67 20 69 74 20 69 |t by sav|ing it i|
|00000170| 6e 74 6f 20 61 20 66 69 | 6c 65 20 61 6e 64 20 74 |nto a fi|le and t|
|00000180| 79 70 69 6e 67 20 22 73 | 68 20 66 69 6c 65 22 2e |yping "s|h file".|
|00000190| 20 20 54 6f 20 6f 76 65 | 72 77 72 69 74 65 20 65 | To ove|rwrite e|
|000001a0| 78 69 73 74 69 6e 67 0a | 23 20 66 69 6c 65 73 2c |xisting.|# files,|
|000001b0| 20 74 79 70 65 20 22 73 | 68 20 66 69 6c 65 20 2d | type "s|h file -|
|000001c0| 63 22 2e 20 20 59 6f 75 | 20 63 61 6e 20 61 6c 73 |c". You| can als|
|000001d0| 6f 20 66 65 65 64 20 74 | 68 69 73 20 61 73 20 73 |o feed t|his as s|
|000001e0| 74 61 6e 64 61 72 64 20 | 69 6e 70 75 74 20 76 69 |tandard |input vi|
|000001f0| 61 0a 23 20 75 6e 73 68 | 61 72 2c 20 6f 72 20 62 |a.# unsh|ar, or b|
|00000200| 79 20 74 79 70 69 6e 67 | 20 22 73 68 20 3c 66 69 |y typing| "sh <fi|
|00000210| 6c 65 22 2c 20 65 2e 67 | 2e 2e 20 20 49 66 20 74 |le", e.g|.. If t|
|00000220| 68 69 73 20 61 72 63 68 | 69 76 65 20 69 73 20 63 |his arch|ive is c|
|00000230| 6f 6d 70 6c 65 74 65 2c | 20 79 6f 75 0a 23 20 77 |omplete,| you.# w|
|00000240| 69 6c 6c 20 73 65 65 20 | 74 68 65 20 66 6f 6c 6c |ill see |the foll|
|00000250| 6f 77 69 6e 67 20 6d 65 | 73 73 61 67 65 20 61 74 |owing me|ssage at|
|00000260| 20 74 68 65 20 65 6e 64 | 3a 0a 23 09 09 22 45 6e | the end|:.#.."En|
|00000270| 64 20 6f 66 20 61 72 63 | 68 69 76 65 20 31 30 20 |d of arc|hive 10 |
|00000280| 28 6f 66 20 32 31 29 2e | 22 0a 50 41 54 48 3d 2f |(of 21).|".PATH=/|
|00000290| 62 69 6e 3a 2f 75 73 72 | 2f 62 69 6e 3a 2f 75 73 |bin:/usr|/bin:/us|
|000002a0| 72 2f 75 63 62 20 3b 20 | 65 78 70 6f 72 74 20 50 |r/ucb ; |export P|
|000002b0| 41 54 48 0a 69 66 20 74 | 65 73 74 20 2d 66 20 27 |ATH.if t|est -f '|
|000002c0| 2e 2f 65 78 74 65 6e 64 | 2e 63 27 20 2d 61 20 22 |./extend|.c' -a "|
|000002d0| 24 7b 31 7d 22 20 21 3d | 20 22 2d 63 22 20 3b 20 |${1}" !=| "-c" ; |
|000002e0| 74 68 65 6e 20 0a 20 20 | 65 63 68 6f 20 73 68 61 |then . |echo sha|
|000002f0| 72 3a 20 57 69 6c 6c 20 | 6e 6f 74 20 63 6c 6f 62 |r: Will |not clob|
|00000300| 62 65 72 20 65 78 69 73 | 74 69 6e 67 20 66 69 6c |ber exis|ting fil|
|00000310| 65 20 5c 22 27 2e 2f 65 | 78 74 65 6e 64 2e 63 27 |e \"'./e|xtend.c'|
|00000320| 5c 22 0a 65 6c 73 65 0a | 65 63 68 6f 20 73 68 61 |\".else.|echo sha|
|00000330| 72 3a 20 45 78 74 72 61 | 63 74 69 6e 67 20 5c 22 |r: Extra|cting \"|
|00000340| 27 2e 2f 65 78 74 65 6e | 64 2e 63 27 5c 22 20 5c |'./exten|d.c'\" \|
|00000350| 28 31 39 39 31 34 20 63 | 68 61 72 61 63 74 65 72 |(19914 c|haracter|
|00000360| 73 5c 29 0a 73 65 64 20 | 22 73 2f 5e 58 2f 2f 22 |s\).sed |"s/^X//"|
|00000370| 20 3e 27 2e 2f 65 78 74 | 65 6e 64 2e 63 27 20 3c | >'./ext|end.c' <|
|00000380| 3c 27 45 4e 44 5f 4f 46 | 5f 46 49 4c 45 27 0a 58 |<'END_OF|_FILE'.X|
|00000390| 2f 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |/*******|********|
|000003a0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000003b0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000003c0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000003d0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 0a 58 20 2a |********|****.X *|
|000003e0| 20 54 68 69 73 20 70 72 | 6f 67 72 61 6d 20 69 73 | This pr|ogram is|
|000003f0| 20 43 6f 70 79 72 69 67 | 68 74 20 28 43 29 20 31 | Copyrig|ht (C) 1|
|00000400| 39 38 36 2c 20 31 39 38 | 37 2c 20 31 39 38 38 20 |986, 198|7, 1988 |
|00000410| 62 79 20 4a 6f 6e 61 74 | 68 61 6e 20 50 61 79 6e |by Jonat|han Payn|
|00000420| 65 2e 20 20 4a 4f 56 45 | 20 2a 0a 58 20 2a 20 69 |e. JOVE| *.X * i|
|00000430| 73 20 70 72 6f 76 69 64 | 65 64 20 74 6f 20 79 6f |s provid|ed to yo|
|00000440| 75 20 77 69 74 68 6f 75 | 74 20 63 68 61 72 67 65 |u withou|t charge|
|00000450| 2c 20 61 6e 64 20 77 69 | 74 68 20 6e 6f 20 77 61 |, and wi|th no wa|
|00000460| 72 72 61 6e 74 79 2e 20 | 20 59 6f 75 20 6d 61 79 |rranty. | You may|
|00000470| 20 67 69 76 65 20 20 2a | 0a 58 20 2a 20 61 77 61 | give *|.X * awa|
|00000480| 79 20 63 6f 70 69 65 73 | 20 6f 66 20 4a 4f 56 45 |y copies| of JOVE|
|00000490| 2c 20 69 6e 63 6c 75 64 | 69 6e 67 20 73 6f 75 72 |, includ|ing sour|
|000004a0| 63 65 73 2c 20 70 72 6f | 76 69 64 65 64 20 74 68 |ces, pro|vided th|
|000004b0| 61 74 20 74 68 69 73 20 | 6e 6f 74 69 63 65 20 69 |at this |notice i|
|000004c0| 73 20 20 20 20 2a 0a 58 | 20 2a 20 69 6e 63 6c 75 |s *.X| * inclu|
|000004d0| 64 65 64 20 69 6e 20 61 | 6c 6c 20 74 68 65 20 66 |ded in a|ll the f|
|000004e0| 69 6c 65 73 2e 20 20 20 | 20 20 20 20 20 20 20 20 |iles. | |
|000004f0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000500| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000510| 20 20 20 2a 0a 58 20 2a | 2a 2a 2a 2a 2a 2a 2a 2a | *.X *|********|
|00000520| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000530| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000540| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000550| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000560| 2a 2a 2f 0a 58 0a 58 23 | 69 6e 63 6c 75 64 65 20 |**/.X.X#|include |
|00000570| 22 6a 6f 76 65 2e 68 22 | 0a 58 23 69 6e 63 6c 75 |"jove.h"|.X#inclu|
|00000580| 64 65 20 22 69 6f 2e 68 | 22 0a 58 23 69 6e 63 6c |de "io.h|".X#incl|
|00000590| 75 64 65 20 22 74 65 72 | 6d 63 61 70 2e 68 22 0a |ude "ter|mcap.h".|
|000005a0| 58 23 69 6e 63 6c 75 64 | 65 20 22 63 74 79 70 65 |X#includ|e "ctype|
|000005b0| 2e 68 22 0a 58 23 69 66 | 64 65 66 20 4a 4f 42 5f |.h".X#if|def JOB_|
|000005c0| 43 4f 4e 54 52 4f 4c 0a | 58 23 09 69 6e 63 6c 75 |CONTROL.|X#.inclu|
|000005d0| 64 65 20 3c 73 69 67 6e | 61 6c 2e 68 3e 0a 58 23 |de <sign|al.h>.X#|
|000005e0| 65 6e 64 69 66 0a 58 0a | 58 23 69 66 64 65 66 20 |endif.X.|X#ifdef |
|000005f0| 4d 41 43 0a 58 23 09 69 | 6e 63 6c 75 64 65 20 22 |MAC.X#.i|nclude "|
|00000600| 6d 61 63 2e 68 22 0a 58 | 23 65 6c 73 65 0a 58 23 |mac.h".X|#else.X#|
|00000610| 09 69 6e 63 6c 75 64 65 | 20 3c 76 61 72 61 72 67 |.include| <vararg|
|00000620| 73 2e 68 3e 0a 58 23 65 | 6e 64 69 66 0a 58 0a 58 |s.h>.X#e|ndif.X.X|
|00000630| 23 69 66 64 65 66 20 4d | 53 44 4f 53 0a 58 23 69 |#ifdef M|SDOS.X#i|
|00000640| 6e 63 6c 75 64 65 20 3c | 70 72 6f 63 65 73 73 2e |nclude <|process.|
|00000650| 68 3e 0a 58 23 65 6e 64 | 69 66 0a 58 0a 58 23 69 |h>.X#end|if.X.X#i|
|00000660| 66 64 65 66 20 4d 41 43 | 0a 58 23 09 75 6e 64 65 |fdef MAC|.X#.unde|
|00000670| 66 20 70 72 69 76 61 74 | 65 0a 58 23 09 64 65 66 |f privat|e.X#.def|
|00000680| 69 6e 65 20 70 72 69 76 | 61 74 65 0a 58 23 65 6e |ine priv|ate.X#en|
|00000690| 64 69 66 0a 58 0a 58 23 | 69 66 64 65 66 09 4c 49 |dif.X.X#|ifdef.LI|
|000006a0| 4e 54 5f 41 52 47 53 0a | 70 72 69 76 61 74 65 09 |NT_ARGS.|private.|
|000006b0| 76 6f 69 64 0a 58 09 66 | 62 5f 61 75 78 28 64 61 |void.X.f|b_aux(da|
|000006c0| 74 61 5f 6f 62 6a 20 2a | 2c 20 64 61 74 61 5f 6f |ta_obj *|, data_o|
|000006d0| 62 6a 20 2a 2a 2c 20 63 | 68 61 72 20 2a 2c 20 63 |bj **, c|har *, c|
|000006e0| 68 61 72 20 2a 29 2c 0a | 58 09 66 69 6e 64 5f 62 |har *),.|X.find_b|
|000006f0| 69 6e 64 73 28 64 61 74 | 61 5f 6f 62 6a 20 2a 2c |inds(dat|a_obj *,|
|00000700| 20 63 68 61 72 20 2a 29 | 2c 0a 58 09 76 70 72 5f | char *)|,.X.vpr_|
|00000710| 61 75 78 28 73 74 72 75 | 63 74 20 76 61 72 69 61 |aux(stru|ct varia|
|00000720| 62 6c 65 20 2a 2c 20 63 | 68 61 72 20 2a 29 3b 0a |ble *, c|har *);.|
|00000730| 58 23 65 6c 73 65 0a 70 | 72 69 76 61 74 65 09 76 |X#else.p|rivate.v|
|00000740| 6f 69 64 0a 58 09 66 62 | 5f 61 75 78 28 29 2c 0a |oid.X.fb|_aux(),.|
|00000750| 58 09 66 69 6e 64 5f 62 | 69 6e 64 73 28 29 2c 0a |X.find_b|inds(),.|
|00000760| 58 09 76 70 72 5f 61 75 | 78 28 29 3b 0a 58 23 65 |X.vpr_au|x();.X#e|
|00000770| 6e 64 69 66 09 2f 2a 20 | 4c 49 4e 54 5f 41 52 47 |ndif./* |LINT_ARG|
|00000780| 53 20 2a 2f 0a 58 0a 58 | 23 69 66 64 65 66 20 4d |S */.X.X|#ifdef M|
|00000790| 41 43 0a 58 23 09 75 6e | 64 65 66 20 70 72 69 76 |AC.X#.un|def priv|
|000007a0| 61 74 65 0a 58 23 09 64 | 65 66 69 6e 65 20 70 72 |ate.X#.d|efine pr|
|000007b0| 69 76 61 74 65 20 73 74 | 61 74 69 63 0a 58 23 65 |ivate st|atic.X#e|
|000007c0| 6e 64 69 66 0a 58 0a 58 | 0a 69 6e 74 09 49 6e 4a |ndif.X.X|.int.InJ|
|000007d0| 6f 76 65 72 63 20 3d 20 | 30 3b 0a 58 0a 65 78 74 |overc = |0;.X.ext|
|000007e0| 65 72 6e 20 69 6e 74 09 | 67 65 74 63 68 28 29 2c |ern int.|getch(),|
|000007f0| 0a 58 09 09 67 65 74 63 | 68 61 72 28 29 3b 0a 58 |.X..getc|har();.X|
|00000800| 0a 58 2f 2a 20 41 75 74 | 6f 20 65 78 65 63 75 74 |.X/* Aut|o execut|
|00000810| 65 20 63 6f 64 65 20 2a | 2f 0a 58 0a 58 23 64 65 |e code *|/.X.X#de|
|00000820| 66 69 6e 65 20 4e 45 58 | 45 43 53 09 32 30 0a 58 |fine NEX|ECS.20.X|
|00000830| 0a 70 72 69 76 61 74 65 | 20 73 74 72 75 63 74 20 |.private| struct |
|00000840| 7b 0a 58 09 63 68 61 72 | 09 2a 61 5f 70 61 74 74 |{.X.char|.*a_patt|
|00000850| 65 72 6e 3b 0a 58 09 64 | 61 74 61 5f 6f 62 6a 09 |ern;.X.d|ata_obj.|
|00000860| 2a 61 5f 63 6d 64 3b 0a | 58 7d 20 41 75 74 6f 45 |*a_cmd;.|X} AutoE|
|00000870| 78 65 63 73 5b 4e 45 58 | 45 43 53 5d 20 3d 20 7b |xecs[NEX|ECS] = {|
|00000880| 30 7d 3b 0a 58 0a 70 72 | 69 76 61 74 65 20 69 6e |0};.X.pr|ivate in|
|00000890| 74 09 45 78 65 63 49 6e | 64 65 78 20 3d 20 30 3b |t.ExecIn|dex = 0;|
|000008a0| 0a 58 0a 58 2f 2a 20 43 | 6f 6d 6d 61 6e 64 20 61 |.X.X/* C|ommand a|
|000008b0| 75 74 6f 2d 65 78 65 63 | 75 74 65 2e 20 2a 2f 0a |uto-exec|ute. */.|
|000008c0| 58 0a 76 6f 69 64 0a 43 | 41 75 74 6f 45 78 65 63 |X.void.C|AutoExec|
|000008d0| 28 29 0a 58 7b 0a 58 09 | 44 65 66 41 75 74 6f 45 |().X{.X.|DefAutoE|
|000008e0| 78 65 63 28 66 69 6e 64 | 63 6f 6d 29 3b 0a 58 7d |xec(find|com);.X}|
|000008f0| 0a 58 0a 58 2f 2a 20 4d | 61 63 72 6f 20 61 75 74 |.X.X/* M|acro aut|
|00000900| 6f 2d 65 78 65 63 75 74 | 65 2e 20 2a 2f 0a 58 0a |o-execut|e. */.X.|
|00000910| 76 6f 69 64 0a 4d 41 75 | 74 6f 45 78 65 63 28 29 |void.MAu|toExec()|
|00000920| 0a 58 7b 0a 58 09 44 65 | 66 41 75 74 6f 45 78 65 |.X{.X.De|fAutoExe|
|00000930| 63 28 66 69 6e 64 6d 61 | 63 29 3b 0a 58 7d 0a 58 |c(findma|c);.X}.X|
|00000940| 0a 58 2f 2a 20 56 41 52 | 41 52 47 53 30 20 2a 2f |.X/* VAR|ARGS0 */|
|00000950| 0a 58 0a 76 6f 69 64 0a | 44 65 66 41 75 74 6f 45 |.X.void.|DefAutoE|
|00000960| 78 65 63 28 70 72 6f 63 | 29 0a 58 23 69 66 64 65 |xec(proc|).X#ifde|
|00000970| 66 20 4c 49 4e 54 5f 41 | 52 47 53 0a 64 61 74 61 |f LINT_A|RGS.data|
|00000980| 5f 6f 62 6a 09 2a 28 2a | 70 72 6f 63 29 28 29 3b |_obj.*(*|proc)();|
|00000990| 0a 58 23 65 6c 73 65 0a | 64 61 74 61 5f 6f 62 6a |.X#else.|data_obj|
|000009a0| 09 2a 28 2a 70 72 6f 63 | 29 28 29 3b 0a 58 23 65 |.*(*proc|)();.X#e|
|000009b0| 6e 64 69 66 0a 58 7b 0a | 58 09 64 61 74 61 5f 6f |ndif.X{.|X.data_o|
|000009c0| 62 6a 09 2a 64 3b 0a 58 | 09 63 68 61 72 09 2a 70 |bj.*d;.X|.char.*p|
|000009d0| 61 74 74 65 72 6e 3b 0a | 58 09 69 6e 74 09 69 3b |attern;.|X.int.i;|
|000009e0| 0a 58 0a 58 09 69 66 20 | 28 45 78 65 63 49 6e 64 |.X.X.if |(ExecInd|
|000009f0| 65 78 20 3e 3d 20 4e 45 | 58 45 43 53 29 0a 58 09 |ex >= NE|XECS).X.|
|00000a00| 09 63 6f 6d 70 6c 61 69 | 6e 28 22 54 6f 6f 20 6d |.complai|n("Too m|
|00000a10| 61 6e 79 20 61 75 74 6f | 2d 65 78 65 63 75 74 65 |any auto|-execute|
|00000a20| 73 2c 20 6d 61 78 20 25 | 64 2e 22 2c 20 4e 45 58 |s, max %|d.", NEX|
|00000a30| 45 43 53 29 3b 0a 58 09 | 69 66 20 28 28 64 20 3d |ECS);.X.|if ((d =|
|00000a40| 20 28 2a 70 72 6f 63 29 | 28 50 72 6f 63 46 6d 74 | (*proc)|(ProcFmt|
|00000a50| 29 29 20 3d 3d 20 30 29 | 0a 58 09 09 72 65 74 75 |)) == 0)|.X..retu|
|00000a60| 72 6e 3b 0a 58 09 70 61 | 74 74 65 72 6e 20 3d 20 |rn;.X.pa|ttern = |
|00000a70| 64 6f 5f 61 73 6b 28 22 | 5c 72 5c 6e 22 2c 20 28 |do_ask("|\r\n", (|
|00000a80| 69 6e 74 20 28 2a 29 28 | 29 29 20 30 2c 20 28 63 |int (*)(|)) 0, (c|
|00000a90| 68 61 72 20 2a 29 20 30 | 2c 20 22 3a 20 25 66 20 |har *) 0|, ": %f |
|00000aa0| 25 73 20 22 2c 20 64 2d | 3e 4e 61 6d 65 29 3b 0a |%s ", d-|>Name);.|
|00000ab0| 58 09 69 66 20 28 70 61 | 74 74 65 72 6e 20 21 3d |X.if (pa|ttern !=|
|00000ac0| 20 30 29 0a 58 09 20 20 | 20 20 66 6f 72 20 28 69 | 0).X. | for (i|
|00000ad0| 20 3d 20 30 3b 20 69 20 | 3c 20 45 78 65 63 49 6e | = 0; i |< ExecIn|
|00000ae0| 64 65 78 3b 20 69 2b 2b | 29 0a 58 09 09 69 66 20 |dex; i++|).X..if |
|00000af0| 28 28 41 75 74 6f 45 78 | 65 63 73 5b 69 5d 2e 61 |((AutoEx|ecs[i].a|
|00000b00| 5f 63 6d 64 20 3d 3d 20 | 64 29 20 26 26 0a 58 09 |_cmd == |d) &&.X.|
|00000b10| 09 20 20 20 20 28 73 74 | 72 63 6d 70 28 70 61 74 |. (st|rcmp(pat|
|00000b20| 74 65 72 6e 2c 20 41 75 | 74 6f 45 78 65 63 73 5b |tern, Au|toExecs[|
|00000b30| 69 5d 2e 61 5f 70 61 74 | 74 65 72 6e 29 20 3d 3d |i].a_pat|tern) ==|
|00000b40| 20 30 29 29 0a 58 09 09 | 20 20 20 20 09 72 65 74 | 0)).X..| .ret|
|00000b50| 75 72 6e 3b 09 09 2f 2a | 20 65 6c 69 6d 69 6e 61 |urn;../*| elimina|
|00000b60| 74 65 20 64 75 70 6c 69 | 63 61 74 65 73 20 2a 2f |te dupli|cates */|
|00000b70| 0a 58 09 41 75 74 6f 45 | 78 65 63 73 5b 45 78 65 |.X.AutoE|xecs[Exe|
|00000b80| 63 49 6e 64 65 78 5d 2e | 61 5f 70 61 74 74 65 72 |cIndex].|a_patter|
|00000b90| 6e 20 3d 20 63 6f 70 79 | 73 74 72 28 70 61 74 74 |n = copy|str(patt|
|00000ba0| 65 72 6e 29 3b 0a 58 09 | 41 75 74 6f 45 78 65 63 |ern);.X.|AutoExec|
|00000bb0| 73 5b 45 78 65 63 49 6e | 64 65 78 5d 2e 61 5f 63 |s[ExecIn|dex].a_c|
|00000bc0| 6d 64 20 3d 20 64 3b 0a | 58 09 45 78 65 63 49 6e |md = d;.|X.ExecIn|
|00000bd0| 64 65 78 20 2b 3d 20 31 | 3b 0a 58 7d 0a 58 0a 58 |dex += 1|;.X}.X.X|
|00000be0| 2f 2a 20 44 6f 41 75 74 | 6f 45 78 65 63 3a 20 4e |/* DoAut|oExec: N|
|00000bf0| 45 57 20 61 6e 64 20 4f | 4c 44 20 61 72 65 20 66 |EW and O|LD are f|
|00000c00| 69 6c 65 20 6e 61 6d 65 | 73 2c 20 61 6e 64 20 69 |ile name|s, and i|
|00000c10| 66 20 4e 45 57 20 61 6e | 64 20 4f 4c 44 20 61 72 |f NEW an|d OLD ar|
|00000c20| 65 6e 27 74 20 74 68 65 | 0a 58 20 20 20 73 61 6d |en't the|.X sam|
|00000c30| 65 20 6b 69 6e 64 20 6f | 66 20 66 69 6c 65 20 28 |e kind o|f file (|
|00000c40| 69 2e 65 2e 2c 20 6d 61 | 74 63 68 20 74 68 65 20 |i.e., ma|tch the |
|00000c50| 73 61 6d 65 20 70 61 74 | 74 65 72 6e 29 20 6f 72 |same pat|tern) or|
|00000c60| 20 4f 4c 44 20 69 73 20 | 30 20 61 6e 64 20 69 74 | OLD is |0 and it|
|00000c70| 0a 58 20 20 20 6d 61 74 | 63 68 65 73 2c 20 4f 52 |.X mat|ches, OR|
|00000c80| 20 69 66 20 74 68 65 20 | 70 61 74 74 65 72 6e 20 | if the |pattern |
|00000c90| 69 73 20 30 20 28 6e 6f | 6e 65 20 77 61 73 20 73 |is 0 (no|ne was s|
|00000ca0| 70 65 63 69 66 69 65 64 | 29 20 74 68 65 6e 2c 20 |pecified|) then, |
|00000cb0| 77 65 20 65 78 65 63 75 | 74 65 0a 58 20 20 20 74 |we execu|te.X t|
|00000cc0| 68 65 20 63 6f 6d 6d 61 | 6e 64 20 61 73 73 6f 63 |he comma|nd assoc|
|00000cd0| 69 61 74 65 64 20 77 69 | 74 68 20 74 68 61 74 20 |iated wi|th that |
|00000ce0| 6b 69 6e 64 20 6f 66 20 | 66 69 6c 65 2e 20 2a 2f |kind of |file. */|
|00000cf0| 0a 58 0a 76 6f 69 64 0a | 44 6f 41 75 74 6f 45 78 |.X.void.|DoAutoEx|
|00000d00| 65 63 28 6e 65 77 2c 20 | 6f 6c 64 29 0a 72 65 67 |ec(new, |old).reg|
|00000d10| 69 73 74 65 72 20 63 68 | 61 72 09 2a 6e 65 77 2c |ister ch|ar.*new,|
|00000d20| 0a 58 09 09 2a 6f 6c 64 | 3b 0a 58 7b 0a 58 09 72 |.X..*old|;.X{.X.r|
|00000d30| 65 67 69 73 74 65 72 20 | 69 6e 74 09 69 3b 0a 58 |egister |int.i;.X|
|00000d40| 0a 58 09 73 65 74 5f 61 | 72 67 5f 76 61 6c 75 65 |.X.set_a|rg_value|
|00000d50| 28 31 29 3b 0a 58 09 66 | 6f 72 20 28 69 20 3d 20 |(1);.X.f|or (i = |
|00000d60| 30 3b 20 69 20 3c 20 45 | 78 65 63 49 6e 64 65 78 |0; i < E|xecIndex|
|00000d70| 3b 20 69 2b 2b 29 0a 58 | 09 09 69 66 20 28 28 41 |; i++).X|..if ((A|
|00000d80| 75 74 6f 45 78 65 63 73 | 5b 69 5d 2e 61 5f 70 61 |utoExecs|[i].a_pa|
|00000d90| 74 74 65 72 6e 20 3d 3d | 20 30 29 20 7c 7c 0a 58 |ttern ==| 0) ||.X|
|00000da0| 09 09 20 20 20 20 28 28 | 6e 65 77 20 21 3d 20 30 |.. ((|new != 0|
|00000db0| 20 26 26 20 4c 6f 6f 6b | 69 6e 67 41 74 28 41 75 | && Look|ingAt(Au|
|00000dc0| 74 6f 45 78 65 63 73 5b | 69 5d 2e 61 5f 70 61 74 |toExecs[|i].a_pat|
|00000dd0| 74 65 72 6e 2c 20 6e 65 | 77 2c 20 30 29 29 20 26 |tern, ne|w, 0)) &|
|00000de0| 26 0a 58 09 09 20 20 20 | 20 20 28 6f 6c 64 20 3d |&.X.. | (old =|
|00000df0| 3d 20 30 20 7c 7c 20 21 | 4c 6f 6f 6b 69 6e 67 41 |= 0 || !|LookingA|
|00000e00| 74 28 41 75 74 6f 45 78 | 65 63 73 5b 69 5d 2e 61 |t(AutoEx|ecs[i].a|
|00000e10| 5f 70 61 74 74 65 72 6e | 2c 20 6f 6c 64 2c 20 30 |_pattern|, old, 0|
|00000e20| 29 29 29 29 0a 58 09 09 | 09 45 78 65 63 43 6d 64 |)))).X..|.ExecCmd|
|00000e30| 28 41 75 74 6f 45 78 65 | 63 73 5b 69 5d 2e 61 5f |(AutoExe|cs[i].a_|
|00000e40| 63 6d 64 29 3b 0a 58 7d | 0a 58 0a 76 6f 69 64 0a |cmd);.X}|.X.void.|
|00000e50| 42 69 6e 64 41 4b 65 79 | 28 29 0a 58 7b 0a 58 09 |BindAKey|().X{.X.|
|00000e60| 42 69 6e 64 53 6f 6d 65 | 74 68 69 6e 67 28 66 69 |BindSome|thing(fi|
|00000e70| 6e 64 63 6f 6d 29 3b 0a | 58 7d 0a 58 0a 76 6f 69 |ndcom);.|X}.X.voi|
|00000e80| 64 0a 42 69 6e 64 4d 61 | 63 28 29 0a 58 7b 0a 58 |d.BindMa|c().X{.X|
|00000e90| 09 42 69 6e 64 53 6f 6d | 65 74 68 69 6e 67 28 66 |.BindSom|ething(f|
|00000ea0| 69 6e 64 6d 61 63 29 3b | 0a 58 7d 0a 58 0a 65 78 |indmac);|.X}.X.ex|
|00000eb0| 74 65 72 6e 20 76 6f 69 | 64 09 45 73 63 50 72 65 |tern voi|d.EscPre|
|00000ec0| 66 69 78 28 29 2c 0a 58 | 09 09 43 74 6c 78 50 72 |fix(),.X|..CtlxPr|
|00000ed0| 65 66 69 78 28 29 2c 0a | 58 09 09 4d 69 73 63 50 |efix(),.|X..MiscP|
|00000ee0| 72 65 66 69 78 28 29 3b | 0a 58 0a 64 61 74 61 5f |refix();|.X.data_|
|00000ef0| 6f 62 6a 20 2a 2a 0a 49 | 73 50 72 65 66 69 78 28 |obj **.I|sPrefix(|
|00000f00| 63 70 29 0a 64 61 74 61 | 5f 6f 62 6a 09 2a 63 70 |cp).data|_obj.*cp|
|00000f10| 3b 0a 58 7b 0a 58 23 69 | 66 64 65 66 20 4d 41 43 |;.X{.X#i|fdef MAC|
|00000f20| 0a 58 09 76 6f 69 64 20 | 28 2a 70 72 6f 63 29 28 |.X.void |(*proc)(|
|00000f30| 29 3b 0a 58 23 65 6c 73 | 65 0a 58 09 69 6e 74 09 |);.X#els|e.X.int.|
|00000f40| 28 2a 70 72 6f 63 29 28 | 29 3b 0a 58 23 65 6e 64 |(*proc)(|);.X#end|
|00000f50| 69 66 0a 58 09 0a 58 09 | 69 66 20 28 63 70 20 3d |if.X..X.|if (cp =|
|00000f60| 3d 20 30 20 7c 7c 20 28 | 63 70 2d 3e 54 79 70 65 |= 0 || (|cp->Type|
|00000f70| 20 26 20 54 59 50 45 4d | 41 53 4b 29 20 21 3d 20 | & TYPEM|ASK) != |
|00000f80| 46 55 4e 43 54 49 4f 4e | 29 0a 58 09 09 72 65 74 |FUNCTION|).X..ret|
|00000f90| 75 72 6e 20 30 3b 0a 58 | 09 70 72 6f 63 20 3d 20 |urn 0;.X|.proc = |
|00000fa0| 28 28 73 74 72 75 63 74 | 20 63 6d 64 20 2a 29 20 |((struct| cmd *) |
|00000fb0| 63 70 29 2d 3e 63 5f 70 | 72 6f 63 3b 0a 58 09 69 |cp)->c_p|roc;.X.i|
|00000fc0| 66 20 28 70 72 6f 63 20 | 3d 3d 20 45 73 63 50 72 |f (proc |== EscPr|
|00000fd0| 65 66 69 78 29 0a 58 09 | 09 72 65 74 75 72 6e 20 |efix).X.|.return |
|00000fe0| 70 72 65 66 31 6d 61 70 | 3b 0a 58 09 69 66 20 28 |pref1map|;.X.if (|
|00000ff0| 70 72 6f 63 20 3d 3d 20 | 43 74 6c 78 50 72 65 66 |proc == |CtlxPref|
|00001000| 69 78 29 0a 58 09 09 72 | 65 74 75 72 6e 20 70 72 |ix).X..r|eturn pr|
|00001010| 65 66 32 6d 61 70 3b 0a | 58 09 69 66 20 28 70 72 |ef2map;.|X.if (pr|
|00001020| 6f 63 20 3d 3d 20 4d 69 | 73 63 50 72 65 66 69 78 |oc == Mi|scPrefix|
|00001030| 29 0a 58 09 09 72 65 74 | 75 72 6e 20 6d 69 73 63 |).X..ret|urn misc|
|00001040| 6d 61 70 3b 0a 58 09 72 | 65 74 75 72 6e 20 30 3b |map;.X.r|eturn 0;|
|00001050| 0a 58 7d 0a 58 0a 76 6f | 69 64 0a 55 6e 62 69 6e |.X}.X.vo|id.Unbin|
|00001060| 64 43 28 29 0a 58 7b 0a | 58 09 63 68 61 72 09 2a |dC().X{.|X.char.*|
|00001070| 6b 65 79 73 3b 0a 58 09 | 64 61 74 61 5f 6f 62 6a |keys;.X.|data_obj|
|00001080| 09 2a 2a 6d 61 70 20 3d | 20 6d 61 69 6e 6d 61 70 |.**map =| mainmap|
|00001090| 3b 0a 58 0a 58 09 6b 65 | 79 73 20 3d 20 61 73 6b |;.X.X.ke|ys = ask|
|000010a0| 28 28 63 68 61 72 20 2a | 29 20 30 2c 20 50 72 6f |((char *|) 0, Pro|
|000010b0| 63 46 6d 74 29 3b 0a 58 | 09 66 6f 72 20 28 3b 3b |cFmt);.X|.for (;;|
|000010c0| 29 20 7b 0a 58 09 09 69 | 66 20 28 6b 65 79 73 5b |) {.X..i|f (keys[|
|000010d0| 31 5d 20 3d 3d 20 27 5c | 30 27 29 0a 58 09 09 09 |1] == '\|0').X...|
|000010e0| 62 72 65 61 6b 3b 0a 58 | 09 09 69 66 20 28 28 6d |break;.X|..if ((m|
|000010f0| 61 70 20 3d 20 49 73 50 | 72 65 66 69 78 28 6d 61 |ap = IsP|refix(ma|
|00001100| 70 5b 2a 6b 65 79 73 5d | 29 29 20 3d 3d 20 30 29 |p[*keys]|)) == 0)|
|00001110| 0a 58 09 09 09 62 72 65 | 61 6b 3b 0a 58 09 09 6b |.X...bre|ak;.X..k|
|00001120| 65 79 73 20 2b 3d 20 31 | 3b 0a 58 09 7d 0a 58 09 |eys += 1|;.X.}.X.|
|00001130| 69 66 20 28 6b 65 79 73 | 5b 31 5d 20 21 3d 20 30 |if (keys|[1] != 0|
|00001140| 29 0a 58 09 09 63 6f 6d | 70 6c 61 69 6e 28 22 54 |).X..com|plain("T|
|00001150| 68 61 74 27 73 20 6e 6f | 74 20 61 20 6c 65 67 69 |hat's no|t a legi|
|00001160| 74 69 6d 61 74 65 20 6b | 65 79 20 73 65 71 75 65 |timate k|ey seque|
|00001170| 6e 63 65 2e 22 29 3b 0a | 58 09 6d 61 70 5b 6b 65 |nce.");.|X.map[ke|
|00001180| 79 73 5b 30 5d 5d 20 3d | 20 30 3b 0a 58 7d 0a 58 |ys[0]] =| 0;.X}.X|
|00001190| 09 09 0a 69 6e 74 0a 61 | 64 64 67 65 74 63 28 29 |...int.a|ddgetc()|
|000011a0| 0a 58 7b 0a 58 09 69 6e | 74 09 63 3b 0a 58 0a 58 |.X{.X.in|t.c;.X.X|
|000011b0| 09 69 66 20 28 21 49 6e | 4a 6f 76 65 72 63 29 20 |.if (!In|Joverc) |
|000011c0| 7b 0a 58 09 09 41 73 6b | 69 6e 67 20 3d 20 73 74 |{.X..Ask|ing = st|
|000011d0| 72 6c 65 6e 28 6d 65 73 | 67 62 75 66 29 3b 0a 58 |rlen(mes|gbuf);.X|
|000011e0| 09 09 63 20 3d 20 67 65 | 74 63 68 28 29 3b 0a 58 |..c = ge|tch();.X|
|000011f0| 09 09 41 73 6b 69 6e 67 | 20 3d 20 30 3b 0a 58 09 |..Asking| = 0;.X.|
|00001200| 09 61 64 64 5f 6d 65 73 | 73 28 22 25 70 20 22 2c |.add_mes|s("%p ",|
|00001210| 20 63 29 3b 0a 58 09 7d | 20 65 6c 73 65 20 7b 0a | c);.X.}| else {.|
|00001220| 58 09 09 63 20 3d 20 67 | 65 74 63 68 28 29 3b 0a |X..c = g|etch();.|
|00001230| 58 09 09 69 66 20 28 63 | 20 3d 3d 20 27 5c 6e 27 |X..if (c| == '\n'|
|00001240| 29 0a 58 09 09 09 72 65 | 74 75 72 6e 20 45 4f 46 |).X...re|turn EOF|
|00001250| 3b 09 2f 2a 20 74 68 69 | 73 20 69 73 6e 27 74 20 |;./* thi|s isn't |
|00001260| 70 61 72 74 20 6f 66 20 | 74 68 65 20 73 65 71 75 |part of |the sequ|
|00001270| 65 6e 63 65 20 2a 2f 0a | 58 09 09 65 6c 73 65 20 |ence */.|X..else |
|00001280| 69 66 20 28 63 20 3d 3d | 20 27 5c 5c 27 29 20 7b |if (c ==| '\\') {|
|00001290| 0a 58 09 09 09 69 66 20 | 28 28 63 20 3d 20 67 65 |.X...if |((c = ge|
|000012a0| 74 63 68 28 29 29 20 3d | 3d 20 4c 46 29 0a 58 09 |tch()) =|= LF).X.|
|000012b0| 09 09 09 63 6f 6d 70 6c | 61 69 6e 28 22 5b 50 72 |...compl|ain("[Pr|
|000012c0| 65 6d 61 74 75 72 65 20 | 65 6e 64 20 6f 66 20 6c |emature |end of l|
|000012d0| 69 6e 65 5d 22 29 3b 0a | 58 09 09 7d 20 65 6c 73 |ine]");.|X..} els|
|000012e0| 65 20 69 66 20 28 63 20 | 3d 3d 20 27 5e 27 29 20 |e if (c |== '^') |
|000012f0| 7b 0a 58 09 09 09 69 66 | 20 28 28 63 20 3d 20 67 |{.X...if| ((c = g|
|00001300| 65 74 63 68 28 29 29 20 | 3d 3d 20 27 3f 27 29 0a |etch()) |== '?').|
|00001310| 58 09 09 09 09 63 20 3d | 20 52 55 42 4f 55 54 3b |X....c =| RUBOUT;|
|00001320| 0a 58 09 09 09 65 6c 73 | 65 20 69 66 20 28 69 73 |.X...els|e if (is|
|00001330| 61 6c 70 68 61 28 63 29 | 20 7c 7c 20 69 6e 64 65 |alpha(c)| || inde|
|00001340| 78 28 22 40 5b 5c 5c 5d | 5e 5f 22 2c 20 63 29 29 |x("@[\\]|^_", c))|
|00001350| 0a 58 09 09 09 09 63 20 | 3d 20 43 54 4c 28 63 29 |.X....c |= CTL(c)|
|00001360| 3b 0a 58 09 09 09 65 6c | 73 65 0a 58 09 09 09 09 |;.X...el|se.X....|
|00001370| 63 6f 6d 70 6c 61 69 6e | 28 22 5b 55 6e 6b 6e 6f |complain|("[Unkno|
|00001380| 77 6e 20 63 6f 6e 74 72 | 6f 6c 20 63 68 61 72 61 |wn contr|ol chara|
|00001390| 63 74 65 72 5d 22 29 3b | 0a 58 09 09 7d 0a 58 09 |cter]");|.X..}.X.|
|000013a0| 7d 0a 58 09 72 65 74 75 | 72 6e 20 63 3b 0a 58 7d |}.X.retu|rn c;.X}|
|000013b0| 0a 58 0a 76 6f 69 64 0a | 42 69 6e 64 57 4d 61 70 |.X.void.|BindWMap|
|000013c0| 28 6d 61 70 2c 20 6c 61 | 73 74 6b 65 79 2c 20 63 |(map, la|stkey, c|
|000013d0| 6d 64 29 0a 64 61 74 61 | 5f 6f 62 6a 09 2a 2a 6d |md).data|_obj.**m|
|000013e0| 61 70 2c 0a 58 09 09 2a | 63 6d 64 3b 0a 58 7b 0a |ap,.X..*|cmd;.X{.|
|000013f0| 58 09 64 61 74 61 5f 6f | 62 6a 09 2a 2a 6e 65 78 |X.data_o|bj.**nex|
|00001400| 74 6d 61 70 3b 0a 58 09 | 69 6e 74 09 63 3b 0a 58 |tmap;.X.|int.c;.X|
|00001410| 0a 58 09 63 20 3d 20 61 | 64 64 67 65 74 63 28 29 |.X.c = a|ddgetc()|
|00001420| 3b 0a 58 09 69 66 20 28 | 63 20 3d 3d 20 45 4f 46 |;.X.if (|c == EOF|
|00001430| 29 20 7b 0a 58 09 09 69 | 66 20 28 6c 61 73 74 6b |) {.X..i|f (lastk|
|00001440| 65 79 20 3d 3d 20 45 4f | 46 29 0a 58 09 09 09 63 |ey == EO|F).X...c|
|00001450| 6f 6d 70 6c 61 69 6e 28 | 22 5b 45 6d 70 74 79 20 |omplain(|"[Empty |
|00001460| 6b 65 79 20 73 65 71 75 | 65 6e 63 65 5d 22 29 3b |key sequ|ence]");|
|00001470| 0a 58 09 09 63 6f 6d 70 | 6c 61 69 6e 28 22 5b 50 |.X..comp|lain("[P|
|00001480| 72 65 6d 61 74 75 72 65 | 20 65 6e 64 20 6f 66 20 |remature| end of |
|00001490| 6b 65 79 20 73 65 71 75 | 65 6e 63 65 5d 22 29 3b |key sequ|ence]");|
|000014a0| 0a 58 09 7d 20 65 6c 73 | 65 20 7b 0a 58 09 09 69 |.X.} els|e {.X..i|
|000014b0| 66 20 28 6e 65 78 74 6d | 61 70 20 3d 20 49 73 50 |f (nextm|ap = IsP|
|000014c0| 72 65 66 69 78 28 6d 61 | 70 5b 63 5d 29 29 0a 58 |refix(ma|p[c])).X|
|000014d0| 09 09 09 42 69 6e 64 57 | 4d 61 70 28 6e 65 78 74 |...BindW|Map(next|
|000014e0| 6d 61 70 2c 20 63 2c 20 | 63 6d 64 29 3b 0a 58 09 |map, c, |cmd);.X.|
|000014f0| 09 65 6c 73 65 20 7b 0a | 58 09 09 09 6d 61 70 5b |.else {.|X...map[|
|00001500| 63 5d 20 3d 20 63 6d 64 | 3b 0a 58 23 69 66 64 65 |c] = cmd|;.X#ifde|
|00001510| 66 20 4d 41 43 0a 58 09 | 09 09 28 28 73 74 72 75 |f MAC.X.|..((stru|
|00001520| 63 74 20 63 6d 64 20 2a | 29 20 63 6d 64 29 2d 3e |ct cmd *|) cmd)->|
|00001530| 63 5f 6b 65 79 20 3d 20 | 63 3b 09 2f 2a 20 73 65 |c_key = |c;./* se|
|00001540| 65 20 61 62 6f 75 74 5f | 6a 28 29 20 69 6e 20 6d |e about_|j() in m|
|00001550| 61 63 2e 63 20 2a 2f 0a | 58 09 09 09 69 66 28 6d |ac.c */.|X...if(m|
|00001560| 61 70 20 3d 3d 20 6d 61 | 69 6e 6d 61 70 29 20 28 |ap == ma|inmap) (|
|00001570| 28 73 74 72 75 63 74 20 | 63 6d 64 20 2a 29 20 63 |(struct |cmd *) c|
|00001580| 6d 64 29 2d 3e 63 5f 6d | 61 70 20 3d 20 46 5f 4d |md)->c_m|ap = F_M|
|00001590| 41 49 4e 4d 41 50 3b 0a | 58 09 09 09 65 6c 73 65 |AINMAP;.|X...else|
|000015a0| 20 69 66 28 6d 61 70 20 | 3d 3d 20 70 72 65 66 31 | if(map |== pref1|
|000015b0| 6d 61 70 29 20 28 28 73 | 74 72 75 63 74 20 63 6d |map) ((s|truct cm|
|000015c0| 64 20 2a 29 20 63 6d 64 | 29 2d 3e 63 5f 6d 61 70 |d *) cmd|)->c_map|
|000015d0| 20 3d 20 46 5f 50 52 45 | 46 31 4d 41 50 3b 0a 58 | = F_PRE|F1MAP;.X|
|000015e0| 09 09 09 65 6c 73 65 20 | 69 66 28 6d 61 70 20 3d |...else |if(map =|
|000015f0| 3d 20 70 72 65 66 32 6d | 61 70 29 20 28 28 73 74 |= pref2m|ap) ((st|
|00001600| 72 75 63 74 20 63 6d 64 | 20 2a 29 20 63 6d 64 29 |ruct cmd| *) cmd)|
|00001610| 2d 3e 63 5f 6d 61 70 20 | 3d 20 46 5f 50 52 45 46 |->c_map |= F_PREF|
|00001620| 32 4d 41 50 3b 0a 58 23 | 65 6e 64 69 66 0a 58 09 |2MAP;.X#|endif.X.|
|00001630| 09 7d 0a 58 09 7d 0a 58 | 7d 0a 58 0a 58 2f 2a 20 |.}.X.}.X|}.X.X/* |
|00001640| 56 41 52 41 52 47 53 30 | 20 2a 2f 0a 58 0a 76 6f |VARARGS0| */.X.vo|
|00001650| 69 64 0a 42 69 6e 64 53 | 6f 6d 65 74 68 69 6e 67 |id.BindS|omething|
|00001660| 28 70 72 6f 63 29 0a 58 | 23 69 66 64 65 66 20 4c |(proc).X|#ifdef L|
|00001670| 49 4e 54 5f 41 52 47 53 | 0a 64 61 74 61 5f 6f 62 |INT_ARGS|.data_ob|
|00001680| 6a 09 2a 28 2a 70 72 6f | 63 29 28 29 3b 0a 58 23 |j.*(*pro|c)();.X#|
|00001690| 65 6c 73 65 0a 64 61 74 | 61 5f 6f 62 6a 09 2a 28 |else.dat|a_obj.*(|
|000016a0| 2a 70 72 6f 63 29 28 29 | 3b 0a 58 23 65 6e 64 69 |*proc)()|;.X#endi|
|000016b0| 66 0a 58 7b 0a 58 09 64 | 61 74 61 5f 6f 62 6a 09 |f.X{.X.d|ata_obj.|
|000016c0| 2a 64 3b 0a 58 0a 58 09 | 69 66 20 28 28 64 20 3d |*d;.X.X.|if ((d =|
|000016d0| 20 28 2a 70 72 6f 63 29 | 28 50 72 6f 63 46 6d 74 | (*proc)|(ProcFmt|
|000016e0| 29 29 20 3d 3d 20 30 29 | 0a 58 09 09 72 65 74 75 |)) == 0)|.X..retu|
|000016f0| 72 6e 3b 0a 58 09 73 5f | 6d 65 73 73 28 22 3a 20 |rn;.X.s_|mess(": |
|00001700| 25 66 20 25 73 20 22 2c | 20 64 2d 3e 4e 61 6d 65 |%f %s ",| d->Name|
|00001710| 29 3b 0a 58 09 42 69 6e | 64 57 4d 61 70 28 6d 61 |);.X.Bin|dWMap(ma|
|00001720| 69 6e 6d 61 70 2c 20 45 | 4f 46 2c 20 64 29 3b 0a |inmap, E|OF, d);.|
|00001730| 58 7d 0a 58 0a 58 2f 2a | 20 44 65 73 63 72 69 62 |X}.X.X/*| Describ|
|00001740| 65 20 6b 65 79 20 2a 2f | 0a 58 0a 76 6f 69 64 0a |e key */|.X.void.|
|00001750| 44 65 73 63 57 4d 61 70 | 28 6d 61 70 2c 20 6b 65 |DescWMap|(map, ke|
|00001760| 79 29 0a 64 61 74 61 5f | 6f 62 6a 09 2a 2a 6d 61 |y).data_|obj.**ma|
|00001770| 70 3b 0a 58 7b 0a 58 09 | 64 61 74 61 5f 6f 62 6a |p;.X{.X.|data_obj|
|00001780| 09 2a 63 70 20 3d 20 6d | 61 70 5b 6b 65 79 5d 2c |.*cp = m|ap[key],|
|00001790| 0a 58 09 09 09 2a 2a 70 | 72 65 66 70 3b 0a 58 0a |.X...**p|refp;.X.|
|000017a0| 58 09 69 66 20 28 63 70 | 20 3d 3d 20 30 29 0a 58 |X.if (cp| == 0).X|
|000017b0| 09 09 61 64 64 5f 6d 65 | 73 73 28 22 69 73 20 75 |..add_me|ss("is u|
|000017c0| 6e 62 6f 75 6e 64 2e 22 | 29 3b 0a 58 09 65 6c 73 |nbound."|);.X.els|
|000017d0| 65 20 69 66 20 28 70 72 | 65 66 70 20 3d 20 49 73 |e if (pr|efp = Is|
|000017e0| 50 72 65 66 69 78 28 63 | 70 29 29 0a 58 09 09 44 |Prefix(c|p)).X..D|
|000017f0| 65 73 63 57 4d 61 70 28 | 70 72 65 66 70 2c 20 61 |escWMap(|prefp, a|
|00001800| 64 64 67 65 74 63 28 29 | 29 3b 0a 58 09 65 6c 73 |ddgetc()|);.X.els|
|00001810| 65 0a 58 09 09 61 64 64 | 5f 6d 65 73 73 28 22 69 |e.X..add|_mess("i|
|00001820| 73 20 62 6f 75 6e 64 20 | 74 6f 20 25 73 2e 22 2c |s bound |to %s.",|
|00001830| 20 63 70 2d 3e 4e 61 6d | 65 29 3b 0a 58 7d 0a 58 | cp->Nam|e);.X}.X|
|00001840| 0a 76 6f 69 64 0a 4b 65 | 79 44 65 73 63 28 29 0a |.void.Ke|yDesc().|
|00001850| 58 7b 0a 58 09 73 5f 6d | 65 73 73 28 50 72 6f 63 |X{.X.s_m|ess(Proc|
|00001860| 46 6d 74 29 3b 0a 58 09 | 44 65 73 63 57 4d 61 70 |Fmt);.X.|DescWMap|
|00001870| 28 6d 61 69 6e 6d 61 70 | 2c 20 61 64 64 67 65 74 |(mainmap|, addget|
|00001880| 63 28 29 29 3b 0a 58 7d | 0a 58 0a 76 6f 69 64 0a |c());.X}|.X.void.|
|00001890| 44 65 73 63 43 6f 6d 28 | 29 0a 58 7b 0a 58 09 64 |DescCom(|).X{.X.d|
|000018a0| 61 74 61 5f 6f 62 6a 09 | 2a 64 70 3b 0a 58 09 63 |ata_obj.|*dp;.X.c|
|000018b0| 68 61 72 09 70 61 74 74 | 65 72 6e 5b 31 30 30 5d |har.patt|ern[100]|
|000018c0| 2c 0a 58 09 09 64 6f 63 | 5f 74 79 70 65 5b 34 30 |,.X..doc|_type[40|
|000018d0| 5d 2c 0a 58 09 09 2a 66 | 69 6c 65 20 3d 20 43 6d |],.X..*f|ile = Cm|
|000018e0| 64 44 62 3b 0a 58 09 46 | 69 6c 65 09 2a 66 70 3b |dDb;.X.F|ile.*fp;|
|000018f0| 0a 58 0a 58 09 69 66 20 | 28 21 73 74 72 63 6d 70 |.X.X.if |(!strcmp|
|00001900| 28 4c 61 73 74 43 6d 64 | 2d 3e 4e 61 6d 65 2c 20 |(LastCmd|->Name, |
|00001910| 22 64 65 73 63 72 69 62 | 65 2d 76 61 72 69 61 62 |"describ|e-variab|
|00001920| 6c 65 22 29 29 0a 58 09 | 09 64 70 20 3d 20 28 64 |le")).X.|.dp = (d|
|00001930| 61 74 61 5f 6f 62 6a 20 | 2a 29 20 66 69 6e 64 76 |ata_obj |*) findv|
|00001940| 61 72 28 50 72 6f 63 46 | 6d 74 29 3b 0a 58 09 65 |ar(ProcF|mt);.X.e|
|00001950| 6c 73 65 0a 58 09 09 64 | 70 20 3d 20 28 64 61 74 |lse.X..d|p = (dat|
|00001960| 61 5f 6f 62 6a 20 2a 29 | 20 66 69 6e 64 63 6f 6d |a_obj *)| findcom|
|00001970| 28 50 72 6f 63 46 6d 74 | 29 3b 0a 58 09 69 66 20 |(ProcFmt|);.X.if |
|00001980| 28 64 70 20 3d 3d 20 30 | 29 0a 58 09 09 72 65 74 |(dp == 0|).X..ret|
|00001990| 75 72 6e 3b 0a 58 09 66 | 70 20 3d 20 6f 70 65 6e |urn;.X.f|p = open|
|000019a0| 5f 66 69 6c 65 28 66 69 | 6c 65 2c 20 69 6f 62 75 |_file(fi|le, iobu|
|000019b0| 66 66 2c 20 46 5f 52 45 | 41 44 2c 20 43 4f 4d 50 |ff, F_RE|AD, COMP|
|000019c0| 4c 41 49 4e 2c 20 51 55 | 49 45 54 29 3b 0a 58 09 |LAIN, QU|IET);.X.|
|000019d0| 50 6c 61 63 75 72 28 49 | 4c 49 2c 20 30 29 3b 0a |Placur(I|LI, 0);.|
|000019e0| 58 09 66 6c 75 73 68 6f | 28 29 3b 0a 58 09 73 70 |X.flusho|();.X.sp|
|000019f0| 72 69 6e 74 66 28 70 61 | 74 74 65 72 6e 2c 20 22 |rintf(pa|ttern, "|
|00001a00| 5e 3a 65 6e 74 72 79 20 | 5c 22 25 73 5c 22 20 5c |^:entry |\"%s\" \|
|00001a10| 22 5c 5c 28 5b 5e 5c 22 | 5d 2a 5c 5c 29 5c 22 22 |"\\([^\"|]*\\)\""|
|00001a20| 2c 20 64 70 2d 3e 4e 61 | 6d 65 29 3b 0a 58 09 54 |, dp->Na|me);.X.T|
|00001a30| 4f 73 74 61 72 74 28 22 | 48 65 6c 70 22 2c 20 54 |Ostart("|Help", T|
|00001a40| 52 55 45 29 3b 0a 58 09 | 66 6f 72 20 28 3b 3b 29 |RUE);.X.|for (;;)|
|00001a50| 20 7b 0a 58 09 09 69 66 | 20 28 66 5f 67 65 74 73 | {.X..if| (f_gets|
|00001a60| 28 66 70 2c 20 67 65 6e | 62 75 66 2c 20 4c 42 53 |(fp, gen|buf, LBS|
|00001a70| 49 5a 45 29 20 3d 3d 20 | 45 4f 46 29 20 7b 0a 58 |IZE) == |EOF) {.X|
|00001a80| 09 09 09 54 79 70 65 6f | 75 74 28 22 54 68 65 72 |...Typeo|ut("Ther|
|00001a90| 65 20 69 73 20 6e 6f 20 | 64 6f 63 75 6d 65 6e 74 |e is no |document|
|00001aa0| 61 74 69 6f 6e 20 66 6f | 72 20 5c 22 25 73 5c 22 |ation fo|r \"%s\"|
|00001ab0| 2e 22 2c 20 64 70 2d 3e | 4e 61 6d 65 29 3b 0a 58 |.", dp->|Name);.X|
|00001ac0| 09 09 09 67 6f 74 6f 20 | 6f 75 74 61 68 65 72 65 |...goto |outahere|
|00001ad0| 3b 0a 58 09 09 7d 0a 58 | 09 09 69 66 20 28 28 73 |;.X..}.X|..if ((s|
|00001ae0| 74 72 6e 63 6d 70 28 67 | 65 6e 62 75 66 2c 20 22 |trncmp(g|enbuf, "|
|00001af0| 3a 65 6e 74 72 79 22 2c | 20 36 29 20 3d 3d 20 30 |:entry",| 6) == 0|
|00001b00| 29 20 26 26 20 4c 6f 6f | 6b 69 6e 67 41 74 28 70 |) && Loo|kingAt(p|
|00001b10| 61 74 74 65 72 6e 2c 20 | 67 65 6e 62 75 66 2c 20 |attern, |genbuf, |
|00001b20| 30 29 29 0a 58 09 09 09 | 62 72 65 61 6b 3b 0a 58 |0)).X...|break;.X|
|00001b30| 09 7d 0a 58 09 2f 2a 20 | 66 6f 75 6e 64 20 69 74 |.}.X./* |found it|
|00001b40| 20 2e 2e 2e 20 6c 65 74 | 27 73 20 70 72 69 6e 74 | ... let|'s print|
|00001b50| 20 69 74 20 2a 2f 0a 58 | 09 70 75 74 6d 61 74 63 | it */.X|.putmatc|
|00001b60| 68 28 31 2c 20 64 6f 63 | 5f 74 79 70 65 2c 20 73 |h(1, doc|_type, s|
|00001b70| 69 7a 65 6f 66 20 64 6f | 63 5f 74 79 70 65 29 3b |izeof do|c_type);|
|00001b80| 0a 58 09 69 66 20 28 73 | 74 72 63 6d 70 28 22 56 |.X.if (s|trcmp("V|
|00001b90| 61 72 69 61 62 6c 65 22 | 2c 20 64 6f 63 5f 74 79 |ariable"|, doc_ty|
|00001ba0| 70 65 29 20 3d 3d 20 30 | 29 0a 58 09 09 54 79 70 |pe) == 0|).X..Typ|
|00001bb0| 65 6f 75 74 28 64 70 2d | 3e 4e 61 6d 65 29 3b 0a |eout(dp-|>Name);.|
|00001bc0| 58 09 65 6c 73 65 20 69 | 66 20 28 73 74 72 63 6d |X.else i|f (strcm|
|00001bd0| 70 28 22 43 6f 6d 6d 61 | 6e 64 22 2c 20 64 6f 63 |p("Comma|nd", doc|
|00001be0| 5f 74 79 70 65 29 20 3d | 3d 20 30 29 20 7b 0a 58 |_type) =|= 0) {.X|
|00001bf0| 09 09 63 68 61 72 09 62 | 69 6e 64 69 6e 67 5b 31 |..char.b|inding[1|
|00001c00| 32 38 5d 3b 0a 58 0a 58 | 09 09 66 69 6e 64 5f 62 |28];.X.X|..find_b|
|00001c10| 69 6e 64 73 28 64 70 2c | 20 62 69 6e 64 69 6e 67 |inds(dp,| binding|
|00001c20| 29 3b 0a 58 09 09 69 66 | 20 28 62 6c 6e 6b 70 28 |);.X..if| (blnkp(|
|00001c30| 62 69 6e 64 69 6e 67 29 | 29 0a 58 09 09 09 54 79 |binding)|).X...Ty|
|00001c40| 70 65 6f 75 74 28 22 54 | 6f 20 69 6e 76 6f 6b 65 |peout("T|o invoke|
|00001c50| 20 25 73 2c 20 74 79 70 | 65 20 5c 22 45 53 43 20 | %s, typ|e \"ESC |
|00001c60| 58 20 25 73 3c 63 72 3e | 5c 22 2e 22 2c 0a 58 09 |X %s<cr>|\".",.X.|
|00001c70| 09 09 09 64 70 2d 3e 4e | 61 6d 65 2c 0a 58 09 09 |...dp->N|ame,.X..|
|00001c80| 09 09 64 70 2d 3e 4e 61 | 6d 65 29 3b 0a 58 09 09 |..dp->Na|me);.X..|
|00001c90| 65 6c 73 65 0a 58 09 09 | 09 54 79 70 65 6f 75 74 |else.X..|.Typeout|
|00001ca0| 28 22 54 79 70 65 20 5c | 22 25 73 5c 22 20 74 6f |("Type \|"%s\" to|
|00001cb0| 20 69 6e 76 6f 6b 65 20 | 25 73 2e 22 2c 20 62 69 | invoke |%s.", bi|
|00001cc0| 6e 64 69 6e 67 2c 20 64 | 70 2d 3e 4e 61 6d 65 29 |nding, d|p->Name)|
|00001cd0| 3b 0a 58 09 7d 0a 58 09 | 54 79 70 65 6f 75 74 28 |;.X.}.X.|Typeout(|
|00001ce0| 22 22 29 3b 0a 58 09 77 | 68 69 6c 65 20 28 66 5f |"");.X.w|hile (f_|
|00001cf0| 67 65 74 73 28 66 70 2c | 20 67 65 6e 62 75 66 2c |gets(fp,| genbuf,|
|00001d00| 20 4c 42 53 49 5a 45 29 | 20 21 3d 20 45 4f 46 29 | LBSIZE)| != EOF)|
|00001d10| 0a 58 09 09 69 66 20 28 | 73 74 72 6e 63 6d 70 28 |.X..if (|strncmp(|
|00001d20| 67 65 6e 62 75 66 2c 20 | 22 3a 65 6e 74 72 79 22 |genbuf, |":entry"|
|00001d30| 2c 20 36 29 20 3d 3d 20 | 30 29 0a 58 09 09 09 67 |, 6) == |0).X...g|
|00001d40| 6f 74 6f 20 6f 75 74 61 | 68 65 72 65 3b 0a 58 09 |oto outa|here;.X.|
|00001d50| 09 65 6c 73 65 0a 58 09 | 09 09 54 79 70 65 6f 75 |.else.X.|..Typeou|
|00001d60| 74 28 22 25 73 22 2c 20 | 67 65 6e 62 75 66 29 3b |t("%s", |genbuf);|
|00001d70| 0a 6f 75 74 61 68 65 72 | 65 3a 0a 58 09 66 5f 63 |.outaher|e:.X.f_c|
|00001d80| 6c 6f 73 65 28 66 70 29 | 3b 0a 58 09 54 4f 73 74 |lose(fp)|;.X.TOst|
|00001d90| 6f 70 28 29 3b 0a 58 7d | 0a 58 0a 76 6f 69 64 0a |op();.X}|.X.void.|
|00001da0| 44 65 73 63 42 69 6e 64 | 69 6e 67 73 28 29 0a 58 |DescBind|ings().X|
|00001db0| 7b 0a 58 09 65 78 74 65 | 72 6e 20 76 6f 69 64 09 |{.X.exte|rn void.|
|00001dc0| 54 79 70 65 6f 75 74 28 | 29 3b 0a 58 0a 58 09 54 |Typeout(|);.X.X.T|
|00001dd0| 4f 73 74 61 72 74 28 22 | 4b 65 79 20 42 69 6e 64 |Ostart("|Key Bind|
|00001de0| 69 6e 67 73 22 2c 20 54 | 52 55 45 29 3b 0a 58 09 |ings", T|RUE);.X.|
|00001df0| 44 65 73 63 4d 61 70 28 | 6d 61 69 6e 6d 61 70 2c |DescMap(|mainmap,|
|00001e00| 20 4e 75 6c 6c 53 74 72 | 29 3b 0a 58 09 54 4f 73 | NullStr|);.X.TOs|
|00001e10| 74 6f 70 28 29 3b 0a 58 | 7d 0a 58 0a 65 78 74 65 |top();.X|}.X.exte|
|00001e20| 72 6e 20 69 6e 74 20 73 | 70 65 63 69 61 6c 6d 61 |rn int s|pecialma|
|00001e30| 70 3b 0a 58 0a 76 6f 69 | 64 0a 44 65 73 63 4d 61 |p;.X.voi|d.DescMa|
|00001e40| 70 28 6d 61 70 2c 20 70 | 72 65 66 29 0a 64 61 74 |p(map, p|ref).dat|
|00001e50| 61 5f 6f 62 6a 09 2a 2a | 6d 61 70 3b 0a 63 68 61 |a_obj.**|map;.cha|
|00001e60| 72 09 2a 70 72 65 66 3b | 0a 58 7b 0a 58 09 69 6e |r.*pref;|.X{.X.in|
|00001e70| 74 09 63 31 2c 0a 58 09 | 09 63 32 20 3d 20 30 2c |t.c1,.X.|.c2 = 0,|
|00001e80| 0a 58 09 09 6e 75 6d 62 | 65 74 77 65 65 6e 3b 0a |.X..numb|etween;.|
|00001e90| 58 09 63 68 61 72 09 6b | 65 79 64 65 73 63 62 75 |X.char.k|eydescbu|
|00001ea0| 66 5b 34 30 5d 3b 0a 58 | 09 64 61 74 61 5f 6f 62 |f[40];.X|.data_ob|
|00001eb0| 6a 09 2a 2a 70 72 65 66 | 70 3b 0a 58 0a 58 23 69 |j.**pref|p;.X.X#i|
|00001ec0| 66 64 65 66 20 49 42 4d | 50 43 0a 58 09 73 70 65 |fdef IBM|PC.X.spe|
|00001ed0| 63 69 61 6c 6d 61 70 20 | 3d 20 28 6d 61 70 20 3d |cialmap |= (map =|
|00001ee0| 3d 20 6d 69 73 63 6d 61 | 70 29 3b 0a 58 23 65 6e |= miscma|p);.X#en|
|00001ef0| 64 69 66 0a 58 0a 58 09 | 66 6f 72 20 28 63 31 20 |dif.X.X.|for (c1 |
|00001f00| 3d 20 30 3b 20 63 31 20 | 3c 20 4e 43 48 41 52 53 |= 0; c1 |< NCHARS|
|00001f10| 20 26 26 20 63 32 20 3c | 20 4e 43 48 41 52 53 3b | && c2 <| NCHARS;|
|00001f20| 20 63 31 20 3d 20 63 32 | 20 2b 20 31 29 20 7b 0a | c1 = c2| + 1) {.|
|00001f30| 58 09 09 63 32 20 3d 20 | 63 31 3b 0a 58 09 09 69 |X..c2 = |c1;.X..i|
|00001f40| 66 20 28 6d 61 70 5b 63 | 31 5d 20 3d 3d 20 30 29 |f (map[c|1] == 0)|
|00001f50| 0a 58 09 09 09 63 6f 6e | 74 69 6e 75 65 3b 0a 58 |.X...con|tinue;.X|
|00001f60| 09 09 77 68 69 6c 65 20 | 28 2b 2b 63 32 20 3c 20 |..while |(++c2 < |
|00001f70| 4e 43 48 41 52 53 20 26 | 26 20 6d 61 70 5b 63 31 |NCHARS &|& map[c1|
|00001f80| 5d 20 3d 3d 20 6d 61 70 | 5b 63 32 5d 29 0a 58 09 |] == map|[c2]).X.|
|00001f90| 09 09 3b 0a 58 09 09 63 | 32 20 2d 3d 20 31 3b 0a |..;.X..c|2 -= 1;.|
|00001fa0| 58 09 09 6e 75 6d 62 65 | 74 77 65 65 6e 20 3d 20 |X..numbe|tween = |
|00001fb0| 63 32 20 2d 20 63 31 3b | 0a 58 09 09 69 66 20 28 |c2 - c1;|.X..if (|
|00001fc0| 6e 75 6d 62 65 74 77 65 | 65 6e 20 3d 3d 20 31 29 |numbetwe|en == 1)|
|00001fd0| 0a 58 09 09 09 73 70 72 | 69 6e 74 66 28 6b 65 79 |.X...spr|intf(key|
|00001fe0| 64 65 73 63 62 75 66 2c | 20 22 25 73 20 7b 25 70 |descbuf,| "%s {%p|
|00001ff0| 2c 25 70 7d 22 2c 20 70 | 72 65 66 2c 20 63 31 2c |,%p}", p|ref, c1,|
|00002000| 20 63 32 29 3b 0a 58 09 | 09 65 6c 73 65 20 69 66 | c2);.X.|.else if|
|00002010| 20 28 6e 75 6d 62 65 74 | 77 65 65 6e 20 3d 3d 20 | (numbet|ween == |
|00002020| 30 29 0a 58 09 09 09 73 | 70 72 69 6e 74 66 28 6b |0).X...s|printf(k|
|00002030| 65 79 64 65 73 63 62 75 | 66 2c 20 22 25 73 20 25 |eydescbu|f, "%s %|
|00002040| 70 22 2c 20 70 72 65 66 | 2c 20 63 31 29 3b 0a 58 |p", pref|, c1);.X|
|00002050| 09 09 65 6c 73 65 0a 58 | 09 09 09 73 70 72 69 6e |..else.X|...sprin|
|00002060| 74 66 28 6b 65 79 64 65 | 73 63 62 75 66 2c 20 22 |tf(keyde|scbuf, "|
|00002070| 25 73 20 5b 25 70 2d 25 | 70 5d 22 2c 20 70 72 65 |%s [%p-%|p]", pre|
|00002080| 66 2c 20 63 31 2c 20 63 | 32 29 3b 0a 58 09 09 69 |f, c1, c|2);.X..i|
|00002090| 66 20 28 28 70 72 65 66 | 70 20 3d 20 49 73 50 72 |f ((pref|p = IsPr|
|000020a0| 65 66 69 78 28 6d 61 70 | 5b 63 31 5d 29 29 20 26 |efix(map|[c1])) &|
|000020b0| 26 20 28 70 72 65 66 70 | 20 21 3d 20 6d 61 70 29 |& (prefp| != map)|
|000020c0| 29 0a 58 09 09 09 44 65 | 73 63 4d 61 70 28 70 72 |).X...De|scMap(pr|
|000020d0| 65 66 70 2c 20 6b 65 79 | 64 65 73 63 62 75 66 29 |efp, key|descbuf)|
|000020e0| 3b 0a 58 09 09 65 6c 73 | 65 0a 58 09 09 09 54 79 |;.X..els|e.X...Ty|
|000020f0| 70 65 6f 75 74 28 22 25 | 2d 31 38 73 25 73 22 2c |peout("%|-18s%s",|
|00002100| 20 6b 65 79 64 65 73 63 | 62 75 66 2c 20 6d 61 70 | keydesc|buf, map|
|00002110| 5b 63 31 5d 2d 3e 4e 61 | 6d 65 29 3b 0a 58 09 7d |[c1]->Na|me);.X.}|
|00002120| 0a 58 7d 0a 58 0a 70 72 | 69 76 61 74 65 20 76 6f |.X}.X.pr|ivate vo|
|00002130| 69 64 0a 66 69 6e 64 5f | 62 69 6e 64 73 28 64 70 |id.find_|binds(dp|
|00002140| 2c 20 62 75 66 29 0a 64 | 61 74 61 5f 6f 62 6a 09 |, buf).d|ata_obj.|
|00002150| 2a 64 70 3b 0a 63 68 61 | 72 09 2a 62 75 66 3b 0a |*dp;.cha|r.*buf;.|
|00002160| 58 7b 0a 58 09 63 68 61 | 72 09 2a 65 6e 64 70 3b |X{.X.cha|r.*endp;|
|00002170| 0a 58 0a 58 09 62 75 66 | 5b 30 5d 20 3d 20 27 5c |.X.X.buf|[0] = '\|
|00002180| 30 27 3b 0a 58 09 66 62 | 5f 61 75 78 28 64 70 2c |0';.X.fb|_aux(dp,|
|00002190| 20 6d 61 69 6e 6d 61 70 | 2c 20 28 63 68 61 72 20 | mainmap|, (char |
|000021a0| 2a 29 20 30 2c 20 62 75 | 66 29 3b 0a 58 09 65 6e |*) 0, bu|f);.X.en|
|000021b0| 64 70 20 3d 20 62 75 66 | 20 2b 20 73 74 72 6c 65 |dp = buf| + strle|
|000021c0| 6e 28 62 75 66 29 20 2d | 20 32 3b 0a 58 09 69 66 |n(buf) -| 2;.X.if|
|000021d0| 20 28 28 65 6e 64 70 20 | 3e 20 62 75 66 29 20 26 | ((endp |> buf) &|
|000021e0| 26 20 28 73 74 72 63 6d | 70 28 65 6e 64 70 2c 20 |& (strcm|p(endp, |
|000021f0| 22 2c 20 22 29 20 3d 3d | 20 30 29 29 0a 58 09 09 |", ") ==| 0)).X..|
|00002200| 2a 65 6e 64 70 20 3d 20 | 27 5c 30 27 3b 0a 58 7d |*endp = |'\0';.X}|
|00002210| 0a 58 0a 70 72 69 76 61 | 74 65 20 76 6f 69 64 0a |.X.priva|te void.|
|00002220| 66 62 5f 61 75 78 28 63 | 70 2c 20 6d 61 70 2c 20 |fb_aux(c|p, map, |
|00002230| 70 72 65 66 69 78 2c 20 | 62 75 66 29 0a 72 65 67 |prefix, |buf).reg|
|00002240| 69 73 74 65 72 20 64 61 | 74 61 5f 6f 62 6a 09 2a |ister da|ta_obj.*|
|00002250| 63 70 2c 0a 58 09 09 09 | 2a 2a 6d 61 70 3b 0a 63 |cp,.X...|**map;.c|
|00002260| 68 61 72 09 2a 62 75 66 | 2c 0a 58 09 2a 70 72 65 |har.*buf|,.X.*pre|
|00002270| 66 69 78 3b 0a 58 7b 0a | 58 09 69 6e 74 09 63 31 |fix;.X{.|X.int.c1|
|00002280| 2c 0a 58 09 09 63 32 3b | 0a 58 09 63 68 61 72 09 |,.X..c2;|.X.char.|
|00002290| 2a 62 75 66 70 20 3d 20 | 62 75 66 20 2b 20 73 74 |*bufp = |buf + st|
|000022a0| 72 6c 65 6e 28 62 75 66 | 29 2c 0a 58 09 09 70 72 |rlen(buf|),.X..pr|
|000022b0| 65 66 62 75 66 5b 32 30 | 5d 3b 0a 58 09 64 61 74 |efbuf[20|];.X.dat|
|000022c0| 61 5f 6f 62 6a 09 2a 2a | 70 72 65 66 70 3b 0a 58 |a_obj.**|prefp;.X|
|000022d0| 0a 58 23 69 66 64 65 66 | 20 49 42 4d 50 43 0a 58 |.X#ifdef| IBMPC.X|
|000022e0| 09 73 70 65 63 69 61 6c | 6d 61 70 20 3d 20 28 6d |.special|map = (m|
|000022f0| 61 70 20 3d 3d 20 6d 69 | 73 63 6d 61 70 29 3b 0a |ap == mi|scmap);.|
|00002300| 58 23 65 6e 64 69 66 09 | 0a 58 0a 58 09 66 6f 72 |X#endif.|.X.X.for|
|00002310| 20 28 63 31 20 3d 20 63 | 32 20 3d 20 30 3b 20 63 | (c1 = c|2 = 0; c|
|00002320| 31 20 3c 20 4e 43 48 41 | 52 53 20 26 26 20 63 32 |1 < NCHA|RS && c2|
|00002330| 20 3c 20 4e 43 48 41 52 | 53 3b 20 63 31 20 3d 20 | < NCHAR|S; c1 = |
|00002340| 63 32 20 2b 20 31 29 20 | 7b 0a 58 09 09 63 32 20 |c2 + 1) |{.X..c2 |
|00002350| 3d 20 63 31 3b 0a 58 09 | 09 69 66 20 28 6d 61 70 |= c1;.X.|.if (map|
|00002360| 5b 63 31 5d 20 3d 3d 20 | 63 70 29 20 7b 0a 58 09 |[c1] == |cp) {.X.|
|00002370| 09 09 77 68 69 6c 65 20 | 28 2b 2b 63 32 20 3c 20 |..while |(++c2 < |
|00002380| 4e 43 48 41 52 53 20 26 | 26 20 6d 61 70 5b 63 31 |NCHARS &|& map[c1|
|00002390| 5d 20 3d 3d 20 6d 61 70 | 5b 63 32 5d 29 0a 58 09 |] == map|[c2]).X.|
|000023a0| 09 09 09 3b 0a 58 09 09 | 09 63 32 20 2d 3d 20 31 |...;.X..|.c2 -= 1|
|000023b0| 3b 0a 58 09 09 09 69 66 | 20 28 70 72 65 66 69 78 |;.X...if| (prefix|
|000023c0| 29 0a 58 09 09 09 09 73 | 70 72 69 6e 74 66 28 62 |).X....s|printf(b|
|000023d0| 75 66 70 2c 20 22 25 73 | 20 22 2c 20 70 72 65 66 |ufp, "%s| ", pref|
|000023e0| 69 78 29 3b 0a 58 09 09 | 09 62 75 66 70 20 2b 3d |ix);.X..|.bufp +=|
|000023f0| 20 73 74 72 6c 65 6e 28 | 62 75 66 70 29 3b 0a 58 | strlen(|bufp);.X|
|00002400| 09 09 09 73 77 69 74 63 | 68 20 28 63 32 20 2d 20 |...switc|h (c2 - |
|00002410| 63 31 29 20 7b 0a 58 09 | 09 09 63 61 73 65 20 30 |c1) {.X.|..case 0|
|00002420| 3a 0a 58 09 09 09 09 73 | 70 72 69 6e 74 66 28 62 |:.X....s|printf(b|
|00002430| 75 66 70 2c 20 22 25 70 | 2c 20 22 2c 20 63 31 29 |ufp, "%p|, ", c1)|
|00002440| 3b 0a 58 09 09 09 09 62 | 72 65 61 6b 3b 0a 58 09 |;.X....b|reak;.X.|
|00002450| 0a 58 09 09 09 63 61 73 | 65 20 31 3a 0a 58 09 09 |.X...cas|e 1:.X..|
|00002460| 09 09 73 70 72 69 6e 74 | 66 28 62 75 66 70 2c 20 |..sprint|f(bufp, |
|00002470| 22 7b 25 70 2c 25 70 7d | 2c 20 22 2c 20 63 31 2c |"{%p,%p}|, ", c1,|
|00002480| 20 63 32 29 3b 0a 58 09 | 09 09 09 62 72 65 61 6b | c2);.X.|...break|
|00002490| 3b 0a 58 09 0a 58 09 09 | 09 64 65 66 61 75 6c 74 |;.X..X..|.default|
|000024a0| 3a 0a 58 09 09 09 09 73 | 70 72 69 6e 74 66 28 62 |:.X....s|printf(b|
|000024b0| 75 66 70 2c 20 22 5b 25 | 70 2d 25 70 5d 2c 20 22 |ufp, "[%|p-%p], "|
|000024c0| 2c 20 63 31 2c 20 63 32 | 29 3b 0a 58 09 09 09 09 |, c1, c2|);.X....|
|000024d0| 62 72 65 61 6b 3b 0a 58 | 09 09 09 7d 0a 58 09 09 |break;.X|...}.X..|
|000024e0| 7d 0a 58 09 09 69 66 20 | 28 28 70 72 65 66 70 20 |}.X..if |((prefp |
|000024f0| 3d 20 49 73 50 72 65 66 | 69 78 28 6d 61 70 5b 63 |= IsPref|ix(map[c|
|00002500| 31 5d 29 29 20 26 26 20 | 28 70 72 65 66 70 20 21 |1])) && |(prefp !|
|00002510| 3d 20 6d 61 70 29 29 20 | 20 7b 0a 58 09 09 09 73 |= map)) | {.X...s|
|00002520| 70 72 69 6e 74 66 28 70 | 72 65 66 62 75 66 2c 20 |printf(p|refbuf, |
|00002530| 22 25 70 22 2c 20 63 31 | 29 3b 0a 58 09 09 09 66 |"%p", c1|);.X...f|
|00002540| 62 5f 61 75 78 28 63 70 | 2c 20 70 72 65 66 70 2c |b_aux(cp|, prefp,|
|00002550| 20 70 72 65 66 62 75 66 | 2c 20 62 75 66 70 29 3b | prefbuf|, bufp);|
|00002560| 0a 58 09 09 7d 0a 58 09 | 09 62 75 66 70 20 2b 3d |.X..}.X.|.bufp +=|
|00002570| 20 73 74 72 6c 65 6e 28 | 62 75 66 70 29 3b 0a 58 | strlen(|bufp);.X|
|00002580| 09 7d 0a 58 7d 0a 58 0a | 76 6f 69 64 0a 41 70 72 |.}.X}.X.|void.Apr|
|00002590| 6f 70 6f 73 28 29 0a 58 | 7b 0a 58 09 72 65 67 69 |opos().X|{.X.regi|
|000025a0| 73 74 65 72 20 73 74 72 | 75 63 74 20 63 6d 64 09 |ster str|uct cmd.|
|000025b0| 2a 63 70 3b 0a 58 09 72 | 65 67 69 73 74 65 72 20 |*cp;.X.r|egister |
|000025c0| 73 74 72 75 63 74 20 6d | 61 63 72 6f 09 2a 6d 3b |struct m|acro.*m;|
|000025d0| 0a 58 09 72 65 67 69 73 | 74 65 72 20 73 74 72 75 |.X.regis|ter stru|
|000025e0| 63 74 20 76 61 72 69 61 | 62 6c 65 09 2a 76 3b 0a |ct varia|ble.*v;.|
|000025f0| 58 09 63 68 61 72 09 2a | 61 6e 73 3b 0a 58 09 69 |X.char.*|ans;.X.i|
|00002600| 6e 74 09 61 6e 79 66 73 | 20 3d 20 4e 4f 2c 0a 58 |nt.anyfs| = NO,.X|
|00002610| 09 09 61 6e 79 76 73 20 | 3d 20 4e 4f 2c 0a 58 09 |..anyvs |= NO,.X.|
|00002620| 09 61 6e 79 6d 73 20 3d | 20 4e 4f 3b 0a 58 09 63 |.anyms =| NO;.X.c|
|00002630| 68 61 72 09 62 75 66 5b | 32 35 36 5d 3b 0a 58 0a |har.buf[|256];.X.|
|00002640| 58 09 61 6e 73 20 3d 20 | 61 73 6b 28 28 63 68 61 |X.ans = |ask((cha|
|00002650| 72 20 2a 29 20 30 2c 20 | 22 3a 20 25 66 20 28 6b |r *) 0, |": %f (k|
|00002660| 65 79 77 6f 72 64 29 20 | 22 29 3b 0a 58 09 54 4f |eyword) |");.X.TO|
|00002670| 73 74 61 72 74 28 22 48 | 65 6c 70 22 2c 20 54 52 |start("H|elp", TR|
|00002680| 55 45 29 3b 0a 58 09 66 | 6f 72 20 28 63 70 20 3d |UE);.X.f|or (cp =|
|00002690| 20 63 6f 6d 6d 61 6e 64 | 73 3b 20 63 70 2d 3e 4e | command|s; cp->N|
|000026a0| 61 6d 65 20 21 3d 20 30 | 3b 20 63 70 2b 2b 29 0a |ame != 0|; cp++).|
|000026b0| 58 09 09 69 66 20 28 73 | 69 6e 64 65 78 28 61 6e |X..if (s|index(an|
|000026c0| 73 2c 20 63 70 2d 3e 4e | 61 6d 65 29 29 20 7b 0a |s, cp->N|ame)) {.|
|000026d0| 58 09 09 09 69 66 20 28 | 61 6e 79 66 73 20 3d 3d |X...if (|anyfs ==|
|000026e0| 20 30 29 20 7b 0a 58 09 | 09 09 09 54 79 70 65 6f | 0) {.X.|...Typeo|
|000026f0| 75 74 28 22 43 6f 6d 6d | 61 6e 64 73 22 29 3b 0a |ut("Comm|ands");.|
|00002700| 58 09 09 09 09 54 79 70 | 65 6f 75 74 28 22 2d 2d |X....Typ|eout("--|
|00002710| 2d 2d 2d 2d 2d 2d 22 29 | 3b 0a 58 09 09 09 7d 0a |------")|;.X...}.|
|00002720| 58 09 09 09 66 69 6e 64 | 5f 62 69 6e 64 73 28 28 |X...find|_binds((|
|00002730| 64 61 74 61 5f 6f 62 6a | 20 2a 29 20 63 70 2c 20 |data_obj| *) cp, |
|00002740| 62 75 66 29 3b 0a 58 09 | 09 09 69 66 20 28 62 75 |buf);.X.|..if (bu|
|00002750| 66 5b 30 5d 29 0a 58 09 | 09 09 09 54 79 70 65 6f |f[0]).X.|...Typeo|
|00002760| 75 74 28 22 3a 20 25 2d | 33 35 73 28 25 73 29 22 |ut(": %-|35s(%s)"|
|00002770| 2c 20 63 70 2d 3e 4e 61 | 6d 65 2c 20 62 75 66 29 |, cp->Na|me, buf)|
|00002780| 3b 0a 58 09 09 09 65 6c | 73 65 0a 58 09 09 09 09 |;.X...el|se.X....|
|00002790| 54 79 70 65 6f 75 74 28 | 22 3a 20 25 73 22 2c 20 |Typeout(|": %s", |
|000027a0| 63 70 2d 3e 4e 61 6d 65 | 29 3b 0a 58 09 09 09 61 |cp->Name|);.X...a|
|000027b0| 6e 79 66 73 20 3d 20 59 | 45 53 3b 0a 58 09 09 7d |nyfs = Y|ES;.X..}|
|000027c0| 0a 58 09 69 66 20 28 61 | 6e 79 66 73 29 0a 58 09 |.X.if (a|nyfs).X.|
|000027d0| 09 54 79 70 65 6f 75 74 | 28 4e 75 6c 6c 53 74 72 |.Typeout|(NullStr|
|000027e0| 29 3b 0a 58 09 66 6f 72 | 20 28 76 20 3d 20 76 61 |);.X.for| (v = va|
|000027f0| 72 69 61 62 6c 65 73 3b | 20 76 2d 3e 4e 61 6d 65 |riables;| v->Name|
|00002800| 20 21 3d 20 30 3b 20 76 | 2b 2b 29 0a 58 09 09 69 | != 0; v|++).X..i|
|00002810| 66 20 28 73 69 6e 64 65 | 78 28 61 6e 73 2c 20 76 |f (sinde|x(ans, v|
|00002820| 2d 3e 4e 61 6d 65 29 29 | 20 7b 0a 58 09 09 09 69 |->Name))| {.X...i|
|00002830| 66 20 28 61 6e 79 76 73 | 20 3d 3d 20 30 29 20 7b |f (anyvs| == 0) {|
|00002840| 0a 58 09 09 09 09 54 79 | 70 65 6f 75 74 28 22 56 |.X....Ty|peout("V|
|00002850| 61 72 69 61 62 6c 65 73 | 22 29 3b 0a 58 09 09 09 |ariables|");.X...|
|00002860| 09 54 79 70 65 6f 75 74 | 28 22 2d 2d 2d 2d 2d 2d |.Typeout|("------|
|00002870| 2d 2d 2d 22 29 3b 0a 58 | 09 09 09 7d 0a 58 09 09 |---");.X|...}.X..|
|00002880| 09 61 6e 79 76 73 20 3d | 20 59 45 53 3b 0a 58 09 |.anyvs =| YES;.X.|
|00002890| 09 09 76 70 72 5f 61 75 | 78 28 76 2c 20 62 75 66 |..vpr_au|x(v, buf|
|000028a0| 29 3b 0a 58 09 09 09 54 | 79 70 65 6f 75 74 28 22 |);.X...T|ypeout("|
|000028b0| 3a 20 73 65 74 20 25 2d | 32 36 73 25 73 22 2c 20 |: set %-|26s%s", |
|000028c0| 76 2d 3e 4e 61 6d 65 2c | 20 62 75 66 29 3b 0a 58 |v->Name,| buf);.X|
|000028d0| 09 09 7d 0a 58 09 69 66 | 20 28 61 6e 79 76 73 29 |..}.X.if| (anyvs)|
|000028e0| 0a 58 09 09 54 79 70 65 | 6f 75 74 28 4e 75 6c 6c |.X..Type|out(Null|
|000028f0| 53 74 72 29 3b 0a 58 09 | 66 6f 72 20 28 6d 20 3d |Str);.X.|for (m =|
|00002900| 20 6d 61 63 72 6f 73 3b | 20 6d 20 21 3d 20 30 3b | macros;| m != 0;|
|00002910| 20 6d 20 3d 20 6d 2d 3e | 6d 5f 6e 65 78 74 6d 29 | m = m->|m_nextm)|
|00002920| 0a 58 09 09 69 66 20 28 | 73 69 6e 64 65 78 28 61 |.X..if (|sindex(a|
|00002930| 6e 73 2c 20 6d 2d 3e 4e | 61 6d 65 29 29 20 7b 0a |ns, m->N|ame)) {.|
|00002940| 58 09 09 09 69 66 20 28 | 61 6e 79 6d 73 20 3d 3d |X...if (|anyms ==|
|00002950| 20 30 29 20 7b 0a 58 09 | 09 09 09 54 79 70 65 6f | 0) {.X.|...Typeo|
|00002960| 75 74 28 22 4d 61 63 72 | 6f 73 22 29 3b 0a 58 09 |ut("Macr|os");.X.|
|00002970| 09 09 09 54 79 70 65 6f | 75 74 28 22 2d 2d 2d 2d |...Typeo|ut("----|
|00002980| 2d 2d 22 29 3b 0a 58 09 | 09 09 7d 0a 58 09 09 09 |--");.X.|..}.X...|
|00002990| 61 6e 79 6d 73 20 3d 20 | 59 45 53 3b 0a 58 09 09 |anyms = |YES;.X..|
|000029a0| 09 66 69 6e 64 5f 62 69 | 6e 64 73 28 28 64 61 74 |.find_bi|nds((dat|
|000029b0| 61 5f 6f 62 6a 20 2a 29 | 20 6d 2c 20 62 75 66 29 |a_obj *)| m, buf)|
|000029c0| 3b 0a 58 09 09 09 69 66 | 20 28 62 75 66 5b 30 5d |;.X...if| (buf[0]|
|000029d0| 29 0a 58 09 09 09 09 54 | 79 70 65 6f 75 74 28 22 |).X....T|ypeout("|
|000029e0| 3a 20 25 2d 33 35 73 28 | 25 73 29 22 2c 20 6d 2d |: %-35s(|%s)", m-|
|000029f0| 3e 4e 61 6d 65 2c 20 62 | 75 66 29 3b 0a 58 09 09 |>Name, b|uf);.X..|
|00002a00| 09 65 6c 73 65 0a 58 09 | 09 09 09 54 79 70 65 6f |.else.X.|...Typeo|
|00002a10| 75 74 28 22 3a 20 25 2d | 33 35 73 25 73 22 2c 20 |ut(": %-|35s%s", |
|00002a20| 22 65 78 65 63 75 74 65 | 2d 6d 61 63 72 6f 22 2c |"execute|-macro",|
|00002a30| 20 6d 2d 3e 4e 61 6d 65 | 29 3b 0a 58 09 09 7d 0a | m->Name|);.X..}.|
|00002a40| 58 09 54 4f 73 74 6f 70 | 28 29 3b 0a 58 7d 0a 58 |X.TOstop|();.X}.X|
|00002a50| 0a 76 6f 69 64 0a 45 78 | 74 65 6e 64 28 29 0a 58 |.void.Ex|tend().X|
|00002a60| 7b 0a 58 09 64 61 74 61 | 5f 6f 62 6a 09 2a 64 3b |{.X.data|_obj.*d;|
|00002a70| 0a 58 0a 58 09 69 66 20 | 28 64 20 3d 20 66 69 6e |.X.X.if |(d = fin|
|00002a80| 64 63 6f 6d 28 22 3a 20 | 22 29 29 0a 58 09 09 45 |dcom(": |")).X..E|
|00002a90| 78 65 63 43 6d 64 28 64 | 29 3b 0a 58 7d 0a 58 0a |xecCmd(d|);.X}.X.|
|00002aa0| 58 2f 2a 20 52 65 61 64 | 20 61 20 70 6f 73 69 74 |X/* Read| a posit|
|00002ab0| 69 76 65 20 69 6e 74 65 | 67 65 72 20 66 72 6f 6d |ive inte|ger from|
|00002ac0| 20 43 50 2e 20 20 49 74 | 20 6d 75 73 74 20 62 65 | CP. It| must be|
|00002ad0| 20 69 6e 20 62 61 73 65 | 20 42 41 53 45 2c 20 61 | in base| BASE, a|
|00002ae0| 6e 64 0a 58 20 20 20 63 | 6f 6d 70 6c 61 69 6e 73 |nd.X c|omplains|
|00002af0| 20 69 66 20 69 74 20 69 | 73 6e 27 74 2e 20 20 49 | if it i|sn't. I|
|00002b00| 66 20 61 6c 6c 69 6e 74 | 73 20 69 73 20 6e 6f 6e |f allint|s is non|
|00002b10| 7a 65 72 6f 2c 20 61 6c | 6c 20 74 68 65 20 63 68 |zero, al|l the ch|
|00002b20| 61 72 61 63 74 65 72 73 | 0a 58 20 20 20 69 6e 20 |aracters|.X in |
|00002b30| 74 68 65 20 73 74 72 69 | 6e 67 20 6d 75 73 74 20 |the stri|ng must |
|00002b40| 62 65 20 69 6e 74 65 67 | 65 72 73 20 6f 72 20 77 |be integ|ers or w|
|00002b50| 65 20 72 65 74 75 72 6e | 20 2d 31 3b 20 6f 74 68 |e return| -1; oth|
|00002b60| 65 72 77 69 73 65 20 77 | 65 20 73 74 6f 70 0a 58 |erwise w|e stop.X|
|00002b70| 20 20 20 72 65 61 64 69 | 6e 67 20 61 74 20 74 68 | readi|ng at th|
|00002b80| 65 20 66 69 72 73 74 20 | 6e 6f 6e 64 69 67 69 74 |e first |nondigit|
|00002b90| 2e 20 2a 2f 0a 58 0a 69 | 6e 74 0a 63 68 72 5f 74 |. */.X.i|nt.chr_t|
|00002ba0| 6f 5f 69 6e 74 28 63 70 | 2c 20 62 61 73 65 2c 20 |o_int(cp|, base, |
|00002bb0| 61 6c 6c 69 6e 74 73 2c | 20 72 65 73 75 6c 74 29 |allints,| result)|
|00002bc0| 0a 72 65 67 69 73 74 65 | 72 20 63 68 61 72 09 2a |.registe|r char.*|
|00002bd0| 63 70 3b 0a 72 65 67 69 | 73 74 65 72 20 69 6e 74 |cp;.regi|ster int|
|00002be0| 09 2a 72 65 73 75 6c 74 | 3b 0a 58 7b 0a 58 09 72 |.*result|;.X{.X.r|
|00002bf0| 65 67 69 73 74 65 72 20 | 69 6e 74 09 63 3b 0a 58 |egister |int.c;.X|
|00002c00| 09 69 6e 74 09 76 61 6c | 75 65 20 3d 20 30 2c 0a |.int.val|ue = 0,.|
|00002c10| 58 09 09 73 69 67 6e 3b | 0a 58 0a 58 09 69 66 20 |X..sign;|.X.X.if |
|00002c20| 28 28 63 20 3d 20 2a 63 | 70 29 20 3d 3d 20 27 2d |((c = *c|p) == '-|
|00002c30| 27 29 20 7b 0a 58 09 09 | 73 69 67 6e 20 3d 20 2d |') {.X..|sign = -|
|00002c40| 31 3b 0a 58 09 09 63 70 | 20 2b 3d 20 31 3b 0a 58 |1;.X..cp| += 1;.X|
|00002c50| 09 7d 20 65 6c 73 65 0a | 58 09 09 73 69 67 6e 20 |.} else.|X..sign |
|00002c60| 3d 20 31 3b 0a 58 09 77 | 68 69 6c 65 20 28 63 20 |= 1;.X.w|hile (c |
|00002c70| 3d 20 2a 63 70 2b 2b 29 | 20 7b 0a 58 09 09 69 66 |= *cp++)| {.X..if|
|00002c80| 20 28 21 69 73 64 69 67 | 69 74 28 63 29 29 20 7b | (!isdig|it(c)) {|
|00002c90| 0a 58 09 09 09 69 66 20 | 28 61 6c 6c 69 6e 74 73 |.X...if |(allints|
|00002ca0| 20 3d 3d 20 59 45 53 29 | 0a 58 09 09 09 09 72 65 | == YES)|.X....re|
|00002cb0| 74 75 72 6e 20 49 4e 54 | 5f 42 41 44 3b 0a 58 09 |turn INT|_BAD;.X.|
|00002cc0| 09 09 62 72 65 61 6b 3b | 0a 58 09 09 7d 0a 58 09 |..break;|.X..}.X.|
|00002cd0| 09 63 20 3d 20 63 20 2d | 20 27 30 27 3b 0a 58 09 |.c = c -| '0';.X.|
|00002ce0| 09 69 66 20 28 63 20 3e | 3d 20 62 61 73 65 29 0a |.if (c >|= base).|
|00002cf0| 58 09 09 09 63 6f 6d 70 | 6c 61 69 6e 28 22 59 6f |X...comp|lain("Yo|
|00002d00| 75 20 6d 75 73 74 20 73 | 70 65 63 69 66 79 20 69 |u must s|pecify i|
|00002d10| 6e 20 62 61 73 65 20 25 | 64 2e 22 2c 20 62 61 73 |n base %|d.", bas|
|00002d20| 65 29 3b 0a 58 09 09 76 | 61 6c 75 65 20 3d 20 76 |e);.X..v|alue = v|
|00002d30| 61 6c 75 65 20 2a 20 62 | 61 73 65 20 2b 20 63 3b |alue * b|ase + c;|
|00002d40| 0a 58 09 7d 0a 58 09 2a | 72 65 73 75 6c 74 20 3d |.X.}.X.*|result =|
|00002d50| 20 76 61 6c 75 65 20 2a | 20 73 69 67 6e 3b 0a 58 | value *| sign;.X|
|00002d60| 09 72 65 74 75 72 6e 20 | 49 4e 54 5f 4f 4b 41 59 |.return |INT_OKAY|
|00002d70| 3b 0a 58 7d 0a 58 0a 69 | 6e 74 0a 61 73 6b 5f 69 |;.X}.X.i|nt.ask_i|
|00002d80| 6e 74 28 70 72 6f 6d 70 | 74 2c 20 62 61 73 65 29 |nt(promp|t, base)|
|00002d90| 0a 63 68 61 72 09 2a 70 | 72 6f 6d 70 74 3b 0a 69 |.char.*p|rompt;.i|
|00002da0| 6e 74 09 62 61 73 65 3b | 0a 58 7b 0a 58 09 63 68 |nt.base;|.X{.X.ch|
|00002db0| 61 72 09 2a 76 61 6c 20 | 3d 20 61 73 6b 28 28 63 |ar.*val |= ask((c|
|00002dc0| 68 61 72 20 2a 29 20 30 | 2c 20 70 72 6f 6d 70 74 |har *) 0|, prompt|
|00002dd0| 29 3b 0a 58 09 69 6e 74 | 09 76 61 6c 75 65 3b 0a |);.X.int|.value;.|
|00002de0| 58 0a 58 09 69 66 20 28 | 63 68 72 5f 74 6f 5f 69 |X.X.if (|chr_to_i|
|00002df0| 6e 74 28 76 61 6c 2c 20 | 62 61 73 65 2c 20 59 45 |nt(val, |base, YE|
|00002e00| 53 2c 20 26 76 61 6c 75 | 65 29 20 3d 3d 20 49 4e |S, &valu|e) == IN|
|00002e10| 54 5f 42 41 44 29 0a 58 | 09 09 63 6f 6d 70 6c 61 |T_BAD).X|..compla|
|00002e20| 69 6e 28 22 54 68 61 74 | 27 73 20 6e 6f 74 20 61 |in("That|'s not a|
|00002e30| 20 6e 75 6d 62 65 72 21 | 22 29 3b 0a 58 09 72 65 | number!|");.X.re|
|00002e40| 74 75 72 6e 20 76 61 6c | 75 65 3b 0a 58 7d 0a 58 |turn val|ue;.X}.X|
|00002e50| 0a 70 72 69 76 61 74 65 | 20 76 6f 69 64 0a 76 70 |.private| void.vp|
|00002e60| 72 5f 61 75 78 28 76 70 | 2c 20 62 75 66 29 0a 72 |r_aux(vp|, buf).r|
|00002e70| 65 67 69 73 74 65 72 20 | 73 74 72 75 63 74 20 76 |egister |struct v|
|00002e80| 61 72 69 61 62 6c 65 09 | 2a 76 70 3b 0a 63 68 61 |ariable.|*vp;.cha|
|00002e90| 72 09 2a 62 75 66 3b 0a | 58 7b 0a 58 09 73 77 69 |r.*buf;.|X{.X.swi|
|00002ea0| 74 63 68 20 28 76 70 2d | 3e 76 5f 66 6c 61 67 73 |tch (vp-|>v_flags|
|00002eb0| 20 26 20 56 5f 54 59 50 | 45 4d 41 53 4b 29 20 7b | & V_TYP|EMASK) {|
|00002ec0| 0a 58 09 63 61 73 65 20 | 56 5f 42 41 53 45 31 30 |.X.case |V_BASE10|
|00002ed0| 3a 0a 58 09 09 73 70 72 | 69 6e 74 66 28 62 75 66 |:.X..spr|intf(buf|
|00002ee0| 2c 20 22 25 64 22 2c 20 | 2a 28 76 70 2d 3e 76 5f |, "%d", |*(vp->v_|
|00002ef0| 76 61 6c 75 65 29 29 3b | 0a 58 09 09 62 72 65 61 |value));|.X..brea|
|00002f00| 6b 3b 0a 58 0a 58 09 63 | 61 73 65 20 56 5f 42 41 |k;.X.X.c|ase V_BA|
|00002f10| 53 45 38 3a 0a 58 09 09 | 73 70 72 69 6e 74 66 28 |SE8:.X..|sprintf(|
|00002f20| 62 75 66 2c 20 22 25 6f | 22 2c 20 2a 28 76 70 2d |buf, "%o|", *(vp-|
|00002f30| 3e 76 5f 76 61 6c 75 65 | 29 29 3b 0a 58 09 09 62 |>v_value|));.X..b|
|00002f40| 72 65 61 6b 3b 0a 58 0a | 58 09 63 61 73 65 20 56 |reak;.X.|X.case V|
|00002f50| 5f 42 4f 4f 4c 3a 0a 58 | 09 09 73 70 72 69 6e 74 |_BOOL:.X|..sprint|
|00002f60| 66 28 62 75 66 2c 20 28 | 2a 28 76 70 2d 3e 76 5f |f(buf, (|*(vp->v_|
|00002f70| 76 61 6c 75 65 29 29 20 | 3f 20 22 6f 6e 22 20 3a |value)) |? "on" :|
|00002f80| 20 22 6f 66 66 22 29 3b | 0a 58 09 09 62 72 65 61 | "off");|.X..brea|
|00002f90| 6b 3b 0a 58 0a 58 09 63 | 61 73 65 20 56 5f 53 54 |k;.X.X.c|ase V_ST|
|00002fa0| 52 49 4e 47 3a 0a 58 09 | 63 61 73 65 20 56 5f 46 |RING:.X.|case V_F|
|00002fb0| 49 4c 45 4e 41 4d 45 3a | 0a 58 09 09 73 70 72 69 |ILENAME:|.X..spri|
|00002fc0| 6e 74 66 28 62 75 66 2c | 20 22 25 73 22 2c 20 28 |ntf(buf,| "%s", (|
|00002fd0| 63 68 61 72 20 2a 29 20 | 76 70 2d 3e 76 5f 76 61 |char *) |vp->v_va|
|00002fe0| 6c 75 65 29 3b 0a 58 09 | 09 62 72 65 61 6b 3b 0a |lue);.X.|.break;.|
|00002ff0| 58 0a 58 09 63 61 73 65 | 20 56 5f 43 48 41 52 3a |X.X.case| V_CHAR:|
|00003000| 0a 58 09 09 73 70 72 69 | 6e 74 66 28 62 75 66 2c |.X..spri|ntf(buf,|
|00003010| 20 22 25 70 22 2c 20 2a | 28 76 70 2d 3e 76 5f 76 | "%p", *|(vp->v_v|
|00003020| 61 6c 75 65 29 29 3b 0a | 58 09 09 62 72 65 61 6b |alue));.|X..break|
|00003030| 3b 0a 58 09 7d 0a 58 7d | 0a 58 0a 76 6f 69 64 0a |;.X.}.X}|.X.void.|
|00003040| 50 72 56 61 72 28 29 0a | 58 7b 0a 58 09 73 74 72 |PrVar().|X{.X.str|
|00003050| 75 63 74 20 76 61 72 69 | 61 62 6c 65 09 2a 76 70 |uct vari|able.*vp|
|00003060| 3b 0a 58 09 63 68 61 72 | 09 70 72 62 75 66 5b 32 |;.X.char|.prbuf[2|
|00003070| 35 36 5d 3b 0a 58 0a 58 | 09 69 66 20 28 28 76 70 |56];.X.X|.if ((vp|
|00003080| 20 3d 20 28 73 74 72 75 | 63 74 20 76 61 72 69 61 | = (stru|ct varia|
|00003090| 62 6c 65 20 2a 29 20 66 | 69 6e 64 76 61 72 28 50 |ble *) f|indvar(P|
|000030a0| 72 6f 63 46 6d 74 29 29 | 20 3d 3d 20 30 29 0a 58 |rocFmt))| == 0).X|
|000030b0| 09 09 72 65 74 75 72 6e | 3b 0a 58 09 76 70 72 5f |..return|;.X.vpr_|
|000030c0| 61 75 78 28 76 70 2c 20 | 70 72 62 75 66 29 3b 0a |aux(vp, |prbuf);.|
|000030d0| 58 09 73 5f 6d 65 73 73 | 28 22 3a 20 25 66 20 25 |X.s_mess|(": %f %|
|000030e0| 73 20 3d 3e 20 25 73 22 | 2c 20 76 70 2d 3e 4e 61 |s => %s"|, vp->Na|
|000030f0| 6d 65 2c 20 70 72 62 75 | 66 29 3b 0a 58 7d 0a 58 |me, prbu|f);.X}.X|
|00003100| 0a 76 6f 69 64 0a 53 65 | 74 56 61 72 28 29 0a 58 |.void.Se|tVar().X|
|00003110| 7b 0a 58 09 73 74 72 75 | 63 74 20 76 61 72 69 61 |{.X.stru|ct varia|
|00003120| 62 6c 65 09 2a 76 70 3b | 0a 58 09 63 68 61 72 09 |ble.*vp;|.X.char.|
|00003130| 2a 70 72 6f 6d 70 74 3b | 0a 58 0a 58 09 69 66 20 |*prompt;|.X.X.if |
|00003140| 28 28 76 70 20 3d 20 28 | 73 74 72 75 63 74 20 76 |((vp = (|struct v|
|00003150| 61 72 69 61 62 6c 65 20 | 2a 29 20 66 69 6e 64 76 |ariable |*) findv|
|00003160| 61 72 28 50 72 6f 63 46 | 6d 74 29 29 20 3d 3d 20 |ar(ProcF|mt)) == |
|00003170| 30 29 0a 58 09 09 72 65 | 74 75 72 6e 3b 0a 58 09 |0).X..re|turn;.X.|
|00003180| 70 72 6f 6d 70 74 20 3d | 20 73 70 72 69 6e 74 28 |prompt =| sprint(|
|00003190| 22 3a 20 25 66 20 25 73 | 20 22 2c 20 76 70 2d 3e |": %f %s| ", vp->|
|000031a0| 4e 61 6d 65 29 3b 0a 58 | 0a 58 09 73 77 69 74 63 |Name);.X|.X.switc|
|000031b0| 68 20 28 76 70 2d 3e 76 | 5f 66 6c 61 67 73 20 26 |h (vp->v|_flags &|
|000031c0| 20 56 5f 54 59 50 45 4d | 41 53 4b 29 20 7b 0a 58 | V_TYPEM|ASK) {.X|
|000031d0| 09 63 61 73 65 20 56 5f | 42 41 53 45 31 30 3a 0a |.case V_|BASE10:.|
|000031e0| 58 09 63 61 73 65 20 56 | 5f 42 41 53 45 38 3a 0a |X.case V|_BASE8:.|
|000031f0| 58 09 20 20 20 20 7b 0a | 58 09 20 20 20 20 09 69 |X. {.|X. .i|
|00003200| 6e 74 09 76 61 6c 75 65 | 3b 0a 58 0a 58 09 09 76 |nt.value|;.X.X..v|
|00003210| 61 6c 75 65 20 3d 20 61 | 73 6b 5f 69 6e 74 28 70 |alue = a|sk_int(p|
|00003220| 72 6f 6d 70 74 2c 20 28 | 28 76 70 2d 3e 76 5f 66 |rompt, (|(vp->v_f|
|00003230| 6c 61 67 73 20 26 20 56 | 5f 54 59 50 45 4d 41 53 |lags & V|_TYPEMAS|
|00003240| 4b 29 20 3d 3d 20 56 5f | 42 41 53 45 31 30 29 0a |K) == V_|BASE10).|
|00003250| 58 09 09 09 09 09 20 20 | 3f 20 31 30 20 3a 20 38 |X..... |? 10 : 8|
|00003260| 29 3b 0a 58 09 09 2a 28 | 76 70 2d 3e 76 5f 76 61 |);.X..*(|vp->v_va|
|00003270| 6c 75 65 29 20 3d 20 76 | 61 6c 75 65 3b 0a 58 09 |lue) = v|alue;.X.|
|00003280| 20 20 20 20 09 62 72 65 | 61 6b 3b 0a 58 09 20 20 | .bre|ak;.X. |
|00003290| 20 20 7d 0a 58 0a 58 09 | 63 61 73 65 20 56 5f 42 | }.X.X.|case V_B|
|000032a0| 4f 4f 4c 3a 0a 58 09 20 | 20 20 20 7b 0a 58 09 20 |OOL:.X. | {.X. |
|000032b0| 20 20 20 09 63 68 61 72 | 09 2a 64 65 66 20 3d 20 | .char|.*def = |
|000032c0| 2a 28 76 70 2d 3e 76 5f | 76 61 6c 75 65 29 20 3f |*(vp->v_|value) ?|
|000032d0| 20 22 6f 66 66 22 20 3a | 20 22 6f 6e 22 2c 0a 58 | "off" :| "on",.X|
|000032e0| 09 20 20 20 20 09 09 2a | 6f 6e 5f 6f 66 66 3b 0a |. ..*|on_off;.|
|000032f0| 58 09 20 20 20 20 09 69 | 6e 74 09 76 61 6c 75 65 |X. .i|nt.value|
|00003300| 3b 0a 58 0a 58 09 20 20 | 20 20 09 6f 6e 5f 6f 66 |;.X.X. | .on_of|
|00003310| 66 20 3d 20 61 73 6b 28 | 64 65 66 2c 20 70 72 6f |f = ask(|def, pro|
|00003320| 6d 70 74 29 3b 0a 58 09 | 09 69 66 20 28 63 61 73 |mpt);.X.|.if (cas|
|00003330| 65 63 6d 70 28 6f 6e 5f | 6f 66 66 2c 20 22 6f 6e |ecmp(on_|off, "on|
|00003340| 22 29 20 3d 3d 20 30 29 | 0a 58 09 09 09 76 61 6c |") == 0)|.X...val|
|00003350| 75 65 20 3d 20 4f 4e 3b | 0a 58 09 20 20 20 20 09 |ue = ON;|.X. .|
|00003360| 65 6c 73 65 20 69 66 20 | 28 63 61 73 65 63 6d 70 |else if |(casecmp|
|00003370| 28 6f 6e 5f 6f 66 66 2c | 20 22 6f 66 66 22 29 20 |(on_off,| "off") |
|00003380| 3d 3d 20 30 29 0a 58 09 | 20 20 20 20 09 09 76 61 |== 0).X.| ..va|
|00003390| 6c 75 65 20 3d 20 4f 46 | 46 3b 0a 58 09 20 20 20 |lue = OF|F;.X. |
|000033a0| 20 09 65 6c 73 65 0a 58 | 09 20 20 20 20 09 09 63 | .else.X|. ..c|
|000033b0| 6f 6d 70 6c 61 69 6e 28 | 22 42 6f 6f 6c 65 61 6e |omplain(|"Boolean|
|000033c0| 20 76 61 72 69 61 62 6c | 65 73 20 6d 75 73 74 20 | variabl|es must |
|000033d0| 62 65 20 4f 4e 20 6f 72 | 20 4f 46 46 2e 22 29 3b |be ON or| OFF.");|
|000033e0| 0a 58 09 20 20 20 20 09 | 2a 28 76 70 2d 3e 76 5f |.X. .|*(vp->v_|
|000033f0| 76 61 6c 75 65 29 20 3d | 20 76 61 6c 75 65 3b 0a |value) =| value;.|
|00003400| 58 23 69 66 64 65 66 20 | 4d 41 43 0a 58 09 09 4d |X#ifdef |MAC.X..M|
|00003410| 61 72 6b 56 61 72 28 76 | 70 2c 2d 31 2c 30 29 3b |arkVar(v|p,-1,0);|
|00003420| 09 2f 2a 20 6d 61 72 6b | 20 74 68 65 20 6d 65 6e |./* mark| the men|
|00003430| 75 20 69 74 65 6d 20 2a | 2f 0a 58 23 65 6e 64 69 |u item *|/.X#endi|
|00003440| 66 0a 58 09 20 20 20 20 | 09 73 5f 6d 65 73 73 28 |f.X. |.s_mess(|
|00003450| 22 25 73 25 73 22 2c 20 | 70 72 6f 6d 70 74 2c 20 |"%s%s", |prompt, |
|00003460| 76 61 6c 75 65 20 3f 20 | 22 6f 6e 22 20 3a 20 22 |value ? |"on" : "|
|00003470| 6f 66 66 22 29 3b 0a 58 | 09 20 20 20 20 09 62 72 |off");.X|. .br|
|00003480| 65 61 6b 3b 0a 58 09 20 | 20 20 20 7d 0a 58 0a 58 |eak;.X. | }.X.X|
|00003490| 09 63 61 73 65 20 56 5f | 46 49 4c 45 4e 41 4d 45 |.case V_|FILENAME|
|000034a0| 3a 0a 58 09 20 20 20 20 | 7b 0a 58 09 09 63 68 61 |:.X. |{.X..cha|
|000034b0| 72 09 66 62 75 66 5b 46 | 49 4c 45 53 49 5a 45 5d |r.fbuf[F|ILESIZE]|
|000034c0| 3b 0a 58 0a 58 09 20 20 | 20 20 09 73 70 72 69 6e |;.X.X. | .sprin|
|000034d0| 74 66 28 26 70 72 6f 6d | 70 74 5b 73 74 72 6c 65 |tf(&prom|pt[strle|
|000034e0| 6e 28 70 72 6f 6d 70 74 | 29 5d 2c 20 22 28 64 65 |n(prompt|)], "(de|
|000034f0| 66 61 75 6c 74 20 25 73 | 29 20 22 2c 20 76 70 2d |fault %s|) ", vp-|
|00003500| 3e 76 5f 76 61 6c 75 65 | 29 3b 0a 58 09 20 20 20 |>v_value|);.X. |
|00003510| 20 09 28 76 6f 69 64 29 | 20 61 73 6b 5f 66 69 6c | .(void)| ask_fil|
|00003520| 65 28 70 72 6f 6d 70 74 | 2c 20 28 63 68 61 72 20 |e(prompt|, (char |
|00003530| 2a 29 20 76 70 2d 3e 76 | 5f 76 61 6c 75 65 2c 20 |*) vp->v|_value, |
|00003540| 66 62 75 66 29 3b 0a 58 | 09 09 73 74 72 63 70 79 |fbuf);.X|..strcpy|
|00003550| 28 28 63 68 61 72 20 2a | 29 20 76 70 2d 3e 76 5f |((char *|) vp->v_|
|00003560| 76 61 6c 75 65 2c 20 66 | 62 75 66 29 3b 0a 58 09 |value, f|buf);.X.|
|00003570| 20 20 20 20 09 62 72 65 | 61 6b 3b 0a 58 09 20 20 | .bre|ak;.X. |
|00003580| 20 20 7d 0a 58 0a 58 09 | 63 61 73 65 20 56 5f 53 | }.X.X.|case V_S|
|00003590| 54 52 49 4e 47 3a 0a 58 | 09 20 20 20 20 7b 0a 58 |TRING:.X|. {.X|
|000035a0| 09 09 63 68 61 72 09 2a | 73 74 72 3b 0a 58 0a 58 |..char.*|str;.X.X|
|000035b0| 09 20 20 20 20 09 2f 2a | 20 44 6f 5f 61 73 6b 28 |. ./*| Do_ask(|
|000035c0| 29 20 73 6f 20 79 6f 75 | 20 63 61 6e 20 73 65 74 |) so you| can set|
|000035d0| 20 73 74 72 69 6e 67 20 | 74 6f 20 22 22 20 69 66 | string |to "" if|
|000035e0| 20 79 6f 75 20 73 6f 20 | 64 65 73 69 72 65 2e 20 | you so |desire. |
|000035f0| 2a 2f 0a 58 09 20 20 20 | 20 09 73 74 72 20 3d 20 |*/.X. | .str = |
|00003600| 64 6f 5f 61 73 6b 28 22 | 5c 72 5c 6e 22 2c 20 28 |do_ask("|\r\n", (|
|00003610| 69 6e 74 20 28 2a 29 28 | 29 29 20 30 2c 20 28 63 |int (*)(|)) 0, (c|
|00003620| 68 61 72 20 2a 29 20 76 | 70 2d 3e 76 5f 76 61 6c |har *) v|p->v_val|
|00003630| 75 65 2c 20 70 72 6f 6d | 70 74 29 3b 0a 58 09 20 |ue, prom|pt);.X. |
|00003640| 20 20 20 09 69 66 20 28 | 73 74 72 20 3d 3d 20 30 | .if (|str == 0|
|00003650| 29 0a 58 09 09 09 73 74 | 72 20 3d 20 4e 75 6c 6c |).X...st|r = Null|
|00003660| 53 74 72 3b 0a 58 09 20 | 20 20 20 09 73 74 72 63 |Str;.X. | .strc|
|00003670| 70 79 28 28 63 68 61 72 | 20 2a 29 20 76 70 2d 3e |py((char| *) vp->|
|00003680| 76 5f 76 61 6c 75 65 2c | 20 73 74 72 29 3b 0a 58 |v_value,| str);.X|
|00003690| 09 09 2f 2a 20 2e 2e 2e | 20 61 6e 64 20 68 6f 70 |../* ...| and hop|
|000036a0| 65 20 74 68 65 72 65 20 | 69 73 20 65 6e 6f 75 67 |e there |is enoug|
|000036b0| 68 20 72 6f 6f 6d 2e 20 | 2a 2f 0a 58 09 20 20 20 |h room. |*/.X. |
|000036c0| 20 09 62 72 65 61 6b 3b | 0a 58 09 20 20 20 20 7d | .break;|.X. }|
|000036d0| 0a 58 09 63 61 73 65 20 | 56 5f 43 48 41 52 3a 0a |.X.case |V_CHAR:.|
|000036e0| 58 09 09 66 5f 6d 65 73 | 73 28 70 72 6f 6d 70 74 |X..f_mes|s(prompt|
|000036f0| 29 3b 0a 58 09 20 20 20 | 20 09 2a 28 76 70 2d 3e |);.X. | .*(vp->|
|00003700| 76 5f 76 61 6c 75 65 29 | 20 3d 20 61 64 64 67 65 |v_value)| = addge|
|00003710| 74 63 28 29 3b 0a 58 09 | 09 62 72 65 61 6b 3b 09 |tc();.X.|.break;.|
|00003720| 20 20 20 20 09 0a 58 0a | 58 09 7d 0a 58 09 69 66 | ..X.|X.}.X.if|
|00003730| 20 28 76 70 2d 3e 76 5f | 66 6c 61 67 73 20 26 20 | (vp->v_|flags & |
|00003740| 56 5f 4d 4f 44 45 4c 49 | 4e 45 29 0a 58 09 09 55 |V_MODELI|NE).X..U|
|00003750| 70 64 4d 6f 64 4c 69 6e | 65 20 3d 20 59 45 53 3b |pdModLin|e = YES;|
|00003760| 0a 58 09 69 66 20 28 76 | 70 2d 3e 76 5f 66 6c 61 |.X.if (v|p->v_fla|
|00003770| 67 73 20 26 20 56 5f 43 | 4c 52 53 43 52 45 45 4e |gs & V_C|LRSCREEN|
|00003780| 29 20 7b 0a 58 23 69 66 | 64 65 66 20 49 42 4d 50 |) {.X#if|def IBMP|
|00003790| 43 0a 58 09 09 73 65 74 | 63 6f 6c 6f 72 28 46 67 |C.X..set|color(Fg|
|000037a0| 63 6f 6c 6f 72 2c 20 42 | 67 63 6f 6c 6f 72 29 3b |color, B|gcolor);|
|000037b0| 0a 58 23 65 6e 64 69 66 | 20 2f 2a 20 49 42 4d 50 |.X#endif| /* IBMP|
|000037c0| 43 20 2a 2f 0a 58 09 09 | 43 6c 41 6e 64 52 65 64 |C */.X..|ClAndRed|
|000037d0| 72 61 77 28 29 3b 0a 58 | 09 7d 0a 58 09 69 66 20 |raw();.X|.}.X.if |
|000037e0| 28 76 70 2d 3e 76 5f 66 | 6c 61 67 73 20 26 20 56 |(vp->v_f|lags & V|
|000037f0| 5f 54 54 59 5f 52 45 53 | 45 54 29 0a 58 09 09 74 |_TTY_RES|ET).X..t|
|00003800| 74 79 5f 72 65 73 65 74 | 28 29 3b 0a 58 7d 0a 58 |ty_reset|();.X}.X|
|00003810| 09 09 09 0a 58 2f 2a 20 | 43 6f 6d 6d 61 6e 64 20 |....X/* |Command |
|00003820| 63 6f 6d 70 6c 65 74 69 | 6f 6e 20 2d 20 70 6f 73 |completi|on - pos|
|00003830| 73 69 62 6c 65 20 69 73 | 20 61 6e 20 61 72 72 61 |sible is| an arra|
|00003840| 79 20 6f 66 20 73 74 72 | 69 6e 67 73 2c 20 70 72 |y of str|ings, pr|
|00003850| 6f 6d 70 74 20 69 73 0a | 58 20 20 20 74 68 65 20 |ompt is.|X the |
|00003860| 70 72 6f 6d 70 74 20 74 | 6f 20 75 73 65 2c 20 61 |prompt t|o use, a|
|00003870| 6e 64 20 66 6c 61 67 73 | 20 61 72 65 20 2e 2e 2e |nd flags| are ...|
|00003880| 20 77 65 6c 6c 20 72 65 | 61 64 20 6a 6f 76 65 2e | well re|ad jove.|
|00003890| 68 2e 0a 58 0a 58 20 20 | 20 49 66 20 66 6c 61 67 |h..X.X | If flag|
|000038a0| 73 20 61 72 65 20 52 45 | 54 5f 53 54 41 54 45 2c |s are RE|T_STATE,|
|000038b0| 20 61 6e 64 20 74 68 65 | 20 75 73 65 72 20 68 69 | and the| user hi|
|000038c0| 74 73 20 3c 72 65 74 75 | 72 6e 3e 20 77 68 61 74 |ts <retu|rn> what|
|000038d0| 20 74 68 65 79 20 74 79 | 70 65 64 0a 58 20 20 20 | they ty|ped.X |
|000038e0| 73 6f 20 66 61 72 20 69 | 73 20 69 6e 20 74 68 65 |so far i|s in the|
|000038f0| 20 4d 69 6e 69 62 75 66 | 20 73 74 72 69 6e 67 2e | Minibuf| string.|
|00003900| 20 2a 2f 0a 58 0a 70 72 | 69 76 61 74 65 20 63 68 | */.X.pr|ivate ch|
|00003910| 61 72 09 2a 2a 50 6f 73 | 73 69 62 6c 65 3b 0a 70 |ar.**Pos|sible;.p|
|00003920| 72 69 76 61 74 65 20 69 | 6e 74 09 63 6f 6d 70 5f |rivate i|nt.comp_|
|00003930| 76 61 6c 75 65 2c 0a 58 | 09 09 63 6f 6d 70 5f 66 |value,.X|..comp_f|
|00003940| 6c 61 67 73 3b 0a 58 0a | 69 6e 74 0a 61 75 78 5f |lags;.X.|int.aux_|
|00003950| 63 6f 6d 70 6c 65 74 65 | 28 63 29 0a 58 7b 0a 58 |complete|(c).X{.X|
|00003960| 09 69 6e 74 09 63 6f 6d | 6d 61 6e 64 2c 0a 58 09 |.int.com|mand,.X.|
|00003970| 09 6c 65 6e 67 74 68 2c | 0a 58 09 09 69 3b 0a 58 |.length,|.X..i;.X|
|00003980| 0a 58 09 69 66 20 28 63 | 6f 6d 70 5f 66 6c 61 67 |.X.if (c|omp_flag|
|00003990| 73 20 26 20 43 41 53 45 | 49 4e 44 29 20 7b 0a 58 |s & CASE|IND) {.X|
|000039a0| 09 09 63 68 61 72 09 2a | 6c 70 3b 0a 58 0a 58 09 |..char.*|lp;.X.X.|
|000039b0| 09 66 6f 72 20 28 6c 70 | 20 3d 20 6c 69 6e 65 62 |.for (lp| = lineb|
|000039c0| 75 66 3b 20 2a 6c 70 20 | 21 3d 20 27 5c 30 27 3b |uf; *lp |!= '\0';|
|000039d0| 20 6c 70 2b 2b 29 0a 58 | 23 69 66 20 28 64 65 66 | lp++).X|#if (def|
|000039e0| 69 6e 65 64 28 49 42 4d | 50 43 29 20 7c 7c 20 64 |ined(IBM|PC) || d|
|000039f0| 65 66 69 6e 65 64 28 4d | 41 43 29 29 0a 58 09 09 |efined(M|AC)).X..|
|00003a00| 09 6c 6f 77 65 72 28 6c | 70 29 3b 0a 58 23 65 6c |.lower(l|p);.X#el|
|00003a10| 73 65 09 09 09 0a 58 09 | 09 09 69 66 20 28 69 73 |se....X.|..if (is|
|00003a20| 75 70 70 65 72 28 2a 6c | 70 29 29 0a 58 09 09 09 |upper(*l|p)).X...|
|00003a30| 09 2a 6c 70 20 3d 20 74 | 6f 6c 6f 77 65 72 28 2a |.*lp = t|olower(*|
|00003a40| 6c 70 29 3b 0a 58 23 65 | 6e 64 69 66 0a 58 09 7d |lp);.X#e|ndif.X.}|
|00003a50| 0a 58 09 73 77 69 74 63 | 68 20 28 63 29 20 7b 0a |.X.switc|h (c) {.|
|00003a60| 58 09 63 61 73 65 20 45 | 4f 46 3a 0a 58 09 09 63 |X.case E|OF:.X..c|
|00003a70| 6f 6d 70 5f 76 61 6c 75 | 65 20 3d 20 2d 31 3b 0a |omp_valu|e = -1;.|
|00003a80| 58 09 09 72 65 74 75 72 | 6e 20 30 3b 0a 58 0a 58 |X..retur|n 0;.X.X|
|00003a90| 09 63 61 73 65 20 27 5c | 72 27 3a 0a 58 09 63 61 |.case '\|r':.X.ca|
|00003aa0| 73 65 20 27 5c 6e 27 3a | 0a 58 09 09 63 6f 6d 6d |se '\n':|.X..comm|
|00003ab0| 61 6e 64 20 3d 20 6d 61 | 74 63 68 28 50 6f 73 73 |and = ma|tch(Poss|
|00003ac0| 69 62 6c 65 2c 20 6c 69 | 6e 65 62 75 66 29 3b 0a |ible, li|nebuf);.|
|00003ad0| 58 09 09 69 66 20 28 63 | 6f 6d 6d 61 6e 64 20 3e |X..if (c|ommand >|
|00003ae0| 3d 20 30 29 20 7b 0a 58 | 09 09 09 63 6f 6d 70 5f |= 0) {.X|...comp_|
|00003af0| 76 61 6c 75 65 20 3d 20 | 63 6f 6d 6d 61 6e 64 3b |value = |command;|
|00003b00| 0a 58 09 09 09 72 65 74 | 75 72 6e 20 30 3b 09 2f |.X...ret|urn 0;./|
|00003b10| 2a 20 74 65 6c 6c 73 20 | 61 73 6b 20 74 6f 20 73 |* tells |ask to s|
|00003b20| 74 6f 70 20 2a 2f 0a 58 | 09 09 7d 0a 58 09 09 69 |top */.X|..}.X..i|
|00003b30| 66 20 28 65 6f 6c 70 28 | 29 20 26 26 20 62 6f 6c |f (eolp(|) && bol|
|00003b40| 70 28 29 29 20 7b 0a 58 | 09 09 09 63 6f 6d 70 5f |p()) {.X|...comp_|
|00003b50| 76 61 6c 75 65 20 3d 20 | 4e 55 4c 4c 53 54 52 49 |value = |NULLSTRI|
|00003b60| 4e 47 3b 0a 58 09 09 09 | 72 65 74 75 72 6e 20 30 |NG;.X...|return 0|
|00003b70| 3b 0a 58 09 09 7d 0a 58 | 09 09 69 66 20 28 63 6f |;.X..}.X|..if (co|
|00003b80| 6d 70 5f 66 6c 61 67 73 | 20 26 20 52 45 54 5f 53 |mp_flags| & RET_S|
|00003b90| 54 41 54 45 29 20 7b 0a | 58 09 09 09 63 6f 6d 70 |TATE) {.|X...comp|
|00003ba0| 5f 76 61 6c 75 65 20 3d | 20 63 6f 6d 6d 61 6e 64 |_value =| command|
|00003bb0| 3b 0a 58 09 09 09 72 65 | 74 75 72 6e 20 30 3b 0a |;.X...re|turn 0;.|
|00003bc0| 58 09 09 7d 0a 58 09 09 | 69 66 20 28 49 6e 4a 6f |X..}.X..|if (InJo|
|00003bd0| 76 65 72 63 29 0a 58 09 | 09 09 63 6f 6d 70 6c 61 |verc).X.|..compla|
|00003be0| 69 6e 28 22 5b 5c 22 25 | 73 5c 22 20 75 6e 6b 6e |in("[\"%|s\" unkn|
|00003bf0| 6f 77 6e 5d 22 2c 20 6c | 69 6e 65 62 75 66 29 3b |own]", l|inebuf);|
|00003c00| 0a 58 09 09 72 62 65 6c | 6c 28 29 3b 0a 58 09 09 |.X..rbel|l();.X..|
|00003c10| 62 72 65 61 6b 3b 0a 58 | 0a 58 09 63 61 73 65 20 |break;.X|.X.case |
|00003c20| 27 5c 74 27 3a 0a 58 09 | 63 61 73 65 20 27 20 27 |'\t':.X.|case ' '|
|00003c30| 3a 0a 58 09 20 20 20 20 | 7b 0a 58 09 09 69 6e 74 |:.X. |{.X..int|
|00003c40| 09 6d 69 6e 6d 61 74 63 | 68 20 3d 20 31 30 30 30 |.minmatc|h = 1000|
|00003c50| 2c 0a 58 09 20 20 20 20 | 09 09 6d 61 78 6d 61 74 |,.X. |..maxmat|
|00003c60| 63 68 20 3d 20 30 2c 0a | 58 09 20 20 20 20 09 09 |ch = 0,.|X. ..|
|00003c70| 6e 75 6d 66 6f 75 6e 64 | 20 3d 20 30 2c 0a 58 09 |numfound| = 0,.X.|
|00003c80| 20 20 20 20 09 09 6c 61 | 73 74 6d 61 74 63 68 20 | ..la|stmatch |
|00003c90| 3d 20 2d 31 2c 0a 58 09 | 09 09 6c 65 6e 67 74 68 |= -1,.X.|..length|
|00003ca0| 20 3d 20 73 74 72 6c 65 | 6e 28 6c 69 6e 65 62 75 | = strle|n(linebu|
|00003cb0| 66 29 3b 0a 58 0a 58 09 | 09 66 6f 72 20 28 69 20 |f);.X.X.|.for (i |
|00003cc0| 3d 20 30 3b 20 50 6f 73 | 73 69 62 6c 65 5b 69 5d |= 0; Pos|sible[i]|
|00003cd0| 20 21 3d 20 30 3b 20 69 | 2b 2b 29 20 7b 0a 58 09 | != 0; i|++) {.X.|
|00003ce0| 09 09 69 6e 74 09 74 68 | 69 73 5f 6c 65 6e 3b 0a |..int.th|is_len;.|
|00003cf0| 58 0a 58 09 09 09 74 68 | 69 73 5f 6c 65 6e 20 3d |X.X...th|is_len =|
|00003d00| 20 6e 75 6d 63 6f 6d 70 | 28 50 6f 73 73 69 62 6c | numcomp|(Possibl|
|00003d10| 65 5b 69 5d 2c 20 6c 69 | 6e 65 62 75 66 29 3b 0a |e[i], li|nebuf);.|
|00003d20| 58 09 09 09 6d 61 78 6d | 61 74 63 68 20 3d 20 6d |X...maxm|atch = m|
|00003d30| 61 78 28 6d 61 78 6d 61 | 74 63 68 2c 20 74 68 69 |ax(maxma|tch, thi|
|00003d40| 73 5f 6c 65 6e 29 3b 0a | 58 09 09 09 69 66 20 28 |s_len);.|X...if (|
|00003d50| 74 68 69 73 5f 6c 65 6e | 20 3e 3d 20 6c 65 6e 67 |this_len| >= leng|
|00003d60| 74 68 29 20 7b 0a 58 09 | 09 09 09 69 66 20 28 6e |th) {.X.|...if (n|
|00003d70| 75 6d 66 6f 75 6e 64 29 | 0a 58 09 09 09 09 09 6d |umfound)|.X.....m|
|00003d80| 69 6e 6d 61 74 63 68 20 | 3d 20 6d 69 6e 28 6d 69 |inmatch |= min(mi|
|00003d90| 6e 6d 61 74 63 68 2c 20 | 6e 75 6d 63 6f 6d 70 28 |nmatch, |numcomp(|
|00003da0| 50 6f 73 73 69 62 6c 65 | 5b 6c 61 73 74 6d 61 74 |Possible|[lastmat|
|00003db0| 63 68 5d 2c 20 50 6f 73 | 73 69 62 6c 65 5b 69 5d |ch], Pos|sible[i]|
|00003dc0| 29 29 3b 0a 58 09 09 09 | 09 65 6c 73 65 0a 58 09 |));.X...|.else.X.|
|00003dd0| 09 09 09 09 6d 69 6e 6d | 61 74 63 68 20 3d 20 73 |....minm|atch = s|
|00003de0| 74 72 6c 65 6e 28 50 6f | 73 73 69 62 6c 65 5b 69 |trlen(Po|ssible[i|
|00003df0| 5d 29 3b 0a 58 09 09 09 | 09 6e 75 6d 66 6f 75 6e |]);.X...|.numfoun|
|00003e00| 64 20 2b 3d 20 31 3b 0a | 58 09 09 09 09 6c 61 73 |d += 1;.|X....las|
|00003e10| 74 6d 61 74 63 68 20 3d | 20 69 3b 0a 58 09 09 09 |tmatch =| i;.X...|
|00003e20| 09 69 66 20 28 73 74 72 | 63 6d 70 28 6c 69 6e 65 |.if (str|cmp(line|
|00003e30| 62 75 66 2c 20 50 6f 73 | 73 69 62 6c 65 5b 69 5d |buf, Pos|sible[i]|
|00003e40| 29 20 3d 3d 20 30 29 0a | 58 09 09 09 09 09 62 72 |) == 0).|X.....br|
|00003e50| 65 61 6b 3b 0a 58 09 09 | 09 7d 0a 58 09 09 7d 0a |eak;.X..|.}.X..}.|
|00003e60| 58 0a 58 09 09 69 66 20 | 28 6e 75 6d 66 6f 75 6e |X.X..if |(numfoun|
|00003e70| 64 20 3d 3d 20 30 29 20 | 7b 0a 58 09 09 09 72 62 |d == 0) |{.X...rb|
|00003e80| 65 6c 6c 28 29 3b 0a 58 | 09 09 09 69 66 20 28 49 |ell();.X|...if (I|
|00003e90| 6e 4a 6f 76 65 72 63 29 | 0a 58 09 09 09 09 63 6f |nJoverc)|.X....co|
|00003ea0| 6d 70 6c 61 69 6e 28 22 | 5b 5c 22 25 73 5c 22 20 |mplain("|[\"%s\" |
|00003eb0| 75 6e 6b 6e 6f 77 6e 5d | 22 2c 20 6c 69 6e 65 62 |unknown]|", lineb|
|00003ec0| 75 66 29 3b 0a 58 09 09 | 09 2f 2a 20 49 66 20 77 |uf);.X..|./* If w|
|00003ed0| 65 27 72 65 20 6e 6f 74 | 20 69 6e 20 74 68 65 20 |e're not| in the |
|00003ee0| 2e 6a 6f 76 65 72 63 20 | 74 68 65 6e 0a 58 09 09 |.joverc |then.X..|
|00003ef0| 09 20 20 20 6c 65 74 27 | 73 20 64 6f 20 73 6f 6d |. let'|s do som|
|00003f00| 65 74 68 69 6e 67 20 68 | 65 6c 70 66 75 6c 20 66 |ething h|elpful f|
|00003f10| 6f 72 20 74 68 65 0a 58 | 09 09 09 20 20 20 75 73 |or the.X|... us|
|00003f20| 65 72 2e 20 2a 2f 0a 58 | 09 09 09 69 66 20 28 6d |er. */.X|...if (m|
|00003f30| 61 78 6d 61 74 63 68 20 | 3c 20 6c 65 6e 67 74 68 |axmatch |< length|
|00003f40| 29 20 7b 0a 58 09 09 09 | 09 63 68 61 72 09 2a 63 |) {.X...|.char.*c|
|00003f50| 70 3b 0a 58 0a 58 09 09 | 09 09 63 70 20 3d 20 6c |p;.X.X..|..cp = l|
|00003f60| 69 6e 65 62 75 66 20 2b | 20 6d 61 78 6d 61 74 63 |inebuf +| maxmatc|
|00003f70| 68 3b 0a 58 09 09 09 09 | 2a 63 70 20 3d 20 30 3b |h;.X....|*cp = 0;|
|00003f80| 0a 58 09 09 09 09 45 6f | 6c 28 29 3b 0a 58 09 09 |.X....Eo|l();.X..|
|00003f90| 09 7d 0a 58 09 09 09 62 | 72 65 61 6b 3b 0a 58 09 |.}.X...b|reak;.X.|
|00003fa0| 09 7d 0a 58 09 20 20 20 | 20 09 69 66 20 28 63 20 |.}.X. | .if (c |
|00003fb0| 21 3d 20 27 5c 74 27 20 | 26 26 20 6e 75 6d 66 6f |!= '\t' |&& numfo|
|00003fc0| 75 6e 64 20 3d 3d 20 31 | 29 20 7b 0a 58 09 20 20 |und == 1|) {.X. |
|00003fd0| 20 20 09 09 63 6f 6d 70 | 5f 76 61 6c 75 65 20 3d | ..comp|_value =|
|00003fe0| 20 6c 61 73 74 6d 61 74 | 63 68 3b 0a 58 09 09 09 | lastmat|ch;.X...|
|00003ff0| 72 65 74 75 72 6e 20 30 | 3b 0a 58 09 09 7d 0a 58 |return 0|;.X..}.X|
|00004000| 09 09 6e 75 6c 6c 5f 6e | 63 70 79 28 6c 69 6e 65 |..null_n|cpy(line|
|00004010| 62 75 66 2c 20 50 6f 73 | 73 69 62 6c 65 5b 6c 61 |buf, Pos|sible[la|
|00004020| 73 74 6d 61 74 63 68 5d | 2c 20 6d 69 6e 6d 61 74 |stmatch]|, minmat|
|00004030| 63 68 29 3b 0a 58 09 20 | 20 20 20 09 45 6f 6c 28 |ch);.X. | .Eol(|
|00004040| 29 3b 0a 58 09 09 69 66 | 20 28 6d 69 6e 6d 61 74 |);.X..if| (minmat|
|00004050| 63 68 20 3d 3d 20 6c 65 | 6e 67 74 68 29 09 2f 2a |ch == le|ngth)./*|
|00004060| 20 4e 6f 20 64 69 66 66 | 65 72 65 6e 63 65 20 2a | No diff|erence *|
|00004070| 2f 0a 58 09 09 09 72 62 | 65 6c 6c 28 29 3b 0a 58 |/.X...rb|ell();.X|
|00004080| 09 09 62 72 65 61 6b 3b | 0a 58 09 20 20 20 20 7d |..break;|.X. }|
|00004090| 0a 58 0a 58 09 63 61 73 | 65 20 27 3f 27 3a 0a 58 |.X.X.cas|e '?':.X|
|000040a0| 09 09 69 66 20 28 49 6e | 4a 6f 76 65 72 63 29 0a |..if (In|Joverc).|
|000040b0| 58 09 09 09 63 6f 6d 70 | 6c 61 69 6e 28 28 63 68 |X...comp|lain((ch|
|000040c0| 61 72 20 2a 29 20 30 29 | 3b 0a 58 09 09 2f 2a 20 |ar *) 0)|;.X../* |
|000040d0| 6b 6c 75 64 67 65 3a 20 | 69 6e 20 63 61 73 65 20 |kludge: |in case |
|000040e0| 77 65 27 72 65 20 75 73 | 69 6e 67 20 55 73 65 42 |we're us|ing UseB|
|000040f0| 75 66 66 65 72 73 2c 20 | 69 6e 20 77 68 69 63 68 |uffers, |in which|
|00004100| 20 63 61 73 65 0a 58 09 | 09 20 20 20 6c 69 6e 65 | case.X.|. line|
|00004110| 62 75 66 20 67 65 74 73 | 20 77 72 69 74 74 65 6e |buf gets| written|
|00004120| 20 61 6c 6c 20 6f 76 65 | 72 20 2a 2f 0a 58 09 09 | all ove|r */.X..|
|00004130| 73 74 72 63 70 79 28 4d | 69 6e 69 62 75 66 2c 20 |strcpy(M|inibuf, |
|00004140| 6c 69 6e 65 62 75 66 29 | 3b 0a 58 09 09 6c 65 6e |linebuf)|;.X..len|
|00004150| 67 74 68 20 3d 20 73 74 | 72 6c 65 6e 28 4d 69 6e |gth = st|rlen(Min|
|00004160| 69 62 75 66 29 3b 0a 58 | 09 09 54 4f 73 74 61 72 |ibuf);.X|..TOstar|
|00004170| 74 28 22 43 6f 6d 70 6c | 65 74 69 6f 6e 22 2c 20 |t("Compl|etion", |
|00004180| 54 52 55 45 29 3b 09 2f | 2a 20 66 6f 72 20 6e 6f |TRUE);./|* for no|
|00004190| 77 20 2e 2e 2e 20 2a 2f | 0a 58 09 09 66 6f 72 20 |w ... */|.X..for |
|000041a0| 28 69 20 3d 20 30 3b 20 | 50 6f 73 73 69 62 6c 65 |(i = 0; |Possible|
|000041b0| 5b 69 5d 3b 20 69 2b 2b | 29 0a 58 09 09 09 69 66 |[i]; i++|).X...if|
|000041c0| 20 28 6e 75 6d 63 6f 6d | 70 28 50 6f 73 73 69 62 | (numcom|p(Possib|
|000041d0| 6c 65 5b 69 5d 2c 20 4d | 69 6e 69 62 75 66 29 20 |le[i], M|inibuf) |
|000041e0| 3e 3d 20 6c 65 6e 67 74 | 68 29 20 7b 0a 58 09 09 |>= lengt|h) {.X..|
|000041f0| 09 09 54 79 70 65 6f 75 | 74 28 50 6f 73 73 69 62 |..Typeou|t(Possib|
|00004200| 6c 65 5b 69 5d 29 3b 0a | 58 09 09 09 09 69 66 20 |le[i]);.|X....if |
|00004210| 28 54 4f 61 62 6f 72 74 | 20 21 3d 20 30 29 0a 58 |(TOabort| != 0).X|
|00004220| 09 09 09 09 09 62 72 65 | 61 6b 3b 0a 58 09 09 09 |.....bre|ak;.X...|
|00004230| 7d 0a 58 0a 58 09 09 54 | 4f 73 74 6f 70 28 29 3b |}.X.X..T|Ostop();|
|00004240| 0a 58 09 09 62 72 65 61 | 6b 3b 0a 58 09 7d 0a 58 |.X..brea|k;.X.}.X|
|00004250| 09 72 65 74 75 72 6e 20 | 21 46 41 4c 53 45 3b 0a |.return |!FALSE;.|
|00004260| 58 7d 0a 58 0a 69 6e 74 | 0a 63 6f 6d 70 6c 65 74 |X}.X.int|.complet|
|00004270| 65 28 70 6f 73 73 69 62 | 6c 65 2c 20 70 72 6f 6d |e(possib|le, prom|
|00004280| 70 74 2c 20 66 6c 61 67 | 73 29 0a 72 65 67 69 73 |pt, flag|s).regis|
|00004290| 74 65 72 20 63 68 61 72 | 09 2a 70 6f 73 73 69 62 |ter char|.*possib|
|000042a0| 6c 65 5b 5d 3b 0a 63 68 | 61 72 09 2a 70 72 6f 6d |le[];.ch|ar.*prom|
|000042b0| 70 74 3b 0a 58 7b 0a 58 | 09 50 6f 73 73 69 62 6c |pt;.X{.X|.Possibl|
|000042c0| 65 20 3d 20 70 6f 73 73 | 69 62 6c 65 3b 0a 58 09 |e = poss|ible;.X.|
|000042d0| 63 6f 6d 70 5f 66 6c 61 | 67 73 20 3d 20 66 6c 61 |comp_fla|gs = fla|
|000042e0| 67 73 3b 0a 58 09 28 76 | 6f 69 64 29 20 64 6f 5f |gs;.X.(v|oid) do_|
|000042f0| 61 73 6b 28 22 5c 72 5c | 6e 20 5c 74 3f 22 2c 20 |ask("\r\|n \t?", |
|00004300| 61 75 78 5f 63 6f 6d 70 | 6c 65 74 65 2c 20 4e 75 |aux_comp|lete, Nu|
|00004310| 6c 6c 53 74 72 2c 20 70 | 72 6f 6d 70 74 29 3b 0a |llStr, p|rompt);.|
|00004320| 58 09 72 65 74 75 72 6e | 20 63 6f 6d 70 5f 76 61 |X.return| comp_va|
|00004330| 6c 75 65 3b 0a 58 7d 0a | 58 0a 69 6e 74 0a 6d 61 |lue;.X}.|X.int.ma|
|00004340| 74 63 68 28 63 68 6f 69 | 63 65 73 2c 20 77 68 61 |tch(choi|ces, wha|
|00004350| 74 29 0a 72 65 67 69 73 | 74 65 72 20 63 68 61 72 |t).regis|ter char|
|00004360| 09 2a 2a 63 68 6f 69 63 | 65 73 2c 0a 58 09 09 2a |.**choic|es,.X..*|
|00004370| 77 68 61 74 3b 0a 58 7b | 0a 58 09 72 65 67 69 73 |what;.X{|.X.regis|
|00004380| 74 65 72 20 69 6e 74 09 | 6c 65 6e 3b 0a 58 09 69 |ter int.|len;.X.i|
|00004390| 6e 74 09 69 2c 0a 58 09 | 09 66 6f 75 6e 64 20 3d |nt.i,.X.|.found =|
|000043a0| 20 30 2c 0a 58 09 09 73 | 61 76 65 2c 0a 58 09 09 | 0,.X..s|ave,.X..|
|000043b0| 65 78 61 63 74 6d 61 74 | 63 68 20 3d 20 2d 31 3b |exactmat|ch = -1;|
|000043c0| 0a 58 0a 58 09 6c 65 6e | 20 3d 20 73 74 72 6c 65 |.X.X.len| = strle|
|000043d0| 6e 28 77 68 61 74 29 3b | 0a 58 09 69 66 20 28 6c |n(what);|.X.if (l|
|000043e0| 65 6e 20 3d 3d 20 30 29 | 0a 58 09 09 72 65 74 75 |en == 0)|.X..retu|
|000043f0| 72 6e 20 4e 55 4c 4c 53 | 54 52 49 4e 47 3b 0a 58 |rn NULLS|TRING;.X|
|00004400| 09 66 6f 72 20 28 69 20 | 3d 20 30 3b 20 63 68 6f |.for (i |= 0; cho|
|00004410| 69 63 65 73 5b 69 5d 3b | 20 69 2b 2b 29 20 7b 0a |ices[i];| i++) {.|
|00004420| 58 09 09 69 66 20 28 73 | 74 72 6e 63 6d 70 28 77 |X..if (s|trncmp(w|
|00004430| 68 61 74 2c 20 63 68 6f | 69 63 65 73 5b 69 5d 2c |hat, cho|ices[i],|
|00004440| 20 6c 65 6e 29 20 3d 3d | 20 30 29 20 7b 0a 58 09 | len) ==| 0) {.X.|
|00004450| 09 09 69 66 20 28 73 74 | 72 63 6d 70 28 77 68 61 |..if (st|rcmp(wha|
|00004460| 74 2c 20 63 68 6f 69 63 | 65 73 5b 69 5d 29 20 3d |t, choic|es[i]) =|
|00004470| 3d 20 30 29 0a 58 09 09 | 09 09 65 78 61 63 74 6d |= 0).X..|..exactm|
|00004480| 61 74 63 68 20 3d 20 69 | 3b 0a 58 09 09 09 73 61 |atch = i|;.X...sa|
|00004490| 76 65 20 3d 20 69 3b 0a | 58 09 09 09 66 6f 75 6e |ve = i;.|X...foun|
|000044a0| 64 20 2b 3d 20 31 3b 09 | 2f 2a 20 66 6f 75 6e 64 |d += 1;.|/* found|
|000044b0| 20 6f 6e 65 20 2a 2f 0a | 58 09 09 7d 0a 58 09 7d | one */.|X..}.X.}|
|000044c0| 0a 58 0a 58 09 69 66 20 | 28 66 6f 75 6e 64 20 3d |.X.X.if |(found =|
|000044d0| 3d 20 30 29 0a 58 09 09 | 73 61 76 65 20 3d 20 4f |= 0).X..|save = O|
|000044e0| 52 49 47 49 4e 41 4c 3b | 0a 58 09 65 6c 73 65 20 |RIGINAL;|.X.else |
|000044f0| 69 66 20 28 66 6f 75 6e | 64 20 3e 20 31 29 20 7b |if (foun|d > 1) {|
|00004500| 0a 58 09 09 69 66 20 28 | 65 78 61 63 74 6d 61 74 |.X..if (|exactmat|
|00004510| 63 68 20 21 3d 20 2d 31 | 29 0a 58 09 09 09 73 61 |ch != -1|).X...sa|
|00004520| 76 65 20 3d 20 65 78 61 | 63 74 6d 61 74 63 68 3b |ve = exa|ctmatch;|
|00004530| 0a 58 09 09 65 6c 73 65 | 0a 58 09 09 09 73 61 76 |.X..else|.X...sav|
|00004540| 65 20 3d 20 41 4d 42 49 | 47 55 4f 55 53 3b 0a 58 |e = AMBI|GUOUS;.X|
|00004550| 09 7d 0a 58 0a 58 09 72 | 65 74 75 72 6e 20 73 61 |.}.X.X.r|eturn sa|
|00004560| 76 65 3b 0a 58 7d 0a 58 | 0a 76 6f 69 64 0a 53 6f |ve;.X}.X|.void.So|
|00004570| 75 72 63 65 28 29 0a 58 | 7b 0a 58 09 63 68 61 72 |urce().X|{.X.char|
|00004580| 09 2a 63 6f 6d 2c 20 2a | 67 65 74 65 6e 76 28 29 |.*com, *|getenv()|
|00004590| 2c 0a 58 09 09 62 75 66 | 5b 46 49 4c 45 53 49 5a |,.X..buf|[FILESIZ|
|000045a0| 45 5d 3b 0a 58 0a 58 23 | 69 66 6e 64 65 66 20 4d |E];.X.X#|ifndef M|
|000045b0| 53 44 4f 53 0a 58 09 73 | 70 72 69 6e 74 66 28 62 |SDOS.X.s|printf(b|
|000045c0| 75 66 2c 20 22 25 73 2f | 2e 6a 6f 76 65 72 63 22 |uf, "%s/|.joverc"|
|000045d0| 2c 20 67 65 74 65 6e 76 | 28 22 48 4f 4d 45 22 29 |, getenv|("HOME")|
|000045e0| 29 3b 0a 58 23 65 6c 73 | 65 20 2f 2a 20 4d 53 44 |);.X#els|e /* MSD|
|000045f0| 4f 53 20 2a 2f 0a 58 09 | 69 66 20 28 63 6f 6d 20 |OS */.X.|if (com |
|00004600| 3d 20 67 65 74 65 6e 76 | 28 22 4a 4f 56 45 52 43 |= getenv|("JOVERC|
|00004610| 22 29 29 0a 58 09 09 73 | 74 72 63 70 79 28 62 75 |")).X..s|trcpy(bu|
|00004620| 66 2c 20 63 6f 6d 29 3b | 0a 58 09 65 6c 73 65 0a |f, com);|.X.else.|
|00004630| 58 09 09 73 74 72 63 70 | 79 28 62 75 66 2c 20 4a |X..strcp|y(buf, J|
|00004640| 6f 76 65 72 63 29 3b 0a | 58 23 65 6e 64 69 66 20 |overc);.|X#endif |
|00004650| 2f 2a 20 4d 53 44 4f 53 | 20 2a 2f 0a 58 09 63 6f |/* MSDOS| */.X.co|
|00004660| 6d 20 3d 20 61 73 6b 5f | 66 69 6c 65 28 28 63 68 |m = ask_|file((ch|
|00004670| 61 72 20 2a 29 20 30 2c | 20 62 75 66 2c 20 62 75 |ar *) 0,| buf, bu|
|00004680| 66 29 3b 0a 58 09 69 66 | 20 28 6a 6f 76 65 72 63 |f);.X.if| (joverc|
|00004690| 28 62 75 66 29 20 3d 3d | 20 30 29 0a 58 09 09 63 |(buf) ==| 0).X..c|
|000046a0| 6f 6d 70 6c 61 69 6e 28 | 49 4f 65 72 72 28 22 72 |omplain(|IOerr("r|
|000046b0| 65 61 64 22 2c 20 63 6f | 6d 29 29 3b 0a 58 7d 0a |ead", co|m));.X}.|
|000046c0| 58 0a 76 6f 69 64 0a 42 | 75 66 50 6f 73 28 29 0a |X.void.B|ufPos().|
|000046d0| 58 7b 0a 58 09 72 65 67 | 69 73 74 65 72 20 4c 69 |X{.X.reg|ister Li|
|000046e0| 6e 65 09 2a 6c 70 20 3d | 20 63 75 72 62 75 66 2d |ne.*lp =| curbuf-|
|000046f0| 3e 62 5f 66 69 72 73 74 | 3b 0a 58 09 72 65 67 69 |>b_first|;.X.regi|
|00004700| 73 74 65 72 20 69 6e 74 | 09 69 2c 0a 58 09 09 09 |ster int|.i,.X...|
|00004710| 64 6f 74 6c 69 6e 65 3b | 0a 58 09 6c 6f 6e 67 09 |dotline;|.X.long.|
|00004720| 64 6f 74 63 68 61 72 2c | 0a 58 09 09 6e 63 68 61 |dotchar,|.X..ncha|
|00004730| 72 73 3b 0a 58 0a 58 09 | 66 6f 72 20 28 69 20 3d |rs;.X.X.|for (i =|
|00004740| 20 6e 63 68 61 72 73 20 | 3d 20 30 3b 20 6c 70 20 | nchars |= 0; lp |
|00004750| 21 3d 20 30 3b 20 69 2b | 2b 2c 20 6c 70 20 3d 20 |!= 0; i+|+, lp = |
|00004760| 6c 70 2d 3e 6c 5f 6e 65 | 78 74 29 20 7b 0a 58 09 |lp->l_ne|xt) {.X.|
|00004770| 09 69 66 20 28 6c 70 20 | 3d 3d 20 63 75 72 6c 69 |.if (lp |== curli|
|00004780| 6e 65 29 20 7b 0a 58 09 | 09 09 64 6f 74 63 68 61 |ne) {.X.|..dotcha|
|00004790| 72 20 3d 20 6e 63 68 61 | 72 73 20 2b 20 63 75 72 |r = ncha|rs + cur|
|000047a0| 63 68 61 72 3b 0a 58 09 | 09 09 64 6f 74 6c 69 6e |char;.X.|..dotlin|
|000047b0| 65 20 3d 20 69 20 2b 20 | 31 3b 0a 58 09 09 7d 0a |e = i + |1;.X..}.|
|000047c0| 58 09 09 6e 63 68 61 72 | 73 20 2b 3d 20 6c 65 6e |X..nchar|s += len|
|000047d0| 67 74 68 28 6c 70 29 20 | 2b 20 28 6c 70 2d 3e 6c |gth(lp) |+ (lp->l|
|000047e0| 5f 6e 65 78 74 20 21 3d | 20 30 29 3b 20 2f 2a 20 |_next !=| 0); /* |
|000047f0| 69 6e 63 6c 75 64 65 20 | 74 68 65 20 4e 4c 20 2a |include |the NL *|
|00004800| 2f 0a 58 09 7d 0a 58 0a | 58 09 73 5f 6d 65 73 73 |/.X.}.X.|X.s_mess|
|00004810| 28 22 5b 5c 22 25 73 5c | 22 20 6c 69 6e 65 20 25 |("[\"%s\|" line %|
|00004820| 64 2f 25 64 2c 20 63 68 | 61 72 20 25 44 2f 25 44 |d/%d, ch|ar %D/%D|
|00004830| 20 28 25 64 25 25 29 2c | 20 63 75 72 73 6f 72 20 | (%d%%),| cursor |
|00004840| 3d 20 25 64 2f 25 64 5d | 22 2c 0a 58 09 20 20 20 |= %d/%d]|",.X. |
|00004850| 20 20 20 20 66 69 6c 65 | 6e 61 6d 65 28 63 75 72 | file|name(cur|
|00004860| 62 75 66 29 2c 20 64 6f | 74 6c 69 6e 65 2c 20 69 |buf), do|tline, i|
|00004870| 2c 20 64 6f 74 63 68 61 | 72 2c 20 6e 63 68 61 72 |, dotcha|r, nchar|
|00004880| 73 2c 0a 58 09 20 20 20 | 20 20 20 20 28 6e 63 68 |s,.X. | (nch|
|00004890| 61 72 73 20 3d 3d 20 30 | 29 20 3f 20 31 30 30 20 |ars == 0|) ? 100 |
|000048a0| 3a 20 28 69 6e 74 29 20 | 28 28 28 6c 6f 6e 67 29 |: (int) |(((long)|
|000048b0| 20 64 6f 74 63 68 61 72 | 20 2a 20 31 30 30 29 20 | dotchar| * 100) |
|000048c0| 2f 20 6e 63 68 61 72 73 | 29 2c 0a 58 09 20 20 20 |/ nchars|),.X. |
|000048d0| 20 20 20 20 63 61 6c 63 | 5f 70 6f 73 28 6c 69 6e | calc|_pos(lin|
|000048e0| 65 62 75 66 2c 20 63 75 | 72 63 68 61 72 29 2c 0a |ebuf, cu|rchar),.|
|000048f0| 58 09 20 20 20 20 20 20 | 20 63 61 6c 63 5f 70 6f |X. | calc_po|
|00004900| 73 28 6c 69 6e 65 62 75 | 66 2c 20 73 74 72 6c 65 |s(linebu|f, strle|
|00004910| 6e 28 6c 69 6e 65 62 75 | 66 29 29 29 3b 0a 58 7d |n(linebu|f)));.X}|
|00004920| 0a 58 0a 58 23 64 65 66 | 69 6e 65 20 49 46 5f 55 |.X.X#def|ine IF_U|
|00004930| 4e 42 4f 55 4e 44 09 2d | 31 0a 58 23 64 65 66 69 |NBOUND.-|1.X#defi|
|00004940| 6e 65 20 49 46 5f 54 52 | 55 45 09 09 31 0a 58 23 |ne IF_TR|UE..1.X#|
|00004950| 64 65 66 69 6e 65 20 49 | 46 5f 46 41 4c 53 45 09 |define I|F_FALSE.|
|00004960| 21 49 46 5f 54 52 55 45 | 0a 58 0a 58 23 69 66 6e |!IF_TRUE|.X.X#ifn|
|00004970| 64 65 66 20 4d 41 43 0a | 69 6e 74 0a 64 6f 5f 69 |def MAC.|int.do_i|
|00004980| 66 28 63 6d 64 29 0a 63 | 68 61 72 09 2a 63 6d 64 |f(cmd).c|har.*cmd|
|00004990| 3b 0a 58 7b 0a 58 23 69 | 66 64 65 66 20 4d 53 44 |;.X{.X#i|fdef MSD|
|000049a0| 4f 53 0a 58 09 69 6e 74 | 20 73 74 61 74 75 73 3b |OS.X.int| status;|
|000049b0| 0a 58 23 65 6c 73 65 09 | 0a 58 09 69 6e 74 09 70 |.X#else.|.X.int.p|
|000049c0| 69 64 2c 0a 58 09 09 73 | 74 61 74 75 73 3b 0a 58 |id,.X..s|tatus;.X|
|000049d0| 23 65 6e 64 69 66 20 2f | 2a 20 4d 53 44 4f 53 20 |#endif /|* MSDOS |
|000049e0| 2a 2f 0a 58 23 69 66 6e | 64 65 66 20 4d 53 44 4f |*/.X#ifn|def MSDO|
|000049f0| 53 0a 58 0a 58 09 73 77 | 69 74 63 68 20 28 70 69 |S.X.X.sw|itch (pi|
|00004a00| 64 20 3d 20 66 6f 72 6b | 28 29 29 20 7b 0a 58 09 |d = fork|()) {.X.|
|00004a10| 63 61 73 65 20 2d 31 3a | 0a 58 09 09 63 6f 6d 70 |case -1:|.X..comp|
|00004a20| 6c 61 69 6e 28 22 5b 46 | 6f 72 6b 20 66 61 69 6c |lain("[F|ork fail|
|00004a30| 65 64 3a 20 69 66 5d 22 | 29 3b 0a 58 0a 58 09 63 |ed: if]"|);.X.X.c|
|00004a40| 61 73 65 20 30 3a 0a 58 | 09 20 20 20 20 7b 0a 58 |ase 0:.X|. {.X|
|00004a50| 23 65 6e 64 69 66 20 2f | 2a 20 4d 53 44 4f 53 20 |#endif /|* MSDOS |
|00004a60| 2a 2f 0a 58 09 09 63 68 | 61 72 09 2a 61 72 67 73 |*/.X..ch|ar.*args|
|00004a70| 5b 31 32 5d 2c 0a 58 09 | 09 09 2a 63 70 20 3d 20 |[12],.X.|..*cp = |
|00004a80| 63 6d 64 2c 0a 58 09 09 | 09 2a 2a 61 70 20 3d 20 |cmd,.X..|.**ap = |
|00004a90| 61 72 67 73 3b 0a 58 0a | 58 09 20 20 20 20 09 2a |args;.X.|X. .*|
|00004aa0| 61 70 2b 2b 20 3d 20 63 | 6d 64 3b 0a 58 09 20 20 |ap++ = c|md;.X. |
|00004ab0| 20 20 09 66 6f 72 20 28 | 3b 3b 29 20 7b 0a 58 09 | .for (|;;) {.X.|
|00004ac0| 09 09 69 66 20 28 28 63 | 70 20 3d 20 69 6e 64 65 |..if ((c|p = inde|
|00004ad0| 78 28 63 70 2c 20 27 20 | 27 29 29 20 3d 3d 20 30 |x(cp, ' |')) == 0|
|00004ae0| 29 0a 58 09 09 09 09 62 | 72 65 61 6b 3b 0a 58 09 |).X....b|reak;.X.|
|00004af0| 09 09 2a 63 70 2b 2b 20 | 3d 20 27 5c 30 27 3b 0a |..*cp++ |= '\0';.|
|00004b00| 58 09 09 09 2a 61 70 2b | 2b 20 3d 20 63 70 3b 0a |X...*ap+|+ = cp;.|
|00004b10| 58 09 09 7d 0a 58 09 09 | 2a 61 70 20 3d 20 30 3b |X..}.X..|*ap = 0;|
|00004b20| 0a 58 0a 58 23 69 66 6e | 64 65 66 20 4d 53 44 4f |.X.X#ifn|def MSDO|
|00004b30| 53 0a 58 09 09 63 6c 6f | 73 65 28 30 29 3b 09 2f |S.X..clo|se(0);./|
|00004b40| 2a 09 77 65 20 77 61 6e | 74 20 72 65 61 64 73 20 |*.we wan|t reads |
|00004b50| 74 6f 20 66 61 69 6c 20 | 2a 2f 0a 58 09 09 2f 2a |to fail |*/.X../*|
|00004b60| 20 63 6c 6f 73 65 28 31 | 29 3b 09 20 62 75 74 20 | close(1|);. but |
|00004b70| 6e 6f 74 20 77 72 69 74 | 65 73 20 6f 72 20 69 6f |not writ|es or io|
|00004b80| 63 74 6c 27 73 0a 58 09 | 09 63 6c 6f 73 65 28 32 |ctl's.X.|.close(2|
|00004b90| 29 3b 20 20 20 20 2a 2f | 0a 58 23 65 6c 73 65 20 |); */|.X#else |
|00004ba0| 2f 2a 20 4d 53 44 4f 53 | 20 2a 2f 0a 58 09 69 66 |/* MSDOS| */.X.if|
|00004bb0| 20 28 28 73 74 61 74 75 | 73 20 3d 20 73 70 61 77 | ((statu|s = spaw|
|00004bc0| 6e 76 70 28 30 2c 20 61 | 72 67 73 5b 30 5d 2c 20 |nvp(0, a|rgs[0], |
|00004bd0| 61 72 67 73 29 29 20 3c | 20 30 29 0a 58 09 09 63 |args)) <| 0).X..c|
|00004be0| 6f 6d 70 6c 61 69 6e 28 | 22 5b 53 70 61 77 6e 20 |omplain(|"[Spawn |
|00004bf0| 66 61 69 6c 65 64 3a 20 | 69 66 5d 22 29 3b 0a 58 |failed: |if]");.X|
|00004c00| 23 65 6e 64 69 66 20 2f | 2a 20 4d 53 44 4f 53 20 |#endif /|* MSDOS |
|00004c10| 2a 2f 0a 58 0a 58 23 69 | 66 6e 64 65 66 20 4d 53 |*/.X.X#i|fndef MS|
|00004c20| 44 4f 53 0a 58 09 20 20 | 20 20 09 28 76 6f 69 64 |DOS.X. | .(void|
|00004c30| 29 20 65 78 65 63 76 70 | 28 61 72 67 73 5b 30 5d |) execvp|(args[0]|
|00004c40| 2c 20 61 72 67 73 29 3b | 0a 58 09 09 5f 65 78 69 |, args);|.X.._exi|
|00004c50| 74 28 2d 31 30 29 3b 09 | 2f 2a 20 73 69 67 6e 61 |t(-10);.|/* signa|
|00004c60| 6c 73 20 65 78 65 63 20 | 65 72 72 6f 72 20 28 73 |ls exec |error (s|
|00004c70| 65 65 20 62 65 6c 6f 77 | 29 20 2a 2f 0a 58 09 20 |ee below|) */.X. |
|00004c80| 20 20 20 7d 0a 58 09 7d | 0a 58 23 69 66 64 65 66 | }.X.}|.X#ifdef|
|00004c90| 20 49 50 52 4f 43 53 0a | 58 09 73 69 67 68 6f 6c | IPROCS.|X.sighol|
|00004ca0| 64 28 53 49 47 43 48 4c | 44 29 3b 0a 58 23 65 6e |d(SIGCHL|D);.X#en|
|00004cb0| 64 69 66 0a 58 09 64 6f | 77 61 69 74 28 70 69 64 |dif.X.do|wait(pid|
|00004cc0| 2c 20 26 73 74 61 74 75 | 73 29 3b 0a 58 23 69 66 |, &statu|s);.X#if|
|00004cd0| 64 65 66 20 49 50 52 4f | 43 53 0a 58 09 73 69 67 |def IPRO|CS.X.sig|
|00004ce0| 72 65 6c 73 65 28 53 49 | 47 43 48 4c 44 29 3b 0a |relse(SI|GCHLD);.|
|00004cf0| 58 23 65 6e 64 69 66 0a | 58 09 69 66 20 28 73 74 |X#endif.|X.if (st|
|00004d00| 61 74 75 73 20 3d 3d 20 | 2d 31 30 29 0a 58 09 09 |atus == |-10).X..|
|00004d10| 63 6f 6d 70 6c 61 69 6e | 28 22 5b 45 78 65 63 20 |complain|("[Exec |
|00004d20| 66 61 69 6c 65 64 5d 22 | 29 3b 0a 58 09 69 66 20 |failed]"|);.X.if |
|00004d30| 28 73 74 61 74 75 73 20 | 3c 20 30 29 0a 58 09 09 |(status |< 0).X..|
|00004d40| 63 6f 6d 70 6c 61 69 6e | 28 22 5b 45 78 69 74 20 |complain|("[Exit |
|00004d50| 25 64 5d 22 2c 20 73 74 | 61 74 75 73 29 3b 0a 58 |%d]", st|atus);.X|
|00004d60| 23 65 6e 64 69 66 20 2f | 2a 20 4d 53 44 4f 53 20 |#endif /|* MSDOS |
|00004d70| 2a 2f 0a 58 09 72 65 74 | 75 72 6e 20 28 73 74 61 |*/.X.ret|urn (sta|
|00004d80| 74 75 73 20 3d 3d 20 30 | 29 3b 09 2f 2a 20 30 20 |tus == 0|);./* 0 |
|00004d90| 6d 65 61 6e 73 20 73 75 | 63 63 65 73 73 66 75 6c |means su|ccessful|
|00004da0| 20 2a 2f 0a 58 7d 0a 58 | 23 65 6e 64 69 66 20 2f | */.X}.X|#endif /|
|00004db0| 2a 20 4d 41 43 20 2a 2f | 0a 58 0a 69 6e 74 0a 6a |* MAC */|.X.int.j|
|00004dc0| 6f 76 65 72 63 28 66 69 | 6c 65 29 0a 63 68 61 72 |overc(fi|le).char|
|00004dd0| 09 2a 66 69 6c 65 3b 0a | 58 7b 0a 58 09 63 68 61 |.*file;.|X{.X.cha|
|00004de0| 72 09 62 75 66 5b 4c 42 | 53 49 5a 45 5d 2c 0a 58 |r.buf[LB|SIZE],.X|
|00004df0| 09 09 6c 62 75 66 5b 4c | 42 53 49 5a 45 5d 3b 0a |..lbuf[L|BSIZE];.|
|00004e00| 58 09 69 6e 74 09 6c 6e | 75 6d 20 3d 20 30 2c 0a |X.int.ln|um = 0,.|
|00004e10| 58 09 09 65 6f 66 20 3d | 20 46 41 4c 53 45 3b 0a |X..eof =| FALSE;.|
|00004e20| 58 09 6a 6d 70 5f 62 75 | 66 09 73 61 76 65 6a 6d |X.jmp_bu|f.savejm|
|00004e30| 70 3b 0a 58 09 69 6e 74 | 09 49 66 53 74 61 74 75 |p;.X.int|.IfStatu|
|00004e40| 73 20 3d 20 49 46 5f 55 | 4e 42 4f 55 4e 44 3b 0a |s = IF_U|NBOUND;.|
|00004e50| 58 09 46 69 6c 65 09 2a | 66 70 3b 0a 58 0a 58 09 |X.File.*|fp;.X.X.|
|00004e60| 66 70 20 3d 20 6f 70 65 | 6e 5f 66 69 6c 65 28 66 |fp = ope|n_file(f|
|00004e70| 69 6c 65 2c 20 62 75 66 | 2c 20 46 5f 52 45 41 44 |ile, buf|, F_READ|
|00004e80| 2c 20 21 43 4f 4d 50 4c | 41 49 4e 2c 20 51 55 49 |, !COMPL|AIN, QUI|
|00004e90| 45 54 29 3b 0a 58 09 69 | 66 20 28 66 70 20 3d 3d |ET);.X.i|f (fp ==|
|00004ea0| 20 4e 49 4c 29 0a 58 09 | 09 72 65 74 75 72 6e 20 | NIL).X.|.return |
|00004eb0| 4e 4f 3b 09 2f 2a 20 6a | 6f 76 65 72 63 20 72 65 |NO;./* j|overc re|
|00004ec0| 74 75 72 6e 73 20 61 6e | 20 69 6e 74 65 67 65 72 |turns an| integer|
|00004ed0| 20 2a 2f 0a 58 0a 58 09 | 2f 2a 20 43 61 74 63 68 | */.X.X.|/* Catch|
|00004ee0| 20 61 6e 79 20 65 72 72 | 6f 72 73 2c 20 68 65 72 | any err|ors, her|
|00004ef0| 65 2c 20 61 6e 64 20 64 | 6f 20 74 68 65 20 72 69 |e, and d|o the ri|
|00004f00| 67 68 74 20 74 68 69 6e | 67 20 77 69 74 68 20 74 |ght thin|g with t|
|00004f10| 68 65 6d 2c 0a 58 09 20 | 20 20 61 6e 64 20 74 68 |hem,.X. | and th|
|00004f20| 65 6e 20 72 65 73 74 6f | 72 65 20 74 68 65 20 65 |en resto|re the e|
|00004f30| 72 72 6f 72 20 68 61 6e | 64 6c 65 20 74 6f 20 77 |rror han|dle to w|
|00004f40| 68 6f 65 76 65 72 20 64 | 69 64 20 61 20 73 65 74 |hoever d|id a set|
|00004f50| 6a 6d 70 0a 58 09 20 20 | 20 6c 61 73 74 2e 20 2a |jmp.X. | last. *|
|00004f60| 2f 0a 58 0a 58 09 49 6e | 4a 6f 76 65 72 63 20 2b |/.X.X.In|Joverc +|
|00004f70| 3d 20 31 3b 0a 58 09 70 | 75 73 68 5f 65 6e 76 28 |= 1;.X.p|ush_env(|
|00004f80| 73 61 76 65 6a 6d 70 29 | 3b 0a 58 09 69 66 20 28 |savejmp)|;.X.if (|
|00004f90| 73 65 74 6a 6d 70 28 6d | 61 69 6e 6a 6d 70 29 29 |setjmp(m|ainjmp))|
|00004fa0| 20 7b 0a 58 09 09 42 75 | 66 66 65 72 09 2a 73 61 | {.X..Bu|ffer.*sa|
|00004fb0| 76 65 62 75 66 20 3d 20 | 63 75 72 62 75 66 3b 0a |vebuf = |curbuf;.|
|00004fc0| 58 0a 58 09 09 53 65 74 | 42 75 66 28 64 6f 5f 73 |X.X..Set|Buf(do_s|
|00004fd0| 65 6c 65 63 74 28 28 57 | 69 6e 64 6f 77 20 2a 29 |elect((W|indow *)|
|00004fe0| 20 30 2c 20 22 52 43 20 | 65 72 72 6f 72 73 22 29 | 0, "RC |errors")|
|00004ff0| 29 3b 0a 58 09 09 69 6e | 73 5f 73 74 72 28 73 70 |);.X..in|s_str(sp|
|00005000| 72 69 6e 74 28 22 25 73 | 3a 25 64 3a 25 73 5c 74 |rint("%s|:%d:%s\t|
|00005010| 25 73 5c 6e 22 2c 20 70 | 72 5f 6e 61 6d 65 28 66 |%s\n", p|r_name(f|
|00005020| 69 6c 65 2c 20 59 45 53 | 29 2c 20 6c 6e 75 6d 2c |ile, YES|), lnum,|
|00005030| 20 6c 62 75 66 2c 20 6d | 65 73 67 62 75 66 29 2c | lbuf, m|esgbuf),|
|00005040| 20 4e 4f 29 3b 0a 58 09 | 09 75 6e 6d 6f 64 69 66 | NO);.X.|.unmodif|
|00005050| 79 28 29 3b 0a 58 09 09 | 53 65 74 42 75 66 28 73 |y();.X..|SetBuf(s|
|00005060| 61 76 65 62 75 66 29 3b | 0a 58 09 09 41 73 6b 69 |avebuf);|.X..Aski|
|00005070| 6e 67 20 3d 20 30 3b 0a | 58 09 7d 0a 58 09 69 66 |ng = 0;.|X.}.X.if|
|00005080| 20 28 21 65 6f 66 29 20 | 64 6f 20 7b 0a 58 09 09 | (!eof) |do {.X..|
|00005090| 65 6f 66 20 3d 20 28 66 | 5f 67 65 74 73 28 66 70 |eof = (f|_gets(fp|
|000050a0| 2c 20 6c 62 75 66 2c 20 | 73 69 7a 65 6f 66 20 6c |, lbuf, |sizeof l|
|000050b0| 62 75 66 29 20 3d 3d 20 | 45 4f 46 29 3b 0a 58 09 |buf) == |EOF);.X.|
|000050c0| 09 6c 6e 75 6d 20 2b 3d | 20 31 3b 0a 58 09 09 69 |.lnum +=| 1;.X..i|
|000050d0| 66 20 28 6c 62 75 66 5b | 30 5d 20 3d 3d 20 27 23 |f (lbuf[|0] == '#|
|000050e0| 27 29 09 09 2f 2a 20 61 | 20 63 6f 6d 6d 65 6e 74 |')../* a| comment|
|000050f0| 20 2a 2f 0a 58 09 09 09 | 63 6f 6e 74 69 6e 75 65 | */.X...|continue|
|00005100| 3b 0a 58 23 69 66 6e 64 | 65 66 20 4d 41 43 0a 58 |;.X#ifnd|ef MAC.X|
|00005110| 09 09 69 66 20 28 63 61 | 73 65 6e 63 6d 70 28 6c |..if (ca|sencmp(l|
|00005120| 62 75 66 2c 20 22 69 66 | 22 2c 20 32 29 20 3d 3d |buf, "if|", 2) ==|
|00005130| 20 30 29 20 7b 0a 58 09 | 09 09 63 68 61 72 09 63 | 0) {.X.|..char.c|
|00005140| 6d 64 5b 31 32 38 5d 3b | 0a 58 0a 58 09 09 09 69 |md[128];|.X.X...i|
|00005150| 66 20 28 49 66 53 74 61 | 74 75 73 20 21 3d 20 49 |f (IfSta|tus != I|
|00005160| 46 5f 55 4e 42 4f 55 4e | 44 29 0a 58 09 09 09 09 |F_UNBOUN|D).X....|
|00005170| 63 6f 6d 70 6c 61 69 6e | 28 22 5b 43 61 6e 6e 6f |complain|("[Canno|
|00005180| 74 20 68 61 76 65 20 6e | 65 73 74 65 64 20 69 66 |t have n|ested if|
|00005190| 27 73 5d 22 29 3b 0a 58 | 09 09 09 69 66 20 28 4c |'s]");.X|...if (L|
|000051a0| 6f 6f 6b 69 6e 67 41 74 | 28 22 69 66 5b 20 5c 74 |ookingAt|("if[ \t|
|000051b0| 5d 2a 5c 5c 28 2e 2a 5c | 5c 29 24 22 2c 20 6c 62 |]*\\(.*\|\)$", lb|
|000051c0| 75 66 2c 20 30 29 20 3d | 3d 20 30 29 0a 58 09 09 |uf, 0) =|= 0).X..|
|000051d0| 09 09 63 6f 6d 70 6c 61 | 69 6e 28 22 5b 49 66 20 |..compla|in("[If |
|000051e0| 73 79 6e 74 61 78 20 65 | 72 72 6f 72 5d 22 29 3b |syntax e|rror]");|
|000051f0| 0a 58 09 09 09 70 75 74 | 6d 61 74 63 68 28 31 2c |.X...put|match(1,|
|00005200| 20 63 6d 64 2c 20 73 69 | 7a 65 6f 66 20 63 6d 64 | cmd, si|zeof cmd|
|00005210| 29 3b 0a 58 09 09 09 49 | 66 53 74 61 74 75 73 20 |);.X...I|fStatus |
|00005220| 3d 20 64 6f 5f 69 66 28 | 63 6d 64 29 20 3f 20 49 |= do_if(|cmd) ? I|
|00005230| 46 5f 54 52 55 45 20 3a | 20 49 46 5f 46 41 4c 53 |F_TRUE :| IF_FALS|
|00005240| 45 3b 0a 58 09 09 09 63 | 6f 6e 74 69 6e 75 65 3b |E;.X...c|ontinue;|
|00005250| 0a 58 09 09 7d 20 65 6c | 73 65 20 69 66 20 28 63 |.X..} el|se if (c|
|00005260| 61 73 65 6e 63 6d 70 28 | 6c 62 75 66 2c 20 22 65 |asencmp(|lbuf, "e|
|00005270| 6c 73 65 22 2c 20 34 29 | 20 3d 3d 20 30 29 20 7b |lse", 4)| == 0) {|
|00005280| 0a 58 09 09 09 69 66 20 | 28 49 66 53 74 61 74 75 |.X...if |(IfStatu|
|00005290| 73 20 3d 3d 20 49 46 5f | 55 4e 42 4f 55 4e 44 29 |s == IF_|UNBOUND)|
|000052a0| 0a 58 09 09 09 09 63 6f | 6d 70 6c 61 69 6e 28 22 |.X....co|mplain("|
|000052b0| 5b 55 6e 65 78 70 65 63 | 74 65 64 20 60 65 6c 73 |[Unexpec|ted `els|
|000052c0| 65 27 5d 22 29 3b 0a 58 | 09 09 09 49 66 53 74 61 |e']");.X|...IfSta|
|000052d0| 74 75 73 20 3d 20 21 49 | 66 53 74 61 74 75 73 3b |tus = !I|fStatus;|
|000052e0| 0a 58 09 09 09 63 6f 6e | 74 69 6e 75 65 3b 0a 58 |.X...con|tinue;.X|
|000052f0| 09 09 7d 20 65 6c 73 65 | 20 69 66 20 28 63 61 73 |..} else| if (cas|
|00005300| 65 6e 63 6d 70 28 6c 62 | 75 66 2c 20 22 65 6e 64 |encmp(lb|uf, "end|
|00005310| 69 66 22 2c 20 35 29 20 | 3d 3d 20 30 29 20 7b 0a |if", 5) |== 0) {.|
|00005320| 58 09 09 09 69 66 20 28 | 49 66 53 74 61 74 75 73 |X...if (|IfStatus|
|00005330| 20 3d 3d 20 49 46 5f 55 | 4e 42 4f 55 4e 44 29 0a | == IF_U|NBOUND).|
|00005340| 58 09 09 09 09 63 6f 6d | 70 6c 61 69 6e 28 22 5b |X....com|plain("[|
|00005350| 55 6e 65 78 70 65 63 74 | 65 64 20 60 65 6e 64 69 |Unexpect|ed `endi|
|00005360| 66 27 5d 22 29 3b 0a 58 | 09 09 09 49 66 53 74 61 |f']");.X|...IfSta|
|00005370| 74 75 73 20 3d 20 49 46 | 5f 55 4e 42 4f 55 4e 44 |tus = IF|_UNBOUND|
|00005380| 3b 0a 58 09 09 09 63 6f | 6e 74 69 6e 75 65 3b 0a |;.X...co|ntinue;.|
|00005390| 58 09 09 7d 0a 58 23 65 | 6e 64 69 66 0a 58 09 09 |X..}.X#e|ndif.X..|
|000053a0| 69 66 20 28 49 66 53 74 | 61 74 75 73 20 3d 3d 20 |if (IfSt|atus == |
|000053b0| 49 46 5f 46 41 4c 53 45 | 29 0a 58 09 09 09 63 6f |IF_FALSE|).X...co|
|000053c0| 6e 74 69 6e 75 65 3b 0a | 58 09 09 28 76 6f 69 64 |ntinue;.|X..(void|
|000053d0| 29 20 73 74 72 63 61 74 | 28 6c 62 75 66 2c 20 22 |) strcat|(lbuf, "|
|000053e0| 5c 6e 22 29 3b 0a 58 09 | 09 49 6e 70 75 74 70 20 |\n");.X.|.Inputp |
|000053f0| 3d 20 6c 62 75 66 3b 0a | 58 09 09 77 68 69 6c 65 |= lbuf;.|X..while|
|00005400| 20 28 2a 49 6e 70 75 74 | 70 20 3d 3d 20 27 20 27 | (*Input|p == ' '|
|00005410| 20 7c 7c 20 2a 49 6e 70 | 75 74 70 20 3d 3d 20 27 | || *Inp|utp == '|
|00005420| 5c 74 27 29 0a 58 09 09 | 09 49 6e 70 75 74 70 20 |\t').X..|.Inputp |
|00005430| 2b 3d 20 31 3b 09 2f 2a | 20 73 6b 69 70 20 77 68 |+= 1;./*| skip wh|
|00005440| 69 74 65 20 73 70 61 63 | 65 20 2a 2f 0a 58 09 09 |ite spac|e */.X..|
|00005450| 45 78 74 65 6e 64 28 29 | 3b 0a 58 09 7d 20 77 68 |Extend()|;.X.} wh|
|00005460| 69 6c 65 20 28 21 65 6f | 66 29 3b 0a 58 0a 58 09 |ile (!eo|f);.X.X.|
|00005470| 66 5f 63 6c 6f 73 65 28 | 66 70 29 3b 0a 58 09 70 |f_close(|fp);.X.p|
|00005480| 6f 70 5f 65 6e 76 28 73 | 61 76 65 6a 6d 70 29 3b |op_env(s|avejmp);|
|00005490| 0a 58 09 49 6e 70 75 74 | 70 20 3d 20 30 3b 0a 58 |.X.Input|p = 0;.X|
|000054a0| 09 41 73 6b 69 6e 67 20 | 3d 20 30 3b 0a 58 09 49 |.Asking |= 0;.X.I|
|000054b0| 6e 4a 6f 76 65 72 63 20 | 2d 3d 20 31 3b 0a 58 09 |nJoverc |-= 1;.X.|
|000054c0| 69 66 20 28 49 66 53 74 | 61 74 75 73 20 21 3d 20 |if (IfSt|atus != |
|000054d0| 49 46 5f 55 4e 42 4f 55 | 4e 44 29 0a 58 09 09 63 |IF_UNBOU|ND).X..c|
|000054e0| 6f 6d 70 6c 61 69 6e 28 | 22 5b 4d 69 73 73 69 6e |omplain(|"[Missin|
|000054f0| 67 20 65 6e 64 69 66 5d | 22 29 3b 0a 58 09 72 65 |g endif]|");.X.re|
|00005500| 74 75 72 6e 20 31 3b 0a | 58 7d 0a 45 4e 44 5f 4f |turn 1;.|X}.END_O|
|00005510| 46 5f 46 49 4c 45 0a 69 | 66 20 74 65 73 74 20 31 |F_FILE.i|f test 1|
|00005520| 39 39 31 34 20 2d 6e 65 | 20 60 77 63 20 2d 63 20 |9914 -ne| `wc -c |
|00005530| 3c 27 2e 2f 65 78 74 65 | 6e 64 2e 63 27 60 3b 20 |<'./exte|nd.c'`; |
|00005540| 74 68 65 6e 0a 20 20 20 | 20 65 63 68 6f 20 73 68 |then. | echo sh|
|00005550| 61 72 3a 20 5c 22 27 2e | 2f 65 78 74 65 6e 64 2e |ar: \"'.|/extend.|
|00005560| 63 27 5c 22 20 75 6e 70 | 61 63 6b 65 64 20 77 69 |c'\" unp|acked wi|
|00005570| 74 68 20 77 72 6f 6e 67 | 20 73 69 7a 65 21 0a 66 |th wrong| size!.f|
|00005580| 69 0a 23 20 65 6e 64 20 | 6f 66 20 27 2e 2f 65 78 |i.# end |of './ex|
|00005590| 74 65 6e 64 2e 63 27 0a | 66 69 0a 69 66 20 74 65 |tend.c'.|fi.if te|
|000055a0| 73 74 20 2d 66 20 27 2e | 2f 72 65 2e 63 27 20 2d |st -f '.|/re.c' -|
|000055b0| 61 20 22 24 7b 31 7d 22 | 20 21 3d 20 22 2d 63 22 |a "${1}"| != "-c"|
|000055c0| 20 3b 20 74 68 65 6e 20 | 0a 20 20 65 63 68 6f 20 | ; then |. echo |
|000055d0| 73 68 61 72 3a 20 57 69 | 6c 6c 20 6e 6f 74 20 63 |shar: Wi|ll not c|
|000055e0| 6c 6f 62 62 65 72 20 65 | 78 69 73 74 69 6e 67 20 |lobber e|xisting |
|000055f0| 66 69 6c 65 20 5c 22 27 | 2e 2f 72 65 2e 63 27 5c |file \"'|./re.c'\|
|00005600| 22 0a 65 6c 73 65 0a 65 | 63 68 6f 20 73 68 61 72 |".else.e|cho shar|
|00005610| 3a 20 45 78 74 72 61 63 | 74 69 6e 67 20 5c 22 27 |: Extrac|ting \"'|
|00005620| 2e 2f 72 65 2e 63 27 5c | 22 20 5c 28 31 38 34 33 |./re.c'\|" \(1843|
|00005630| 37 20 63 68 61 72 61 63 | 74 65 72 73 5c 29 0a 73 |7 charac|ters\).s|
|00005640| 65 64 20 22 73 2f 5e 58 | 2f 2f 22 20 3e 27 2e 2f |ed "s/^X|//" >'./|
|00005650| 72 65 2e 63 27 20 3c 3c | 27 45 4e 44 5f 4f 46 5f |re.c' <<|'END_OF_|
|00005660| 46 49 4c 45 27 0a 58 2f | 2a 2a 2a 2a 2a 2a 2a 2a |FILE'.X/|********|
|00005670| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00005680| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00005690| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000056a0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000056b0| 2a 2a 2a 0a 58 20 2a 20 | 54 68 69 73 20 70 72 6f |***.X * |This pro|
|000056c0| 67 72 61 6d 20 69 73 20 | 43 6f 70 79 72 69 67 68 |gram is |Copyrigh|
|000056d0| 74 20 28 43 29 20 31 39 | 38 36 2c 20 31 39 38 37 |t (C) 19|86, 1987|
|000056e0| 2c 20 31 39 38 38 20 62 | 79 20 4a 6f 6e 61 74 68 |, 1988 b|y Jonath|
|000056f0| 61 6e 20 50 61 79 6e 65 | 2e 20 20 4a 4f 56 45 20 |an Payne|. JOVE |
|00005700| 2a 0a 58 20 2a 20 69 73 | 20 70 72 6f 76 69 64 65 |*.X * is| provide|
|00005710| 64 20 74 6f 20 79 6f 75 | 20 77 69 74 68 6f 75 74 |d to you| without|
|00005720| 20 63 68 61 72 67 65 2c | 20 61 6e 64 20 77 69 74 | charge,| and wit|
|00005730| 68 20 6e 6f 20 77 61 72 | 72 61 6e 74 79 2e 20 20 |h no war|ranty. |
|00005740| 59 6f 75 20 6d 61 79 20 | 67 69 76 65 20 20 2a 0a |You may |give *.|
|00005750| 58 20 2a 20 61 77 61 79 | 20 63 6f 70 69 65 73 20 |X * away| copies |
|00005760| 6f 66 20 4a 4f 56 45 2c | 20 69 6e 63 6c 75 64 69 |of JOVE,| includi|
|00005770| 6e 67 20 73 6f 75 72 63 | 65 73 2c 20 70 72 6f 76 |ng sourc|es, prov|
|00005780| 69 64 65 64 20 74 68 61 | 74 20 74 68 69 73 20 6e |ided tha|t this n|
|00005790| 6f 74 69 63 65 20 69 73 | 20 20 20 20 2a 0a 58 20 |otice is| *.X |
|000057a0| 2a 20 69 6e 63 6c 75 64 | 65 64 20 69 6e 20 61 6c |* includ|ed in al|
|000057b0| 6c 20 74 68 65 20 66 69 | 6c 65 73 2e 20 20 20 20 |l the fi|les. |
|000057c0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000057d0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000057e0| 20 20 20 20 20 20 20 20 | 20 20 2a 0a 58 20 2a 2a | | *.X **|
|000057f0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00005800| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00005810| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00005820| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00005830| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2f 0a 58 0a 58 2f 2a |********|*/.X.X/*|
|00005840| 20 73 65 61 72 63 68 20 | 70 61 63 6b 61 67 65 20 | search |package |
|00005850| 2a 2f 0a 58 0a 58 23 69 | 6e 63 6c 75 64 65 20 22 |*/.X.X#i|nclude "|
|00005860| 6a 6f 76 65 2e 68 22 0a | 58 23 69 6e 63 6c 75 64 |jove.h".|X#includ|
|00005870| 65 20 22 63 74 79 70 65 | 2e 68 22 0a 58 23 69 66 |e "ctype|.h".X#if|
|00005880| 64 65 66 20 4d 41 43 0a | 58 23 09 75 6e 64 65 66 |def MAC.|X#.undef|
|00005890| 20 70 72 69 76 61 74 65 | 0a 58 23 09 64 65 66 69 | private|.X#.defi|
|000058a0| 6e 65 20 70 72 69 76 61 | 74 65 0a 58 23 65 6e 64 |ne priva|te.X#end|
|000058b0| 69 66 0a 58 0a 58 23 69 | 66 64 65 66 09 4c 49 4e |if.X.X#i|fdef.LIN|
|000058c0| 54 5f 41 52 47 53 0a 70 | 72 69 76 61 74 65 20 63 |T_ARGS.p|rivate c|
|000058d0| 68 61 72 20 2a 20 69 6e | 73 65 72 74 28 63 68 61 |har * in|sert(cha|
|000058e0| 72 20 2a 2c 20 63 68 61 | 72 20 2a 2c 20 69 6e 74 |r *, cha|r *, int|
|000058f0| 29 3b 0a 58 0a 70 72 69 | 76 61 74 65 20 76 6f 69 |);.X.pri|vate voi|
|00005900| 64 0a 58 09 52 45 72 65 | 73 65 74 28 76 6f 69 64 |d.X.REre|set(void|
|00005910| 29 2c 0a 58 09 73 65 61 | 72 63 68 28 69 6e 74 2c |),.X.sea|rch(int,|
|00005920| 20 69 6e 74 2c 20 69 6e | 74 29 3b 0a 70 72 69 76 | int, in|t);.priv|
|00005930| 61 74 65 20 69 6e 74 0a | 58 09 62 61 63 6b 72 65 |ate int.|X.backre|
|00005940| 66 28 69 6e 74 2c 20 63 | 68 61 72 20 2a 29 2c 0a |f(int, c|har *),.|
|00005950| 58 09 64 6f 5f 63 6f 6d | 70 28 69 6e 74 29 2c 0a |X.do_com|p(int),.|
|00005960| 58 09 6d 65 6d 62 65 72 | 28 63 68 61 72 20 2a 2c |X.member|(char *,|
|00005970| 20 69 6e 74 2c 20 69 6e | 74 29 2c 0a 58 09 52 45 | int, in|t),.X.RE|
|00005980| 67 65 74 63 28 76 6f 69 | 64 29 2c 0a 58 09 52 45 |getc(voi|d),.X.RE|
|00005990| 6d 61 74 63 68 28 63 68 | 61 72 20 2a 2c 20 63 68 |match(ch|ar *, ch|
|000059a0| 61 72 20 2a 29 3b 0a 58 | 23 65 6c 73 65 0a 70 72 |ar *);.X|#else.pr|
|000059b0| 69 76 61 74 65 20 63 68 | 61 72 20 2a 20 69 6e 73 |ivate ch|ar * ins|
|000059c0| 65 72 74 28 29 3b 0a 58 | 0a 70 72 69 76 61 74 65 |ert();.X|.private|
|000059d0| 20 76 6f 69 64 0a 58 09 | 52 45 72 65 73 65 74 28 | void.X.|REreset(|
|000059e0| 29 2c 0a 58 09 73 65 61 | 72 63 68 28 29 3b 0a 70 |),.X.sea|rch();.p|
|000059f0| 72 69 76 61 74 65 20 69 | 6e 74 0a 58 09 62 61 63 |rivate i|nt.X.bac|
|00005a00| 6b 72 65 66 28 29 2c 0a | 58 09 64 6f 5f 63 6f 6d |kref(),.|X.do_com|
|00005a10| 70 28 29 2c 0a 58 09 6d | 65 6d 62 65 72 28 29 2c |p(),.X.m|ember(),|
|00005a20| 0a 58 09 52 45 67 65 74 | 63 28 29 2c 0a 58 09 52 |.X.REget|c(),.X.R|
|00005a30| 45 6d 61 74 63 68 28 29 | 3b 0a 58 23 65 6e 64 69 |Ematch()|;.X#endi|
|00005a40| 66 09 2f 2a 20 4c 49 4e | 54 5f 41 52 47 53 20 2a |f./* LIN|T_ARGS *|
|00005a50| 2f 0a 58 0a 58 23 69 66 | 64 65 66 20 4d 41 43 0a |/.X.X#if|def MAC.|
|00005a60| 58 23 09 75 6e 64 65 66 | 20 70 72 69 76 61 74 65 |X#.undef| private|
|00005a70| 0a 58 23 09 64 65 66 69 | 6e 65 20 70 72 69 76 61 |.X#.defi|ne priva|
|00005a80| 74 65 20 73 74 61 74 69 | 63 0a 58 23 65 6e 64 69 |te stati|c.X#endi|
|00005a90| 66 0a 58 0a 58 23 64 65 | 66 69 6e 65 20 4e 41 4c |f.X.X#de|fine NAL|
|00005aa0| 54 53 09 31 36 09 2f 2a | 20 6e 75 6d 62 65 72 20 |TS.16./*| number |
|00005ab0| 6f 66 20 61 6c 74 65 72 | 6e 61 74 65 20 73 65 61 |of alter|nate sea|
|00005ac0| 72 63 68 20 73 74 72 69 | 6e 67 73 20 2a 2f 0a 58 |rch stri|ngs */.X|
|00005ad0| 0a 63 68 61 72 09 73 65 | 61 72 63 68 73 74 72 5b |.char.se|archstr[|
|00005ae0| 31 32 38 5d 2c 0a 58 09 | 63 6f 6d 70 62 75 66 5b |128],.X.|compbuf[|
|00005af0| 32 35 36 5d 2c 09 09 2f | 2a 20 67 6c 6f 62 61 6c |256],../|* global|
|00005b00| 20 64 65 66 61 75 6c 74 | 20 63 6f 6d 70 62 75 66 | default| compbuf|
|00005b10| 20 2a 2f 0a 58 09 72 65 | 70 5f 73 65 61 72 63 68 | */.X.re|p_search|
|00005b20| 5b 31 32 38 5d 2c 09 2f | 2a 20 72 65 70 6c 61 63 |[128],./|* replac|
|00005b30| 65 20 73 65 61 72 63 68 | 20 73 74 72 69 6e 67 20 |e search| string |
|00005b40| 2a 2f 0a 58 09 72 65 70 | 5f 73 74 72 5b 31 32 38 |*/.X.rep|_str[128|
|00005b50| 5d 2c 09 09 2f 2a 20 63 | 6f 6e 74 61 69 6e 73 20 |],../* c|ontains |
|00005b60| 72 65 70 6c 61 63 65 6d | 65 6e 74 20 73 74 72 69 |replacem|ent stri|
|00005b70| 6e 67 20 2a 2f 0a 58 09 | 2a 63 75 72 5f 63 6f 6d |ng */.X.|*cur_com|
|00005b80| 70 62 2c 09 09 2f 2a 20 | 75 73 75 61 6c 6c 79 20 |pb,../* |usually |
|00005b90| 70 6f 69 6e 74 73 20 61 | 74 20 63 6f 6d 70 62 75 |points a|t compbu|
|00005ba0| 66 20 2a 2f 0a 58 09 52 | 45 62 75 66 5b 4c 42 53 |f */.X.R|Ebuf[LBS|
|00005bb0| 49 5a 45 5d 2c 09 09 2f | 2a 20 70 6f 69 6e 74 73 |IZE],../|* points|
|00005bc0| 20 61 74 20 6c 69 6e 65 | 20 77 65 27 72 65 20 73 | at line| we're s|
|00005bd0| 63 61 6e 6e 69 6e 67 20 | 2a 2f 0a 58 09 2a 61 6c |canning |*/.X.*al|
|00005be0| 74 65 72 6e 61 74 65 73 | 5b 4e 41 4c 54 53 5d 3b |ternates|[NALTS];|
|00005bf0| 0a 58 0a 69 6e 74 09 52 | 45 64 69 72 65 63 74 69 |.X.int.R|Edirecti|
|00005c00| 6f 6e 3b 0a 58 0a 69 6e | 74 09 43 61 73 65 49 67 |on;.X.in|t.CaseIg|
|00005c10| 6e 6f 72 65 20 3d 20 30 | 2c 0a 58 09 57 72 61 70 |nore = 0|,.X.Wrap|
|00005c20| 53 63 61 6e 20 3d 20 30 | 2c 0a 58 09 55 73 65 52 |Scan = 0|,.X.UseR|
|00005c30| 45 20 3d 20 30 3b 0a 58 | 0a 58 23 64 65 66 69 6e |E = 0;.X|.X#defin|
|00005c40| 65 20 63 69 6e 64 5f 63 | 6d 70 28 61 2c 20 62 29 |e cind_c|mp(a, b)|
|00005c50| 09 28 43 61 73 65 45 71 | 75 69 76 5b 61 5d 20 3d |.(CaseEq|uiv[a] =|
|00005c60| 3d 20 43 61 73 65 45 71 | 75 69 76 5b 62 5d 29 0a |= CaseEq|uiv[b]).|
|00005c70| 58 0a 70 72 69 76 61 74 | 65 20 69 6e 74 09 52 45 |X.privat|e int.RE|
|00005c80| 70 65 65 6b 63 3b 0a 70 | 72 69 76 61 74 65 20 63 |peekc;.p|rivate c|
|00005c90| 68 61 72 09 2a 52 45 70 | 74 72 3b 0a 58 0a 70 72 |har.*REp|tr;.X.pr|
|00005ca0| 69 76 61 74 65 20 69 6e | 74 0a 52 45 67 65 74 63 |ivate in|t.REgetc|
|00005cb0| 28 29 0a 58 7b 0a 58 09 | 69 6e 74 09 63 3b 0a 58 |().X{.X.|int.c;.X|
|00005cc0| 0a 58 09 69 66 20 28 28 | 63 20 3d 20 52 45 70 65 |.X.if ((|c = REpe|
|00005cd0| 65 6b 63 29 20 21 3d 20 | 2d 31 29 0a 58 09 09 52 |ekc) != |-1).X..R|
|00005ce0| 45 70 65 65 6b 63 20 3d | 20 2d 31 3b 0a 58 09 65 |Epeekc =| -1;.X.e|
|00005cf0| 6c 73 65 20 69 66 20 28 | 2a 52 45 70 74 72 29 0a |lse if (|*REptr).|
|00005d00| 58 09 09 63 20 3d 20 2a | 52 45 70 74 72 2b 2b 3b |X..c = *|REptr++;|
|00005d10| 0a 58 09 65 6c 73 65 0a | 58 09 09 63 20 3d 20 30 |.X.else.|X..c = 0|
|00005d20| 3b 0a 58 0a 58 09 72 65 | 74 75 72 6e 20 63 3b 0a |;.X.X.re|turn c;.|
|00005d30| 58 7d 0a 58 0a 58 23 64 | 65 66 69 6e 65 20 53 54 |X}.X.X#d|efine ST|
|00005d40| 41 52 20 09 30 31 09 2f | 2a 20 4d 61 74 63 68 20 |AR .01./|* Match |
|00005d50| 61 6e 79 20 6e 75 6d 62 | 65 72 20 6f 66 20 6c 61 |any numb|er of la|
|00005d60| 73 74 20 52 45 2e 20 2a | 2f 0a 58 23 64 65 66 69 |st RE. *|/.X#defi|
|00005d70| 6e 65 20 41 54 5f 42 4f | 4c 09 32 09 2f 2a 20 5e |ne AT_BO|L.2./* ^|
|00005d80| 20 2a 2f 0a 58 23 64 65 | 66 69 6e 65 20 41 54 5f | */.X#de|fine AT_|
|00005d90| 45 4f 4c 09 34 09 2f 2a | 20 24 20 2a 2f 0a 58 23 |EOL.4./*| $ */.X#|
|00005da0| 64 65 66 69 6e 65 20 41 | 54 5f 42 4f 57 09 36 09 |define A|T_BOW.6.|
|00005db0| 2f 2a 20 5c 3c 20 2a 2f | 0a 58 23 64 65 66 69 6e |/* \< */|.X#defin|
|00005dc0| 65 20 41 54 5f 45 4f 57 | 09 38 09 2f 2a 20 5c 3e |e AT_EOW|.8./* \>|
|00005dd0| 20 2a 2f 0a 58 23 64 65 | 66 69 6e 65 20 4f 50 45 | */.X#de|fine OPE|
|00005de0| 4e 50 09 31 30 09 2f 2a | 20 5c 28 20 2a 2f 0a 58 |NP.10./*| \( */.X|
|00005df0| 23 64 65 66 69 6e 65 20 | 43 4c 4f 53 45 50 09 31 |#define |CLOSEP.1|
|00005e00| 32 09 2f 2a 20 5c 29 20 | 2a 2f 0a 58 23 64 65 66 |2./* \) |*/.X#def|
|00005e10| 69 6e 65 20 43 55 52 4c | 59 42 09 31 34 09 2f 2a |ine CURL|YB.14./*|
|00005e20| 20 5c 7b 20 2a 2f 0a 58 | 0a 58 23 64 65 66 69 6e | \{ */.X|.X#defin|
|00005e30| 65 20 4e 4f 53 54 52 09 | 31 34 09 2f 2a 20 43 6f |e NOSTR.|14./* Co|
|00005e40| 64 65 73 20 3c 3d 20 4e | 4f 53 54 52 20 63 61 6e |des <= N|OSTR can|
|00005e50| 27 74 20 62 65 20 2a 27 | 64 2e 20 2a 2f 0a 58 0a |'t be *'|d. */.X.|
|00005e60| 58 23 64 65 66 69 6e 65 | 20 41 4e 59 43 09 4e 4f |X#define| ANYC.NO|
|00005e70| 53 54 52 2b 32 09 09 2f | 2a 20 2e 20 2a 2f 0a 58 |STR+2../|* . */.X|
|00005e80| 23 64 65 66 69 6e 65 20 | 4e 4f 52 4d 43 09 41 4e |#define |NORMC.AN|
|00005e90| 59 43 2b 32 09 09 2f 2a | 20 6e 6f 72 6d 61 6c 20 |YC+2../*| normal |
|00005ea0| 63 68 61 72 61 63 74 65 | 72 20 2a 2f 0a 58 23 64 |characte|r */.X#d|
|00005eb0| 65 66 69 6e 65 20 43 49 | 4e 44 43 09 4e 4f 52 4d |efine CI|NDC.NORM|
|00005ec0| 43 2b 32 09 09 2f 2a 20 | 63 61 73 65 20 69 6e 64 |C+2../* |case ind|
|00005ed0| 65 70 65 6e 64 65 6e 74 | 20 63 68 61 72 61 63 74 |ependent| charact|
|00005ee0| 65 72 20 2a 2f 0a 58 23 | 64 65 66 69 6e 65 20 4f |er */.X#|define O|
|00005ef0| 4e 45 5f 4f 46 09 43 49 | 4e 44 43 2b 32 09 09 2f |NE_OF.CI|NDC+2../|
|00005f00| 2a 20 5b 78 78 78 5d 20 | 2a 2f 0a 58 23 64 65 66 |* [xxx] |*/.X#def|
|00005f10| 69 6e 65 20 4e 4f 4e 45 | 5f 4f 46 09 4f 4e 45 5f |ine NONE|_OF.ONE_|
|00005f20| 4f 46 2b 32 09 2f 2a 20 | 5b 5e 78 78 78 5d 20 2a |OF+2./* |[^xxx] *|
|00005f30| 2f 0a 58 23 64 65 66 69 | 6e 65 20 42 41 43 4b 52 |/.X#defi|ne BACKR|
|00005f40| 45 46 09 4e 4f 4e 45 5f | 4f 46 2b 32 09 2f 2a 20 |EF.NONE_|OF+2./* |
|00005f50| 5c 23 20 2a 2f 0a 58 23 | 64 65 66 69 6e 65 20 45 |\# */.X#|define E|
|00005f60| 4f 50 09 42 41 43 4b 52 | 45 46 2b 32 09 2f 2a 20 |OP.BACKR|EF+2./* |
|00005f70| 65 6e 64 20 6f 66 20 70 | 61 74 74 65 72 6e 20 2a |end of p|attern *|
|00005f80| 2f 0a 58 0a 58 23 64 65 | 66 69 6e 65 20 4e 50 41 |/.X.X#de|fine NPA|
|00005f90| 52 09 31 30 09 2f 2a 20 | 5b 30 2d 39 5d 20 2d 20 |R.10./* |[0-9] - |
|00005fa0| 30 74 68 20 69 73 20 74 | 68 65 20 65 6e 74 69 72 |0th is t|he entir|
|00005fb0| 65 20 6d 61 74 63 68 65 | 64 20 73 74 72 69 6e 67 |e matche|d string|
|00005fc0| 2c 20 69 2e 65 2e 20 26 | 20 2a 2f 0a 70 72 69 76 |, i.e. &| */.priv|
|00005fd0| 61 74 65 20 69 6e 74 09 | 6e 70 61 72 65 6e 73 3b |ate int.|nparens;|
|00005fe0| 0a 70 72 69 76 61 74 65 | 20 63 68 61 72 09 2a 63 |.private| char.*c|
|00005ff0| 6f 6d 70 5f 70 2c 0a 58 | 09 09 2a 73 74 61 72 74 |omp_p,.X|..*start|
|00006000| 5f 70 2c 0a 58 09 09 2a | 2a 61 6c 74 5f 70 2c 0a |_p,.X..*|*alt_p,.|
|00006010| 58 09 09 2a 2a 61 6c 74 | 5f 65 6e 64 70 3b 0a 58 |X..**alt|_endp;.X|
|00006020| 0a 76 6f 69 64 0a 52 45 | 63 6f 6d 70 69 6c 65 28 |.void.RE|compile(|
|00006030| 70 61 74 74 65 72 6e 2c | 20 72 65 2c 20 69 6e 74 |pattern,| re, int|
|00006040| 6f 5f 62 75 66 2c 20 61 | 6c 74 5f 62 75 66 70 29 |o_buf, a|lt_bufp)|
|00006050| 0a 63 68 61 72 09 2a 70 | 61 74 74 65 72 6e 2c 0a |.char.*p|attern,.|
|00006060| 58 09 2a 69 6e 74 6f 5f | 62 75 66 2c 0a 58 09 2a |X.*into_|buf,.X.*|
|00006070| 2a 61 6c 74 5f 62 75 66 | 70 3b 0a 58 7b 0a 58 09 |*alt_buf|p;.X{.X.|
|00006080| 52 45 70 74 72 20 3d 20 | 70 61 74 74 65 72 6e 3b |REptr = |pattern;|
|00006090| 0a 58 09 52 45 70 65 65 | 6b 63 20 3d 20 2d 31 3b |.X.REpee|kc = -1;|
|000060a0| 0a 58 09 63 6f 6d 70 5f | 70 20 3d 20 63 75 72 5f |.X.comp_|p = cur_|
|000060b0| 63 6f 6d 70 62 20 3d 20 | 73 74 61 72 74 5f 70 20 |compb = |start_p |
|000060c0| 3d 20 69 6e 74 6f 5f 62 | 75 66 3b 0a 58 09 61 6c |= into_b|uf;.X.al|
|000060d0| 74 5f 70 20 3d 20 61 6c | 74 5f 62 75 66 70 3b 0a |t_p = al|t_bufp;.|
|000060e0| 58 09 61 6c 74 5f 65 6e | 64 70 20 3d 20 61 6c 74 |X.alt_en|dp = alt|
|000060f0| 5f 70 20 2b 20 4e 41 4c | 54 53 3b 0a 58 09 2a 61 |_p + NAL|TS;.X.*a|
|00006100| 6c 74 5f 70 2b 2b 20 3d | 20 63 6f 6d 70 5f 70 3b |lt_p++ =| comp_p;|
|00006110| 0a 58 09 6e 70 61 72 65 | 6e 73 20 3d 20 30 3b 0a |.X.npare|ns = 0;.|
|00006120| 58 09 28 76 6f 69 64 29 | 20 64 6f 5f 63 6f 6d 70 |X.(void)| do_comp|
|00006130| 28 72 65 20 3f 20 4f 4b | 41 59 5f 52 45 20 3a 20 |(re ? OK|AY_RE : |
|00006140| 4e 4f 52 4d 29 3b 0a 58 | 09 2a 61 6c 74 5f 70 20 |NORM);.X|.*alt_p |
|00006150| 3d 20 30 3b 0a 58 7d 0a | 58 0a 58 2f 2a 20 63 6f |= 0;.X}.|X.X/* co|
|00006160| 6d 70 69 6c 65 20 74 68 | 65 20 70 61 74 74 65 72 |mpile th|e patter|
|00006170| 6e 20 69 6e 74 6f 20 61 | 6e 20 69 6e 74 65 72 6e |n into a|n intern|
|00006180| 61 6c 20 63 6f 64 65 20 | 2a 2f 0a 58 0a 70 72 69 |al code |*/.X.pri|
|00006190| 76 61 74 65 20 69 6e 74 | 0a 64 6f 5f 63 6f 6d 70 |vate int|.do_comp|
|000061a0| 28 6b 69 6e 64 29 0a 58 | 7b 0a 58 09 63 68 61 72 |(kind).X|{.X.char|
|000061b0| 09 2a 6c 61 73 74 5f 70 | 2c 0a 58 09 09 2a 63 68 |.*last_p|,.X..*ch|
|000061c0| 72 5f 63 6e 74 20 3d 20 | 30 3b 0a 58 09 69 6e 74 |r_cnt = |0;.X.int|
|000061d0| 09 70 61 72 65 6e 73 5b | 4e 50 41 52 5d 2c 0a 58 |.parens[|NPAR],.X|
|000061e0| 09 09 2a 70 61 72 65 6e | 70 2c 0a 58 09 09 63 2c |..*paren|p,.X..c,|
|000061f0| 0a 58 09 09 72 65 74 5f | 63 6f 64 65 3b 0a 58 0a |.X..ret_|code;.X.|
|00006200| 58 09 70 61 72 65 6e 70 | 20 3d 20 70 61 72 65 6e |X.parenp| = paren|
|00006210| 73 3b 0a 58 09 6c 61 73 | 74 5f 70 20 3d 20 30 3b |s;.X.las|t_p = 0;|
|00006220| 0a 58 09 72 65 74 5f 63 | 6f 64 65 20 3d 20 31 3b |.X.ret_c|ode = 1;|
|00006230| 0a 58 0a 58 09 69 66 20 | 28 6b 69 6e 64 20 3d 3d |.X.X.if |(kind ==|
|00006240| 20 4f 4b 41 59 5f 52 45 | 29 20 7b 0a 58 09 09 2a | OKAY_RE|) {.X..*|
|00006250| 63 6f 6d 70 5f 70 2b 2b | 20 3d 20 4f 50 45 4e 50 |comp_p++| = OPENP|
|00006260| 3b 0a 58 09 09 2a 63 6f | 6d 70 5f 70 2b 2b 20 3d |;.X..*co|mp_p++ =|
|00006270| 20 6e 70 61 72 65 6e 73 | 3b 0a 58 09 09 2a 70 61 | nparens|;.X..*pa|
|00006280| 72 65 6e 70 2b 2b 20 3d | 20 6e 70 61 72 65 6e 73 |renp++ =| nparens|
|00006290| 2b 2b 3b 0a 58 09 09 73 | 74 61 72 74 5f 70 20 3d |++;.X..s|tart_p =|
|000062a0| 20 63 6f 6d 70 5f 70 3b | 0a 58 09 7d 0a 58 0a 58 | comp_p;|.X.}.X.X|
|000062b0| 09 77 68 69 6c 65 20 28 | 63 20 3d 20 52 45 67 65 |.while (|c = REge|
|000062c0| 74 63 28 29 29 20 7b 0a | 58 09 09 69 66 20 28 63 |tc()) {.|X..if (c|
|000062d0| 6f 6d 70 5f 70 20 3e 20 | 26 63 75 72 5f 63 6f 6d |omp_p > |&cur_com|
|000062e0| 70 62 5b 28 73 69 7a 65 | 6f 66 20 63 6f 6d 70 62 |pb[(size|of compb|
|000062f0| 75 66 29 20 2d 20 36 5d | 29 0a 74 6f 6f 6c 6f 6e |uf) - 6]|).toolon|
|00006300| 67 3a 09 09 63 6f 6d 70 | 6c 61 69 6e 28 22 53 65 |g:..comp|lain("Se|
|00006310| 61 72 63 68 20 73 74 72 | 69 6e 67 20 74 6f 6f 20 |arch str|ing too |
|00006320| 6c 6f 6e 67 2f 63 6f 6d | 70 6c 65 78 2e 22 29 3b |long/com|plex.");|
|00006330| 0a 58 09 09 69 66 20 28 | 63 20 21 3d 20 27 2a 27 |.X..if (|c != '*'|
|00006340| 29 0a 58 09 09 09 6c 61 | 73 74 5f 70 20 3d 20 63 |).X...la|st_p = c|
|00006350| 6f 6d 70 5f 70 3b 0a 58 | 0a 58 09 09 69 66 20 28 |omp_p;.X|.X..if (|
|00006360| 6b 69 6e 64 20 3d 3d 20 | 4e 4f 52 4d 20 26 26 20 |kind == |NORM && |
|00006370| 69 6e 64 65 78 28 22 2e | 5b 2a 22 2c 20 63 29 20 |index(".|[*", c) |
|00006380| 21 3d 20 30 29 0a 58 09 | 09 09 67 6f 74 6f 20 64 |!= 0).X.|..goto d|
|00006390| 65 66 63 68 61 72 3b 0a | 58 09 09 73 77 69 74 63 |efchar;.|X..switc|
|000063a0| 68 20 28 63 29 20 7b 0a | 58 09 09 63 61 73 65 20 |h (c) {.|X..case |
|000063b0| 27 5c 5c 27 3a 0a 58 09 | 09 09 73 77 69 74 63 68 |'\\':.X.|..switch|
|000063c0| 20 28 63 20 3d 20 52 45 | 67 65 74 63 28 29 29 20 | (c = RE|getc()) |
|000063d0| 7b 0a 58 09 09 09 63 61 | 73 65 20 30 3a 0a 58 09 |{.X...ca|se 0:.X.|
|000063e0| 09 09 09 63 6f 6d 70 6c | 61 69 6e 28 22 50 72 65 |...compl|ain("Pre|
|000063f0| 6d 61 74 75 72 65 20 65 | 6e 64 20 6f 66 20 70 61 |mature e|nd of pa|
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.