aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOskari Timperi <oskari.timperi@iki.fi>2015-09-18 08:20:30 +0300
committerOskari Timperi <oskari.timperi@iki.fi>2015-09-18 08:20:30 +0300
commit8e66d7bd309bdb2bd5b9c60273f3a8d27b2aeccb (patch)
tree3653f1f7125822241ab4fac130cec3f551a4458b
parent5d0c71ff11d480be5530918cb83d0a5755f1518e (diff)
downloaddiceware-8e66d7bd309bdb2bd5b9c60273f3a8d27b2aeccb.tar.gz
diceware-8e66d7bd309bdb2bd5b9c60273f3a8d27b2aeccb.zip
main.c: simplify get_random_id()
-rw-r--r--main.c25
1 files changed, 8 insertions, 17 deletions
diff --git a/main.c b/main.c
index e0f7a99..387c695 100644
--- a/main.c
+++ b/main.c
@@ -13,29 +13,20 @@
*/
int get_random_id(struct randgen *randgen, char *id, size_t size)
{
- size_t n = 0;
- unsigned char buf[512];
- size_t i;
-
assert(randgen != NULL);
assert(id != NULL);
assert(size > 0);
- while (n < size-1)
- {
- if (randgen_generate(randgen, buf, sizeof(buf)) == -1)
- return -1;
+ if (randgen_generate(randgen, id, size-1) == -1)
+ return -1;
- for (i = 0; i < sizeof(buf) && n < size-1; ++i)
- {
- if (buf[i] >= '1' && buf[i] <= '6')
- {
- id[n++] = buf[i];
- }
- }
- }
+ id[--size] = '\0';
- id[size-1] = '\0';
+ while (size > 0)
+ {
+ unsigned char q = ((unsigned char *) id)[size-1];
+ id[--size] = '1' + (q % 6);
+ }
return 0;
}