[msh] try to complete module path
Msh can execute module directly. So try to auto-complete the path when user press TAB. There is a chance that the path is a module.
This commit is contained in:
parent
de16b800a4
commit
f9659283c0
|
@ -316,7 +316,7 @@ void msh_auto_complete_path(char *path)
|
|||
if (full_path == RT_NULL) return; /* out of memory */
|
||||
|
||||
ptr = full_path;
|
||||
if (*path != '/')
|
||||
if (*path != '/')
|
||||
{
|
||||
getcwd(full_path, 256);
|
||||
if (full_path[rt_strlen(full_path) - 1] != '/')
|
||||
|
@ -336,7 +336,7 @@ void msh_auto_complete_path(char *path)
|
|||
char *dest = index;
|
||||
|
||||
/* fill the parent path */
|
||||
ptr = full_path;
|
||||
ptr = full_path;
|
||||
while (*ptr) ptr ++;
|
||||
|
||||
for (index = path; index != dest;)
|
||||
|
@ -361,7 +361,7 @@ void msh_auto_complete_path(char *path)
|
|||
{
|
||||
dirent = readdir(dir);
|
||||
if (dirent == RT_NULL) break;
|
||||
|
||||
|
||||
rt_kprintf("%s\n", dirent->d_name);
|
||||
}
|
||||
}
|
||||
|
@ -450,12 +450,21 @@ void msh_auto_complete(char *prefix)
|
|||
msh_auto_complete_path(ptr + 1);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
ptr --;
|
||||
}
|
||||
#ifdef RT_USING_MODULE
|
||||
/* There is a chance that the user want to run the module directly. So
|
||||
* try to complete the file names. If the completed path is not a
|
||||
* module, the system won't crash anyway. */
|
||||
if (ptr == prefix)
|
||||
{
|
||||
msh_auto_complete_path(ptr);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/* checks in internal command */
|
||||
{
|
||||
for (index = _syscall_table_begin; index < _syscall_table_end; FINSH_NEXT_SYSCALL(index))
|
||||
|
|
Loading…
Reference in New Issue