Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. /* Copyright (C) 2021 Logaev Maxim (turbocat2001), GPLv2 */
  2.  
  3. #include <string.h>
  4. #include <errno.h>
  5.  
  6. int errno;
  7.  
  8. char* strerror(int err)
  9. {
  10.     char *msg;
  11.     switch(err){
  12.         case 0:            msg = "No errors"; break;
  13.         case EPERM:        msg = "Operation not permitted"; break;
  14.         case ENOENT:       msg = "No such file or directory"; break;
  15.         case ESRCH:        msg = "No such process"; break;
  16.         case EINTR:        msg = "Interrupted system call"; break;
  17.         case EIO:          msg = "Input/output error"; break;
  18.         case ENXIO:        msg = "Device not configured"; break;
  19.         case E2BIG:        msg = "Argument list too long"; break;
  20.         case ENOEXEC:      msg = "Exec format error"; break;
  21.         case EBADF:        msg = "Bad file descriptor"; break;
  22.         case ECHILD:       msg = "No child processes"; break;
  23.         case EDEADLK:      msg = "Resource deadlock avoided"; break;
  24.         case ENOMEM:       msg = "Cannot allocate memory"; break;
  25.         case EACCES:       msg = "Permission denied"; break;
  26.         case EFAULT:       msg = "Bad address"; break;
  27.         case ENOTBLK:      msg = "Block device required"; break;
  28.         case EBUSY:        msg = "Device / Resource busy"; break;
  29.         case EEXIST:       msg = "File exists"; break;
  30.         case EXDEV:        msg =  "Cross-device link"; break;
  31.         case ENODEV:       msg = "Operation not supported by device"; break;
  32.         case ENOTDIR:      msg = "Not a directory"; break;
  33.         case EISDIR:       msg = "Is a directory"; break;
  34.         case EINVAL:       msg = "Invalid argument"; break;
  35.         case ENFILE:       msg = "Too many open files in system"; break;
  36.         case EMFILE:       msg = "Too many open files"; break;
  37.         case ENOTTY:       msg = "Inappropriate ioctl for device"; break;
  38.         case ETXTBSY:      msg = "Text file busy"; break;
  39.         case EFBIG:        msg = "File too large"; break;
  40.         case ENOSPC:       msg = "No space left on device"; break;
  41.         case ESPIPE:       msg = "Illegal seek"; break;
  42.         case EROFS:        msg = "Read-only file system"; break;
  43.         case EMLINK:       msg = "Too many links"; break;
  44.         case EPIPE:        msg = "Broken pipe"; break;
  45.  
  46.         // math software
  47.         case EDOM:         msg = "Numerical argument out of domain"; break;
  48.         case ERANGE:       msg = "Result too large"; break;
  49.  
  50.         // should be rearranged
  51.         case EHOSTDOWN:    msg = "Host is down"; break;
  52.         case EHOSTUNREACH: msg = "No route to host"; break;
  53.         case ENOTEMPTY:    msg = "Directory not empty"; break;
  54.  
  55.         // quotas & mush
  56.         case EPROCLIM:     msg = "Too many processes"; break;
  57.         case EUSERS:       msg = "Too many users"; break;
  58.         case EDQUOT:       msg = "Disc quota exceeded"; break;
  59.  
  60.         // Intelligent device errors
  61.         case EPWROFF:      msg = "Device power is off"; break;
  62.         case EDEVERR:      msg = "Device error, e.g. paper out"; break;
  63.         case EOVERFLOW:    msg = "Value too large to be stored in data type"; break;
  64.  
  65.         // Socket errors
  66.         case ENOBUFS:      msg = "Broken buffer"; break;
  67.         case EINPROGRESS:  msg = "Operation now in progress"; break;
  68.         case EOPNOTSUPP:   msg = "Operation not supported on transport endpoint"; break;
  69.         case EWOULDBLOCK:  msg = "Operation would block"; break;
  70.         case ENOTCONN:     msg = "Transport endpoint is not connected"; break;
  71.         case EALREADY:     msg = "Operation already in progress"; break;
  72.         case EMSGSIZE:     msg = "Message too long"; break;
  73.         case EADDRINUSE:   msg = "Address already in use"; break;
  74.         case ECONNREFUSED: msg = "Connection refused"; break;
  75.         case ECONNRESET:   msg = "Connection reset by peer"; break;
  76.         case EISCONN:      msg = "Transport endpoint is already connected"; break;
  77.         case ETIMEDOUT:    msg = "Connection timed out"; break;
  78.         case ECONNABORTED: msg = "Software caused connection abort"; break;
  79.         default:           msg = "Unknown error"; break;
  80.     }
  81.     return msg;
  82. }
  83.