[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.