From 9acc1e1e97ff75e681ef5527f512e57917c617f3 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Sat, 19 Oct 2013 16:43:35 +0200 Subject: Permission: use std::find instead of g_strsplit() --- src/Permission.cxx | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/src/Permission.cxx b/src/Permission.cxx index a703a9465..a35c80e94 100644 --- a/src/Permission.cxx +++ b/src/Permission.cxx @@ -24,16 +24,15 @@ #include "ConfigOption.hxx" #include "system/FatalError.hxx" +#include #include #include -#include - #include #include static constexpr char PERMISSION_PASSWORD_CHAR = '@'; -#define PERMISSION_SEPERATOR "," +static constexpr char PERMISSION_SEPARATOR = ','; static constexpr struct { const char *name; @@ -65,17 +64,23 @@ static unsigned parsePermissions(const char *string) { assert(string != nullptr); - unsigned permission = 0; - gchar **tokens; + const char *const end = string + strlen(string); - tokens = g_strsplit(string, PERMISSION_SEPERATOR, 0); - for (unsigned i = 0; tokens[i] != NULL; ++i) { - char *temp = tokens[i]; - permission |= ParsePermission(temp); + unsigned permission = 0; + while (true) { + const char *comma = std::find(string, end, + PERMISSION_SEPARATOR); + if (comma > string) { + const std::string name(string, comma); + permission |= ParsePermission(name.c_str()); + } + + if (comma == end) + break; + + string = comma + 1; } - g_strfreev(tokens); - return permission; } -- cgit v1.2.3