Better Unix errors
							parent
							
								
									70e89b5166
								
							
						
					
					
						commit
						bf01d85e12
					
				| 
						 | 
				
			
			@ -48,10 +48,6 @@ C-STRUCT: sockaddr-un
 | 
			
		|||
 | 
			
		||||
: max-un-path 104 ; inline
 | 
			
		||||
 | 
			
		||||
: EINTR HEX: 4 ; inline
 | 
			
		||||
: EAGAIN HEX: 23 ; inline
 | 
			
		||||
: EINPROGRESS HEX: 24 ; inline
 | 
			
		||||
 | 
			
		||||
: SOCK_STREAM 1 ; inline
 | 
			
		||||
: SOCK_DGRAM 2 ; inline
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,3 +12,98 @@ C-STRUCT: addrinfo
 | 
			
		|||
    { "char*" "canonname" }
 | 
			
		||||
    { "void*" "addr" }
 | 
			
		||||
    { "addrinfo*" "next" } ;
 | 
			
		||||
 | 
			
		||||
: EPERM 1 ; inline
 | 
			
		||||
: ENOENT 2 ; inline
 | 
			
		||||
: ESRCH 3 ; inline
 | 
			
		||||
: EINTR 4 ; inline
 | 
			
		||||
: EIO 5 ; inline
 | 
			
		||||
: ENXIO 6 ; inline
 | 
			
		||||
: E2BIG 7 ; inline
 | 
			
		||||
: ENOEXEC 8 ; inline
 | 
			
		||||
: EBADF 9 ; inline
 | 
			
		||||
: ECHILD 10 ; inline
 | 
			
		||||
: EDEADLK 11 ; inline
 | 
			
		||||
: ENOMEM 12 ; inline
 | 
			
		||||
: EACCES 13 ; inline
 | 
			
		||||
: EFAULT 14 ; inline
 | 
			
		||||
: ENOTBLK 15 ; inline
 | 
			
		||||
: EBUSY 16 ; inline
 | 
			
		||||
: EEXIST 17 ; inline
 | 
			
		||||
: EXDEV 18 ; inline
 | 
			
		||||
: ENODEV 19 ; inline
 | 
			
		||||
: ENOTDIR 20 ; inline
 | 
			
		||||
: EISDIR 21 ; inline
 | 
			
		||||
: EINVAL 22 ; inline
 | 
			
		||||
: ENFILE 23 ; inline
 | 
			
		||||
: EMFILE 24 ; inline
 | 
			
		||||
: ENOTTY 25 ; inline
 | 
			
		||||
: ETXTBSY 26 ; inline
 | 
			
		||||
: EFBIG 27 ; inline
 | 
			
		||||
: ENOSPC 28 ; inline
 | 
			
		||||
: ESPIPE 29 ; inline
 | 
			
		||||
: EROFS 30 ; inline
 | 
			
		||||
: EMLINK 31 ; inline
 | 
			
		||||
: EPIPE 32 ; inline
 | 
			
		||||
: EDOM 33 ; inline
 | 
			
		||||
: ERANGE 34 ; inline
 | 
			
		||||
: EAGAIN 35 ; inline
 | 
			
		||||
: EWOULDBLOCK EAGAIN ; inline
 | 
			
		||||
: EINPROGRESS 36 ; inline
 | 
			
		||||
: EALREADY 37 ; inline
 | 
			
		||||
: ENOTSOCK 38 ; inline
 | 
			
		||||
: EDESTADDRREQ 39 ; inline
 | 
			
		||||
: EMSGSIZE 40 ; inline
 | 
			
		||||
: EPROTOTYPE 41 ; inline
 | 
			
		||||
: ENOPROTOOPT 42 ; inline
 | 
			
		||||
: EPROTONOSUPPORT 43 ; inline
 | 
			
		||||
: ESOCKTNOSUPPORT 44 ; inline
 | 
			
		||||
: EOPNOTSUPP 45 ; inline
 | 
			
		||||
: ENOTSUP EOPNOTSUPP ; inline
 | 
			
		||||
: EPFNOSUPPORT 46 ; inline
 | 
			
		||||
: EAFNOSUPPORT 47 ; inline
 | 
			
		||||
: EADDRINUSE 48 ; inline
 | 
			
		||||
: EADDRNOTAVAIL 49 ; inline
 | 
			
		||||
: ENETDOWN 50 ; inline
 | 
			
		||||
: ENETUNREACH 51 ; inline
 | 
			
		||||
: ENETRESET 52 ; inline
 | 
			
		||||
: ECONNABORTED 53 ; inline
 | 
			
		||||
: ECONNRESET 54 ; inline
 | 
			
		||||
