Back to home page

LXR

 
 

    


File indexing completed on 2025-05-11 08:24:21

0001 /* SPDX-License-Identifier: BSD-2-Clause */
0002 
0003 /**
0004  * @file
0005  *
0006  * @ingroup RTEMSTestFrameworkImpl
0007  *
0008  * @brief This source file contains the implementation of
0009  *   T_strerror(), T_check_eno(), and T_check_eno_success().
0010  */
0011 
0012 /*
0013  * Copyright (C) 2018 embedded brains GmbH & Co. KG
0014  *
0015  * Redistribution and use in source and binary forms, with or without
0016  * modification, are permitted provided that the following conditions
0017  * are met:
0018  * 1. Redistributions of source code must retain the above copyright
0019  *    notice, this list of conditions and the following disclaimer.
0020  * 2. Redistributions in binary form must reproduce the above copyright
0021  *    notice, this list of conditions and the following disclaimer in the
0022  *    documentation and/or other materials provided with the distribution.
0023  *
0024  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
0025  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
0026  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
0027  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
0028  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
0029  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
0030  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
0031  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
0032  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
0033  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
0034  * POSSIBILITY OF SUCH DAMAGE.
0035  */
0036 
0037 #include <rtems/test.h>
0038 
0039 #include <errno.h>
0040 
0041 #define T_STRERROR_CASE(eno) case eno: return #eno
0042 
0043 const char *T_strerror(int eno)
0044 {
0045     switch (eno) {
0046     case 0:
0047         return "0";
0048     T_STRERROR_CASE(E2BIG);
0049     T_STRERROR_CASE(EACCES);
0050     T_STRERROR_CASE(EADDRINUSE);
0051     T_STRERROR_CASE(EADDRNOTAVAIL);
0052     T_STRERROR_CASE(EAFNOSUPPORT);
0053     T_STRERROR_CASE(EAGAIN);
0054     T_STRERROR_CASE(EALREADY);
0055     T_STRERROR_CASE(EBADF);
0056     T_STRERROR_CASE(EBADMSG);
0057     T_STRERROR_CASE(EBUSY);
0058     T_STRERROR_CASE(ECANCELED);
0059     T_STRERROR_CASE(ECHILD);
0060     T_STRERROR_CASE(ECONNABORTED);
0061     T_STRERROR_CASE(ECONNREFUSED);
0062     T_STRERROR_CASE(ECONNRESET);
0063     T_STRERROR_CASE(EDEADLK);
0064     T_STRERROR_CASE(EDESTADDRREQ);
0065     T_STRERROR_CASE(EDOM);
0066     T_STRERROR_CASE(EDQUOT);
0067     T_STRERROR_CASE(EEXIST);
0068     T_STRERROR_CASE(EFAULT);
0069     T_STRERROR_CASE(EFBIG);
0070     T_STRERROR_CASE(EHOSTDOWN);
0071     T_STRERROR_CASE(EHOSTUNREACH);
0072     T_STRERROR_CASE(EIDRM);
0073     T_STRERROR_CASE(EILSEQ);
0074     T_STRERROR_CASE(EINPROGRESS);
0075     T_STRERROR_CASE(EINTR);
0076     T_STRERROR_CASE(EINVAL);
0077     T_STRERROR_CASE(EIO);
0078     T_STRERROR_CASE(EISCONN);
0079     T_STRERROR_CASE(EISDIR);
0080     T_STRERROR_CASE(ELOOP);
0081     T_STRERROR_CASE(EMFILE);
0082     T_STRERROR_CASE(EMLINK);
0083     T_STRERROR_CASE(EMSGSIZE);
0084     T_STRERROR_CASE(EMULTIHOP);
0085     T_STRERROR_CASE(ENAMETOOLONG);
0086     T_STRERROR_CASE(ENETDOWN);
0087     T_STRERROR_CASE(ENETRESET);
0088     T_STRERROR_CASE(ENETUNREACH);
0089     T_STRERROR_CASE(ENFILE);
0090     T_STRERROR_CASE(ENOBUFS);
0091 #ifdef ENODATA
0092     T_STRERROR_CASE(ENODATA);
0093 #endif
0094     T_STRERROR_CASE(ENODEV);
0095     T_STRERROR_CASE(ENOENT);
0096     T_STRERROR_CASE(ENOEXEC);
0097     T_STRERROR_CASE(ENOLCK);
0098     T_STRERROR_CASE(ENOLINK);
0099     T_STRERROR_CASE(ENOMEM);
0100     T_STRERROR_CASE(ENOMSG);
0101     T_STRERROR_CASE(ENOPROTOOPT);
0102     T_STRERROR_CASE(ENOSPC);
0103 #ifdef ENOSR
0104     T_STRERROR_CASE(ENOSR);
0105 #endif
0106 #ifdef ENOSTR
0107     T_STRERROR_CASE(ENOSTR);
0108 #endif
0109     T_STRERROR_CASE(ENOSYS);
0110     T_STRERROR_CASE(ENOTCONN);
0111     T_STRERROR_CASE(ENOTDIR);
0112     T_STRERROR_CASE(ENOTEMPTY);
0113     T_STRERROR_CASE(ENOTRECOVERABLE);
0114     T_STRERROR_CASE(ENOTSOCK);
0115 #if ENOTSUP != EOPNOTSUPP
0116     T_STRERROR_CASE(ENOTSUP);
0117 #endif
0118     T_STRERROR_CASE(ENOTTY);
0119     T_STRERROR_CASE(ENXIO);
0120     T_STRERROR_CASE(EOPNOTSUPP);
0121     T_STRERROR_CASE(EOVERFLOW);
0122     T_STRERROR_CASE(EOWNERDEAD);
0123     T_STRERROR_CASE(EPERM);
0124     T_STRERROR_CASE(EPFNOSUPPORT);
0125     T_STRERROR_CASE(EPIPE);
0126     T_STRERROR_CASE(EPROTO);
0127     T_STRERROR_CASE(EPROTONOSUPPORT);
0128     T_STRERROR_CASE(EPROTOTYPE);
0129     T_STRERROR_CASE(ERANGE);
0130     T_STRERROR_CASE(EROFS);
0131     T_STRERROR_CASE(ESPIPE);
0132     T_STRERROR_CASE(ESRCH);
0133     T_STRERROR_CASE(ESTALE);
0134 #ifdef ETIME
0135     T_STRERROR_CASE(ETIME);
0136 #endif
0137     T_STRERROR_CASE(ETIMEDOUT);
0138     T_STRERROR_CASE(ETOOMANYREFS);
0139     T_STRERROR_CASE(ETXTBSY);
0140     T_STRERROR_CASE(EXDEV);
0141     default:
0142         return "?";
0143     }
0144 }
0145 
0146 void T_check_eno(const T_check_context *t, int a, int e)
0147 {
0148     T_check(t, a == e, "%s == %s", T_strerror(a), T_strerror(e));
0149 }
0150 
0151 void T_check_eno_success(const T_check_context *t, int a)
0152 {
0153     T_check_eno(t, a, 0);
0154 }