Go to the documentation of this file.00001
00009
00010
00011
00012
00013 #include <ecl/config/ecl.hpp>
00014 #ifdef ECL_IS_POSIX
00015
00016
00017
00018
00019
00020 #include <errno.h>
00021 #include <ecl/errors/handlers.hpp>
00022 #include "../../../include/ecl/devices/detail/error_handler_pos.hpp"
00023
00024
00025
00026
00027
00028 namespace ecl {
00029 namespace devices {
00030
00031
00032
00033
00034
00035 ecl::Error open_error() {
00036 int error_result = errno;
00037 switch (error_result) {
00038 case ( EINVAL ) : return ecl::Error(ecl::InvalidArgError);
00039 case ( EACCES ) : return ecl::Error(ecl::PermissionsError);
00040 case ( EFBIG ) : case (EOVERFLOW) :
00041 return ecl::Error(ecl::OutOfResourcesError);
00042 case ( EINTR ) : return ecl::Error(ecl::InterruptedError);
00043 case ( EISDIR ) : return ecl::Error(ecl::InvalidObjectError);
00044 case ( ELOOP ) : return ecl::Error(ecl::SystemFailureError);
00045 case ( EMFILE ) : return ecl::Error(ecl::OutOfResourcesError);
00046 case ( ENFILE ) : return ecl::Error(ecl::OutOfResourcesError);
00047 case ( ENAMETOOLONG ) : return ecl::Error(ecl::InvalidArgError);
00048 case ( ENOMEM ) : return ecl::Error(ecl::MemoryError);
00049 case ( ENOSPC ) : return ecl::Error(ecl::OutOfResourcesError);
00050 case ( ENOTDIR ): return ecl::Error(ecl::InvalidObjectError);
00051 case ( EROFS ) : return ecl::Error(ecl::PermissionsError);
00052 case ( ETXTBSY ): return ecl::Error(ecl::UsageError);
00053 default : return ecl::Error(ecl::UnknownError);
00054 }
00055 }
00056
00057
00058 ecl::Error write_error() {
00059 int error_result = errno;
00060 switch (error_result) {
00061 case ( EAGAIN ) : return ecl::Error(ecl::BlockingError);
00062 case ( EBADF ) : case (EINVAL)
00063 : return ecl::Error(ecl::InvalidObjectError);
00064 case ( EFAULT ) : return ecl::Error(ecl::OutOfRangeError);
00065 case ( EFBIG ) : return ecl::Error(ecl::MemoryError);
00066 case ( EINTR ) : return ecl::Error(ecl::InterruptedError);
00067 case ( EIO ) : return ecl::Error(ecl::SystemFailureError);
00068 case ( ENOSPC ) : return ecl::Error(ecl::OutOfResourcesError);
00069 case ( EPIPE ) : return ecl::Error(ecl::PermissionsError);
00070 default : return ecl::Error(ecl::UnknownError);
00071 }
00072 }
00073
00074
00075 ecl::Error read_error() {
00076 int error_result = errno;
00077 switch (error_result) {
00078 case ( EAGAIN ) : return ecl::Error(ecl::BlockingError);
00079 case ( EBADF ) : case (EINVAL)
00080 : return ecl::Error(ecl::PermissionsError);
00081 case ( EFAULT ) : return ecl::Error(ecl::OutOfRangeError);
00082 case ( EINTR ) : return ecl::Error(ecl::InterruptedError);
00083 case ( EIO ) : return ecl::Error(ecl::SystemFailureError);
00084 case ( EISDIR ) : return ecl::Error(ecl::InvalidObjectError);
00085 default : return ecl::Error(ecl::UnknownError);
00086 }
00087 }
00088 ecl::Error sync_error() {
00089 int error_result = errno;
00090 switch (error_result) {
00091 case ( EBADF ) : return ecl::Error(ecl::InvalidArgError);
00092 case ( EIO ) : return ecl::Error(ecl::CloseError);
00093 case ( EROFS ) : case ( EINVAL )
00094 : return ecl::Error(ecl::NotSupportedError);
00095 default : return ecl::Error(ecl::UnknownError);
00096 }
00097 }
00098 ecl::Error close_error() {
00099 int error_result = errno;
00100 switch (error_result) {
00101 case ( EBADF ) : return ecl::Error(ecl::InvalidArgError);
00102 case ( EIO ) : return ecl::Error(ecl::SystemFailureError);
00103 case ( EINTR ) : return ecl::Error(ecl::InterruptedError);
00104 default : return ecl::Error(ecl::UnknownError);
00105 }
00106 }
00107
00108 }
00109 }
00110
00111 #endif
00112