wok-current diff busybox/stuff/busybox-1.17.4-stat.u @ rev 7752
Up: parcellite to 0.9.3.
author | Christopher Rogers <slaxemulator@gmail.com> |
---|---|
date | Mon Dec 20 23:30:17 2010 +0000 (2010-12-20) |
parents | |
children |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/busybox/stuff/busybox-1.17.4-stat.u Mon Dec 20 23:30:17 2010 +0000 1.3 @@ -0,0 +1,77 @@ 1.4 +Add non standard stat -m support to display file block list 1.5 +Useful to patch read-only filesystems such as ISO9660, for defragmentation 1.6 +tools or boot loaders 1.7 +--- busybox-1.17.1/include/usage.src.h 1.8 ++++ busybox-1.17.1/include/usage.src.h 1.9 +@@ -3979,6 +3979,7 @@ 1.10 + "\n -f Display filesystem status" \ 1.11 + "\n -L Follow links" \ 1.12 + "\n -t Display info in terse form" \ 1.13 ++ "\n -m Display block list" \ 1.14 + IF_SELINUX( \ 1.15 + "\n -Z Print security context" \ 1.16 + ) \ 1.17 + 1.18 +--- busybox-1.17.1/coreutils/stat.c 1.19 ++++ busybox-1.17.1/coreutils/stat.c 1.20 +@@ -13,11 +13,13 @@ 1.21 + * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. 1.22 + */ 1.23 + #include "libbb.h" 1.24 ++#include <linux/fs.h> 1.25 + 1.26 + #define OPT_FILESYS (1 << 0) 1.27 + #define OPT_TERSE (1 << 1) 1.28 + #define OPT_DEREFERENCE (1 << 2) 1.29 +-#define OPT_SELINUX (1 << 3) 1.30 ++#define OPT_MAP (1 << 3) 1.31 ++#define OPT_SELINUX (1 << 4) 1.32 + 1.33 + #if ENABLE_FEATURE_STAT_FORMAT 1.34 + typedef bool (*statfunc_ptr)(const char *, const char *); 1.35 +@@ -361,6 +363,26 @@ 1.36 + 1.37 + /* Stat the file system and print what we find. */ 1.38 + #if !ENABLE_FEATURE_STAT_FORMAT 1.39 ++#define do_mapfile(filename, format) do_mapfile(filename) 1.40 ++#endif 1.41 ++static bool do_mapfile(const char *filename, const char *format) 1.42 ++{ 1.43 ++ int i = 0; 1.44 ++ int fd = xopen(filename, O_RDONLY); 1.45 ++ 1.46 ++#if ENABLE_FEATURE_STAT_FORMAT 1.47 ++ (void) format; 1.48 ++#endif 1.49 ++ while (1) { 1.50 ++ int blk = i++; 1.51 ++ if (ioctl(fd,FIBMAP,&blk) < 0 || blk == 0) break; 1.52 ++ printf("%u\n",blk); 1.53 ++ } 1.54 ++ return 1; 1.55 ++} 1.56 ++ 1.57 ++/* Stat the file system and print what we find. */ 1.58 ++#if !ENABLE_FEATURE_STAT_FORMAT 1.59 + #define do_statfs(filename, format) do_statfs(filename) 1.60 + #endif 1.61 + static bool do_statfs(const char *filename, const char *format) 1.62 +@@ -651,7 +673,7 @@ 1.63 + statfunc_ptr statfunc = do_stat; 1.64 + 1.65 + opt_complementary = "-1"; /* min one arg */ 1.66 +- opts = getopt32(argv, "ftL" 1.67 ++ opts = getopt32(argv, "ftLm" 1.68 + IF_SELINUX("Z") 1.69 + IF_FEATURE_STAT_FORMAT("c:", &format) 1.70 + ); 1.71 +@@ -662,6 +684,9 @@ 1.72 + selinux_or_die(); 1.73 + } 1.74 + #endif 1.75 ++ if (opts & OPT_MAP) { /* -m */ 1.76 ++ statfunc = do_mapfile; 1.77 ++ } 1.78 + ok = 1; 1.79 + argv += optind; 1.80 + for (i = 0; argv[i]; ++i)