wok annotate busybox/stuff/busybox-1.17.1-stat.u @ rev 6154

Up: libcddb, libcddb-dev to 1.3.2.
author Christopher Rogers <slaxemulator@gmail.com>
date Thu Sep 09 20:40:40 2010 +0000 (2010-09-09)
parents b5f4ef5d86ec
children
rev   line source
pascal@5917 1 Add non standard stat -m support to display file block list
pascal@5925 2 Useful to patch read-only filesystems such as ISO9660 or fragmentation checking
pascal@5917 3 --- busybox-1.17.1/include/usage.src.h
pascal@5917 4 +++ busybox-1.17.1/include/usage.src.h
pascal@5917 5 @@ -3979,6 +3979,7 @@
pascal@5917 6 "\n -f Display filesystem status" \
pascal@5917 7 "\n -L Follow links" \
pascal@5917 8 "\n -t Display info in terse form" \
pascal@5917 9 + "\n -m Display block list" \
pascal@5917 10 IF_SELINUX( \
pascal@5917 11 "\n -Z Print security context" \
pascal@5917 12 ) \
pascal@5917 13
pascal@5917 14 --- busybox-1.17.1/coreutils/stat.c
pascal@5917 15 +++ busybox-1.17.1/coreutils/stat.c
pascal@5917 16 @@ -13,11 +13,13 @@
pascal@5917 17 * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
pascal@5917 18 */
pascal@5917 19 #include "libbb.h"
pascal@5917 20 +#include <linux/fs.h>
pascal@5917 21
pascal@5917 22 #define OPT_FILESYS (1 << 0)
pascal@5917 23 #define OPT_TERSE (1 << 1)
pascal@5917 24 #define OPT_DEREFERENCE (1 << 2)
pascal@5917 25 -#define OPT_SELINUX (1 << 3)
pascal@5917 26 +#define OPT_MAP (1 << 3)
pascal@5917 27 +#define OPT_SELINUX (1 << 4)
pascal@5917 28
pascal@5917 29 #if ENABLE_FEATURE_STAT_FORMAT
pascal@5917 30 typedef bool (*statfunc_ptr)(const char *, const char *);
pascal@5917 31 @@ -361,6 +363,26 @@
pascal@5917 32
pascal@5917 33 /* Stat the file system and print what we find. */
pascal@5917 34 #if !ENABLE_FEATURE_STAT_FORMAT
pascal@5917 35 +#define do_mapfile(filename, format) do_mapfile(filename)
pascal@5917 36 +#endif
pascal@5917 37 +static bool do_mapfile(const char *filename, const char *format)
pascal@5917 38 +{
pascal@5917 39 + int i = 0;
pascal@5917 40 + int fd = xopen(filename, O_RDONLY);
pascal@5917 41 +
pascal@5917 42 +#if ENABLE_FEATURE_STAT_FORMAT
pascal@5917 43 + (void) format;
pascal@5917 44 +#endif
pascal@5917 45 + while (1) {
pascal@5917 46 + int blk = i++;
pascal@5917 47 + if (ioctl(fd,FIBMAP,&blk) < 0 || blk == 0) break;
pascal@5917 48 + printf("%u\n",blk);
pascal@5917 49 + }
pascal@5917 50 + return 1;
pascal@5917 51 +}
pascal@5917 52 +
pascal@5917 53 +/* Stat the file system and print what we find. */
pascal@5917 54 +#if !ENABLE_FEATURE_STAT_FORMAT
pascal@5917 55 #define do_statfs(filename, format) do_statfs(filename)
pascal@5917 56 #endif
pascal@5917 57 static bool do_statfs(const char *filename, const char *format)
pascal@5917 58 @@ -651,7 +673,7 @@
pascal@5917 59 statfunc_ptr statfunc = do_stat;
pascal@5917 60
pascal@5917 61 opt_complementary = "-1"; /* min one arg */
pascal@5917 62 - opts = getopt32(argv, "ftL"
pascal@5917 63 + opts = getopt32(argv, "ftLm"
pascal@5917 64 IF_SELINUX("Z")
pascal@5917 65 IF_FEATURE_STAT_FORMAT("c:", &format)
pascal@5917 66 );
pascal@5917 67 @@ -662,6 +684,9 @@
pascal@5917 68 selinux_or_die();
pascal@5917 69 }
pascal@5917 70 #endif
pascal@5917 71 + if (opts & OPT_MAP) { /* -m */
pascal@5917 72 + statfunc = do_mapfile;
pascal@5917 73 + }
pascal@5917 74 ok = 1;
pascal@5917 75 argv += optind;
pascal@5917 76 for (i = 0; argv[i]; ++i)