diff options
author | Michael Vetter <jubalh@iodoru.org> | 2019-10-16 10:39:35 +0200 |
---|---|---|
committer | Michael Vetter <jubalh@iodoru.org> | 2019-10-16 10:39:35 +0200 |
commit | f9eb302a5965312713a1bd388904a26e7dadadb0 (patch) | |
tree | 81e3a021a0f5a998e6bba22a28e0acd08a445d2d | |
parent | 1e09a055ca2ac7b8738d7ade2b8f656682e2c24d (diff) | |
download | profani-tty-f9eb302a5965312713a1bd388904a26e7dadadb0.tar.gz |
Move code from jid_random_resource() into own function
Move the code that creates a random string into it's own function +get_random_string().
-rw-r--r-- | src/common.c | 20 | ||||
-rw-r--r-- | src/common.h | 2 | ||||
-rw-r--r-- | src/xmpp/jid.c | 16 |
3 files changed, 26 insertions, 12 deletions
diff --git a/src/common.c b/src/common.c index d8ee9915..b4dfa9d4 100644 --- a/src/common.c +++ b/src/common.c @@ -489,3 +489,23 @@ get_file_paths_recursive(const char *path, GSList **contents) entry = g_dir_read_name(directory); } } + +char* +get_random_string(int length) +{ + GRand *prng; + char *rand; + char alphabet[] = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; + + rand = calloc(length+1, sizeof(char)); + + prng = g_rand_new(); + + int i; + for (i = 0; i < length; i++) { + rand[i] = alphabet[g_rand_int_range(prng, 0, sizeof(alphabet))]; + } + g_rand_free(prng); + + return rand; +} diff --git a/src/common.h b/src/common.h index 6d4ca39c..38ac909b 100644 --- a/src/common.h +++ b/src/common.h @@ -103,4 +103,6 @@ int is_regular_file(const char *path); int is_dir(const char *path); void get_file_paths_recursive(const char *directory, GSList **contents); +char* get_random_string(int length); + #endif diff --git a/src/xmpp/jid.c b/src/xmpp/jid.c index 49bf7b9c..25067050 100644 --- a/src/xmpp/jid.c +++ b/src/xmpp/jid.c @@ -198,18 +198,10 @@ jid_fulljid_or_barejid(Jid *jid) char* jid_random_resource(void) { - GRand *prng; - char rand[5]; - char alphabet[] = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; + char *rand = get_random_string(4); - prng = g_rand_new(); + gchar *result = g_strdup_printf("profanity.%s", rand); + free(rand); - int i; - for (i = 0; i < 4; i++) { - rand[i] = alphabet[g_rand_int_range(prng, 0, sizeof(alphabet))]; - } - rand[4] = '\0'; - g_rand_free(prng); - - return g_strdup_printf("profanity.%s", rand); + return result; } |