: ENOBUFS 55 ; inline
 | 
			
		||||
: EISCONN 56 ; inline
 | 
			
		||||
: ENOTCONN 57 ; inline
 | 
			
		||||
: ESHUTDOWN 58 ; inline
 | 
			
		||||
: ETOOMANYREFS 59 ; inline
 | 
			
		||||
: ETIMEDOUT 60 ; inline
 | 
			
		||||
: ECONNREFUSED 61 ; inline
 | 
			
		||||
: ELOOP 62 ; inline
 | 
			
		||||
: ENAMETOOLONG 63 ; inline
 | 
			
		||||
: EHOSTDOWN 64 ; inline
 | 
			
		||||
: EHOSTUNREACH 65 ; inline
 | 
			
		||||
: ENOTEMPTY 66 ; inline
 | 
			
		||||
: EPROCLIM 67 ; inline
 | 
			
		||||
: EUSERS 68 ; inline
 | 
			
		||||
: EDQUOT 69 ; inline
 | 
			
		||||
: ESTALE 70 ; inline
 | 
			
		||||
: EREMOTE 71 ; inline
 | 
			
		||||
: EBADRPC 72 ; inline
 | 
			
		||||
: ERPCMISMATCH 73 ; inline
 | 
			
		||||
: EPROGUNAVAIL 74 ; inline
 | 
			
		||||
: EPROGMISMATCH 75 ; inline
 | 
			
		||||
: EPROCUNAVAIL 76 ; inline
 | 
			
		||||
: ENOLCK 77 ; inline
 | 
			
		||||
: ENOSYS 78 ; inline
 | 
			
		||||
: EFTYPE 79 ; inline
 | 
			
		||||
: EAUTH 80 ; inline
 | 
			
		||||
: ENEEDAUTH 81 ; inline
 | 
			
		||||
: EIDRM 82 ; inline
 | 
			
		||||
: ENOMSG 83 ; inline
 | 
			
		||||
: EOVERFLOW 84 ; inline
 | 
			
		||||
: ECANCELED 85 ; inline
 | 
			
		||||
: EILSEQ 86 ; inline
 | 
			
		||||
: ENOATTR 87 ; inline
 | 
			
		||||
: EDOOFUS 88 ; inline
 | 
			
		||||
: EBADMSG 89 ; inline
 | 
			
		||||
: EMULTIHOP 90 ; inline
 | 
			
		||||
: ENOLINK 91 ; inline
 | 
			
		||||
: EPROTO 92 ; inline
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -25,3 +25,108 @@ C-STRUCT: passwd
 | 
			
		|||
    { "char*"  "pw_shell" }
 | 
			
		||||
    { "time_t" "pw_expire" }
 | 
			
		||||
    { "int"    "pw_fields" } ;
 | 
			
		||||
 | 
			
		||||
: EPERM 1 ; inline
 | 
			
		||||
: ENOENT 2 ; inline
 | 
			
		||||
: ESRCH 3 ; inline
 | 
			
		||||
: EINTR 4 ; inline
 | 
			
		||||
: EIO 5 ; inline
 | 
			
		||||
: ENXIO 6 ; inline
 | 
			
		||||
: E2BIG 7 ; inline
 | 
			
		||||
: ENOEXEC 8 ; inline
 | 
			
		||||
: EBADF 9 ; inline
 | 
			
		||||
: ECHILD 10 ; inline
 | 
			
		||||
: EDEADLK 11 ; inline
 | 
			
		||||
: ENOMEM 12 ; inline
 | 
			
		||||
: EACCES 13 ; inline
 | 
			
		||||
: EFAULT 14 ; inline
 | 
			
		||||
: ENOTBLK 15 ; inline
 | 
			
		||||
: EBUSY 16 ; inline
 | 
			
		||||
: EEXIST 17 ; inline
 | 
			
		||||
: EXDEV 18 ; inline
 | 
			
		||||
: ENODEV 19 ; inline
 | 
			
		||||
: ENOTDIR 20 ; inline
 | 
			
		||||
: EISDIR 21 ; inline
 | 
			
		||||
: EINVAL 22 ; inline
 | 
			
		||||
: ENFILE 23 ; inline
 | 
			
		||||
: EMFILE 24 ; inline
 | 
			
		||||
: ENOTTY 25 ; inline
 | 
			
		||||
: ETXTBSY 26 ; inline
 | 
			
		||||
: EFBIG 27 ; inline
 | 
			
		||||
: ENOSPC 28 ; inline
 | 
			
		||||
: ESPIPE 29 ; inline
 | 
			
		||||
: EROFS 30 ; inline
 | 
			
		||||
: EMLINK 31 ; inline
 | 
			
		||||
: EPIPE 32 ; inline
 | 
			
		||||
