wok rev 282

Busybox: add df -i & hexdump -R
author Pascal Bellard <pascal.bellard@slitaz.org>
date Tue Feb 26 12:00:01 2008 +0000 (2008-02-26)
parents dce74a419f98
children e72b1ad76cb1
files busybox/receipt busybox/stuff/busybox-1.7.3-df.u busybox/stuff/busybox-1.7.3-hexdump.u
line diff
     1.1 --- a/busybox/receipt	Tue Feb 26 11:58:04 2008 +0000
     1.2 +++ b/busybox/receipt	Tue Feb 26 12:00:01 2008 +0000
     1.3 @@ -6,6 +6,7 @@
     1.4  SHORT_DESC="Busybox combines tiny versions of many common UNIX utilities."
     1.5  MAINTAINER="pankso@slitaz.org"
     1.6  DEPENDS="slitaz-base-files"
     1.7 +BUILD_DEPENDS="bzip2"
     1.8  TARBALL="$PACKAGE-$VERSION.tar.bz2"
     1.9  WEB_SITE="http://www.busybox.net/"
    1.10  WGET_URL="http://www.busybox.net/downloads/$TARBALL"
    1.11 @@ -13,6 +14,8 @@
    1.12  # Rules to configure and make the package.
    1.13  compile_rules()
    1.14  {
    1.15 +    patch -p0 < stuff/$PACKAGE-$VERSION-hexdump.u
    1.16 +    patch -p0 < stuff/$PACKAGE-$VERSION-df.u
    1.17      cp stuff/$PACKAGE-$VERSION.config $PACKAGE-$VERSION/.config
    1.18      cd $PACKAGE-$VERSION
    1.19      make oldconfig
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/busybox/stuff/busybox-1.7.3-df.u	Tue Feb 26 12:00:01 2008 +0000
     2.3 @@ -0,0 +1,42 @@
     2.4 +--- busybox-1.7.3/coreutils/df.c
     2.5 ++++ busybox-1.7.3/coreutils/df.c
     2.6 +@@ -47,7 +47,7 @@
     2.7 + 
     2.8 + #if ENABLE_FEATURE_HUMAN_READABLE
     2.9 + 	opt_complementary = "h-km:k-hm:m-hk";
    2.10 +-	opt = getopt32(argv, "hmk");
    2.11 ++	opt = getopt32(argv, "hmik");
    2.12 + 	if (opt & 1) {
    2.13 + 		df_disp_hr = 0;
    2.14 + 		disp_units_hdr = "     Size";
    2.15 +@@ -56,9 +56,14 @@
    2.16 + 		df_disp_hr = 1024*1024;
    2.17 + 		disp_units_hdr = "1M-blocks";
    2.18 + 	}
    2.19 ++#define OPT_INODE 4
    2.20 + #else
    2.21 ++#define OPT_INODE 1
    2.22 + 	opt = getopt32(argv, "k");
    2.23 + #endif
    2.24 ++	if (opt & OPT_INODE) {
    2.25 ++		disp_units_hdr = "   Inodes";
    2.26 ++	}
    2.27 + 
    2.28 + 	printf("Filesystem%11s%-15sUsed Available Use%% Mounted on\n",
    2.29 + 			  "", disp_units_hdr);
    2.30 +@@ -105,6 +110,15 @@
    2.31 + 		}
    2.32 + 
    2.33 + 		if ((s.f_blocks > 0) || !mount_table){
    2.34 ++			if (opt & OPT_INODE) {
    2.35 ++				s.f_blocks = s.f_files;
    2.36 ++				s.f_bavail = s.f_bfree = s.f_ffree;
    2.37 ++				s.f_bsize = 1;
    2.38 ++#if ENABLE_FEATURE_HUMAN_READABLE
    2.39 ++				if (df_disp_hr)
    2.40 ++					df_disp_hr = 1;
    2.41 ++#endif
    2.42 ++			}
    2.43 + 			blocks_used = s.f_blocks - s.f_bfree;
    2.44 + 			blocks_percent_used = 0;
    2.45 + 			if (blocks_used + s.f_bavail) {
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/busybox/stuff/busybox-1.7.3-hexdump.u	Tue Feb 26 12:00:01 2008 +0000
     3.3 @@ -0,0 +1,77 @@
     3.4 +--- busybox-1.7.3/util-linux/hexdump.c
     3.5 ++++ busybox-1.7.3/util-linux/hexdump.c
     3.6 +@@ -45,7 +45,7 @@
     3.7 + 
     3.8 + static const char add_first[] ALIGN1 = "\"%07.7_Ax\n\"";
     3.9 + 
    3.10 +-static const char hexdump_opts[] ALIGN1 = "bcdoxCe:f:n:s:v";
    3.11 ++static const char hexdump_opts[] ALIGN1 = "bcdoxCe:f:n:s:vR";
    3.12 + 
    3.13 + static const struct suffix_mult suffixes[] = {
    3.14 + 	{ "b", 512 },
    3.15 +@@ -59,6 +59,8 @@
    3.16 + {
    3.17 + 	const char *p;
    3.18 + 	int ch;
    3.19 ++	FILE *fp;
    3.20 ++	smallint rdump = 0;
    3.21 + 
    3.22 + 	bb_dump_vflag = FIRST;
    3.23 + 	bb_dump_length = -1;
    3.24 +@@ -70,7 +72,7 @@
    3.25 + 		if ((p - hexdump_opts) < 5) {
    3.26 + 			bb_dump_add(add_first);
    3.27 + 			bb_dump_add(add_strings[(int)(p - hexdump_opts)]);
    3.28 +-		} else if (ch == 'C') {
    3.29 ++		} if (ch == 'C') {
    3.30 + 			bb_dump_add("\"%08.8_Ax\n\"");
    3.31 + 			bb_dump_add("\"%08.8_ax  \" 8/1 \"%02x \" \"  \" 8/1 \"%02x \" ");
    3.32 + 			bb_dump_add("\"  |\" 16/1 \"%_p\" \"|\\n\"");
    3.33 +@@ -90,6 +92,9 @@
    3.34 + 			} /* else */
    3.35 + 			if (ch == 'v') {
    3.36 + 				bb_dump_vflag = ALL;
    3.37 ++			} /* else */
    3.38 ++			if (ch == 'R') {
    3.39 ++				rdump = 1;
    3.40 + 			}
    3.41 + 		}
    3.42 + 	}
    3.43 +@@ -101,5 +106,36 @@
    3.44 + 
    3.45 + 	argv += optind;
    3.46 + 
    3.47 +-	return bb_dump_dump(argv);
    3.48 ++	if (!rdump) {
    3.49 ++		return bb_dump_dump(argv);
    3.50 ++	}
    3.51 ++
    3.52 ++	/* -R: reverse of 'hexdump -Cv' */
    3.53 ++	fp = stdin;
    3.54 ++	if (!*argv) {
    3.55 ++		argv--;
    3.56 ++		goto jump_in;
    3.57 ++	}
    3.58 ++
    3.59 ++	do {
    3.60 ++		char *buf;
    3.61 ++		fp = xfopen(*argv, "r");
    3.62 ++ jump_in:
    3.63 ++		while ((buf = xmalloc_getline(fp)) != NULL) {
    3.64 ++			p = buf;
    3.65 ++			while (1) {
    3.66 ++				/* skip address or previous byte */
    3.67 ++				while (isxdigit(*p)) p++;
    3.68 ++				while (*p == ' ') p++;
    3.69 ++				/* '|' char will break the line */
    3.70 ++				if (!isxdigit(*p) || sscanf(p, "%x ", &ch) != 1)
    3.71 ++					break;
    3.72 ++				putchar(ch);
    3.73 ++			}
    3.74 ++			free(buf);
    3.75 ++		}
    3.76 ++		fclose(fp);
    3.77 ++	} while (*++argv);
    3.78 ++
    3.79 ++	fflush_stdout_and_exit(EXIT_SUCCESS);
    3.80 + }