diff options
-rw-r--r-- | coreutils/stat.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/coreutils/stat.c b/coreutils/stat.c index 33f01de..b41e1d3 100644 --- a/coreutils/stat.c +++ b/coreutils/stat.c @@ -32,9 +32,15 @@ #include <time.h> #include <getopt.h> #include <sys/stat.h> +#include <sys/statfs.h> +#include <sys/statvfs.h> #include <string.h> #include "busybox.h" +#ifdef __linux__ +# include <linux/version.h> +#endif + /* vars to control behavior */ #define OPT_TERSE 2 #define OPT_DEREFERNCE 4 @@ -172,9 +178,14 @@ static void print_statfs(char *pformat, size_t buf_len, char m, printf(pformat, (unsigned long int) (statfsbuf->f_bsize)); break; case 'S': { - unsigned long int frsize = statfsbuf->f_frsize; + unsigned long int frsize; +#if defined(__linux__) && LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) + frsize = statfsbuf->f_frsize; if (!frsize) frsize = statfsbuf->f_bsize; +#else + frsize = statfsbuf->f_bsize; +#endif strncat(pformat, "lu", buf_len); printf(pformat, frsize); break; |