summaryrefslogtreecommitdiff
path: root/components
diff options
context:
space:
mode:
authorMeco Jianting Man <[email protected]>2021-03-05 18:42:13 -0600
committerGitHub <[email protected]>2021-03-05 18:42:13 -0600
commitce86058201432e865b8d7c4096b3675642a43a42 (patch)
treedb391f24e224a15d04304bb0f75689315269bb22 /components
parent034046c32ecf8e94f36fc25eb35ec78f6e549da1 (diff)
parentea22af576cdee92534e19d325b49a63e7957559a (diff)
Merge pull request #24 from RT-Thread/master
pr
Diffstat (limited to 'components')
-rw-r--r--components/finsh/msh_file.c106
-rw-r--r--components/libc/compilers/common/time.c11
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()