This method formats the permission bits in self.mode using the time-honored format of
the Unix “ls”
command.
# - - - P a t h I n f o . _ _ p e r m F l a g s - - -
def __permFlags ( self ):
"""Format self.mode's permissions as 'rwxrwxrwx'.
"""
Each set of three permission bits is formatted in the
same way, so we call method self.__rwx() to format them. This method
takes three arguments. The first argument is 0 if there
is no read permission, nonzero otherwise. The second and
third arguments are the write and execute permission with
the same convention.
To get the values for each permission, we use a Boolean
“and” (&)
operator on self.mode and the mask values from the
stat module to discard all but
the bit of interest. Mask stat.S_IRUSR has a one bit in the position
of the owner read permission of the mode word, and zeroes
in the other positions. Mask stat.S_IWUSR is a mask for the owner write
permission, and so on.
return ( "%s%s%s" %
(self.__rwx ( self.mode & stat.S_IRUSR,
self.mode & stat.S_IWUSR,
self.mode & stat.S_IXUSR ),
self.__rwx ( self.mode & stat.S_IRGRP,
self.mode & stat.S_IWGRP,
self.mode & stat.S_IXGRP ),
self.__rwx ( self.mode & stat.S_IROTH,
self.mode & stat.S_IWOTH,
self.mode & stat.S_IXOTH ) ) )