-(defmacro define-pw-call (name arg type)
- #-win32
- ;; FIXME: this isn't the documented way of doing this, surely?
- (let ((lisp-name (intern (string-upcase name) :sb-posix)))
- `(progn
- (export ',lisp-name :sb-posix)
- (declaim (inline ,lisp-name))
- (defun ,lisp-name (,arg)
- (let ((r (alien-funcall (extern-alien ,name ,type) ,arg)))
- (if (null-alien r)
- nil
- (alien-to-passwd r)))))))
-
-(define-pw-call "getpwnam" login-name (function (* alien-passwd) c-string))
-(define-pw-call "getpwuid" uid (function (* alien-passwd) uid-t))
-