150def lstat(filename):
151 st = StatResult()
152 output = rfstat_dict(filename)
153 if output is None: raise RFIOError('file %s not found' % filename)
154 for name in output:
155 value = output[name]
156 if name == 'Device':
157 st.st_dev = eval('0x' + value)
158 elif name.startswith('Inode'):
159 st.st_ino = int(value)
160 elif name.find('blocks') != -1:
161 st.st_blocks = int(value)
162 elif name == 'Protection':
163 octal = value.split()[-1][1:-1]
164 st.st_mode = eval('0' + octal)
165 elif name == 'Hard Links':
166 st.st_nlink = int(value)
167 elif name == 'Uid':
168 st.st_uid = int(value.split()[0])
169 elif name == 'Gid':
170 st.st_gid = int(value.split()[0])
171 elif name.startswith('Size'):
172 st.st_size = int(value)
173 elif name == 'Last access':
174 st.st_atime = _stat_time(value)
175 elif name == 'Last modify':
176 st.st_mtime = _stat_time(value)
177 elif name == 'Last stat. mod.':
178 st.st_ctime = _stat_time(value)
179
180 return st
181
182