: EDOM 33 ; inline
 | 
			
		||||
: ERANGE 34 ; inline
 | 
			
		||||
: EAGAIN 35 ; inline
 | 
			
		||||
: EWOULDBLOCK EAGAIN ; inline
 | 
			
		||||
: EINPROGRESS 36 ; inline
 | 
			
		||||
: EALREADY 37 ; inline
 | 
			
		||||
: ENOTSOCK 38 ; inline
 | 
			
		||||
: EDESTADDRREQ 39 ; inline
 | 
			
		||||
: EMSGSIZE 40 ; inline
 | 
			
		||||
: EPROTOTYPE 41 ; inline
 | 
			
		||||
: ENOPROTOOPT 42 ; inline
 | 
			
		||||
: EPROTONOSUPPORT 43 ; inline
 | 
			
		||||
: ESOCKTNOSUPPORT 44 ; inline
 | 
			
		||||
: ENOTSUP 45 ; inline
 | 
			
		||||
: EPFNOSUPPORT 46 ; inline
 | 
			
		||||
: EAFNOSUPPORT 47 ; inline
 | 
			
		||||
: EADDRINUSE 48 ; inline
 | 
			
		||||
: EADDRNOTAVAIL 49 ; inline
 | 
			
		||||
: ENETDOWN 50 ; inline
 | 
			
		||||
: ENETUNREACH 51 ; inline
 | 
			
		||||
: ENETRESET 52 ; inline
 | 
			
		||||
: ECONNABORTED 53 ; inline
 | 
			
		||||
: ECONNRESET 54 ; inline
 | 
			
		||||
: ENOBUFS 55 ; inline
 | 
			
		||||
: EISCONN 56 ; inline
 | 
			
		||||
: ENOTCONN 57 ; inline
 | 
			
		||||
: ESHUTDOWN 58 ; inline
 | 
			
		||||
: ETOOMANYREFS 59 ; inline
 | 
			
		||||
: ETIMEDOUT 60 ; inline
 | 
			
		||||
: ECONNREFUSED 61 ; inline
 | 
			
		||||
: ELOOP 62 ; inline
 | 
			
		||||
: ENAMETOOLONG 63 ; inline
 | 
			
		||||
: EHOSTDOWN 64 ; inline
 | 
			
		||||
: EHOSTUNREACH 65 ; inline
 | 
			
		||||
: ENOTEMPTY 66 ; inline
 | 
			
		||||
: EPROCLIM 67 ; inline
 | 
			
		||||
: EUSERS 68 ; inline
 | 
			
		||||
: EDQUOT 69 ; inline
 | 
			
		||||
: ESTALE 70 ; inline
 | 
			
		||||
: EREMOTE 71 ; inline
 | 
			
		||||
: EBADRPC 72 ; inline
 | 
			
		||||
: ERPCMISMATCH 73 ; inline
 | 
			
		||||
: EPROGUNAVAIL 74 ; inline
 | 
			
		||||
: EPROGMISMATCH 75 ; inline
 | 
			
		||||
: EPROCUNAVAIL 76 ; inline
 | 
			
		||||
: ENOLCK 77 ; inline
 | 
			
		||||
: ENOSYS 78 ; inline
 | 
			
		||||
: EFTYPE 79 ; inline
 | 
			
		||||
: EAUTH 80 ; inline
 | 
			
		||||
: ENEEDAUTH 81 ; inline
 | 
			
		||||
: EPWROFF 82 ; inline
 | 
			
		||||
: EDEVERR 83 ; inline
 | 
			
		||||
: EOVERFLOW 84 ; inline
 | 
			
		||||
: EBADEXEC 85 ; inline
 | 
			
		||||
: EBADARCH 86 ; inline
 | 
			
		||||
: ESHLIBVERS 87 ; inline
 | 
			
		||||
: EBADMACHO 88 ; inline
 | 
			
		||||
: ECANCELED 89 ; inline
 | 
			
		||||
: EIDRM 90 ; inline
 | 
			
		||||
: ENOMSG 91 ; inline
 | 
			
		||||
: EILSEQ 92 ; inline
 | 
			
		||||
: ENOATTR 93 ; inline
 | 
			
		||||
: EBADMSG 94 ; inline
 | 
			
		||||
: EMULTIHOP 95 ; inline
 | 
			
		||||
: ENODATA 96 ; inline
 | 
			
		||||
: ENOLINK 97 ; inline
 | 
			
		||||
: ENOSR 98 ; inline
 | 
			
		||||
: ENOSTR 99 ; inline
 | 
			
		||||
: EPROTO 100 ; inline
 | 
			
		||||
: ETIME 101 ; inline
 | 
			
		||||
