this repo has no description
at main 870 B view raw
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}