svn commit: trunk/busybox: coreutils testsuite

vda at busybox.net vda at busybox.net
Tue Nov 13 14:23:57 PST 2007


Author: vda
Date: 2007-11-13 14:23:57 -0800 (Tue, 13 Nov 2007)
New Revision: 20420

Log:
tr: more of code shrink (getopt32-ification)
runtest: cleanup. Method of getting $applets was truly bizarre

function                                             old     new   delta
tr_main                                              655     527    -128



Modified:
   trunk/busybox/coreutils/tr.c
   trunk/busybox/testsuite/runtest


Changeset:
Modified: trunk/busybox/coreutils/tr.c
===================================================================
--- trunk/busybox/coreutils/tr.c	2007-11-13 22:22:29 UTC (rev 20419)
+++ trunk/busybox/coreutils/tr.c	2007-11-13 22:23:57 UTC (rev 20420)
@@ -22,10 +22,6 @@
 
 #define ASCII 0377
 
-#define TR_OPT_complement	(1<<0)
-#define TR_OPT_delete		(1<<1)
-#define TR_OPT_squeeze_reps	(1<<2)
-
 static void map(char *pvector,
 		unsigned char *string1, unsigned int string1_len,
 		unsigned char *string2, unsigned int string2_len)
@@ -180,47 +176,39 @@
 int tr_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
 int tr_main(int argc, char **argv)
 {
-	unsigned char *ptr;
 	int output_length = 0, input_length;
-	int idx = 1;
 	int i;
-	smalluint flags = 0;
+	smalluint flags;
 	ssize_t read_chars = 0;
 	size_t in_index = 0, out_index = 0;
 	unsigned last = UCHAR_MAX + 1; /* not equal to any char */
 	unsigned char coded, c; 
-	RESERVE_CONFIG_UBUFFER(output, BUFSIZ);
-	RESERVE_CONFIG_BUFFER(vector, ASCII+1);
-	RESERVE_CONFIG_BUFFER(invec,  ASCII+1);
-	RESERVE_CONFIG_BUFFER(outvec, ASCII+1);
+	unsigned char *output = xmalloc(BUFSIZ);
+	char *vector = xzalloc((ASCII+1) * 3);
+	char *invec  = vector + (ASCII+1);
+	char *outvec = vector + (ASCII+1) * 2;
 
-	if (argc > 1 && argv[idx][0] == '-') {
-		for (ptr = (unsigned char *) &argv[idx][1]; *ptr; ptr++) {
-			if (*ptr == 'c')
-				flags |= TR_OPT_complement;
-			else if (*ptr == 'd')
-				flags |= TR_OPT_delete;
-			else if (*ptr == 's')
-				flags |= TR_OPT_squeeze_reps;
-			else
-				bb_show_usage();
-		}
-		idx++;
-	}
+#define TR_OPT_complement	(1 << 0)
+#define TR_OPT_delete		(1 << 1)
+#define TR_OPT_squeeze_reps	(1 << 2)
+
+	flags = getopt32(argv, "+cds"); /* '+': stop at first non-option */
+	argv += optind;
+
 	for (i = 0; i <= ASCII; i++) {
 		vector[i] = i;
-		invec[i] = outvec[i] = FALSE;
+		/*invec[i] = outvec[i] = FALSE; - done by xzalloc */
 	}
 
 #define tr_buf bb_common_bufsiz1
-	if (argv[idx] != NULL) {
-		input_length = expand(argv[idx++], tr_buf);
+	if (*argv != NULL) {
+		input_length = expand(*argv++, tr_buf);
 		if (flags & TR_OPT_complement)
 			input_length = complement(tr_buf, input_length);
-		if (argv[idx]) {
-			if (argv[idx][0] == '\0')
+		if (*argv) {
+			if (argv[0][0] == '\0')
 				bb_error_msg_and_die("STRING2 cannot be empty");
-			output_length = expand(argv[idx], output);
+			output_length = expand(*argv, output);
 			map(vector, tr_buf, input_length, output, output_length);
 		}
 		for (i = 0; i < input_length; i++)

Modified: trunk/busybox/testsuite/runtest
===================================================================
--- trunk/busybox/testsuite/runtest	2007-11-13 22:22:29 UTC (rev 20419)
+++ trunk/busybox/testsuite/runtest	2007-11-13 22:23:57 UTC (rev 20420)
@@ -1,9 +1,5 @@
 #!/bin/sh
 
-[ -n "$srcdir" ] || srcdir=$(pwd)
-[ -n "$bindir" ] || bindir=$(dirname $(pwd))
-PATH=$bindir:$PATH
-
 # Run old-style test.
 
 run_applet_testcase()
@@ -35,9 +31,9 @@
 	mkdir -p tmp
 	pushd tmp > /dev/null
 
-	d=$srcdir sh -x -e $testcase >.logfile.txt 2>&1 || status=$?
+	d=$tsdir sh -x -e $testcase >.logfile.txt 2>&1 || status=$?
 
-	if [ $status -ne 0 ] ; then
+	if [ $status -ne 0 ]; then
 		echo FAIL: $testname
 		if [ $verbose -gt 0 ]; then
 			cat .logfile.txt
@@ -61,14 +57,11 @@
 
 	local status=0
 
-	for testcase in $srcdir/$applet/*; do
-		if [ "$testcase" = "$srcdir/$applet/CVS" ]; then
+	for testcase in $tsdir/$applet/*; do
+		if [ "$testcase" = "$tsdir/$applet/CVS" ]; then
 			continue
 		fi
-
-		if run_applet_testcase $applet $testcase; then
-			:
-		else
+		if ! run_applet_testcase $applet $testcase; then
 			status=1
 		fi
 	done
@@ -80,64 +73,61 @@
 status=0
 verbose=0
 
+[ -n "$tsdir" ] || tsdir=$(pwd)
+[ -n "$bindir" ] || bindir=$(dirname $(pwd))
+PATH="$bindir:$PATH"
+
 if [ x"$1" = x"-v" ]; then
 	verbose=1
 	export VERBOSE=$verbose
 	shift
 fi
 
+implemented=$(
+	$bindir/busybox 2>&1 |
+	while read line; do
+		if test x"$line" = x"Currently defined functions:"; then
+			xargs | sed 's/,//g'
+			break
+		fi
+	done
+	)
+
+applets="$implemented"
 if [ $# -ne 0 ]; then
-	applets=$(cd $srcdir ; for i in $@; do ls ${i}* ; done)
-else
-	applets=$(ls $srcdir)
+	applets="$@"
 fi
 
 # Populate a directory with links to all busybox applets
 
 LINKSDIR="$bindir/runtest-tempdir-links"
-implemented=$($bindir/busybox 2>&1 |
-	while read line
-	do
-		if test x"$line" = x"Currently defined functions:"
-		then
-			xargs | sed 's/,//g'
-			break
-		fi
-	done
-	)
 rm -rf "$LINKSDIR" 2>/dev/null
 mkdir "$LINKSDIR"
-for i in $implemented
-do
+for i in $implemented; do
 	ln -s $bindir/busybox "$LINKSDIR"/$i
 done
 
 # Set up option flags so tests can be selective.
 
-configfile=${bindir:-../../}/.config
-export OPTIONFLAGS=:$(echo $(sed -nr 's/^CONFIG_(.*)=.*/\1/p' $configfile) | sed 's/ /:/g')
+configfile=${bindir}/.config
+export OPTIONFLAGS=:$(sed -nr 's/^CONFIG_(.*)=.*/\1/p' $configfile | xargs | sed 's/ /:/g')
 
 for applet in $applets; do
 	if [ "$applet" = "links" ]; then continue; fi
-	if [ "$applet" != "CVS" -a -d "$srcdir/$applet" ]; then
-		if run_applet_tests $applet; then
-			:
-		else
+	if [ "$applet" != "CVS" -a -d "$tsdir/$applet" ]; then
+		if ! run_applet_tests $applet; then
 			status=1
 		fi
 	fi
 
 	# Is this a new-style test?
-	applet=$(echo "$applet" | sed -n 's/\.tests$//p')
-	if [ ${#applet} -ne 0 ]
-	then
-		if [ ! -h "$LINKSDIR/$applet" ] && [ "${applet:0:4}" != "all_" ]
-		then
+	if [ -f ${applet}.tests ]; then
+		if [ ! -h "$LINKSDIR/$applet" ] && [ "${applet:0:4}" != "all_" ]; then
 			echo "SKIPPED: $applet (not built)"
 			continue
 		fi
-		if PATH="$LINKSDIR":$srcdir:$bindir:$PATH \
-				"${srcdir:-.}/$applet".tests
+		if PATH="$LINKSDIR":$tsdir:$bindir:$PATH \
+				"${tsdir:-.}/$applet".tests
 		then
 			:
 		else



More information about the busybox-cvs mailing list