diff options
Diffstat (limited to 'storage/mroonga/vendor/groonga/include/groonga/portability.h')
-rw-r--r-- | storage/mroonga/vendor/groonga/include/groonga/portability.h | 201 |
1 files changed, 201 insertions, 0 deletions
diff --git a/storage/mroonga/vendor/groonga/include/groonga/portability.h b/storage/mroonga/vendor/groonga/include/groonga/portability.h new file mode 100644 index 00000000..faee70b9 --- /dev/null +++ b/storage/mroonga/vendor/groonga/include/groonga/portability.h @@ -0,0 +1,201 @@ +/* + Copyright(C) 2015-2017 Brazil + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA +*/ + +#pragma once + +#ifdef WIN32 +# ifdef __cplusplus +# define grn_memcpy(dest, src, n) ::memcpy_s((dest), (n), (src), (n)) +# else /* __cplusplus */ +# define grn_memcpy(dest, src, n) memcpy_s((dest), (n), (src), (n)) +# endif /* __cplusplus */ +#else /* WIN32 */ +# ifdef __cplusplus +# define grn_memcpy(dest, src, n) std::memcpy((dest), (src), (n)) +# else /* __cplusplus */ +# define grn_memcpy(dest, src, n) memcpy((dest), (src), (n)) +# endif /* __cplusplus */ +#endif /* WIN32 */ + +#ifdef WIN32 +# define grn_memmove(dest, src, n) memmove_s((dest), (n), (src), (n)) +#else /* WIN32 */ +# define grn_memmove(dest, src, n) memmove((dest), (src), (n)) +#endif /* WIN32 */ + +#define GRN_ENV_BUFFER_SIZE 1024 + +#ifdef WIN32 +# define grn_getenv(name, dest, dest_size) do { \ + char *dest_ = (dest); \ + size_t dest_size_ = (dest_size); \ + if (dest_size_ > 0) { \ + DWORD env_size; \ + env_size = GetEnvironmentVariableA((name), dest_, dest_size_); \ + if (env_size == 0 || env_size > dest_size_) { \ + dest_[0] = '\0'; \ + } \ + } \ + } while (0) +#else /* WIN32 */ +# define grn_getenv(name, dest, dest_size) do { \ + const char *env_value = getenv((name)); \ + char *dest_ = (dest); \ + size_t dest_size_ = (dest_size); \ + if (dest_size_ > 0) { \ + if (env_value) { \ + strncpy(dest_, env_value, dest_size_ - 1); \ + } else { \ + dest_[0] = '\0'; \ + } \ + } \ + } while (0) +#endif /* WIN32 */ + +#ifdef WIN32 +# define grn_fopen(name, mode) _fsopen((name), (mode), _SH_DENYNO) +#else /* WIN32 */ +# define grn_fopen(name, mode) fopen((name), (mode)) +#endif /* WIN32 */ + +#ifdef WIN32 +# define grn_strdup_raw(string) _strdup((string)) +#else /* WIN32 */ +# define grn_strdup_raw(string) strdup((string)) +#endif /* WIN32 */ + +#ifdef WIN32 +# define grn_unlink(filename) _unlink((filename)) +#else /* WIN32 */ +# define grn_unlink(filename) unlink((filename)) +#endif /* WIN32 */ + +#ifdef WIN32 +# define grn_strncat(dest, dest_size, src, n) \ + strncat_s((dest), (dest_size), (src), (n)) +#else /* WIN32 */ +# define grn_strncat(dest, dest_size, src, n) \ + strncat((dest), (src), (n)) +#endif /* WIN32 */ + +#ifdef WIN32 +# define grn_strcpy(dest, dest_size, src) \ + strcpy_s((dest), (dest_size), (src)) +#else /* WIN32 */ +# define grn_strcpy(dest, dest_size, src) \ + strcpy((dest), (src)) +#endif /* WIN32 */ + +#ifdef WIN32 +# define grn_strncpy(dest, dest_size, src, n) \ + strncpy_s((dest), (dest_size), (src), (n)) +#else /* WIN32 */ +# define grn_strncpy(dest, dest_size, src, n) \ + strncpy((dest), (src), (n)) +#endif /* WIN32 */ + +#ifdef WIN32 +# define grn_strcat(dest, dest_size, src) \ + strcat_s((dest), (dest_size), (src)) +#else /* WIN32 */ +# define grn_strcat(dest, dest_size, src) \ + strcat((dest), (src)) +#endif /* WIN32 */ + +#ifdef WIN32 +# define grn_strcasecmp(string1, string2) \ + _stricmp((string1), (string2)) +#else /* WIN32 */ +# define grn_strcasecmp(string1, string2) \ + strcasecmp((string1), (string2)) +#endif /* WIN32 */ + +#ifdef WIN32 +# define grn_strncasecmp(string1, string2, n) \ + _strnicmp((string1), (string2), (n)) +#else /* WIN32 */ +# define grn_strncasecmp(string1, string2, n) \ + strncasecmp((string1), (string2), (n)) +#endif /* WIN32 */ + +#ifdef WIN32 +# define grn_snprintf(dest, dest_size, n, ...) do { \ + _snprintf_s((dest), (dest_size), (n) - 1, __VA_ARGS__); \ + } while (GRN_FALSE) +#else /* WIN32 */ +# define grn_snprintf(dest, dest_size, n, ...) \ + snprintf((dest), (n), __VA_ARGS__) +#endif /* WIN32 */ + +#ifdef WIN32 +# define grn_vsnprintf(dest, dest_size, format, args) do { \ + vsnprintf((dest), (dest_size), (format), (args)); \ + (dest)[(dest_size) - 1] = '\0'; \ + } while (GRN_FALSE) +#else /* WIN32 */ +# define grn_vsnprintf(dest, dest_size, format, args) \ + vsnprintf((dest), (dest_size), (format), (args)) +#endif /* WIN32 */ + +#ifdef WIN32 +# define grn_write(fd, buf, count) _write((fd), (buf), (count)) +#else /* WIN32 */ +# define grn_write(fd, buf, count) write((fd), (buf), (count)) +#endif /* WIN32 */ + +#ifdef WIN32 +# define grn_read(fd, buf, count) _read((fd), (buf), (count)) +#else /* WIN32 */ +# define grn_read(fd, buf, count) read((fd), (buf), (count)) +#endif /* WIN32 */ + +#ifdef WIN32 +# define GRN_OPEN_CREATE_MODE (_S_IREAD | _S_IWRITE) +# define GRN_OPEN_FLAG_BINARY _O_BINARY +# define grn_open(fd, pathname, flags) \ + _sopen_s(&(fd), (pathname), (flags), _SH_DENYNO, GRN_OPEN_CREATE_MODE) +#else /* WIN32 */ +# define GRN_OPEN_CREATE_MODE (S_IRUSR | S_IWUSR | S_IRGRP) +# define GRN_OPEN_FLAG_BINARY 0 +# define grn_open(fd, pathname, flags) \ + (fd) = open((pathname), (flags), GRN_OPEN_CREATE_MODE) +#endif /* WIN32 */ + +#ifdef WIN32 +# define grn_close(fd) _close((fd)) +#else /* WIN32 */ +# define grn_close(fd) close((fd)) +#endif /* WIN32 */ + +#ifdef WIN32 +# define grn_fileno(stream) _fileno((stream)) +#else /* WIN32 */ +# define grn_fileno(stream) fileno((stream)) +#endif /* WIN32 */ + +#ifdef WIN32 +# define grn_isatty(stream) _isatty((stream)) +#else /* WIN32 */ +# define grn_isatty(stream) isatty((stream)) +#endif /* WIN32 */ + +#ifdef WIN32 +# define grn_getpid() _getpid() +#else /* WIN32 */ +# define grn_getpid() getpid() +#endif /* WIN32 */ |