You need to sign in or sign up before continuing.
Commit e4dad42c authored by Rosen Penev's avatar Rosen Penev Committed by Max Kellermann

use std chr functions

The ones in std have overloads for const char/char. Signed-off-by: 's avatarRosen Penev <rosenp@gmail.com>
parent 99afe8e6
...@@ -27,12 +27,11 @@ ...@@ -27,12 +27,11 @@
#include "util/StringView.hxx" #include "util/StringView.hxx"
#include <cassert> #include <cassert>
#include <cstring>
#include <map> #include <map>
#include <string> #include <string>
#include <utility> #include <utility>
#include <string.h>
static constexpr char PERMISSION_PASSWORD_CHAR = '@'; static constexpr char PERMISSION_PASSWORD_CHAR = '@';
static constexpr char PERMISSION_SEPARATOR = ','; static constexpr char PERMISSION_SEPARATOR = ',';
...@@ -89,7 +88,7 @@ initPermissions(const ConfigData &config) ...@@ -89,7 +88,7 @@ initPermissions(const ConfigData &config)
permission_default = 0; permission_default = 0;
param.With([](const char *value){ param.With([](const char *value){
const char *separator = strchr(value, const char *separator = std::strchr(value,
PERMISSION_PASSWORD_CHAR); PERMISSION_PASSWORD_CHAR);
if (separator == nullptr) if (separator == nullptr)
......
...@@ -25,7 +25,8 @@ ...@@ -25,7 +25,8 @@
#include "util/StringStrip.hxx" #include "util/StringStrip.hxx"
#include "util/RuntimeError.hxx" #include "util/RuntimeError.hxx"
#include <string.h> #include <cstring>
#include <stdlib.h> #include <stdlib.h>
void void
...@@ -49,8 +50,8 @@ playlist_metadata_load(TextFile &file, PlaylistVector &pv, const char *name) ...@@ -49,8 +50,8 @@ playlist_metadata_load(TextFile &file, PlaylistVector &pv, const char *name)
const char *value; const char *value;
while ((line = file.ReadLine()) != nullptr && while ((line = file.ReadLine()) != nullptr &&
strcmp(line, "playlist_end") != 0) { std::strcmp(line, "playlist_end") != 0) {
colon = strchr(line, ':'); colon = std::strchr(line, ':');
if (colon == nullptr || colon == line) if (colon == nullptr || colon == line)
throw FormatRuntimeError("unknown line in db: %s", throw FormatRuntimeError("unknown line in db: %s",
line); line);
...@@ -58,7 +59,7 @@ playlist_metadata_load(TextFile &file, PlaylistVector &pv, const char *name) ...@@ -58,7 +59,7 @@ playlist_metadata_load(TextFile &file, PlaylistVector &pv, const char *name)
*colon++ = 0; *colon++ = 0;
value = StripLeft(colon); value = StripLeft(colon);
if (strcmp(line, "mtime") == 0) if (std::strcmp(line, "mtime") == 0)
pm.mtime = std::chrono::system_clock::from_time_t(strtol(value, nullptr, 10)); pm.mtime = std::chrono::system_clock::from_time_t(strtol(value, nullptr, 10));
else else
throw FormatRuntimeError("unknown line in db: %s", throw FormatRuntimeError("unknown line in db: %s",
......
...@@ -43,8 +43,7 @@ ...@@ -43,8 +43,7 @@
#include "util/UriExtract.hxx" #include "util/UriExtract.hxx"
#include <cassert> #include <cassert>
#include <cstring>
#include <string.h>
static const char PLAYLIST_COMMENT = '#'; static const char PLAYLIST_COMMENT = '#';
...@@ -81,9 +80,9 @@ spl_valid_name(const char *name_utf8) ...@@ -81,9 +80,9 @@ spl_valid_name(const char *name_utf8)
* filenames isn't going to happen, either. * filenames isn't going to happen, either.
*/ */
return strchr(name_utf8, '/') == nullptr && return std::strchr(name_utf8, '/') == nullptr &&
strchr(name_utf8, '\n') == nullptr && std::strchr(name_utf8, '\n') == nullptr &&
strchr(name_utf8, '\r') == nullptr; std::strchr(name_utf8, '\r') == nullptr;
} }
static const AllocatedPath & static const AllocatedPath &
......
...@@ -96,7 +96,7 @@ song_load(TextFile &file, const char *uri, ...@@ -96,7 +96,7 @@ song_load(TextFile &file, const char *uri,
char *line; char *line;
while ((line = file.ReadLine()) != nullptr && while ((line = file.ReadLine()) != nullptr &&
!StringIsEqual(line, SONG_END)) { !StringIsEqual(line, SONG_END)) {
char *colon = strchr(line, ':'); char *colon = std::strchr(line, ':');
if (colon == nullptr || colon == line) { if (colon == nullptr || colon == line) {
throw FormatRuntimeError("unknown line in db: %s", line); throw FormatRuntimeError("unknown line in db: %s", line);
} }
......
...@@ -44,7 +44,7 @@ SongPtr ...@@ -44,7 +44,7 @@ SongPtr
Song::LoadFile(Storage &storage, const char *path_utf8, Directory &parent) Song::LoadFile(Storage &storage, const char *path_utf8, Directory &parent)
{ {
assert(!uri_has_scheme(path_utf8)); assert(!uri_has_scheme(path_utf8));
assert(strchr(path_utf8, '\n') == nullptr); assert(std::strchr(path_utf8, '\n') == nullptr);
auto song = std::make_unique<Song>(path_utf8, parent); auto song = std::make_unique<Song>(path_utf8, parent);
if (!song->UpdateFile(storage)) if (!song->UpdateFile(storage))
...@@ -95,7 +95,7 @@ Song::LoadFromArchive(ArchiveFile &archive, const char *name_utf8, ...@@ -95,7 +95,7 @@ Song::LoadFromArchive(ArchiveFile &archive, const char *name_utf8,
Directory &parent) noexcept Directory &parent) noexcept
{ {
assert(!uri_has_scheme(name_utf8)); assert(!uri_has_scheme(name_utf8));
assert(strchr(name_utf8, '\n') == nullptr); assert(std::strchr(name_utf8, '\n') == nullptr);
auto song = std::make_unique<Song>(name_utf8, parent); auto song = std::make_unique<Song>(name_utf8, parent);
if (!song->UpdateFileInArchive(archive)) if (!song->UpdateFileInArchive(archive))
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
#include "Instance.hxx" #include "Instance.hxx"
#include "util/StringStrip.hxx" #include "util/StringStrip.hxx"
#include <string.h> #include <cstring>
BufferedSocket::InputResult BufferedSocket::InputResult
Client::OnSocketInput(void *data, size_t length) noexcept Client::OnSocketInput(void *data, size_t length) noexcept
...@@ -32,7 +32,7 @@ Client::OnSocketInput(void *data, size_t length) noexcept ...@@ -32,7 +32,7 @@ Client::OnSocketInput(void *data, size_t length) noexcept
return InputResult::PAUSE; return InputResult::PAUSE;
char *p = (char *)data; char *p = (char *)data;
char *newline = (char *)memchr(p, '\n', length); char *newline = (char *)std::memchr(p, '\n', length);
if (newline == nullptr) if (newline == nullptr)
return InputResult::MORE; return InputResult::MORE;
......
...@@ -44,7 +44,7 @@ gcc_pure ...@@ -44,7 +44,7 @@ gcc_pure
static bool static bool
skip_path(const char *name_utf8) noexcept skip_path(const char *name_utf8) noexcept
{ {
return strchr(name_utf8, '\n') != nullptr; return std::strchr(name_utf8, '\n') != nullptr;
} }
#if defined(_WIN32) && GCC_CHECK_VERSION(4,6) #if defined(_WIN32) && GCC_CHECK_VERSION(4,6)
...@@ -185,7 +185,7 @@ handle_mount(Client &client, Request args, Response &r) ...@@ -185,7 +185,7 @@ handle_mount(Client &client, Request args, Response &r)
return CommandResult::ERROR; return CommandResult::ERROR;
} }
if (strchr(local_uri, '/') != nullptr) { if (std::strchr(local_uri, '/') != nullptr) {
/* allow only top-level mounts for now */ /* allow only top-level mounts for now */
/* TODO: eliminate this limitation after ensuring that /* TODO: eliminate this limitation after ensuring that
UpdateQueue::Erase() really gets called for every UpdateQueue::Erase() really gets called for every
......
...@@ -103,7 +103,7 @@ ParsePath(const char *path) ...@@ -103,7 +103,7 @@ ParsePath(const char *path)
++path; ++path;
} else { } else {
const char *slash = strchr(path, '/'); const char *slash = std::strchr(path, '/');
const char *end = slash == nullptr const char *end = slash == nullptr
? path + strlen(path) ? path + strlen(path)
: slash; : slash;
......
...@@ -55,7 +55,7 @@ void ...@@ -55,7 +55,7 @@ void
UpdateWalk::UpdateArchiveTree(ArchiveFile &archive, Directory &directory, UpdateWalk::UpdateArchiveTree(ArchiveFile &archive, Directory &directory,
const char *name) noexcept const char *name) noexcept
{ {
const char *tmp = strchr(name, '/'); const char *tmp = std::strchr(name, '/');
if (tmp) { if (tmp) {
const std::string_view child_name(name, tmp - name); const std::string_view child_name(name, tmp - name);
//add dir is not there already //add dir is not there already
......
...@@ -148,7 +148,7 @@ WatchDirectory::GetUriFS() const noexcept ...@@ -148,7 +148,7 @@ WatchDirectory::GetUriFS() const noexcept
static bool skip_path(const char *path) static bool skip_path(const char *path)
{ {
return PathTraitsFS::IsSpecialFilename(path) || return PathTraitsFS::IsSpecialFilename(path) ||
strchr(path, '\n') != nullptr; std::strchr(path, '\n') != nullptr;
} }
static void static void
......
...@@ -191,7 +191,7 @@ UpdateWalk::UpdateDirectoryChild(Directory &directory, ...@@ -191,7 +191,7 @@ UpdateWalk::UpdateDirectoryChild(Directory &directory,
const ExcludeList &exclude_list, const ExcludeList &exclude_list,
const char *name, const StorageFileInfo &info) noexcept const char *name, const StorageFileInfo &info) noexcept
try { try {
assert(strchr(name, '/') == nullptr); assert(std::strchr(name, '/') == nullptr);
if (info.IsRegular()) { if (info.IsRegular()) {
UpdateRegularFile(directory, name, info); UpdateRegularFile(directory, name, info);
...@@ -223,7 +223,7 @@ gcc_pure ...@@ -223,7 +223,7 @@ gcc_pure
static bool static bool
skip_path(const char *name_utf8) noexcept skip_path(const char *name_utf8) noexcept
{ {
return strchr(name_utf8, '\n') != nullptr; return std::strchr(name_utf8, '\n') != nullptr;
} }
gcc_pure gcc_pure
......
...@@ -29,11 +29,10 @@ ...@@ -29,11 +29,10 @@
#include "util/Math.hxx" #include "util/Math.hxx"
#include "Log.hxx" #include "Log.hxx"
#include <neaacdec.h>
#include <cassert> #include <cassert>
#include <cstring>
#include <string.h> #include <neaacdec.h>
static const unsigned adts_sample_rates[] = static const unsigned adts_sample_rates[] =
{ 96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050, { 96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050,
...@@ -72,8 +71,7 @@ adts_find_frame(DecoderBuffer &buffer) ...@@ -72,8 +71,7 @@ adts_find_frame(DecoderBuffer &buffer)
return 0; return 0;
/* find the 0xff marker */ /* find the 0xff marker */
const auto *p = (const uint8_t *) auto p = (const uint8_t *)std::memchr(data.data, 0xff, data.size);
memchr(data.data, 0xff, data.size);
if (p == nullptr) { if (p == nullptr) {
/* no marker - discard the buffer */ /* no marker - discard the buffer */
buffer.Clear(); buffer.Clear();
......
...@@ -164,7 +164,7 @@ ParseConfigLine(char *line, const char *dir_name, AllocatedPath &result_dir) ...@@ -164,7 +164,7 @@ ParseConfigLine(char *line, const char *dir_name, AllocatedPath &result_dir)
char *line_end; char *line_end;
// find end of the string // find end of the string
if (quoted) { if (quoted) {
line_end = strrchr(line, '"'); line_end = std::strrchr(line, '"');
if (line_end == nullptr) if (line_end == nullptr)
return true; return true;
} else { } else {
......
...@@ -196,7 +196,7 @@ struct PathTraitsUTF8 { ...@@ -196,7 +196,7 @@ struct PathTraitsUTF8 {
assert(p != nullptr); assert(p != nullptr);
#endif #endif
return strrchr(p, SEPARATOR); return std::strrchr(p, SEPARATOR);
} }
#ifdef _WIN32 #ifdef _WIN32
......
...@@ -133,7 +133,7 @@ parse_cdio_uri(const char *src) ...@@ -133,7 +133,7 @@ parse_cdio_uri(const char *src)
return dest; return dest;
} }
const char *slash = strrchr(src, '/'); const char *slash = std::strrchr(src, '/');
if (slash == nullptr) { if (slash == nullptr) {
/* play the whole CD in the specified drive */ /* play the whole CD in the specified drive */
CopyTruncateString(dest.device, src, sizeof(dest.device)); CopyTruncateString(dest.device, src, sizeof(dest.device));
......
...@@ -25,10 +25,10 @@ ...@@ -25,10 +25,10 @@
#include "util/ASCII.hxx" #include "util/ASCII.hxx"
#include <cassert> #include <cassert>
#include <cstring>
#include <stdexcept> #include <stdexcept>
#include <utility> #include <utility>
#include <string.h>
#include <fcntl.h> #include <fcntl.h>
NfsFileReader::NfsFileReader() noexcept NfsFileReader::NfsFileReader() noexcept
...@@ -97,7 +97,7 @@ NfsFileReader::Open(const char *uri) ...@@ -97,7 +97,7 @@ NfsFileReader::Open(const char *uri)
uri += 6; uri += 6;
const char *slash = strchr(uri, '/'); const char *slash = std::strchr(uri, '/');
if (slash == nullptr) if (slash == nullptr)
throw std::runtime_error("Malformed nfs:// URI"); throw std::runtime_error("Malformed nfs:// URI");
...@@ -112,7 +112,7 @@ NfsFileReader::Open(const char *uri) ...@@ -112,7 +112,7 @@ NfsFileReader::Open(const char *uri)
new_path = "/"; new_path = "/";
path = new_path; path = new_path;
} else { } else {
slash = strrchr(uri + 1, '/'); slash = std::strrchr(uri + 1, '/');
if (slash == nullptr || slash[1] == 0) if (slash == nullptr || slash[1] == 0)
throw std::runtime_error("Malformed nfs:// URI"); throw std::runtime_error("Malformed nfs:// URI");
......
...@@ -124,7 +124,7 @@ ExtractHost(const char *src) noexcept ...@@ -124,7 +124,7 @@ ExtractHost(const char *src) noexcept
/* "[hostname]:port" (IPv6?) */ /* "[hostname]:port" (IPv6?) */
hostname = ++src; hostname = ++src;
const char *end = strchr(hostname, ']'); const char *end = std::strchr(hostname, ']');
if (end == nullptr || end == hostname) if (end == nullptr || end == hostname)
/* failed, return nullptr */ /* failed, return nullptr */
return result; return result;
......
...@@ -65,7 +65,7 @@ ai_is_passive(const struct addrinfo *ai) ...@@ -65,7 +65,7 @@ ai_is_passive(const struct addrinfo *ai)
static void static void
FindAndResolveInterfaceName(char *host, size_t size) FindAndResolveInterfaceName(char *host, size_t size)
{ {
char *percent = strchr(host, '%'); char *percent = std::strchr(host, '%');
if (percent == nullptr || percent + 64 > host + size) if (percent == nullptr || percent + 64 > host + size)
return; return;
......
...@@ -84,7 +84,7 @@ SocketAddress::GetLocalPath() const noexcept ...@@ -84,7 +84,7 @@ SocketAddress::GetLocalPath() const noexcept
/* must be null-terminated */ /* must be null-terminated */
raw.back() == 0 && raw.back() == 0 &&
/* there must not be any other null byte */ /* there must not be any other null byte */
memchr(raw.data, 0, raw.size - 1) == nullptr std::memchr(raw.data, 0, raw.size - 1) == nullptr
? raw.data ? raw.data
: nullptr; : nullptr;
} }
......
...@@ -35,6 +35,7 @@ ...@@ -35,6 +35,7 @@
#include <algorithm> #include <algorithm>
#include <cassert> #include <cassert>
#include <cstring>
#ifdef _WIN32 #ifdef _WIN32
#include <ws2tcpip.h> #include <ws2tcpip.h>
...@@ -49,8 +50,6 @@ ...@@ -49,8 +50,6 @@
#include <sys/un.h> #include <sys/un.h>
#endif #endif
#include <string.h>
#ifdef HAVE_UN #ifdef HAVE_UN
static std::string static std::string
...@@ -104,7 +103,7 @@ ToString(SocketAddress address) noexcept ...@@ -104,7 +103,7 @@ ToString(SocketAddress address) noexcept
return "unknown"; return "unknown";
#ifdef HAVE_IPV6 #ifdef HAVE_IPV6
if (strchr(host, ':') != nullptr) { if (std::strchr(host, ':') != nullptr) {
std::string result("["); std::string result("[");
result.append(host); result.append(host);
result.append("]:"); result.append("]:");
......
...@@ -28,8 +28,8 @@ ...@@ -28,8 +28,8 @@
#include "Log.hxx" #include "Log.hxx"
#include <cassert> #include <cassert>
#include <cstring>
#include <string.h>
#include <stdio.h> #include <stdio.h>
HttpdClient::~HttpdClient() noexcept HttpdClient::~HttpdClient() noexcept
...@@ -95,7 +95,7 @@ HttpdClient::HandleLine(const char *line) noexcept ...@@ -95,7 +95,7 @@ HttpdClient::HandleLine(const char *line) noexcept
should_reject = true; should_reject = true;
} }
line = strchr(line, ' '); line = std::strchr(line, ' ');
if (line == nullptr || strncmp(line + 1, "HTTP/", 5) != 0) { if (line == nullptr || strncmp(line + 1, "HTTP/", 5) != 0) {
/* HTTP/0.9 without request headers */ /* HTTP/0.9 without request headers */
...@@ -413,7 +413,7 @@ HttpdClient::OnSocketInput(void *data, size_t length) noexcept ...@@ -413,7 +413,7 @@ HttpdClient::OnSocketInput(void *data, size_t length) noexcept
} }
char *line = (char *)data; char *line = (char *)data;
char *newline = (char *)memchr(line, '\n', length); char *newline = (char *)std::memchr(line, '\n', length);
if (newline == nullptr) if (newline == nullptr)
return InputResult::MORE; return InputResult::MORE;
......
...@@ -78,7 +78,7 @@ playlist_check_translate_song(DetachedSong &song, std::string_view base_uri, ...@@ -78,7 +78,7 @@ playlist_check_translate_song(DetachedSong &song, std::string_view base_uri,
const char *uri = song.GetURI(); const char *uri = song.GetURI();
#ifdef _WIN32 #ifdef _WIN32
if (!PathTraitsUTF8::IsAbsolute(uri) && strchr(uri, '\\') != nullptr) { if (!PathTraitsUTF8::IsAbsolute(uri) && std::strchr(uri, '\\') != nullptr) {
/* Windows uses the backslash as path separator, but /* Windows uses the backslash as path separator, but
the MPD protocol uses the (forward) slash by the MPD protocol uses the (forward) slash by
definition; to allow backslashes in relative URIs definition; to allow backslashes in relative URIs
......
...@@ -24,8 +24,8 @@ ...@@ -24,8 +24,8 @@
#include "util/CharUtil.hxx" #include "util/CharUtil.hxx"
#include <cassert> #include <cassert>
#include <cstring>
#include <string.h>
#include <stdlib.h> #include <stdlib.h>
static const char * static const char *
...@@ -49,7 +49,7 @@ cue_next_quoted(char *p, char **pp) ...@@ -49,7 +49,7 @@ cue_next_quoted(char *p, char **pp)
assert(p >= *pp); assert(p >= *pp);
assert(p[-1] == '"'); assert(p[-1] == '"');
char *end = strchr(p, '"'); char *end = std::strchr(p, '"');
if (end == nullptr) { if (end == nullptr) {
/* syntax error - ignore it silently */ /* syntax error - ignore it silently */
*pp = p + strlen(p); *pp = p + strlen(p);
......
...@@ -175,7 +175,7 @@ static unsigned ...@@ -175,7 +175,7 @@ static unsigned
ParseStatus(const char *s) ParseStatus(const char *s)
{ {
/* skip the "HTTP/1.1" prefix */ /* skip the "HTTP/1.1" prefix */
const char *space = strchr(s, ' '); const char *space = std::strchr(s, ' ');
if (space == nullptr) if (space == nullptr)
return 0; return 0;
......
...@@ -412,7 +412,7 @@ CreateNfsStorageURI(EventLoop &event_loop, const char *base) ...@@ -412,7 +412,7 @@ CreateNfsStorageURI(EventLoop &event_loop, const char *base)
if (p == nullptr) if (p == nullptr)
return nullptr; return nullptr;
const char *mount = strchr(p, '/'); const char *mount = std::strchr(p, '/');
if (mount == nullptr) if (mount == nullptr)
throw std::runtime_error("Malformed nfs:// URI"); throw std::runtime_error("Malformed nfs:// URI");
......
...@@ -357,7 +357,7 @@ CreateUdisksStorageURI(EventLoop &event_loop, const char *base_uri) ...@@ -357,7 +357,7 @@ CreateUdisksStorageURI(EventLoop &event_loop, const char *base_uri)
std::string id; std::string id;
const char *relative_path = strchr(id_begin, '/'); const char *relative_path = std::strchr(id_begin, '/');
if (relative_path == nullptr) { if (relative_path == nullptr) {
id = id_begin; id = id_begin;
relative_path = ""; relative_path = "";
......
...@@ -24,10 +24,9 @@ ...@@ -24,10 +24,9 @@
#include <cassert> #include <cassert>
#include <cstdint> #include <cstdint>
#include <cstring>
#include <memory> #include <memory>
#include <string.h>
struct ApeFooter { struct ApeFooter {
unsigned char id[8]; unsigned char id[8];
uint32_t version; uint32_t version;
...@@ -83,7 +82,7 @@ try { ...@@ -83,7 +82,7 @@ try {
/* get the key */ /* get the key */
const char *key = p; const char *key = p;
const char *key_end = (const char *)memchr(p, '\0', remaining); const char *key_end = (const char *)std::memchr(p, '\0', remaining);
if (key_end == nullptr) if (key_end == nullptr)
break; break;
......
...@@ -20,12 +20,12 @@ ...@@ -20,12 +20,12 @@
#include "DivideString.hxx" #include "DivideString.hxx"
#include "StringStrip.hxx" #include "StringStrip.hxx"
#include <string.h> #include <cstring>
DivideString::DivideString(const char *s, char separator, bool strip) noexcept DivideString::DivideString(const char *s, char separator, bool strip) noexcept
:first(nullptr) :first(nullptr)
{ {
const char *x = strchr(s, separator); const char *x = std::strchr(s, separator);
if (x == nullptr) if (x == nullptr)
return; return;
......
...@@ -20,12 +20,12 @@ ...@@ -20,12 +20,12 @@
#include "MimeType.hxx" #include "MimeType.hxx"
#include "SplitString.hxx" #include "SplitString.hxx"
#include <string.h> #include <cstring>
std::string std::string
GetMimeTypeBase(const char *s) noexcept GetMimeTypeBase(const char *s) noexcept
{ {
const char *semicolon = strchr(s, ';'); const char *semicolon = std::strchr(s, ';');
return semicolon != nullptr return semicolon != nullptr
? std::string(s, semicolon) ? std::string(s, semicolon)
: std::string(s); : std::string(s);
......
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
#include "Compiler.h" #include "Compiler.h"
#include <string.h> #include <cstring>
#ifdef _UNICODE #ifdef _UNICODE
#include "WStringAPI.hxx" #include "WStringAPI.hxx"
...@@ -56,42 +56,42 @@ gcc_pure gcc_nonnull_all ...@@ -56,42 +56,42 @@ gcc_pure gcc_nonnull_all
static inline char * static inline char *
StringFind(char *haystack, char needle, size_t size) noexcept StringFind(char *haystack, char needle, size_t size) noexcept
{ {
return (char *)memchr(haystack, needle, size); return (char *)std::memchr(haystack, needle, size);
} }
gcc_pure gcc_nonnull_all gcc_pure gcc_nonnull_all
static inline const char * static inline const char *
StringFind(const char *haystack, char needle, size_t size) noexcept StringFind(const char *haystack, char needle, size_t size) noexcept
{ {
return (const char *)memchr(haystack, needle, size); return (const char *)std::memchr(haystack, needle, size);
} }
gcc_pure gcc_nonnull_all gcc_pure gcc_nonnull_all
static inline const char * static inline const char *
StringFind(const char *haystack, char needle) noexcept StringFind(const char *haystack, char needle) noexcept
{ {
return strchr(haystack, needle); return std::strchr(haystack, needle);
} }
gcc_pure gcc_nonnull_all gcc_pure gcc_nonnull_all
static inline char * static inline char *
StringFind(char *haystack, char needle) noexcept StringFind(char *haystack, char needle) noexcept
{ {
return strchr(haystack, needle); return std::strchr(haystack, needle);
} }
gcc_pure gcc_nonnull_all gcc_pure gcc_nonnull_all
static inline const char * static inline const char *
StringFindLast(const char *haystack, char needle) noexcept StringFindLast(const char *haystack, char needle) noexcept
{ {
return strrchr(haystack, needle); return std::strrchr(haystack, needle);
} }
gcc_pure gcc_nonnull_all gcc_pure gcc_nonnull_all
static inline char * static inline char *
StringFindLast(char *haystack, char needle) noexcept StringFindLast(char *haystack, char needle) noexcept
{ {
return strrchr(haystack, needle); return std::strrchr(haystack, needle);
} }
gcc_pure gcc_nonnull_all gcc_pure gcc_nonnull_all
......
...@@ -30,14 +30,14 @@ ...@@ -30,14 +30,14 @@
#ifndef TEXT_FILE_HXX #ifndef TEXT_FILE_HXX
#define TEXT_FILE_HXX #define TEXT_FILE_HXX
#include <string.h> #include <cstring>
template<typename B> template<typename B>
char * char *
ReadBufferedLine(B &buffer) ReadBufferedLine(B &buffer)
{ {
auto r = buffer.Read(); auto r = buffer.Read();
char *newline = reinterpret_cast<char*>(memchr(r.data, '\n', r.size)); char *newline = reinterpret_cast<char*>(std::memchr(r.data, '\n', r.size));
if (newline == nullptr) if (newline == nullptr)
return nullptr; return nullptr;
......
...@@ -124,7 +124,7 @@ uri_get_path(std::string_view uri) noexcept ...@@ -124,7 +124,7 @@ uri_get_path(std::string_view uri) noexcept
const char * const char *
uri_get_suffix(const char *uri) noexcept uri_get_suffix(const char *uri) noexcept
{ {
const char *suffix = strrchr(uri, '.'); const char *suffix = std::strrchr(uri, '.');
if (suffix == nullptr || suffix == uri || if (suffix == nullptr || suffix == uri ||
suffix[-1] == '/' || suffix[-1] == '\\') suffix[-1] == '/' || suffix[-1] == '\\')
return nullptr; return nullptr;
...@@ -144,7 +144,7 @@ uri_get_suffix(const char *uri, UriSuffixBuffer &buffer) noexcept ...@@ -144,7 +144,7 @@ uri_get_suffix(const char *uri, UriSuffixBuffer &buffer) noexcept
if (suffix == nullptr) if (suffix == nullptr)
return nullptr; return nullptr;
const char *q = strchr(suffix, '?'); const char *q = std::strchr(suffix, '?');
if (q != nullptr && size_t(q - suffix) < sizeof(buffer.data)) { if (q != nullptr && size_t(q - suffix) < sizeof(buffer.data)) {
memcpy(buffer.data, suffix, q - suffix); memcpy(buffer.data, suffix, q - suffix);
buffer.data[q - suffix] = 0; buffer.data[q - suffix] = 0;
...@@ -157,7 +157,7 @@ uri_get_suffix(const char *uri, UriSuffixBuffer &buffer) noexcept ...@@ -157,7 +157,7 @@ uri_get_suffix(const char *uri, UriSuffixBuffer &buffer) noexcept
const char * const char *
uri_get_fragment(const char *uri) noexcept uri_get_fragment(const char *uri) noexcept
{ {
const char *fragment = strchr(uri, '#'); const char *fragment = std::strchr(uri, '#');
if (fragment == nullptr) if (fragment == nullptr)
return nullptr; return nullptr;
......
...@@ -31,8 +31,7 @@ ...@@ -31,8 +31,7 @@
#include "ASCII.hxx" #include "ASCII.hxx"
#include <cassert> #include <cassert>
#include <cstring>
#include <string.h>
static const char * static const char *
verify_uri_segment(const char *p) noexcept verify_uri_segment(const char *p) noexcept
...@@ -46,7 +45,7 @@ verify_uri_segment(const char *p) noexcept ...@@ -46,7 +45,7 @@ verify_uri_segment(const char *p) noexcept
if (dots <= 2 && (*p == 0 || *p == '/')) if (dots <= 2 && (*p == 0 || *p == '/'))
return nullptr; return nullptr;
const char *q = strchr(p + 1, '/'); const char *q = std::strchr(p + 1, '/');
return q != nullptr ? q : ""; return q != nullptr ? q : "";
} }
...@@ -89,11 +88,11 @@ uri_remove_auth(const char *uri) noexcept ...@@ -89,11 +88,11 @@ uri_remove_auth(const char *uri) noexcept
/* unrecognized URI */ /* unrecognized URI */
return std::string(); return std::string();
const char *slash = strchr(auth, '/'); const char *slash = std::strchr(auth, '/');
if (slash == nullptr) if (slash == nullptr)
slash = auth + strlen(auth); slash = auth + strlen(auth);
const char *at = (const char *)memchr(auth, '@', slash - auth); const char *at = (const char *)std::memchr(auth, '@', slash - auth);
if (at == nullptr) if (at == nullptr)
/* no auth info present, do nothing */ /* no auth info present, do nothing */
return std::string(); return std::string();
......
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
#include "Compiler.h" #include "Compiler.h"
#include <wchar.h> #include <cwchar>
gcc_pure gcc_nonnull_all gcc_pure gcc_nonnull_all
static inline size_t static inline size_t
...@@ -52,14 +52,14 @@ gcc_pure gcc_nonnull_all ...@@ -52,14 +52,14 @@ gcc_pure gcc_nonnull_all
static inline const wchar_t * static inline const wchar_t *
StringFind(const wchar_t *haystack, wchar_t needle, size_t size) noexcept StringFind(const wchar_t *haystack, wchar_t needle, size_t size) noexcept
{ {
return wmemchr(haystack, needle, size); return std::wmemchr(haystack, needle, size);
} }
gcc_pure gcc_nonnull_all gcc_pure gcc_nonnull_all
static inline wchar_t * static inline wchar_t *
StringFind(wchar_t *haystack, wchar_t needle, size_t size) noexcept StringFind(wchar_t *haystack, wchar_t needle, size_t size) noexcept
{ {
return wmemchr(haystack, needle, size); return std::wmemchr(haystack, needle, size);
} }
gcc_pure gcc_nonnull_all gcc_pure gcc_nonnull_all
......
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