mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2025-01-18 17:53:31 +08:00
add fstat implementation.
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@1057 bbd45198-f89e-11dd-88c7-29a3b14d5316
This commit is contained in:
parent
32f6598912
commit
d4c03d07cf
@ -220,7 +220,6 @@ int dfs_elm_open(struct dfs_fd* file)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* open directory */
|
||||
dir = (DIR *)rt_malloc(sizeof(DIR));
|
||||
if (dir == RT_NULL)
|
||||
|
@ -99,6 +99,7 @@ off_t lseek(int fd, off_t offset, int whence);
|
||||
int rename(const char* old, const char* new );
|
||||
int unlink(const char *pathname);
|
||||
int stat(const char *file, struct stat *buf);
|
||||
int fstat(int fildes, struct stat *buf);
|
||||
int statfs(const char *path, struct statfs *buf);
|
||||
|
||||
/* directory api*/
|
||||
|
@ -257,7 +257,7 @@ int unlink(const char *pathname)
|
||||
* this function is a POSIX compliant version, which will get file information.
|
||||
*
|
||||
* @param file the file name
|
||||
* @param buf the the data buffer to save stat description.
|
||||
* @param buf the data buffer to save stat description.
|
||||
*
|
||||
* @return 0 on successful, -1 on failed.
|
||||
*/
|
||||
@ -274,6 +274,45 @@ int stat(const char *file, struct stat *buf)
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* this function is a POSIX compliant version, which will get file status.
|
||||
*
|
||||
* @param fildes the file description
|
||||
* @param buf the data buffer to save stat description.
|
||||
*/
|
||||
int fstat(int fildes, struct stat *buf)
|
||||
{
|
||||
int result;
|
||||
struct dfs_fd* d;
|
||||
|
||||
/* get the fd */
|
||||
d = fd_get(fildes);
|
||||
if (d == RT_NULL)
|
||||
{
|
||||
rt_set_errno(-RT_ERROR);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* it's the root directory */
|
||||
buf->st_dev = 0;
|
||||
|
||||
buf->st_mode = DFS_S_IFREG | DFS_S_IRUSR | DFS_S_IRGRP | DFS_S_IROTH |
|
||||
DFS_S_IWUSR | DFS_S_IWGRP | DFS_S_IWOTH;
|
||||
if (d->type == FT_DIRECTORY)
|
||||
{
|
||||
buf->st_mode &= ~DFS_S_IFREG;
|
||||
buf->st_mode |= DFS_S_IFDIR | DFS_S_IXUSR | DFS_S_IXGRP | DFS_S_IXOTH;
|
||||
}
|
||||
|
||||
buf->st_size = d->size;
|
||||
buf->st_mtime = 0;
|
||||
buf->st_blksize = 512;
|
||||
|
||||
fd_put(d);
|
||||
|
||||
return DFS_STATUS_OK;
|
||||
}
|
||||
|
||||
/**
|
||||
* this function is a POSIX compliant version, which will return the
|
||||
* information about a mounted file system.
|
||||
|
Loading…
x
Reference in New Issue
Block a user