1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/os/ossrv/genericopenlibs/cstdlib/LSTDIO/STRERROR.C Fri Jun 15 03:10:57 2012 +0200
1.3 @@ -0,0 +1,267 @@
1.4 +/*
1.5 +* Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
1.6 +* All rights reserved.
1.7 +* This component and the accompanying materials are made available
1.8 +* under the terms of "Eclipse Public License v1.0"
1.9 +* which accompanies this distribution, and is available
1.10 +* at the URL "http://www.eclipse.org/legal/epl-v10.html".
1.11 +*
1.12 +* Initial Contributors:
1.13 +* Nokia Corporation - initial contribution.
1.14 +*
1.15 +* Contributors:
1.16 +*
1.17 +* Description:
1.18 +* *** CAUTION!!! KEEP DOC CONSISTENT---if you change text of a message
1.19 +* *** here, change two places:
1.20 +* *** 1) the leading doc section (alphabetized by macro)
1.21 +* *** 2) the real text inside switch(errnum)
1.22 +* FUNCTION
1.23 +* <<strerror>>---convert error number to string
1.24 +* INDEX
1.25 +* strerror
1.26 +* ANSI_SYNOPSIS
1.27 +* #include <string.h>
1.28 +* char *strerror(int <[errnum]>);
1.29 +* TRAD_SYNOPSIS
1.30 +* #include <string.h>
1.31 +* char *strerror(<[errnum]>)
1.32 +* int <[errnum]>;
1.33 +* <<strerror>> converts the error number <[errnum]> into a
1.34 +* string. The value of <[errnum]> is usually a copy of <<errno>>.
1.35 +* If <<errnum>> is not a known error number, the result points to an
1.36 +* empty string.
1.37 +* RETURNS
1.38 +* This function returns a pointer to a string. Your application must
1.39 +* not modify that string.
1.40 +* PORTABILITY
1.41 +* ANSI C requires <<strerror>>, but does not specify the strings used
1.42 +* for each error number.
1.43 +* Although this implementation of <<strerror>> is reentrant, ANSI C
1.44 +* declares that subsequent calls to <<strerror>> may overwrite the
1.45 +* result string; therefore portable code cannot depend on the reentrancy
1.46 +* of this subroutine.
1.47 +* <<strerror>> requires no supporting OS subroutines.
1.48 +* QUICKREF
1.49 +* strerror ansi pure
1.50 +*
1.51 +*
1.52 +*/
1.53 +
1.54 +
1.55 +
1.56 +#include <errno.h>
1.57 +#include <string.h>
1.58 +
1.59 +/**
1.60 +Get pointer to error message string.
1.61 +Returns a pointer to a string with the error message
1.62 +corresponding to the errnum error number.
1.63 +The returned pointer points to a statically allocated string.
1.64 +Further calls to this function will overwrite its content.
1.65 +@param errnum Error number.
1.66 +*/
1.67 +EXPORT_C char *
1.68 +strerror (int errnum)
1.69 +{
1.70 + char *error;
1.71 +
1.72 + switch (errnum)
1.73 + {
1.74 + case EPERM:
1.75 + error = "Not owner";
1.76 + break;
1.77 + case ENOENT:
1.78 + error = "No such file or directory";
1.79 + break;
1.80 + case ESRCH:
1.81 + error = "No such process";
1.82 + break;
1.83 + case EINTR:
1.84 + error = "Interrupted system call";
1.85 + break;
1.86 + case EIO:
1.87 + error = "I/O error";
1.88 + break;
1.89 + case ENXIO:
1.90 + error = "No such device or address";
1.91 + break;
1.92 + case E2BIG:
1.93 + error = "Arg list too long";
1.94 + break;
1.95 + case ENOEXEC:
1.96 + error = "Exec format error";
1.97 + break;
1.98 + case EBADF:
1.99 + error = "Bad file number";
1.100 + break;
1.101 + case ECHILD:
1.102 + error = "No children";
1.103 + break;
1.104 + case EAGAIN:
1.105 + error = "No more processes";
1.106 + break;
1.107 + case ENOMEM:
1.108 + error = "Not enough space";
1.109 + break;
1.110 + case EACCES:
1.111 + error = "Permission denied";
1.112 + break;
1.113 + case EFAULT:
1.114 + error = "Bad address";
1.115 + break;
1.116 + case ENOTBLK:
1.117 + error = "Block device required";
1.118 + break;
1.119 + case EBUSY:
1.120 + error = "Device or resource busy";
1.121 + break;
1.122 + case EEXIST:
1.123 + error = "File exists";
1.124 + break;
1.125 + case EXDEV:
1.126 + error = "Cross-device link";
1.127 + break;
1.128 + case ENODEV:
1.129 + error = "No such device";
1.130 + break;
1.131 + case ENOTDIR:
1.132 + error = "Not a directory";
1.133 + break;
1.134 + case EISDIR:
1.135 + error = "Is a directory";
1.136 + break;
1.137 + case EINVAL:
1.138 + error = "Invalid argument";
1.139 + break;
1.140 + case ENFILE:
1.141 + error = "Too many open files in system";
1.142 + break;
1.143 + case EMFILE:
1.144 + error = "Too many open files";
1.145 + break;
1.146 + case ENOTTY:
1.147 + error = "Not a character device";
1.148 + break;
1.149 + case ETXTBSY:
1.150 + error = "Text file busy";
1.151 + break;
1.152 + case EFBIG:
1.153 + error = "File too large";
1.154 + break;
1.155 + case ENOSPC:
1.156 + error = "No space left on device";
1.157 + break;
1.158 + case ESPIPE:
1.159 + error = "Illegal seek";
1.160 + break;
1.161 + case EROFS:
1.162 + error = "Read-only file system";
1.163 + break;
1.164 + case EMLINK:
1.165 + error = "Too many links";
1.166 + break;
1.167 + case EPIPE:
1.168 + error = "Broken pipe";
1.169 + break;
1.170 + case EDOM:
1.171 + error = "Math argument";
1.172 + break;
1.173 + case ERANGE:
1.174 + error = "Result too large";
1.175 + break;
1.176 + case ENOMSG:
1.177 + error = "No message of desired type";
1.178 + break;
1.179 + case EIDRM:
1.180 + error = "Identifier removed";
1.181 + break;
1.182 + case EDEADLK:
1.183 + error = "Deadlock";
1.184 + break;
1.185 + case ENOLCK:
1.186 + error = "No lock";
1.187 + break;
1.188 + case ENOTSOCK: error = "Not a socket"; break;
1.189 + case EADDRNOTAVAIL: error = "Remote address not available"; break;
1.190 + case EAFNOSUPPORT: error = "Address not supported by protocol"; break;
1.191 + case EISCONN: error = "Socket already connected"; break;
1.192 + case ECONNREFUSED: error = "Connection refused by remote host"; break;
1.193 + case EADDRINUSE: error = "Address already in use"; break;
1.194 + case ETIMEDOUT: error = "Connection timed out"; break;
1.195 + case ENOSTR:
1.196 + error = "Not a stream";
1.197 + break;
1.198 + case ETIME:
1.199 + error = "Stream ioctl timeout";
1.200 + break;
1.201 + case ENOSR:
1.202 + error = "No stream resources";
1.203 + break;
1.204 + case ENONET:
1.205 + error = "Machine is not on the network";
1.206 + break;
1.207 + case ENOPKG:
1.208 + error = "No package";
1.209 + break;
1.210 + case EREMOTE:
1.211 + error = "Resource is remote";
1.212 + break;
1.213 + case ENOLINK:
1.214 + error = "Virtual circuit is gone";
1.215 + break;
1.216 + case EADV:
1.217 + error = "Advertise error";
1.218 + break;
1.219 + case ESRMNT:
1.220 + error = "Srmount error";
1.221 + break;
1.222 + case ECOMM:
1.223 + error = "Communication error";
1.224 + break;
1.225 + case EPROTO:
1.226 + error = "Protocol error";
1.227 + break;
1.228 + case EMULTIHOP:
1.229 + error = "Multihop attempted";
1.230 + break;
1.231 + case EBADMSG:
1.232 + error = "Bad message";
1.233 + break;
1.234 + case ELIBACC:
1.235 + error = "Cannot access a needed shared library";
1.236 + break;
1.237 + case ELIBBAD:
1.238 + error = "Accessing a corrupted shared library";
1.239 + break;
1.240 + case ELIBSCN:
1.241 + error = ".lib section in a.out corrupted";
1.242 + break;
1.243 + case ELIBMAX:
1.244 + error = "Attempting to link in more shared libraries than system limit";
1.245 + break;
1.246 + case ELIBEXEC:
1.247 + error = "Cannot exec a shared library directly";
1.248 + break;
1.249 + case ENOSYS:
1.250 + error = "Function not implemented";
1.251 + break;
1.252 + case ENMFILE:
1.253 + error = "No more files";
1.254 + break;
1.255 + case ENOTEMPTY:
1.256 + error = "Directory not empty";
1.257 + break;
1.258 + case ENAMETOOLONG:
1.259 + error = "File or path name too long";
1.260 + break;
1.261 + case EILSEQ:
1.262 + error = "invalid wide-character encoding";
1.263 + break;
1.264 + default:
1.265 + error = "";
1.266 + break;
1.267 + }
1.268 +
1.269 + return error;
1.270 +}