mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2025-01-18 10:03:30 +08:00
use RT_NULL instead of NULL in DFS, and format the code in DFS
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@2213 bbd45198-f89e-11dd-88c7-29a3b14d5316
This commit is contained in:
parent
9d4072ce59
commit
fdc7dfc768
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* File : dfs.c
|
||||
* This file is part of Device File System in RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2004-2011, RT-Thread Development Team
|
||||
* COPYRIGHT (C) 2004-2012, RT-Thread Development Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
@ -38,6 +38,7 @@ struct dfs_fd fd_table[DFS_FD_MAX];
|
||||
/**
|
||||
* @addtogroup DFS
|
||||
*/
|
||||
|
||||
/*@{*/
|
||||
|
||||
/**
|
||||
@ -204,6 +205,7 @@ int fd_is_open(const char *pathname)
|
||||
{
|
||||
/* can't find mounted file system */
|
||||
rt_free(fullpath);
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -225,6 +227,7 @@ int fd_is_open(const char *pathname)
|
||||
/* found file in file descriptor table */
|
||||
rt_free(fullpath);
|
||||
dfs_unlock();
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@ -256,6 +259,7 @@ const char *dfs_subdir(const char *directory, const char *filename)
|
||||
{
|
||||
dir --;
|
||||
}
|
||||
|
||||
return dir;
|
||||
}
|
||||
|
||||
@ -276,12 +280,13 @@ char *dfs_normalize_path(const char *directory, const char *filename)
|
||||
RT_ASSERT(filename != RT_NULL);
|
||||
|
||||
#ifdef DFS_USING_WORKDIR
|
||||
if (directory == NULL) /* shall use working directory */
|
||||
if (directory == RT_NULL) /* shall use working directory */
|
||||
directory = &working_directory[0];
|
||||
#else
|
||||
if ((directory == NULL) && (filename[0] != '/'))
|
||||
if ((directory == RT_NULL) && (filename[0] != '/'))
|
||||
{
|
||||
rt_kprintf(NO_WORKING_DIR);
|
||||
|
||||
return RT_NULL;
|
||||
}
|
||||
#endif
|
||||
@ -307,61 +312,61 @@ char *dfs_normalize_path(const char *directory, const char *filename)
|
||||
{
|
||||
char c = *src;
|
||||
|
||||
if (c == '.')
|
||||
{
|
||||
if (!src[1]) src ++; /* '.' and ends */
|
||||
else if (src[1] == '/')
|
||||
{
|
||||
/* './' case */
|
||||
src += 2;
|
||||
if (c == '.')
|
||||
{
|
||||
if (!src[1]) src ++; /* '.' and ends */
|
||||
else if (src[1] == '/')
|
||||
{
|
||||
/* './' case */
|
||||
src += 2;
|
||||
|
||||
while ((*src == '/') && (*src != '\0'))
|
||||
src ++;
|
||||
continue;
|
||||
}
|
||||
else if (src[1] == '.')
|
||||
{
|
||||
if (!src[2])
|
||||
{
|
||||
while ((*src == '/') && (*src != '\0'))
|
||||
src ++;
|
||||
continue;
|
||||
}
|
||||
else if (src[1] == '.')
|
||||
{
|
||||
if (!src[2])
|
||||
{
|
||||
/* '..' and ends case */
|
||||
src += 2;
|
||||
goto up_one;
|
||||
}
|
||||
else if (src[2] == '/')
|
||||
{
|
||||
src += 2;
|
||||
goto up_one;
|
||||
}
|
||||
else if (src[2] == '/')
|
||||
{
|
||||
/* '../' case */
|
||||
src += 3;
|
||||
src += 3;
|
||||
|
||||
while ((*src == '/') && (*src != '\0'))
|
||||
src ++;
|
||||
goto up_one;
|
||||
}
|
||||
}
|
||||
}
|
||||
while ((*src == '/') && (*src != '\0'))
|
||||
src ++;
|
||||
goto up_one;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* copy up the next '/' and erase all '/' */
|
||||
while ((c = *src++) != '\0' && c != '/')
|
||||
*dst ++ = c;
|
||||
/* copy up the next '/' and erase all '/' */
|
||||
while ((c = *src++) != '\0' && c != '/')
|
||||
*dst ++ = c;
|
||||
|
||||
if (c == '/')
|
||||
{
|
||||
*dst ++ = '/';
|
||||
while (c == '/')
|
||||
c = *src++;
|
||||
if (c == '/')
|
||||
{
|
||||
*dst ++ = '/';
|
||||
while (c == '/')
|
||||
c = *src++;
|
||||
|
||||
src --;
|
||||
}
|
||||
else if (!c)
|
||||
break;
|
||||
src --;
|
||||
}
|
||||
else if (!c)
|
||||
break;
|
||||
|
||||
continue;
|
||||
continue;
|
||||
|
||||
up_one:
|
||||
dst --;
|
||||
if (dst < dst0)
|
||||
{
|
||||
rt_free(fullpath);
|
||||
return NULL;
|
||||
return RT_NULL;
|
||||
}
|
||||
while (dst0 < dst && dst[-1] != '/')
|
||||
dst --;
|
||||
|
@ -42,7 +42,7 @@ int open(const char *file, int flags, int mode)
|
||||
rt_set_errno(-DFS_STATUS_ENOMEM);
|
||||
return -1;
|
||||
}
|
||||
d = fd_get(fd);
|
||||
d = fd_get(fd);
|
||||
|
||||
result = dfs_file_open(d, file, flags);
|
||||
if (result < 0)
|
||||
@ -58,6 +58,7 @@ int open(const char *file, int flags, int mode)
|
||||
|
||||
/* release the ref-count of fd */
|
||||
fd_put(d);
|
||||
|
||||
return fd;
|
||||
}
|
||||
|
||||
@ -87,10 +88,12 @@ int close(int fd)
|
||||
if (result < 0)
|
||||
{
|
||||
rt_set_errno(result);
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
fd_put(d);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -110,7 +113,7 @@ int read(int fd, void *buf, size_t len)
|
||||
struct dfs_fd *d;
|
||||
|
||||
/* get the fd */
|
||||
d = fd_get(fd);
|
||||
d = fd_get(fd);
|
||||
if (d == RT_NULL)
|
||||
{
|
||||
rt_set_errno(-DFS_STATUS_EBADF);
|
||||
@ -128,6 +131,7 @@ int read(int fd, void *buf, size_t len)
|
||||
|
||||
/* release the ref-count of fd */
|
||||
fd_put(d);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@ -147,10 +151,11 @@ int write(int fd, const void *buf, size_t len)
|
||||
struct dfs_fd *d;
|
||||
|
||||
/* get the fd */
|
||||
d = fd_get(fd);
|
||||
d = fd_get(fd);
|
||||
if (d == RT_NULL)
|
||||
{
|
||||
rt_set_errno(-DFS_STATUS_EBADF);
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -165,6 +170,7 @@ int write(int fd, const void *buf, size_t len)
|
||||
|
||||
/* release the ref-count of fd */
|
||||
fd_put(d);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@ -206,12 +212,12 @@ off_t lseek(int fd, off_t offset, int whence)
|
||||
default:
|
||||
rt_set_errno(-DFS_STATUS_EINVAL);
|
||||
return -1;
|
||||
|
||||
}
|
||||
|
||||
if (offset < 0)
|
||||
{
|
||||
rt_set_errno(-DFS_STATUS_EINVAL);
|
||||
|
||||
return -1;
|
||||
}
|
||||
result = dfs_file_lseek(d, offset);
|
||||
@ -219,11 +225,13 @@ off_t lseek(int fd, off_t offset, int whence)
|
||||
{
|
||||
fd_put(d);
|
||||
rt_set_errno(result);
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* release the ref-count of fd */
|
||||
fd_put(d);
|
||||
|
||||
return offset;
|
||||
}
|
||||
|
||||
@ -246,8 +254,10 @@ int rename(const char *old, const char *new)
|
||||
if (result < 0)
|
||||
{
|
||||
rt_set_errno(result);
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -267,8 +277,10 @@ int unlink(const char *pathname)
|
||||
if (result < 0)
|
||||
{
|
||||
rt_set_errno(result);
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -288,8 +300,10 @@ int stat(const char *file, struct stat *buf)
|
||||
if (result < 0)
|
||||
{
|
||||
rt_set_errno(result);
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@ -308,6 +322,7 @@ int fstat(int fildes, struct stat *buf)
|
||||
if (d == RT_NULL)
|
||||
{
|
||||
rt_set_errno(-DFS_STATUS_EBADF);
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -348,6 +363,7 @@ int statfs(const char *path, struct statfs *buf)
|
||||
if (result < 0)
|
||||
{
|
||||
rt_set_errno(result);
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -372,6 +388,7 @@ int mkdir(const char *path, mode_t mode)
|
||||
if (fd == -1)
|
||||
{
|
||||
rt_set_errno(-DFS_STATUS_ENOMEM);
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -383,11 +400,13 @@ int mkdir(const char *path, mode_t mode)
|
||||
{
|
||||
fd_put(d);
|
||||
rt_set_errno(result);
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
dfs_file_close(d);
|
||||
fd_put(d);
|
||||
|
||||
return 0;
|
||||
}
|
||||
#ifdef RT_USING_FINSH
|
||||
@ -400,7 +419,7 @@ FINSH_FUNCTION_EXPORT(mkdir, create a directory);
|
||||
*
|
||||
* @param pathname the path name to be removed.
|
||||
*
|
||||
* @return 0 on sucessfull, others on failed.
|
||||
* @return 0 on successful, others on failed.
|
||||
*/
|
||||
int rmdir(const char *pathname)
|
||||
{
|
||||
@ -410,6 +429,7 @@ int rmdir(const char *pathname)
|
||||
if (result < 0)
|
||||
{
|
||||
rt_set_errno(result);
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -436,6 +456,7 @@ DIR *opendir(const char *name)
|
||||
if (fd == -1)
|
||||
{
|
||||
rt_set_errno(-DFS_STATUS_ENOMEM);
|
||||
|
||||
return RT_NULL;
|
||||
}
|
||||
d = fd_get(fd);
|
||||
@ -452,10 +473,11 @@ DIR *opendir(const char *name)
|
||||
}
|
||||
else
|
||||
{
|
||||
rt_memset(t, 0, sizeof(DIR));
|
||||
t->fd = fd;
|
||||
rt_memset(t, 0, sizeof(DIR));
|
||||
t->fd = fd;
|
||||
}
|
||||
fd_put(d);
|
||||
|
||||
return t;
|
||||
}
|
||||
|
||||
@ -485,6 +507,7 @@ struct dirent *readdir(DIR *d)
|
||||
if (fd == RT_NULL)
|
||||
{
|
||||
rt_set_errno(-DFS_STATUS_EBADF);
|
||||
|
||||
return RT_NULL;
|
||||
}
|
||||
|
||||
@ -505,6 +528,7 @@ struct dirent *readdir(DIR *d)
|
||||
}
|
||||
|
||||
fd_put(fd);
|
||||
|
||||
return (struct dirent *)(d->buf+d->cur);
|
||||
}
|
||||
|
||||
@ -525,6 +549,7 @@ long telldir(DIR *d)
|
||||
if (fd == RT_NULL)
|
||||
{
|
||||
rt_set_errno(-DFS_STATUS_EBADF);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -549,6 +574,7 @@ void seekdir(DIR *d, off_t offset)
|
||||
if (fd == RT_NULL)
|
||||
{
|
||||
rt_set_errno(-DFS_STATUS_EBADF);
|
||||
|
||||
return ;
|
||||
}
|
||||
|
||||
@ -571,6 +597,7 @@ void rewinddir(DIR *d)
|
||||
if (fd == RT_NULL)
|
||||
{
|
||||
rt_set_errno(-DFS_STATUS_EBADF);
|
||||
|
||||
return ;
|
||||
}
|
||||
|
||||
@ -597,6 +624,7 @@ int closedir(DIR *d)
|
||||
if (fd == RT_NULL)
|
||||
{
|
||||
rt_set_errno(-DFS_STATUS_EBADF);
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -609,9 +637,11 @@ int closedir(DIR *d)
|
||||
if (result < 0)
|
||||
{
|
||||
rt_set_errno(result);
|
||||
|
||||
return -1;
|
||||
}
|
||||
else return 0;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef DFS_USING_WORKDIR
|
||||
@ -632,12 +662,14 @@ int chdir(const char *path)
|
||||
dfs_lock();
|
||||
rt_kprintf("%s\n", working_directory);
|
||||
dfs_unlock();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (rt_strlen(path) > DFS_PATH_MAX)
|
||||
{
|
||||
rt_set_errno(-DFS_STATUS_ENOTDIR);
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -645,6 +677,7 @@ int chdir(const char *path)
|
||||
if (fullpath == RT_NULL)
|
||||
{
|
||||
rt_set_errno(-DFS_STATUS_ENOTDIR);
|
||||
|
||||
return -1; /* build path failed */
|
||||
}
|
||||
|
||||
@ -655,6 +688,7 @@ int chdir(const char *path)
|
||||
rt_free(fullpath);
|
||||
/* this is a not exist directory */
|
||||
dfs_unlock();
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -692,6 +726,7 @@ char *getcwd(char *buf, size_t size)
|
||||
#else
|
||||
rt_kprintf("WARNING: not support working directory\n");
|
||||
#endif
|
||||
|
||||
return buf;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user