libretro: Implement disk control interface

This commit is contained in:
Connor McLaughlin
2020-07-23 02:36:23 +10:00
parent 8e1c0a4fe4
commit f3df4f91a2
5 changed files with 218 additions and 2 deletions

View File

@ -1,6 +1,6 @@
#include "string_util.h"
#include <cstdio>
#include <cctype>
#include <cstdio>
namespace StringUtil {
@ -137,7 +137,23 @@ std::size_t Strlcpy(char* dst, const char* src, std::size_t size)
else
{
std::memcpy(dst, src, size - 1);
dst[size] = '\0';
dst[size - 1] = '\0';
}
return len;
}
std::size_t Strlcpy(char* dst, const std::string_view& src, std::size_t size)
{
std::size_t len = src.length();
if (len < size)
{
std::memcpy(dst, src.data(), len);
dst[len] = '\0';
}
else
{
std::memcpy(dst, src.data(), size - 1);
dst[size - 1] = '\0';
}
return len;
}

View File

@ -5,6 +5,7 @@
#include <cstring>
#include <optional>
#include <string>
#include <string_view>
#if defined(__has_include) && __has_include(<charconv>)
#include <charconv>
@ -27,6 +28,9 @@ bool WildcardMatch(const char* subject, const char* mask, bool case_sensitive =
/// Safe version of strlcpy.
std::size_t Strlcpy(char* dst, const char* src, std::size_t size);
/// Strlcpy from string_view.
std::size_t Strlcpy(char* dst, const std::string_view& src, std::size_t size);
/// Platform-independent strcasecmp
static inline int Strcasecmp(const char* s1, const char* s2)
{