Patchwork Ethtool: Beautify private flags print

login
register
mail settings
Submitter Yuval Mintz
Date May 23, 2013, 5:55 p.m.
Message ID <1369331751-32543-1-git-send-email-yuvalmin@broadcom.com>
Download mbox | patch
Permalink /patch/246001/
State Not Applicable
Delegated to: David Miller
Headers show

Comments

Yuval Mintz - May 23, 2013, 5:55 p.m.
When printing the private flags of the device, align all strings
to have the same length.

Signed-off-by: Yuval Mintz <yuvalmin@broadcom.com>
---
 ethtool.c | 26 ++++++++++++++++++++++----
 1 file changed, 22 insertions(+), 4 deletions(-)
Joe Perches - May 23, 2013, 6:30 p.m.
On Thu, 2013-05-23 at 20:55 +0300, Yuval Mintz wrote:
> When printing the private flags of the device, align all strings
> to have the same length.
[]
> diff --git a/ethtool.c b/ethtool.c
[]
> +	for (i = 0; i < strings->len; i++) {
> +		int j;
> +
> +		printf("%s", (const char *)strings->data +
> +					   i * ETH_GSTRING_LEN);
> +
> +		cur_len = strlen((const char*)strings->data +
> +					      i * ETH_GSTRING_LEN);
> +		for (j = 0; j < max_len - cur_len; j++)
> +			printf(" ");

I think this isn't necessary, but this is simpler

"%-*s", max_len, strings->data + i * ETH_GSTRING_LEN


--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Yuval Mintz - May 24, 2013, 3:50 a.m.
> On Thu, 2013-05-23 at 20:55 +0300, Yuval Mintz wrote:
> > When printing the private flags of the device, align all strings
> > to have the same length.
> []
> > diff --git a/ethtool.c b/ethtool.c
> []
> > +	for (i = 0; i < strings->len; i++) {
> > +		int j;
> > +
> > +		printf("%s", (const char *)strings->data +
> > +					   i * ETH_GSTRING_LEN);
> > +
> > +		cur_len = strlen((const char*)strings->data +
> > +					      i * ETH_GSTRING_LEN);
> > +		for (j = 0; j < max_len - cur_len; j++)
> > +			printf(" ");
> 
> I think this isn't necessary, but this is simpler
> 
> "%-*s", max_len, strings->data + i * ETH_GSTRING_LEN

Nice - I was unfamiliar with this second-order format string modifier.
I'll modify the patch into using this format.


--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/ethtool.c b/ethtool.c
index 8cc10b5..1244c74 100644
--- a/ethtool.c
+++ b/ethtool.c
@@ -3445,6 +3445,7 @@  static int do_gprivflags(struct cmd_context *ctx)
 	struct ethtool_gstrings *strings;
 	struct ethtool_value flags;
 	unsigned int i;
+	int max_len = 0, cur_len;
 
 	if (ctx->argc != 0)
 		exit_bad_args();
@@ -3472,11 +3473,28 @@  static int do_gprivflags(struct cmd_context *ctx)
 		return 1;
 	}
 
+	/* Find longest string and align all strings accordingly */
+	for (i = 0; i < strings->len; i++) {
+		cur_len = strlen((const char*)strings->data +
+					      i * ETH_GSTRING_LEN);
+		if (cur_len > max_len)
+			max_len = cur_len;
+	}
+
 	printf("Private flags for %s:\n", ctx->devname);
-	for (i = 0; i < strings->len; i++)
-		printf("%s: %s\n",
-		       (const char *)strings->data + i * ETH_GSTRING_LEN,
-		       (flags.data & (1U << i)) ? "on" : "off");
+	for (i = 0; i < strings->len; i++) {
+		int j;
+
+		printf("%s", (const char *)strings->data +
+					   i * ETH_GSTRING_LEN);
+
+		cur_len = strlen((const char*)strings->data +
+					      i * ETH_GSTRING_LEN);
+		for (j = 0; j < max_len - cur_len; j++)
+			printf(" ");
+
+		printf(": %s\n", (flags.data & (1U << i)) ? "on" : "off");
+	}
 
 	return 0;
 }