unix/src/linux/Uerror.i3


Copyright (C) 1994, Digital Equipment Corp.
constant values taken from /usr/include/linux/errno.h on Slackware 1.2 Linux box -- sims@usa.acsys.com Altered for Linux 1.1.73 with libc 4.5.26 by rrw1000@cam.ac.uk

INTERFACE Uerror;

FROM Ctypes IMPORT int, char_star;
** <errno.h> **

CONST
  EPERM           = 1;    (* Not owner / operation not permitted  *)
  ENOENT          = 2;    (* No such file or directory *)
  ESRCH           = 3;    (* No such process *)
  EINTR           = 4;    (* Interrupted system call *)
  EIO             = 5;    (* I/O error *)
  ENXIO           = 6;    (* No such device or address *)
  E2BIG           = 7;    (* Arg list too long *)
  ENOEXEC         = 8;    (* Exec format error *)
  EBADF           = 9;    (* Bad file number *)
  ECHILD          = 10;   (* No children *)
  EAGAIN          = 11;   (* No more processes *)
  ENOMEM          = 12;   (* Not enough core *)
  EACCES          = 13;   (* Permission denied *)
  EFAULT          = 14;   (* Bad address *)
  ENOTBLK         = 15;   (* Block device required *)
  EBUSY           = 16;   (* Mount device busy *)
  EEXIST          = 17;   (* File exists *)
  EXDEV           = 18;   (* Cross-device link *)
  ENODEV          = 19;   (* No such device *)
  ENOTDIR         = 20;   (* Not a directory*)
  EISDIR          = 21;   (* Is a directory *)
  EINVAL          = 22;   (* Invalid argument *)
  ENFILE          = 23;   (* File table overflow *)
  EMFILE          = 24;   (* Too many open files *)
  ENOTTY          = 25;   (* Not a typewriter *)
  ETXTBSY         = 26;   (* Text file busy *)
  EFBIG           = 27;   (* File too large *)
  ENOSPC          = 28;   (* No space left on device *)
  ESPIPE          = 29;   (* Illegal seek *)
  EROFS           = 30;   (* Read-only file system *)
  EMLINK          = 31;   (* Too many links *)
  EPIPE           = 32;   (* Broken pipe *)

   (* math software *)
  EDOM            = 33;   (* Argument too large *)
  ERANGE          = 34;   (* Result too large *)

  EDEADLK         = 35;   (* resource deadlock would occur *)
  ENAMETOOLONG    = 36;   (* File name too long *)
  ENOLCK          = 37;   (* No record locks available *)
  ENOSYS          = 38;   (* Function not implemented *)
  ENOTEMPTY       = 39;   (* Directory not empty *)
  ELOOP           = 40;   (* Too many levels of symbolic links *)

   (* Non-blocking I/O  and IPC errors *)
  EWOULDBLOCK     = 11;   (* Operation would block *) (* Defined as EAGAIN, not
                             41 under 1.1.73 *)
  ENOMSG          = 42;   (* No message of desired type *)
  EIDRM           = 43;   (* Identifier removed *)
  ECHRNG          = 44;   (* Channel number out of range *)
  EL2NSYNC        = 45;   (* Level 2 not synchronized *)
  EL3HLT          = 46;   (* Level 3 halted *)
  EL3RST          = 47;   (* Level 3 reset *)
  ELNRNG          = 48;   (* Link number out of range *)
  EUNATCH         = 49;   (* Protocol driver not attached *)
  ENOCSI          = 50;   (* No CSI structure available *)
  EL2HLT          = 51;   (* Level 2 halted *)
  EBADE           = 52;   (* Invalid exchange *)
  EBADR           = 53;   (* Invalid request descriptor *)
  EXFULL          = 54;   (* Exchange full *)
  ENOANO          = 55;   (* No anode *)
  EBADRQC         = 56;   (* Invalid request code *)
  EBADSLT         = 57;   (* Invalid slot *)
  EDEADLOCK       = 58;   (* File locking deadlock error *)
  EBFONT          = 59;   (* Bad font file format *)
  ENOSTR          = 60;   (* Device not a stream *)
  ENODATA         = 61;   (* No data available *)
  ETIME           = 62;   (* Timer expired *)
  ENOSR           = 63;   (* Out of streams resources *)
  ENONET          = 64;   (* Machine is not on the network *)
  ENOPKG          = 65;   (* Package not installed *)
  EREMOTE         = 66;   (* Object is remote *)
  ENOLINK         = 67;   (* Link has been severed *)
  EADV            = 68;   (* Advertise error *)
  ESRMNT          = 69;   (* Srmount error *)
  ECOMM           = 70;   (* Communication error on send *)
  EPROTO          = 71;   (* Protocol error *)
  EMULTIHOP       = 72;   (* Multihop attempted *)
  EDOTDOT         = 73;   (* RFS specific error *)
  EBADMSG         = 74;   (* Not a data message *)
  EOVERFLOW       = 75;   (* Value too large for defined data type *)
  ENOTUNIQ        = 76;   (* Name not unique on network *)
  EBADFD          = 77;   (* File descriptor in bad state *)
  EREMCHG         = 78;   (* Remote address changed *)
  ELIBACC         = 79;   (* Can not access a needed shared library *)
  ELIBBAD         = 80;   (* Accessing a corrupted shared library *)
  ELIBSCN         = 81;   (* .lib section in a.out corrupted *)
  ELIBMAX         = 82;   (* Attempting to link in too many shared libraries *)
  ELIBEXEC        = 83;   (* Cannot exec a shared library directly *)
  EILSEQ          = 84;   (* Illegal byte sequence *)
  ERESTART        = 85;   (* Interrupted system call should be restarted *)

  (* ipc/network software *)
        (* argument errors *)
  ESTRPIPE        = 86;   (* Streams pipe error *)
  EUSERS          = 87;   (* Too many users *)
  ENOTSOCK        = 88;   (* Socket operation on non-socket *)
  EDESTADDRREQ    = 89;   (* Destination address required *)
  EMSGSIZE        = 90;   (* Message too long *)
  EPROTOTYPE      = 91;   (* Protocol wrong type for socket *)
  ENOPROTOOPT     = 92;   (* Protocol not available *)
  EPROTONOSUPPORT = 93;   (* Protocol not supported *)
  ESOCKTNOSUPPORT = 94;   (* Socket type not supported *)
  EOPNOTSUPP      = 95;   (* Operation not supported on socket *)
  EPFNOSUPPORT    = 96;   (* Protocol family not supported *)
  EAFNOSUPPORT    = 97;   (* Address family not supported by protocol family *)
  EADDRINUSE      = 98;   (* Address already in use *)
  EADDRNOTAVAIL   = 99;   (* Can't assign requested address *)

   (* operational errors *)
  ENETDOWN        = 100;   (* Network is down *)
  ENETUNREACH     = 101;   (* Network is unreachable *)
  ENETRESET       = 102;   (* Network dropped connection because of reset *)
  ECONNABORTED    = 103;   (* Software caused connection abort *)
  ECONNRESET      = 104;   (* Connection reset by peer *)
  ENOBUFS         = 105;   (* No buffer space available *)
  EISCONN         = 106;   (* Transport endpoint is already connected *)
  ENOTCONN        = 107;   (* Transport endpoint is not connected *)
  ESHUTDOWN       = 108;   (* Can't send after transport endpoint shutdown *)
  ETOOMANYREFS    = 109;   (* Too many references: can't splice *)
  ETIMEDOUT       = 110;   (* Connection timed out *)
  ECONNREFUSED    = 111;   (* Connection refused *)
  EHOSTDOWN       = 112;   (* Host is down *)
  EHOSTUNREACH    = 113;   (* No route to host *)
  EALREADY        = 114;   (* Operation already in progress *)
  EINPROGRESS     = 115;   (* Operation now in progress *)

  (* misc. FS errors *)
  ESTALE          = 116;   (* Stale NFS file handle *)
  EUCLEAN         = 117;   (* Structure needs cleaning *)
  ENOTNAM         = 118;   (* Not a XENIX named type file *)
  ENAVAIL         = 119;   (* No XENIX semaphores available *)
  EISNAM          = 120;   (* Is a named type file *)
  EREMOTEIO       = 121;   (* Remote I/O error *)
  EDQUOT          = 122;   (* Disc quota exceeded *)

  (* Should never be seen by user programs *)
  ERESTARTSYS     = 512;
  ERESTARTNOINTR  = 513;
  ERESTARTNOHAND  = 514;   (* restart if no handler.. *)
  ENOIOCTLCMD     = 515;   (* Present in Linux 1.1.73 *)

<*EXTERNAL*>
VAR
  errno: int;
Extension by mjordan
CONST
  Max = EDQUOT; (* should be exported from Uerror *)

<*EXTERNAL*>
VAR
  sys_nerr: int;
  sys_errlist: ARRAY [0..Max] OF char_star;

PROCEDURE GetFrom_sys_errlist(n: INTEGER): char_star RAISES {};
returns entry 'n' of the 'sys_errlist' array; a checked runtime error unless 0 <= n <= sys_nerr. Its safer and more portable to use this procedure than to access the array directly.

END Uerror.

Uerror's implementation is in:


procedure Uerror.GetFrom_sys_errlist is in: