this repo has no description
1#include <kernel/nsh.h>
2#include <kernel/d/uart.h>
3#include <kernel/mem.h>
4
5#define PROMPT "/ "
6
7static void nsh_exec(char *cmd)
8{
9 uart_puts("-> ");
10 uart_puts(cmd);
11 uart_puts("\r\n");
12}
13
14static int nsh_read(char *buf, int buflen)
15{
16 static int i = 0;
17
18 uart_puts(PROMPT);
19 u8 ch = 0;
20 while (1)
21 {
22 ch = uart_getc();
23 switch (ch)
24 {
25 case 13: /* enter */
26 uart_puts("\r\n");
27 nsh_exec(buf);
28 memset(buf, 0, buflen - 1);
29 i = 0;
30 return 1;
31 case 3: /* ctrl-c */
32 uart_puts("\r\n");
33 memset(buf, 0, buflen - 1);
34 i = 0;
35 return 1;
36 case 4: /* ctrl-d */
37 uart_puts("\r\n");
38 return 0;
39 default:
40 buf[i++] = ch;
41 uart_putc(ch);
42 break;
43 }
44 }
45
46 return 1;
47}
48
49void nsh(void)
50{
51 #define BUFLEN (1024)
52 char buf[BUFLEN];
53 memset(buf, 0, BUFLEN - 1);
54
55 while (1)
56 {
57 if (!nsh_read(&buf[0], BUFLEN))
58 {
59 break;
60 }
61 }
62}