提交 57d5edad 编写于 作者: R Rich Salz

Add readline (etc) support

Compile with -DREADLINE and the appropriate library.
Reviewed-by: NRichard Levitte <levitte@openssl.org>
上级 1bb2daea
......@@ -448,9 +448,11 @@ int main(int argc, char *argv[])
/* ok, lets enter interactive mode */
for (;;) {
ret = 0;
for (p = buf, n = sizeof buf, i = 0, first = 1;; first = 0) {
prompt = first ? "OpenSSL> " : "> ";
/* Read a line, continue reading if line ends with \ */
for (p = buf, n = sizeof buf, i = 0, first = 1; n > 0; first = 0) {
prompt = first ? "openssl : " : "> ";
p[0] = '\0';
#ifndef READLINE
fputs(prompt, stdout);
fflush(stdout);
if (!fgets(p, n, stdin))
......@@ -465,7 +467,33 @@ int main(int argc, char *argv[])
i -= 2;
p += i;
n -= i;
#else
{
extern char *readline(const char *);
extern void add_history(const char *cp);
char *text;
char *text = readline(prompt);
if (text == NULL)
goto end;
i = strlen(text);
if (i == 0 || i > n)
break;
if (text[i - 1] != '\\') {
p += strlen(strcpy(p, text));
free(text);
add_history(buf);
break;
}
text[i - 1] = '\0';
p += strlen(strcpy(p, text));
free(text);
n -= i;
}
#endif
}
if (!chopup_args(&arg, buf)) {
BIO_printf(bio_err, "Can't parse (no memory?)\n");
break;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册