wok-next rev 16773
busybox: add fatattr
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Fri Jun 20 15:21:26 2014 +0200 (2014-06-20) |
parents | 3b67429fe7eb |
children | 7893304f1666 |
files | busybox/receipt busybox/stuff/busybox-1.22-fatattr.u busybox/stuff/busybox-1.22.config busybox/stuff/busybox-1.22.config-ssfs busybox/stuff/busybox-1.22.config-static |
line diff
1.1 --- a/busybox/receipt Thu Jun 19 21:46:00 2014 +0000 1.2 +++ b/busybox/receipt Fri Jun 20 15:21:26 2014 +0200 1.3 @@ -43,6 +43,7 @@ 1.4 diff.u 1.5 diet.u 1.6 losetup.u 1.7 +fatattr.u 1.8 EOT 1.9 cp $stuff/$PACKAGE-${VERSION%.*}.config .config 1.10 }
2.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 2.2 +++ b/busybox/stuff/busybox-1.22-fatattr.u Fri Jun 20 15:21:26 2014 +0200 2.3 @@ -0,0 +1,152 @@ 2.4 +--- busybox-1.22.0/include/applets.src.h 2.5 ++++ busybox-1.22.0/include/applets.src.h 2.6 +@@ -138,6 +138,7 @@ 2.7 + IF_EXPR(APPLET(expr, BB_DIR_USR_BIN, BB_SUID_DROP)) 2.8 + IF_FAKEIDENTD(APPLET(fakeidentd, BB_DIR_USR_SBIN, BB_SUID_DROP)) 2.9 + IF_FALSE(APPLET_NOFORK(false, false, BB_DIR_BIN, BB_SUID_DROP, false)) 2.10 ++IF_FATATTR(APPLET(fatattr, BB_DIR_BIN, BB_SUID_DROP)) 2.11 + IF_FBSET(APPLET(fbset, BB_DIR_USR_SBIN, BB_SUID_DROP)) 2.12 + IF_FBSPLASH(APPLET(fbsplash, BB_DIR_SBIN, BB_SUID_DROP)) 2.13 + IF_FDFLUSH(APPLET_ODDNAME(fdflush, freeramdisk, BB_DIR_BIN, BB_SUID_DROP, fdflush)) 2.14 +--- busybox-1.22.0/e2fsprogs/Config.src 2.15 ++++ busybox-1.22.0/e2fsprogs/Config.src 2.16 +@@ -37,6 +37,13 @@ 2.17 + help 2.18 + lsattr lists the file attributes on a second extended file system. 2.19 + 2.20 ++config FATATTR 2.21 ++ bool "fatattr" 2.22 ++ default y 2.23 ++ select PLATFORM_LINUX 2.24 ++ help 2.25 ++ fatattr lists or changes the file attributes on a fat file system. 2.26 ++ 2.27 + ### config MKE2FS 2.28 + ### bool "mke2fs" 2.29 + ### default y 2.30 +--- busybox-1.22.0/e2fsprogs/Kbuild.src 2.31 ++++ busybox-1.22.0/e2fsprogs/Kbuild.src 2.32 +@@ -11,5 +11,7 @@ 2.33 + lib-$(CONFIG_CHATTR) += chattr.o e2fs_lib.o 2.34 + lib-$(CONFIG_LSATTR) += lsattr.o e2fs_lib.o 2.35 + 2.36 ++lib-$(CONFIG_FATATTR) += fatattr.o 2.37 ++ 2.38 + lib-$(CONFIG_FSCK) += fsck.o 2.39 + lib-$(CONFIG_TUNE2FS) += tune2fs.o 2.40 +--- busybox-1.22.0/e2fsprogs/fatattr.c 2.41 ++++ busybox-1.22.0/e2fsprogs/fatattr.c 2.42 +@@ -0,0 +1,113 @@ 2.43 ++/* vi: set sw=4 ts=4: */ 2.44 ++/* 2.45 ++ * fatattr.c - Display or change file attributes on a fat file system 2.46 ++ * 2.47 ++ * Copyright 2005 H. Peter Anvin 2.48 ++ * Busybox'ed (2014) by Pascal Bellard <pascal.bellard@ads-lu.com> 2.49 ++ * 2.50 ++ * This file can be redistributed under the terms of the GNU General 2.51 ++ * Public License 2.52 ++ */ 2.53 ++ 2.54 ++//usage:#define fatattr_trivial_usage 2.55 ++//usage: "[-+rhsvda] [FILE]..." 2.56 ++//usage:#define fatattr_full_usage "\n\n" 2.57 ++//usage: "Change file attributes on a fat fs\n" 2.58 ++//usage: "\nModifiers:" 2.59 ++//usage: "\n - Clear attributes" 2.60 ++//usage: "\n + Set attributes" 2.61 ++//usage: "\nAttributes:" 2.62 ++//usage: "\n r Read only" 2.63 ++//usage: "\n h Hidden" 2.64 ++//usage: "\n s System" 2.65 ++//usage: "\n v Volume label" 2.66 ++//usage: "\n d Directory" 2.67 ++//usage: "\n a Archive" 2.68 ++ 2.69 ++#include "libbb.h" 2.70 ++/* linux/msdos_fs.h says: */ 2.71 ++#ifndef FAT_IOCTL_GET_ATTRIBUTES 2.72 ++# define FAT_IOCTL_GET_ATTRIBUTES _IOR('r', 0x10, __u32) 2.73 ++#endif 2.74 ++#ifndef FAT_IOCTL_SET_ATTRIBUTES 2.75 ++# define FAT_IOCTL_SET_ATTRIBUTES _IOW('r', 0x11, __u32) 2.76 ++#endif 2.77 ++ 2.78 ++#define OPT_ADD 1 2.79 ++#define OPT_REM 2 2.80 ++ 2.81 ++struct globals { 2.82 ++ unsigned long af; 2.83 ++ unsigned long rf; 2.84 ++}; 2.85 ++ 2.86 ++/* Currently supports only the FAT flags, not the NTFS ones */ 2.87 ++const char bit_to_char[] = "rhsvda67 "; 2.88 ++ 2.89 ++static inline unsigned long get_flag(char c) 2.90 ++{ 2.91 ++ const char *fp = strchr(bit_to_char, c); 2.92 ++ if (fp) 2.93 ++ return 1 << (fp - bit_to_char); 2.94 ++ bb_error_msg_and_die("invalid character '%c' ", c); 2.95 ++} 2.96 ++ 2.97 ++static inline int decode_arg(const char *arg, struct globals *gp) 2.98 ++{ 2.99 ++ unsigned long *fl; 2.100 ++ char opt = *arg++; 2.101 ++ 2.102 ++ fl = &gp->af; 2.103 ++ if (opt == '-') { 2.104 ++ fl = &gp->rf; 2.105 ++ } else if (opt != '+') { 2.106 ++ return 0; 2.107 ++ } 2.108 ++ 2.109 ++ while (*arg) 2.110 ++ *fl |= get_flag(*arg++); 2.111 ++ 2.112 ++ return 1; 2.113 ++} 2.114 ++ 2.115 ++int fatattr_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; 2.116 ++int fatattr_main(int argc UNUSED_PARAM, char **argv) 2.117 ++{ 2.118 ++ struct globals g; 2.119 ++ char *arg; 2.120 ++ 2.121 ++ g.rf = g.af = 0; 2.122 ++ 2.123 ++ /* parse the args */ 2.124 ++ while ((arg = *++argv)) { 2.125 ++ if (!decode_arg(arg, &g)) 2.126 ++ break; 2.127 ++ } 2.128 ++ 2.129 ++ /* run sanity checks on all the arguments given us */ 2.130 ++ if (!*argv) 2.131 ++ bb_show_usage(); 2.132 ++ 2.133 ++ /* now proceed all the files passed to us */ 2.134 ++ do { 2.135 ++ int fd, i; 2.136 ++ uint32_t attr; 2.137 ++ 2.138 ++ fd = xopen(*argv, O_RDONLY); 2.139 ++ xioctl(fd, FAT_IOCTL_GET_ATTRIBUTES, &attr); 2.140 ++ attr |= g.af; 2.141 ++ attr &= ~g.rf; 2.142 ++ if (g.af || g.rf) 2.143 ++ xioctl(fd, FAT_IOCTL_SET_ATTRIBUTES, &attr); 2.144 ++ else { 2.145 ++ for ( i = 0 ; bit_to_char[i] ; i++ ) { 2.146 ++ bb_putchar( (attr & 1) ? bit_to_char[i] : ' ' ); 2.147 ++ attr >>= 1; 2.148 ++ } 2.149 ++ puts(*argv); 2.150 ++ } 2.151 ++ close(fd); 2.152 ++ } while (*++argv); 2.153 ++ 2.154 ++ return EXIT_SUCCESS; 2.155 ++}
3.1 --- a/busybox/stuff/busybox-1.22.config Thu Jun 19 21:46:00 2014 +0000 3.2 +++ b/busybox/stuff/busybox-1.22.config Fri Jun 20 15:21:26 2014 +0200 3.3 @@ -489,6 +489,7 @@ 3.4 CONFIG_CHATTR=y 3.5 # CONFIG_FSCK is not set 3.6 CONFIG_LSATTR=y 3.7 +CONFIG_FATATTR=y 3.8 CONFIG_TUNE2FS=y 3.9 3.10 #
4.1 --- a/busybox/stuff/busybox-1.22.config-ssfs Thu Jun 19 21:46:00 2014 +0000 4.2 +++ b/busybox/stuff/busybox-1.22.config-ssfs Fri Jun 20 15:21:26 2014 +0200 4.3 @@ -489,6 +489,7 @@ 4.4 # CONFIG_CHATTR is not set 4.5 # CONFIG_FSCK is not set 4.6 # CONFIG_LSATTR is not set 4.7 +# CONFIG_FATATTR is not set 4.8 # CONFIG_TUNE2FS is not set 4.9 4.10 #
5.1 --- a/busybox/stuff/busybox-1.22.config-static Thu Jun 19 21:46:00 2014 +0000 5.2 +++ b/busybox/stuff/busybox-1.22.config-static Fri Jun 20 15:21:26 2014 +0200 5.3 @@ -489,6 +489,7 @@ 5.4 # CONFIG_CHATTR is not set 5.5 # CONFIG_FSCK is not set 5.6 # CONFIG_LSATTR is not set 5.7 +# CONFIG_FATATTR is not set 5.8 # CONFIG_TUNE2FS is not set 5.9 5.10 #