-(def-alien-routine ("getpid" unix-getpid) int)
-
-;;; Return the real user-id associated with the current process.
-(def-alien-routine ("getuid" unix-getuid) int)
+(define-alien-routine ("getpid" unix-getpid) int)
+
+;;; Return the real user id associated with the current process.
+(define-alien-routine ("getuid" unix-getuid) int)
+
+;;; Translate a user id into a login name.
+(defun uid-username (uid)
+ (or (newcharstar-string (alien-funcall (extern-alien "uid_username"
+ (function (* char) int))
+ uid))
+ (error "found no match for Unix uid=~S" uid)))
+
+;;; Return the namestring of the home directory, being careful to
+;;; include a trailing #\/
+(defun uid-homedir (uid)
+ (or (newcharstar-string (alien-funcall (extern-alien "uid_homedir"
+ (function (* char) int))
+ uid))
+ (error "failed to resolve home directory for Unix uid=~S" uid)))