From: Andreas F. <ant...@us...> - 2007-10-07 11:00:43
|
Update of /cvsroot/sbcl/sbcl/contrib/sb-posix In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv10404/contrib/sb-posix Modified Files: interface.lisp posix-tests.lisp Log Message: 1.0.10.34: Fix sb-posix:get{{gr,pw}nam},pwuid,grgid} for non-existing entries. Used to signal memory fault, now returns NIL on queries for non-existing users or groups. Index: interface.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/contrib/sb-posix/interface.lisp,v retrieving revision 1.47 retrieving revision 1.48 diff -u -d -r1.47 -r1.48 --- interface.lisp 6 Oct 2007 16:53:53 -0000 1.47 +++ interface.lisp 7 Oct 2007 11:00:34 -0000 1.48 @@ -397,8 +397,8 @@ (declaim (inline ,lisp-name)) (defun ,lisp-name (,arg) (let ((r (alien-funcall (extern-alien ,name ,type) ,arg))) - (if (null r) - r + (if (null-alien r) + nil (alien-to-passwd r))))))) (define-pw-call "getpwnam" login-name (function (* alien-passwd) c-string)) @@ -420,8 +420,8 @@ (declaim (inline ,lisp-name)) (defun ,lisp-name (,arg) (let ((r (alien-funcall (extern-alien ,name ,type) ,arg))) - (if (null r) - r + (if (null-alien r) + nil (alien-to-group r))))))) (define-gr-call "getgrnam" login-name (function (* alien-group) c-string)) Index: posix-tests.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/contrib/sb-posix/posix-tests.lisp,v retrieving revision 1.31 retrieving revision 1.32 diff -u -d -r1.31 -r1.32 --- posix-tests.lisp 6 Oct 2007 16:53:53 -0000 1.31 +++ posix-tests.lisp 7 Oct 2007 11:00:35 -0000 1.32 @@ -467,6 +467,14 @@ nil) #-win32 +(deftest pwent.non-existing + ;; make sure that we get something sensible, not an error + (handler-case (progn (sb-posix:getpwnam "almost-certainly-does-not-exist") + nil) + (t (cond) t)) + nil) + +#-win32 (deftest grent.1 ;; make sure that we found something (not (sb-posix:getgrgid 0)) @@ -478,6 +486,14 @@ (not (sb-posix:getgrnam "wheel")) nil) +#-win32 +(deftest grent.non-existing + ;; make sure that we get something sensible, not an error + (handler-case (progn (sb-posix:getgrnam "almost-certainly-does-not-exist") + nil) + (t (cond) t)) + nil) + #+nil ;; Requires root or special group + plus a sensible thing on the port (deftest cfget/setispeed.1 |