Newer
Older
snipet / project / trunk / include / sc / sc_errno.h
  1. /* =============================================================================
  2. * sc_errno.h
  3. * Copyright (c) 2003 - 2013 Nomura Kei
  4. * =============================================================================
  5. */
  6. #ifndef SC_ERRNO_H
  7. #define SC_ERRNO_H
  8.  
  9. #include <stddef.h>
  10.  
  11. #ifndef SC_OS_H
  12. #include <sc_os.h>
  13. #endif
  14.  
  15. #ifndef SC_COMPILER_H
  16. #include <sc_compiler.h>
  17. #endif
  18.  
  19. #ifndef SC_STDBOOL_H
  20. #include <sc_stdbool.h>
  21. #endif
  22.  
  23.  
  24. #if (isWindows)
  25. typedef DWORD sc_errno_t;
  26. #else
  27. typedef int sc_errno_t;
  28. #endif
  29.  
  30.  
  31. #ifdef __cplusplus
  32. extern "C" {
  33. #endif
  34.  
  35. sc_errno_t getError(void);
  36. void setError(const sc_errno_t errnum);
  37. bool getErrorMessage(const sc_errno_t errnum, char* const buf, const size_t buflen);
  38.  
  39.  
  40. #ifdef __cplusplus
  41. } /* extern "C" */
  42. #endif
  43.  
  44.  
  45. #if (isWindows)
  46. /* -----------------------------------------------------------------------------
  47. * Windows
  48. * -----------------------------------------------------------------------------
  49. */
  50. #define SC_E2BIG TYPE_E_OUTOFBOUNDS /*< 引き数リストが長過ぎる. */
  51. #define SC_EACCES WSAEACCES /*< 許可がない. */
  52. #define SC_EADDRINUSE WSAEADDRINUSE /*< アドレスがすでに使用されている. */
  53. #define SC_EADDRNOTAVAIL WSAEADDRNOTAVAIL /*< アドレスが使用できない. */
  54. #define SC_EAFNOSUPPORT WSAEAFNOSUPPORT /*< アドレス・ファミリーがサポートされていない. */
  55. #define SC_EAGAIN WSATRY_AGAIN /*< リソースが一時的に利用不可. */
  56. #define SC_EALREADY WSAEALREADY /*< 接続が既に処理中である. */
  57. #define SC_EBADF WSAEBADF /*< ファイルディスクリプタが不正である. */
  58. #define SC_EBADMSG ERROR_INVALID_MESSAGE /*< メッセージが不正である. */
  59. #define SC_EBUSY ERROR_BUSY /*< リソースが使用中である. */
  60. #define SC_ECANCELED WSAECANCELLED /*< 操作がキャンセルされた. */
  61. #define SC_ECONNABORTED WSAECONNABORTED /*< 接続が中止された. */
  62. #define SC_ECONNREFUSED WSAECONNREFUSED /*< 接続が拒否された. */
  63. #define SC_ECONNRESET WSAECONNRESET /*< 接続がリセットされた. */
  64. #define SC_EDEADLK ERROR_POSSIBLE_DEADLOCK /*< リソースのデッドロックを回避した. */
  65. #define SC_EDESTADDRREQ WSAEDESTADDRREQ /*< 宛先アドレスが必要である. */
  66. #define SC_EDOM ERROR_BAD_ARGUMENTS /*< 数学関数で引き数が領域外である. */
  67. #define SC_EDQUOT WSAEDQUOT /*< ディスク・クォータ (quota) を超過した. */
  68. #define SC_EEXIST ERROR_FILE_EXISTS /*< ファイルが存在する. */
  69. #define SC_EFAULT WSAEFAULT /*< アドレスが不正である. */
  70. #define SC_EFBIG ERROR_CANNOT_MAKE /*< ファイルが大き過ぎる. */
  71. #define SC_EHOSTDOWN WSAEHOSTDOWN /*< ホストがダウンしている. */
  72. #define SC_EHOSTUNREACH WSAEHOSTUNREACH /*< ホストに到達不能である. */
  73. #define SC_EIDRM ERROR_INVALID_HANDLE /*< 識別子が削除された. */
  74. #define SC_EILSEQ ERROR_INVALID_DATA /*< 不正なバイト列. */
  75. #define SC_EINPROGRESS WSAEINPROGRESS /*< 操作が実行中である. */
  76. #define SC_EINTR WSAEINTR /*< 関数呼び出しが割り込まれた. */
  77. #define SC_EINVAL WSAEINVAL /*< 引数が無効である. */
  78. #define SC_EIO ERROR_IO_DEVICE /*< 入出力エラー. */
  79. #define SC_EISCONN WSAEISCONN /*< ソケットが接続されている. */
  80. #define SC_ELOOP WSAELOOP /*< シンボリック・リンクの回数が多過ぎる. */
  81. #define SC_EMFILE WSAEMFILE /*< オープンされたファイルが多すぎます. */
  82. #define SC_EMLINK ERROR_TOO_MANY_LINKS /*< リンクが多すぎます. */
  83. #define SC_EMSGSIZE WSAEMSGSIZE /*< メッセージが長過ぎる. */
  84. #define SC_ENAMETOOLONG WSAENAMETOOLONG /*< ファイル名が長過ぎる. */
  85. #define SC_ENETDOWN WSAENETDOWN /*< ネットワークが不通である. */
  86. #define SC_ENETRESET WSAENETRESET /*< 接続がネットワーク側から中止された. */
  87. #define SC_ENETUNREACH WSAENETUNREACH /*< ネットワークが到達不能である. */
  88. #define SC_ENFILE ERROR_EA_TABLE_FULL /*< ファイルテーブルがオーバフローしました. */
  89. #define SC_ENOBUFS WSAENOBUFS /*< 使用可能なバッファ空間がない. */
  90. #define SC_ENODATA WSANO_DATA /*< ストリームの読み出しキューの先頭に読み出し可能なメッセージがない. */
  91. #define SC_ENODEV ERROR_DEV_NOT_EXIST /*< デバイスが存在しません. */
  92. #define SC_ENOENT ERROR_FILE_NOT_FOUND /*< ファイルまたはディレクトリが存在しません. */
  93. #define SC_ENOEXEC ERROR_BAD_FORMAT /*< exec フォーマットエラー. */
  94. #define SC_ENOMEM ERROR_OUTOFMEMORY /*< 十分な空きメモリ領域が無い. */
  95. #define SC_ENOPROTOOPT WSAENOPROTOOPT /*< 指定されたプロトコルが利用できない. */
  96. #define SC_ENOSPC ERROR_HANDLE_DISK_FULL /*< デバイス上のスペースが足りません. */
  97. #define SC_ENOSYS TYPE_E_DLLFUNCTIONNOTFOUND /*< 関数が実装されていない. */
  98. #define SC_ENOTCONN WSAENOTCONN /*< ソケットが接続されていない. */
  99. #define SC_ENOTEMPTY WSAENOTEMPTY /*< ディレクトリが空ではない. */
  100. #define SC_ENOTSOCK WSAENOTSOCK /*< ソケットではない. */
  101. #define SC_ENOTSUP ERROR_NOT_SUPPORTED /*< 操作がサポートされていない. */
  102. #define SC_ENOTTY RROR_INVALID_CATEGORY /*< デバイスへのioctl が正しくありません. */
  103. #define SC_ENXIO ERROR_BAD_UNIT /*< デバイスまたはアドレスが存在しません. */
  104. #define SC_EOPNOTSUPP WSAEOPNOTSUPP /*< ソケットでサポートしていない操作である. */
  105. #define SC_EPERM WSAEACCES /*< スーパーユーザではありません. */
  106. #define SC_EPFNOSUPPORT WSAEPFNOSUPPORT /*< サポートされていないプロトコルファミリーである. */
  107. #define SC_EPIPE ERROR_BROKEN_PIPE /*< パイプが中断されました. */
  108. #define SC_EPROTO ERROR_DS_PROTOCOL_ERROR /*< プロトコル・エラー. */
  109. #define SC_EPROTONOSUPPORT WSAEPROTONOSUPPORT /*< プロトコルがサポートされていない. */
  110. #define SC_EPROTOTYPE WSAEPROTOTYPE /*< ソケットに指定できないプロトコル・タイプである. */
  111. #define SC_ERANGE ERROR_DS_OBJECT_RESULTS_TOO_LARGE /*< 数学関数結果が表示不可能です. */
  112. #define SC_EREMOTE WSAEREMOTE /*< オブジェクトがリモートにある. */
  113. #define SC_EROFS ERROR_FILE_READ_ONLY /*< 読み取り専用のファイルシステムです. */
  114. #define SC_ESHUTDOWN WSAESHUTDOWN /*< 通信相手がシャットダウンされて送信できない. */
  115. #define SC_ESOCKTNOSUPPORT WSAESOCKTNOSUPPORT /*< サポートされていないソケット種別である. */
  116. #define SC_ESPIPE ERROR_BAD_PIPE /*< シークが正しくありません. */
  117. #define SC_ESTALE WSAESTALE /*< ファイルハンドルが古い状態になっている. */
  118. #define SC_ETIME WSAETIMEDOUT /*< 時間が経過した. */
  119. #define SC_ETIMEDOUT WSAETIMEDOUT /*< 操作がタイムアウトした. */
  120. #define SC_ETXTBSY ERROR_BUSY /*< テキストファイルは使われています。(旧仕様). */
  121. #define SC_EXDEV ERROR_NOT_SAME_DEVICE /*< デバイスにまたがるリンクになります. */
  122.  
  123. #else
  124. /* -----------------------------------------------------------------------------
  125. * Windows 以外
  126. * -----------------------------------------------------------------------------
  127. */
  128. #include <errno.h>
  129.  
  130. #define SC_E2BIG E2BIG /*< 引き数リストが長過ぎる. */
  131. #define SC_EACCES EACCES /*< 許可がない. */
  132. #define SC_EADDRINUSE EADDRINUSE /*< アドレスがすでに使用されている. */
  133. #define SC_EADDRNOTAVAIL EADDRNOTAVAIL /*< アドレスが使用できない. */
  134. #define SC_EAFNOSUPPORT EAFNOSUPPORT /*< アドレス・ファミリーがサポートされていない. */
  135. #define SC_EAGAIN EAGAIN /*< リソースが一時的に利用不可. */
  136. #define SC_EALREADY EALREADY /*< 接続が既に処理中である. */
  137. #define SC_EBADF EBADF /*< ファイルディスクリプタが不正である. */
  138. #define SC_EBADMSG EBADMSG /*< メッセージが不正である. */
  139. #define SC_EBUSY EBUSY /*< リソースが使用中である. */
  140. #define SC_ECANCELED ECANCELED /*< 操作がキャンセルされた. */
  141. #define SC_ECONNABORTED ECONNABORTED /*< 接続が中止された. */
  142. #define SC_ECONNREFUSED ECONNREFUSED /*< 接続が拒否された. */
  143. #define SC_ECONNRESET ECONNRESET /*< 接続がリセットされた. */
  144. #define SC_EDEADLK EDEADLK /*< リソースのデッドロックを回避した. */
  145. #define SC_EDESTADDRREQ EDESTADDRREQ /*< 宛先アドレスが必要である. */
  146. #define SC_EDOM EDOM /*< 数学関数で引き数が領域外である. */
  147. #define SC_EDQUOT EDQUOT /*< ディスク・クォータ (quota) を超過した. */
  148. #define SC_EEXIST EEXIST /*< ファイルが存在する. */
  149. #define SC_EFAULT EFAULT /*< アドレスが不正である. */
  150. #define SC_EFBIG EFBIG /*< ファイルが大き過ぎる. */
  151. #define SC_EHOSTDOWN EHOSTDOWN /*< ホストがダウンしている. */
  152. #define SC_EHOSTUNREACH EHOSTUNREACH /*< ホストに到達不能である. */
  153. #define SC_EIDRM EIDRM /*< 識別子が削除された. */
  154. #define SC_EILSEQ EILSEQ /*< 不正なバイト列. */
  155. #define SC_EINPROGRESS EINPROGRESS /*< 操作が実行中である. */
  156. #define SC_EINTR EINTR /*< 関数呼び出しが割り込まれた. */
  157. #define SC_EINVAL EINVAL /*< 引数が無効である. */
  158. #define SC_EIO EIO /*< 入出力エラー. */
  159. #define SC_EISCONN EISCONN /*< ソケットが接続されている. */
  160. #define SC_ELOOP ELOOP /*< シンボリック・リンクの回数が多過ぎる. */
  161. #define SC_EMFILE EMFILE /*< オープンされたファイルが多すぎます. */
  162. #define SC_EMLINK EMLINK /*< リンクが多すぎます. */
  163. #define SC_EMSGSIZE EMSGSIZE /*< メッセージが長過ぎる. */
  164. #define SC_ENAMETOOLONG ENAMETOOLONG /*< ファイル名が長過ぎる. */
  165. #define SC_ENETDOWN ENETDOWN /*< ネットワークが不通である. */
  166. #define SC_ENETRESET ENETRESET /*< 接続がネットワーク側から中止された. */
  167. #define SC_ENETUNREACH ENETUNREACH /*< ネットワークが到達不能である. */
  168. #define SC_ENFILE ENFILE /*< ファイルテーブルがオーバフローしました. */
  169. #define SC_ENOBUFS ENOBUFS /*< 使用可能なバッファ空間がない. */
  170. #define SC_ENODATA ENODATA /*< ストリームの読み出しキューの先頭に読み出し可能なメッセージがない. */
  171. #define SC_ENODEV ENODEV /*< デバイスが存在しません. */
  172. #define SC_ENOENT ENOENT /*< ファイルまたはディレクトリが存在しません. */
  173. #define SC_ENOEXEC ENOEXEC /*< exec フォーマットエラー. */
  174. #define SC_ENOMEM ENOMEM /*< 十分な空きメモリ領域が無い. */
  175. #define SC_ENOPROTOOPT ENOPROTOOPT /*< 指定されたプロトコルが利用できない. */
  176. #define SC_ENOSPC ENOSPC /*< デバイス上のスペースが足りません. */
  177. #define SC_ENOSYS ENOSYS /*< 関数が実装されていない. */
  178. #define SC_ENOTCONN ENOTCONN /*< ソケットが接続されていない. */
  179. #define SC_ENOTEMPTY ENOTEMPTY /*< ディレクトリが空ではない. */
  180. #define SC_ENOTSOCK ENOTSOCK /*< ソケットではない. */
  181. #define SC_ENOTSUP ENOTSUP /*< 操作がサポートされていない. */
  182. #define SC_ENOTTY ENOTTY /*< デバイスへのioctl が正しくありません. */
  183. #define SC_ENXIO ENXIO /*< デバイスまたはアドレスが存在しません. */
  184. #define SC_EOPNOTSUPP EOPNOTSUPP /*< ソケットでサポートしていない操作である. */
  185. #define SC_EPERM EPERM /*< スーパーユーザではありません. */
  186. #define SC_EPFNOSUPPORT EPFNOSUPPORT /*< サポートされていないプロトコルファミリーである. */
  187. #define SC_EPIPE EPIPE /*< パイプが中断されました. */
  188. #define SC_EPROTO EPROTO /*< プロトコル・エラー. */
  189. #define SC_EPROTONOSUPPORT EPROTONOSUPPORT /*< プロトコルがサポートされていない. */
  190. #define SC_EPROTOTYPE EPROTOTYPE /*< ソケットに指定できないプロトコル・タイプである. */
  191. #define SC_ERANGE ERANGE /*< 数学関数結果が表示不可能です. */
  192. #define SC_EREMOTE EREMOTE /*< オブジェクトがリモートにある. */
  193. #define SC_EROFS EROFS /*< 読み取り専用のファイルシステムです. */
  194. #define SC_ESHUTDOWN ESHUTDOWN /*< 通信相手がシャットダウンされて送信できない. */
  195. #define SC_ESOCKTNOSUPPORT ESOCKTNOSUPPORT /*< サポートされていないソケット種別である. */
  196. #define SC_ESPIPE ESPIPE /*< シークが正しくありません. */
  197. #define SC_ESTALE ESTALE /*< ファイルハンドルが古い状態になっている. */
  198. #define SC_ETIME ETIME /*< 時間が経過した. */
  199. #define SC_ETIMEDOUT ETIMEDOUT /*< 操作がタイムアウトした. */
  200. #define SC_ETXTBSY ETXTBSY /*< テキストファイルは使われています。(旧仕様). */
  201. #define SC_EXDEV EXDEV /*< デバイスにまたがるリンクになります. */
  202.  
  203. #endif /* isWindows */
  204.  
  205.  
  206. #endif /* SC_ERRNO_H */