mdbx: add osal_strcasecmp() and osal_strncasecmp().

This commit is contained in:
Леонид Юрьев (Leonid Yuriev)
2025-10-28 19:45:51 +03:00
parent 65184ff73b
commit 0d9b59dda1
3 changed files with 24 additions and 21 deletions

View File

@@ -1777,8 +1777,8 @@ int osal_check_fs_incore(mdbx_filehandle_t handle) {
const size_t name_len = 0;
#endif
if (name_len) {
if (strncasecmp("tmpfs", name, 6) == 0 || strncasecmp("mfs", name, 4) == 0 || strncasecmp("ramfs", name, 6) == 0 ||
strncasecmp("romfs", name, 6) == 0)
if (osal_strncasecmp("tmpfs", name, 6) == 0 || osal_strncasecmp("mfs", name, 4) == 0 ||
osal_strncasecmp("ramfs", name, 6) == 0 || osal_strncasecmp("romfs", name, 6) == 0)
return MDBX_RESULT_TRUE;
}
#endif /* !Windows */
@@ -1990,13 +1990,14 @@ int osal_check_fs_local(mdbx_filehandle_t handle, int flags) {
#endif
if (name_len) {
if (((name_len > 2 && strncasecmp("nfs", name, 3) == 0) || strncasecmp("cifs", name, name_len) == 0 ||
strncasecmp("ncpfs", name, name_len) == 0 || strncasecmp("smbfs", name, name_len) == 0 ||
strcasecmp("9P" /* WSL2 */, name) == 0 ||
((name_len > 3 && strncasecmp("fuse", name, 4) == 0) && strncasecmp("fuseblk", name, name_len) != 0)) &&
if (((name_len > 2 && osal_strncasecmp("nfs", name, 3) == 0) || osal_strncasecmp("cifs", name, name_len) == 0 ||
osal_strncasecmp("ncpfs", name, name_len) == 0 || osal_strncasecmp("smbfs", name, name_len) == 0 ||
osal_strcasecmp("9P" /* WSL2 */, name) == 0 ||
((name_len > 3 && osal_strncasecmp("fuse", name, 4) == 0) &&
osal_strncasecmp("fuseblk", name, name_len) != 0)) &&
!(flags & MDBX_EXCLUSIVE))
return MDBX_EREMOTE;
if (strcasecmp("ftp", name) == 0 || strcasecmp("http", name) == 0 || strcasecmp("sshfs", name) == 0)
if (osal_strcasecmp("ftp", name) == 0 || osal_strcasecmp("http", name) == 0 || osal_strcasecmp("sshfs", name) == 0)
return MDBX_EREMOTE;
}

View File

@@ -122,6 +122,8 @@ static inline void osal_free(void *ptr) { HeapFree(GetProcessHeap(), 0, ptr); }
#define osal_realloc realloc
#define osal_free free
#define osal_strdup _strdup
#define osal_strcasecmp _stricmp
#define osal_strncasecmp _strnicmp
#endif /* MDBX_WITHOUT_MSVC_CRT */
@@ -150,6 +152,8 @@ typedef pthread_mutex_t osal_fastmutex_t;
#define osal_realloc realloc
#define osal_free free
#define osal_strdup strdup
#define osal_strcasecmp strcasecmp
#define osal_strncasecmp strncasecmp
#endif /* Platform */
#if __GLIBC_PREREQ(2, 12) || defined(__FreeBSD__) || defined(malloc_usable_size)

View File

@@ -3,10 +3,6 @@
#include "test.h++"
#if defined(_MSC_VER) && !defined(strcasecmp)
#define strcasecmp(str, len) _stricmp(str, len)
#endif /* _MSC_VER && strcasecmp() */
namespace config {
bool parse_option(int argc, char *const argv[], int &narg, const char *option, const char **value,
@@ -156,21 +152,21 @@ bool parse_option(int argc, char *const argv[], int &narg, const char *option, u
if (suffix && *suffix) {
if (scale == no_scale || scale == intkey)
failure("Option '--%s' doesn't accepts suffixes, so '%s' is unexpected\n", option, suffix);
if (strcmp(suffix, "K") == 0 || strcasecmp(suffix, "Kilo") == 0)
if (strcmp(suffix, "K") == 0 || osal_strcasecmp(suffix, "Kilo") == 0)
multiplier = (scale == decimal) ? UINT64_C(1000) : UINT64_C(1024);
else if (strcmp(suffix, "M") == 0 || strcasecmp(suffix, "Mega") == 0)
else if (strcmp(suffix, "M") == 0 || osal_strcasecmp(suffix, "Mega") == 0)
multiplier = (scale == decimal) ? UINT64_C(1000) * 1000 : UINT64_C(1024) * 1024;
else if (strcmp(suffix, "G") == 0 || strcasecmp(suffix, "Giga") == 0)
else if (strcmp(suffix, "G") == 0 || osal_strcasecmp(suffix, "Giga") == 0)
multiplier = (scale == decimal) ? UINT64_C(1000) * 1000 * 1000 : UINT64_C(1024) * 1024 * 1024;
else if (strcmp(suffix, "T") == 0 || strcasecmp(suffix, "Tera") == 0)
else if (strcmp(suffix, "T") == 0 || osal_strcasecmp(suffix, "Tera") == 0)
multiplier = (scale == decimal) ? UINT64_C(1000) * 1000 * 1000 * 1000 : UINT64_C(1024) * 1024 * 1024 * 1024;
else if (scale == duration && (strcmp(suffix, "s") == 0 || strcasecmp(suffix, "Seconds") == 0))
else if (scale == duration && (strcmp(suffix, "s") == 0 || osal_strcasecmp(suffix, "Seconds") == 0))
multiplier = 1;
else if (scale == duration && (strcmp(suffix, "m") == 0 || strcasecmp(suffix, "Minutes") == 0))
else if (scale == duration && (strcmp(suffix, "m") == 0 || osal_strcasecmp(suffix, "Minutes") == 0))
multiplier = 60;
else if (scale == duration && (strcmp(suffix, "h") == 0 || strcasecmp(suffix, "Hours") == 0))
else if (scale == duration && (strcmp(suffix, "h") == 0 || osal_strcasecmp(suffix, "Hours") == 0))
multiplier = 3600;
else if (scale == duration && (strcmp(suffix, "d") == 0 || strcasecmp(suffix, "Days") == 0))
else if (scale == duration && (strcmp(suffix, "d") == 0 || osal_strcasecmp(suffix, "Days") == 0))
multiplier = 3600 * 24;
else
failure("Option '--%s' expects a numeric value with Kilo/Mega/Giga/Tera %s"
@@ -313,12 +309,14 @@ bool parse_option(int argc, char *const argv[], int &narg, const char *option, b
return true;
}
if (strcasecmp(value_cstr, "yes") == 0 || strcasecmp(value_cstr, "1") == 0 || strcasecmp(value_cstr, "on") == 0) {
if (osal_strcasecmp(value_cstr, "yes") == 0 || osal_strcasecmp(value_cstr, "1") == 0 ||
osal_strcasecmp(value_cstr, "on") == 0) {
value = true;
return true;
}
if (strcasecmp(value_cstr, "no") == 0 || strcasecmp(value_cstr, "0") == 0 || strcasecmp(value_cstr, "off") == 0) {
if (osal_strcasecmp(value_cstr, "no") == 0 || osal_strcasecmp(value_cstr, "0") == 0 ||
osal_strcasecmp(value_cstr, "off") == 0) {
value = false;
return true;
}