: EOPNOTSUPP 102 ; inline
 | 
			
		||||
: ENOPOLICY 103 ; inline
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,3 +12,102 @@ C-STRUCT: addrinfo
 | 
			
		|||
    { "char*" "canonname" }
 | 
			
		||||
    { "void*" "addr" }
 | 
			
		||||
    { "addrinfo*" "next" } ;
 | 
			
		||||
 | 
			
		||||
: EPERM 1 ; inline
 | 
			
		||||
: ENOENT 2 ; inline
 | 
			
		||||
: ESRCH 3 ; inline
 | 
			
		||||
: EINTR 4 ; inline
 | 
			
		||||
: EIO 5 ; inline
 | 
			
		||||
: ENXIO 6 ; inline
 | 
			
		||||
: E2BIG 7 ; inline
 | 
			
		||||
: ENOEXEC 8 ; inline
 | 
			
		||||
: EBADF 9 ; inline
 | 
			
		||||
: ECHILD 10 ; inline
 | 
			
		||||
: EDEADLK 11 ; inline
 | 
			
		||||
: ENOMEM 12 ; inline
 | 
			
		||||
: EACCES 13 ; inline
 | 
			
		||||
: EFAULT 14 ; inline
 | 
			
		||||
: ENOTBLK 15 ; inline
 | 
			
		||||
: EBUSY 16 ; inline
 | 
			
		||||
: EEXIST 17 ; inline
 | 
			
		||||
: EXDEV 18 ; inline
 | 
			
		||||
: ENODEV 19 ; inline
 | 
			
		||||
: ENOTDIR 20 ; inline
 | 
			
		||||
: EISDIR 21 ; inline
 | 
			
		||||
: EINVAL 22 ; inline
 | 
			
		||||
: ENFILE 23 ; inline
 | 
			
		||||
: EMFILE 24 ; inline
 | 
			
		||||
: ENOTTY 25 ; inline
 | 
			
		||||
: ETXTBSY 26 ; inline
 | 
			
		||||
: EFBIG 27 ; inline
 | 
			
		||||
: ENOSPC 28 ; inline
 | 
			
		||||
: ESPIPE 29 ; inline
 | 
			
		||||
: EROFS 30 ; inline
 | 
			
		||||
: EMLINK 31 ; inline
 | 
			
		||||
: EPIPE 32 ; inline
 | 
			
		||||
: EDOM 33 ; inline
 | 
			
		||||
: ERANGE 34 ; inline
 | 
			
		||||
: EAGAIN 35 ; inline
 | 
			
		||||
: EWOULDBLOCK EAGAIN ; inline
 | 
			
		||||
: EINPROGRESS 36 ; inline
 | 
			
		||||
: EALREADY 37 ; inline
 | 
			
		||||
: ENOTSOCK 38 ; inline
 | 
			
		||||
: EDESTADDRREQ 39 ; inline
 | 
			
		||||
: EMSGSIZE 40 ; inline
 | 
			
		||||
: EPROTOTYPE 41 ; inline
 | 
			
		||||
: ENOPROTOOPT 42 ; inline
 | 
			
		||||
: EPROTONOSUPPORT 43 ; inline
 | 
			
		||||
: ESOCKTNOSUPPORT 44 ; inline
 | 
			
		||||
: EOPNOTSUPP 45 ; inline
 | 
			
		||||
: EPFNOSUPPORT 46 ; inline
 | 
			
		||||
: EAFNOSUPPORT 47 ; inline
 | 
			
		||||
: EADDRINUSE 48 ; inline
 | 
			
		||||
: EADDRNOTAVAIL 49 ; inline
 | 
			
		||||
: ENETDOWN 50 ; inline
 | 
			
		||||
: ENETUNREACH 51 ; inline
 | 
			
		||||
: ENETRESET 52 ; inline
 | 
			
		||||
: ECONNABORTED 53 ; inline
 | 
			
		||||
: ECONNRESET 54 ; inline
 | 
			
		||||
: ENOBUFS 55 ; inline
 | 
			
		||||
: EISCONN 56 ; inline
 | 
			
		||||
: ENOTCONN 57 ; inline
 | 
			
		||||
: ESHUTDOWN 58 ; inline
 | 
			
		||||
: ETOOMANYREFS 59 ; inline
 | 
			
		||||
: ETIMEDOUT 60 ; inline
 | 
			
		||||
: ECONNREFUSED 61 ; inline
 | 
			
		||||
: ELOOP 62 ; inline
 | 
			
		||||
: ENAMETOOLONG 63 ; inline
 | 
			
		||||
: EHOSTDOWN 64 ; inline
 | 
			
		||||
: EHOSTUNREACH 65 ; inline
 | 
			
		||||
