- /* =============================================================================
- * sc_errno.h
- * Copyright (c) 2003 - 2013 Nomura Kei
- * =============================================================================
- */
- #ifndef SC_ERRNO_H
- #define SC_ERRNO_H
- #include <stddef.h>
- #ifndef SC_OS_H
- #include <sc_os.h>
- #endif
- #ifndef SC_COMPILER_H
- #include <sc_compiler.h>
- #endif
- #ifndef SC_STDBOOL_H
- #include <sc_stdbool.h>
- #endif
- #if (isWindows)
- typedef DWORD sc_errno_t;
- #else
- typedef int sc_errno_t;
- #endif
- #ifdef __cplusplus
- extern "C" {
- #endif
- sc_errno_t getError(void);
- void setError(const sc_errno_t errnum);
- bool getErrorMessage(const sc_errno_t errnum, char* const buf, const size_t buflen);
- #ifdef __cplusplus
- } /* extern "C" */
- #endif
- #if (isWindows)
- /* -----------------------------------------------------------------------------
- * Windows
- * -----------------------------------------------------------------------------
- */
- #define SC_E2BIG TYPE_E_OUTOFBOUNDS /*< 引き数リストが長過ぎる. */
- #define SC_EACCES WSAEACCES /*< 許可がない. */
- #define SC_EADDRINUSE WSAEADDRINUSE /*< アドレスがすでに使用されている. */
- #define SC_EADDRNOTAVAIL WSAEADDRNOTAVAIL /*< アドレスが使用できない. */
- #define SC_EAFNOSUPPORT WSAEAFNOSUPPORT /*< アドレス・ファミリーがサポートされていない. */
- #define SC_EAGAIN WSATRY_AGAIN /*< リソースが一時的に利用不可. */
- #define SC_EALREADY WSAEALREADY /*< 接続が既に処理中である. */
- #define SC_EBADF WSAEBADF /*< ファイルディスクリプタが不正である. */
- #define SC_EBADMSG ERROR_INVALID_MESSAGE /*< メッセージが不正である. */
- #define SC_EBUSY ERROR_BUSY /*< リソースが使用中である. */
- #define SC_ECANCELED WSAECANCELLED /*< 操作がキャンセルされた. */
- #define SC_ECONNABORTED WSAECONNABORTED /*< 接続が中止された. */
- #define SC_ECONNREFUSED WSAECONNREFUSED /*< 接続が拒否された. */
- #define SC_ECONNRESET WSAECONNRESET /*< 接続がリセットされた. */
- #define SC_EDEADLK ERROR_POSSIBLE_DEADLOCK /*< リソースのデッドロックを回避した. */
- #define SC_EDESTADDRREQ WSAEDESTADDRREQ /*< 宛先アドレスが必要である. */
- #define SC_EDOM ERROR_BAD_ARGUMENTS /*< 数学関数で引き数が領域外である. */
- #define SC_EDQUOT WSAEDQUOT /*< ディスク・クォータ (quota) を超過した. */
- #define SC_EEXIST ERROR_FILE_EXISTS /*< ファイルが存在する. */
- #define SC_EFAULT WSAEFAULT /*< アドレスが不正である. */
- #define SC_EFBIG ERROR_CANNOT_MAKE /*< ファイルが大き過ぎる. */
- #define SC_EHOSTDOWN WSAEHOSTDOWN /*< ホストがダウンしている. */
- #define SC_EHOSTUNREACH WSAEHOSTUNREACH /*< ホストに到達不能である. */
- #define SC_EIDRM ERROR_INVALID_HANDLE /*< 識別子が削除された. */
- #define SC_EILSEQ ERROR_INVALID_DATA /*< 不正なバイト列. */
- #define SC_EINPROGRESS WSAEINPROGRESS /*< 操作が実行中である. */
- #define SC_EINTR WSAEINTR /*< 関数呼び出しが割り込まれた. */
- #define SC_EINVAL WSAEINVAL /*< 引数が無効である. */
- #define SC_EIO ERROR_IO_DEVICE /*< 入出力エラー. */
- #define SC_EISCONN WSAEISCONN /*< ソケットが接続されている. */
- #define SC_ELOOP WSAELOOP /*< シンボリック・リンクの回数が多過ぎる. */
- #define SC_EMFILE WSAEMFILE /*< オープンされたファイルが多すぎます. */
- #define SC_EMLINK ERROR_TOO_MANY_LINKS /*< リンクが多すぎます. */
- #define SC_EMSGSIZE WSAEMSGSIZE /*< メッセージが長過ぎる. */
- #define SC_ENAMETOOLONG WSAENAMETOOLONG /*< ファイル名が長過ぎる. */
- #define SC_ENETDOWN WSAENETDOWN /*< ネットワークが不通である. */
- #define SC_ENETRESET WSAENETRESET /*< 接続がネットワーク側から中止された. */
- #define SC_ENETUNREACH WSAENETUNREACH /*< ネットワークが到達不能である. */
- #define SC_ENFILE ERROR_EA_TABLE_FULL /*< ファイルテーブルがオーバフローしました. */
- #define SC_ENOBUFS WSAENOBUFS /*< 使用可能なバッファ空間がない. */
- #define SC_ENODATA WSANO_DATA /*< ストリームの読み出しキューの先頭に読み出し可能なメッセージがない. */
- #define SC_ENODEV ERROR_DEV_NOT_EXIST /*< デバイスが存在しません. */
- #define SC_ENOENT ERROR_FILE_NOT_FOUND /*< ファイルまたはディレクトリが存在しません. */
- #define SC_ENOEXEC ERROR_BAD_FORMAT /*< exec フォーマットエラー. */
- #define SC_ENOMEM ERROR_OUTOFMEMORY /*< 十分な空きメモリ領域が無い. */
- #define SC_ENOPROTOOPT WSAENOPROTOOPT /*< 指定されたプロトコルが利用できない. */
- #define SC_ENOSPC ERROR_HANDLE_DISK_FULL /*< デバイス上のスペースが足りません. */
- #define SC_ENOSYS TYPE_E_DLLFUNCTIONNOTFOUND /*< 関数が実装されていない. */
- #define SC_ENOTCONN WSAENOTCONN /*< ソケットが接続されていない. */
- #define SC_ENOTEMPTY WSAENOTEMPTY /*< ディレクトリが空ではない. */
- #define SC_ENOTSOCK WSAENOTSOCK /*< ソケットではない. */
- #define SC_ENOTSUP ERROR_NOT_SUPPORTED /*< 操作がサポートされていない. */
- #define SC_ENOTTY RROR_INVALID_CATEGORY /*< デバイスへのioctl が正しくありません. */
- #define SC_ENXIO ERROR_BAD_UNIT /*< デバイスまたはアドレスが存在しません. */
- #define SC_EOPNOTSUPP WSAEOPNOTSUPP /*< ソケットでサポートしていない操作である. */
- #define SC_EPERM WSAEACCES /*< スーパーユーザではありません. */
- #define SC_EPFNOSUPPORT WSAEPFNOSUPPORT /*< サポートされていないプロトコルファミリーである. */
- #define SC_EPIPE ERROR_BROKEN_PIPE /*< パイプが中断されました. */
- #define SC_EPROTO ERROR_DS_PROTOCOL_ERROR /*< プロトコル・エラー. */
- #define SC_EPROTONOSUPPORT WSAEPROTONOSUPPORT /*< プロトコルがサポートされていない. */
- #define SC_EPROTOTYPE WSAEPROTOTYPE /*< ソケットに指定できないプロトコル・タイプである. */
- #define SC_ERANGE ERROR_DS_OBJECT_RESULTS_TOO_LARGE /*< 数学関数結果が表示不可能です. */
- #define SC_EREMOTE WSAEREMOTE /*< オブジェクトがリモートにある. */
- #define SC_EROFS ERROR_FILE_READ_ONLY /*< 読み取り専用のファイルシステムです. */
- #define SC_ESHUTDOWN WSAESHUTDOWN /*< 通信相手がシャットダウンされて送信できない. */
- #define SC_ESOCKTNOSUPPORT WSAESOCKTNOSUPPORT /*< サポートされていないソケット種別である. */
- #define SC_ESPIPE ERROR_BAD_PIPE /*< シークが正しくありません. */
- #define SC_ESTALE WSAESTALE /*< ファイルハンドルが古い状態になっている. */
- #define SC_ETIME WSAETIMEDOUT /*< 時間が経過した. */
- #define SC_ETIMEDOUT WSAETIMEDOUT /*< 操作がタイムアウトした. */
- #define SC_ETXTBSY ERROR_BUSY /*< テキストファイルは使われています。(旧仕様). */
- #define SC_EXDEV ERROR_NOT_SAME_DEVICE /*< デバイスにまたがるリンクになります. */
- #else
- /* -----------------------------------------------------------------------------
- * Windows 以外
- * -----------------------------------------------------------------------------
- */
- #include <errno.h>
- #define SC_E2BIG E2BIG /*< 引き数リストが長過ぎる. */
- #define SC_EACCES EACCES /*< 許可がない. */
- #define SC_EADDRINUSE EADDRINUSE /*< アドレスがすでに使用されている. */
- #define SC_EADDRNOTAVAIL EADDRNOTAVAIL /*< アドレスが使用できない. */
- #define SC_EAFNOSUPPORT EAFNOSUPPORT /*< アドレス・ファミリーがサポートされていない. */
- #define SC_EAGAIN EAGAIN /*< リソースが一時的に利用不可. */
- #define SC_EALREADY EALREADY /*< 接続が既に処理中である. */
- #define SC_EBADF EBADF /*< ファイルディスクリプタが不正である. */
- #define SC_EBADMSG EBADMSG /*< メッセージが不正である. */
- #define SC_EBUSY EBUSY /*< リソースが使用中である. */
- #define SC_ECANCELED ECANCELED /*< 操作がキャンセルされた. */
- #define SC_ECONNABORTED ECONNABORTED /*< 接続が中止された. */
- #define SC_ECONNREFUSED ECONNREFUSED /*< 接続が拒否された. */
- #define SC_ECONNRESET ECONNRESET /*< 接続がリセットされた. */
- #define SC_EDEADLK EDEADLK /*< リソースのデッドロックを回避した. */
- #define SC_EDESTADDRREQ EDESTADDRREQ /*< 宛先アドレスが必要である. */
- #define SC_EDOM EDOM /*< 数学関数で引き数が領域外である. */
- #define SC_EDQUOT EDQUOT /*< ディスク・クォータ (quota) を超過した. */
- #define SC_EEXIST EEXIST /*< ファイルが存在する. */
- #define SC_EFAULT EFAULT /*< アドレスが不正である. */
- #define SC_EFBIG EFBIG /*< ファイルが大き過ぎる. */
- #define SC_EHOSTDOWN EHOSTDOWN /*< ホストがダウンしている. */
- #define SC_EHOSTUNREACH EHOSTUNREACH /*< ホストに到達不能である. */
- #define SC_EIDRM EIDRM /*< 識別子が削除された. */
- #define SC_EILSEQ EILSEQ /*< 不正なバイト列. */
- #define SC_EINPROGRESS EINPROGRESS /*< 操作が実行中である. */
- #define SC_EINTR EINTR /*< 関数呼び出しが割り込まれた. */
- #define SC_EINVAL EINVAL /*< 引数が無効である. */
- #define SC_EIO EIO /*< 入出力エラー. */
- #define SC_EISCONN EISCONN /*< ソケットが接続されている. */
- #define SC_ELOOP ELOOP /*< シンボリック・リンクの回数が多過ぎる. */
- #define SC_EMFILE EMFILE /*< オープンされたファイルが多すぎます. */
- #define SC_EMLINK EMLINK /*< リンクが多すぎます. */
- #define SC_EMSGSIZE EMSGSIZE /*< メッセージが長過ぎる. */
- #define SC_ENAMETOOLONG ENAMETOOLONG /*< ファイル名が長過ぎる. */
- #define SC_ENETDOWN ENETDOWN /*< ネットワークが不通である. */
- #define SC_ENETRESET ENETRESET /*< 接続がネットワーク側から中止された. */
- #define SC_ENETUNREACH ENETUNREACH /*< ネットワークが到達不能である. */
- #define SC_ENFILE ENFILE /*< ファイルテーブルがオーバフローしました. */
- #define SC_ENOBUFS ENOBUFS /*< 使用可能なバッファ空間がない. */
- #define SC_ENODATA ENODATA /*< ストリームの読み出しキューの先頭に読み出し可能なメッセージがない. */
- #define SC_ENODEV ENODEV /*< デバイスが存在しません. */
- #define SC_ENOENT ENOENT /*< ファイルまたはディレクトリが存在しません. */
- #define SC_ENOEXEC ENOEXEC /*< exec フォーマットエラー. */
- #define SC_ENOMEM ENOMEM /*< 十分な空きメモリ領域が無い. */
- #define SC_ENOPROTOOPT ENOPROTOOPT /*< 指定されたプロトコルが利用できない. */
- #define SC_ENOSPC ENOSPC /*< デバイス上のスペースが足りません. */
- #define SC_ENOSYS ENOSYS /*< 関数が実装されていない. */
- #define SC_ENOTCONN ENOTCONN /*< ソケットが接続されていない. */
- #define SC_ENOTEMPTY ENOTEMPTY /*< ディレクトリが空ではない. */
- #define SC_ENOTSOCK ENOTSOCK /*< ソケットではない. */
- #define SC_ENOTSUP ENOTSUP /*< 操作がサポートされていない. */
- #define SC_ENOTTY ENOTTY /*< デバイスへのioctl が正しくありません. */
- #define SC_ENXIO ENXIO /*< デバイスまたはアドレスが存在しません. */
- #define SC_EOPNOTSUPP EOPNOTSUPP /*< ソケットでサポートしていない操作である. */
- #define SC_EPERM EPERM /*< スーパーユーザではありません. */
- #define SC_EPFNOSUPPORT EPFNOSUPPORT /*< サポートされていないプロトコルファミリーである. */
- #define SC_EPIPE EPIPE /*< パイプが中断されました. */
- #define SC_EPROTO EPROTO /*< プロトコル・エラー. */
- #define SC_EPROTONOSUPPORT EPROTONOSUPPORT /*< プロトコルがサポートされていない. */
- #define SC_EPROTOTYPE EPROTOTYPE /*< ソケットに指定できないプロトコル・タイプである. */
- #define SC_ERANGE ERANGE /*< 数学関数結果が表示不可能です. */
- #define SC_EREMOTE EREMOTE /*< オブジェクトがリモートにある. */
- #define SC_EROFS EROFS /*< 読み取り専用のファイルシステムです. */
- #define SC_ESHUTDOWN ESHUTDOWN /*< 通信相手がシャットダウンされて送信できない. */
- #define SC_ESOCKTNOSUPPORT ESOCKTNOSUPPORT /*< サポートされていないソケット種別である. */
- #define SC_ESPIPE ESPIPE /*< シークが正しくありません. */
- #define SC_ESTALE ESTALE /*< ファイルハンドルが古い状態になっている. */
- #define SC_ETIME ETIME /*< 時間が経過した. */
- #define SC_ETIMEDOUT ETIMEDOUT /*< 操作がタイムアウトした. */
- #define SC_ETXTBSY ETXTBSY /*< テキストファイルは使われています。(旧仕様). */
- #define SC_EXDEV EXDEV /*< デバイスにまたがるリンクになります. */
- #endif /* isWindows */
- #endif /* SC_ERRNO_H */