[BusyBox] [PATCH] - Fixing coreutils/od.c -v

Felipe Kellermann stdfk at terra.com.br
Fri May 28 20:35:51 UTC 2004


Package: busybox
Version: v1.00-pre10 (2004.05.28-17:04+0000)

As noticed today by Steven Scholz, the od's `-v' was broken.
I've fixed that and now both the flags `-v' and `-a' are OK,

$ echo "uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu\02bar\4"| od -av
0000000    u   u   u   u   u   u   u   u   u   u   u   u   u   u   u   u
0000020    u   u   u   u   u   u   u   u   u   u   u   u   u   u   u   u
0000040    u stx   b   a   r eot  nl
0000047

-- 
Felipe Kellermann
-------------- next part --------------
Index: coreutils/od.c
===================================================================
RCS file: /var/cvs/busybox/coreutils/od.c,v
retrieving revision 1.6
diff -u -3 -p -b -w -u -r1.6 od.c
--- a/coreutils/od.c	19 Mar 2003 09:42:02 -0000	1.6
+++ b/coreutils/od.c	28 May 2004 20:26:55 -0000
@@ -155,25 +155,27 @@ static const char * const add_strings[] 
 	"4/4 \"    %011o \" \"\\n\"",			/* O */
 };
 
-static const signed char od_opts[] = "aBbcDdeFfHhIiLlOovXx";
+static const signed char od_opts[] = "aBbcDdeFfHhIiLlOoXxv";
 
 static const signed char od_o2si[] = {
 	0, 1, 2, 3, 5,
 	4, 6, 6, 7, 8,
 	9, 0xa, 0xb, 0xa, 0xa,
-	0xb, 1, -1, 8, 9,
+	0xb, 1, 8, 9,
 };
 
 int od_main(int argc, char **argv)
 {
 	int ch;
-	int first = 1;
+	short first = 1;
 	signed char *p;
 	bb_dump_vflag = FIRST;
 	bb_dump_length = -1;
 
 	while ((ch = getopt(argc, argv, od_opts)) > 0) {
-		if (((p = strchr(od_opts, ch)) != NULL) && (*p >= 0)) {
+		if (ch == 'v')
+			bb_dump_vflag = ALL;
+		else if (((p = strchr(od_opts, ch)) != NULL) && (*p >= 0)) {
 			if (first) {
 				first = 0;
 				bb_dump_add("\"%07.7_Ao\n\"");
@@ -182,8 +184,6 @@ int od_main(int argc, char **argv)
 				bb_dump_add("\"         \"");
 			}
 			bb_dump_add(add_strings[od_o2si[(int)(p-od_opts)]]);
-		} else if (ch == 'v') {
-			bb_dump_vflag = ALL;
 		} else {	/* P, p, s, w, or other unhandled */
 			bb_show_usage();
 		}


More information about the busybox mailing list