summaryrefslogtreecommitdiff
path: root/nuttx/fs/fs_closedir.c
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2007-05-26 16:05:59 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2007-05-26 16:05:59 +0000
commit2a3e5f6cd969f93fbb56d7ba2b63d7d8da11e756 (patch)
tree6ecb4e1b2918a65b64e0d3daef3723d5da1344d1 /nuttx/fs/fs_closedir.c
parentd88d061f01f4238008e4f24910820b63e5bd7c82 (diff)
downloadpx4-nuttx-2a3e5f6cd969f93fbb56d7ba2b63d7d8da11e756.tar.gz
px4-nuttx-2a3e5f6cd969f93fbb56d7ba2b63d7d8da11e756.tar.bz2
px4-nuttx-2a3e5f6cd969f93fbb56d7ba2b63d7d8da11e756.zip
Setting up for mountpoint support
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@250 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx/fs/fs_closedir.c')
-rw-r--r--nuttx/fs/fs_closedir.c31
1 files changed, 25 insertions, 6 deletions
diff --git a/nuttx/fs/fs_closedir.c b/nuttx/fs/fs_closedir.c
index fd2d79d05..a8104b4d2 100644
--- a/nuttx/fs/fs_closedir.c
+++ b/nuttx/fs/fs_closedir.c
@@ -77,22 +77,41 @@ int closedir(FAR DIR *dirp)
{
struct internal_dir_s *idir = (struct internal_dir_s *)dirp;
- if (!idir)
+ if (!idir || !idir->root)
{
*get_errno_ptr() = EBADF;
return ERROR;
}
- /* Release our references on the contained inodes */
+ /* The way that we handle the close operation depends on what kind of root
+ * inode we have open.
+ */
- if (idir->root)
+ if (IS_MOUNTPT_INODE(idir->root))
{
- inode_release(idir->root);
+ /* The node is a file system mointpoint */
+
+#warning "Mountpoint support not implemented"
+ *get_errno_ptr() = ENOSYS;
+ return ERROR;
+ }
+ else
+ {
+ /* The node is part of the root psuedo file system, release
+ * our contained reference to the 'next' inode.
+ */
+
+ if (idir->u.psuedo.next)
+ {
+ inode_release(idir->u.psuedo.next);
+ }
}
- if (idir->next)
+ /* Release our references on the contained 'root' inode */
+
+ if (idir->root)
{
- inode_release(idir->next);
+ inode_release(idir->root);
}
/* Then release the container */