Fix a couple bugs in unix.users and add unit tests

db4
Doug Coleman 2009-01-04 11:44:49 -06:00
parent e626431a7e
commit ffe0aac310
3 changed files with 9 additions and 4 deletions

View File

@ -50,7 +50,7 @@ HELP: set-real-user
HELP: user-passwd
{ $values
{ "obj" object }
{ "passwd" passwd } }
{ "passwd/f" "passwd or f" } }
{ $description "Returns the passwd tuple given a username string or user id." } ;
HELP: username

View File

@ -24,3 +24,7 @@ IN: unix.users.tests
[ ] [ effective-user-id [ ] with-effective-user ] unit-test
[ ] [ [ ] with-user-cache ] unit-test
[ "9999999999999999999" ] [ 9999999999999999999 username ] unit-test
[ f ] [ 89898989898989898989898989898 user-passwd ] unit-test

View File

@ -47,17 +47,18 @@ SYMBOL: user-cache
: with-user-cache ( quot -- )
[ <user-cache> user-cache ] dip with-variable ; inline
GENERIC: user-passwd ( obj -- passwd )
GENERIC: user-passwd ( obj -- passwd/f )
M: integer user-passwd ( id -- passwd/f )
user-cache get
[ at ] [ getpwuid passwd>new-passwd ] if* ;
[ at ] [ getpwuid [ passwd>new-passwd ] [ f ] if* ] if* ;
M: string user-passwd ( string -- passwd/f )
getpwnam dup [ passwd>new-passwd ] when ;
: username ( id -- string )
user-passwd username>> ;
dup user-passwd
[ nip username>> ] [ number>string ] if* ;
: user-id ( string -- id )
user-passwd uid>> ;