[prev in list] [next in list] [prev in thread] [next in thread]
List: busybox
Subject: [PATCH] stat: make filesystem support optional
From: Ron Yorston <rmy () tigress ! co ! uk>
Date: 2012-10-10 10:33:04
Message-ID: 201210101033.q9AAX4H3011788 () helium ! internal ! tigress ! co ! uk
[Download RAW message or body]
stat can be useful on non-Linux platforms if filesystem support is
turned off.
Signed-off-by: Ron Yorston <rmy@tigress.co.uk>
---
coreutils/Config.src | 10 +++++++++-
coreutils/stat.c | 21 +++++++++++++++++----
2 files changed, 26 insertions(+), 5 deletions(-)
diff --git a/coreutils/Config.src b/coreutils/Config.src
index a28449b..ab01312 100644
--- a/coreutils/Config.src
+++ b/coreutils/Config.src
@@ -578,7 +578,6 @@ config FEATURE_SPLIT_FANCY
config STAT
bool "stat"
default y
- select PLATFORM_LINUX # statfs()
help
display file or filesystem status.
@@ -591,6 +590,15 @@ config FEATURE_STAT_FORMAT
users can pass a custom format string for output. This adds about
7k to a nonstatic build on amd64.
+config FEATURE_STAT_FILESYSTEM
+ bool "Enable display of filesystem status (-f)"
+ default y
+ depends on STAT
+ select PLATFORM_LINUX # statfs()
+ help
+ Without this, stat will not support the '-f' option to display
+ information about filesystem status.
+
config STTY
bool "stty"
default y
diff --git a/coreutils/stat.c b/coreutils/stat.c
index e38c8f6..1052687 100644
--- a/coreutils/stat.c
+++ b/coreutils/stat.c
@@ -20,7 +20,9 @@
//usage: IF_FEATURE_STAT_FORMAT(
//usage: "\n -c fmt Use the specified format"
//usage: )
+//usage: IF_FEATURE_STAT_FILESYSTEM(
//usage: "\n -f Display filesystem status"
+//usage: )
//usage: "\n -L Follow links"
//usage: "\n -t Display info in terse form"
//usage: IF_SELINUX(
@@ -54,6 +56,7 @@
//usage: " %Y Time of last modification as seconds since Epoch\n"
//usage: " %z Time of last change\n"
//usage: " %Z Time of last change as seconds since Epoch\n"
+//usage: IF_FEATURE_STAT_FILESYSTEM(
//usage: "\nValid format sequences for file systems:\n"
//usage: " %a Free blocks available to non-superuser\n"
//usage: " %b Total data blocks in file system\n"
@@ -71,12 +74,13 @@
//usage: " %t Type in hex\n"
//usage: " %T Type in human readable form"
//usage: )
+//usage: )
#include "libbb.h"
-#define OPT_FILESYS (1 << 0)
-#define OPT_TERSE (1 << 1)
-#define OPT_DEREFERENCE (1 << 2)
+#define OPT_TERSE (1 << 0)
+#define OPT_DEREFERENCE (1 << 1)
+#define OPT_FILESYS (1 << 2)
#define OPT_SELINUX (1 << 3)
#if ENABLE_FEATURE_STAT_FORMAT
@@ -132,6 +136,7 @@ static const char *human_time(time_t t)
#undef buf
}
+#if ENABLE_FEATURE_STAT_FILESYSTEM
/* Return the type of the specified file system.
* Some systems have statfvs.f_basetype[FSTYPSZ]. (AIX, HP-UX, and Solaris)
* Others have statfs.f_fstypename[MFSNAMELEN]. (NetBSD 1.5.2)
@@ -202,6 +207,7 @@ static unsigned long long get_f_fsid(const struct statfs *statfsbuf)
while (--sz > 0);
return r;
}
+#endif /* FEATURE_STAT_FILESYSTEM */
#if ENABLE_FEATURE_STAT_FORMAT
static void strcatc(char *str, char c)
@@ -217,6 +223,7 @@ static void printfs(char *pformat, const char *msg)
printf(pformat, msg);
}
+#if ENABLE_FEATURE_STAT_FILESYSTEM
/* print statfs info */
static void FAST_FUNC print_statfs(char *pformat, const char m,
const char *const filename, const void *data
@@ -263,6 +270,7 @@ static void FAST_FUNC print_statfs(char *pformat, const char m,
printf(pformat, m);
}
}
+#endif
/* print stat info */
static void FAST_FUNC print_stat(char *pformat, const char m,
@@ -423,6 +431,7 @@ static void print_it(const char *masterformat,
}
#endif /* FEATURE_STAT_FORMAT */
+#if ENABLE_FEATURE_STAT_FILESYSTEM
/* Stat the file system and print what we find. */
#if !ENABLE_FEATURE_STAT_FORMAT
#define do_statfs(filename, format) do_statfs(filename)
@@ -538,6 +547,7 @@ static bool do_statfs(const char *filename, const char *format)
#endif /* FEATURE_STAT_FORMAT */
return 1;
}
+#endif /* FEATURE_STAT_FILESYSTEM */
/* stat the file and print what we find */
#if !ENABLE_FEATURE_STAT_FORMAT
@@ -714,12 +724,15 @@ int stat_main(int argc UNUSED_PARAM, char **argv)
statfunc_ptr statfunc = do_stat;
opt_complementary = "-1"; /* min one arg */
- opts = getopt32(argv, "ftL"
+ opts = getopt32(argv, "tL"
+ IF_FEATURE_STAT_FILESYSTEM("f")
IF_SELINUX("Z")
IF_FEATURE_STAT_FORMAT("c:", &format)
);
+#if ENABLE_FEATURE_STAT_FILESYSTEM
if (opts & OPT_FILESYS) /* -f */
statfunc = do_statfs;
+#endif
#if ENABLE_SELINUX
if (opts & OPT_SELINUX) {
selinux_or_die();
--
1.7.4.4
_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic