1.1--- a/lisp/ffi/blake3/constants.lisp Sun Sep 29 00:31:24 2024 -0400
1.2+++ b/lisp/ffi/blake3/constants.lisp Sun Sep 29 22:44:52 2024 -0400
1.3@@ -1,3 +1,8 @@
1.4-("stddef.h" "stdint.h")
1.5+("stddef.h" "stdint.h" "blake3.h")
1.6
1.7-()
1.8+( ;; (:string blake3-version-string "BLAKE3_VERSION_STRING")
1.9+ (:integer +blake3-key-len+ "BLAKE3_KEY_LEN")
1.10+ (:integer +blake3-out-len+ "BLAKE3_OUT_LEN")
1.11+ (:integer +blake3-block-len+ "BLAKE3_BLOCK_LEN")
1.12+ (:integer +blake3-chunk-len+ "BLAKE3_CHUNK_LEN")
1.13+ (:integer +blake3-max-depth+ "BLAKE3_MAX_DEPTH"))
2.1--- a/lisp/ffi/blake3/pkg.lisp Sun Sep 29 00:31:24 2024 -0400
2.2+++ b/lisp/ffi/blake3/pkg.lisp Sun Sep 29 22:44:52 2024 -0400
2.3@@ -7,6 +7,7 @@
2.4 (:nicknames :blake3)
2.5 (:use :cl :std :sb-alien)
2.6 (:export
2.7+ :load-blake3
2.8 :+blake3-key-len+
2.9 :+blake3-out-len+
2.10 :+blake3-block-len+
2.11@@ -26,13 +27,7 @@
2.12
2.13 (in-package :blake3)
2.14
2.15-(defvar +blake3-key-len+ 32)
2.16-(defvar +blake3-out-len+ 32)
2.17-(defvar +blake3-block-len+ 64)
2.18-(defvar +blake3-chunk-len+ 1024)
2.19-(defvar +blake3-max-depth+ 54)
2.20-
2.21-(define-alien-loader "blake3" t "/usr/local/lib/")
2.22+(define-alien-loader "blake3")
2.23
2.24 (define-alien-routine blake3-version c-string)
2.25
3.1--- a/lisp/ffi/blake3/tests.lisp Sun Sep 29 00:31:24 2024 -0400
3.2+++ b/lisp/ffi/blake3/tests.lisp Sun Sep 29 22:44:52 2024 -0400
3.3@@ -12,7 +12,7 @@
3.4 (load-blake3)
3.5
3.6 (deftest version ()
3.7- (is (string= "1.5.0" (blake3-version))))
3.8+ (is (stringp (blake3-version))))
3.9
3.10 (deftest hasher ()
3.11 (with-alien ((h blake3-hasher)
3.12@@ -21,6 +21,4 @@
3.13 (blake3-hasher-init (addr h))
3.14 (blake3-hasher-update (addr h) nil 0)
3.15 (blake3-hasher-finalize (addr h) o olen)
3.16- (print (addr h))
3.17- (print (addr o))
3.18 (blake3-hasher-reset (addr h))))
4.1--- a/lisp/ffi/evdev/input.lisp Sun Sep 29 00:31:24 2024 -0400
4.2+++ b/lisp/ffi/evdev/input.lisp Sun Sep 29 22:44:52 2024 -0400
4.3@@ -5,15 +5,13 @@
4.4 ;;; Code:
4.5 (in-package :evdev/input)
4.6
4.7-;; from linux/time.h
4.8-(define-alien-type timeval
4.9- (struct timeval
4.10- (tv-sec sb-unix:time-t)
4.11- (tv-nsec long)))
4.12+;; (defun eviocgbit (ev len)
4.13+;; ;; ioctl read
4.14+;; (sb-posix::ioctl 8 2 "E" (+ #x20 ev) len))
4.15
4.16 (define-alien-type input-event
4.17 (struct input-event
4.18- (time timeval)
4.19+ (time sb-posix::alien-timeval)
4.20 (type (unsigned 16))
4.21 (code (unsigned 16))
4.22 (value (signed 32))))
5.1--- a/lisp/ffi/evdev/pkg.lisp Sun Sep 29 00:31:24 2024 -0400
5.2+++ b/lisp/ffi/evdev/pkg.lisp Sun Sep 29 22:44:52 2024 -0400
5.3@@ -16,7 +16,11 @@
5.4
5.5 (defpackage :evdev
5.6 (:use :cl :std :sb-alien :evdev/input)
5.7- (:export))
5.8+ (:export
5.9+ #:libevdev-new
5.10+ #:libevdev-new-from-fd
5.11+ #:libevdev-free
5.12+ #:libevdev-set-fd))
5.13
5.14 (in-package :evdev)
5.15 (define-alien-loader "evdev" t "/usr/lib/")
6.1--- a/lisp/ffi/evdev/tests.lisp Sun Sep 29 00:31:24 2024 -0400
6.2+++ b/lisp/ffi/evdev/tests.lisp Sun Sep 29 22:44:52 2024 -0400
6.3@@ -25,4 +25,10 @@
6.4
6.5 libevdev_free(dev);
6.6 |#
6.7-(deftest basic ())
6.8+(deftest basic ()
6.9+ (with-open-file (file "/dev/input/event4")
6.10+ (let ((dev (libevdev-new))
6.11+ (fd (sb-sys:fd-stream-fd file)))
6.12+ (is (typep dev '(alien (* evdev::libevdev))))
6.13+ (is (zerop (libevdev-set-fd dev fd)))
6.14+ (is (null (libevdev-free dev))))))
7.1--- a/lisp/ffi/rustls/macs.lisp Sun Sep 29 00:31:24 2024 -0400
7.2+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
7.3@@ -1,6 +0,0 @@
7.4-;;; rustls/macs.lisp --- Rustls FFI Macros
7.5-
7.6-;;
7.7-
7.8-;;; Code:
7.9-(in-package :rustls)
8.1--- a/lisp/ffi/rustls/rustls.asd Sun Sep 29 00:31:24 2024 -0400
8.2+++ b/lisp/ffi/rustls/rustls.asd Sun Sep 29 22:44:52 2024 -0400
8.3@@ -10,8 +10,8 @@
8.4 (defsystem :rustls
8.5 :depends-on (:std)
8.6 :components ((:file "pkg")
8.7- (:file "macs")
8.8- (:file "types"))
8.9+ (:file "types")
8.10+ (:file "rustls"))
8.11 :in-order-to ((test-op (test-op "rustls/tests"))))
8.12
8.13 (defsystem :rustls/tests
9.1--- a/lisp/ffi/rustls/rustls.lisp Sun Sep 29 00:31:24 2024 -0400
9.2+++ b/lisp/ffi/rustls/rustls.lisp Sun Sep 29 22:44:52 2024 -0400
9.3@@ -33,9 +33,9 @@
9.4 (accepted (* rustls-accepted))
9.5 (i size-t))
9.6
9.7-(define-alien-routine rustls-accepted-alpn rustls-slice-bytes
9.8- (accepted (* rustls-accepted))
9.9- (i size-t))
9.10+;; (define-alien-routine rustls-accepted-alpn rustls-slice-bytes
9.11+;; (accepted (* rustls-accepted))
9.12+;; (i size-t))
9.13
9.14 (define-alien-routine rustls-accepted-into-connection rustls-result
9.15 (accepted (* rustls-accepted))
9.16@@ -232,7 +232,7 @@
9.17 (count size-t)
9.18 (out-n (* size-t)))
9.19
9.20-(define-alien-routine rustl-connection-free void (* rustls-connection))
9.21+(define-alien-routine rustl-connection-free void (conn (* rustls-connection)))
9.22
9.23 (define-alien-routine rustls-error void (result rustls-result) (len size-t) (out-n (* size-t)))
9.24
9.25@@ -243,9 +243,9 @@
9.26 (define-alien-routine rustls-slice-slice-bytes-len size-t
9.27 (input (* rustls-slice-slice-bytes)))
9.28
9.29-(define-alien-routine rustls-slice-slice-bytes-get rustls-slice-bytes
9.30- (input (* rustls-slice-slice-bytes))
9.31- (n size-t))
9.32+;; (define-alien-routine rustls-slice-slice-bytes-get rustls-slice-bytes
9.33+;; (input (* rustls-slice-slice-bytes))
9.34+;; (n size-t))
9.35
9.36 (define-alien-routine rustls-slice-str-len size-t
9.37 (input (* rustls-slice-str)))
9.38@@ -259,10 +259,31 @@
9.39
9.40 (define-alien-routine rustls-server-config-builder-free void (config (* rustls-server-config-builder)))
9.41
9.42-(define-alien-routine rustls-server-config-builder-build (* rustls-server-config) (* rustls-server-config-builder))
9.43+(define-alien-routine rustls-server-config-builder-build (* rustls-server-config) (builder (* rustls-server-config-builder)))
9.44
9.45 (define-alien-routine rustls-server-config-free void (config (* rustls-server-config)))
9.46
9.47 (define-alien-routine rustls-server-connection-new rustls-result
9.48 (config (* rustls-server-config))
9.49 (conn-out (* (* rustls-connection))))
9.50+
9.51+(define-alien-routine rustls-server-connection-get-server-name rustls-result
9.52+ (conn (* rustls-connection))
9.53+ (buf (* unsigned-char))
9.54+ (count size-t)
9.55+ (out-n (* size-t)))
9.56+
9.57+(define-alien-routine rustls-server-config-builder-set-hello-callback rustls-result
9.58+ (builder (* rustls-server-config-builder))
9.59+ (callback rustls-client-hello-callback))
9.60+
9.61+(define-alien-routine rustls-client-hello-select-certified-key rustls-result
9.62+ (hello (* rustls-client-hello))
9.63+ (certified-keys (* (* rustls-certified-key)))
9.64+ (certified-keys-len size-t)
9.65+ (out-key (* (* rustls-certified-key))))
9.66+
9.67+(define-alien-routine rustls-server-config-builder-set-persistence rustls-result
9.68+ (builder (* rustls-server-config-builder))
9.69+ (get-cb rustls-session-store-get-callback)
9.70+ (put-cb rustls-session-store-put-callback))
10.1--- a/lisp/ffi/rustls/tests.lisp Sun Sep 29 00:31:24 2024 -0400
10.2+++ b/lisp/ffi/rustls/tests.lisp Sun Sep 29 22:44:52 2024 -0400
10.3@@ -11,5 +11,7 @@
10.4
10.5 (load-rustls)
10.6
10.7-(deftest rustls ())
10.8+(deftest sanity ()
10.9+ (is (stringp (rustls::rustls-version))))
10.10
10.11+(deftest basic ())
11.1--- a/lisp/ffi/rustls/types.lisp Sun Sep 29 00:31:24 2024 -0400
11.2+++ b/lisp/ffi/rustls/types.lisp Sun Sep 29 22:44:52 2024 -0400
11.3@@ -5,126 +5,124 @@
11.4 ;;; Code:
11.5 (in-package :rustls)
11.6
11.7-(define-alien-type rustls-result unsigned-int)
11.8+(define-alien-enum (rustls-result unsigned-int)
11.9+ :ok 7000
11.10+ :io 7001
11.11+ :null-parameter 7002
11.12+ :invalid-dns-name-error 7003
11.13+ :panic 7004
11.14+ :certificate-parse-error 7005
11.15+ :private-key-parse-error 7006
11.16+ :insufficient-size 7007
11.17+ :not-found 7008
11.18+ :invalid-parameter 7009
11.19+ :unexpected-eof 7010
11.20+ :plaintext-empty 7011
11.21+ :acceptor-not-ready 7012
11.22+ :already-used 7013
11.23+ :certificate-revocation-list-parse-error 7014
11.24+ :no-certificates-presented 7101
11.25+ :decrypt-error 7102
11.26+ :failed-to-get-current-time 7103
11.27+ :failed-to-get-random-bytes 7113
11.28+ :handshake-not-complete 7104
11.29+ :peer-sent-oversized-record 7105
11.30+ :no-application-protocol 7106
11.31+ :bad-max-fragment-size 7114
11.32+ :unsupported-name-type 7115
11.33+ :encrypt-error 7116
11.34+ :cert-encoding-bad 7121
11.35+ :cert-expired 7122
11.36+ :cert-not-yet-valid 7123
11.37+ :cert-revoked 7124
11.38+ :cert-unhandled-critical-extension 7125
11.39+ :cert-unknown-issuer 7126
11.40+ :cert-bad-signature 7127
11.41+ :cert-not-valid-for-name 7128
11.42+ :cert-invalid-purpose 7129
11.43+ :cert-application-verification-failure 7130
11.44+ :cert-other-error 7131
11.45+ :message-handshake-payload-too-large 7133
11.46+ :message-invalid-ccs 7134
11.47+ :message-invalid-content-type 7135
11.48+ :message-invalid-cert-status-type 7136
11.49+ :message-invalid-cert-request 7137
11.50+ :message-invalid-dh-params 7138
11.51+ :message-invalid-empty-payload 7139
11.52+ :message-invalid-key-update 7140
11.53+ :message-invalid-server-name 7141
11.54+ :message-too-large 7142
11.55+ :message-too-short 7143
11.56+ :message-missing-data 7144
11.57+ :message-missing-key-exchange 7145
11.58+ :message-no-signature-schemes 7146
11.59+ :message-trailing-data 7147
11.60+ :message-unexpected-message 7148
11.61+ :message-unknown-protocol-version 7149
11.62+ :message-unsupported-compression 7150
11.63+ :message-unsupported-curve-type 7151
11.64+ :message-unsupported-key-exchange-algorithm 7152
11.65+ :message-invalid-other 7153
11.66+ :peer-incompatible-error 7107
11.67+ :peer-misbehaved-error 7108
11.68+ :inappropriate-message 7109
11.69+ :inappropriate-handshake-message 7110
11.70+ :general 7112
11.71+ :alert-close-notify 7200
11.72+ :alert-unexpected-message 7201
11.73+ :alert-bad-record-mac 7202
11.74+ :alert-decryption-failed 7203
11.75+ :alert-record-overflow 7204
11.76+ :alert-decompression-failure 7205
11.77+ :alert-handshake-failure 7206
11.78+ :alert-no-certificate 7207
11.79+ :alert-bad-certificate 7208
11.80+ :alert-unsupported-certificate 7209
11.81+ :alert-certificate-revoked 7210
11.82+ :alert-certificate-expired 7211
11.83+ :alert-certificate-unknown 7212
11.84+ :alert-illegal-parameter 7213
11.85+ :alert-unknown-ca 7214
11.86+ :alert-access-denied 7215
11.87+ :alert-decode-error 7216
11.88+ :alert-decrypt-error 7217
11.89+ :alert-export-restriction 7218
11.90+ :alert-protocol-version 7219
11.91+ :alert-insufficient-security 7220
11.92+ :alert-internal-error 7221
11.93+ :alert-inappropriate-fallback 7222
11.94+ :alert-user-canceled 7223
11.95+ :alert-no-renegotiation 7224
11.96+ :alert-missing-extension 7225
11.97+ :alert-unsupported-extension 7226
11.98+ :alert-certificate-unobtainable 7227
11.99+ :alert-unrecognised-name 7228
11.100+ :alert-bad-certificate-status-response 7229
11.101+ :alert-bad-certificate-hash-value 7230
11.102+ :alert-unknown-psk-identity 7231
11.103+ :alert-certificate-required 7232
11.104+ :alert-no-application-protocol 7233
11.105+ :alert-unknown 7234
11.106+ :cert-revocation-list-bad-signature 7400
11.107+ :cert-revocation-list-invalid-crl-number 7401
11.108+ :cert-revocation-list-invalid-revoked-cert-serial-number 7402
11.109+ :cert-revocation-list-issuer-invalid-for-crl 7403
11.110+ :cert-revocation-list-other-error 7404
11.111+ :cert-revocation-list-parse-error 7405
11.112+ :cert-revocation-list-unsupported-crl-version 7406
11.113+ :cert-revocation-list-unsupported-critical-extension 7407
11.114+ :cert-revocation-list-unsupported-delta-crl 7408
11.115+ :cert-revocation-list-unsupported-indirect-crl 7409
11.116+ :cert-revocation-list-unsupported-revocation-reason 7410
11.117+ :client-cert-verifier-builder-no-root-anchors 7500)
11.118
11.119-(defconstant +rustls-result-ok+ 7000)
11.120-(defconstant +rustls-result-io+ 7001)
11.121-(defconstant +rustls-result-null-parameter+ 7002)
11.122-(defconstant +rustls-result-invalid-dns-name-error+ 7003)
11.123-(defconstant +rustls-result-panic+ 7004)
11.124-(defconstant +rustls-result-certificate-parse-error+ 7005)
11.125-(defconstant +rustls-result-private-key-parse-error+ 7006)
11.126-(defconstant +rustls-result-insufficient-size+ 7007)
11.127-(defconstant +rustls-result-not-found+ 7008)
11.128-(defconstant +rustls-result-invalid-parameter+ 7009)
11.129-(defconstant +rustls-result-unexpected-eof+ 7010)
11.130-(defconstant +rustls-result-plaintext-empty+ 7011)
11.131-(defconstant +rustls-result-acceptor-not-ready+ 7012)
11.132-(defconstant +rustls-result-already-used+ 7013)
11.133-(defconstant +rustls-result-certificate-revocation-list-parse-error+ 7014)
11.134-(defconstant +rustls-result-no-certificates-presented+ 7101)
11.135-(defconstant +rustls-result-decrypt-error+ 7102)
11.136-(defconstant +rustls-result-failed-to-get-current-time+ 7103)
11.137-(defconstant +rustls-result-failed-to-get-random-bytes+ 7113)
11.138-(defconstant +rustls-result-handshake-not-complete+ 7104)
11.139-(defconstant +rustls-result-peer-sent-oversized-record+ 7105)
11.140-(defconstant +rustls-result-no-application-protocol+ 7106)
11.141-(defconstant +rustls-result-bad-max-fragment-size+ 7114)
11.142-(defconstant +rustls-result-unsupported-name-type+ 7115)
11.143-(defconstant +rustls-result-encrypt-error+ 7116)
11.144-(defconstant +rustls-result-cert-encoding-bad+ 7121)
11.145-(defconstant +rustls-result-cert-expired+ 7122)
11.146-(defconstant +rustls-result-cert-not-yet-valid+ 7123)
11.147-(defconstant +rustls-result-cert-revoked+ 7124)
11.148-(defconstant +rustls-result-cert-unhandled-critical-extension+ 7125)
11.149-(defconstant +rustls-result-cert-unknown-issuer+ 7126)
11.150-(defconstant +rustls-result-cert-bad-signature+ 7127)
11.151-(defconstant +rustls-result-cert-not-valid-for-name+ 7128)
11.152-(defconstant +rustls-result-cert-invalid-purpose+ 7129)
11.153-(defconstant +rustls-result-cert-application-verification-failure+ 7130)
11.154-(defconstant +rustls-result-cert-other-error+ 7131)
11.155-(defconstant +rustls-result-message-handshake-payload-too-large+ 7133)
11.156-(defconstant +rustls-result-message-invalid-ccs+ 7134)
11.157-(defconstant +rustls-result-message-invalid-content-type+ 7135)
11.158-(defconstant +rustls-result-message-invalid-cert-status-type+ 7136)
11.159-(defconstant +rustls-result-message-invalid-cert-request+ 7137)
11.160-(defconstant +rustls-result-message-invalid-dh-params+ 7138)
11.161-(defconstant +rustls-result-message-invalid-empty-payload+ 7139)
11.162-(defconstant +rustls-result-message-invalid-key-update+ 7140)
11.163-(defconstant +rustls-result-message-invalid-server-name+ 7141)
11.164-(defconstant +rustls-result-message-too-large+ 7142)
11.165-(defconstant +rustls-result-message-too-short+ 7143)
11.166-(defconstant +rustls-result-message-missing-data+ 7144)
11.167-(defconstant +rustls-result-message-missing-key-exchange+ 7145)
11.168-(defconstant +rustls-result-message-no-signature-schemes+ 7146)
11.169-(defconstant +rustls-result-message-trailing-data+ 7147)
11.170-(defconstant +rustls-result-message-unexpected-message+ 7148)
11.171-(defconstant +rustls-result-message-unknown-protocol-version+ 7149)
11.172-(defconstant +rustls-result-message-unsupported-compression+ 7150)
11.173-(defconstant +rustls-result-message-unsupported-curve-type+ 7151)
11.174-(defconstant +rustls-result-message-unsupported-key-exchange-algorithm+ 7152)
11.175-(defconstant +rustls-result-message-invalid-other+ 7153)
11.176-(defconstant +rustls-result-peer-incompatible-error+ 7107)
11.177-(defconstant +rustls-result-peer-misbehaved-error+ 7108)
11.178-(defconstant +rustls-result-inappropriate-message+ 7109)
11.179-(defconstant +rustls-result-inappropriate-handshake-message+ 7110)
11.180-(defconstant +rustls-result-general+ 7112)
11.181-(defconstant +rustls-result-alert-close-notify+ 7200)
11.182-(defconstant +rustls-result-alert-unexpected-message+ 7201)
11.183-(defconstant +rustls-result-alert-bad-record-mac+ 7202)
11.184-(defconstant +rustls-result-alert-decryption-failed+ 7203)
11.185-(defconstant +rustls-result-alert-record-overflow+ 7204)
11.186-(defconstant +rustls-result-alert-decompression-failure+ 7205)
11.187-(defconstant +rustls-result-alert-handshake-failure+ 7206)
11.188-(defconstant +rustls-result-alert-no-certificate+ 7207)
11.189-(defconstant +rustls-result-alert-bad-certificate+ 7208)
11.190-(defconstant +rustls-result-alert-unsupported-certificate+ 7209)
11.191-(defconstant +rustls-result-alert-certificate-revoked+ 7210)
11.192-(defconstant +rustls-result-alert-certificate-expired+ 7211)
11.193-(defconstant +rustls-result-alert-certificate-unknown+ 7212)
11.194-(defconstant +rustls-result-alert-illegal-parameter+ 7213)
11.195-(defconstant +rustls-result-alert-unknown-ca+ 7214)
11.196-(defconstant +rustls-result-alert-access-denied+ 7215)
11.197-(defconstant +rustls-result-alert-decode-error+ 7216)
11.198-(defconstant +rustls-result-alert-decrypt-error+ 7217)
11.199-(defconstant +rustls-result-alert-export-restriction+ 7218)
11.200-(defconstant +rustls-result-alert-protocol-version+ 7219)
11.201-(defconstant +rustls-result-alert-insufficient-security+ 7220)
11.202-(defconstant +rustls-result-alert-internal-error+ 7221)
11.203-(defconstant +rustls-result-alert-inappropriate-fallback+ 7222)
11.204-(defconstant +rustls-result-alert-user-canceled+ 7223)
11.205-(defconstant +rustls-result-alert-no-renegotiation+ 7224)
11.206-(defconstant +rustls-result-alert-missing-extension+ 7225)
11.207-(defconstant +rustls-result-alert-unsupported-extension+ 7226)
11.208-(defconstant +rustls-result-alert-certificate-unobtainable+ 7227)
11.209-(defconstant +rustls-result-alert-unrecognised-name+ 7228)
11.210-(defconstant +rustls-result-alert-bad-certificate-status-response+ 7229)
11.211-(defconstant +rustls-result-alert-bad-certificate-hash-value+ 7230)
11.212-(defconstant +rustls-result-alert-unknown-psk-identity+ 7231)
11.213-(defconstant +rustls-result-alert-certificate-required+ 7232)
11.214-(defconstant +rustls-result-alert-no-application-protocol+ 7233)
11.215-(defconstant +rustls-result-alert-unknown+ 7234)
11.216-(defconstant +rustls-result-cert-revocation-list-bad-signature+ 7400)
11.217-(defconstant +rustls-result-cert-revocation-list-invalid-crl-number+ 7401)
11.218-(defconstant +rustls-result-cert-revocation-list-invalid-revoked-cert-serial-number+ 7402)
11.219-(defconstant +rustls-result-cert-revocation-list-issuer-invalid-for-crl+ 7403)
11.220-(defconstant +rustls-result-cert-revocation-list-other-error+ 7404)
11.221-(defconstant +rustls-result-cert-revocation-list-parse-error+ 7405)
11.222-(defconstant +rustls-result-cert-revocation-list-unsupported-crl-version+ 7406)
11.223-(defconstant +rustls-result-cert-revocation-list-unsupported-critical-extension+ 7407)
11.224-(defconstant +rustls-result-cert-revocation-list-unsupported-delta-crl+ 7408)
11.225-(defconstant +rustls-result-cert-revocation-list-unsupported-indirect-crl+ 7409)
11.226-(defconstant +rustls-result-cert-revocation-list-unsupported-revocation-reason+ 7410)
11.227-(defconstant +rustls-result-client-cert-verifier-builder-no-root-anchors+ 7500)
11.228-
11.229-(define-alien-type rustls-tls-version int)
11.230-
11.231-(defconstant +rustls-tls-version-sslv2+ 512)
11.232-(defconstant +rustls-tls-version-sslv3+ 768)
11.233-(defconstant +rustls-tls-version-tlsv1-0+ 769)
11.234-(defconstant +rustls-tls-version-tlsv1-1+ 770)
11.235-(defconstant +rustls-tls-version-tlsv1-2+ 771)
11.236-(defconstant +rustls-tls-version-tlsv1-3+ 772)
11.237+(define-alien-enum (rustls-tls-version int)
11.238+ :sslv2 512
11.239+ :sslv3 768
11.240+ :tlsv1-0 769
11.241+ :tlsv1-1 770
11.242+ :tlsv1-2 771
11.243+ :tlsv1-3 772)
11.244
11.245 (define-alien-type rustls-accepted (struct rustls-accepted))
11.246
11.247@@ -156,7 +154,10 @@
11.248
11.249 (define-alien-type rustls-server-config-builder (struct rustls-server-config-builder))
11.250
11.251-(define-alien-type rustls-slice-slice-bytes (struct rustls-slice-slice-bytes))
11.252+(define-alien-type rustls-slice-slice-bytes
11.253+ (struct rustls-slice-slice-bytes
11.254+ (data (* unsigned-char))
11.255+ (len size-t)))
11.256
11.257 (define-alien-type rustls-slice-str (struct rustls-slice-str))
11.258
11.259@@ -166,28 +167,104 @@
11.260
11.261 (define-alien-type rustls-web-pki-server-cert-verifier-builder (struct rustls-web-pki-server-cert-verifier-builder))
11.262
11.263-(define-alien-type rustls-str (struct rustls-str))
11.264+(define-alien-type rustls-str
11.265+ (struct rustls-str
11.266+ (data (* char))
11.267+ (len size-t)))
11.268
11.269 (define-alien-type rustls-io-result int)
11.270
11.271-(define-alien-type rustls-slice-bytes (struct rustls-slice-bytes))
11.272+(define-alien-type rustls-slice-bytes
11.273+ (struct rustls-slice-bytes
11.274+ (data (* unsigned-char))
11.275+ (len size-t)))
11.276
11.277 (define-alien-type rustls-verify-server-cert-user-data (* t))
11.278
11.279-(define-alien-type rustls-verify-server-cert-params (struct rustls-verify-server-cert-params))
11.280+(define-alien-type rustls-verify-server-cert-params
11.281+ (struct rustls-verify-server-cert-params
11.282+ (end-entity-cert-der rustls-slice-bytes)
11.283+ (intermediate-certs-der (* rustls-slice-slice-bytes))
11.284+ (server-name rustls-str)
11.285+ (ocsp-response rustls-slice-bytes)))
11.286+
11.287+(define-alien-type rustls-verify-server-cert-callback
11.288+ (function unsigned-int
11.289+ rustls-verify-server-cert-user-data
11.290+ (* rustls-verify-server-cert-params)))
11.291
11.292 (define-alien-type rustls-log-level size-t)
11.293
11.294-(define-alien-type rustls-log-params (struct rustls-log-params))
11.295+(define-alien-type rustls-log-params
11.296+ (struct rustls-log-params
11.297+ (level rustls-log-level)
11.298+ (message rustls-str)))
11.299+
11.300+(define-alien-type rustls-log-callback
11.301+ (function void
11.302+ (* t)
11.303+ (* rustls-log-params)))
11.304
11.305 (define-alien-type rustls-client-hello-userdata (* t))
11.306
11.307-(define-alien-type rustls-slice-u16 (struct rustls-slice-u16))
11.308+(define-alien-type rustls-slice-u16
11.309+ (struct rustls-slice-u16
11.310+ (data (* unsigned-short))
11.311+ (len size-t)))
11.312
11.313-(define-alien-type rustls-client-hello (struct rustls-client-hello))
11.314+(define-alien-type rustls-client-hello
11.315+ (struct rustls-client-hello
11.316+ (server-name rustls-str)
11.317+ (signature-schemes rustls-slice-u16)
11.318+ (alpn (* rustls-slice-slice-bytes))))
11.319
11.320 (define-alien-type rustls-certified-key (struct rustls-certified-key))
11.321
11.322+(define-alien-type rustls-client-hello-callback
11.323+ (function (* rustls-certified-key)
11.324+ rustls-client-hello-userdata
11.325+ (* rustls-client-hello)))
11.326+
11.327 (define-alien-type rustls-session-store-userdata (* t))
11.328
11.329+(define-alien-type rustls-session-store-get-callback
11.330+ (function unsigned-int
11.331+ rustls-session-store-userdata
11.332+ (* rustls-slice-bytes)
11.333+ int
11.334+ (* unsigned-char)
11.335+ size-t
11.336+ (* size-t)))
11.337+
11.338+(define-alien-type rustls-session-store-put-callback
11.339+ (function unsigned-int
11.340+ rustls-session-store-userdata
11.341+ (* rustls-slice-bytes)
11.342+ (* rustls-slice-bytes)))
11.343+
11.344 (define-alien-type rustls-supported-ciphersuite (struct rustls-supported-ciphersuite))
11.345+
11.346+(define-alien-type rustls-web-pki-client-vert-verifier-builder (struct rustls-web-pki-client-vert-verifier-builder))
11.347+
11.348+(define-alien-type rustls-web-pki-server-cert-verifier-builder (struct rustls-web-pki-server-cert-verifier-builder))
11.349+
11.350+(define-alien-type rustls-read-callback
11.351+ (function rustls-io-result
11.352+ (* t)
11.353+ (* unsigned-char)
11.354+ size-t
11.355+ (* size-t)))
11.356+
11.357+(define-alien-type rustls-write-callback
11.358+ (function rustls-io-result
11.359+ (* t)
11.360+ (* unsigned-char)
11.361+ size-t
11.362+ (* size-t)))
11.363+
11.364+(define-alien-type rustls-write-vectored-callback
11.365+ (function rustls-io-result
11.366+ (* t)
11.367+ (* rustls-iovec)
11.368+ size-t
11.369+ (* size-t)))
12.1--- a/lisp/lib/io/kbd.lisp Sun Sep 29 00:31:24 2024 -0400
12.2+++ b/lisp/lib/io/kbd.lisp Sun Sep 29 22:44:52 2024 -0400
12.3@@ -8,6 +8,10 @@
12.4
12.5 ;; - https://www.kernel.org/doc/Documentation/input/event-codes.txt
12.6
12.7+;; - https://github.com/xkbcommon/libxkbcommon/blob/master/tools/interactive-evdev.c
12.8+
12.9+;; - https://gitlab.freedesktop.org/libevdev/libevdev/-/tree/master/tools
12.10+
12.11 ;;; Code:
12.12 (in-package :io/kbd)
12.13 (load-xkbcommon)
12.14@@ -18,10 +22,37 @@
12.15
12.16 (defconstant +evdev-offset+ 8)
12.17
12.18-(defun evdev-bit-is-set (array bit))
12.19+(defconstant +long-bit+ (sb-alien:alien-size sb-alien:unsigned-long))
12.20+
12.21+(defun evdev-bit-p (array bit)
12.22+ "Array elements should be unsigned-long."
12.23+ (let ((idx (/ bit +long-bit+)))
12.24+ ;; the literal 1 here is 1LL in C - there is potential to overflow a
12.25+ ;; singled long.
12.26+ (logand (aref array idx) (ash 1 (mod bit +long-bit+)))))
12.27
12.28-(defun keyboard-device-p (path))
12.29- ;; (sb-posix:ioctl (fd path)
12.30+(defun new-device-from-path (path)
12.31+ (with-fd (fd path :flags sb-posix:o-rdonly :close nil)
12.32+ (sb-alien:with-alien ((dev (* evdev::libevdev)))
12.33+ (let ((ret (evdev:libevdev-new-from-fd fd (sb-alien:addr dev))))
12.34+ (if (minusp ret)
12.35+ (sb-unix::strerror (abs ret))
12.36+ dev)))))
12.37+
12.38+;; evdev::+ev-cnt+ evdev::+key-cnt+
12.39+(defun keyboard-device-p (path)
12.40+ (with-open-file (st path :element-type 'octet)
12.41+ (let ((evbits (make-array evdev::+ev-cnt+))
12.42+ (keybits (make-array evdev::+key-cnt+)))
12.43+ ;; (sb-posix:ioctl (fd path)
12.44+ (read-sequence evbits st)
12.45+ (read-sequence keybits st)
12.46+ ;; (cons evbits keybits)
12.47+ (loop for i from evdev::+key-reserved+ upto evdev::+key-min-interesting+
12.48+ if (not (evdev-bit-p keybits i))
12.49+ do (break)
12.50+ else return t))))
12.51+
12.52 (defun make-keyboard-from-dev (dev keymap compose-table))
12.53
12.54 (defun get-keyboards (keymap compose-table &optional (dir "/dev/input"))
12.55@@ -34,4 +65,23 @@
12.56 ;; (let ((fd (sb-sys:fd-stream-fd file))
12.57 ;; (evbits))))
12.58
12.59-
12.60+;; (xkb::xkb-consumed-mode :xkb)
12.61+
12.62+;; (let ((dev (new-device-from-path "/dev/input/event4")))
12.63+;; (unless (evdev::libevdev-has-event-code dev evdev::+ev-key+ evdev::+key-scrollup+)
12.64+;; (println "probably not a mouse:"))
12.65+;; (println
12.66+;; (list
12.67+;; (evdev::libevdev-get-name dev)
12.68+;; (evdev::libevdev-get-id-bustype dev)
12.69+;; (evdev::libevdev-get-id-vendor dev)))
12.70+;; (with-alien ((ev evdev/input:input-event))
12.71+;; (when (evdev::libevdev-has-event-pending dev)
12.72+;; (println "has event pending"))
12.73+;; (assert (zerop (evdev::libevdev-next-event dev (evdev::libevdev-read-flag :normal) (addr ev))))
12.74+;; (with-alien-slots ((* time) type (code evdev/input::code) (value evdev/input::value)) ev
12.75+;; (println (obj/time:unix-to-timestamp (sb-posix::alien-timeval-sec time)))
12.76+;; (println (evdev::libevdev-event-type-get-name type))
12.77+;; (println (evdev::libevdev-event-code-get-name type code))
12.78+;; (println (evdev::libevdev-event-value-get-name type code value)))))
12.79+
13.1--- a/lisp/std/fmt.lisp Sun Sep 29 00:31:24 2024 -0400
13.2+++ b/lisp/std/fmt.lisp Sun Sep 29 22:44:52 2024 -0400
13.3@@ -23,17 +23,17 @@
13.4 (format t ";; *print-readably* = ~a~%" *print-readably*)
13.5 (format t ";; *print-right-margin* = ~a~%" *print-right-margin*))
13.6
13.7-(defun fmt-row (data)
13.8- (format nil "| ~{~A~^ | ~} |~%" data))
13.9+(defun fmt-row (data &optional stream)
13.10+ (format stream "| ~{~A~^ | ~} |~%" data))
13.11
13.12-(defun format-sxhash (code)
13.13+(defun format-sxhash (code &optional stream)
13.14 "Turn the fixnum value CODE into a human-friendly string. CODE should
13.15 be produced by `sxhash'."
13.16 (let (r)
13.17 (dotimes (i 8 r)
13.18 (push (ldb (byte 8 (* i 8)) code) r))
13.19 (format
13.20- nil
13.21+ stream
13.22 "~{~A~^-~}"
13.23 (mapcar
13.24 (lambda (x) (format nil "~{~(~2,'0x~)~}" x))
14.1--- a/lisp/std/os.lisp Sun Sep 29 00:31:24 2024 -0400
14.2+++ b/lisp/std/os.lisp Sun Sep 29 22:44:52 2024 -0400
14.3@@ -35,3 +35,8 @@
14.4 (sb-posix:umask ,umask)))))
14.5
14.6 ;; (with-umask #o22 nil)
14.7+
14.8+(defmacro with-fd ((fvar fname &key (flags #.sb-posix:o-rdonly) (close t)) &body body)
14.9+ `(let* ((,fvar (sb-posix:open ,fname ,flags)))
14.10+ (unwind-protect (progn ,@body)
14.11+ ,@(when close `(sb-posix:close ,fvar)))))
15.1--- a/lisp/std/pkg.lisp Sun Sep 29 00:31:24 2024 -0400
15.2+++ b/lisp/std/pkg.lisp Sun Sep 29 22:44:52 2024 -0400
15.3@@ -402,7 +402,8 @@
15.4 (:export
15.5 :list-all-users
15.6 :list-all-groups
15.7- :with-umask))
15.8+ :with-umask
15.9+ :with-fd))
15.10
15.11 (defpkg :std/file
15.12 (:use :cl)