Commit 9acc1e1e authored by Max Kellermann's avatar Max Kellermann

Permission: use std::find instead of g_strsplit()

parent daa47546
...@@ -24,16 +24,15 @@ ...@@ -24,16 +24,15 @@
#include "ConfigOption.hxx" #include "ConfigOption.hxx"
#include "system/FatalError.hxx" #include "system/FatalError.hxx"
#include <algorithm>
#include <map> #include <map>
#include <string> #include <string>
#include <glib.h>
#include <assert.h> #include <assert.h>
#include <string.h> #include <string.h>
static constexpr char PERMISSION_PASSWORD_CHAR = '@'; static constexpr char PERMISSION_PASSWORD_CHAR = '@';
#define PERMISSION_SEPERATOR "," static constexpr char PERMISSION_SEPARATOR = ',';
static constexpr struct { static constexpr struct {
const char *name; const char *name;
...@@ -65,17 +64,23 @@ static unsigned parsePermissions(const char *string) ...@@ -65,17 +64,23 @@ static unsigned parsePermissions(const char *string)
{ {
assert(string != nullptr); assert(string != nullptr);
unsigned permission = 0; const char *const end = string + strlen(string);
gchar **tokens;
tokens = g_strsplit(string, PERMISSION_SEPERATOR, 0); unsigned permission = 0;
for (unsigned i = 0; tokens[i] != NULL; ++i) { while (true) {
char *temp = tokens[i]; const char *comma = std::find(string, end,
permission |= ParsePermission(temp); 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; return permission;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment