summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2018-08-15 22:44:17 -0700
committerKeith Packard <keithp@keithp.com>2018-10-13 08:22:50 -0700
commita76829a4a840261e33869c40b3366fff3b691069 (patch)
tree715a27874e1a2b9e3e7a9ad110ffc08eee31e584 /src
parent684741765117611b7d666efbdfafd87c6199752c (diff)
altos: Allow application-specific prompts for ao_cmd_readline
Lets other readline users specify alternate prompts. Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src')
-rw-r--r--src/kernel/ao.h2
-rw-r--r--src/kernel/ao_cmd.c27
2 files changed, 12 insertions, 17 deletions
diff --git a/src/kernel/ao.h b/src/kernel/ao.h
index cdcdadc3..08e90839 100644
--- a/src/kernel/ao.h
+++ b/src/kernel/ao.h
@@ -165,7 +165,7 @@ void
ao_put_string(const char *s);
void
-ao_cmd_readline(void);
+ao_cmd_readline(const char *prompt);
char
ao_cmd_lex(void);
diff --git a/src/kernel/ao_cmd.c b/src/kernel/ao_cmd.c
index a72192f4..d1c049ac 100644
--- a/src/kernel/ao_cmd.c
+++ b/src/kernel/ao_cmd.c
@@ -34,6 +34,8 @@ static char cmd_line[AO_CMD_LEN];
static uint8_t cmd_len;
static uint8_t cmd_i;
+static const char backspace[] = "\010 \010";
+
void
ao_put_string(const char *s)
{
@@ -42,18 +44,12 @@ ao_put_string(const char *s)
putchar(c);
}
-static void
-backspace(void)
-{
- ao_put_string ("\010 \010");
-}
-
void
-ao_cmd_readline(void)
+ao_cmd_readline(const char *prompt)
{
char c;
if (ao_echo())
- ao_put_string("> ");
+ ao_put_string(prompt);
cmd_len = 0;
for (;;) {
flush();
@@ -62,7 +58,7 @@ ao_cmd_readline(void)
if (c == '\010' || c == '\177') {
if (cmd_len != 0) {
if (ao_echo())
- backspace();
+ ao_put_string(backspace);
--cmd_len;
}
continue;
@@ -72,7 +68,7 @@ ao_cmd_readline(void)
if (c == '\025') {
while (cmd_len != 0) {
if (ao_echo())
- backspace();
+ ao_put_string(backspace);
--cmd_len;
}
continue;
@@ -172,9 +168,8 @@ ao_cmd_hexchar(char c)
return -1;
}
-static
-uint32_t
-_ao_cmd_hex(uint8_t lim)
+static uint32_t
+get_hex(uint8_t lim)
{
uint32_t result = 0;
uint8_t i;
@@ -196,13 +191,13 @@ _ao_cmd_hex(uint8_t lim)
uint8_t
ao_cmd_hexbyte(void)
{
- return _ao_cmd_hex(2);
+ return get_hex(2);
}
uint32_t
ao_cmd_hex(void)
{
- return _ao_cmd_hex(0xff);
+ return get_hex(0xff);
}
uint32_t
@@ -371,7 +366,7 @@ ao_cmd(void)
void (*func)(void);
for (;;) {
- ao_cmd_readline();
+ ao_cmd_readline("> ");
ao_cmd_lex();
ao_cmd_white();
c = ao_cmd_lex_c;