edit: Add support for prompt string with internal line edit
Signed-hostap: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
2d2398a11f
commit
4c3b921ebf
1 changed files with 8 additions and 6 deletions
|
@ -20,6 +20,7 @@ static int cmdbuf_pos = 0;
|
||||||
static int cmdbuf_len = 0;
|
static int cmdbuf_len = 0;
|
||||||
static char currbuf[CMD_BUF_LEN];
|
static char currbuf[CMD_BUF_LEN];
|
||||||
static int currbuf_valid = 0;
|
static int currbuf_valid = 0;
|
||||||
|
static const char *ps2 = NULL;
|
||||||
|
|
||||||
#define HISTORY_MAX 100
|
#define HISTORY_MAX 100
|
||||||
|
|
||||||
|
@ -47,7 +48,7 @@ void edit_clear_line(void)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
putchar('\r');
|
putchar('\r');
|
||||||
for (i = 0; i < cmdbuf_len + 2; i++)
|
for (i = 0; i < cmdbuf_len + 2 + (ps2 ? (int) os_strlen(ps2) : 0); i++)
|
||||||
putchar(' ');
|
putchar(' ');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -346,7 +347,7 @@ static void process_cmd(void)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (cmdbuf_len == 0) {
|
if (cmdbuf_len == 0) {
|
||||||
printf("\n> ");
|
printf("\n%s> ", ps2 ? ps2 : "");
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -356,7 +357,7 @@ static void process_cmd(void)
|
||||||
cmdbuf_pos = 0;
|
cmdbuf_pos = 0;
|
||||||
cmdbuf_len = 0;
|
cmdbuf_len = 0;
|
||||||
edit_cmd_cb(edit_cb_ctx, cmdbuf);
|
edit_cmd_cb(edit_cb_ctx, cmdbuf);
|
||||||
printf("> ");
|
printf("%s> ", ps2 ? ps2 : "");
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1132,7 +1133,8 @@ int edit_init(void (*cmd_cb)(void *ctx, char *cmd),
|
||||||
|
|
||||||
eloop_register_read_sock(STDIN_FILENO, edit_read_char, NULL, NULL);
|
eloop_register_read_sock(STDIN_FILENO, edit_read_char, NULL, NULL);
|
||||||
|
|
||||||
printf("> ");
|
ps2 = ps;
|
||||||
|
printf("%s> ", ps2 ? ps2 : "");
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -1161,11 +1163,11 @@ void edit_redraw(void)
|
||||||
{
|
{
|
||||||
char tmp;
|
char tmp;
|
||||||
cmdbuf[cmdbuf_len] = '\0';
|
cmdbuf[cmdbuf_len] = '\0';
|
||||||
printf("\r> %s", cmdbuf);
|
printf("\r%s> %s", ps2 ? ps2 : "", cmdbuf);
|
||||||
if (cmdbuf_pos != cmdbuf_len) {
|
if (cmdbuf_pos != cmdbuf_len) {
|
||||||
tmp = cmdbuf[cmdbuf_pos];
|
tmp = cmdbuf[cmdbuf_pos];
|
||||||
cmdbuf[cmdbuf_pos] = '\0';
|
cmdbuf[cmdbuf_pos] = '\0';
|
||||||
printf("\r> %s", cmdbuf);
|
printf("\r%s> %s", ps2 ? ps2 : "", cmdbuf);
|
||||||
cmdbuf[cmdbuf_pos] = tmp;
|
cmdbuf[cmdbuf_pos] = tmp;
|
||||||
}
|
}
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
|
|
Loading…
Reference in a new issue