/* ============================================================================= * 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 */