wok annotate busybox/stuff/busybox-1.23-stat.u @ rev 17957

libsecret, libwebp: fix MAINTAINER
author Pascal Bellard <pascal.bellard@slitaz.org>
date Thu Apr 16 16:12:16 2015 +0200 (2015-04-16)
parents
children
rev   line source
pascal@17518 1 Add non standard stat -m support to display file block list
pascal@17518 2 Useful to patch read-only filesystems such as ISO9660, for defragmentation
pascal@17518 3 tools or boot loaders
pascal@17518 4 --- busybox-1.23.0/coreutils/stat.c
pascal@17518 5 +++ busybox-1.23.0/coreutils/stat.c
pascal@17518 6 @@ -23,6 +23,7 @@
pascal@17518 7 //usage: "\n -f Display filesystem status"
pascal@17518 8 //usage: "\n -L Follow links"
pascal@17518 9 //usage: "\n -t Display info in terse form"
pascal@17518 10 +//usage: "\n -m Display block list"
pascal@17518 11 //usage: IF_SELINUX(
pascal@17518 12 //usage: "\n -Z Print security context"
pascal@17518 13 //usage: )
pascal@17518 14 @@ -73,11 +74,13 @@
pascal@17518 15 //usage: )
pascal@17518 16
pascal@17518 17 #include "libbb.h"
pascal@17518 18 +#include <linux/fs.h>
pascal@17518 19
pascal@17518 20 #define OPT_FILESYS (1 << 0)
pascal@17518 21 #define OPT_TERSE (1 << 1)
pascal@17518 22 #define OPT_DEREFERENCE (1 << 2)
pascal@17518 23 -#define OPT_SELINUX (1 << 3)
pascal@17518 24 +#define OPT_MAP (1 << 3)
pascal@17518 25 +#define OPT_SELINUX (1 << 4)
pascal@17518 26
pascal@17518 27 #if ENABLE_FEATURE_STAT_FORMAT
pascal@17518 28 typedef bool (*statfunc_ptr)(const char *, const char *);
pascal@17518 29 @@ -425,6 +428,26 @@
pascal@17518 30
pascal@17518 31 /* Stat the file system and print what we find. */
pascal@17518 32 #if !ENABLE_FEATURE_STAT_FORMAT
pascal@17518 33 +#define do_mapfile(filename, format) do_mapfile(filename)
pascal@17518 34 +#endif
pascal@17518 35 +static bool do_mapfile(const char *filename, const char *format)
pascal@17518 36 +{
pascal@17518 37 + int i = 0;
pascal@17518 38 + int fd = xopen(filename, O_RDONLY);
pascal@17518 39 +
pascal@17518 40 +#if ENABLE_FEATURE_STAT_FORMAT
pascal@17518 41 + (void) format;
pascal@17518 42 +#endif
pascal@17518 43 + while (1) {
pascal@17518 44 + int blk = i++;
pascal@17518 45 + if (ioctl(fd,FIBMAP,&blk) < 0 || blk == 0) break;
pascal@17518 46 + printf("%u\n",blk);
pascal@17518 47 + }
pascal@17518 48 + return 1;
pascal@17518 49 +}
pascal@17518 50 +
pascal@17518 51 +/* Stat the file system and print what we find. */
pascal@17518 52 +#if !ENABLE_FEATURE_STAT_FORMAT
pascal@17518 53 #define do_statfs(filename, format) do_statfs(filename)
pascal@17518 54 #endif
pascal@17518 55 static bool do_statfs(const char *filename, const char *format)
pascal@17518 56 @@ -721,7 +744,7 @@
pascal@17518 57 statfunc_ptr statfunc = do_stat;
pascal@17518 58
pascal@17518 59 opt_complementary = "-1"; /* min one arg */
pascal@17518 60 - opts = getopt32(argv, "ftL"
pascal@17518 61 + opts = getopt32(argv, "ftLm"
pascal@17518 62 IF_SELINUX("Z")
pascal@17518 63 IF_FEATURE_STAT_FORMAT("c:", &format)
pascal@17518 64 );
pascal@17518 65 @@ -732,6 +755,9 @@
pascal@17518 66 selinux_or_die();
pascal@17518 67 }
pascal@17518 68 #endif
pascal@17518 69 + if (opts & OPT_MAP) { /* -m */
pascal@17518 70 + statfunc = do_mapfile;
pascal@17518 71 + }
pascal@17518 72 ok = 1;
pascal@17518 73 argv += optind;
pascal@17518 74 for (i = 0; argv[i]; ++i)