FALSE); /* free_segment */
}
+/* Do not lock 'libntfs' here as we are already locked
+ * inside ntfs_readdir().
+ */
static int libntfs_gnomevfs_read_directory_filldir(struct libntfs_directory *libntfs_directory /* dirent */,
const uchar_t *name,const int name_len,const int name_type,const s64 pos,const MFT_REF mref,const unsigned dt_type)
{
if (file_info->type!=GNOME_VFS_FILE_TYPE_UNKNOWN)
file_info->valid_fields|=GNOME_VFS_FILE_INFO_FIELDS_TYPE;
+ /* Detect 'file_info->size': */
+ if (file_info->type==GNOME_VFS_FILE_TYPE_REGULAR) {
+ntfs_inode *inode;
+
+ inode=ntfs_inode_open(libntfs_directory->inode->vol,mref);
+ /* FIXME: Check failed 'inode' open. */
+ if (inode) {
+ntfs_attr *attr;
+int errint;
+
+ attr=ntfs_attr_open(
+ inode, /* ni */
+ AT_DATA, /* type */
+ NULL, /* name */
+ 0); /* name_len */
+ /* FIXME: Check failed 'attr' open. */
+ if (attr) {
+ file_info->size=attr->data_size; /* FIXME: Is 'data_size' the right field? */
+ file_info->valid_fields|=GNOME_VFS_FILE_INFO_FIELDS_SIZE;
+ ntfs_attr_close(attr);
+ }
+ errint=ntfs_inode_close(inode);
+ /* FIXME: Check 'errint'. */
+ }
+ }
+
libntfs_directory->file_info_list=g_list_prepend(libntfs_directory->file_info_list,file_info);
return 0; /* continue traversal */