[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