diff options
author | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2007-05-26 16:05:59 +0000 |
---|---|---|
committer | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2007-05-26 16:05:59 +0000 |
commit | 2a3e5f6cd969f93fbb56d7ba2b63d7d8da11e756 (patch) | |
tree | 6ecb4e1b2918a65b64e0d3daef3723d5da1344d1 /nuttx/fs/fs_closedir.c | |
parent | d88d061f01f4238008e4f24910820b63e5bd7c82 (diff) | |
download | px4-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.c | 31 |
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 */ |