: ENOTEMPTY 66 ; inline
 | 
			
		||||
: EPROCLIM 67 ; inline
 | 
			
		||||
: EUSERS 68 ; inline
 | 
			
		||||
: EDQUOT 69 ; inline
 | 
			
		||||
: ESTALE 70 ; inline
 | 
			
		||||
: EREMOTE 71 ; inline
 | 
			
		||||
: EBADRPC 72 ; inline
 | 
			
		||||
: ERPCMISMATCH 73 ; inline
 | 
			
		||||
: EPROGUNAVAIL 74 ; inline
 | 
			
		||||
: EPROGMISMATCH 75 ; inline
 | 
			
		||||
: EPROCUNAVAIL 76 ; inline
 | 
			
		||||
: ENOLCK 77 ; inline
 | 
			
		||||
: ENOSYS 78 ; inline
 | 
			
		||||
: EFTYPE 79 ; inline
 | 
			
		||||
: EAUTH 80 ; inline
 | 
			
		||||
: ENEEDAUTH 81 ; inline
 | 
			
		||||
: EIDRM 82 ; inline
 | 
			
		||||
: ENOMSG 83 ; inline
 | 
			
		||||
: EOVERFLOW 84 ; inline
 | 
			
		||||
: EILSEQ 85 ; inline
 | 
			
		||||
: ENOTSUP 86 ; inline
 | 
			
		||||
: ECANCELED 87 ; inline
 | 
			
		||||
: EBADMSG 88 ; inline
 | 
			
		||||
: ENODATA 89 ; inline
 | 
			
		||||
: ENOSR 90 ; inline
 | 
			
		||||
: ENOSTR 91 ; inline
 | 
			
		||||
: ETIME 92 ; inline
 | 
			
		||||
: ENOATTR 93 ; inline
 | 
			
		||||
: EMULTIHOP 94 ; inline
 | 
			
		||||
: ENOLINK 95 ; inline
 | 
			
		||||
: EPROTO 96 ; inline
 | 
			
		||||
: ELAST 96 ; inline
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,3 +12,93 @@ C-STRUCT: addrinfo
 | 
			
		|||
    { "void*" "addr" }
 | 
			
		||||
    { "char*" "canonname" }
 | 
			
		||||
    { "addrinfo*" "next" } ;
 | 
			
		||||
 | 
			
		||||
: EPERM 1 ; inline
 | 
			
		||||
: ENOENT 2 ; inline
 | 
			
		||||
: ESRCH 3 ; inline
 | 
			
		||||
: EINTR 4 ; inline
 | 
			
		||||
: EIO 5 ; inline
 | 
			
		||||
: ENXIO 6 ; inline
 | 
			
		||||
: E2BIG 7 ; inline
 | 
			
		||||
: ENOEXEC 8 ; inline
 | 
			
		||||
: EBADF 9 ; inline
 | 
			
		||||
: ECHILD 10 ; inline
 | 
			
		||||
: EDEADLK 11 ; inline
 | 
			
		||||
: ENOMEM 12 ; inline
 | 
			
		||||
: EACCES 13 ; inline
 | 
			
		||||
: EFAULT 14 ; inline
 | 
			
		||||
: ENOTBLK 15 ; inline
 | 
			
		||||
: EBUSY 16 ; inline
 | 
			
		||||
: EEXIST 17 ; inline
 | 
			
		||||
: EXDEV 18 ; inline
 | 
			
		||||
: ENODEV 19 ; inline
 | 
			
		||||
: ENOTDIR 20 ; inline
 | 
			
		||||
: EISDIR 21 ; inline
 | 
			
		||||
: EINVAL 22 ; inline
 | 
			
		||||
: ENFILE 23 ; inline
 | 
			
		||||
: EMFILE 24 ; inline
 | 
			
		||||
: ENOTTY 25 ; inline
 | 
			
		||||
: ETXTBSY 26 ; inline
 | 
			
		||||
: EFBIG 27 ; inline
 | 
			
		||||
: ENOSPC 28 ; inline
 | 
			
		||||
: ESPIPE 29 ; inline
 | 
			
		||||
: EROFS 30 ; inline
 | 
			
		||||
: EMLINK 31 ; inline
 | 
			
		||||
: EPIPE 32 ; inline
 | 
			
		||||
: EDOM 33 ; inline
 | 
			
		||||
: ERANGE 34 ; inline
 | 
			
		||||
: EAGAIN 35 ; inline
 | 
			
		||||
: EWOULDBLOCK EAGAIN ; inline
 | 
			
		||||
: EINPROGRESS 36 ; inline
 | 
			
		||||
: EALREADY 37 ; inline
 | 
			
		||||
