def stat(self, filename, parent=None, lstat=False, fstat=False): """stat, lstat and fstat requests. Return a dictionary of stats. Filename is an handle in the fstat variant. """ if not lstat and fstat: # filename is an handle _stat = filename.stat() elif lstat: _stat = self.client.lstat(filename) else: try: _stat = self.client.stat(filename if not parent else os.path.join(parent, filename)) except: # we could have a broken symlink # but lstat could be false: # this happens in case of readdir responses _stat = self.client.lstat(filename if not parent else os.path.join(parent, filename)) if fstat: longname = None # not needed in case of fstat else: longname = stat_to_longname(_stat, filename) # see stat_helpers.py return { b"size": _stat.st_size, b"uid": _stat.st_uid, b"gid": _stat.st_gid, b"perm": _stat.st_mode, b"atime": _stat.st_atime, b"mtime": _stat.st_mtime, b"longname": longname, }
def stat(self, filename, lstat=False, fstat=False, parent=None): """stat, lstat and fstat requests. Return a dictionary of stats. Filename is an handle in the fstat variant. If parent is not None, then filename is inside parent, and a join is needed. This happens in case of readdir responses: a filename (not a path) has to be returned, but the stat call need (obviously) a full path. """ if not lstat and fstat: # filename is an handle _stat = os.fstat(filename) elif lstat: _stat = os.lstat(filename) else: try: _stat = os.stat( filename if not parent else os.path.join(parent, filename) ) except: # we could have a broken symlink # but lstat could be false: # this happens in case of readdir responses _stat = os.lstat( filename if not parent else os.path.join(parent, filename) ) if fstat: longname = None # not needed in case of fstat else: longname = stat_to_longname( # see stat_helpers.py _stat, filename ) return { b'size': _stat.st_size, b'uid': _stat.st_uid, b'gid': _stat.st_gid, b'perm': _stat.st_mode, b'atime': _stat.st_atime, b'mtime': _stat.st_mtime, b'longname': longname }