mirror of
https://github.com/isar/libmdbx.git
synced 2025-11-06 06:18:56 +08:00
mdbx: add osal_strcasecmp() and osal_strncasecmp().
This commit is contained in:
15
src/osal.c
15
src/osal.c
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user