Thanks Lewis,

my bad. Everything needed is in there, even examples :) Cool. Now, there is 
still a problem with utf8 in path names, but I suspect it's inside 
FileReference.

Thierry
________________________________________
De : Pharo-dev [pharo-dev-boun...@lists.pharo.org] de la part de David T. Lewis 
[le...@mail.msen.com]
Date d'envoi : mardi 2 juillet 2013 17:59
À : Pharo Development List
Objet : Re: [Pharo-dev] [PROVENANCE  INTERNET] Re:  FileSystem Permissions

Hi Thierry,

You were right in asking for stat/fstat. The unix stat() call provides the
uid and gid of the file, so those values are provided by primitiveFileStat.
In order to determine if the file is e.g. readable, you need that information
along with the file protection mask (also provided by primitiveFileStat),
and of course you need to know the uid and gid of your VM process, see
primitiveGetUid, primitiveGetGid, primitiveGetEUid and primitiveGetEGid
in UnixOSProcessPlugin.

There are also some unit tests that show how this works, for example:

  UnixProcessAccessorTestCase>>testIsReadableForUserInGroup


I'm not sure if this helps with your original question, but maybe it
will help as a reference.

Dave


On Tue, Jul 02, 2013 at 04:46:25PM +0200, Goubier Thierry wrote:
> Hi Lewis,
>
> we have already this in a way; Pharo provides the permissions as per
> stat in fact, but probably not the uid/guid of the file which would
> allow for a real check of the permissions.
>
> (that is, the current (wrong) situation is that isReadable returns
> ownerCanRead, which has a strong chance of being wrong for a directory
> owned by root, as you can guess)
>
> As you can see, I was wrong in asking for stat/fstat... But thanks for
> the info.
>
> Thierry
>
> Le 02/07/2013 16:32, David T. Lewis a ?crit :
> >On Tue, Jul 02, 2013 at 04:05:18PM +0200, Camillo Bruni wrote:
> >>
> >>On 2013-07-02, at 16:05, Goubier Thierry <thierry.goub...@cea.fr> wrote:
> >>
> >>>
> >>>
> >>>Le 02/07/2013 15:49, Goubier Thierry a ?crit :
> >>>>Done:
> >>>>
> >>>>SLICE-Issue-11102-FileSystemError-Path--root-ThierryGoubier.1
> >>>>
> >>>>In http://ss3.gemstone.com/ss/PharoInbox
> >>>>
> >>>>(It's for 2.0 at the moment. I'll try on 3.0 to port the same code).
> >>>
> >>>Oh, it has a problem with utf8 :(
> >>
> >>and most probably it won't work under OSX.
> >>
> >>I think you have to implement these primitives on the different platform
> >>specific stores,
> >>that implies a separate version for win/mac/linux
> >
> >Both the concept and the implementation will be different on Windows,
> >but for Unix and OS X you can use this for reference:
> >
> >UnixOSProcessPlugin>>primitiveFileStat
> >     "Call stat(2) to obtain the file protection mask for a file. Answer
> >     errno on failure,
> >     or on success answer an array with: UID with: GID with:
> >     protectionMask. The
> >     protectionMask is an Array of four integers representing the
> >     protection mask, or
> >     answer errno on failure. The protection mask is four Integers, each
> >     of which may
> >     be considered an octal digit (0-7), with bit values 4, 2, and 1. The
> >     first digit selects
> >     the set user ID (4) and set group ID (2) and save text image (1)
> >     attributes. The second
> >     digit selects permissions for the user who owns the file: read (4),
> >     write (2), and
> >     execute (1); the third selects permissions for other users in the
> >     file's group, with
> >     the same values; and the fourth for other users not in the file's
> >     group, with the
> >     same values."
> >
> >For example:
> >
> >   OSProcess accessor fileStat: '/etc/hosts'
> >
> >Dave
> >
> >
> >
> >
>
> --
> Thierry Goubier
> CEA list
> Laboratoire des Fondations des Syst?mes Temps R?el Embarqu?s
> 91191 Gif sur Yvette Cedex
> France
> Phone/Fax: +33 (0) 1 69 08 32 92 / 83 95


Reply via email to