util/StringVerify: new library
This commit is contained in:
parent
553c2e9e2b
commit
bd59c889f3
|
@ -10,6 +10,7 @@
|
|||
#include "Partition.hxx"
|
||||
#include "IdleFlags.hxx"
|
||||
#include "util/CharUtil.hxx"
|
||||
#include "util/StringVerify.hxx"
|
||||
|
||||
CommandResult
|
||||
handle_enableoutput(Client &client, Request args, Response &r)
|
||||
|
@ -62,22 +63,16 @@ handle_toggleoutput(Client &client, Request args, Response &r)
|
|||
return CommandResult::OK;
|
||||
}
|
||||
|
||||
static bool
|
||||
static constexpr bool
|
||||
IsValidAttributeNameChar(char ch) noexcept
|
||||
{
|
||||
return IsAlphaNumericASCII(ch) || ch == '_';
|
||||
}
|
||||
|
||||
[[gnu::pure]]
|
||||
static bool
|
||||
static constexpr bool
|
||||
IsValidAttributeName(const char *s) noexcept
|
||||
{
|
||||
do {
|
||||
if (!IsValidAttributeNameChar(*s))
|
||||
return false;
|
||||
} while (*++s);
|
||||
|
||||
return true;
|
||||
return CheckCharsNonEmpty(s, IsValidAttributeNameChar);
|
||||
}
|
||||
|
||||
CommandResult
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
#include "client/Client.hxx"
|
||||
#include "client/Response.hxx"
|
||||
#include "util/CharUtil.hxx"
|
||||
#include "util/StringVerify.hxx"
|
||||
|
||||
#include <fmt/format.h>
|
||||
|
||||
|
@ -39,21 +40,15 @@ handle_listpartitions(Client &client, Request, Response &r)
|
|||
}
|
||||
|
||||
static constexpr bool
|
||||
IsValidPartitionChar(char ch)
|
||||
IsValidPartitionChar(char ch) noexcept
|
||||
{
|
||||
return IsAlphaNumericASCII(ch) || ch == '-' || ch == '_';
|
||||
}
|
||||
|
||||
[[gnu::pure]]
|
||||
static bool
|
||||
static constexpr bool
|
||||
IsValidPartitionName(const char *name) noexcept
|
||||
{
|
||||
do {
|
||||
if (!IsValidPartitionChar(*name))
|
||||
return false;
|
||||
} while (*++name != 0);
|
||||
|
||||
return true;
|
||||
return CheckCharsNonEmpty(name, IsValidPartitionChar);
|
||||
}
|
||||
|
||||
[[gnu::pure]]
|
||||
|
|
|
@ -0,0 +1,39 @@
|
|||
// SPDX-License-Identifier: BSD-2-Clause
|
||||
// Copyright CM4all GmbH
|
||||
// author: Max Kellermann <mk@cm4all.com>
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <algorithm>
|
||||
#include <concepts>
|
||||
#include <string_view>
|
||||
|
||||
/**
|
||||
* Does the given string consist only of characters allowed by the
|
||||
* given function?
|
||||
*/
|
||||
constexpr bool
|
||||
CheckChars(std::string_view s, std::predicate<char> auto f) noexcept
|
||||
{
|
||||
return std::all_of(s.begin(), s.end(), f);
|
||||
}
|
||||
|
||||
/**
|
||||
* Is the given string non-empty and consists only of characters
|
||||
* allowed by the given function?
|
||||
*/
|
||||
constexpr bool
|
||||
CheckCharsNonEmpty(std::string_view s, std::predicate<char> auto f) noexcept
|
||||
{
|
||||
return !s.empty() && CheckChars(s, f);
|
||||
}
|
||||
|
||||
constexpr bool
|
||||
CheckCharsNonEmpty(const char *s, std::predicate<char> auto f) noexcept
|
||||
{
|
||||
do {
|
||||
if (!f(*s))
|
||||
return false;
|
||||
} while (*++s);
|
||||
return true;
|
||||
}
|
Loading…
Reference in New Issue