gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-anastasis] 03/03: prepared command line input reading


From: gnunet
Subject: [taler-anastasis] 03/03: prepared command line input reading
Date: Sat, 16 May 2020 19:25:25 +0200

This is an automated email from the git hooks/post-receive script.

dennis-neufeld pushed a commit to branch master
in repository anastasis.

commit 2454d97297605cdb5c228d174e57448e6d1cd810
Author: Dennis Neufeld <address@hidden>
AuthorDate: Sat May 16 17:25:18 2020 +0000

    prepared command line input reading
---
 src/cli/anastasis-cli-splitter.c  | 143 +++++++++++++++++++++++++++++++++++---
 src/cli/user-details-example.json |   6 ++
 2 files changed, 141 insertions(+), 8 deletions(-)

diff --git a/src/cli/anastasis-cli-splitter.c b/src/cli/anastasis-cli-splitter.c
index 298d7a7..ff6dc34 100644
--- a/src/cli/anastasis-cli-splitter.c
+++ b/src/cli/anastasis-cli-splitter.c
@@ -25,6 +25,8 @@
 #include "anastasis_service.h"
 #include "anastasis.h"
 
+/* Constant, max size of keyboard input buffer */
+#define MAX_SIZE_INPUT_BUFFER 256
 
 /**
  * Global option '-me' to import json containing details of user.
@@ -60,20 +62,142 @@ static void
 read_keyboard_command (void *cls)
 {
   (void) cls;
-  int input;
+  char *buffer = NULL;
+  size_t buffer_size = MAX_SIZE_INPUT_BUFFER;
+  size_t characters;
 
   keyboard_task = NULL;
-  input = getchar ();
-  if ( (EOF == input) ||
-       ('x' == (char) input) )
+  buffer = (char *) GNUNET_malloc (buffer_size * sizeof (char));
+  characters = getline (&buffer,
+                        &buffer_size,
+                        stdin);
+
+  if (characters == 2 * sizeof (char))
   {
-    GNUNET_SCHEDULER_shutdown ();
+    if (EOF == (char) buffer[0])
+    {
+      GNUNET_SCHEDULER_shutdown ();
+      return;
+    }
+    switch ((char) buffer[0])
+    {
+    case 'x':
+      GNUNET_SCHEDULER_shutdown ();
+      GNUNET_free (buffer);
+      buffer = NULL;
+      return;
+    case 'o':
+      printf (
+        "\nOPTIONS:\n"
+        "'x' to quit\n"
+        "'o' to show options\n"
+        "'server add' to add a provider/server\n"
+        "\n"
+        );
+      GNUNET_free (buffer);
+      buffer = NULL;
+      break;
+    default:
+      fprintf (stderr,
+               "Unknown command '%c'\n",
+               buffer[0]);
+      GNUNET_free (buffer);
+      buffer = NULL;
+      break;
+    }
+    start_read_keyboard ();
+    return;
+  }
+
+  if (0 == strncmp ("server",
+                    buffer,
+                    strlen ("server")))
+  {
+    // FIXME "server" logic here
+    start_read_keyboard ();
+    GNUNET_free (buffer);
+    buffer = NULL;
+    return;
+  }
+  if (0 == strncmp ("server add",
+                    buffer,
+                    strlen ("server add")))
+  {
+    // FIXME "server add" logic here
+    start_read_keyboard ();
+    GNUNET_free (buffer);
+    buffer = NULL;
+    return;
+  }
+
+  if (0 == strncmp ("truth",
+                    buffer,
+                    strlen ("truth")))
+  {
+    // FIXME "truth" logic here
+    start_read_keyboard ();
+    GNUNET_free (buffer);
+    buffer = NULL;
+    return;
+  }
+  if (0 == strncmp ("truth add",
+                    buffer,
+                    strlen ("truth add")))
+  {
+    // FIXME "truth add" logic here
+    start_read_keyboard ();
+    GNUNET_free (buffer);
+    buffer = NULL;
+    return;
+  }
+  if (0 == strncmp ("truth --secrets",
+                    buffer,
+                    strlen ("truth --secrets")))
+  {
+    // FIXME "truth --secrets" logic here
+    start_read_keyboard ();
+    GNUNET_free (buffer);
+    buffer = NULL;
+    return;
+  }
+
+  if (0 == strncmp ("policy",
+                    buffer,
+                    strlen ("policy")))
+  {
+    // FIXME "policy" logic here
+    start_read_keyboard ();
+    GNUNET_free (buffer);
+    buffer = NULL;
+    return;
+  }
+  if (0 == strncmp ("policy add",
+                    buffer,
+                    strlen ("policy add")))
+  {
+    // FIXME "policy add" logic here
+    start_read_keyboard ();
+    GNUNET_free (buffer);
+    buffer = NULL;
+    return;
+  }
+
+  if (0 == strncmp ("publish",
+                    buffer,
+                    strlen ("publish")))
+  {
+    // FIXME "publish" logic here
+    start_read_keyboard ();
+    GNUNET_free (buffer);
+    buffer = NULL;
     return;
   }
 
   fprintf (stderr,
-           "Unknown command '%c'\n",
-           (char) input);
+           "Unknown command '%s'\n",
+           (char*) buffer);
+  GNUNET_free (buffer);
+  buffer = NULL;
   start_read_keyboard ();
 }
 
@@ -90,12 +214,15 @@ start_read_keyboard ()
 
   if (! import_id)
   {
-    printf ("Please provide user details with option '-me file.json'!\n");
+    printf ("Please provide user details with option '--me file.json'!\n");
     GNUNET_SCHEDULER_shutdown ();
     return;
   }
 
+
+
   printf ("'x' to quit\n");
+  printf ("'o' to show options\n");
   printf ("Waiting for keyboard input\n");
   keyboard_task = GNUNET_SCHEDULER_add_read_file (GNUNET_TIME_UNIT_FOREVER_REL,
                                                   &fh,
diff --git a/src/cli/user-details-example.json 
b/src/cli/user-details-example.json
new file mode 100644
index 0000000..3eb1f7a
--- /dev/null
+++ b/src/cli/user-details-example.json
@@ -0,0 +1,6 @@
+{ 
+    "first-name":"John",
+    "last-name":"Wayne",
+    "birthdate":"01-01-1901",
+    "social-security-number":"123456789" 
+}
\ No newline at end of file

-- 
To stop receiving notification emails like this one, please contact
address@hidden.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]