| ofs | hex dump | ascii |
|---|
| 0000 | 56 69 6d 9f 55 6e 44 6f e5 00 03 c9 0a 98 ba 1f 07 d7 ad af 4d 4a f4 5c 16 9f fb a0 c7 6a d0 d7 | Vim.UnDo............MJ.\.....j.. |
| 0020 | f8 4c a7 8e e2 ea 2b c7 2e 3f bf 00 00 00 58 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 01 00 | .L....+..?....X................. |
| 0040 | 00 00 13 00 00 00 00 00 00 00 13 00 00 00 13 00 00 00 13 00 00 00 00 6a 5d 34 8e 04 01 00 00 00 | .......................j]4...... |
| 0060 | 0c 00 5f d0 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 00 | .._............................. |
| 0080 | 00 00 00 00 ff ff ff ff 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 00a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 00c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 00e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 01a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 01c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 01e0 | 00 00 00 00 00 00 6a 5d 30 c6 04 01 00 00 00 02 00 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 | ......j]0....................... |
| 0200 | 00 00 01 00 00 00 00 f5 18 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 35 81 f5 18 00 00 00 | .........................5...... |
| 0220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 28 00 00 00 01 00 00 00 00 00 00 00 00 00 00 | .................(.............. |
| 0240 | 00 00 00 00 00 00 00 00 00 5c 03 00 00 00 00 00 00 35 81 5f d0 00 00 00 01 00 00 00 03 00 00 00 | .........\.......5._............ |
| 0260 | 00 00 00 00 00 00 00 00 02 00 00 00 01 00 00 00 00 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 | ................................ |
| 0280 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 02a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 02c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 02e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 03a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 03c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6a 5d 31 42 04 01 00 00 00 | .......................j]1B..... |
| 03e0 | 00 00 f5 18 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 29 00 00 00 1f 23 64 65 66 69 6e 65 20 | ...................)....#define. |
| 0400 | 5f 50 4f 53 49 58 5f 43 5f 53 4f 55 52 43 45 20 31 39 39 33 30 39 4c 00 00 00 12 23 69 6e 63 6c | _POSIX_C_SOURCE.199309L....#incl |
| 0420 | 75 64 65 20 3c 73 74 64 69 6f 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 6c 69 | ude.<stdio.h>....#include.<stdli |
| 0440 | 62 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 73 74 72 69 6e 67 2e 68 3e 00 00 00 13 23 | b.h>....#include.<string.h>....# |
| 0460 | 69 6e 63 6c 75 64 65 20 3c 75 6e 69 73 74 64 2e 68 3e 00 00 00 15 23 69 6e 63 6c 75 64 65 20 3c | include.<unistd.h>....#include.< |
| 0480 | 68 69 73 74 65 64 69 74 2e 68 3e 00 00 00 00 00 00 00 24 73 74 61 74 69 63 20 63 68 61 72 20 2a | histedit.h>.......$static.char.* |
| 04a0 | 67 65 74 5f 70 72 6f 6d 70 74 28 45 64 69 74 4c 69 6e 65 20 2a 65 29 00 00 00 01 7b 00 00 00 1a | get_prompt(EditLine.*e)....{.... |
| 04c0 | 20 20 20 20 73 74 61 74 69 63 20 63 68 61 72 20 70 72 6f 6d 70 74 5b 33 5d 3b 00 00 00 2c 20 20 | ....static.char.prompt[3];...,.. |
| 04e0 | 20 20 70 72 6f 6d 70 74 5b 30 5d 20 3d 20 28 67 65 74 75 69 64 28 29 20 3d 3d 20 30 29 20 3f 20 | ..prompt[0].=.(getuid().==.0).?. |
| 0500 | 27 23 27 20 3a 20 27 24 27 3b 00 00 00 14 20 20 20 20 70 72 6f 6d 70 74 5b 31 5d 20 3d 20 27 20 | '#'.:.'$';........prompt[1].=.'. |
| 0520 | 27 3b 00 00 00 15 20 20 20 20 70 72 6f 6d 70 74 5b 32 5d 20 3d 20 27 5c 30 27 3b 00 00 00 12 20 | ';........prompt[2].=.'\0';..... |
| 0540 | 20 20 20 72 65 74 75 72 6e 20 70 72 6f 6d 70 74 3b 00 00 00 01 7d 00 00 00 00 00 00 00 14 76 6f | ...return.prompt;....}........vo |
| 0560 | 69 64 20 72 75 6e 5f 73 68 65 6c 6c 28 76 6f 69 64 29 00 00 00 01 7b 00 00 00 11 20 20 20 20 45 | id.run_shell(void)....{........E |
| 0580 | 64 69 74 4c 69 6e 65 20 2a 65 6c 3b 00 00 00 12 20 20 20 20 48 69 73 74 6f 72 79 20 2a 68 69 73 | ditLine.*el;........History.*his |
| 05a0 | 74 3b 00 00 00 11 20 20 20 20 48 69 73 74 45 76 65 6e 74 20 65 76 3b 00 00 00 0e 20 20 20 20 69 | t;........HistEvent.ev;........i |
| 05c0 | 6e 74 20 63 6f 75 6e 74 3b 00 00 00 15 20 20 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 6c 69 6e | nt.count;........const.char.*lin |
| 05e0 | 65 3b 00 00 00 00 00 00 00 2f 20 20 20 20 65 6c 20 3d 20 65 6c 5f 69 6e 69 74 28 22 6d 73 68 22 | e;......./....el.=.el_init("msh" |
| 0600 | 2c 20 73 74 64 69 6e 2c 20 73 74 64 6f 75 74 2c 20 73 74 64 65 72 72 29 3b 00 00 00 1a 20 20 20 | ,.stdin,.stdout,.stderr);....... |
| 0620 | 20 68 69 73 74 20 3d 20 68 69 73 74 6f 72 79 5f 69 6e 69 74 28 29 3b 00 00 00 27 20 20 20 20 68 | .hist.=.history_init();...'....h |
| 0640 | 69 73 74 6f 72 79 28 68 69 73 74 2c 20 26 65 76 2c 20 48 5f 53 45 54 53 49 5a 45 2c 20 31 30 30 | istory(hist,.&ev,.H_SETSIZE,.100 |
| 0660 | 29 3b 00 00 00 27 20 20 20 20 65 6c 5f 73 65 74 28 65 6c 2c 20 45 4c 5f 48 49 53 54 2c 20 68 69 | );...'....el_set(el,.EL_HIST,.hi |
| 0680 | 73 74 6f 72 79 2c 20 68 69 73 74 29 3b 00 00 00 26 20 20 20 20 65 6c 5f 73 65 74 28 65 6c 2c 20 | story,.hist);...&....el_set(el,. |
| 06a0 | 45 4c 5f 50 52 4f 4d 50 54 2c 20 67 65 74 5f 70 72 6f 6d 70 74 29 3b 00 00 00 20 20 20 20 20 65 | EL_PROMPT,.get_prompt);........e |
| 06c0 | 6c 5f 73 65 74 28 65 6c 2c 20 45 4c 5f 45 44 49 54 4f 52 2c 20 22 76 69 22 29 3b 00 00 00 00 00 | l_set(el,.EL_EDITOR,."vi");..... |
| 06e0 | 00 00 32 20 20 20 20 77 68 69 6c 65 20 28 28 6c 69 6e 65 20 3d 20 65 6c 5f 67 65 74 73 28 65 6c | ..2....while.((line.=.el_gets(el |
| 0700 | 2c 20 26 63 6f 75 6e 74 29 29 20 21 3d 20 4e 55 4c 4c 29 20 7b 00 00 00 18 20 20 20 20 20 20 20 | ,.&count)).!=.NULL).{........... |
| 0720 | 20 69 66 20 28 63 6f 75 6e 74 20 3e 20 31 29 20 7b 00 00 00 2e 20 20 20 20 20 20 20 20 20 20 20 | .if.(count.>.1).{............... |
| 0740 | 20 68 69 73 74 6f 72 79 28 68 69 73 74 2c 20 26 65 76 2c 20 48 5f 45 4e 54 45 52 2c 20 6c 69 6e | .history(hist,.&ev,.H_ENTER,.lin |
| 0760 | 65 29 3b 00 00 00 19 20 20 20 20 20 20 20 20 20 20 20 20 73 79 73 74 65 6d 28 6c 69 6e 65 29 3b | e);................system(line); |
| 0780 | 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 05 20 20 20 20 7d 00 00 00 00 00 00 00 16 20 20 | ............}........}.......... |
| 07a0 | 20 20 68 69 73 74 6f 72 79 5f 65 6e 64 28 68 69 73 74 29 3b 00 00 00 0f 20 20 20 20 65 6c 5f 65 | ..history_end(hist);........el_e |
| 07c0 | 6e 64 28 65 6c 29 3b 00 00 00 01 7d 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 29 00 00 00 | nd(el);....}5...............)... |
| 07e0 | 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 5d 03 00 00 00 00 00 00 01 00 00 00 | ....................]........... |
| 0800 | 00 00 00 00 35 81 5f d0 00 00 00 02 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 03 00 00 00 01 | ....5._......................... |
| 0820 | 00 00 00 00 00 00 00 00 ff ff ff ff 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0840 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0860 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0880 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 08a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 08c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 08e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0900 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0920 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0940 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0960 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0980 | 00 00 00 00 00 00 00 00 00 00 6a 5d 31 42 04 01 00 00 00 03 00 f5 18 00 00 00 00 00 00 00 00 00 | ..........j]1B.................. |
| 09a0 | 00 00 00 00 00 00 01 00 00 00 00 f5 18 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 35 81 f5 | .............................5.. |
| 09c0 | 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 45 00 00 00 01 00 00 00 00 00 00 | .....................E.......... |
| 09e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 2e 06 00 00 00 00 00 00 35 81 5f d0 00 00 00 03 00 00 00 | .....................5._........ |
| 0a00 | 05 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 01 00 00 00 00 00 00 00 00 ff ff ff ff 00 01 00 | ................................ |
| 0a20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0a40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0a60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0a80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0aa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0ac0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0ae0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0b00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0b20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0b40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0b60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6a 5d 31 84 04 | ...........................j]1.. |
| 0b80 | 01 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 46 00 00 00 1f 23 64 65 66 | .......................F....#def |
| 0ba0 | 69 6e 65 20 5f 50 4f 53 49 58 5f 43 5f 53 4f 55 52 43 45 20 32 30 30 38 30 39 4c 00 00 00 12 23 | ine._POSIX_C_SOURCE.200809L....# |
| 0bc0 | 69 6e 63 6c 75 64 65 20 3c 73 74 64 69 6f 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 73 | include.<stdio.h>....#include.<s |
| 0be0 | 74 64 6c 69 62 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 73 74 72 69 6e 67 2e 68 3e 00 | tdlib.h>....#include.<string.h>. |
| 0c00 | 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 75 6e 69 73 74 64 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 | ...#include.<unistd.h>....#inclu |
| 0c20 | 64 65 20 3c 73 69 67 6e 61 6c 2e 68 3e 00 00 00 15 23 69 6e 63 6c 75 64 65 20 3c 73 79 73 2f 77 | de.<signal.h>....#include.<sys/w |
| 0c40 | 61 69 74 2e 68 3e 00 00 00 15 23 69 6e 63 6c 75 64 65 20 3c 68 69 73 74 65 64 69 74 2e 68 3e 00 | ait.h>....#include.<histedit.h>. |
| 0c60 | 00 00 00 00 00 00 27 73 74 61 74 69 63 20 63 68 61 72 20 2a 70 72 6f 6d 70 74 5f 66 75 6e 63 28 | ......'static.char.*prompt_func( |
| 0c80 | 45 64 69 74 4c 69 6e 65 20 2a 65 29 20 7b 00 00 00 17 20 20 20 20 73 74 61 74 69 63 20 63 68 61 | EditLine.*e).{........static.cha |
| 0ca0 | 72 20 62 75 66 5b 33 5d 3b 00 00 00 29 20 20 20 20 62 75 66 5b 30 5d 20 3d 20 28 67 65 74 75 69 | r.buf[3];...)....buf[0].=.(getui |
| 0cc0 | 64 28 29 20 3d 3d 20 30 29 20 3f 20 27 23 27 20 3a 20 27 24 27 3b 00 00 00 20 20 20 20 20 62 75 | d().==.0).?.'#'.:.'$';........bu |
| 0ce0 | 66 5b 31 5d 20 3d 20 27 20 27 3b 20 62 75 66 5b 32 5d 20 3d 20 27 5c 30 27 3b 00 00 00 0f 20 20 | f[1].=.'.';.buf[2].=.'\0';...... |
| 0d00 | 20 20 72 65 74 75 72 6e 20 62 75 66 3b 00 00 00 01 7d 00 00 00 00 00 00 00 21 73 74 61 74 69 63 | ..return.buf;....}.......!static |
| 0d20 | 20 76 6f 69 64 20 65 78 65 63 75 74 65 28 63 68 61 72 20 2a 6c 69 6e 65 29 20 7b 00 00 00 13 20 | .void.execute(char.*line).{..... |
| 0d40 | 20 20 20 63 68 61 72 20 2a 61 72 67 73 5b 36 34 5d 3b 00 00 00 0e 20 20 20 20 69 6e 74 20 69 20 | ...char.*args[64];........int.i. |
| 0d60 | 3d 20 30 3b 00 00 00 0e 20 20 20 20 70 69 64 5f 74 20 70 69 64 3b 00 00 00 28 20 20 20 20 63 68 | =.0;........pid_t.pid;...(....ch |
| 0d80 | 61 72 20 2a 74 6f 6b 65 6e 20 3d 20 73 74 72 74 6f 6b 28 6c 69 6e 65 2c 20 22 20 5c 74 5c 6e 22 | ar.*token.=.strtok(line,.".\t\n" |
| 0da0 | 29 3b 00 00 00 00 00 00 00 1d 20 20 20 20 77 68 69 6c 65 20 28 74 6f 6b 65 6e 20 26 26 20 69 20 | );............while.(token.&&.i. |
| 0dc0 | 3c 20 36 33 29 20 7b 00 00 00 1a 20 20 20 20 20 20 20 20 61 72 67 73 5b 69 2b 2b 5d 20 3d 20 74 | <.63).{............args[i++].=.t |
| 0de0 | 6f 6b 65 6e 3b 00 00 00 26 20 20 20 20 20 20 20 20 74 6f 6b 65 6e 20 3d 20 73 74 72 74 6f 6b 28 | oken;...&........token.=.strtok( |
| 0e00 | 4e 55 4c 4c 2c 20 22 20 5c 74 5c 6e 22 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 13 20 20 20 20 | NULL,.".\t\n");........}........ |
| 0e20 | 61 72 67 73 5b 69 5d 20 3d 20 4e 55 4c 4c 3b 00 00 00 00 00 00 00 17 20 20 20 20 69 66 20 28 69 | args[i].=.NULL;............if.(i |
| 0e40 | 20 3d 3d 20 30 29 20 72 65 74 75 72 6e 3b 00 00 00 00 00 00 00 25 20 20 20 20 69 66 20 28 73 74 | .==.0).return;.......%....if.(st |
| 0e60 | 72 63 6d 70 28 61 72 67 73 5b 30 5d 2c 20 22 63 64 22 29 20 3d 3d 20 30 29 20 7b 00 00 00 49 20 | rcmp(args[0],."cd").==.0).{...I. |
| 0e80 | 20 20 20 20 20 20 20 69 66 20 28 63 68 64 69 72 28 61 72 67 73 5b 31 5d 20 3f 20 61 72 67 73 5b | .......if.(chdir(args[1].?.args[ |
| 0ea0 | 31 5d 20 3a 20 67 65 74 65 6e 76 28 22 48 4f 4d 45 22 29 29 20 21 3d 20 30 29 20 70 65 72 72 6f | 1].:.getenv("HOME")).!=.0).perro |
| 0ec0 | 72 28 22 63 64 22 29 3b 00 00 00 0f 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 00 00 00 05 20 | r("cd");............return;..... |
| 0ee0 | 20 20 20 7d 00 00 00 2e 20 20 20 20 69 66 20 28 73 74 72 63 6d 70 28 61 72 67 73 5b 30 5d 2c 20 | ...}........if.(strcmp(args[0],. |
| 0f00 | 22 65 78 69 74 22 29 20 3d 3d 20 30 29 20 65 78 69 74 28 30 29 3b 00 00 00 00 00 00 00 11 20 20 | "exit").==.0).exit(0);.......... |
| 0f20 | 20 20 70 69 64 20 3d 20 66 6f 72 6b 28 29 3b 00 00 00 13 20 20 20 20 69 66 20 28 70 69 64 20 3d | ..pid.=.fork();........if.(pid.= |
| 0f40 | 3d 20 30 29 20 7b 00 00 00 1e 20 20 20 20 20 20 20 20 65 78 65 63 76 70 28 61 72 67 73 5b 30 5d | =.0).{............execvp(args[0] |
| 0f60 | 2c 20 61 72 67 73 29 3b 00 00 00 19 20 20 20 20 20 20 20 20 70 65 72 72 6f 72 28 22 65 78 65 63 | ,.args);............perror("exec |
| 0f80 | 76 70 22 29 3b 00 00 00 10 20 20 20 20 20 20 20 20 65 78 69 74 28 31 29 3b 00 00 00 19 20 20 20 | vp");............exit(1);....... |
| 0fa0 | 20 7d 20 65 6c 73 65 20 69 66 20 28 70 69 64 20 3e 20 30 29 20 7b 00 00 00 13 20 20 20 20 20 20 | .}.else.if.(pid.>.0).{.......... |
| 0fc0 | 20 20 77 61 69 74 28 4e 55 4c 4c 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 | ..wait(NULL);........}....}..... |
| 0fe0 | 00 00 16 76 6f 69 64 20 72 75 6e 5f 73 68 65 6c 6c 28 76 6f 69 64 29 20 7b 00 00 00 39 20 20 20 | ...void.run_shell(void).{...9... |
| 1000 | 20 45 64 69 74 4c 69 6e 65 20 2a 65 6c 20 3d 20 65 6c 5f 69 6e 69 74 28 22 6d 73 68 22 2c 20 73 | .EditLine.*el.=.el_init("msh",.s |
| 1020 | 74 64 69 6e 2c 20 73 74 64 6f 75 74 2c 20 73 74 64 65 72 72 29 3b 00 00 00 23 20 20 20 20 48 69 | tdin,.stdout,.stderr);...#....Hi |
| 1040 | 73 74 6f 72 79 20 2a 68 69 73 74 20 3d 20 68 69 73 74 6f 72 79 5f 69 6e 69 74 28 29 3b 00 00 00 | story.*hist.=.history_init();... |
| 1060 | 11 20 20 20 20 48 69 73 74 45 76 65 6e 74 20 65 76 3b 00 00 00 15 20 20 20 20 63 6f 6e 73 74 20 | .....HistEvent.ev;........const. |
| 1080 | 63 68 61 72 20 2a 6c 69 6e 65 3b 00 00 00 0e 20 20 20 20 69 6e 74 20 63 6f 75 6e 74 3b 00 00 00 | char.*line;........int.count;... |
| 10a0 | 00 00 00 00 27 20 20 20 20 68 69 73 74 6f 72 79 28 68 69 73 74 2c 20 26 65 76 2c 20 48 5f 53 45 | ....'....history(hist,.&ev,.H_SE |
| 10c0 | 54 53 49 5a 45 2c 20 31 30 30 29 3b 00 00 00 27 20 20 20 20 65 6c 5f 73 65 74 28 65 6c 2c 20 45 | TSIZE,.100);...'....el_set(el,.E |
| 10e0 | 4c 5f 48 49 53 54 2c 20 68 69 73 74 6f 72 79 2c 20 68 69 73 74 29 3b 00 00 00 27 20 20 20 20 65 | L_HIST,.history,.hist);...'....e |
| 1100 | 6c 5f 73 65 74 28 65 6c 2c 20 45 4c 5f 50 52 4f 4d 50 54 2c 20 70 72 6f 6d 70 74 5f 66 75 6e 63 | l_set(el,.EL_PROMPT,.prompt_func |
| 1120 | 29 3b 00 00 00 20 20 20 20 20 65 6c 5f 73 65 74 28 65 6c 2c 20 45 4c 5f 45 44 49 54 4f 52 2c 20 | );........el_set(el,.EL_EDITOR,. |
| 1140 | 22 76 69 22 29 3b 00 00 00 1c 20 20 20 20 73 69 67 6e 61 6c 28 53 49 47 49 4e 54 2c 20 53 49 47 | "vi");........signal(SIGINT,.SIG |
| 1160 | 5f 49 47 4e 29 3b 00 00 00 00 00 00 00 3f 20 20 20 20 77 68 69 6c 65 20 28 28 6c 69 6e 65 20 3d | _IGN);.......?....while.((line.= |
| 1180 | 20 65 6c 5f 67 65 74 73 28 65 6c 2c 20 26 63 6f 75 6e 74 29 29 20 21 3d 20 4e 55 4c 4c 20 26 26 | .el_gets(el,.&count)).!=.NULL.&& |
| 11a0 | 20 63 6f 75 6e 74 20 3e 20 31 29 20 7b 00 00 00 21 20 20 20 20 20 20 20 20 63 68 61 72 20 2a 63 | .count.>.1).{...!........char.*c |
| 11c0 | 6d 64 20 3d 20 73 74 72 64 75 70 28 6c 69 6e 65 29 3b 00 00 00 12 20 20 20 20 20 20 20 20 69 66 | md.=.strdup(line);............if |
| 11e0 | 20 28 63 6d 64 29 20 7b 00 00 00 2e 20 20 20 20 20 20 20 20 20 20 20 20 68 69 73 74 6f 72 79 28 | .(cmd).{................history( |
| 1200 | 68 69 73 74 2c 20 26 65 76 2c 20 48 5f 45 4e 54 45 52 2c 20 6c 69 6e 65 29 3b 00 00 00 19 20 20 | hist,.&ev,.H_ENTER,.line);...... |
| 1220 | 20 20 20 20 20 20 20 20 20 20 65 78 65 63 75 74 65 28 63 6d 64 29 3b 00 00 00 16 20 20 20 20 20 | ..........execute(cmd);......... |
| 1240 | 20 20 20 20 20 20 20 66 72 65 65 28 63 6d 64 29 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 | .......free(cmd);............}.. |
| 1260 | 00 05 20 20 20 20 7d 00 00 00 0f 20 20 20 20 65 6c 5f 65 6e 64 28 65 6c 29 3b 00 00 00 16 20 20 | ......}........el_end(el);...... |
| 1280 | 20 20 68 69 73 74 6f 72 79 5f 65 6e 64 28 68 69 73 74 29 3b 00 00 00 01 7d 35 81 f5 18 00 00 00 | ..history_end(hist);....}5...... |
| 12a0 | 00 00 00 00 00 00 00 00 00 46 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........F...................... |
| 12c0 | 00 2f 06 00 00 00 00 00 00 01 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 04 00 00 00 06 00 00 00 | ./...............5._............ |
| 12e0 | 00 00 00 00 00 00 00 00 05 00 00 00 01 00 00 00 00 00 00 00 00 ff ff ff ff 00 03 00 00 00 00 00 | ................................ |
| 1300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 13a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 13c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 13e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1400 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1440 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6a 5d 31 85 04 01 00 00 00 | .......................j]1...... |
| 1460 | 04 00 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 f5 18 00 00 00 01 00 00 | ................................ |
| 1480 | 00 00 00 00 00 00 00 00 00 00 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ..........5..................... |
| 14a0 | 00 00 4a 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b4 06 00 00 00 00 | ..J............................. |
| 14c0 | 00 00 35 81 5f d0 00 00 00 05 00 00 00 07 00 00 00 00 00 00 00 00 00 00 00 06 00 00 00 01 00 00 | ..5._........................... |
| 14e0 | 00 00 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1500 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1520 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1540 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1560 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1580 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 15a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 15c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 15e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1600 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1620 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1640 | 00 00 00 00 00 00 00 00 6a 5d 31 e4 04 01 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 02 00 00 00 | ........j]1..................... |
| 1660 | 00 00 00 00 4b 00 00 00 1f 23 64 65 66 69 6e 65 20 5f 50 4f 53 49 58 5f 43 5f 53 4f 55 52 43 45 | ....K....#define._POSIX_C_SOURCE |
| 1680 | 20 32 30 30 38 30 39 4c 00 00 00 12 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 69 6f 2e 68 3e 00 00 | .200809L....#include.<stdio.h>.. |
| 16a0 | 00 13 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 6c 69 62 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 | ..#include.<stdlib.h>....#includ |
| 16c0 | 65 20 3c 73 74 72 69 6e 67 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 75 6e 69 73 74 64 | e.<string.h>....#include.<unistd |
| 16e0 | 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 73 69 67 6e 61 6c 2e 68 3e 00 00 00 15 23 69 | .h>....#include.<signal.h>....#i |
| 1700 | 6e 63 6c 75 64 65 20 3c 73 79 73 2f 77 61 69 74 2e 68 3e 00 00 00 15 23 69 6e 63 6c 75 64 65 20 | nclude.<sys/wait.h>....#include. |
| 1720 | 3c 68 69 73 74 65 64 69 74 2e 68 3e 00 00 00 00 00 00 00 27 73 74 61 74 69 63 20 63 68 61 72 20 | <histedit.h>.......'static.char. |
| 1740 | 2a 70 72 6f 6d 70 74 5f 66 75 6e 63 28 45 64 69 74 4c 69 6e 65 20 2a 65 29 20 7b 00 00 00 0c 20 | *prompt_func(EditLine.*e).{..... |
| 1760 | 20 20 20 28 76 6f 69 64 29 65 3b 00 00 00 17 20 20 20 20 73 74 61 74 69 63 20 63 68 61 72 20 62 | ...(void)e;........static.char.b |
| 1780 | 75 66 5b 33 5d 3b 00 00 00 29 20 20 20 20 62 75 66 5b 30 5d 20 3d 20 28 67 65 74 75 69 64 28 29 | uf[3];...)....buf[0].=.(getuid() |
| 17a0 | 20 3d 3d 20 30 29 20 3f 20 27 23 27 20 3a 20 27 24 27 3b 00 00 00 20 20 20 20 20 62 75 66 5b 31 | .==.0).?.'#'.:.'$';........buf[1 |
| 17c0 | 5d 20 3d 20 27 20 27 3b 20 62 75 66 5b 32 5d 20 3d 20 27 5c 30 27 3b 00 00 00 0f 20 20 20 20 72 | ].=.'.';.buf[2].=.'\0';........r |
| 17e0 | 65 74 75 72 6e 20 62 75 66 3b 00 00 00 01 7d 00 00 00 00 00 00 00 21 73 74 61 74 69 63 20 76 6f | eturn.buf;....}.......!static.vo |
| 1800 | 69 64 20 65 78 65 63 75 74 65 28 63 68 61 72 20 2a 6c 69 6e 65 29 20 7b 00 00 00 13 20 20 20 20 | id.execute(char.*line).{........ |
| 1820 | 63 68 61 72 20 2a 61 72 67 73 5b 36 34 5d 3b 00 00 00 0e 20 20 20 20 69 6e 74 20 69 20 3d 20 30 | char.*args[64];........int.i.=.0 |
| 1840 | 3b 00 00 00 0e 20 20 20 20 70 69 64 5f 74 20 70 69 64 3b 00 00 00 2a 20 20 20 20 63 68 61 72 20 | ;........pid_t.pid;...*....char. |
| 1860 | 2a 74 6f 6b 65 6e 20 3d 20 73 74 72 74 6f 6b 28 6c 69 6e 65 2c 20 22 20 5c 74 5c 6e 5c 72 22 29 | *token.=.strtok(line,.".\t\n\r") |
| 1880 | 3b 00 00 00 00 00 00 00 1d 20 20 20 20 77 68 69 6c 65 20 28 74 6f 6b 65 6e 20 26 26 20 69 20 3c | ;............while.(token.&&.i.< |
| 18a0 | 20 36 33 29 20 7b 00 00 00 1a 20 20 20 20 20 20 20 20 61 72 67 73 5b 69 2b 2b 5d 20 3d 20 74 6f | .63).{............args[i++].=.to |
| 18c0 | 6b 65 6e 3b 00 00 00 28 20 20 20 20 20 20 20 20 74 6f 6b 65 6e 20 3d 20 73 74 72 74 6f 6b 28 4e | ken;...(........token.=.strtok(N |
| 18e0 | 55 4c 4c 2c 20 22 20 5c 74 5c 6e 5c 72 22 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 13 20 20 20 | ULL,.".\t\n\r");........}....... |
| 1900 | 20 61 72 67 73 5b 69 5d 20 3d 20 4e 55 4c 4c 3b 00 00 00 00 00 00 00 17 20 20 20 20 69 66 20 28 | .args[i].=.NULL;............if.( |
| 1920 | 69 20 3d 3d 20 30 29 20 72 65 74 75 72 6e 3b 00 00 00 00 00 00 00 25 20 20 20 20 69 66 20 28 73 | i.==.0).return;.......%....if.(s |
| 1940 | 74 72 63 6d 70 28 61 72 67 73 5b 30 5d 2c 20 22 63 64 22 29 20 3d 3d 20 30 29 20 7b 00 00 00 3d | trcmp(args[0],."cd").==.0).{...= |
| 1960 | 20 20 20 20 20 20 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 64 69 72 20 3d 20 61 72 67 73 5b 31 | ........const.char.*dir.=.args[1 |
| 1980 | 5d 20 3f 20 61 72 67 73 5b 31 5d 20 3a 20 67 65 74 65 6e 76 28 22 48 4f 4d 45 22 29 3b 00 00 00 | ].?.args[1].:.getenv("HOME");... |
| 19a0 | 31 20 20 20 20 20 20 20 20 69 66 20 28 64 69 72 20 26 26 20 63 68 64 69 72 28 64 69 72 29 20 21 | 1........if.(dir.&&.chdir(dir).! |
| 19c0 | 3d 20 30 29 20 70 65 72 72 6f 72 28 22 63 64 22 29 3b 00 00 00 0f 20 20 20 20 20 20 20 20 72 65 | =.0).perror("cd");............re |
| 19e0 | 74 75 72 6e 3b 00 00 00 05 20 20 20 20 7d 00 00 00 2e 20 20 20 20 69 66 20 28 73 74 72 63 6d 70 | turn;........}........if.(strcmp |
| 1a00 | 28 61 72 67 73 5b 30 5d 2c 20 22 65 78 69 74 22 29 20 3d 3d 20 30 29 20 65 78 69 74 28 30 29 3b | (args[0],."exit").==.0).exit(0); |
| 1a20 | 00 00 00 00 00 00 00 11 20 20 20 20 70 69 64 20 3d 20 66 6f 72 6b 28 29 3b 00 00 00 13 20 20 20 | ............pid.=.fork();....... |
| 1a40 | 20 69 66 20 28 70 69 64 20 3d 3d 20 30 29 20 7b 00 00 00 20 20 20 20 20 20 20 20 20 73 69 67 6e | .if.(pid.==.0).{............sign |
| 1a60 | 61 6c 28 53 49 47 49 4e 54 2c 20 53 49 47 5f 44 46 4c 29 3b 00 00 00 1e 20 20 20 20 20 20 20 20 | al(SIGINT,.SIG_DFL);............ |
| 1a80 | 65 78 65 63 76 70 28 61 72 67 73 5b 30 5d 2c 20 61 72 67 73 29 3b 00 00 00 19 20 20 20 20 20 20 | execvp(args[0],.args);.......... |
| 1aa0 | 20 20 70 65 72 72 6f 72 28 22 65 78 65 63 76 70 22 29 3b 00 00 00 10 20 20 20 20 20 20 20 20 65 | ..perror("execvp");............e |
| 1ac0 | 78 69 74 28 31 29 3b 00 00 00 19 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 70 69 64 20 3e 20 | xit(1);........}.else.if.(pid.>. |
| 1ae0 | 30 29 20 7b 00 00 00 13 20 20 20 20 20 20 20 20 77 61 69 74 28 4e 55 4c 4c 29 3b 00 00 00 05 20 | 0).{............wait(NULL);..... |
| 1b00 | 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 16 76 6f 69 64 20 72 75 6e 5f 73 68 65 6c 6c 28 | ...}....}........void.run_shell( |
| 1b20 | 76 6f 69 64 29 20 7b 00 00 00 39 20 20 20 20 45 64 69 74 4c 69 6e 65 20 2a 65 6c 20 3d 20 65 6c | void).{...9....EditLine.*el.=.el |
| 1b40 | 5f 69 6e 69 74 28 22 6d 73 68 22 2c 20 73 74 64 69 6e 2c 20 73 74 64 6f 75 74 2c 20 73 74 64 65 | _init("msh",.stdin,.stdout,.stde |
| 1b60 | 72 72 29 3b 00 00 00 23 20 20 20 20 48 69 73 74 6f 72 79 20 2a 68 69 73 74 20 3d 20 68 69 73 74 | rr);...#....History.*hist.=.hist |
| 1b80 | 6f 72 79 5f 69 6e 69 74 28 29 3b 00 00 00 11 20 20 20 20 48 69 73 74 45 76 65 6e 74 20 65 76 3b | ory_init();........HistEvent.ev; |
| 1ba0 | 00 00 00 15 20 20 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 6c 69 6e 65 3b 00 00 00 0e 20 20 20 | ........const.char.*line;....... |
| 1bc0 | 20 69 6e 74 20 63 6f 75 6e 74 3b 00 00 00 00 00 00 00 27 20 20 20 20 68 69 73 74 6f 72 79 28 68 | .int.count;.......'....history(h |
| 1be0 | 69 73 74 2c 20 26 65 76 2c 20 48 5f 53 45 54 53 49 5a 45 2c 20 31 30 30 29 3b 00 00 00 27 20 20 | ist,.&ev,.H_SETSIZE,.100);...'.. |
| 1c00 | 20 20 65 6c 5f 73 65 74 28 65 6c 2c 20 45 4c 5f 48 49 53 54 2c 20 68 69 73 74 6f 72 79 2c 20 68 | ..el_set(el,.EL_HIST,.history,.h |
| 1c20 | 69 73 74 29 3b 00 00 00 27 20 20 20 20 65 6c 5f 73 65 74 28 65 6c 2c 20 45 4c 5f 50 52 4f 4d 50 | ist);...'....el_set(el,.EL_PROMP |
| 1c40 | 54 2c 20 70 72 6f 6d 70 74 5f 66 75 6e 63 29 3b 00 00 00 20 20 20 20 20 65 6c 5f 73 65 74 28 65 | T,.prompt_func);........el_set(e |
| 1c60 | 6c 2c 20 45 4c 5f 45 44 49 54 4f 52 2c 20 22 76 69 22 29 3b 00 00 00 1c 20 20 20 20 73 69 67 6e | l,.EL_EDITOR,."vi");........sign |
| 1c80 | 61 6c 28 53 49 47 49 4e 54 2c 20 53 49 47 5f 49 47 4e 29 3b 00 00 00 00 00 00 00 32 20 20 20 20 | al(SIGINT,.SIG_IGN);.......2.... |
| 1ca0 | 77 68 69 6c 65 20 28 28 6c 69 6e 65 20 3d 20 65 6c 5f 67 65 74 73 28 65 6c 2c 20 26 63 6f 75 6e | while.((line.=.el_gets(el,.&coun |
| 1cc0 | 74 29 29 20 21 3d 20 4e 55 4c 4c 29 20 7b 00 00 00 18 20 20 20 20 20 20 20 20 69 66 20 28 63 6f | t)).!=.NULL).{............if.(co |
| 1ce0 | 75 6e 74 20 3e 20 31 29 20 7b 00 00 00 25 20 20 20 20 20 20 20 20 20 20 20 20 63 68 61 72 20 2a | unt.>.1).{...%............char.* |
| 1d00 | 63 6d 64 20 3d 20 73 74 72 64 75 70 28 6c 69 6e 65 29 3b 00 00 00 16 20 20 20 20 20 20 20 20 20 | cmd.=.strdup(line);............. |
| 1d20 | 20 20 20 69 66 20 28 63 6d 64 29 20 7b 00 00 00 32 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ...if.(cmd).{...2............... |
| 1d40 | 20 68 69 73 74 6f 72 79 28 68 69 73 74 2c 20 26 65 76 2c 20 48 5f 45 4e 54 45 52 2c 20 6c 69 6e | .history(hist,.&ev,.H_ENTER,.lin |
| 1d60 | 65 29 3b 00 00 00 1d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 78 65 63 75 74 65 28 63 | e);....................execute(c |
| 1d80 | 6d 64 29 3b 00 00 00 1a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 72 65 65 28 63 6d 64 | md);....................free(cmd |
| 1da0 | 29 3b 00 00 00 0d 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 09 20 20 20 20 20 20 20 20 7d | );................}............} |
| 1dc0 | 00 00 00 05 20 20 20 20 7d 00 00 00 0f 20 20 20 20 65 6c 5f 65 6e 64 28 65 6c 29 3b 00 00 00 16 | ........}........el_end(el);.... |
| 1de0 | 20 20 20 20 68 69 73 74 6f 72 79 5f 65 6e 64 28 68 69 73 74 29 3b 00 00 00 01 7d 35 81 f5 18 00 | ....history_end(hist);....}5.... |
| 1e00 | 00 00 00 00 00 00 00 00 00 00 00 4b 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 | ...........K.................... |
| 1e20 | 00 00 00 b5 06 00 00 00 00 00 00 01 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 06 00 00 00 08 00 | ...................5._.......... |
| 1e40 | 00 00 00 00 00 00 00 00 00 00 07 00 00 00 01 00 00 00 00 00 00 00 00 ff ff ff ff 00 03 00 00 00 | ................................ |
| 1e60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1e80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ea0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ec0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ee0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1f80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1fa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6a 5d 31 e4 04 01 00 | .........................j]1.... |
| 1fc0 | 00 00 05 00 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 f5 18 00 00 00 01 | ................................ |
| 1fe0 | 00 00 00 00 00 00 00 00 00 00 00 00 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ............5................... |
| 2000 | 00 00 00 00 69 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 a7 09 00 00 | ....i........................... |
| 2020 | 00 00 00 00 35 81 5f d0 00 00 00 07 00 00 00 09 00 00 00 00 00 00 00 00 00 00 00 08 00 00 00 01 | ....5._......................... |
| 2040 | 00 00 00 0c 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2060 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2080 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 20e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 21a0 | 00 00 00 00 00 00 00 00 00 00 6a 5d 32 9a 04 01 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 02 00 | ..........j]2................... |
| 21c0 | 00 00 00 00 00 00 6a 00 00 00 1f 23 64 65 66 69 6e 65 20 5f 50 4f 53 49 58 5f 43 5f 53 4f 55 52 | ......j....#define._POSIX_C_SOUR |
| 21e0 | 43 45 20 32 30 30 38 30 39 4c 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 64 65 66 2e 68 | CE.200809L....#include.<stddef.h |
| 2200 | 3e 00 00 00 12 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 69 6f 2e 68 3e 00 00 00 13 23 69 6e 63 6c | >....#include.<stdio.h>....#incl |
| 2220 | 75 64 65 20 3c 73 74 64 6c 69 62 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 73 74 72 69 | ude.<stdlib.h>....#include.<stri |
| 2240 | 6e 67 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 75 6e 69 73 74 64 2e 68 3e 00 00 00 13 | ng.h>....#include.<unistd.h>.... |
| 2260 | 23 69 6e 63 6c 75 64 65 20 3c 73 69 67 6e 61 6c 2e 68 3e 00 00 00 15 23 69 6e 63 6c 75 64 65 20 | #include.<signal.h>....#include. |
| 2280 | 3c 73 79 73 2f 77 61 69 74 2e 68 3e 00 00 00 15 23 69 6e 63 6c 75 64 65 20 3c 68 69 73 74 65 64 | <sys/wait.h>....#include.<histed |
| 22a0 | 69 74 2e 68 3e 00 00 00 00 00 00 00 27 73 74 61 74 69 63 20 63 68 61 72 20 2a 70 72 6f 6d 70 74 | it.h>.......'static.char.*prompt |
| 22c0 | 5f 66 75 6e 63 28 45 64 69 74 4c 69 6e 65 20 2a 65 29 20 7b 00 00 00 0c 20 20 20 20 28 76 6f 69 | _func(EditLine.*e).{........(voi |
| 22e0 | 64 29 65 3b 00 00 00 17 20 20 20 20 73 74 61 74 69 63 20 63 68 61 72 20 62 75 66 5b 33 5d 3b 00 | d)e;........static.char.buf[3];. |
| 2300 | 00 00 29 20 20 20 20 62 75 66 5b 30 5d 20 3d 20 28 67 65 74 75 69 64 28 29 20 3d 3d 20 30 29 20 | ..)....buf[0].=.(getuid().==.0). |
| 2320 | 3f 20 27 23 27 20 3a 20 27 24 27 3b 00 00 00 20 20 20 20 20 62 75 66 5b 31 5d 20 3d 20 27 20 27 | ?.'#'.:.'$';........buf[1].=.'.' |
| 2340 | 3b 20 62 75 66 5b 32 5d 20 3d 20 27 5c 30 27 3b 00 00 00 0f 20 20 20 20 72 65 74 75 72 6e 20 62 | ;.buf[2].=.'\0';........return.b |
| 2360 | 75 66 3b 00 00 00 01 7d 00 00 00 00 00 00 00 20 73 74 61 74 69 63 20 76 6f 69 64 20 64 6f 5f 65 | uf;....}........static.void.do_e |
| 2380 | 78 65 63 28 63 68 61 72 20 2a 63 6d 64 29 20 7b 00 00 00 1b 20 20 20 20 63 68 61 72 20 2a 61 72 | xec(char.*cmd).{........char.*ar |
| 23a0 | 67 73 5b 36 34 5d 2c 20 2a 74 6f 6b 65 6e 3b 00 00 00 0e 20 20 20 20 69 6e 74 20 69 20 3d 20 30 | gs[64],.*token;........int.i.=.0 |
| 23c0 | 3b 00 00 00 0e 20 20 20 20 70 69 64 5f 74 20 70 69 64 3b 00 00 00 00 00 00 00 23 20 20 20 20 74 | ;........pid_t.pid;.......#....t |
| 23e0 | 6f 6b 65 6e 20 3d 20 73 74 72 74 6f 6b 28 63 6d 64 2c 20 22 20 5c 74 5c 6e 5c 72 22 29 3b 00 00 | oken.=.strtok(cmd,.".\t\n\r");.. |
| 2400 | 00 1d 20 20 20 20 77 68 69 6c 65 20 28 74 6f 6b 65 6e 20 26 26 20 69 20 3c 20 36 33 29 20 7b 00 | ......while.(token.&&.i.<.63).{. |
| 2420 | 00 00 1e 20 20 20 20 20 20 20 20 69 66 20 28 74 6f 6b 65 6e 5b 30 5d 20 3d 3d 20 27 24 27 29 20 | ...........if.(token[0].==.'$'). |
| 2440 | 7b 00 00 00 2a 20 20 20 20 20 20 20 20 20 20 20 20 63 68 61 72 20 2a 65 6e 76 20 3d 20 67 65 74 | {...*............char.*env.=.get |
| 2460 | 65 6e 76 28 74 6f 6b 65 6e 20 2b 20 31 29 3b 00 00 00 27 20 20 20 20 20 20 20 20 20 20 20 20 61 | env(token.+.1);...'............a |
| 2480 | 72 67 73 5b 69 2b 2b 5d 20 3d 20 65 6e 76 20 3f 20 65 6e 76 20 3a 20 22 22 3b 00 00 00 10 20 20 | rgs[i++].=.env.?.env.:."";...... |
| 24a0 | 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 00 00 00 1e 20 20 20 20 20 20 20 20 20 20 20 20 61 72 | ......}.else.{................ar |
| 24c0 | 67 73 5b 69 2b 2b 5d 20 3d 20 74 6f 6b 65 6e 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 | gs[i++].=.token;............}... |
| 24e0 | 28 20 20 20 20 20 20 20 20 74 6f 6b 65 6e 20 3d 20 73 74 72 74 6f 6b 28 4e 55 4c 4c 2c 20 22 20 | (........token.=.strtok(NULL,.". |
| 2500 | 5c 74 5c 6e 5c 72 22 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 13 20 20 20 20 61 72 67 73 5b 69 | \t\n\r");........}........args[i |
| 2520 | 5d 20 3d 20 4e 55 4c 4c 3b 00 00 00 17 20 20 20 20 69 66 20 28 69 20 3d 3d 20 30 29 20 72 65 74 | ].=.NULL;........if.(i.==.0).ret |
| 2540 | 75 72 6e 3b 00 00 00 11 20 20 20 20 70 69 64 20 3d 20 66 6f 72 6b 28 29 3b 00 00 00 13 20 20 20 | urn;........pid.=.fork();....... |
| 2560 | 20 69 66 20 28 70 69 64 20 3d 3d 20 30 29 20 7b 00 00 00 20 20 20 20 20 20 20 20 20 73 69 67 6e | .if.(pid.==.0).{............sign |
| 2580 | 61 6c 28 53 49 47 49 4e 54 2c 20 53 49 47 5f 44 46 4c 29 3b 00 00 00 1e 20 20 20 20 20 20 20 20 | al(SIGINT,.SIG_DFL);............ |
| 25a0 | 65 78 65 63 76 70 28 61 72 67 73 5b 30 5d 2c 20 61 72 67 73 29 3b 00 00 00 41 20 20 20 20 20 20 | execvp(args[0],.args);...A...... |
| 25c0 | 20 20 66 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c 20 22 6d 73 68 3a 20 25 73 3a 20 63 6f 6d 6d | ..fprintf(stderr,."msh:.%s:.comm |
| 25e0 | 61 6e 64 20 6e 6f 74 20 66 6f 75 6e 64 5c 6e 22 2c 20 61 72 67 73 5b 30 5d 29 3b 00 00 00 10 20 | and.not.found\n",.args[0]);..... |
| 2600 | 20 20 20 20 20 20 20 65 78 69 74 28 31 29 3b 00 00 00 19 20 20 20 20 7d 20 65 6c 73 65 20 69 66 | .......exit(1);........}.else.if |
| 2620 | 20 28 70 69 64 20 3e 20 30 29 20 7b 00 00 00 13 20 20 20 20 20 20 20 20 77 61 69 74 28 4e 55 4c | .(pid.>.0).{............wait(NUL |
| 2640 | 4c 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 21 73 74 61 74 69 63 20 | L);........}....}.......!static. |
| 2660 | 76 6f 69 64 20 65 78 65 63 75 74 65 28 63 68 61 72 20 2a 6c 69 6e 65 29 20 7b 00 00 00 13 20 20 | void.execute(char.*line).{...... |
| 2680 | 20 20 63 68 61 72 20 2a 70 69 70 65 5f 70 74 72 3b 00 00 00 27 20 20 20 20 69 66 20 28 73 74 72 | ..char.*pipe_ptr;...'....if.(str |
| 26a0 | 6e 63 6d 70 28 6c 69 6e 65 2c 20 22 63 64 20 22 2c 20 33 29 20 3d 3d 20 30 29 20 7b 00 00 00 30 | ncmp(line,."cd.",.3).==.0).{...0 |
| 26c0 | 20 20 20 20 20 20 20 20 69 66 20 28 63 68 64 69 72 28 6c 69 6e 65 20 2b 20 33 29 20 21 3d 20 30 | ........if.(chdir(line.+.3).!=.0 |
| 26e0 | 29 20 70 65 72 72 6f 72 28 22 6d 73 68 22 29 3b 00 00 00 0f 20 20 20 20 20 20 20 20 72 65 74 75 | ).perror("msh");............retu |
| 2700 | 72 6e 3b 00 00 00 05 20 20 20 20 7d 00 00 00 2b 20 20 20 20 69 66 20 28 73 74 72 63 6d 70 28 6c | rn;........}...+....if.(strcmp(l |
| 2720 | 69 6e 65 2c 20 22 65 78 69 74 22 29 20 3d 3d 20 30 29 20 65 78 69 74 28 30 29 3b 00 00 00 00 00 | ine,."exit").==.0).exit(0);..... |
| 2740 | 00 00 21 20 20 20 20 70 69 70 65 5f 70 74 72 20 3d 20 73 74 72 63 68 72 28 6c 69 6e 65 2c 20 27 | ..!....pipe_ptr.=.strchr(line,.' |
| 2760 | 7c 27 29 3b 00 00 00 13 20 20 20 20 69 66 20 28 70 69 70 65 5f 70 74 72 29 20 7b 00 00 00 12 20 | |');........if.(pipe_ptr).{..... |
| 2780 | 20 20 20 20 20 20 20 69 6e 74 20 66 64 5b 32 5d 3b 00 00 00 19 20 20 20 20 20 20 20 20 2a 70 69 | .......int.fd[2];............*pi |
| 27a0 | 70 65 5f 70 74 72 20 3d 20 27 5c 30 27 3b 00 00 00 11 20 20 20 20 20 20 20 20 70 69 70 65 28 66 | pe_ptr.=.'\0';............pipe(f |
| 27c0 | 64 29 3b 00 00 00 1a 20 20 20 20 20 20 20 20 69 66 20 28 66 6f 72 6b 28 29 20 3d 3d 20 30 29 20 | d);............if.(fork().==.0). |
| 27e0 | 7b 00 00 00 1b 20 20 20 20 20 20 20 20 20 20 20 20 64 75 70 32 28 66 64 5b 31 5d 2c 20 31 29 3b | {................dup2(fd[1],.1); |
| 2800 | 00 00 00 27 20 20 20 20 20 20 20 20 20 20 20 20 63 6c 6f 73 65 28 66 64 5b 30 5d 29 3b 20 63 6c | ...'............close(fd[0]);.cl |
| 2820 | 6f 73 65 28 66 64 5b 31 5d 29 3b 00 00 00 1a 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 5f 65 78 | ose(fd[1]);................do_ex |
| 2840 | 65 63 28 6c 69 6e 65 29 3b 00 00 00 14 20 20 20 20 20 20 20 20 20 20 20 20 65 78 69 74 28 30 29 | ec(line);................exit(0) |
| 2860 | 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 1a 20 20 20 20 20 20 20 20 69 66 20 28 66 6f | ;............}............if.(fo |
| 2880 | 72 6b 28 29 20 3d 3d 20 30 29 20 7b 00 00 00 1b 20 20 20 20 20 20 20 20 20 20 20 20 64 75 70 32 | rk().==.0).{................dup2 |
| 28a0 | 28 66 64 5b 30 5d 2c 20 30 29 3b 00 00 00 27 20 20 20 20 20 20 20 20 20 20 20 20 63 6c 6f 73 65 | (fd[0],.0);...'............close |
| 28c0 | 28 66 64 5b 30 5d 29 3b 20 63 6c 6f 73 65 28 66 64 5b 31 5d 29 3b 00 00 00 22 20 20 20 20 20 20 | (fd[0]);.close(fd[1]);..."...... |
| 28e0 | 20 20 20 20 20 20 64 6f 5f 65 78 65 63 28 70 69 70 65 5f 70 74 72 20 2b 20 31 29 3b 00 00 00 14 | ......do_exec(pipe_ptr.+.1);.... |
| 2900 | 20 20 20 20 20 20 20 20 20 20 20 20 65 78 69 74 28 30 29 3b 00 00 00 09 20 20 20 20 20 20 20 20 | ............exit(0);............ |
| 2920 | 7d 00 00 00 23 20 20 20 20 20 20 20 20 63 6c 6f 73 65 28 66 64 5b 30 5d 29 3b 20 63 6c 6f 73 65 | }...#........close(fd[0]);.close |
| 2940 | 28 66 64 5b 31 5d 29 3b 00 00 00 1f 20 20 20 20 20 20 20 20 77 61 69 74 28 4e 55 4c 4c 29 3b 20 | (fd[1]);............wait(NULL);. |
| 2960 | 77 61 69 74 28 4e 55 4c 4c 29 3b 00 00 00 0c 20 20 20 20 7d 20 65 6c 73 65 20 7b 00 00 00 16 20 | wait(NULL);........}.else.{..... |
| 2980 | 20 20 20 20 20 20 20 64 6f 5f 65 78 65 63 28 6c 69 6e 65 29 3b 00 00 00 05 20 20 20 20 7d 00 00 | .......do_exec(line);........}.. |
| 29a0 | 00 01 7d 00 00 00 00 00 00 00 16 76 6f 69 64 20 72 75 6e 5f 73 68 65 6c 6c 28 76 6f 69 64 29 20 | ..}........void.run_shell(void). |
| 29c0 | 7b 00 00 00 11 20 20 20 20 45 64 69 74 4c 69 6e 65 20 2a 65 6c 3b 00 00 00 12 20 20 20 20 48 69 | {........EditLine.*el;........Hi |
| 29e0 | 73 74 6f 72 79 20 2a 68 69 73 74 3b 00 00 00 11 20 20 20 20 48 69 73 74 45 76 65 6e 74 20 65 76 | story.*hist;........HistEvent.ev |
| 2a00 | 3b 00 00 00 15 20 20 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 6c 69 6e 65 3b 00 00 00 0e 20 20 | ;........const.char.*line;...... |
| 2a20 | 20 20 69 6e 74 20 63 6f 75 6e 74 3b 00 00 00 00 00 00 00 2f 20 20 20 20 65 6c 20 3d 20 65 6c 5f | ..int.count;......./....el.=.el_ |
| 2a40 | 69 6e 69 74 28 22 6d 73 68 22 2c 20 73 74 64 69 6e 2c 20 73 74 64 6f 75 74 2c 20 73 74 64 65 72 | init("msh",.stdin,.stdout,.stder |
| 2a60 | 72 29 3b 00 00 00 1a 20 20 20 20 68 69 73 74 20 3d 20 68 69 73 74 6f 72 79 5f 69 6e 69 74 28 29 | r);........hist.=.history_init() |
| 2a80 | 3b 00 00 00 27 20 20 20 20 68 69 73 74 6f 72 79 28 68 69 73 74 2c 20 26 65 76 2c 20 48 5f 53 45 | ;...'....history(hist,.&ev,.H_SE |
| 2aa0 | 54 53 49 5a 45 2c 20 31 30 30 29 3b 00 00 00 27 20 20 20 20 65 6c 5f 73 65 74 28 65 6c 2c 20 45 | TSIZE,.100);...'....el_set(el,.E |
| 2ac0 | 4c 5f 48 49 53 54 2c 20 68 69 73 74 6f 72 79 2c 20 68 69 73 74 29 3b 00 00 00 27 20 20 20 20 65 | L_HIST,.history,.hist);...'....e |
| 2ae0 | 6c 5f 73 65 74 28 65 6c 2c 20 45 4c 5f 50 52 4f 4d 50 54 2c 20 70 72 6f 6d 70 74 5f 66 75 6e 63 | l_set(el,.EL_PROMPT,.prompt_func |
| 2b00 | 29 3b 00 00 00 20 20 20 20 20 65 6c 5f 73 65 74 28 65 6c 2c 20 45 4c 5f 45 44 49 54 4f 52 2c 20 | );........el_set(el,.EL_EDITOR,. |
| 2b20 | 22 76 69 22 29 3b 00 00 00 1c 20 20 20 20 73 69 67 6e 61 6c 28 53 49 47 49 4e 54 2c 20 53 49 47 | "vi");........signal(SIGINT,.SIG |
| 2b40 | 5f 49 47 4e 29 3b 00 00 00 00 00 00 00 32 20 20 20 20 77 68 69 6c 65 20 28 28 6c 69 6e 65 20 3d | _IGN);.......2....while.((line.= |
| 2b60 | 20 65 6c 5f 67 65 74 73 28 65 6c 2c 20 26 63 6f 75 6e 74 29 29 20 21 3d 20 4e 55 4c 4c 29 20 7b | .el_gets(el,.&count)).!=.NULL).{ |
| 2b80 | 00 00 00 18 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 75 6e 74 20 3e 20 31 29 20 7b 00 00 00 25 | ............if.(count.>.1).{...% |
| 2ba0 | 20 20 20 20 20 20 20 20 20 20 20 20 63 68 61 72 20 2a 63 6d 64 20 3d 20 73 74 72 64 75 70 28 6c | ............char.*cmd.=.strdup(l |
| 2bc0 | 69 6e 65 29 3b 00 00 00 16 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6d 64 29 20 7b 00 | ine);................if.(cmd).{. |
| 2be0 | 00 00 32 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 69 73 74 6f 72 79 28 68 69 73 74 2c | ..2................history(hist, |
| 2c00 | 20 26 65 76 2c 20 48 5f 45 4e 54 45 52 2c 20 6c 69 6e 65 29 3b 00 00 00 1d 20 20 20 20 20 20 20 | .&ev,.H_ENTER,.line);........... |
| 2c20 | 20 20 20 20 20 20 20 20 20 65 78 65 63 75 74 65 28 63 6d 64 29 3b 00 00 00 1a 20 20 20 20 20 20 | .........execute(cmd);.......... |
| 2c40 | 20 20 20 20 20 20 20 20 20 20 66 72 65 65 28 63 6d 64 29 3b 00 00 00 0d 20 20 20 20 20 20 20 20 | ..........free(cmd);............ |
| 2c60 | 20 20 20 20 7d 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 05 20 20 20 20 7d 00 00 00 0f 20 | ....}............}........}..... |
| 2c80 | 20 20 20 65 6c 5f 65 6e 64 28 65 6c 29 3b 00 00 00 16 20 20 20 20 68 69 73 74 6f 72 79 5f 65 6e | ...el_end(el);........history_en |
| 2ca0 | 64 28 68 69 73 74 29 3b 00 00 00 01 7d 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 6a 00 00 | d(hist);....}5...............j.. |
| 2cc0 | 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 a8 09 00 00 00 00 00 00 01 00 00 | ................................ |
| 2ce0 | 00 00 00 00 00 35 81 5f d0 00 00 00 08 00 00 00 0a 00 00 00 00 00 00 00 00 00 00 00 09 00 00 00 | .....5._........................ |
| 2d00 | 01 00 00 00 00 00 00 00 00 ff ff ff ff 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2d20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2d40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2d60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2d80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2da0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2dc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2de0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2e00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2e20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2e40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2e60 | 00 00 00 00 00 00 00 00 00 00 00 6a 5d 32 9b 04 01 00 00 00 07 00 f5 18 00 00 00 00 00 00 00 00 | ...........j]2.................. |
| 2e80 | 00 00 00 00 00 00 00 01 00 00 00 00 f5 18 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 35 81 | ..............................5. |
| 2ea0 | f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 51 00 00 00 01 00 00 00 00 00 | ......................Q......... |
| 2ec0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d8 08 00 00 00 00 00 00 35 81 5f d0 00 00 00 09 00 00 | ......................5._....... |
| 2ee0 | 00 0b 00 00 00 00 00 00 00 00 00 00 00 0a 00 00 00 01 00 00 00 00 00 00 00 00 ff ff ff ff 00 01 | ................................ |
| 2f00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2f20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2f40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2f60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2f80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2fa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2fc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2fe0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3000 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3020 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6a 5d 33 1a | ............................j]3. |
| 3060 | 04 01 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 52 00 00 00 1f 23 64 65 | ........................R....#de |
| 3080 | 66 69 6e 65 20 5f 50 4f 53 49 58 5f 43 5f 53 4f 55 52 43 45 20 32 30 30 38 30 39 4c 00 00 00 12 | fine._POSIX_C_SOURCE.200809L.... |
| 30a0 | 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 69 6f 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c | #include.<stdio.h>....#include.< |
| 30c0 | 73 74 64 6c 69 62 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 73 74 72 69 6e 67 2e 68 3e | stdlib.h>....#include.<string.h> |
| 30e0 | 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 75 6e 69 73 74 64 2e 68 3e 00 00 00 13 23 69 6e 63 6c | ....#include.<unistd.h>....#incl |
| 3100 | 75 64 65 20 3c 73 69 67 6e 61 6c 2e 68 3e 00 00 00 15 23 69 6e 63 6c 75 64 65 20 3c 73 79 73 2f | ude.<signal.h>....#include.<sys/ |
| 3120 | 77 61 69 74 2e 68 3e 00 00 00 12 23 69 6e 63 6c 75 64 65 20 3c 66 63 6e 74 6c 2e 68 3e 00 00 00 | wait.h>....#include.<fcntl.h>... |
| 3140 | 15 23 69 6e 63 6c 75 64 65 20 3c 68 69 73 74 65 64 69 74 2e 68 3e 00 00 00 00 00 00 00 26 73 74 | .#include.<histedit.h>.......&st |
| 3160 | 61 74 69 63 20 63 68 61 72 20 2a 67 65 74 5f 70 72 6f 6d 70 74 28 45 64 69 74 4c 69 6e 65 20 2a | atic.char.*get_prompt(EditLine.* |
| 3180 | 65 29 20 7b 00 00 00 0c 20 20 20 20 28 76 6f 69 64 29 65 3b 00 00 00 29 20 20 20 20 72 65 74 75 | e).{........(void)e;...)....retu |
| 31a0 | 72 6e 20 28 67 65 74 75 69 64 28 29 20 3d 3d 20 30 29 20 3f 20 22 23 20 22 20 3a 20 22 24 20 22 | rn.(getuid().==.0).?."#.".:."$." |
| 31c0 | 3b 00 00 00 01 7d 00 00 00 00 00 00 00 20 73 74 61 74 69 63 20 76 6f 69 64 20 72 75 6e 5f 63 6d | ;....}........static.void.run_cm |
| 31e0 | 64 28 63 68 61 72 20 2a 63 6d 64 29 20 7b 00 00 00 22 20 20 20 20 63 68 61 72 20 2a 61 72 67 73 | d(char.*cmd).{..."....char.*args |
| 3200 | 5b 36 34 5d 2c 20 2a 74 6f 6b 65 6e 2c 20 2a 66 69 6c 65 3b 00 00 00 12 20 20 20 20 69 6e 74 20 | [64],.*token,.*file;........int. |
| 3220 | 69 20 3d 20 30 2c 20 66 64 3b 00 00 00 23 20 20 20 20 74 6f 6b 65 6e 20 3d 20 73 74 72 74 6f 6b | i.=.0,.fd;...#....token.=.strtok |
| 3240 | 28 63 6d 64 2c 20 22 20 5c 74 5c 6e 5c 72 22 29 3b 00 00 00 1d 20 20 20 20 77 68 69 6c 65 20 28 | (cmd,.".\t\n\r");........while.( |
| 3260 | 74 6f 6b 65 6e 20 26 26 20 69 20 3c 20 36 33 29 20 7b 00 00 00 26 20 20 20 20 20 20 20 20 69 66 | token.&&.i.<.63).{...&........if |
| 3280 | 20 28 73 74 72 63 6d 70 28 74 6f 6b 65 6e 2c 20 22 3e 22 29 20 3d 3d 20 30 29 20 7b 00 00 00 2b | .(strcmp(token,.">").==.0).{...+ |
| 32a0 | 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 20 3d 20 73 74 72 74 6f 6b 28 4e 55 4c 4c 2c 20 | ............file.=.strtok(NULL,. |
| 32c0 | 22 20 5c 74 5c 6e 5c 72 22 29 3b 00 00 00 40 20 20 20 20 20 20 20 20 20 20 20 20 66 64 20 3d 20 | ".\t\n\r");...@............fd.=. |
| 32e0 | 6f 70 65 6e 28 66 69 6c 65 2c 20 4f 5f 57 52 4f 4e 4c 59 20 7c 20 4f 5f 43 52 45 41 54 20 7c 20 | open(file,.O_WRONLY.|.O_CREAT.|. |
| 3300 | 4f 5f 54 52 55 4e 43 2c 20 30 36 34 34 29 3b 00 00 00 24 20 20 20 20 20 20 20 20 20 20 20 20 64 | O_TRUNC,.0644);...$............d |
| 3320 | 75 70 32 28 66 64 2c 20 53 54 44 4f 55 54 5f 46 49 4c 45 4e 4f 29 3b 00 00 00 16 20 20 20 20 20 | up2(fd,.STDOUT_FILENO);......... |
| 3340 | 20 20 20 20 20 20 20 63 6c 6f 73 65 28 66 64 29 3b 00 00 00 21 20 20 20 20 20 20 20 20 7d 20 65 | .......close(fd);...!........}.e |
| 3360 | 6c 73 65 20 61 72 67 73 5b 69 2b 2b 5d 20 3d 20 74 6f 6b 65 6e 3b 00 00 00 28 20 20 20 20 20 20 | lse.args[i++].=.token;...(...... |
| 3380 | 20 20 74 6f 6b 65 6e 20 3d 20 73 74 72 74 6f 6b 28 4e 55 4c 4c 2c 20 22 20 5c 74 5c 6e 5c 72 22 | ..token.=.strtok(NULL,.".\t\n\r" |
| 33a0 | 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 13 20 20 20 20 61 72 67 73 5b 69 5d 20 3d 20 4e 55 4c | );........}........args[i].=.NUL |
| 33c0 | 4c 3b 00 00 00 10 20 20 20 20 69 66 20 28 69 20 3e 20 30 29 20 7b 00 00 00 1e 20 20 20 20 20 20 | L;........if.(i.>.0).{.......... |
| 33e0 | 20 20 65 78 65 63 76 70 28 61 72 67 73 5b 30 5d 2c 20 61 72 67 73 29 3b 00 00 00 41 20 20 20 20 | ..execvp(args[0],.args);...A.... |
| 3400 | 20 20 20 20 66 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c 20 22 6d 73 68 3a 20 25 73 3a 20 63 6f | ....fprintf(stderr,."msh:.%s:.co |
| 3420 | 6d 6d 61 6e 64 20 6e 6f 74 20 66 6f 75 6e 64 5c 6e 22 2c 20 61 72 67 73 5b 30 5d 29 3b 00 00 00 | mmand.not.found\n",.args[0]);... |
| 3440 | 10 20 20 20 20 20 20 20 20 65 78 69 74 28 31 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 | .........exit(1);........}....}. |
| 3460 | 00 00 00 00 00 00 21 73 74 61 74 69 63 20 76 6f 69 64 20 65 78 65 63 75 74 65 28 63 68 61 72 20 | ......!static.void.execute(char. |
| 3480 | 2a 6c 69 6e 65 29 20 7b 00 00 00 27 20 20 20 20 69 66 20 28 73 74 72 6e 63 6d 70 28 6c 69 6e 65 | *line).{...'....if.(strncmp(line |
| 34a0 | 2c 20 22 63 64 20 22 2c 20 33 29 20 3d 3d 20 30 29 20 7b 00 00 00 30 20 20 20 20 20 20 20 20 69 | ,."cd.",.3).==.0).{...0........i |
| 34c0 | 66 20 28 63 68 64 69 72 28 6c 69 6e 65 20 2b 20 33 29 20 21 3d 20 30 29 20 70 65 72 72 6f 72 28 | f.(chdir(line.+.3).!=.0).perror( |
| 34e0 | 22 6d 73 68 22 29 3b 00 00 00 32 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 73 74 72 63 6d 70 | "msh");...2....}.else.if.(strcmp |
| 3500 | 28 6c 69 6e 65 2c 20 22 65 78 69 74 22 29 20 3d 3d 20 30 29 20 65 78 69 74 28 30 29 3b 00 00 00 | (line,."exit").==.0).exit(0);... |
| 3520 | 0a 20 20 20 20 65 6c 73 65 20 7b 00 00 00 24 20 20 20 20 20 20 20 20 63 68 61 72 20 2a 70 20 3d | .....else.{...$........char.*p.= |
| 3540 | 20 73 74 72 63 68 72 28 6c 69 6e 65 2c 20 27 7c 27 29 3b 00 00 00 10 20 20 20 20 20 20 20 20 69 | .strchr(line,.'|');............i |
| 3560 | 66 20 28 70 29 20 7b 00 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 66 64 5b 32 5d | f.(p).{................int.fd[2] |
| 3580 | 3b 20 70 69 70 65 28 66 64 29 3b 00 00 00 1e 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 66 | ;.pipe(fd);................if.(f |
| 35a0 | 6f 72 6b 28 29 20 3d 3d 20 30 29 20 7b 00 00 00 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ork().==.0).{...;............... |
| 35c0 | 20 64 75 70 32 28 66 64 5b 31 5d 2c 20 31 29 3b 20 63 6c 6f 73 65 28 66 64 5b 30 5d 29 3b 20 63 | .dup2(fd[1],.1);.close(fd[0]);.c |
| 35e0 | 6c 6f 73 65 28 66 64 5b 31 5d 29 3b 00 00 00 1e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | lose(fd[1]);.................... |
| 3600 | 72 75 6e 5f 63 6d 64 28 6c 69 6e 65 29 3b 00 00 00 0d 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 | run_cmd(line);................}. |
| 3620 | 00 00 1e 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 66 6f 72 6b 28 29 20 3d 3d 20 30 29 20 | ...............if.(fork().==.0). |
| 3640 | 7b 00 00 00 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 75 70 32 28 66 64 5b 30 5d 2c | {...;................dup2(fd[0], |
| 3660 | 20 30 29 3b 20 63 6c 6f 73 65 28 66 64 5b 30 5d 29 3b 20 63 6c 6f 73 65 28 66 64 5b 31 5d 29 3b | .0);.close(fd[0]);.close(fd[1]); |
| 3680 | 00 00 00 1f 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 75 6e 5f 63 6d 64 28 70 20 2b 20 | ....................run_cmd(p.+. |
| 36a0 | 31 29 3b 00 00 00 0d 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 27 20 20 20 20 20 20 20 20 | 1);................}...'........ |
| 36c0 | 20 20 20 20 63 6c 6f 73 65 28 66 64 5b 30 5d 29 3b 20 63 6c 6f 73 65 28 66 64 5b 31 5d 29 3b 00 | ....close(fd[0]);.close(fd[1]);. |
| 36e0 | 00 00 23 20 20 20 20 20 20 20 20 20 20 20 20 77 61 69 74 28 4e 55 4c 4c 29 3b 20 77 61 69 74 28 | ..#............wait(NULL);.wait( |
| 3700 | 4e 55 4c 4c 29 3b 00 00 00 21 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 66 6f 72 | NULL);...!........}.else.if.(for |
| 3720 | 6b 28 29 20 3d 3d 20 30 29 20 7b 00 00 00 24 20 20 20 20 20 20 20 20 20 20 20 20 73 69 67 6e 61 | k().==.0).{...$............signa |
| 3740 | 6c 28 53 49 47 49 4e 54 2c 20 53 49 47 5f 44 46 4c 29 3b 00 00 00 1a 20 20 20 20 20 20 20 20 20 | l(SIGINT,.SIG_DFL);............. |
| 3760 | 20 20 20 72 75 6e 5f 63 6d 64 28 6c 69 6e 65 29 3b 00 00 00 1a 20 20 20 20 20 20 20 20 7d 20 65 | ...run_cmd(line);............}.e |
| 3780 | 6c 73 65 20 77 61 69 74 28 4e 55 4c 4c 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 | lse.wait(NULL);........}....}... |
| 37a0 | 00 00 00 00 16 76 6f 69 64 20 72 75 6e 5f 73 68 65 6c 6c 28 76 6f 69 64 29 20 7b 00 00 00 39 20 | .....void.run_shell(void).{...9. |
| 37c0 | 20 20 20 45 64 69 74 4c 69 6e 65 20 2a 65 6c 20 3d 20 65 6c 5f 69 6e 69 74 28 22 6d 73 68 22 2c | ...EditLine.*el.=.el_init("msh", |
| 37e0 | 20 73 74 64 69 6e 2c 20 73 74 64 6f 75 74 2c 20 73 74 64 65 72 72 29 3b 00 00 00 23 20 20 20 20 | .stdin,.stdout,.stderr);...#.... |
| 3800 | 48 69 73 74 6f 72 79 20 2a 68 69 73 74 20 3d 20 68 69 73 74 6f 72 79 5f 69 6e 69 74 28 29 3b 00 | History.*hist.=.history_init();. |
| 3820 | 00 00 11 20 20 20 20 48 69 73 74 45 76 65 6e 74 20 65 76 3b 00 00 00 27 20 20 20 20 68 69 73 74 | .......HistEvent.ev;...'....hist |
| 3840 | 6f 72 79 28 68 69 73 74 2c 20 26 65 76 2c 20 48 5f 53 45 54 53 49 5a 45 2c 20 31 30 30 29 3b 00 | ory(hist,.&ev,.H_SETSIZE,.100);. |
| 3860 | 00 00 27 20 20 20 20 65 6c 5f 73 65 74 28 65 6c 2c 20 45 4c 5f 48 49 53 54 2c 20 68 69 73 74 6f | ..'....el_set(el,.EL_HIST,.histo |
| 3880 | 72 79 2c 20 68 69 73 74 29 3b 00 00 00 26 20 20 20 20 65 6c 5f 73 65 74 28 65 6c 2c 20 45 4c 5f | ry,.hist);...&....el_set(el,.EL_ |
| 38a0 | 50 52 4f 4d 50 54 2c 20 67 65 74 5f 70 72 6f 6d 70 74 29 3b 00 00 00 20 20 20 20 20 65 6c 5f 73 | PROMPT,.get_prompt);........el_s |
| 38c0 | 65 74 28 65 6c 2c 20 45 4c 5f 45 44 49 54 4f 52 2c 20 22 76 69 22 29 3b 00 00 00 1c 20 20 20 20 | et(el,.EL_EDITOR,."vi");........ |
| 38e0 | 73 69 67 6e 61 6c 28 53 49 47 49 4e 54 2c 20 53 49 47 5f 49 47 4e 29 3b 00 00 00 15 20 20 20 20 | signal(SIGINT,.SIG_IGN);........ |
| 3900 | 63 6f 6e 73 74 20 63 68 61 72 20 2a 6c 69 6e 65 3b 00 00 00 0e 20 20 20 20 69 6e 74 20 63 6f 75 | const.char.*line;........int.cou |
| 3920 | 6e 74 3b 00 00 00 32 20 20 20 20 77 68 69 6c 65 20 28 28 6c 69 6e 65 20 3d 20 65 6c 5f 67 65 74 | nt;...2....while.((line.=.el_get |
| 3940 | 73 28 65 6c 2c 20 26 63 6f 75 6e 74 29 29 20 21 3d 20 4e 55 4c 4c 29 20 7b 00 00 00 18 20 20 20 | s(el,.&count)).!=.NULL).{....... |
| 3960 | 20 20 20 20 20 69 66 20 28 63 6f 75 6e 74 20 3e 20 31 29 20 7b 00 00 00 25 20 20 20 20 20 20 20 | .....if.(count.>.1).{...%....... |
| 3980 | 20 20 20 20 20 63 68 61 72 20 2a 63 6d 64 20 3d 20 73 74 72 64 75 70 28 6c 69 6e 65 29 3b 00 00 | .....char.*cmd.=.strdup(line);.. |
| 39a0 | 00 2e 20 20 20 20 20 20 20 20 20 20 20 20 68 69 73 74 6f 72 79 28 68 69 73 74 2c 20 26 65 76 2c | ..............history(hist,.&ev, |
| 39c0 | 20 48 5f 45 4e 54 45 52 2c 20 6c 69 6e 65 29 3b 00 00 00 19 20 20 20 20 20 20 20 20 20 20 20 20 | .H_ENTER,.line);................ |
| 39e0 | 65 78 65 63 75 74 65 28 63 6d 64 29 3b 00 00 00 16 20 20 20 20 20 20 20 20 20 20 20 20 66 72 65 | execute(cmd);................fre |
| 3a00 | 65 28 63 6d 64 29 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 05 20 20 20 20 7d 00 00 00 | e(cmd);............}........}... |
| 3a20 | 22 20 20 20 20 65 6c 5f 65 6e 64 28 65 6c 29 3b 20 68 69 73 74 6f 72 79 5f 65 6e 64 28 68 69 73 | "....el_end(el);.history_end(his |
| 3a40 | 74 29 3b 00 00 00 01 7d 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 52 00 00 00 00 00 00 00 | t);....}5...............R....... |
| 3a60 | 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d9 08 00 00 00 00 00 00 01 00 00 00 00 00 00 00 | ................................ |
| 3a80 | 35 81 5f d0 00 00 00 0a 00 00 00 0c 00 00 00 00 00 00 00 00 00 00 00 0b 00 00 00 01 00 00 00 00 | 5._............................. |
| 3aa0 | 00 00 00 00 ff ff ff ff 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3ac0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3ae0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3b00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3b20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3b40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3b60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3b80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3ba0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3bc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3be0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3c00 | 00 00 00 00 00 00 6a 5d 33 1a 04 01 00 00 00 08 00 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 | ......j]3....................... |
| 3c20 | 00 00 01 00 00 00 00 f5 18 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 35 81 f5 18 00 00 00 | .........................5...... |
| 3c40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 54 00 00 00 01 00 00 00 00 00 00 00 00 00 00 | .................T.............. |
| 3c60 | 00 00 00 00 00 00 00 00 00 0c 09 00 00 00 00 00 00 35 81 5f d0 00 00 00 0b 00 00 00 0d 00 00 00 | .................5._............ |
| 3c80 | 00 00 00 00 00 00 00 00 0c 00 00 00 01 00 00 00 00 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 | ................................ |
| 3ca0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3cc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3ce0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3d00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3d20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3d40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3d60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3d80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3da0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3dc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3de0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6a 5d 33 9b 04 01 00 00 00 | .......................j]3...... |
| 3e00 | 00 00 f5 18 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 55 00 00 00 1f 23 64 65 66 69 6e 65 20 | ...................U....#define. |
| 3e20 | 5f 50 4f 53 49 58 5f 43 5f 53 4f 55 52 43 45 20 32 30 30 38 30 39 4c 00 00 00 12 23 69 6e 63 6c | _POSIX_C_SOURCE.200809L....#incl |
| 3e40 | 75 64 65 20 3c 73 74 64 69 6f 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 6c 69 | ude.<stdio.h>....#include.<stdli |
| 3e60 | 62 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 73 74 72 69 6e 67 2e 68 3e 00 00 00 13 23 | b.h>....#include.<string.h>....# |
| 3e80 | 69 6e 63 6c 75 64 65 20 3c 75 6e 69 73 74 64 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c | include.<unistd.h>....#include.< |
| 3ea0 | 73 69 67 6e 61 6c 2e 68 3e 00 00 00 15 23 69 6e 63 6c 75 64 65 20 3c 73 79 73 2f 77 61 69 74 2e | signal.h>....#include.<sys/wait. |
| 3ec0 | 68 3e 00 00 00 12 23 69 6e 63 6c 75 64 65 20 3c 66 63 6e 74 6c 2e 68 3e 00 00 00 15 23 69 6e 63 | h>....#include.<fcntl.h>....#inc |
| 3ee0 | 6c 75 64 65 20 3c 68 69 73 74 65 64 69 74 2e 68 3e 00 00 00 00 00 00 00 20 73 74 61 74 69 63 20 | lude.<histedit.h>........static. |
| 3f00 | 76 6f 69 64 20 72 75 6e 5f 63 6d 64 28 63 68 61 72 20 2a 63 6d 64 29 20 7b 00 00 00 22 20 20 20 | void.run_cmd(char.*cmd).{..."... |
| 3f20 | 20 63 68 61 72 20 2a 61 72 67 73 5b 36 34 5d 2c 20 2a 74 6f 6b 65 6e 2c 20 2a 66 69 6c 65 3b 00 | .char.*args[64],.*token,.*file;. |
| 3f40 | 00 00 12 20 20 20 20 69 6e 74 20 69 20 3d 20 30 2c 20 66 64 3b 00 00 00 23 20 20 20 20 74 6f 6b | .......int.i.=.0,.fd;...#....tok |
| 3f60 | 65 6e 20 3d 20 73 74 72 74 6f 6b 28 63 6d 64 2c 20 22 20 5c 74 5c 6e 5c 72 22 29 3b 00 00 00 1d | en.=.strtok(cmd,.".\t\n\r");.... |
| 3f80 | 20 20 20 20 77 68 69 6c 65 20 28 74 6f 6b 65 6e 20 26 26 20 69 20 3c 20 36 33 29 20 7b 00 00 00 | ....while.(token.&&.i.<.63).{... |
| 3fa0 | 26 20 20 20 20 20 20 20 20 69 66 20 28 73 74 72 63 6d 70 28 74 6f 6b 65 6e 2c 20 22 3e 22 29 20 | &........if.(strcmp(token,.">"). |
| 3fc0 | 3d 3d 20 30 29 20 7b 00 00 00 2b 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 20 3d 20 73 74 | ==.0).{...+............file.=.st |
| 3fe0 | 72 74 6f 6b 28 4e 55 4c 4c 2c 20 22 20 5c 74 5c 6e 5c 72 22 29 3b 00 00 00 40 20 20 20 20 20 20 | rtok(NULL,.".\t\n\r");...@...... |
| 4000 | 20 20 20 20 20 20 66 64 20 3d 20 6f 70 65 6e 28 66 69 6c 65 2c 20 4f 5f 57 52 4f 4e 4c 59 20 7c | ......fd.=.open(file,.O_WRONLY.| |
| 4020 | 20 4f 5f 43 52 45 41 54 20 7c 20 4f 5f 54 52 55 4e 43 2c 20 30 36 34 34 29 3b 00 00 00 24 20 20 | .O_CREAT.|.O_TRUNC,.0644);...$.. |
| 4040 | 20 20 20 20 20 20 20 20 20 20 64 75 70 32 28 66 64 2c 20 53 54 44 4f 55 54 5f 46 49 4c 45 4e 4f | ..........dup2(fd,.STDOUT_FILENO |
| 4060 | 29 3b 00 00 00 16 20 20 20 20 20 20 20 20 20 20 20 20 63 6c 6f 73 65 28 66 64 29 3b 00 00 00 21 | );................close(fd);...! |
| 4080 | 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 61 72 67 73 5b 69 2b 2b 5d 20 3d 20 74 6f 6b 65 6e | ........}.else.args[i++].=.token |
| 40a0 | 3b 00 00 00 28 20 20 20 20 20 20 20 20 74 6f 6b 65 6e 20 3d 20 73 74 72 74 6f 6b 28 4e 55 4c 4c | ;...(........token.=.strtok(NULL |
| 40c0 | 2c 20 22 20 5c 74 5c 6e 5c 72 22 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 13 20 20 20 20 61 72 | ,.".\t\n\r");........}........ar |
| 40e0 | 67 73 5b 69 5d 20 3d 20 4e 55 4c 4c 3b 00 00 00 10 20 20 20 20 69 66 20 28 69 20 3e 20 30 29 20 | gs[i].=.NULL;........if.(i.>.0). |
| 4100 | 7b 00 00 00 1e 20 20 20 20 20 20 20 20 65 78 65 63 76 70 28 61 72 67 73 5b 30 5d 2c 20 61 72 67 | {............execvp(args[0],.arg |
| 4120 | 73 29 3b 00 00 00 10 20 20 20 20 20 20 20 20 65 78 69 74 28 31 29 3b 00 00 00 05 20 20 20 20 7d | s);............exit(1);........} |
| 4140 | 00 00 00 01 7d 00 00 00 00 00 00 00 21 73 74 61 74 69 63 20 76 6f 69 64 20 65 78 65 63 75 74 65 | ....}.......!static.void.execute |
| 4160 | 28 63 68 61 72 20 2a 6c 69 6e 65 29 20 7b 00 00 00 27 20 20 20 20 69 66 20 28 73 74 72 6e 63 6d | (char.*line).{...'....if.(strncm |
| 4180 | 70 28 6c 69 6e 65 2c 20 22 63 64 20 22 2c 20 33 29 20 3d 3d 20 30 29 20 7b 00 00 00 18 20 20 20 | p(line,."cd.",.3).==.0).{....... |
| 41a0 | 20 20 20 20 20 63 68 64 69 72 28 6c 69 6e 65 20 2b 20 33 29 3b 00 00 00 32 20 20 20 20 7d 20 65 | .....chdir(line.+.3);...2....}.e |
| 41c0 | 6c 73 65 20 69 66 20 28 73 74 72 63 6d 70 28 6c 69 6e 65 2c 20 22 65 78 69 74 22 29 20 3d 3d 20 | lse.if.(strcmp(line,."exit").==. |
| 41e0 | 30 29 20 65 78 69 74 28 30 29 3b 00 00 00 0a 20 20 20 20 65 6c 73 65 20 7b 00 00 00 24 20 20 20 | 0).exit(0);........else.{...$... |
| 4200 | 20 20 20 20 20 63 68 61 72 20 2a 70 20 3d 20 73 74 72 63 68 72 28 6c 69 6e 65 2c 20 27 7c 27 29 | .....char.*p.=.strchr(line,.'|') |
| 4220 | 3b 00 00 00 10 20 20 20 20 20 20 20 20 69 66 20 28 70 29 20 7b 00 00 00 20 20 20 20 20 20 20 20 | ;............if.(p).{........... |
| 4240 | 20 20 20 20 20 69 6e 74 20 66 64 5b 32 5d 3b 20 70 69 70 65 28 66 64 29 3b 00 00 00 1e 20 20 20 | .....int.fd[2];.pipe(fd);....... |
| 4260 | 20 20 20 20 20 20 20 20 20 69 66 20 28 66 6f 72 6b 28 29 20 3d 3d 20 30 29 20 7b 00 00 00 3b 20 | .........if.(fork().==.0).{...;. |
| 4280 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 75 70 32 28 66 64 5b 31 5d 2c 20 31 29 3b 20 63 | ...............dup2(fd[1],.1);.c |
| 42a0 | 6c 6f 73 65 28 66 64 5b 30 5d 29 3b 20 63 6c 6f 73 65 28 66 64 5b 31 5d 29 3b 00 00 00 1e 20 20 | lose(fd[0]);.close(fd[1]);...... |
| 42c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 75 6e 5f 63 6d 64 28 6c 69 6e 65 29 3b 00 00 00 0d | ..............run_cmd(line);.... |
| 42e0 | 20 20 20 20 20 20 20 20 20 20 20 20 7d 00 00 00 1e 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 | ............}................if. |
| 4300 | 28 66 6f 72 6b 28 29 20 3d 3d 20 30 29 20 7b 00 00 00 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 | (fork().==.0).{...;............. |
| 4320 | 20 20 20 64 75 70 32 28 66 64 5b 30 5d 2c 20 30 29 3b 20 63 6c 6f 73 65 28 66 64 5b 30 5d 29 3b | ...dup2(fd[0],.0);.close(fd[0]); |
| 4340 | 20 63 6c 6f 73 65 28 66 64 5b 31 5d 29 3b 00 00 00 1f 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .close(fd[1]);.................. |
| 4360 | 20 20 72 75 6e 5f 63 6d 64 28 70 20 2b 20 31 29 3b 00 00 00 0d 20 20 20 20 20 20 20 20 20 20 20 | ..run_cmd(p.+.1);............... |
| 4380 | 20 7d 00 00 00 27 20 20 20 20 20 20 20 20 20 20 20 20 63 6c 6f 73 65 28 66 64 5b 30 5d 29 3b 20 | .}...'............close(fd[0]);. |
| 43a0 | 63 6c 6f 73 65 28 66 64 5b 31 5d 29 3b 00 00 00 23 20 20 20 20 20 20 20 20 20 20 20 20 77 61 69 | close(fd[1]);...#............wai |
| 43c0 | 74 28 4e 55 4c 4c 29 3b 20 77 61 69 74 28 4e 55 4c 4c 29 3b 00 00 00 21 20 20 20 20 20 20 20 20 | t(NULL);.wait(NULL);...!........ |
| 43e0 | 7d 20 65 6c 73 65 20 69 66 20 28 66 6f 72 6b 28 29 20 3d 3d 20 30 29 20 7b 00 00 00 24 20 20 20 | }.else.if.(fork().==.0).{...$... |
| 4400 | 20 20 20 20 20 20 20 20 20 73 69 67 6e 61 6c 28 53 49 47 49 4e 54 2c 20 53 49 47 5f 44 46 4c 29 | .........signal(SIGINT,.SIG_DFL) |
| 4420 | 3b 00 00 00 1a 20 20 20 20 20 20 20 20 20 20 20 20 72 75 6e 5f 63 6d 64 28 6c 69 6e 65 29 3b 00 | ;................run_cmd(line);. |
| 4440 | 00 00 1a 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 77 61 69 74 28 4e 55 4c 4c 29 3b 00 00 00 | ...........}.else.wait(NULL);... |
| 4460 | 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 57 73 74 61 74 69 63 20 63 68 61 72 20 2a | .....}....}.......Wstatic.char.* |
| 4480 | 67 65 74 5f 70 72 6f 6d 70 74 28 45 64 69 74 4c 69 6e 65 20 2a 65 29 20 7b 20 28 76 6f 69 64 29 | get_prompt(EditLine.*e).{.(void) |
| 44a0 | 65 3b 20 72 65 74 75 72 6e 20 28 67 65 74 75 69 64 28 29 20 3d 3d 20 30 29 20 3f 20 22 23 20 22 | e;.return.(getuid().==.0).?."#." |
| 44c0 | 20 3a 20 22 24 20 22 3b 20 7d 00 00 00 00 00 00 00 1c 76 6f 69 64 20 72 75 6e 5f 69 6e 74 65 72 | .:."$.";.}........void.run_inter |
| 44e0 | 61 63 74 69 76 65 28 76 6f 69 64 29 20 7b 00 00 00 38 20 20 20 20 45 64 69 74 4c 69 6e 65 20 2a | active(void).{...8....EditLine.* |
| 4500 | 65 6c 20 3d 20 65 6c 5f 69 6e 69 74 28 22 73 68 22 2c 20 73 74 64 69 6e 2c 20 73 74 64 6f 75 74 | el.=.el_init("sh",.stdin,.stdout |
| 4520 | 2c 20 73 74 64 65 72 72 29 3b 00 00 00 23 20 20 20 20 48 69 73 74 6f 72 79 20 2a 68 69 73 74 20 | ,.stderr);...#....History.*hist. |
| 4540 | 3d 20 68 69 73 74 6f 72 79 5f 69 6e 69 74 28 29 3b 00 00 00 11 20 20 20 20 48 69 73 74 45 76 65 | =.history_init();........HistEve |
| 4560 | 6e 74 20 65 76 3b 00 00 00 27 20 20 20 20 68 69 73 74 6f 72 79 28 68 69 73 74 2c 20 26 65 76 2c | nt.ev;...'....history(hist,.&ev, |
| 4580 | 20 48 5f 53 45 54 53 49 5a 45 2c 20 31 30 30 29 3b 00 00 00 27 20 20 20 20 65 6c 5f 73 65 74 28 | .H_SETSIZE,.100);...'....el_set( |
| 45a0 | 65 6c 2c 20 45 4c 5f 48 49 53 54 2c 20 68 69 73 74 6f 72 79 2c 20 68 69 73 74 29 3b 00 00 00 26 | el,.EL_HIST,.history,.hist);...& |
| 45c0 | 20 20 20 20 65 6c 5f 73 65 74 28 65 6c 2c 20 45 4c 5f 50 52 4f 4d 50 54 2c 20 67 65 74 5f 70 72 | ....el_set(el,.EL_PROMPT,.get_pr |
| 45e0 | 6f 6d 70 74 29 3b 00 00 00 20 20 20 20 20 65 6c 5f 73 65 74 28 65 6c 2c 20 45 4c 5f 45 44 49 54 | ompt);........el_set(el,.EL_EDIT |
| 4600 | 4f 52 2c 20 22 76 69 22 29 3b 00 00 00 1c 20 20 20 20 73 69 67 6e 61 6c 28 53 49 47 49 4e 54 2c | OR,."vi");........signal(SIGINT, |
| 4620 | 20 53 49 47 5f 49 47 4e 29 3b 00 00 00 15 20 20 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 6c 69 | .SIG_IGN);........const.char.*li |
| 4640 | 6e 65 3b 00 00 00 0e 20 20 20 20 69 6e 74 20 63 6f 75 6e 74 3b 00 00 00 32 20 20 20 20 77 68 69 | ne;........int.count;...2....whi |
| 4660 | 6c 65 20 28 28 6c 69 6e 65 20 3d 20 65 6c 5f 67 65 74 73 28 65 6c 2c 20 26 63 6f 75 6e 74 29 29 | le.((line.=.el_gets(el,.&count)) |
| 4680 | 20 21 3d 20 4e 55 4c 4c 29 20 7b 00 00 00 18 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 75 6e 74 | .!=.NULL).{............if.(count |
| 46a0 | 20 3e 20 31 29 20 7b 00 00 00 25 20 20 20 20 20 20 20 20 20 20 20 20 63 68 61 72 20 2a 63 6d 64 | .>.1).{...%............char.*cmd |
| 46c0 | 20 3d 20 73 74 72 64 75 70 28 6c 69 6e 65 29 3b 00 00 00 2e 20 20 20 20 20 20 20 20 20 20 20 20 | .=.strdup(line);................ |
| 46e0 | 68 69 73 74 6f 72 79 28 68 69 73 74 2c 20 26 65 76 2c 20 48 5f 45 4e 54 45 52 2c 20 6c 69 6e 65 | history(hist,.&ev,.H_ENTER,.line |
| 4700 | 29 3b 00 00 00 19 20 20 20 20 20 20 20 20 20 20 20 20 65 78 65 63 75 74 65 28 63 6d 64 29 3b 00 | );................execute(cmd);. |
| 4720 | 00 00 16 20 20 20 20 20 20 20 20 20 20 20 20 66 72 65 65 28 63 6d 64 29 3b 00 00 00 09 20 20 20 | ...............free(cmd);....... |
| 4740 | 20 20 20 20 20 7d 00 00 00 05 20 20 20 20 7d 00 00 00 22 20 20 20 20 65 6c 5f 65 6e 64 28 65 6c | .....}........}..."....el_end(el |
| 4760 | 29 3b 20 68 69 73 74 6f 72 79 5f 65 6e 64 28 68 69 73 74 29 3b 00 00 00 01 7d 00 00 00 00 00 00 | );.history_end(hist);....}...... |
| 4780 | 00 1b 76 6f 69 64 20 72 75 6e 5f 73 63 72 69 70 74 28 46 49 4c 45 20 2a 66 70 29 20 7b 00 00 00 | ..void.run_script(FILE.*fp).{... |
| 47a0 | 14 20 20 20 20 63 68 61 72 20 6c 69 6e 65 5b 31 30 32 34 5d 3b 00 00 00 2b 20 20 20 20 77 68 69 | .....char.line[1024];...+....whi |
| 47c0 | 6c 65 20 28 66 67 65 74 73 28 6c 69 6e 65 2c 20 73 69 7a 65 6f 66 28 6c 69 6e 65 29 2c 20 66 70 | le.(fgets(line,.sizeof(line),.fp |
| 47e0 | 29 29 20 7b 00 00 00 2a 20 20 20 20 20 20 20 20 69 66 20 28 6c 69 6e 65 5b 30 5d 20 21 3d 20 27 | )).{...*........if.(line[0].!=.' |
| 4800 | 23 27 29 20 65 78 65 63 75 74 65 28 6c 69 6e 65 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d | #').execute(line);........}....} |
| 4820 | 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 55 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 | 5...............U............... |
| 4840 | 00 00 00 00 00 00 00 00 0d 09 00 00 00 00 00 00 01 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 0c | ........................5._..... |
| 4860 | 00 00 00 0e 00 00 00 00 00 00 00 00 00 00 00 0d 00 00 00 01 00 00 00 00 00 00 00 00 ff ff ff ff | ................................ |
| 4880 | 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 48a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 48c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 48e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4900 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4920 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4940 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4960 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4980 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 49a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 49c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6a 5d | ..............................j] |
| 49e0 | 33 9b 04 01 00 00 00 09 00 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 f5 | 3............................... |
| 4a00 | 18 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 | .................5.............. |
| 4a20 | 00 00 00 00 00 00 00 00 00 58 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........X...................... |
| 4a40 | 00 70 09 00 00 00 00 00 00 35 81 5f d0 00 00 00 0d 00 00 00 0f 00 00 00 00 00 00 00 00 00 00 00 | .p.......5._.................... |
| 4a60 | 0e 00 00 00 01 00 00 00 00 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4a80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4aa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4ac0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4ae0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4b00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4b20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4b40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4b60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4b80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4ba0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4bc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6a 5d 33 e5 04 01 00 00 00 00 00 f5 18 00 00 00 00 | ...............j]3.............. |
| 4be0 | 00 00 00 02 00 00 00 00 00 00 00 59 00 00 00 1f 23 64 65 66 69 6e 65 20 5f 50 4f 53 49 58 5f 43 | ...........Y....#define._POSIX_C |
| 4c00 | 5f 53 4f 55 52 43 45 20 32 30 30 38 30 39 4c 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 | _SOURCE.200809L....#include.<std |
| 4c20 | 64 65 66 2e 68 3e 00 00 00 12 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 69 6f 2e 68 3e 00 00 00 13 | def.h>....#include.<stdio.h>.... |
| 4c40 | 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 6c 69 62 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 | #include.<stdlib.h>....#include. |
| 4c60 | 3c 73 74 72 69 6e 67 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 75 6e 69 73 74 64 2e 68 | <string.h>....#include.<unistd.h |
| 4c80 | 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 73 69 67 6e 61 6c 2e 68 3e 00 00 00 15 23 69 6e 63 | >....#include.<signal.h>....#inc |
| 4ca0 | 6c 75 64 65 20 3c 73 79 73 2f 77 61 69 74 2e 68 3e 00 00 00 12 23 69 6e 63 6c 75 64 65 20 3c 66 | lude.<sys/wait.h>....#include.<f |
| 4cc0 | 63 6e 74 6c 2e 68 3e 00 00 00 15 23 69 6e 63 6c 75 64 65 20 3c 68 69 73 74 65 64 69 74 2e 68 3e | cntl.h>....#include.<histedit.h> |
| 4ce0 | 00 00 00 00 00 00 00 20 73 74 61 74 69 63 20 76 6f 69 64 20 72 75 6e 5f 63 6d 64 28 63 68 61 72 | ........static.void.run_cmd(char |
| 4d00 | 20 2a 63 6d 64 29 20 7b 00 00 00 22 20 20 20 20 63 68 61 72 20 2a 61 72 67 73 5b 36 34 5d 2c 20 | .*cmd).{..."....char.*args[64],. |
| 4d20 | 2a 74 6f 6b 65 6e 2c 20 2a 66 69 6c 65 3b 00 00 00 12 20 20 20 20 69 6e 74 20 69 20 3d 20 30 2c | *token,.*file;........int.i.=.0, |
| 4d40 | 20 66 64 3b 00 00 00 23 20 20 20 20 74 6f 6b 65 6e 20 3d 20 73 74 72 74 6f 6b 28 63 6d 64 2c 20 | .fd;...#....token.=.strtok(cmd,. |
| 4d60 | 22 20 5c 74 5c 6e 5c 72 22 29 3b 00 00 00 1d 20 20 20 20 77 68 69 6c 65 20 28 74 6f 6b 65 6e 20 | ".\t\n\r");........while.(token. |
| 4d80 | 26 26 20 69 20 3c 20 36 33 29 20 7b 00 00 00 26 20 20 20 20 20 20 20 20 69 66 20 28 73 74 72 63 | &&.i.<.63).{...&........if.(strc |
| 4da0 | 6d 70 28 74 6f 6b 65 6e 2c 20 22 3e 22 29 20 3d 3d 20 30 29 20 7b 00 00 00 2b 20 20 20 20 20 20 | mp(token,.">").==.0).{...+...... |
| 4dc0 | 20 20 20 20 20 20 66 69 6c 65 20 3d 20 73 74 72 74 6f 6b 28 4e 55 4c 4c 2c 20 22 20 5c 74 5c 6e | ......file.=.strtok(NULL,.".\t\n |
| 4de0 | 5c 72 22 29 3b 00 00 00 17 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 66 69 6c 65 29 20 7b | \r");................if.(file).{ |
| 4e00 | 00 00 00 44 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 64 20 3d 20 6f 70 65 6e 28 66 69 | ...D................fd.=.open(fi |
| 4e20 | 6c 65 2c 20 4f 5f 57 52 4f 4e 4c 59 20 7c 20 4f 5f 43 52 45 41 54 20 7c 20 4f 5f 54 52 55 4e 43 | le,.O_WRONLY.|.O_CREAT.|.O_TRUNC |
| 4e40 | 2c 20 30 36 34 34 29 3b 00 00 00 28 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 75 70 32 | ,.0644);...(................dup2 |
| 4e60 | 28 66 64 2c 20 53 54 44 4f 55 54 5f 46 49 4c 45 4e 4f 29 3b 00 00 00 1a 20 20 20 20 20 20 20 20 | (fd,.STDOUT_FILENO);............ |
| 4e80 | 20 20 20 20 20 20 20 20 63 6c 6f 73 65 28 66 64 29 3b 00 00 00 0d 20 20 20 20 20 20 20 20 20 20 | ........close(fd);.............. |
| 4ea0 | 20 20 7d 00 00 00 10 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 00 00 00 1e 20 20 20 20 20 | ..}............}.else.{......... |
| 4ec0 | 20 20 20 20 20 20 20 61 72 67 73 5b 69 2b 2b 5d 20 3d 20 74 6f 6b 65 6e 3b 00 00 00 09 20 20 20 | .......args[i++].=.token;....... |
| 4ee0 | 20 20 20 20 20 7d 00 00 00 28 20 20 20 20 20 20 20 20 74 6f 6b 65 6e 20 3d 20 73 74 72 74 6f 6b | .....}...(........token.=.strtok |
| 4f00 | 28 4e 55 4c 4c 2c 20 22 20 5c 74 5c 6e 5c 72 22 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 13 20 | (NULL,.".\t\n\r");........}..... |
| 4f20 | 20 20 20 61 72 67 73 5b 69 5d 20 3d 20 4e 55 4c 4c 3b 00 00 00 10 20 20 20 20 69 66 20 28 69 20 | ...args[i].=.NULL;........if.(i. |
| 4f40 | 3e 20 30 29 20 7b 00 00 00 1e 20 20 20 20 20 20 20 20 65 78 65 63 76 70 28 61 72 67 73 5b 30 5d | >.0).{............execvp(args[0] |
| 4f60 | 2c 20 61 72 67 73 29 3b 00 00 00 10 20 20 20 20 20 20 20 20 65 78 69 74 28 31 29 3b 00 00 00 05 | ,.args);............exit(1);.... |
| 4f80 | 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 1a 76 6f 69 64 20 65 78 65 63 75 74 65 28 63 | ....}....}........void.execute(c |
| 4fa0 | 68 61 72 20 2a 6c 69 6e 65 29 20 7b 00 00 00 0c 20 20 20 20 63 68 61 72 20 2a 70 3b 00 00 00 27 | har.*line).{........char.*p;...' |
| 4fc0 | 20 20 20 20 69 66 20 28 73 74 72 6e 63 6d 70 28 6c 69 6e 65 2c 20 22 63 64 20 22 2c 20 33 29 20 | ....if.(strncmp(line,."cd.",.3). |
| 4fe0 | 3d 3d 20 30 29 20 7b 00 00 00 28 20 20 20 20 20 20 20 20 6c 69 6e 65 5b 73 74 72 63 73 70 6e 28 | ==.0).{...(........line[strcspn( |
| 5000 | 6c 69 6e 65 2c 20 22 5c 6e 5c 72 22 29 5d 20 3d 20 30 3b 00 00 00 18 20 20 20 20 20 20 20 20 63 | line,."\n\r")].=.0;............c |
| 5020 | 68 64 69 72 28 6c 69 6e 65 20 2b 20 33 29 3b 00 00 00 51 20 20 20 20 7d 20 65 6c 73 65 20 69 66 | hdir(line.+.3);...Q....}.else.if |
| 5040 | 20 28 73 74 72 63 6d 70 28 6c 69 6e 65 2c 20 22 65 78 69 74 5c 6e 22 29 20 3d 3d 20 30 20 7c 7c | .(strcmp(line,."exit\n").==.0.|| |
| 5060 | 20 73 74 72 63 6d 70 28 6c 69 6e 65 2c 20 22 65 78 69 74 22 29 20 3d 3d 20 30 29 20 65 78 69 74 | .strcmp(line,."exit").==.0).exit |
| 5080 | 28 30 29 3b 00 00 00 27 20 20 20 20 65 6c 73 65 20 69 66 20 28 28 70 20 3d 20 73 74 72 63 68 72 | (0);...'....else.if.((p.=.strchr |
| 50a0 | 28 6c 69 6e 65 2c 20 27 7c 27 29 29 29 20 7b 00 00 00 1c 20 20 20 20 20 20 20 20 69 6e 74 20 66 | (line,.'|'))).{............int.f |
| 50c0 | 64 5b 32 5d 3b 20 70 69 70 65 28 66 64 29 3b 00 00 00 1a 20 20 20 20 20 20 20 20 69 66 20 28 66 | d[2];.pipe(fd);............if.(f |
| 50e0 | 6f 72 6b 28 29 20 3d 3d 20 30 29 20 7b 00 00 00 37 20 20 20 20 20 20 20 20 20 20 20 20 64 75 70 | ork().==.0).{...7............dup |
| 5100 | 32 28 66 64 5b 31 5d 2c 20 31 29 3b 20 63 6c 6f 73 65 28 66 64 5b 30 5d 29 3b 20 63 6c 6f 73 65 | 2(fd[1],.1);.close(fd[0]);.close |
| 5120 | 28 66 64 5b 31 5d 29 3b 00 00 00 1a 20 20 20 20 20 20 20 20 20 20 20 20 72 75 6e 5f 63 6d 64 28 | (fd[1]);................run_cmd( |
| 5140 | 6c 69 6e 65 29 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 1a 20 20 20 20 20 20 20 20 69 | line);............}............i |
| 5160 | 66 20 28 66 6f 72 6b 28 29 20 3d 3d 20 30 29 20 7b 00 00 00 37 20 20 20 20 20 20 20 20 20 20 20 | f.(fork().==.0).{...7........... |
| 5180 | 20 64 75 70 32 28 66 64 5b 30 5d 2c 20 30 29 3b 20 63 6c 6f 73 65 28 66 64 5b 30 5d 29 3b 20 63 | .dup2(fd[0],.0);.close(fd[0]);.c |
| 51a0 | 6c 6f 73 65 28 66 64 5b 31 5d 29 3b 00 00 00 1b 20 20 20 20 20 20 20 20 20 20 20 20 72 75 6e 5f | lose(fd[1]);................run_ |
| 51c0 | 63 6d 64 28 70 20 2b 20 31 29 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 23 20 20 20 20 | cmd(p.+.1);............}...#.... |
| 51e0 | 20 20 20 20 63 6c 6f 73 65 28 66 64 5b 30 5d 29 3b 20 63 6c 6f 73 65 28 66 64 5b 31 5d 29 3b 00 | ....close(fd[0]);.close(fd[1]);. |
| 5200 | 00 00 1f 20 20 20 20 20 20 20 20 77 61 69 74 28 4e 55 4c 4c 29 3b 20 77 61 69 74 28 4e 55 4c 4c | ...........wait(NULL);.wait(NULL |
| 5220 | 29 3b 00 00 00 1d 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 66 6f 72 6b 28 29 20 3d 3d 20 30 | );........}.else.if.(fork().==.0 |
| 5240 | 29 20 7b 00 00 00 20 20 20 20 20 20 20 20 20 73 69 67 6e 61 6c 28 53 49 47 49 4e 54 2c 20 53 49 | ).{............signal(SIGINT,.SI |
| 5260 | 47 5f 44 46 4c 29 3b 00 00 00 16 20 20 20 20 20 20 20 20 72 75 6e 5f 63 6d 64 28 6c 69 6e 65 29 | G_DFL);............run_cmd(line) |
| 5280 | 3b 00 00 00 16 20 20 20 20 7d 20 65 6c 73 65 20 77 61 69 74 28 4e 55 4c 4c 29 3b 00 00 00 01 7d | ;........}.else.wait(NULL);....} |
| 52a0 | 00 00 00 00 00 00 00 57 73 74 61 74 69 63 20 63 68 61 72 20 2a 67 65 74 5f 70 72 6f 6d 70 74 28 | .......Wstatic.char.*get_prompt( |
| 52c0 | 45 64 69 74 4c 69 6e 65 20 2a 65 29 20 7b 20 28 76 6f 69 64 29 65 3b 20 72 65 74 75 72 6e 20 28 | EditLine.*e).{.(void)e;.return.( |
| 52e0 | 67 65 74 75 69 64 28 29 20 3d 3d 20 30 29 20 3f 20 22 23 20 22 20 3a 20 22 24 20 22 3b 20 7d 00 | getuid().==.0).?."#.".:."$.";.}. |
| 5300 | 00 00 00 00 00 00 1c 76 6f 69 64 20 72 75 6e 5f 69 6e 74 65 72 61 63 74 69 76 65 28 76 6f 69 64 | .......void.run_interactive(void |
| 5320 | 29 20 7b 00 00 00 38 20 20 20 20 45 64 69 74 4c 69 6e 65 20 2a 65 6c 20 3d 20 65 6c 5f 69 6e 69 | ).{...8....EditLine.*el.=.el_ini |
| 5340 | 74 28 22 73 68 22 2c 20 73 74 64 69 6e 2c 20 73 74 64 6f 75 74 2c 20 73 74 64 65 72 72 29 3b 00 | t("sh",.stdin,.stdout,.stderr);. |
| 5360 | 00 00 23 20 20 20 20 48 69 73 74 6f 72 79 20 2a 68 69 73 74 20 3d 20 68 69 73 74 6f 72 79 5f 69 | ..#....History.*hist.=.history_i |
| 5380 | 6e 69 74 28 29 3b 00 00 00 11 20 20 20 20 48 69 73 74 45 76 65 6e 74 20 65 76 3b 00 00 00 15 20 | nit();........HistEvent.ev;..... |
| 53a0 | 20 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 6c 69 6e 65 3b 00 00 00 0e 20 20 20 20 69 6e 74 20 | ...const.char.*line;........int. |
| 53c0 | 63 6f 75 6e 74 3b 00 00 00 27 20 20 20 20 68 69 73 74 6f 72 79 28 68 69 73 74 2c 20 26 65 76 2c | count;...'....history(hist,.&ev, |
| 53e0 | 20 48 5f 53 45 54 53 49 5a 45 2c 20 31 30 30 29 3b 00 00 00 27 20 20 20 20 65 6c 5f 73 65 74 28 | .H_SETSIZE,.100);...'....el_set( |
| 5400 | 65 6c 2c 20 45 4c 5f 48 49 53 54 2c 20 68 69 73 74 6f 72 79 2c 20 68 69 73 74 29 3b 00 00 00 26 | el,.EL_HIST,.history,.hist);...& |
| 5420 | 20 20 20 20 65 6c 5f 73 65 74 28 65 6c 2c 20 45 4c 5f 50 52 4f 4d 50 54 2c 20 67 65 74 5f 70 72 | ....el_set(el,.EL_PROMPT,.get_pr |
| 5440 | 6f 6d 70 74 29 3b 00 00 00 20 20 20 20 20 65 6c 5f 73 65 74 28 65 6c 2c 20 45 4c 5f 45 44 49 54 | ompt);........el_set(el,.EL_EDIT |
| 5460 | 4f 52 2c 20 22 76 69 22 29 3b 00 00 00 1c 20 20 20 20 73 69 67 6e 61 6c 28 53 49 47 49 4e 54 2c | OR,."vi");........signal(SIGINT, |
| 5480 | 20 53 49 47 5f 49 47 4e 29 3b 00 00 00 32 20 20 20 20 77 68 69 6c 65 20 28 28 6c 69 6e 65 20 3d | .SIG_IGN);...2....while.((line.= |
| 54a0 | 20 65 6c 5f 67 65 74 73 28 65 6c 2c 20 26 63 6f 75 6e 74 29 29 20 21 3d 20 4e 55 4c 4c 29 20 7b | .el_gets(el,.&count)).!=.NULL).{ |
| 54c0 | 00 00 00 18 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 75 6e 74 20 3e 20 31 29 20 7b 00 00 00 25 | ............if.(count.>.1).{...% |
| 54e0 | 20 20 20 20 20 20 20 20 20 20 20 20 63 68 61 72 20 2a 63 6d 64 20 3d 20 73 74 72 64 75 70 28 6c | ............char.*cmd.=.strdup(l |
| 5500 | 69 6e 65 29 3b 00 00 00 2e 20 20 20 20 20 20 20 20 20 20 20 20 68 69 73 74 6f 72 79 28 68 69 73 | ine);................history(his |
| 5520 | 74 2c 20 26 65 76 2c 20 48 5f 45 4e 54 45 52 2c 20 6c 69 6e 65 29 3b 00 00 00 19 20 20 20 20 20 | t,.&ev,.H_ENTER,.line);......... |
| 5540 | 20 20 20 20 20 20 20 65 78 65 63 75 74 65 28 63 6d 64 29 3b 00 00 00 16 20 20 20 20 20 20 20 20 | .......execute(cmd);............ |
| 5560 | 20 20 20 20 66 72 65 65 28 63 6d 64 29 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 05 20 | ....free(cmd);............}..... |
| 5580 | 20 20 20 7d 00 00 00 22 20 20 20 20 65 6c 5f 65 6e 64 28 65 6c 29 3b 20 68 69 73 74 6f 72 79 5f | ...}..."....el_end(el);.history_ |
| 55a0 | 65 6e 64 28 68 69 73 74 29 3b 00 00 00 01 7d 00 00 00 00 00 00 00 1b 76 6f 69 64 20 72 75 6e 5f | end(hist);....}........void.run_ |
| 55c0 | 73 63 72 69 70 74 28 46 49 4c 45 20 2a 66 70 29 20 7b 00 00 00 14 20 20 20 20 63 68 61 72 20 6c | script(FILE.*fp).{........char.l |
| 55e0 | 69 6e 65 5b 31 30 32 34 5d 3b 00 00 00 2b 20 20 20 20 77 68 69 6c 65 20 28 66 67 65 74 73 28 6c | ine[1024];...+....while.(fgets(l |
| 5600 | 69 6e 65 2c 20 73 69 7a 65 6f 66 28 6c 69 6e 65 29 2c 20 66 70 29 29 20 7b 00 00 00 3d 20 20 20 | ine,.sizeof(line),.fp)).{...=... |
| 5620 | 20 20 20 20 20 69 66 20 28 6c 69 6e 65 5b 30 5d 20 21 3d 20 27 23 27 20 26 26 20 6c 69 6e 65 5b | .....if.(line[0].!=.'#'.&&.line[ |
| 5640 | 30 5d 20 21 3d 20 27 5c 6e 27 29 20 65 78 65 63 75 74 65 28 6c 69 6e 65 29 3b 00 00 00 05 20 20 | 0].!=.'\n').execute(line);...... |
| 5660 | 20 20 7d 00 00 00 01 7d 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 59 00 00 00 00 00 00 00 | ..}....}5...............Y....... |
| 5680 | 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 71 09 00 00 00 00 00 00 01 00 00 00 00 00 00 00 | ................q............... |
| 56a0 | 35 81 5f d0 00 00 00 0e 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 0f 00 00 00 01 00 00 00 00 | 5._............................. |
| 56c0 | 00 00 00 00 ff ff ff ff 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 56e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5700 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5720 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5740 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5760 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 57a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 57c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 57e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5800 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5820 | 00 00 00 00 00 00 6a 5d 33 e5 04 01 00 00 00 0a 00 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 | ......j]3....................... |
| 5840 | 00 00 01 00 00 00 00 f5 18 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 35 81 f5 18 00 00 00 | .........................5...... |
| 5860 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 5b 00 00 00 01 00 00 00 00 00 00 00 00 00 00 | .................[.............. |
| 5880 | 00 00 00 00 00 00 00 00 00 74 09 00 00 00 00 00 00 35 81 5f d0 00 00 00 0f 00 00 00 11 00 00 00 | .........t.......5._............ |
| 58a0 | 00 00 00 00 00 00 00 00 10 00 00 00 01 00 00 00 00 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 | ................................ |
| 58c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 58e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5900 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5920 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5940 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5960 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5980 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 59a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 59c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 59e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5a00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6a 5d 34 2b 04 01 00 00 00 | .......................j]4+..... |
| 5a20 | 00 00 f5 18 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 5c 00 00 00 1f 23 64 65 66 69 6e 65 20 | ...................\....#define. |
| 5a40 | 5f 50 4f 53 49 58 5f 43 5f 53 4f 55 52 43 45 20 32 30 30 38 30 39 4c 00 00 00 13 23 69 6e 63 6c | _POSIX_C_SOURCE.200809L....#incl |
| 5a60 | 75 64 65 20 3c 73 74 64 64 65 66 2e 68 3e 00 00 00 12 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 69 | ude.<stddef.h>....#include.<stdi |
| 5a80 | 6f 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 6c 69 62 2e 68 3e 00 00 00 13 23 | o.h>....#include.<stdlib.h>....# |
| 5aa0 | 69 6e 63 6c 75 64 65 20 3c 73 74 72 69 6e 67 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c | include.<string.h>....#include.< |
| 5ac0 | 75 6e 69 73 74 64 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 73 69 67 6e 61 6c 2e 68 3e | unistd.h>....#include.<signal.h> |
| 5ae0 | 00 00 00 15 23 69 6e 63 6c 75 64 65 20 3c 73 79 73 2f 77 61 69 74 2e 68 3e 00 00 00 12 23 69 6e | ....#include.<sys/wait.h>....#in |
| 5b00 | 63 6c 75 64 65 20 3c 66 63 6e 74 6c 2e 68 3e 00 00 00 15 23 69 6e 63 6c 75 64 65 20 3c 68 69 73 | clude.<fcntl.h>....#include.<his |
| 5b20 | 74 65 64 69 74 2e 68 3e 00 00 00 00 00 00 00 20 73 74 61 74 69 63 20 76 6f 69 64 20 72 75 6e 5f | tedit.h>........static.void.run_ |
| 5b40 | 63 6d 64 28 63 68 61 72 20 2a 63 6d 64 29 20 7b 00 00 00 1b 20 20 20 20 63 68 61 72 20 2a 61 72 | cmd(char.*cmd).{........char.*ar |
| 5b60 | 67 73 5b 36 34 5d 2c 20 2a 74 6f 6b 65 6e 3b 00 00 00 12 20 20 20 20 69 6e 74 20 69 20 3d 20 30 | gs[64],.*token;........int.i.=.0 |
| 5b80 | 2c 20 66 64 3b 00 00 00 1f 20 20 20 20 63 68 61 72 20 2a 70 20 3d 20 73 74 72 73 74 72 28 63 6d | ,.fd;........char.*p.=.strstr(cm |
| 5ba0 | 64 2c 20 22 3e 22 29 3b 00 00 00 0c 20 20 20 20 69 66 20 28 70 29 20 7b 00 00 00 12 20 20 20 20 | d,.">");........if.(p).{........ |
| 5bc0 | 20 20 20 20 2a 70 20 3d 20 27 5c 30 27 3b 00 00 00 2e 20 20 20 20 20 20 20 20 63 68 61 72 20 2a | ....*p.=.'\0';............char.* |
| 5be0 | 66 69 6c 65 20 3d 20 73 74 72 74 6f 6b 28 70 20 2b 20 31 2c 20 22 20 5c 74 5c 6e 5c 72 22 29 3b | file.=.strtok(p.+.1,.".\t\n\r"); |
| 5c00 | 00 00 00 3c 20 20 20 20 20 20 20 20 66 64 20 3d 20 6f 70 65 6e 28 66 69 6c 65 2c 20 4f 5f 57 52 | ...<........fd.=.open(file,.O_WR |
| 5c20 | 4f 4e 4c 59 20 7c 20 4f 5f 43 52 45 41 54 20 7c 20 4f 5f 54 52 55 4e 43 2c 20 30 36 34 34 29 3b | ONLY.|.O_CREAT.|.O_TRUNC,.0644); |
| 5c40 | 00 00 00 20 20 20 20 20 20 20 20 20 64 75 70 32 28 66 64 2c 20 53 54 44 4f 55 54 5f 46 49 4c 45 | ............dup2(fd,.STDOUT_FILE |
| 5c60 | 4e 4f 29 3b 00 00 00 12 20 20 20 20 20 20 20 20 63 6c 6f 73 65 28 66 64 29 3b 00 00 00 05 20 20 | NO);............close(fd);...... |
| 5c80 | 20 20 7d 00 00 00 23 20 20 20 20 74 6f 6b 65 6e 20 3d 20 73 74 72 74 6f 6b 28 63 6d 64 2c 20 22 | ..}...#....token.=.strtok(cmd,." |
| 5ca0 | 20 5c 74 5c 6e 5c 72 22 29 3b 00 00 00 1d 20 20 20 20 77 68 69 6c 65 20 28 74 6f 6b 65 6e 20 26 | .\t\n\r");........while.(token.& |
| 5cc0 | 26 20 69 20 3c 20 36 33 29 20 7b 00 00 00 1a 20 20 20 20 20 20 20 20 61 72 67 73 5b 69 2b 2b 5d | &.i.<.63).{............args[i++] |
| 5ce0 | 20 3d 20 74 6f 6b 65 6e 3b 00 00 00 28 20 20 20 20 20 20 20 20 74 6f 6b 65 6e 20 3d 20 73 74 72 | .=.token;...(........token.=.str |
| 5d00 | 74 6f 6b 28 4e 55 4c 4c 2c 20 22 20 5c 74 5c 6e 5c 72 22 29 3b 00 00 00 05 20 20 20 20 7d 00 00 | tok(NULL,.".\t\n\r");........}.. |
| 5d20 | 00 13 20 20 20 20 61 72 67 73 5b 69 5d 20 3d 20 4e 55 4c 4c 3b 00 00 00 10 20 20 20 20 69 66 20 | ......args[i].=.NULL;........if. |
| 5d40 | 28 69 20 3e 20 30 29 20 7b 00 00 00 1e 20 20 20 20 20 20 20 20 65 78 65 63 76 70 28 61 72 67 73 | (i.>.0).{............execvp(args |
| 5d60 | 5b 30 5d 2c 20 61 72 67 73 29 3b 00 00 00 10 20 20 20 20 20 20 20 20 65 78 69 74 28 31 29 3b 00 | [0],.args);............exit(1);. |
| 5d80 | 00 00 05 20 20 20 20 7d 00 00 00 01 7d 00 00 00 00 00 00 00 1a 76 6f 69 64 20 65 78 65 63 75 74 | .......}....}........void.execut |
| 5da0 | 65 28 63 68 61 72 20 2a 6c 69 6e 65 29 20 7b 00 00 00 0c 20 20 20 20 63 68 61 72 20 2a 70 3b 00 | e(char.*line).{........char.*p;. |
| 5dc0 | 00 00 27 20 20 20 20 69 66 20 28 73 74 72 6e 63 6d 70 28 6c 69 6e 65 2c 20 22 63 64 20 22 2c 20 | ..'....if.(strncmp(line,."cd.",. |
| 5de0 | 33 29 20 3d 3d 20 30 29 20 7b 00 00 00 28 20 20 20 20 20 20 20 20 6c 69 6e 65 5b 73 74 72 63 73 | 3).==.0).{...(........line[strcs |
| 5e00 | 70 6e 28 6c 69 6e 65 2c 20 22 5c 6e 5c 72 22 29 5d 20 3d 20 30 3b 00 00 00 18 20 20 20 20 20 20 | pn(line,."\n\r")].=.0;.......... |
| 5e20 | 20 20 63 68 64 69 72 28 6c 69 6e 65 20 2b 20 33 29 3b 00 00 00 51 20 20 20 20 7d 20 65 6c 73 65 | ..chdir(line.+.3);...Q....}.else |
| 5e40 | 20 69 66 20 28 73 74 72 63 6d 70 28 6c 69 6e 65 2c 20 22 65 78 69 74 5c 6e 22 29 20 3d 3d 20 30 | .if.(strcmp(line,."exit\n").==.0 |
| 5e60 | 20 7c 7c 20 73 74 72 63 6d 70 28 6c 69 6e 65 2c 20 22 65 78 69 74 22 29 20 3d 3d 20 30 29 20 65 | .||.strcmp(line,."exit").==.0).e |
| 5e80 | 78 69 74 28 30 29 3b 00 00 00 27 20 20 20 20 65 6c 73 65 20 69 66 20 28 28 70 20 3d 20 73 74 72 | xit(0);...'....else.if.((p.=.str |
| 5ea0 | 63 68 72 28 6c 69 6e 65 2c 20 27 7c 27 29 29 29 20 7b 00 00 00 12 20 20 20 20 20 20 20 20 69 6e | chr(line,.'|'))).{............in |
| 5ec0 | 74 20 66 64 5b 32 5d 3b 00 00 00 12 20 20 20 20 20 20 20 20 2a 70 20 3d 20 27 5c 30 27 3b 00 00 | t.fd[2];............*p.=.'\0';.. |
| 5ee0 | 00 11 20 20 20 20 20 20 20 20 70 69 70 65 28 66 64 29 3b 00 00 00 1a 20 20 20 20 20 20 20 20 69 | ..........pipe(fd);............i |
| 5f00 | 66 20 28 66 6f 72 6b 28 29 20 3d 3d 20 30 29 20 7b 00 00 00 37 20 20 20 20 20 20 20 20 20 20 20 | f.(fork().==.0).{...7........... |
| 5f20 | 20 64 75 70 32 28 66 64 5b 31 5d 2c 20 31 29 3b 20 63 6c 6f 73 65 28 66 64 5b 30 5d 29 3b 20 63 | .dup2(fd[1],.1);.close(fd[0]);.c |
| 5f40 | 6c 6f 73 65 28 66 64 5b 31 5d 29 3b 00 00 00 1a 20 20 20 20 20 20 20 20 20 20 20 20 72 75 6e 5f | lose(fd[1]);................run_ |
| 5f60 | 63 6d 64 28 6c 69 6e 65 29 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 1a 20 20 20 20 20 | cmd(line);............}......... |
| 5f80 | 20 20 20 69 66 20 28 66 6f 72 6b 28 29 20 3d 3d 20 30 29 20 7b 00 00 00 37 20 20 20 20 20 20 20 | ...if.(fork().==.0).{...7....... |
| 5fa0 | 20 20 20 20 20 64 75 70 32 28 66 64 5b 30 5d 2c 20 30 29 3b 20 63 6c 6f 73 65 28 66 64 5b 30 5d | .....dup2(fd[0],.0);.close(fd[0] |
| 5fc0 | 29 3b 20 63 6c 6f 73 65 28 66 64 5b 31 5d 29 3b 00 00 00 1b 20 20 20 20 20 20 20 20 20 20 20 20 | );.close(fd[1]);................ |
| 5fe0 | 72 75 6e 5f 63 6d 64 28 70 20 2b 20 31 29 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 23 | run_cmd(p.+.1);............}...# |
| 6000 | 20 20 20 20 20 20 20 20 63 6c 6f 73 65 28 66 64 5b 30 5d 29 3b 20 63 6c 6f 73 65 28 66 64 5b 31 | ........close(fd[0]);.close(fd[1 |
| 6020 | 5d 29 3b 00 00 00 1f 20 20 20 20 20 20 20 20 77 61 69 74 28 4e 55 4c 4c 29 3b 20 77 61 69 74 28 | ]);............wait(NULL);.wait( |
| 6040 | 4e 55 4c 4c 29 3b 00 00 00 1d 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 66 6f 72 6b 28 29 20 | NULL);........}.else.if.(fork(). |
| 6060 | 3d 3d 20 30 29 20 7b 00 00 00 20 20 20 20 20 20 20 20 20 73 69 67 6e 61 6c 28 53 49 47 49 4e 54 | ==.0).{............signal(SIGINT |
| 6080 | 2c 20 53 49 47 5f 44 46 4c 29 3b 00 00 00 16 20 20 20 20 20 20 20 20 72 75 6e 5f 63 6d 64 28 6c | ,.SIG_DFL);............run_cmd(l |
| 60a0 | 69 6e 65 29 3b 00 00 00 16 20 20 20 20 7d 20 65 6c 73 65 20 77 61 69 74 28 4e 55 4c 4c 29 3b 00 | ine);........}.else.wait(NULL);. |
| 60c0 | 00 00 01 7d 00 00 00 00 00 00 00 57 73 74 61 74 69 63 20 63 68 61 72 20 2a 67 65 74 5f 70 72 6f | ...}.......Wstatic.char.*get_pro |
| 60e0 | 6d 70 74 28 45 64 69 74 4c 69 6e 65 20 2a 65 29 20 7b 20 28 76 6f 69 64 29 65 3b 20 72 65 74 75 | mpt(EditLine.*e).{.(void)e;.retu |
| 6100 | 72 6e 20 28 67 65 74 75 69 64 28 29 20 3d 3d 20 30 29 20 3f 20 22 23 20 22 20 3a 20 22 24 20 22 | rn.(getuid().==.0).?."#.".:."$." |
| 6120 | 3b 20 7d 00 00 00 00 00 00 00 1c 76 6f 69 64 20 72 75 6e 5f 69 6e 74 65 72 61 63 74 69 76 65 28 | ;.}........void.run_interactive( |
| 6140 | 76 6f 69 64 29 20 7b 00 00 00 38 20 20 20 20 45 64 69 74 4c 69 6e 65 20 2a 65 6c 20 3d 20 65 6c | void).{...8....EditLine.*el.=.el |
| 6160 | 5f 69 6e 69 74 28 22 73 68 22 2c 20 73 74 64 69 6e 2c 20 73 74 64 6f 75 74 2c 20 73 74 64 65 72 | _init("sh",.stdin,.stdout,.stder |
| 6180 | 72 29 3b 00 00 00 23 20 20 20 20 48 69 73 74 6f 72 79 20 2a 68 69 73 74 20 3d 20 68 69 73 74 6f | r);...#....History.*hist.=.histo |
| 61a0 | 72 79 5f 69 6e 69 74 28 29 3b 00 00 00 11 20 20 20 20 48 69 73 74 45 76 65 6e 74 20 65 76 3b 00 | ry_init();........HistEvent.ev;. |
| 61c0 | 00 00 15 20 20 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 6c 69 6e 65 3b 00 00 00 0e 20 20 20 20 | .......const.char.*line;........ |
| 61e0 | 69 6e 74 20 63 6f 75 6e 74 3b 00 00 00 27 20 20 20 20 68 69 73 74 6f 72 79 28 68 69 73 74 2c 20 | int.count;...'....history(hist,. |
| 6200 | 26 65 76 2c 20 48 5f 53 45 54 53 49 5a 45 2c 20 31 30 30 29 3b 00 00 00 27 20 20 20 20 65 6c 5f | &ev,.H_SETSIZE,.100);...'....el_ |
| 6220 | 73 65 74 28 65 6c 2c 20 45 4c 5f 48 49 53 54 2c 20 68 69 73 74 6f 72 79 2c 20 68 69 73 74 29 3b | set(el,.EL_HIST,.history,.hist); |
| 6240 | 00 00 00 26 20 20 20 20 65 6c 5f 73 65 74 28 65 6c 2c 20 45 4c 5f 50 52 4f 4d 50 54 2c 20 67 65 | ...&....el_set(el,.EL_PROMPT,.ge |
| 6260 | 74 5f 70 72 6f 6d 70 74 29 3b 00 00 00 20 20 20 20 20 65 6c 5f 73 65 74 28 65 6c 2c 20 45 4c 5f | t_prompt);........el_set(el,.EL_ |
| 6280 | 45 44 49 54 4f 52 2c 20 22 76 69 22 29 3b 00 00 00 1c 20 20 20 20 73 69 67 6e 61 6c 28 53 49 47 | EDITOR,."vi");........signal(SIG |
| 62a0 | 49 4e 54 2c 20 53 49 47 5f 49 47 4e 29 3b 00 00 00 32 20 20 20 20 77 68 69 6c 65 20 28 28 6c 69 | INT,.SIG_IGN);...2....while.((li |
| 62c0 | 6e 65 20 3d 20 65 6c 5f 67 65 74 73 28 65 6c 2c 20 26 63 6f 75 6e 74 29 29 20 21 3d 20 4e 55 4c | ne.=.el_gets(el,.&count)).!=.NUL |
| 62e0 | 4c 29 20 7b 00 00 00 18 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 75 6e 74 20 3e 20 31 29 20 7b | L).{............if.(count.>.1).{ |
| 6300 | 00 00 00 25 20 20 20 20 20 20 20 20 20 20 20 20 63 68 61 72 20 2a 63 6d 64 20 3d 20 73 74 72 64 | ...%............char.*cmd.=.strd |
| 6320 | 75 70 28 6c 69 6e 65 29 3b 00 00 00 2e 20 20 20 20 20 20 20 20 20 20 20 20 68 69 73 74 6f 72 79 | up(line);................history |
| 6340 | 28 68 69 73 74 2c 20 26 65 76 2c 20 48 5f 45 4e 54 45 52 2c 20 6c 69 6e 65 29 3b 00 00 00 19 20 | (hist,.&ev,.H_ENTER,.line);..... |
| 6360 | 20 20 20 20 20 20 20 20 20 20 20 65 78 65 63 75 74 65 28 63 6d 64 29 3b 00 00 00 16 20 20 20 20 | ...........execute(cmd);........ |
| 6380 | 20 20 20 20 20 20 20 20 66 72 65 65 28 63 6d 64 29 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 | ........free(cmd);............}. |
| 63a0 | 00 00 05 20 20 20 20 7d 00 00 00 22 20 20 20 20 65 6c 5f 65 6e 64 28 65 6c 29 3b 20 68 69 73 74 | .......}..."....el_end(el);.hist |
| 63c0 | 6f 72 79 5f 65 6e 64 28 68 69 73 74 29 3b 00 00 00 01 7d 00 00 00 00 00 00 00 1b 76 6f 69 64 20 | ory_end(hist);....}........void. |
| 63e0 | 72 75 6e 5f 73 63 72 69 70 74 28 46 49 4c 45 20 2a 66 70 29 20 7b 00 00 00 14 20 20 20 20 63 68 | run_script(FILE.*fp).{........ch |
| 6400 | 61 72 20 6c 69 6e 65 5b 31 30 32 34 5d 3b 00 00 00 2b 20 20 20 20 77 68 69 6c 65 20 28 66 67 65 | ar.line[1024];...+....while.(fge |
| 6420 | 74 73 28 6c 69 6e 65 2c 20 73 69 7a 65 6f 66 28 6c 69 6e 65 29 2c 20 66 70 29 29 20 7b 00 00 00 | ts(line,.sizeof(line),.fp)).{... |
| 6440 | 43 20 20 20 20 20 20 20 20 69 66 20 28 6c 69 6e 65 5b 30 5d 20 21 3d 20 27 23 27 20 26 26 20 6c | C........if.(line[0].!=.'#'.&&.l |
| 6460 | 69 6e 65 5b 30 5d 20 21 3d 20 27 5c 6e 27 20 26 26 20 6c 69 6e 65 5b 30 5d 20 21 3d 20 27 5c 72 | ine[0].!=.'\n'.&&.line[0].!=.'\r |
| 6480 | 27 29 20 7b 00 00 00 1a 20 20 20 20 20 20 20 20 20 20 20 20 65 78 65 63 75 74 65 28 6c 69 6e 65 | ').{................execute(line |
| 64a0 | 29 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 05 20 20 20 20 7d 00 00 00 01 7d 35 81 f5 | );............}........}....}5.. |
| 64c0 | 18 00 00 00 00 00 00 00 00 00 00 00 00 5c 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 | .............\.................. |
| 64e0 | 00 00 00 00 00 75 09 00 00 00 00 00 00 01 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 10 00 00 00 | .....u...............5._........ |
| 6500 | 12 00 00 00 00 00 00 00 00 00 00 00 11 00 00 00 01 00 00 00 00 00 00 00 00 ff ff ff ff 00 03 00 | ................................ |
| 6520 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6540 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6560 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6580 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 65a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 65c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 65e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6600 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6620 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6640 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6660 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6a 5d 34 2b 04 | ...........................j]4+. |
| 6680 | 01 00 00 00 0b 00 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 f5 18 00 00 | ................................ |
| 66a0 | 00 01 00 00 00 00 00 00 00 00 00 00 00 00 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ..............5................. |
| 66c0 | 00 00 00 00 00 00 47 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0f 09 | ......G......................... |
| 66e0 | 00 00 00 00 00 00 35 81 5f d0 00 00 00 11 00 00 00 13 00 00 00 00 00 00 00 00 00 00 00 12 00 00 | ......5._....................... |
| 6700 | 00 01 00 00 00 00 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6720 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6740 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6760 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 67a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 67c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 67e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6800 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6820 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6840 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6860 | 00 00 00 00 00 00 00 00 00 00 00 00 6a 5d 34 8d 04 01 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 | ............j]4................. |
| 6880 | 02 00 00 00 00 00 00 00 48 00 00 00 1f 23 64 65 66 69 6e 65 20 5f 50 4f 53 49 58 5f 43 5f 53 4f | ........H....#define._POSIX_C_SO |
| 68a0 | 55 52 43 45 20 32 30 30 38 30 39 4c 00 00 00 12 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 69 6f 2e | URCE.200809L....#include.<stdio. |
| 68c0 | 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 6c 69 62 2e 68 3e 00 00 00 13 23 69 6e | h>....#include.<stdlib.h>....#in |
| 68e0 | 63 6c 75 64 65 20 3c 73 74 72 69 6e 67 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 75 6e | clude.<string.h>....#include.<un |
| 6900 | 69 73 74 64 2e 68 3e 00 00 00 13 23 69 6e 63 6c 75 64 65 20 3c 73 69 67 6e 61 6c 2e 68 3e 00 00 | istd.h>....#include.<signal.h>.. |
| 6920 | 00 15 23 69 6e 63 6c 75 64 65 20 3c 73 79 73 2f 77 61 69 74 2e 68 3e 00 00 00 12 23 69 6e 63 6c | ..#include.<sys/wait.h>....#incl |
| 6940 | 75 64 65 20 3c 66 63 6e 74 6c 2e 68 3e 00 00 00 15 23 69 6e 63 6c 75 64 65 20 3c 68 69 73 74 65 | ude.<fcntl.h>....#include.<histe |
| 6960 | 64 69 74 2e 68 3e 00 00 00 11 23 69 6e 63 6c 75 64 65 20 3c 67 6c 6f 62 2e 68 3e 00 00 00 00 00 | dit.h>....#include.<glob.h>..... |
| 6980 | 00 00 57 73 74 61 74 69 63 20 63 68 61 72 20 2a 67 65 74 5f 70 72 6f 6d 70 74 28 45 64 69 74 4c | ..Wstatic.char.*get_prompt(EditL |
| 69a0 | 69 6e 65 20 2a 65 29 20 7b 20 28 76 6f 69 64 29 65 3b 20 72 65 74 75 72 6e 20 28 67 65 74 75 69 | ine.*e).{.(void)e;.return.(getui |
| 69c0 | 64 28 29 20 3d 3d 20 30 29 20 3f 20 22 23 20 22 20 3a 20 22 24 20 22 3b 20 7d 00 00 00 00 00 00 | d().==.0).?."#.".:."$.";.}...... |
| 69e0 | 00 20 73 74 61 74 69 63 20 76 6f 69 64 20 72 75 6e 5f 63 6d 64 28 63 68 61 72 20 2a 63 6d 64 29 | ..static.void.run_cmd(char.*cmd) |
| 6a00 | 20 7b 00 00 00 22 20 20 20 20 63 68 61 72 20 2a 61 72 67 73 5b 36 34 5d 2c 20 2a 74 6f 6b 65 6e | .{..."....char.*args[64],.*token |
| 6a20 | 2c 20 2a 66 69 6c 65 3b 00 00 00 12 20 20 20 20 69 6e 74 20 69 20 3d 20 30 2c 20 66 64 3b 00 00 | ,.*file;........int.i.=.0,.fd;.. |
| 6a40 | 00 0d 20 20 20 20 67 6c 6f 62 5f 74 20 67 3b 00 00 00 1f 20 20 20 20 63 68 61 72 20 2a 70 20 3d | ......glob_t.g;........char.*p.= |
| 6a60 | 20 73 74 72 73 74 72 28 63 6d 64 2c 20 22 3e 22 29 3b 00 00 00 0c 20 20 20 20 69 66 20 28 70 29 | .strstr(cmd,.">");........if.(p) |
| 6a80 | 20 7b 00 00 00 12 20 20 20 20 20 20 20 20 2a 70 20 3d 20 27 5c 30 27 3b 00 00 00 28 20 20 20 20 | .{............*p.=.'\0';...(.... |
| 6aa0 | 20 20 20 20 66 69 6c 65 20 3d 20 73 74 72 74 6f 6b 28 70 20 2b 20 31 2c 20 22 20 5c 74 5c 6e 5c | ....file.=.strtok(p.+.1,.".\t\n\ |
| 6ac0 | 72 22 29 3b 00 00 00 3c 20 20 20 20 20 20 20 20 66 64 20 3d 20 6f 70 65 6e 28 66 69 6c 65 2c 20 | r");...<........fd.=.open(file,. |
| 6ae0 | 4f 5f 57 52 4f 4e 4c 59 20 7c 20 4f 5f 43 52 45 41 54 20 7c 20 4f 5f 54 52 55 4e 43 2c 20 30 36 | O_WRONLY.|.O_CREAT.|.O_TRUNC,.06 |
| 6b00 | 34 34 29 3b 00 00 00 20 20 20 20 20 20 20 20 20 64 75 70 32 28 66 64 2c 20 53 54 44 4f 55 54 5f | 44);............dup2(fd,.STDOUT_ |
| 6b20 | 46 49 4c 45 4e 4f 29 3b 00 00 00 12 20 20 20 20 20 20 20 20 63 6c 6f 73 65 28 66 64 29 3b 00 00 | FILENO);............close(fd);.. |
| 6b40 | 00 05 20 20 20 20 7d 00 00 00 23 20 20 20 20 74 6f 6b 65 6e 20 3d 20 73 74 72 74 6f 6b 28 63 6d | ......}...#....token.=.strtok(cm |
| 6b60 | 64 2c 20 22 20 5c 74 5c 6e 5c 72 22 29 3b 00 00 00 1d 20 20 20 20 77 68 69 6c 65 20 28 74 6f 6b | d,.".\t\n\r");........while.(tok |
| 6b80 | 65 6e 20 26 26 20 69 20 3c 20 36 33 29 20 7b 00 00 00 44 20 20 20 20 20 20 20 20 69 66 20 28 67 | en.&&.i.<.63).{...D........if.(g |
| 6ba0 | 6c 6f 62 28 74 6f 6b 65 6e 2c 20 47 4c 4f 42 5f 4e 4f 43 48 45 43 4b 20 7c 20 47 4c 4f 42 5f 54 | lob(token,.GLOB_NOCHECK.|.GLOB_T |
| 6bc0 | 49 4c 44 45 2c 20 4e 55 4c 4c 2c 20 26 67 29 20 3d 3d 20 30 29 20 7b 00 00 00 60 20 20 20 20 20 | ILDE,.NULL,.&g).==.0).{...`..... |
| 6be0 | 20 20 20 20 20 20 20 66 6f 72 20 28 73 69 7a 65 5f 74 20 6a 20 3d 20 30 3b 20 6a 20 3c 20 67 2e | .......for.(size_t.j.=.0;.j.<.g. |
| 6c00 | 67 6c 5f 70 61 74 68 63 20 26 26 20 69 20 3c 20 36 33 3b 20 6a 2b 2b 29 20 61 72 67 73 5b 69 2b | gl_pathc.&&.i.<.63;.j++).args[i+ |
| 6c20 | 2b 5d 20 3d 20 73 74 72 64 75 70 28 67 2e 67 6c 5f 70 61 74 68 76 5b 6a 5d 29 3b 00 00 00 19 20 | +].=.strdup(g.gl_pathv[j]);..... |
| 6c40 | 20 20 20 20 20 20 20 20 20 20 20 67 6c 6f 62 66 72 65 65 28 26 67 29 3b 00 00 00 21 20 20 20 20 | ...........globfree(&g);...!.... |
| 6c60 | 20 20 20 20 7d 20 65 6c 73 65 20 61 72 67 73 5b 69 2b 2b 5d 20 3d 20 74 6f 6b 65 6e 3b 00 00 00 | ....}.else.args[i++].=.token;... |
| 6c80 | 28 20 20 20 20 20 20 20 20 74 6f 6b 65 6e 20 3d 20 73 74 72 74 6f 6b 28 4e 55 4c 4c 2c 20 22 20 | (........token.=.strtok(NULL,.". |
| 6ca0 | 5c 74 5c 6e 5c 72 22 29 3b 00 00 00 05 20 20 20 20 7d 00 00 00 13 20 20 20 20 61 72 67 73 5b 69 | \t\n\r");........}........args[i |
| 6cc0 | 5d 20 3d 20 4e 55 4c 4c 3b 00 00 00 32 20 20 20 20 69 66 20 28 69 20 3e 20 30 29 20 7b 20 65 78 | ].=.NULL;...2....if.(i.>.0).{.ex |
| 6ce0 | 65 63 76 70 28 61 72 67 73 5b 30 5d 2c 20 61 72 67 73 29 3b 20 65 78 69 74 28 31 29 3b 20 7d 00 | ecvp(args[0],.args);.exit(1);.}. |
| 6d00 | 00 00 01 7d 00 00 00 00 00 00 00 1a 76 6f 69 64 20 65 78 65 63 75 74 65 28 63 68 61 72 20 2a 6c | ...}........void.execute(char.*l |
| 6d20 | 69 6e 65 29 20 7b 00 00 00 0c 20 20 20 20 63 68 61 72 20 2a 70 3b 00 00 00 27 20 20 20 20 69 66 | ine).{........char.*p;...'....if |
| 6d40 | 20 28 73 74 72 6e 63 6d 70 28 6c 69 6e 65 2c 20 22 63 64 20 22 2c 20 33 29 20 3d 3d 20 30 29 20 | .(strncmp(line,."cd.",.3).==.0). |
| 6d60 | 7b 00 00 00 39 20 20 20 20 20 20 20 20 6c 69 6e 65 5b 73 74 72 63 73 70 6e 28 6c 69 6e 65 2c 20 | {...9........line[strcspn(line,. |
| 6d80 | 22 5c 6e 5c 72 22 29 5d 20 3d 20 30 3b 20 63 68 64 69 72 28 6c 69 6e 65 20 2b 20 33 29 3b 00 00 | "\n\r")].=.0;.chdir(line.+.3);.. |
| 6da0 | 00 51 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 73 74 72 63 6d 70 28 6c 69 6e 65 2c 20 22 65 | .Q....}.else.if.(strcmp(line,."e |
| 6dc0 | 78 69 74 5c 6e 22 29 20 3d 3d 20 30 20 7c 7c 20 73 74 72 63 6d 70 28 6c 69 6e 65 2c 20 22 65 78 | xit\n").==.0.||.strcmp(line,."ex |
| 6de0 | 69 74 22 29 20 3d 3d 20 30 29 20 65 78 69 74 28 30 29 3b 00 00 00 27 20 20 20 20 65 6c 73 65 20 | it").==.0).exit(0);...'....else. |
| 6e00 | 69 66 20 28 28 70 20 3d 20 73 74 72 63 68 72 28 6c 69 6e 65 2c 20 27 7c 27 29 29 29 20 7b 00 00 | if.((p.=.strchr(line,.'|'))).{.. |
| 6e20 | 00 27 20 20 20 20 20 20 20 20 69 6e 74 20 66 64 5b 32 5d 3b 20 2a 70 20 3d 20 27 5c 30 27 3b 20 | .'........int.fd[2];.*p.=.'\0';. |
| 6e40 | 70 69 70 65 28 66 64 29 3b 00 00 00 57 20 20 20 20 20 20 20 20 69 66 20 28 66 6f 72 6b 28 29 20 | pipe(fd);...W........if.(fork(). |
| 6e60 | 3d 3d 20 30 29 20 7b 20 64 75 70 32 28 66 64 5b 31 5d 2c 20 31 29 3b 20 63 6c 6f 73 65 28 66 64 | ==.0).{.dup2(fd[1],.1);.close(fd |
| 6e80 | 5b 30 5d 29 3b 20 63 6c 6f 73 65 28 66 64 5b 31 5d 29 3b 20 72 75 6e 5f 63 6d 64 28 6c 69 6e 65 | [0]);.close(fd[1]);.run_cmd(line |
| 6ea0 | 29 3b 20 7d 00 00 00 58 20 20 20 20 20 20 20 20 69 66 20 28 66 6f 72 6b 28 29 20 3d 3d 20 30 29 | );.}...X........if.(fork().==.0) |
| 6ec0 | 20 7b 20 64 75 70 32 28 66 64 5b 30 5d 2c 20 30 29 3b 20 63 6c 6f 73 65 28 66 64 5b 30 5d 29 3b | .{.dup2(fd[0],.0);.close(fd[0]); |
| 6ee0 | 20 63 6c 6f 73 65 28 66 64 5b 31 5d 29 3b 20 72 75 6e 5f 63 6d 64 28 70 20 2b 20 31 29 3b 20 7d | .close(fd[1]);.run_cmd(p.+.1);.} |
| 6f00 | 00 00 00 3b 20 20 20 20 20 20 20 20 63 6c 6f 73 65 28 66 64 5b 30 5d 29 3b 20 63 6c 6f 73 65 28 | ...;........close(fd[0]);.close( |
| 6f20 | 66 64 5b 31 5d 29 3b 20 77 61 69 74 28 4e 55 4c 4c 29 3b 20 77 61 69 74 28 4e 55 4c 4c 29 3b 00 | fd[1]);.wait(NULL);.wait(NULL);. |
| 6f40 | 00 00 58 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 66 6f 72 6b 28 29 20 3d 3d 20 30 29 20 7b | ..X....}.else.if.(fork().==.0).{ |
| 6f60 | 20 73 69 67 6e 61 6c 28 53 49 47 49 4e 54 2c 20 53 49 47 5f 44 46 4c 29 3b 20 72 75 6e 5f 63 6d | .signal(SIGINT,.SIG_DFL);.run_cm |
| 6f80 | 64 28 6c 69 6e 65 29 3b 20 7d 20 65 6c 73 65 20 77 61 69 74 28 4e 55 4c 4c 29 3b 00 00 00 01 7d | d(line);.}.else.wait(NULL);....} |
| 6fa0 | 00 00 00 00 00 00 00 1c 76 6f 69 64 20 72 75 6e 5f 69 6e 74 65 72 61 63 74 69 76 65 28 76 6f 69 | ........void.run_interactive(voi |
| 6fc0 | 64 29 20 7b 00 00 00 38 20 20 20 20 45 64 69 74 4c 69 6e 65 20 2a 65 6c 20 3d 20 65 6c 5f 69 6e | d).{...8....EditLine.*el.=.el_in |
| 6fe0 | 69 74 28 22 73 68 22 2c 20 73 74 64 69 6e 2c 20 73 74 64 6f 75 74 2c 20 73 74 64 65 72 72 29 3b | it("sh",.stdin,.stdout,.stderr); |
| 7000 | 00 00 00 23 20 20 20 20 48 69 73 74 6f 72 79 20 2a 68 69 73 74 20 3d 20 68 69 73 74 6f 72 79 5f | ...#....History.*hist.=.history_ |
| 7020 | 69 6e 69 74 28 29 3b 00 00 00 11 20 20 20 20 48 69 73 74 45 76 65 6e 74 20 65 76 3b 00 00 00 27 | init();........HistEvent.ev;...' |
| 7040 | 20 20 20 20 68 69 73 74 6f 72 79 28 68 69 73 74 2c 20 26 65 76 2c 20 48 5f 53 45 54 53 49 5a 45 | ....history(hist,.&ev,.H_SETSIZE |
| 7060 | 2c 20 31 30 30 29 3b 00 00 00 27 20 20 20 20 65 6c 5f 73 65 74 28 65 6c 2c 20 45 4c 5f 48 49 53 | ,.100);...'....el_set(el,.EL_HIS |
| 7080 | 54 2c 20 68 69 73 74 6f 72 79 2c 20 68 69 73 74 29 3b 00 00 00 26 20 20 20 20 65 6c 5f 73 65 74 | T,.history,.hist);...&....el_set |
| 70a0 | 28 65 6c 2c 20 45 4c 5f 50 52 4f 4d 50 54 2c 20 67 65 74 5f 70 72 6f 6d 70 74 29 3b 00 00 00 20 | (el,.EL_PROMPT,.get_prompt);.... |
| 70c0 | 20 20 20 20 65 6c 5f 73 65 74 28 65 6c 2c 20 45 4c 5f 45 44 49 54 4f 52 2c 20 22 76 69 22 29 3b | ....el_set(el,.EL_EDITOR,."vi"); |
| 70e0 | 00 00 00 1d 20 20 20 20 65 6c 5f 73 65 74 28 65 6c 2c 20 45 4c 5f 53 49 47 4e 41 4c 2c 20 31 29 | ........el_set(el,.EL_SIGNAL,.1) |
| 7100 | 3b 00 00 00 1c 20 20 20 20 73 69 67 6e 61 6c 28 53 49 47 49 4e 54 2c 20 53 49 47 5f 49 47 4e 29 | ;........signal(SIGINT,.SIG_IGN) |
| 7120 | 3b 00 00 00 15 20 20 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 6c 69 6e 65 3b 00 00 00 0e 20 20 | ;........const.char.*line;...... |
| 7140 | 20 20 69 6e 74 20 63 6f 75 6e 74 3b 00 00 00 32 20 20 20 20 77 68 69 6c 65 20 28 28 6c 69 6e 65 | ..int.count;...2....while.((line |
| 7160 | 20 3d 20 65 6c 5f 67 65 74 73 28 65 6c 2c 20 26 63 6f 75 6e 74 29 29 20 21 3d 20 4e 55 4c 4c 29 | .=.el_gets(el,.&count)).!=.NULL) |
| 7180 | 20 7b 00 00 00 18 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 75 6e 74 20 3e 20 31 29 20 7b 00 00 | .{............if.(count.>.1).{.. |
| 71a0 | 00 25 20 20 20 20 20 20 20 20 20 20 20 20 63 68 61 72 20 2a 63 6d 64 20 3d 20 73 74 72 64 75 70 | .%............char.*cmd.=.strdup |
| 71c0 | 28 6c 69 6e 65 29 3b 00 00 00 2e 20 20 20 20 20 20 20 20 20 20 20 20 68 69 73 74 6f 72 79 28 68 | (line);................history(h |
| 71e0 | 69 73 74 2c 20 26 65 76 2c 20 48 5f 45 4e 54 45 52 2c 20 6c 69 6e 65 29 3b 00 00 00 19 20 20 20 | ist,.&ev,.H_ENTER,.line);....... |
| 7200 | 20 20 20 20 20 20 20 20 20 65 78 65 63 75 74 65 28 63 6d 64 29 3b 00 00 00 16 20 20 20 20 20 20 | .........execute(cmd);.......... |
| 7220 | 20 20 20 20 20 20 66 72 65 65 28 63 6d 64 29 3b 00 00 00 09 20 20 20 20 20 20 20 20 7d 00 00 00 | ......free(cmd);............}... |
| 7240 | 05 20 20 20 20 7d 00 00 00 22 20 20 20 20 65 6c 5f 65 6e 64 28 65 6c 29 3b 20 68 69 73 74 6f 72 | .....}..."....el_end(el);.histor |
| 7260 | 79 5f 65 6e 64 28 68 69 73 74 29 3b 00 00 00 01 7d 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 | y_end(hist);....}5.............. |
| 7280 | 00 48 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 09 00 00 00 00 00 | .H.............................. |
| 72a0 | 00 01 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 12 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........5._.................... |
| 72c0 | 13 00 00 00 01 00 00 00 00 00 00 00 00 ff ff ff ff 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 72e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 73a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 73c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 73e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7400 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6a 5d 34 8d 04 01 00 00 00 0c 00 f5 18 00 00 00 00 | ...............j]4.............. |
| 7440 | 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 f5 18 00 00 00 01 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7460 | 00 00 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 57 00 00 00 01 00 | ..5.......................W..... |
| 7480 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 bf 09 00 00 00 00 00 00 35 81 e7 aa | ..........................5... |