Artifact
eb85172af1b5ab1fa38f80ee58c49d3897b53e16:
- File
posix/errno-c-eval.ss
— part of check-in
[e0957430e1]
at
2016-12-12 16:01:40
on branch trunk
— added better errno support
(user:
aldo
size: 1885)
0000: 0a 0a 28 64 65 66 69 6e 65 20 65 72 72 6f 72 73 ..(define errors
0010: 20 27 28 0a 09 09 20 3b 3b 46 52 4f 4d 20 6c 69 '(... ;;FROM li
0020: 6e 75 78 27 73 20 61 73 6d 2f 65 72 72 6e 6f 2d nux's asm/errno-
0030: 62 61 73 65 2e 68 0a 09 09 20 45 50 45 52 4d 20 base.h... EPERM
0040: 45 4e 4f 45 4e 54 20 45 53 52 43 48 20 45 49 4e ENOENT ESRCH EIN
0050: 54 52 20 45 49 4f 20 45 4e 58 49 4f 20 45 32 42 TR EIO ENXIO E2B
0060: 49 47 20 45 4e 4f 45 58 45 43 20 45 42 41 44 46 IG ENOEXEC EBADF
0070: 20 45 43 48 49 4c 44 20 45 41 47 41 49 4e 0a 09 ECHILD EAGAIN..
0080: 09 20 45 4e 4f 4d 45 4d 20 45 41 43 43 45 53 20 . ENOMEM EACCES
0090: 45 46 41 55 4c 54 20 45 4e 4f 54 42 4c 4b 20 45 EFAULT ENOTBLK E
00a0: 42 55 53 59 20 45 45 58 49 53 54 20 45 58 44 45 BUSY EEXIST EXDE
00b0: 56 20 45 4e 4f 44 45 56 20 45 4e 4f 54 44 49 52 V ENODEV ENOTDIR
00c0: 20 45 49 53 44 49 52 0a 09 09 20 45 49 4e 56 41 EISDIR... EINVA
00d0: 4c 20 45 4e 46 49 4c 45 20 45 4d 46 49 4c 45 20 L ENFILE EMFILE
00e0: 45 4e 4f 54 54 59 20 45 54 58 54 42 53 59 20 45 ENOTTY ETXTBSY E
00f0: 46 42 49 47 20 45 4e 4f 53 50 43 20 45 53 50 49 FBIG ENOSPC ESPI
0100: 50 45 20 45 52 4f 46 53 20 45 4d 4c 49 4e 4b 0a PE EROFS EMLINK.
0110: 09 09 20 45 50 49 50 45 20 45 44 4f 4d 20 45 52 .. EPIPE EDOM ER
0120: 41 4e 47 45 0a 09 09 20 0a 09 09 20 3b 3b 46 52 ANGE... ... ;;FR
0130: 4f 4d 20 6c 69 6e 75 78 27 73 20 61 73 6d 2f 65 OM linux's asm/e
0140: 72 72 6e 6f 2e 68 0a 09 09 20 45 44 45 41 44 4c rrno.h... EDEADL
0150: 4b 20 45 4e 41 4d 45 54 4f 4f 4c 4f 4e 47 20 45 K ENAMETOOLONG E
0160: 4e 4f 4c 43 4b 0a 0a 09 09 20 45 4e 4f 53 59 53 NOLCK.... ENOSYS
0170: 0a 0a 09 09 20 45 4e 4f 54 45 4d 50 54 59 20 45 .... ENOTEMPTY E
0180: 4c 4f 4f 50 20 45 57 4f 55 4c 44 42 4c 4f 43 4b LOOP EWOULDBLOCK
0190: 20 45 4e 4f 4d 53 47 20 45 49 44 52 4d 20 45 43 ENOMSG EIDRM EC
01a0: 48 52 4e 47 20 45 4c 32 4e 53 59 4e 43 20 45 4c HRNG EL2NSYNC EL
01b0: 33 48 4c 54 20 45 4c 33 52 53 54 0a 09 09 20 45 3HLT EL3RST... E
01c0: 4c 4e 52 4e 47 20 45 55 4e 41 54 43 48 20 45 4e LNRNG EUNATCH EN
01d0: 4f 43 53 49 20 45 4c 32 48 4c 54 20 45 42 41 44 OCSI EL2HLT EBAD
01e0: 45 20 45 42 41 44 52 20 45 58 46 55 4c 4c 20 45 E EBADR EXFULL E
01f0: 4e 4f 41 4e 4f 20 45 42 41 44 52 51 43 20 45 42 NOANO EBADRQC EB
0200: 41 44 53 4c 54 0a 0a 09 09 20 45 44 45 41 44 4c ADSLT.... EDEADL
0210: 4f 43 4b 0a 0a 09 09 20 45 42 46 4f 4e 54 20 45 OCK.... EBFONT E
0220: 4e 4f 53 54 52 20 45 4e 4f 44 41 54 41 20 45 54 NOSTR ENODATA ET
0230: 49 4d 45 20 45 4e 4f 53 52 20 45 4e 4f 4e 45 54 IME ENOSR ENONET
0240: 20 45 4e 4f 50 4b 47 20 45 52 45 4d 4f 54 45 20 ENOPKG EREMOTE
0250: 45 4e 4f 4c 49 4e 4b 20 45 41 44 56 0a 09 09 20 ENOLINK EADV...
0260: 45 53 52 4d 4e 54 20 45 43 4f 4d 4d 20 45 50 52 ESRMNT ECOMM EPR
0270: 4f 54 4f 20 45 4d 55 4c 54 49 48 4f 50 20 45 44 OTO EMULTIHOP ED
0280: 4f 54 44 4f 54 20 45 42 41 44 4d 53 47 20 45 4f OTDOT EBADMSG EO
0290: 56 45 52 46 4c 4f 57 20 45 4e 4f 54 55 4e 49 51 VERFLOW ENOTUNIQ
02a0: 0a 09 09 20 45 42 41 44 46 44 20 45 52 45 4d 43 ... EBADFD EREMC
02b0: 48 47 20 45 4c 49 42 41 43 43 20 45 4c 49 42 42 HG ELIBACC ELIBB
02c0: 41 44 20 45 4c 49 42 53 43 4e 20 45 4c 49 42 4d AD ELIBSCN ELIBM
02d0: 41 58 20 45 4c 49 42 45 58 45 43 20 45 49 4c 53 AX ELIBEXEC EILS
02e0: 45 51 0a 09 09 20 45 52 45 53 54 41 52 54 20 45 EQ... ERESTART E
02f0: 53 54 52 50 49 50 45 20 45 55 53 45 52 53 20 45 STRPIPE EUSERS E
0300: 4e 4f 54 53 4f 43 4b 20 45 44 45 53 54 41 44 44 NOTSOCK EDESTADD
0310: 52 52 45 51 20 45 4d 53 47 53 49 5a 45 20 45 50 RREQ EMSGSIZE EP
0320: 52 4f 54 4f 54 59 50 45 0a 09 09 20 45 4e 4f 50 ROTOTYPE... ENOP
0330: 52 4f 54 4f 4f 50 54 20 45 50 52 4f 54 4f 4e 4f ROTOOPT EPROTONO
0340: 53 55 50 50 4f 52 54 20 45 53 4f 43 4b 54 4e 4f SUPPORT ESOCKTNO
0350: 53 55 50 50 4f 52 54 20 45 4f 50 4e 4f 54 53 55 SUPPORT EOPNOTSU
0360: 50 50 20 45 50 46 4e 4f 53 55 50 50 4f 52 54 0a PP EPFNOSUPPORT.
0370: 09 09 20 45 41 46 4e 4f 53 55 50 50 4f 52 54 20 .. EAFNOSUPPORT
0380: 45 41 44 44 52 49 4e 55 53 45 20 45 41 44 44 52 EADDRINUSE EADDR
0390: 4e 4f 54 41 56 41 49 4c 20 45 4e 45 54 44 4f 57 NOTAVAIL ENETDOW
03a0: 4e 20 45 4e 45 54 55 4e 52 45 41 43 48 20 45 4e N ENETUNREACH EN
03b0: 45 54 52 45 53 45 54 0a 09 09 20 45 43 4f 4e 4e ETRESET... ECONN
03c0: 41 42 4f 52 54 45 44 20 45 43 4f 4e 4e 52 45 53 ABORTED ECONNRES
03d0: 45 54 20 45 4e 4f 42 55 46 53 20 45 49 53 43 4f ET ENOBUFS EISCO
03e0: 4e 4e 20 45 4e 4f 54 43 4f 4e 4e 20 45 53 48 55 NN ENOTCONN ESHU
03f0: 54 44 4f 57 4e 0a 09 09 20 45 54 4f 4f 4d 41 4e TDOWN... ETOOMAN
0400: 59 52 45 46 53 20 45 54 49 4d 45 44 4f 55 54 20 YREFS ETIMEDOUT
0410: 45 43 4f 4e 4e 52 45 46 55 53 45 44 20 45 48 4f ECONNREFUSED EHO
0420: 53 54 44 4f 57 4e 20 45 48 4f 53 54 55 4e 52 45 STDOWN EHOSTUNRE
0430: 41 43 48 20 45 41 4c 52 45 41 44 59 0a 09 09 20 ACH EALREADY...
0440: 45 49 4e 50 52 4f 47 52 45 53 53 20 45 53 54 41 EINPROGRESS ESTA
0450: 4c 45 20 45 55 43 4c 45 41 4e 20 45 4e 4f 54 4e LE EUCLEAN ENOTN
0460: 41 4d 20 45 4e 41 56 41 49 4c 20 45 49 53 4e 41 AM ENAVAIL EISNA
0470: 4d 20 45 52 45 4d 4f 54 45 49 4f 20 45 44 51 55 M EREMOTEIO EDQU
0480: 4f 54 0a 09 09 20 45 4e 4f 4d 45 44 49 55 4d 20 OT... ENOMEDIUM
0490: 45 4d 45 44 49 55 4d 54 59 50 45 20 45 43 41 4e EMEDIUMTYPE ECAN
04a0: 43 45 4c 45 44 20 45 4e 4f 4b 45 59 20 45 4b 45 CELED ENOKEY EKE
04b0: 59 45 58 50 49 52 45 44 20 45 4b 45 59 52 45 56 YEXPIRED EKEYREV
04c0: 4f 4b 45 44 0a 09 09 20 45 4b 45 59 52 45 4a 45 OKED... EKEYREJE
04d0: 43 54 45 44 20 45 4f 57 4e 45 52 44 45 41 44 20 CTED EOWNERDEAD
04e0: 45 4e 4f 54 52 45 43 4f 56 45 52 41 42 4c 45 29 ENOTRECOVERABLE)
04f0: 29 0a 0a 28 64 65 66 69 6e 65 20 28 67 65 6e 2d )..(define (gen-
0500: 65 72 72 6e 6f 20 70 6c 61 74 66 6f 72 6d 29 0a errno platform).
0510: 20 20 28 63 61 6c 6c 2d 77 69 74 68 2d 6f 75 74 (call-with-out
0520: 70 75 74 2d 66 69 6c 65 20 28 73 74 72 69 6e 67 put-file (string
0530: 2d 61 70 70 65 6e 64 20 22 65 72 72 6e 6f 2d 22 -append "errno-"
0540: 20 70 6c 61 74 66 6f 72 6d 20 22 2e 73 73 22 29 platform ".ss")
0550: 0a 20 20 20 20 28 6c 61 6d 62 64 61 20 28 70 29 . (lambda (p)
0560: 0a 20 20 20 20 20 20 28 66 70 72 69 6e 74 66 20 . (fprintf
0570: 70 22 3b 3b 20 67 65 6e 65 72 61 74 65 64 20 62 p";; generated b
0580: 79 20 65 72 72 6e 6f 2d 63 2d 65 76 61 6c 2e 73 y errno-c-eval.s
0590: 73 20 2d 20 70 6c 61 74 66 6f 72 6d 3a 20 7e 61 s - platform: ~a
05a0: 5c 6e 22 20 28 6d 61 63 68 69 6e 65 2d 74 79 70 \n" (machine-typ
05b0: 65 29 29 0a 0a 20 20 20 20 20 20 28 66 6f 72 2d e)).. (for-
05c0: 65 61 63 68 20 28 6c 61 6d 62 64 61 20 28 65 72 each (lambda (er
05d0: 72 29 0a 09 09 20 20 28 70 72 69 6e 74 66 20 22 r)... (printf "
05e0: 65 76 61 6c 27 69 6e 67 20 7e 61 2e 2e 2e 5c 6e eval'ing ~a...\n
05f0: 22 20 65 72 72 29 0a 09 20 20 20 20 28 67 75 61 " err).. (gua
0600: 72 64 20 28 65 20 5b 65 6c 73 65 20 28 66 70 72 rd (e [else (fpr
0610: 69 6e 74 66 20 70 20 22 28 64 65 66 69 6e 65 20 intf p "(define
0620: 7e 61 20 27 7e 61 2d 55 4e 44 45 46 49 4e 45 44 ~a '~a-UNDEFINED
0630: 29 5c 6e 22 20 65 72 72 20 65 72 72 29 5d 29 0a )\n" err err)]).
0640: 09 09 20 20 20 28 66 70 72 69 6e 74 66 20 70 20 .. (fprintf p
0650: 22 28 64 65 66 69 6e 65 20 7e 61 20 7e 61 29 5c "(define ~a ~a)\
0660: 6e 22 20 65 72 72 20 28 63 2d 65 76 61 6c 2d 70 n" err (c-eval-p
0670: 72 69 6e 74 66 20 22 25 64 22 20 65 72 72 29 29 rintf "%d" err))
0680: 29 29 0a 09 09 65 72 72 6f 72 73 29 29 0a 20 20 ))...errors)).
0690: 20 20 27 74 72 75 6e 63 61 74 65 29 29 0a 0a 28 'truncate))..(
06a0: 63 2d 65 76 61 6c 2d 69 6e 63 6c 75 64 65 73 20 c-eval-includes
06b0: 27 28 22 73 74 64 69 6f 2e 68 22 20 22 65 72 72 '("stdio.h" "err
06c0: 6e 6f 2e 68 22 29 29 0a 0a 28 63 6f 6e 64 0a 20 no.h"))..(cond.
06d0: 5b 28 6d 65 6d 71 20 28 6d 61 63 68 69 6e 65 2d [(memq (machine-
06e0: 74 79 70 65 29 20 27 28 61 36 6c 65 20 74 61 36 type) '(a6le ta6
06f0: 6c 65 29 29 0a 20 20 28 67 65 6e 2d 65 72 72 6e le)). (gen-errn
0700: 6f 20 22 6c 69 6e 75 78 22 29 5d 0a 20 5b 65 6c o "linux")]. [el
0710: 73 65 0a 20 20 28 65 72 72 6f 72 20 27 65 72 72 se. (error 'err
0720: 6e 6f 2d 63 2d 65 76 61 6c 2e 73 73 20 22 75 6e no-c-eval.ss "un
0730: 73 75 70 70 6f 72 74 65 64 20 6d 61 63 68 69 6e supported machin
0740: 65 2d 74 79 70 65 20 7e 61 22 20 28 6d 61 63 68 e-type ~a" (mach
0750: 69 6e 65 2d 74 79 70 65 29 29 5d 29 0a ine-type))]).