[openssl-commits] [openssl] master update
Rich Salz
rsalz at openssl.org
Mon Apr 27 03:45:27 UTC 2015
The branch master has been updated
via 57d5edada75686fb1c19ce1bbf3e16f4f2784303 (commit)
from 1bb2daead8cf3962098647efa1f74c3bce3e9009 (commit)
- Log -----------------------------------------------------------------
commit 57d5edada75686fb1c19ce1bbf3e16f4f2784303
Author: Rich Salz <rsalz at openssl.org>
Date: Sun Apr 26 23:45:12 2015 -0400
Add readline (etc) support
Compile with -DREADLINE and the appropriate library.
Reviewed-by: Richard Levitte <levitte at openssl.org>
-----------------------------------------------------------------------
Summary of changes:
apps/openssl.c | 32 ++++++++++++++++++++++++++++++--
1 file changed, 30 insertions(+), 2 deletions(-)
diff --git a/apps/openssl.c b/apps/openssl.c
index 2a85145..b42d031 100644
--- a/apps/openssl.c
+++ b/apps/openssl.c
@@ -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;
More information about the openssl-commits
mailing list