From 5b543e8fa6de8c599affddbe6804d0b3f1db5aa6 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Sat, 3 Jan 2009 13:20:10 +0100 Subject: permission: use g_strsplit() instead of strtok_r() g_strsplit() is more portable than strtok_r(). --- src/permission.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/permission.c b/src/permission.c index 260d2669a..6972ecf81 100644 --- a/src/permission.c +++ b/src/permission.c @@ -38,17 +38,18 @@ static GHashTable *permission_passwords; static unsigned permission_default; -static unsigned parsePermissions(char *string) +static unsigned parsePermissions(const char *string) { unsigned permission = 0; - char *temp; - char *tok; + gchar **tokens; if (!string) return 0; - temp = strtok_r(string, PERMISSION_SEPERATOR, &tok); - while (temp) { + tokens = g_strsplit(string, PERMISSION_SEPERATOR, 0); + for (unsigned i = 0; tokens[i] != NULL; ++i) { + char *temp = tokens[i]; + if (strcmp(temp, PERMISSION_READ_STRING) == 0) { permission |= PERMISSION_READ; } else if (strcmp(temp, PERMISSION_ADD_STRING) == 0) { @@ -60,10 +61,10 @@ static unsigned parsePermissions(char *string) } else { FATAL("unknown permission \"%s\"\n", temp); } - - temp = strtok_r(NULL, PERMISSION_SEPERATOR, &tok); } + g_strfreev(tokens); + return permission; } @@ -85,7 +86,7 @@ void initPermissions(void) permission_default = 0; do { - char *separator = + const char *separator = strchr(param->value, PERMISSION_PASSWORD_CHAR); if (separator == NULL) -- cgit v1.2.3