#define GRN_API_ENTER do {\ if ((ctx)->seqno & 1) {\
(ctx)->subno++;\
} else {\
(ctx)->errlvl = GRN_OK;\ if ((ctx)->rc != GRN_CANCEL) {\
(ctx)->rc = GRN_SUCCESS;\
}\
(ctx)->seqno++;\
}\
GRN_TEST_YIELD();\
} while (0)
/* CAUTION!! : pass only variables or constants as r */ #define GRN_API_RETURN(r) do {\ if (ctx->subno) {\
ctx->subno--;\
} else {\
ctx->seqno++;\
}\
GRN_TEST_YIELD();\ return r;\
} while (0)
#define SOERR(...) do {\
grn_rc rc;\ constchar *m;\ char user_message[USER_MESSAGE_SIZE];\ int e = WSAGetLastError();\ switch (e) {\ case WSANOTINITIALISED :\
rc = GRN_SOCKET_NOT_INITIALIZED;\
m = "please call grn_com_init first";\ break;\ case WSAEFAULT :\
rc = GRN_BAD_ADDRESS;\
m = "bad address";\ break;\ case WSAEINVAL :\
rc = GRN_INVALID_ARGUMENT;\
m = "invalid argument";\ break;\ case WSAEMFILE :\
rc = GRN_TOO_MANY_OPEN_FILES;\
m = "too many sockets";\ break;\ case WSAEWOULDBLOCK :\
rc = GRN_OPERATION_WOULD_BLOCK;\
m = "operation would block";\ break;\ case WSAENOTSOCK :\
rc = GRN_NOT_SOCKET;\
m = "given fd is not socket fd";\ break;\ case WSAEOPNOTSUPP :\
rc = GRN_OPERATION_NOT_SUPPORTED;\
m = "operation is not supported";\ break;\ case WSAEADDRINUSE :\
rc = GRN_ADDRESS_IS_IN_USE;\
m = "address is already in use";\ break;\ case WSAEADDRNOTAVAIL :\
rc = GRN_ADDRESS_IS_NOT_AVAILABLE;\
m = "address is not available";\ break;\ case WSAENETDOWN :\
rc = GRN_NETWORK_IS_DOWN;\
m = "network is down";\ break;\ case WSAENOBUFS :\
rc = GRN_NO_BUFFER;\
m = "no buffer";\ break;\ case WSAEISCONN :\
rc = GRN_SOCKET_IS_ALREADY_CONNECTED;\
m = "socket is already connected";\ break;\ case WSAENOTCONN :\
rc = GRN_SOCKET_IS_NOT_CONNECTED;\
m = "socket is not connected";\ break;\ case WSAESHUTDOWN :\
rc = GRN_SOCKET_IS_ALREADY_SHUTDOWNED;\
m = "socket is already shutdowned";\ break;\ case WSAETIMEDOUT :\
rc = GRN_OPERATION_TIMEOUT;\
m = "connection time out";\ break;\ case WSAECONNREFUSED :\
rc = GRN_CONNECTION_REFUSED;\
m = "connection refused";\ break;\ case WSAEINTR :\
rc = GRN_INTERRUPTED_FUNCTION_CALL;\
m = "interrupted function call";\ break;\ default:\
rc = GRN_UNKNOWN_ERROR;\
m = "unknown error";\ break;\
}\
grn_snprintf(user_message,\
USER_MESSAGE_SIZE, USER_MESSAGE_SIZE,\
__VA_ARGS__);\
ERR(rc, "socket error[%d]: %s: %s",\
e, m, user_message);\
} while (0)
#define ERRNO_ERR(...) do {\
grn_rc rc;\ int errno_keep = errno;\
grn_bool show_errno = GRN_FALSE;\ constchar *system_message;\ char user_message[USER_MESSAGE_SIZE];\
system_message = grn_strerror(errno);\ switch (errno_keep) {\ case EPERM : rc = GRN_OPERATION_NOT_PERMITTED; break;\ case ENOENT : rc = GRN_NO_SUCH_FILE_OR_DIRECTORY; break;\ case ESRCH : rc = GRN_NO_SUCH_PROCESS; break;\ case EINTR : rc = GRN_INTERRUPTED_FUNCTION_CALL; break;\ case EIO : rc = GRN_INPUT_OUTPUT_ERROR; break;\ case E2BIG : rc = GRN_ARG_LIST_TOO_LONG; break;\ case ENOEXEC : rc = GRN_EXEC_FORMAT_ERROR; break;\ case EBADF : rc = GRN_BAD_FILE_DESCRIPTOR; break;\ case ECHILD : rc = GRN_NO_CHILD_PROCESSES; break;\ case EAGAIN: rc = GRN_OPERATION_WOULD_BLOCK; break;\ case ENOMEM : rc = GRN_NO_MEMORY_AVAILABLE; break;\ case EACCES : rc = GRN_PERMISSION_DENIED; break;\ case EFAULT : rc = GRN_BAD_ADDRESS; break;\ case EEXIST : rc = GRN_FILE_EXISTS; break;\ /* case EXDEV : */\ case ENODEV : rc = GRN_NO_SUCH_DEVICE; break;\ case ENOTDIR : rc = GRN_NOT_A_DIRECTORY; break;\ case EISDIR : rc = GRN_IS_A_DIRECTORY; break;\ case EINVAL : rc = GRN_INVALID_ARGUMENT; break;\ case EMFILE : rc = GRN_TOO_MANY_OPEN_FILES; break;\ case ENOTTY : rc = GRN_INAPPROPRIATE_I_O_CONTROL_OPERATION; break;\ case EFBIG : rc = GRN_FILE_TOO_LARGE; break;\ case ENOSPC : rc = GRN_NO_SPACE_LEFT_ON_DEVICE; break;\ case ESPIPE : rc = GRN_INVALID_SEEK; break;\ case EROFS : rc = GRN_READ_ONLY_FILE_SYSTEM; break;\ case EMLINK : rc = GRN_TOO_MANY_LINKS; break;\ case EPIPE : rc = GRN_BROKEN_PIPE; break;\ case EDOM : rc = GRN_DOMAIN_ERROR; break;\ case ERANGE : rc = GRN_RANGE_ERROR; break;\ case EDEADLOCK : rc = GRN_RESOURCE_DEADLOCK_AVOIDED; break;\ case ENAMETOOLONG : rc = GRN_FILENAME_TOO_LONG; break;\ case EILSEQ : rc = GRN_ILLEGAL_BYTE_SEQUENCE; break;\ /* case STRUNCATE : */\ default :\
rc = GRN_UNKNOWN_ERROR;\
show_errno = GRN_TRUE;\ break;\
}\
grn_snprintf(user_message,\
USER_MESSAGE_SIZE, USER_MESSAGE_SIZE,\
__VA_ARGS__);\ if (show_errno) {\
ERR(rc, "system call error[%d]: %s: %s",\
errno_keep, system_message, user_message);\
} else {\
ERR(rc, "system call error: %s: %s",\
system_message, user_message);\
}\
} while (0)
#else/* WIN32 */
#define SERR(...) do {\
grn_rc rc;\ int errno_keep = errno;\
grn_bool show_errno = GRN_FALSE;\ constchar *system_message = grn_current_error_message();\ char user_message[USER_MESSAGE_SIZE];\ switch (errno_keep) {\ case ELOOP : rc = GRN_TOO_MANY_SYMBOLIC_LINKS; break;\ case ENAMETOOLONG : rc = GRN_FILENAME_TOO_LONG; break;\ case ENOENT : rc = GRN_NO_SUCH_FILE_OR_DIRECTORY; break;\ case ENOMEM : rc = GRN_NO_MEMORY_AVAILABLE; break;\ case ENOTDIR : rc = GRN_NOT_A_DIRECTORY; break;\ case EPERM : rc = GRN_OPERATION_NOT_PERMITTED; break;\ case ESRCH : rc = GRN_NO_SUCH_PROCESS; break;\ case EINTR : rc = GRN_INTERRUPTED_FUNCTION_CALL; break;\ case EIO : rc = GRN_INPUT_OUTPUT_ERROR; break;\ case ENXIO : rc = GRN_NO_SUCH_DEVICE_OR_ADDRESS; break;\ case E2BIG : rc = GRN_ARG_LIST_TOO_LONG; break;\ case ENOEXEC : rc = GRN_EXEC_FORMAT_ERROR; break;\ case EBADF : rc = GRN_BAD_FILE_DESCRIPTOR; break;\ case ECHILD : rc = GRN_NO_CHILD_PROCESSES; break;\ case EACCES : rc = GRN_PERMISSION_DENIED; break;\ case EFAULT : rc = GRN_BAD_ADDRESS; break;\ case EBUSY : rc = GRN_RESOURCE_BUSY; break;\ case EEXIST : rc = GRN_FILE_EXISTS; break;\ case ENODEV : rc = GRN_NO_SUCH_DEVICE; break;\ case EISDIR : rc = GRN_IS_A_DIRECTORY; break;\ case EINVAL : rc = GRN_INVALID_ARGUMENT; break;\ case EMFILE : rc = GRN_TOO_MANY_OPEN_FILES; break;\ case EFBIG : rc = GRN_FILE_TOO_LARGE; break;\ case ENOSPC : rc = GRN_NO_SPACE_LEFT_ON_DEVICE; break;\ case EROFS : rc = GRN_READ_ONLY_FILE_SYSTEM; break;\ case EMLINK : rc = GRN_TOO_MANY_LINKS; break;\ case EPIPE : rc = GRN_BROKEN_PIPE; break;\ case EDOM : rc = GRN_DOMAIN_ERROR; break;\ case ERANGE : rc = GRN_RANGE_ERROR; break;\ case ENOTSOCK : rc = GRN_NOT_SOCKET; break;\ case EADDRINUSE : rc = GRN_ADDRESS_IS_IN_USE; break;\ case ENETDOWN : rc = GRN_NETWORK_IS_DOWN; break;\ case ENOBUFS : rc = GRN_NO_BUFFER; break;\ case EISCONN : rc = GRN_SOCKET_IS_ALREADY_CONNECTED; break;\ case ENOTCONN : rc = GRN_SOCKET_IS_NOT_CONNECTED; break;\ /*\ caseESOCKTNOSUPPORT:\ caseEOPNOTSUPP:\ caseEPFNOSUPPORT:\
*/\ case EPROTONOSUPPORT : rc = GRN_OPERATION_NOT_SUPPORTED; break;\ case ESHUTDOWN : rc = GRN_SOCKET_IS_ALREADY_SHUTDOWNED; break;\ case ETIMEDOUT : rc = GRN_OPERATION_TIMEOUT; break;\ case ECONNREFUSED: rc = GRN_CONNECTION_REFUSED; break;\ case EAGAIN: rc = GRN_OPERATION_WOULD_BLOCK; break;\ default :\
rc = GRN_UNKNOWN_ERROR;\
show_errno = GRN_TRUE;\ break;\
}\
grn_snprintf(user_message,\
USER_MESSAGE_SIZE, USER_MESSAGE_SIZE,\
__VA_ARGS__);\ if (show_errno) {\
ERR(rc, "system call error[%d]: %s: %s",\
errno_keep, system_message, user_message);\
} else {\
ERR(rc, "system call error: %s: %s",\
system_message, user_message);\
}\
} while (0)
GRN_API void grn_ctx_stream_out_func(grn_ctx *c, int flags, void *stream);
grn_rc grn_db_init_builtin_procs(grn_ctx *ctx);
#ifdef __cplusplus
} #endif
Messung V0.5 in Prozent
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.12Bemerkung:
(vorverarbeitet am 2026-10-08)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.