: ENOTSOCK 38 ; inline
 | 
			
		||||
: EDESTADDRREQ 39 ; inline
 | 
			
		||||
: EMSGSIZE 40 ; inline
 | 
			
		||||
: EPROTOTYPE 41 ; inline
 | 
			
		||||
: ENOPROTOOPT 42 ; inline
 | 
			
		||||
: EPROTONOSUPPORT 43 ; inline
 | 
			
		||||
: ESOCKTNOSUPPORT 44 ; inline
 | 
			
		||||
: EOPNOTSUPP 45 ; inline
 | 
			
		||||
: EPFNOSUPPORT 46 ; inline
 | 
			
		||||
: EAFNOSUPPORT 47 ; inline
 | 
			
		||||
: EADDRINUSE 48 ; inline
 | 
			
		||||
: EADDRNOTAVAIL 49 ; inline
 | 
			
		||||
: ENETDOWN 50 ; inline
 | 
			
		||||
: ENETUNREACH 51 ; inline
 | 
			
		||||
: ENETRESET 52 ; inline
 | 
			
		||||
: ECONNABORTED 53 ; inline
 | 
			
		||||
: ECONNRESET 54 ; inline
 | 
			
		||||
: ENOBUFS 55 ; inline
 | 
			
		||||
: EISCONN 56 ; inline
 | 
			
		||||
: ENOTCONN 57 ; inline
 | 
			
		||||
: ESHUTDOWN 58 ; inline
 | 
			
		||||
: ETOOMANYREFS 59 ; inline
 | 
			
		||||
: ETIMEDOUT 60 ; inline
 | 
			
		||||
: ECONNREFUSED 61 ; inline
 | 
			
		||||
: ELOOP 62 ; inline
 | 
			
		||||
: ENAMETOOLONG 63 ; inline
 | 
			
		||||
: EHOSTDOWN 64 ; inline
 | 
			
		||||
: EHOSTUNREACH 65 ; inline
 | 
			
		||||
: ENOTEMPTY 66 ; inline
 | 
			
		||||
: EPROCLIM 67 ; inline
 | 
			
		||||
: EUSERS 68 ; inline
 | 
			
		||||
: EDQUOT 69 ; inline
 | 
			
		||||
: ESTALE 70 ; inline
 | 
			
		||||
: EREMOTE 71 ; inline
 | 
			
		||||
: EBADRPC 72 ; inline
 | 
			
		||||
: ERPCMISMATCH 73 ; inline
 | 
			
		||||
: EPROGUNAVAIL 74 ; inline
 | 
			
		||||
: EPROGMISMATCH 75 ; inline
 | 
			
		||||
: EPROCUNAVAIL 76 ; inline
 | 
			
		||||
: ENOLCK 77 ; inline
 | 
			
		||||
: ENOSYS 78 ; inline
 | 
			
		||||
: EFTYPE 79 ; inline
 | 
			
		||||
: EAUTH 80 ; inline
 | 
			
		||||
: ENEEDAUTH 81 ; inline
 | 
			
		||||
: EIPSEC 82 ; inline
 | 
			
		||||
: ENOATTR 83 ; inline
 | 
			
		||||
: EILSEQ 84 ; inline
 | 
			
		||||
: ENOMEDIUM 85 ; inline
 | 
			
		||||
: EMEDIUMTYPE 86 ; inline
 | 
			
		||||
: EOVERFLOW 87 ; inline
 | 
			
		||||
: ECANCELED 88 ; inline
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -59,10 +59,6 @@ C-STRUCT: sockaddr-un
 | 
			
		|||
    { "ushort" "family" }
 | 
			
		||||
    { { "char" max-un-path } "path" } ;
 | 
			
		||||
 | 
			
		||||
: EINTR HEX: 4 ; inline
 | 
			
		||||
: EAGAIN HEX: b ; inline
 | 
			
		||||
: EINPROGRESS HEX: 73 ; inline
 | 
			
		||||
 | 
			
		||||
: SOCK_STREAM 1 ; inline
 | 
			
		||||
: SOCK_DGRAM 2 ; inline
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -93,3 +89,101 @@ C-STRUCT: passwd
 | 
			
		|||
    { "char*"  "pw_gecos" }
 | 
			
		||||
    { "char*"  "pw_dir" }
 | 
			
		||||
    { "char*"  "pw_shell" } ;
 | 
			
		||||
 | 
			
		||||
: EDEADLK 35 ; inline
 | 
			
		||||
: ENAMETOOLONG 36 ; inline
 | 
			
		||||
: ENOLCK 37 ; inline
 | 
			
		||||
: ENOSYS 38 ; inline
 | 
			
		||||
: ENOTEMPTY 39 ; inline
 | 
			
		||||
