Skip to content

Commit d107e31

Browse files
committed
add -f for umount
VELAPLATFO-71234 Change-Id: Ic0e3e0b13f4c816216f2250659ab9144a286c330 Signed-off-by: zhengyu16 <zhengyu16@xiaomi.com>
1 parent 641f7ce commit d107e31

File tree

2 files changed

+26
-5
lines changed

2 files changed

+26
-5
lines changed

nshlib/nsh_command.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -621,7 +621,7 @@ static const struct cmdmap_s g_cmdmap[] =
621621

622622
#if !defined(CONFIG_DISABLE_MOUNTPOINT)
623623
# ifndef CONFIG_NSH_DISABLE_UMOUNT
624-
CMD_MAP("umount", cmd_umount, 2, 2, "<dir-path>"),
624+
CMD_MAP("umount", cmd_umount, 2, 3, "[-f] <dir-path>"),
625625
# endif
626626
#endif
627627

nshlib/nsh_mntcmds.c

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -363,16 +363,37 @@ int cmd_nfsmount(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv)
363363
#if !defined(CONFIG_DISABLE_MOUNTPOINT) && !defined(CONFIG_NSH_DISABLE_UMOUNT)
364364
int cmd_umount(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv)
365365
{
366-
UNUSED(argc);
367-
368-
FAR char *fullpath = nsh_getfullpath(vtbl, argv[1]);
366+
unsigned int flags = 0;
367+
FAR char *fullpath;
369368
int ret = ERROR;
369+
int option;
370+
371+
while ((option = getopt(argc, argv, "f")) != ERROR)
372+
{
373+
switch (option)
374+
{
375+
case 'f':
376+
flags |= MNT_FORCE;
377+
break;
378+
379+
default:
380+
nsh_error(vtbl, g_fmtarginvalid, argv[0]);
381+
return ERROR;
382+
}
383+
}
384+
385+
if (optind >= argc)
386+
{
387+
nsh_error(vtbl, g_fmtargrequired, argv[0]);
388+
return ret;
389+
}
370390

391+
fullpath = nsh_getfullpath(vtbl, argv[optind]);
371392
if (fullpath)
372393
{
373394
/* Perform the umount */
374395

375-
ret = umount(fullpath);
396+
ret = umount2(fullpath, flags);
376397
if (ret < 0)
377398
{
378399
nsh_error(vtbl, g_fmtcmdfailed, argv[0], "umount", NSH_ERRNO);

0 commit comments

Comments
 (0)