diff options
Diffstat (limited to 'src/random/generate-random.c')
-rw-r--r-- | src/random/generate-random.c | 42 |
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; +} |