diff options
| author | Meco Jianting Man <[email protected]> | 2021-03-05 18:42:13 -0600 |
|---|---|---|
| committer | GitHub <[email protected]> | 2021-03-05 18:42:13 -0600 |
| commit | ce86058201432e865b8d7c4096b3675642a43a42 (patch) | |
| tree | db391f24e224a15d04304bb0f75689315269bb22 /components | |
| parent | 034046c32ecf8e94f36fc25eb35ec78f6e549da1 (diff) | |
| parent | ea22af576cdee92534e19d325b49a63e7957559a (diff) | |
Merge pull request #24 from RT-Thread/master
pr
Diffstat (limited to 'components')
| -rw-r--r-- | components/finsh/msh_file.c | 106 | ||||
| -rw-r--r-- | components/libc/compilers/common/time.c | 11 |
2 files changed, 97 insertions, 20 deletions
diff --git a/components/finsh/msh_file.c b/components/finsh/msh_file.c index 1368838b94..aa182ff9b3 100644 --- a/components/finsh/msh_file.c +++ b/components/finsh/msh_file.c @@ -101,7 +101,7 @@ int msh_exec_script(const char *cmd_line, int size) int length; line_buf = (char *) rt_malloc(RT_CONSOLEBUF_SIZE); - if (line_buf == RT_NULL) + if (line_buf == RT_NULL) { close(fd); return -RT_ENOMEM; @@ -295,7 +295,7 @@ static void directory_delete_for_msh(const char *pathname, char f, char v) if (dirent == RT_NULL) break; if (rt_strcmp(".", dirent->d_name) != 0 && - rt_strcmp("..", dirent->d_name) != 0) + rt_strcmp("..", dirent->d_name) != 0) { rt_sprintf(full_path, "%s/%s", pathname, dirent->d_name); if (dirent->d_type == DT_REG) @@ -347,13 +347,20 @@ int cmd_rm(int argc, char **argv) { switch (argv[1][n]) { - case 'f': f = 1; break; - case 'r': r = 1; break; - case 'v': v = 1; break; - case '-': break; - default: - rt_kprintf("Error: Bad option: %c\n", argv[1][n]); - return 0; + case 'f': + f = 1; + break; + case 'r': + r = 1; + break; + case 'v': + v = 1; + break; + case '-': + break; + default: + rt_kprintf("Error: Bad option: %c\n", argv[1][n]); + return 0; } } argc -= 1; @@ -363,7 +370,7 @@ int cmd_rm(int argc, char **argv) for (index = 1; index < argc; index ++) { struct stat s; - if (stat (argv[index], &s) == 0) + if (stat(argv[index], &s) == 0) { if (s.st_mode & S_IFDIR) { @@ -469,8 +476,81 @@ int cmd_mkfs(int argc, char **argv) } FINSH_FUNCTION_EXPORT_ALIAS(cmd_mkfs, __cmd_mkfs, format disk with file system); +extern struct dfs_filesystem filesystem_table[]; +int cmd_mount(int argc, char *argv[]) +{ + if (argc == 1) + { + struct dfs_filesystem *iter; + + /* display the mount history */ + rt_kprintf("filesystem device mountpoint\n"); + rt_kprintf("---------- ------ ----------\n"); + for (iter = &filesystem_table[0]; + iter < &filesystem_table[DFS_FILESYSTEMS_MAX]; iter++) + { + if ((iter != NULL) && (iter->path != NULL)) + { + rt_kprintf("%-10s %-6s %-s\n", + iter->ops->name, iter->dev_id->parent.name, iter->path); + } + } + return 0; + } + else if (argc == 4) + { + char *device = argv[1]; + char *path = argv[2]; + char *fstype = argv[3]; + + /* mount a filesystem to the specified directory */ + rt_kprintf("mount device %s(%s) onto %s ... ", device, fstype, path); + if (dfs_mount(device, path, fstype, 0, 0) == 0) + { + rt_kprintf("succeed!\n"); + return 0; + } + else + { + rt_kprintf("failed!\n"); + return -1; + } + } + else + { + rt_kprintf("Usage: mount <device> <mountpoint> <fstype>.\n"); + return -1; + } +} +FINSH_FUNCTION_EXPORT_ALIAS(cmd_mount, __cmd_mount, mount <device> <mountpoint> <fstype>); + +/* unmount the filesystem from the specified mountpoint */ +int cmd_umount(int argc, char *argv[]) +{ + char *path = argv[1]; + + if (argc != 2) + { + rt_kprintf("Usage: unmount <mountpoint>.\n"); + return -1; + } + + rt_kprintf("unmount %s ... ", path); + if (dfs_unmount(path) < 0) + { + rt_kprintf("failed!\n"); + return -1; + } + else + { + rt_kprintf("succeed!\n"); + return 0; + } +} +FINSH_FUNCTION_EXPORT_ALIAS(cmd_umount, __cmd_umount, Unmount device from file system); + extern int df(const char *path); -int cmd_df(int argc, char** argv) +int cmd_df(int argc, char **argv) { if (argc != 2) { @@ -492,7 +572,7 @@ int cmd_df(int argc, char** argv) } FINSH_FUNCTION_EXPORT_ALIAS(cmd_df, __cmd_df, disk free); -int cmd_echo(int argc, char** argv) +int cmd_echo(int argc, char **argv) { if (argc == 2) { @@ -505,7 +585,7 @@ int cmd_echo(int argc, char** argv) fd = open(argv[2], O_RDWR | O_APPEND | O_CREAT, 0); if (fd >= 0) { - write (fd, argv[1], strlen(argv[1])); + write(fd, argv[1], strlen(argv[1])); close(fd); } else diff --git a/components/libc/compilers/common/time.c b/components/libc/compilers/common/time.c index c2fbd6f333..ed72cc1f3f 100644 --- a/components/libc/compilers/common/time.c +++ b/components/libc/compilers/common/time.c @@ -12,7 +12,6 @@ * 2021-02-08 Meco Man add settimeofday() stime() * 2021-02-10 Meco Man add ctime_r() and re-implement ctime() * 2021-02-11 Meco Man fix bug #3183 - align days[] and months[] to 4 bytes - * add difftime() * 2021-02-12 Meco Man add errno * 2012-12-08 Bernard <clock_time.c> fix the issue of _timevalue.tv_usec initialization, * which found by Rob <[email protected]> @@ -177,12 +176,6 @@ char* ctime(const time_t *tim_p) } RTM_EXPORT(ctime); -double difftime (time_t tim1, time_t tim2) -{ - return (double)(tim1 - tim2); -} -RTM_EXPORT(difftime); - /** * Returns the current time. * @@ -372,6 +365,10 @@ int settimeofday(const struct timeval *tv, const struct timezone *tz) } RTM_EXPORT(settimeofday); +/* inherent in the toolchain */ +RTM_EXPORT(difftime); +RTM_EXPORT(strftime); + #ifdef RT_USING_POSIX static struct timeval _timevalue; static int clock_time_system_init() |
