aboutsummaryrefslogtreecommitdiffstats
path: root/nimisewi.c
diff options
context:
space:
mode:
Diffstat (limited to 'nimisewi.c')
-rw-r--r--nimisewi.c36
1 files changed, 11 insertions, 25 deletions
diff --git a/nimisewi.c b/nimisewi.c
index 28d79a6..07d9fc4 100644
--- a/nimisewi.c
+++ b/nimisewi.c
@@ -64,6 +64,13 @@ nsrand(uint32_t limit)
#ifdef HAVE_ARC4RANDOM_UNIFORM
return arc4random_uniform(limit);
#else
+ pid_t pid;
+ struct timeval time;
+
+ gettimeofday(&time, NULL);
+ pid = getpid();
+ srand(pid * time.tv_usec * time.tv_sec);
+
return rand() % limit;
#endif
}
@@ -79,23 +86,6 @@ catstr(char *dst, const char *src, size_t size)
#endif
}
-static void
-open_e_nanpa_sewi(void)
-{
- /* initialize pseudorandom generator using pid, microseconds and seconds
- *
- * for such silly program there's no need to implement cryptographically
- * secure random number generator.
- */
-
- pid_t pid;
- struct timeval time;
-
- gettimeofday(&time, NULL);
- pid = getpid();
- srand(pid * time.tv_usec * time.tv_sec);
-}
-
static const char
*pana_e_nimi(const int nanpa_nimi)
{
@@ -147,7 +137,7 @@ nanpa_nimi_pana_e_pi(struct nanpa_nimi *nn)
}
static struct nanpa_nimi
-*pana_e_nanpa_nimi(void)
+*pana_e_nanpa_nimi(unsigned int nanpa_nimi_sewi)
{
/* generate nanpa_nimi with all the values useful for phrase generation
*
@@ -168,7 +158,7 @@ static struct nanpa_nimi
nn->nanpa_sewi_nimi = NULL;
nn->suli_pi_nimi_sewi = 0;
- nn->nanpa_nimi = (nsrand(6));
+ nn->nanpa_nimi = (nsrand(nanpa_nimi_sewi));
/* to use with arbitrary wordlist, remove following function call */
nanpa_nimi_pana_e_pi(nn);
@@ -203,17 +193,13 @@ weka_e_nanpa_nimi(struct nanpa_nimi *nn)
}
char
-*nimi_sewi()
+*nimi_sewi(unsigned int nanpa_nimi_sewi)
{
int i;
char *nimi_pana;
struct nanpa_nimi *nn;
-#ifndef HAVE_ARC4RANDOM_UNIFORM
- open_e_nanpa_sewi();
-#endif
-
- nn = pana_e_nanpa_nimi();
+ nn = pana_e_nanpa_nimi(nanpa_nimi_sewi);
nimi_pana = calloc(nn->suli_pi_nimi_sewi + 1, sizeof(char));
if (nimi_pana == NULL) {