diff -r 000000000000 -r e4d67989cc36 genericopenlibs/cstdlib/LSTDIO/STRERROR.C --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/genericopenlibs/cstdlib/LSTDIO/STRERROR.C Tue Feb 02 02:01:42 2010 +0200 @@ -0,0 +1,267 @@ +/* +* Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* *** CAUTION!!! KEEP DOC CONSISTENT---if you change text of a message +* *** here, change two places: +* *** 1) the leading doc section (alphabetized by macro) +* *** 2) the real text inside switch(errnum) +* FUNCTION +* <>---convert error number to string +* INDEX +* strerror +* ANSI_SYNOPSIS +* #include +* char *strerror(int <[errnum]>); +* TRAD_SYNOPSIS +* #include +* char *strerror(<[errnum]>) +* int <[errnum]>; +* <> converts the error number <[errnum]> into a +* string. The value of <[errnum]> is usually a copy of <>. +* If <> is not a known error number, the result points to an +* empty string. +* RETURNS +* This function returns a pointer to a string. Your application must +* not modify that string. +* PORTABILITY +* ANSI C requires <>, but does not specify the strings used +* for each error number. +* Although this implementation of <> is reentrant, ANSI C +* declares that subsequent calls to <> may overwrite the +* result string; therefore portable code cannot depend on the reentrancy +* of this subroutine. +* <> requires no supporting OS subroutines. +* QUICKREF +* strerror ansi pure +* +* +*/ + + + +#include +#include + +/** +Get pointer to error message string. +Returns a pointer to a string with the error message +corresponding to the errnum error number. +The returned pointer points to a statically allocated string. +Further calls to this function will overwrite its content. +@param errnum Error number. +*/ +EXPORT_C char * +strerror (int errnum) +{ + char *error; + + switch (errnum) + { + case EPERM: + error = "Not owner"; + break; + case ENOENT: + error = "No such file or directory"; + break; + case ESRCH: + error = "No such process"; + break; + case EINTR: + error = "Interrupted system call"; + break; + case EIO: + error = "I/O error"; + break; + case ENXIO: + error = "No such device or address"; + break; + case E2BIG: + error = "Arg list too long"; + break; + case ENOEXEC: + error = "Exec format error"; + break; + case EBADF: + error = "Bad file number"; + break; + case ECHILD: + error = "No children"; + break; + case EAGAIN: + error = "No more processes"; + break; + case ENOMEM: + error = "Not enough space"; + break; + case EACCES: + error = "Permission denied"; + break; + case EFAULT: + error = "Bad address"; + break; + case ENOTBLK: + error = "Block device required"; + break; + case EBUSY: + error = "Device or resource busy"; + break; + case EEXIST: + error = "File exists"; + break; + case EXDEV: + error = "Cross-device link"; + break; + case ENODEV: + error = "No such device"; + break; + case ENOTDIR: + error = "Not a directory"; + break; + case EISDIR: + error = "Is a directory"; + break; + case EINVAL: + error = "Invalid argument"; + break; + case ENFILE: + error = "Too many open files in system"; + break; + case EMFILE: + error = "Too many open files"; + break; + case ENOTTY: + error = "Not a character device"; + break; + case ETXTBSY: + error = "Text file busy"; + break; + case EFBIG: + error = "File too large"; + break; + case ENOSPC: + error = "No space left on device"; + break; + case ESPIPE: + error = "Illegal seek"; + break; + case EROFS: + error = "Read-only file system"; + break; + case EMLINK: + error = "Too many links"; + break; + case EPIPE: + error = "Broken pipe"; + break; + case EDOM: + error = "Math argument"; + break; + case ERANGE: + error = "Result too large"; + break; + case ENOMSG: + error = "No message of desired type"; + break; + case EIDRM: + error = "Identifier removed"; + break; + case EDEADLK: + error = "Deadlock"; + break; + case ENOLCK: + error = "No lock"; + break; + case ENOTSOCK: error = "Not a socket"; break; + case EADDRNOTAVAIL: error = "Remote address not available"; break; + case EAFNOSUPPORT: error = "Address not supported by protocol"; break; + case EISCONN: error = "Socket already connected"; break; + case ECONNREFUSED: error = "Connection refused by remote host"; break; + case EADDRINUSE: error = "Address already in use"; break; + case ETIMEDOUT: error = "Connection timed out"; break; + case ENOSTR: + error = "Not a stream"; + break; + case ETIME: + error = "Stream ioctl timeout"; + break; + case ENOSR: + error = "No stream resources"; + break; + case ENONET: + error = "Machine is not on the network"; + break; + case ENOPKG: + error = "No package"; + break; + case EREMOTE: + error = "Resource is remote"; + break; + case ENOLINK: + error = "Virtual circuit is gone"; + break; + case EADV: + error = "Advertise error"; + break; + case ESRMNT: + error = "Srmount error"; + break; + case ECOMM: + error = "Communication error"; + break; + case EPROTO: + error = "Protocol error"; + break; + case EMULTIHOP: + error = "Multihop attempted"; + break; + case EBADMSG: + error = "Bad message"; + break; + case ELIBACC: + error = "Cannot access a needed shared library"; + break; + case ELIBBAD: + error = "Accessing a corrupted shared library"; + break; + case ELIBSCN: + error = ".lib section in a.out corrupted"; + break; + case ELIBMAX: + error = "Attempting to link in more shared libraries than system limit"; + break; + case ELIBEXEC: + error = "Cannot exec a shared library directly"; + break; + case ENOSYS: + error = "Function not implemented"; + break; + case ENMFILE: + error = "No more files"; + break; + case ENOTEMPTY: + error = "Directory not empty"; + break; + case ENAMETOOLONG: + error = "File or path name too long"; + break; + case EILSEQ: + error = "invalid wide-character encoding"; + break; + default: + error = ""; + break; + } + + return error; +}