From daf13a0f4f7192f1350107c1a4cba32cb686d431 Mon Sep 17 00:00:00 2001 From: Doug Coleman <doug.coleman@gmail.com> Date: Thu, 2 Feb 2012 19:58:24 -0800 Subject: [PATCH] unix.groups: Return an empty sequence if the user in 'user user-groups' doesn't exist. --- basis/unix/groups/groups-tests.factor | 3 +++ basis/unix/groups/groups.factor | 10 +++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/basis/unix/groups/groups-tests.factor b/basis/unix/groups/groups-tests.factor index 4fd633f8cb..53a8a593ea 100644 --- a/basis/unix/groups/groups-tests.factor +++ b/basis/unix/groups/groups-tests.factor @@ -40,3 +40,6 @@ IN: unix.groups.tests { f } [ "root" user-groups empty? ] unit-test + +{ t } +[ "29032039029302930290390329uafjklajsdfkasjflaskjflsadkjfroot" user-groups empty? ] unit-test diff --git a/basis/unix/groups/groups.factor b/basis/unix/groups/groups.factor index 531768656f..cfd37b0e56 100644 --- a/basis/unix/groups/groups.factor +++ b/basis/unix/groups/groups.factor @@ -70,9 +70,13 @@ ERROR: no-group string ; [ 4 grouping:group ] dip head-slice [ uint deref group-name ] map ; : (user-groups) ( string -- seq ) - dup user-passwd gid>> 64 [ 4 * <byte-array> ] keep - int <ref> [ [ unix.ffi:getgrouplist ] unix-system-call drop ] 2keep - int deref >groups ; + dup user-passwd [ + gid>> 64 [ 4 * <byte-array> ] keep + int <ref> [ [ unix.ffi:getgrouplist ] unix-system-call drop ] 2keep + int deref >groups + ] [ + drop { } + ] if* ; PRIVATE>