Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | added better errno support |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
e0957430e18204ca5ce8c2c811f87a83 |
User & Date: | aldo 2016-12-12 16:01:40 |
Context
2016-12-12
| ||
22:48 | fixed sockaddr_in.sin_zero size, thanks to gwatt check-in: f1282eed3e user: aldo tags: trunk | |
16:01 | added better errno support check-in: e0957430e1 user: aldo tags: trunk | |
15:32 | added EINTR support on connect/inet and accept check-in: c7ecd28930 user: aldo tags: trunk | |
Changes
Changes to posix.sls.
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
;; Unless required by applicable law or agreed to in writing, software ;; distributed under the License is distributed on an "AS IS" BASIS, ;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ;; See the License for the specific language governing permissions and ;; limitations under the License. (library (posix) (export strerror errno EAGAIN EINTR mktemp mkstemp with-mktemp close wtermsig wifexited wifsignaled wexitstatus wait-flag wait-for-pid fork dup file-write file-read bytes-ready) (import (chezscheme) (only (thunder-utils) bytevector-copy*) (ffi-utils)) ;;; POSIX STUFF (define init (load-shared-object "libc.so.6")) (define strerror (case-lambda [() (strerror (errno))] [(n) (define strerror* (foreign-procedure "strerror_r" (int u8* size_t) string)) (define buff (make-bytevector 1024)) (strerror* n buff 1024)])) (define (errno) (foreign-ref 'int (foreign-entry "errno") 0)) (define EAGAIN 11) (define EINTR 4) (define (mkstemp template) (define mkstemp* (foreign-procedure "mkstemp" (u8*) int)) (define t (string->utf8 template)) (let ([fd (mkstemp* t)]) (when (< fd 0) (errorf 'mkstemp "failed: ~a" (strerror))) |
| | > > < < < < < < < < < < < < < < |
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
;; Unless required by applicable law or agreed to in writing, software ;; distributed under the License is distributed on an "AS IS" BASIS, ;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ;; See the License for the specific language governing permissions and ;; limitations under the License. (library (posix) (export strerror errno mktemp mkstemp with-mktemp close wtermsig wifexited wifsignaled wexitstatus wait-flag wait-for-pid fork dup file-write file-read bytes-ready) (import (chezscheme) (only (thunder-utils) bytevector-copy*) (ffi-utils) (only (posix errno) strerror errno EAGAIN EINTR)) ;;; POSIX STUFF (define init (load-shared-object "libc.so.6")) (define (mkstemp template) (define mkstemp* (foreign-procedure "mkstemp" (u8*) int)) (define t (string->utf8 template)) (let ([fd (mkstemp* t)]) (when (< fd 0) (errorf 'mkstemp "failed: ~a" (strerror))) |
Added posix/errno-c-eval.ss.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
(define errors '( ;;FROM linux's asm/errno-base.h EPERM ENOENT ESRCH EINTR EIO ENXIO E2BIG ENOEXEC EBADF ECHILD EAGAIN ENOMEM EACCES EFAULT ENOTBLK EBUSY EEXIST EXDEV ENODEV ENOTDIR EISDIR EINVAL ENFILE EMFILE ENOTTY ETXTBSY EFBIG ENOSPC ESPIPE EROFS EMLINK EPIPE EDOM ERANGE ;;FROM linux's asm/errno.h EDEADLK ENAMETOOLONG ENOLCK ENOSYS ENOTEMPTY ELOOP EWOULDBLOCK ENOMSG EIDRM ECHRNG EL2NSYNC EL3HLT EL3RST ELNRNG EUNATCH ENOCSI EL2HLT EBADE EBADR EXFULL ENOANO EBADRQC EBADSLT EDEADLOCK EBFONT ENOSTR ENODATA ETIME ENOSR ENONET ENOPKG EREMOTE ENOLINK EADV ESRMNT ECOMM EPROTO EMULTIHOP EDOTDOT EBADMSG EOVERFLOW ENOTUNIQ EBADFD EREMCHG ELIBACC ELIBBAD ELIBSCN ELIBMAX ELIBEXEC EILSEQ ERESTART ESTRPIPE EUSERS ENOTSOCK EDESTADDRREQ EMSGSIZE EPROTOTYPE ENOPROTOOPT EPROTONOSUPPORT ESOCKTNOSUPPORT EOPNOTSUPP EPFNOSUPPORT EAFNOSUPPORT EADDRINUSE EADDRNOTAVAIL ENETDOWN ENETUNREACH ENETRESET ECONNABORTED ECONNRESET ENOBUFS EISCONN ENOTCONN ESHUTDOWN ETOOMANYREFS ETIMEDOUT ECONNREFUSED EHOSTDOWN EHOSTUNREACH EALREADY EINPROGRESS ESTALE EUCLEAN ENOTNAM ENAVAIL EISNAM EREMOTEIO EDQUOT ENOMEDIUM EMEDIUMTYPE ECANCELED ENOKEY EKEYEXPIRED EKEYREVOKED EKEYREJECTED EOWNERDEAD ENOTRECOVERABLE)) (define (gen-errno platform) (call-with-output-file (string-append "errno-" platform ".ss") (lambda (p) (fprintf p";; generated by errno-c-eval.ss - platform: ~a\n" (machine-type)) (for-each (lambda (err) (printf "eval'ing ~a...\n" err) (guard (e [else (fprintf p "(define ~a '~a-UNDEFINED)\n" err err)]) (fprintf p "(define ~a ~a)\n" err (c-eval-printf "%d" err)))) errors)) 'truncate)) (c-eval-includes '("stdio.h" "errno.h")) (cond [(memq (machine-type) '(a6le ta6le)) (gen-errno "linux")] [else (error 'errno-c-eval.ss "unsupported machine-type ~a" (machine-type))]) |
Added posix/errno-linux.ss.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 |
;; generated by errno-c-eval.ss - platform: ta6le (define EPERM 1) (define ENOENT 2) (define ESRCH 3) (define EINTR 4) (define EIO 5) (define ENXIO 6) (define E2BIG 7) (define ENOEXEC 8) (define EBADF 9) (define ECHILD 10) (define EAGAIN 11) (define ENOMEM 12) (define EACCES 13) (define EFAULT 14) (define ENOTBLK 15) (define EBUSY 16) (define EEXIST 17) (define EXDEV 18) (define ENODEV 19) (define ENOTDIR 20) (define EISDIR 21) (define EINVAL 22) (define ENFILE 23) (define EMFILE 24) (define ENOTTY 25) (define ETXTBSY 26) (define EFBIG 27) (define ENOSPC 28) (define ESPIPE 29) (define EROFS 30) (define EMLINK 31) (define EPIPE 32) (define EDOM 33) (define ERANGE 34) (define EDEADLK 35) (define ENAMETOOLONG 36) (define ENOLCK 37) (define ENOSYS 38) (define ENOTEMPTY 39) (define ELOOP 40) (define EWOULDBLOCK 11) (define ENOMSG 42) (define EIDRM 43) (define ECHRNG 44) (define EL2NSYNC 45) (define EL3HLT 46) (define EL3RST 47) (define ELNRNG 48) (define EUNATCH 49) (define ENOCSI 50) (define EL2HLT 51) (define EBADE 52) (define EBADR 53) (define EXFULL 54) (define ENOANO 55) (define EBADRQC 56) (define EBADSLT 57) (define EDEADLOCK 35) (define EBFONT 59) (define ENOSTR 60) (define ENODATA 61) (define ETIME 62) (define ENOSR 63) (define ENONET 64) (define ENOPKG 65) (define EREMOTE 66) (define ENOLINK 67) (define EADV 68) (define ESRMNT 69) (define ECOMM 70) (define EPROTO 71) (define EMULTIHOP 72) (define EDOTDOT 73) (define EBADMSG 74) (define EOVERFLOW 75) (define ENOTUNIQ 76) (define EBADFD 77) (define EREMCHG 78) (define ELIBACC 79) (define ELIBBAD 80) (define ELIBSCN 81) (define ELIBMAX 82) (define ELIBEXEC 'ELIBEXEC-UNDEFINED) (define EILSEQ 84) (define ERESTART 85) (define ESTRPIPE 86) (define EUSERS 87) (define ENOTSOCK 88) (define EDESTADDRREQ 89) (define EMSGSIZE 90) (define EPROTOTYPE 91) (define ENOPROTOOPT 92) (define EPROTONOSUPPORT 93) (define ESOCKTNOSUPPORT 94) (define EOPNOTSUPP 95) (define EPFNOSUPPORT 96) (define EAFNOSUPPORT 97) (define EADDRINUSE 98) (define EADDRNOTAVAIL 99) (define ENETDOWN 100) (define ENETUNREACH 101) (define ENETRESET 102) (define ECONNABORTED 103) (define ECONNRESET 104) (define ENOBUFS 105) (define EISCONN 106) (define ENOTCONN 107) (define ESHUTDOWN 108) (define ETOOMANYREFS 109) (define ETIMEDOUT 110) (define ECONNREFUSED 111) (define EHOSTDOWN 112) (define EHOSTUNREACH 113) (define EALREADY 114) (define EINPROGRESS 115) (define ESTALE 116) (define EUCLEAN 117) (define ENOTNAM 118) (define ENAVAIL 119) (define EISNAM 120) (define EREMOTEIO 121) (define EDQUOT 122) (define ENOMEDIUM 123) (define EMEDIUMTYPE 124) (define ECANCELED 125) (define ENOKEY 126) (define EKEYEXPIRED 127) (define EKEYREVOKED 128) (define EKEYREJECTED 129) (define EOWNERDEAD 130) (define ENOTRECOVERABLE 131) |
Added posix/errno.sls.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
(library (posix errno) (export ;;FROM linux's asm/errno-base.h EPERM ENOENT ESRCH EINTR EIO ENXIO E2BIG ENOEXEC EBADF ECHILD EAGAIN ENOMEM EACCES EFAULT ENOTBLK EBUSY EEXIST EXDEV ENODEV ENOTDIR EISDIR EINVAL ENFILE EMFILE ENOTTY ETXTBSY EFBIG ENOSPC ESPIPE EROFS EMLINK EPIPE EDOM ERANGE ;;FROM linux's asm/errno.h EDEADLK ENAMETOOLONG ENOLCK ENOSYS ENOTEMPTY ELOOP EWOULDBLOCK ENOMSG EIDRM ECHRNG EL2NSYNC EL3HLT EL3RST ELNRNG EUNATCH ENOCSI EL2HLT EBADE EBADR EXFULL ENOANO EBADRQC EBADSLT EDEADLOCK EBFONT ENOSTR ENODATA ETIME ENOSR ENONET ENOPKG EREMOTE ENOLINK EADV ESRMNT ECOMM EPROTO EMULTIHOP EDOTDOT EBADMSG EOVERFLOW ENOTUNIQ EBADFD EREMCHG ELIBACC ELIBBAD ELIBSCN ELIBMAX ELIBEXEC EILSEQ ERESTART ESTRPIPE EUSERS ENOTSOCK EDESTADDRREQ EMSGSIZE EPROTOTYPE ENOPROTOOPT EPROTONOSUPPORT ESOCKTNOSUPPORT EOPNOTSUPP EPFNOSUPPORT EAFNOSUPPORT EADDRINUSE EADDRNOTAVAIL ENETDOWN ENETUNREACH ENETRESET ECONNABORTED ECONNRESET ENOBUFS EISCONN ENOTCONN ESHUTDOWN ETOOMANYREFS ETIMEDOUT ECONNREFUSED EHOSTDOWN EHOSTUNREACH EALREADY EINPROGRESS ESTALE EUCLEAN ENOTNAM ENAVAIL EISNAM EREMOTEIO EDQUOT ENOMEDIUM EMEDIUMTYPE ECANCELED ENOKEY EKEYEXPIRED EKEYREVOKED EKEYREJECTED EOWNERDEAD ENOTRECOVERABLE strerror errno) (import (chezscheme) (srfi private include)) (meta-cond [(memq (machine-type) '(a6le ta6le i3le ti3le)) (include/resolve () "posix/errno-linux.ss")] [else (error 'posix.sls "unsupported machine-type ~a" (machine-type))]) (define strerror (case-lambda [() (strerror (errno))] [(n) (define strerror* (foreign-procedure "strerror_r" (int u8* size_t) string)) (define buff (make-bytevector 1024)) (strerror* n buff 1024)])) (define (errno) (foreign-ref 'int (foreign-entry "errno") 0)) ) |
Changes to socket.sls.
16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
(library (socket) (export file-write file-read bytes-ready socket close socket-domain socket-type-flag socket-type gethostbyname connect/inet bind/inet listen accept) (import (except (chezscheme) bytevector-copy) (posix) (ffi-utils)) (meta-cond [(memq (machine-type) '(a6le ta6le)) (define-enumeration* socket-domain (unspec local inet ax25 ipx appletalk |
> |
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
(library (socket)
(export file-write file-read bytes-ready socket close
socket-domain socket-type-flag socket-type gethostbyname
connect/inet bind/inet listen accept)
(import (except (chezscheme) bytevector-copy)
(posix)
(only (posix errno) EAGAIN EINTR)
(ffi-utils))
(meta-cond
[(memq (machine-type) '(a6le ta6le))
(define-enumeration* socket-domain
(unspec local inet ax25 ipx appletalk
|