: ELOOP 40 ; inline
 | 
			
		||||
: EWOULDBLOCK EAGAIN ; inline
 | 
			
		||||
: ENOMSG 42 ; inline
 | 
			
		||||
: EIDRM 43 ; inline
 | 
			
		||||
: ECHRNG 44 ; inline
 | 
			
		||||
: EL2NSYNC 45 ; inline
 | 
			
		||||
: EL3HLT 46 ; inline
 | 
			
		||||
: EL3RST 47 ; inline
 | 
			
		||||
: ELNRNG 48 ; inline
 | 
			
		||||
: EUNATCH 49 ; inline
 | 
			
		||||
: ENOCSI 50 ; inline
 | 
			
		||||
: EL2HLT 51 ; inline
 | 
			
		||||
: EBADE 52 ; inline
 | 
			
		||||
: EBADR 53 ; inline
 | 
			
		||||
: EXFULL 54 ; inline
 | 
			
		||||
: ENOANO 55 ; inline
 | 
			
		||||
: EBADRQC 56 ; inline
 | 
			
		||||
: EBADSLT 57 ; inline
 | 
			
		||||
: EDEADLOCK EDEADLK ; inline
 | 
			
		||||
: EBFONT 59 ; inline
 | 
			
		||||
: ENOSTR 60 ; inline
 | 
			
		||||
: ENODATA 61 ; inline
 | 
			
		||||
: ETIME 62 ; inline
 | 
			
		||||
: ENOSR 63 ; inline
 | 
			
		||||
: ENONET 64 ; inline
 | 
			
		||||
: ENOPKG 65 ; inline
 | 
			
		||||
: EREMOTE 66 ; inline
 | 
			
		||||
: ENOLINK 67 ; inline
 | 
			
		||||
: EADV 68 ; inline
 | 
			
		||||
: ESRMNT 69 ; inline
 | 
			
		||||
: ECOMM 70 ; inline
 | 
			
		||||
: EPROTO 71 ; inline
 | 
			
		||||
: EMULTIHOP 72 ; inline
 | 
			
		||||
: EDOTDOT 73 ; inline
 | 
			
		||||
: EBADMSG 74 ; inline
 | 
			
		||||
: EOVERFLOW 75 ; inline
 | 
			
		||||
: ENOTUNIQ 76 ; inline
 | 
			
		||||
: EBADFD 77 ; inline
 | 
			
		||||
: EREMCHG 78 ; inline
 | 
			
		||||
: ELIBACC 79 ; inline
 | 
			
		||||
: ELIBBAD 80 ; inline
 | 
			
		||||
: ELIBSCN 81 ; inline
 | 
			
		||||
: ELIBMAX 82 ; inline
 | 
			
		||||
: ELIBEXEC 83 ; inline
 | 
			
		||||
: EILSEQ 84 ; inline
 | 
			
		||||
: ERESTART 85 ; inline
 | 
			
		||||
: ESTRPIPE 86 ; inline
 | 
			
		||||
: EUSERS 87 ; inline
 | 
			
		||||
: ENOTSOCK 88 ; inline
 | 
			
		||||
: EDESTADDRREQ 89 ; inline
 | 
			
		||||
: EMSGSIZE 90 ; inline
 | 
			
		||||
: EPROTOTYPE 91 ; inline
 | 
			
		||||
: ENOPROTOOPT 92 ; inline
 | 
			
		||||
: EPROTONOSUPPORT 93 ; inline
 | 
			
		||||
: ESOCKTNOSUPPORT 94 ; inline
 | 
			
		||||
: EOPNOTSUPP 95 ; inline
 | 
			
		||||
: EPFNOSUPPORT 96 ; inline
 | 
			
		||||
: EAFNOSUPPORT 97 ; inline
 | 
			
		||||
: EADDRINUSE 98 ; inline
 | 
			
		||||
: EADDRNOTAVAIL 99 ; inline
 | 
			
		||||
: ENETDOWN 100 ; inline
 | 
			
		||||
: ENETUNREACH 101 ; inline
 | 
			
		||||
: ENETRESET 102 ; inline
 | 
			
		||||
: ECONNABORTED 103 ; inline
 | 
			
		||||
: ECONNRESET 104 ; inline
 | 
			
		||||
: ENOBUFS 105 ; inline
 | 
			
		||||
: EISCONN 106 ; inline
 | 
			
		||||
: ENOTCONN 107 ; inline
 | 
			
		||||
: ESHUTDOWN 108 ; inline
 | 
			
		||||
: ETOOMANYREFS 109 ; inline
 | 
			
		||||
: ETIMEDOUT 110 ; inline
 | 
			
		||||
