Thread (4 messages) 4 messages, 3 authors, 2008-10-31

Re: [PATCH 1/4] printk: add %I4, %I6, %i4, %i6 format specifiers

From: Harvey Harrison <hidden>
Date: 2008-10-31 00:00:02

On Thu, 2008-10-30 at 13:28 -0700, Joe Perches wrote:
On Wed, 2008-10-29 at 11:35 -0700, Harvey Harrison wrote:
quoted
 		return ip6_addr_string(buf, end, ptr, field_width, precision, flags);
+	case 'i':
+		flags |= SPECIAL;
+		/* Fallthrough */
+	case 'I':
+		if (fmt[1] == '6')
+			return ip6_addr_string(buf, end, ptr, field_width, precision, flags);
+		if (fmt[1] == '4')
+			return ip4_addr_string(buf, end, ptr, field_width, precision, flags);
+		flags &= ~SPECIAL;
+		break;
 	}
 	flags |= SMALL;
 	if (field_width == -1) {
Hi Harvey.

I was thinking about extending %p<foo> to support
struct task_struct * and noticed this code isn't
really correct.

SPECIAL should be cleared from flags only when *fmt
is 'i' not 'I' and SPECIAL wasn't previously set.
SPECIAL is set when # is used with the p modifier...which warns as we've
already seen.  So the only way to set special in the %p case is to use
i.  Instead of having an if() I just unconditionally clear it (perhaps
unnecessarily).  Mind you, we only get here if you pass in %p[iI][not 4 or 6]

Cheers,

Harvey
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help