diff options
| author | Oskari Timperi <oskari.timperi@iki.fi> | 2015-09-18 08:20:30 +0300 |
|---|---|---|
| committer | Oskari Timperi <oskari.timperi@iki.fi> | 2015-09-18 08:20:30 +0300 |
| commit | 8e66d7bd309bdb2bd5b9c60273f3a8d27b2aeccb (patch) | |
| tree | 3653f1f7125822241ab4fac130cec3f551a4458b | |
| parent | 5d0c71ff11d480be5530918cb83d0a5755f1518e (diff) | |
| download | diceware-8e66d7bd309bdb2bd5b9c60273f3a8d27b2aeccb.tar.gz diceware-8e66d7bd309bdb2bd5b9c60273f3a8d27b2aeccb.zip | |
main.c: simplify get_random_id()
| -rw-r--r-- | main.c | 25 |
1 files changed, 8 insertions, 17 deletions
@@ -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; } |