: ECONNREFUSED 111 ; inline
 | 
			
		||||
: EHOSTDOWN 112 ; inline
 | 
			
		||||
: EHOSTUNREACH 113 ; inline
 | 
			
		||||
: EALREADY 114 ; inline
 | 
			
		||||
: EINPROGRESS 115 ; inline
 | 
			
		||||
: ESTALE 116 ; inline
 | 
			
		||||
: EUCLEAN 117 ; inline
 | 
			
		||||
: ENOTNAM 118 ; inline
 | 
			
		||||
: ENAVAIL 119 ; inline
 | 
			
		||||
: EISNAM 120 ; inline
 | 
			
		||||
: EREMOTEIO 121 ; inline
 | 
			
		||||
: EDQUOT 122 ; inline
 | 
			
		||||
: ENOMEDIUM 123 ; inline
 | 
			
		||||
: EMEDIUMTYPE 124 ; inline
 | 
			
		||||
: ECANCELED 125 ; inline
 | 
			
		||||
: ENOKEY 126 ; inline
 | 
			
		||||
: EKEYEXPIRED 127 ; inline
 | 
			
		||||
: EKEYREVOKED 128 ; inline
 | 
			
		||||
: EKEYREJECTED 129 ; inline
 | 
			
		||||
: EOWNERDEAD 130 ; inline
 | 
			
		||||
: ENOTRECOVERABLE 131 ; inline
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,7 +5,7 @@ USING: alien alien.c-types alien.syntax kernel libc structs sequences
 | 
			
		|||
       continuations byte-arrays strings
 | 
			
		||||
       math namespaces system combinators vocabs.loader qualified
 | 
			
		||||
       accessors inference macros locals shuffle arrays.lib 
 | 
			
		||||
       unix.types ;
 | 
			
		||||
       unix.types debugger io prettyprint ;
 | 
			
		||||
 | 
			
		||||
IN: unix
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -23,9 +23,6 @@ TYPEDEF: uint socklen_t
 | 
			
		|||
 | 
			
		||||
: MAP_FAILED -1 <alien> ; inline
 | 
			
		||||
 | 
			
		||||
: ESRCH 3 ; inline
 | 
			
		||||
: EEXIST 17 ; inline
 | 
			
		||||
 | 
			
		||||
: NGROUPS_MAX 16 ; inline
 | 
			
		||||
 | 
			
		||||
C-STRUCT: group
 | 
			
		||||
| 
						 | 
				
			
			@ -41,10 +38,30 @@ FUNCTION: int err_no ( ) ;
 | 
			
		|||
 | 
			
		||||
LIBRARY: libc
 | 
			
		||||
 | 
			
		||||
ERROR: unix-system-call-error args message word ;
 | 
			
		||||
 | 
			
		||||
FUNCTION: char* strerror ( int errno ) ;
 | 
			
		||||
 | 
			
		||||
ERROR: unix-error errno message ;
 | 
			
		||||
 | 
			
		||||
M: unix-error error.
 | 
			
		||||
    "Unix system call failed:" print
 | 
			
		||||
    nl
 | 
			
		||||
    dup message>> write " (" write errno>> pprint ")" print ;
 | 
			
		||||
 | 
			
		||||
: (io-error) ( -- * ) err_no dup strerror unix-error ;
 | 
			
		||||
 | 
			
		||||
: io-error ( n -- ) 0 < [ (io-error) ] when ;
 | 
			
		||||
 | 
			
		||||
ERROR: unix-system-call-error args errno message word ;
 | 
			
		||||
 | 
			
		||||
M: unix-system-call-error error.
 | 
			
		||||
    "Unix system call ``" write dup word>> pprint "'' failed:" print
 | 
			
		||||
    nl
 | 
			
		||||
    dup message>> write " (" write dup errno>> pprint ")" print
 | 
			
		||||
    nl
 | 
			
		||||
    "It was called with the following arguments:" print
 | 
			
		||||
    nl
 | 
			
		||||
    args>> stack. ;
 | 
			
		||||
 | 
			
		||||
MACRO:: unix-system-call ( quot -- )
 | 
			
		||||
    [let | n [ quot infer in>> ]
 | 
			
		||||
           word [ quot first ] |
 | 
			
		||||
| 
						 | 
				
			
			@ -52,7 +69,7 @@ MACRO:: unix-system-call ( quot -- )
 | 
			
		|||
            n ndup quot call dup 0 < [
 | 
			
		||||
                drop
 | 
			
		||||
                n narray
 | 
			
		||||
                err_no strerror
 | 
			
		||||
                err_no dup strerror
 | 
			
		||||
                word unix-system-call-error
 | 
			
		||||
            ] [
 | 
			
		||||
                n nnip
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue