@(do (defun put-binary-str (str stream) (let ((len (length str))) (put-byte (trunc len 256) stream) (put-byte (mod len 256) stream) (put-string str stream))) (defun sasl-auth (user pass) (let ((sock (open-socket af-unix sock-stream))) (sock-connect sock (new sockaddr-un path "/var/run/saslauthd/mux")) (put-binary-str user sock) (put-binary-str pass sock) (put-binary-str "" sock) (put-binary-str "" sock) (let ((response (get-string sock))) (equal [response 2..4] "OK"))))) @(define auth (userid password)) @ (require (sasl-auth userid password)) @(end)