svn commit: trunk/busybox: coreutils testsuite

vda at busybox.net vda at busybox.net
Mon Apr 14 19:50:07 UTC 2008


Author: vda
Date: 2008-04-14 12:50:06 -0700 (Mon, 14 Apr 2008)
New Revision: 21733

Log:
od: fix "od -b"



Added:
   trunk/busybox/testsuite/od.tests

Modified:
   trunk/busybox/coreutils/od_bloaty.c


Changeset:
Modified: trunk/busybox/coreutils/od_bloaty.c
===================================================================
--- trunk/busybox/coreutils/od_bloaty.c	2008-04-14 10:56:41 UTC (rev 21732)
+++ trunk/busybox/coreutils/od_bloaty.c	2008-04-14 19:50:06 UTC (rev 21733)
@@ -508,10 +508,10 @@
 }
 
 /* If S points to a single valid modern od format string, put
-   a description of that format in *TSPEC, make *NEXT point at the
-   character following the just-decoded format (if *NEXT is non-NULL),
-   and return zero.  For example, if S were "d4afL"
-   *NEXT would be set to "afL" and *TSPEC would be
+   a description of that format in *TSPEC, return pointer to
+   character following the just-decoded format.
+   For example, if S were "d4afL", we will return a rtp to "afL"
+   and *TSPEC would be
 	{
 		fmt = SIGNED_DECIMAL;
 		size = INT or LONG; (whichever integral_type_size[4] resolves to)
@@ -521,9 +521,8 @@
    S_ORIG is solely for reporting errors.  It should be the full format
    string argument. */
 
-static void
-decode_one_format(const char *s_orig, const char *s, const char **next,
-					   struct tspec *tspec)
+static const char *
+decode_one_format(const char *s_orig, const char *s, struct tspec *tspec)
 {
 	enum size_spec size_spec;
 	unsigned size;
@@ -536,7 +535,6 @@
 	unsigned field_width = 0;
 	int pos;
 
-	assert(tspec != NULL);
 
 	switch (*s) {
 	case 'd':
@@ -562,13 +560,14 @@
 				s = end;
 			}
 		} else {
-			static const uint8_t CSIL_sizeof[] = {
+			static const uint8_t CSIL_sizeof[4] = {
 				sizeof(char),
 				sizeof(short),
 				sizeof(int),
 				sizeof(long),
 			};
 			size = CSIL_sizeof[p - CSIL];
+			s++; /* skip C/S/I/L */
 		}
 
 #define ISPEC_TO_FORMAT(Spec, Min_format, Long_format, Max_format) \
@@ -716,8 +715,7 @@
 	if (tspec->hexl_mode_trailer)
 		s++;
 
-	if (next != NULL)
-		*next = s;
+	return s;
 }
 
 /* Decode the modern od format string S.  Append the decoded
@@ -733,7 +731,7 @@
 		struct tspec tspec;
 		const char *next;
 
-		decode_one_format(s_orig, s, &next, &tspec);
+		next = decode_one_format(s_orig, s, &tspec);
 
 		assert(s != next);
 		s = next;

Added: trunk/busybox/testsuite/od.tests
===================================================================
--- trunk/busybox/testsuite/od.tests	                        (rev 0)
+++ trunk/busybox/testsuite/od.tests	2008-04-14 19:50:06 UTC (rev 21733)
@@ -0,0 +1,17 @@
+#!/bin/sh
+# Copyright 2008 by Denys Vlasenko
+# Licensed under GPL v2, see file LICENSE for details.
+
+. testing.sh
+
+# testing "test name" "options" "expected result" "file input" "stdin"
+
+testing "od -b" \
+	"echo HELLO | od -b" \
+"\
+0000000 110 105 114 114 117 012
+0000006
+" \
+	"" "HELLO"
+
+exit $FAILCOUNT


Property changes on: trunk/busybox/testsuite/od.tests
___________________________________________________________________
Name: svn:executable
   + *




More information about the busybox-cvs mailing list