From 62f7838c5eb90027060bc276c67db1664e30273f Mon Sep 17 00:00:00 2001 From: Gregory Nutt Date: Thu, 26 Oct 2017 16:07:42 -0600 Subject: [PATCH] nshlib: Tighten up some conditional logic --- nshlib/nsh.h | 29 +++++++++++++++++++++++++++-- nshlib/nsh_command.c | 8 +++++++- nshlib/nsh_mntcmds.c | 18 +++++++++--------- 3 files changed, 43 insertions(+), 12 deletions(-) diff --git a/nshlib/nsh.h b/nshlib/nsh.h index fdbef0bd2..3423b7fb7 100644 --- a/nshlib/nsh.h +++ b/nshlib/nsh.h @@ -641,6 +641,30 @@ # undef NSH_HAVE_CPULOAD #endif +#if !defined(CONFIG_FS_PROCFS) || (defined(CONFIG_FS_PROCFS_EXCLUDE_BLOCKS) && \ + defined(CONFIG_FS_PROCFS_EXCLUDE_USAGE)) +# undef CONFIG_NSH_DISABLE_DF /* 'df' depends on fs procfs */ +# define CONFIG_NSH_DISABLE_DF 1 +#endif + +#if defined(CONFIG_FS_PROCFS) || !defined(CONFIG_NSH_DISABLE_DF) +# define HAVE_DF_HUMANREADBLE 1 +# define HAVE_DF_BLOCKOUTPUT 1 +# if defined(CONFIG_FS_PROCFS_EXCLUDE_USAGE) +# undefine HAVE_DF_HUMANREADBLE +# endif +# if defined(CONFIG_FS_PROCFS_EXCLUDE_BLOCKS) +# undefine HAVE_DF_BLOCKOUTPUT +# endif +#endif + +#if defined(CONFIG_FS_PROCFS) || !defined(CONFIG_NSH_DISABLE_MOUNT) +# define HAVE_MOUNT_LIST 1 +# if defined(CONFIG_FS_PROCFS_EXCLUDE_MOUNT) +# undefine HAVE_MOUNT_LIST +# endif +#endif + /* Suppress unused file utilities */ #define NSH_HAVE_CATFILE 1 @@ -656,10 +680,11 @@ # undef NSH_HAVE_TRIMDIR #endif -/* nsh_catfile used by cat, ifconfig, ifup/down */ +/* nsh_catfile used by cat, ifconfig, ifup/down, df, and mount */ #if defined(CONFIG_NSH_DISABLE_CAT) && defined(CONFIG_NSH_DISABLE_IFCONFIG) && \ - defined(CONFIG_NSH_DISABLE_IFUPDOWN) + defined(CONFIG_NSH_DISABLE_IFUPDOWN) && defined(CONFIG_NSH_DISABLE_DF) && \ + (defined(CONFIG_NSH_DISABLE_MOUNT) || !defined(HAVE_MOUNT_LIST)) # undef NSH_HAVE_CATFILE #endif diff --git a/nshlib/nsh_command.c b/nshlib/nsh_command.c index e9cd769bd..07e003bb8 100644 --- a/nshlib/nsh_command.c +++ b/nshlib/nsh_command.c @@ -171,7 +171,11 @@ static const struct cmdmap_s g_cmdmap[] = #if CONFIG_NFILE_DESCRIPTORS > 0 && !defined(CONFIG_DISABLE_MOUNTPOINT) && \ defined(CONFIG_FS_READABLE) && !defined(CONFIG_NSH_DISABLE_DF) #ifdef NSH_HAVE_CATFILE +#if defined(HAVE_DF_HUMANREADBLE) && defined(HAVE_DF_BLOCKOUTPUT) { "df", cmd_df, 1, 2, "[-h]" }, +#else + { "df", cmd_df, 1, 1, NULL }, +#endif #endif #endif @@ -339,8 +343,10 @@ static const struct cmdmap_s g_cmdmap[] = #if !defined(CONFIG_DISABLE_MOUNTPOINT) && CONFIG_NFILE_DESCRIPTORS > 0 && defined(CONFIG_FS_READABLE) #ifndef CONFIG_NSH_DISABLE_MOUNT -#ifdef NSH_HAVE_CATFILE +#if defined(NSH_HAVE_CATFILE) && defined(HAVE_MOUNT_LIST) { "mount", cmd_mount, 1, 7, "[-t [-o ] [] ]" }, +#else + { "mount", cmd_mount, 4, 7, "-t [-o ] [] " }, #endif #endif #endif diff --git a/nshlib/nsh_mntcmds.c b/nshlib/nsh_mntcmds.c index 0b9e3cb93..cd2d17dc4 100644 --- a/nshlib/nsh_mntcmds.c +++ b/nshlib/nsh_mntcmds.c @@ -71,24 +71,24 @@ #ifdef NSH_HAVE_CATFILE int cmd_df(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv) { +#if defined(HAVE_DF_HUMANREADBLE) && defined(HAVE_DF_BLOCKOUTPUT) if (argc > 1 && strcmp(argv[1], "-h") == 0) +#endif +#ifdef HAVE_DF_HUMANREADBLE { -#ifndef CONFIG_FS_PROCFS_EXCLUDE_BLOCKS return nsh_catfile(vtbl, argv[0], CONFIG_NSH_PROC_MOUNTPOINT "/fs/usage"); -#else - return ERROR; /* REVISIT, some feedback would be good */ -#endif } +#endif +#if defined(HAVE_DF_HUMANREADBLE) && defined(HAVE_DF_BLOCKOUTPUT) else +#endif +#ifdef HAVE_DF_BLOCKOUTPUT { -#ifndef CONFIG_FS_PROCFS_EXCLUDE_USAGE return nsh_catfile(vtbl, argv[0], CONFIG_NSH_PROC_MOUNTPOINT "/fs/blocks"); -#else - return ERROR; /* REVISIT, some feedback would be good */ -#endif } +#endif } #endif #endif @@ -113,7 +113,7 @@ int cmd_mount(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv) /* The mount command behaves differently if no parameters are provided. */ -#if defined(NSH_HAVE_CATFILE) && !defined(CONFIG_FS_PROCFS_EXCLUDE_MOUNT) +#if defined(NSH_HAVE_CATFILE) && defined(HAVE_MOUNT_LIST) if (argc < 2) { return nsh_catfile(vtbl, argv[0],