summaryrefslogtreecommitdiff
path: root/src/random/generate-random.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/random/generate-random.c')
-rw-r--r--src/random/generate-random.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/random/generate-random.c b/src/random/generate-random.c
new file mode 100644
index 0000000..bde01b9
--- /dev/null
+++ b/src/random/generate-random.c
@@ -0,0 +1,42 @@
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif /* HAVE_CONFIG_H */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <libguile.h>
+#include <gettext.h>
+
+#define _(s) gettext (s)
+
+SCM webidoidc_random_g (SCM length);
+
+int init_webidoidc_random (void);
+
+static void
+run (void *params, int argc, char *argv[])
+{
+ size_t n_bytes;
+ char *end;
+ SCM data;
+ (void) params;
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+ if (argc != 2
+ || (n_bytes = strtoull (argv[1], &end, 10)) == 0 || *end != '\0')
+ {
+ fprintf (stderr, _("Usage: generate-random [NUMBER OF BYTES]\n"));
+ exit (1);
+ }
+ init_webidoidc_random ();
+ data = webidoidc_random_g (scm_from_size_t (n_bytes));
+ printf ("%s\n", scm_to_locale_string (data));
+}
+
+int
+main (int argc, char *argv[])
+{
+ scm_boot_guile (argc, argv, run, NULL);
+ return 0;
+}