diff mbox series

[iproute2-next,06/20] bridge: vlan: Use printf() to avoid temporary buffer

Message ID 20231211140732.11475-7-bpoirier@nvidia.com (mailing list archive)
State Accepted
Commit cf7b528a21f67d5ef1ef1d9943bddc325255f6a4
Delegated to: Stephen Hemminger
Headers show
Series bridge: vni: UI fixes | expand

Checks

Context Check Description
netdev/tree_selection success Not a local patch

Commit Message

Benjamin Poirier Dec. 11, 2023, 2:07 p.m. UTC
Currently, print_vlan_tunnel_info() is first outputting a formatted string
to a temporary buffer in order to use print_string() which can handle json
or normal text mode. Since this specific string is only output in normal
text mode, by calling printf() directly, we can avoid the need to first
output to a temporary string buffer.

Reviewed-by: Petr Machata <petrm@nvidia.com>
Tested-by: Petr Machata <petrm@nvidia.com>
Signed-off-by: Benjamin Poirier <bpoirier@nvidia.com>
---
 bridge/vlan.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

Comments

Stephen Hemminger Dec. 21, 2023, 4:03 a.m. UTC | #1
On Mon, 11 Dec 2023 09:07:18 -0500
Benjamin Poirier <bpoirier@nvidia.com> wrote:

> Currently, print_vlan_tunnel_info() is first outputting a formatted string
> to a temporary buffer in order to use print_string() which can handle json
> or normal text mode. Since this specific string is only output in normal
> text mode, by calling printf() directly, we can avoid the need to first
> output to a temporary string buffer.
> 
> Reviewed-by: Petr Machata <petrm@nvidia.com>
> Tested-by: Petr Machata <petrm@nvidia.com>
> Signed-off-by: Benjamin Poirier <bpoirier@nvidia.com>
> ---
>  bridge/vlan.c | 7 ++-----
>  1 file changed, 2 insertions(+), 5 deletions(-)
> 
> diff --git a/bridge/vlan.c b/bridge/vlan.c
> index dfc62f83..797b7802 100644
> --- a/bridge/vlan.c
> +++ b/bridge/vlan.c
> @@ -662,11 +662,8 @@ static void print_vlan_tunnel_info(struct rtattr *tb, int ifindex)
>  		open_json_object(NULL);
>  		width = print_range("vlan", last_vid_start, tunnel_vid);
>  		if (width <= VLAN_ID_LEN) {
> -			char buf[VLAN_ID_LEN + 1];
> -
> -			snprintf(buf, sizeof(buf), "%-*s",
> -				 VLAN_ID_LEN - width, "");
> -			print_string(PRINT_FP, NULL, "%s  ", buf);
> +			if (!is_json_context())
> +				printf("%-*s  ", VLAN_ID_LEN - width, "");
>  		} else {

I think the fix needs to be deeper here.
In JSON the width doesn't matter.
diff mbox series

Patch

diff --git a/bridge/vlan.c b/bridge/vlan.c
index dfc62f83..797b7802 100644
--- a/bridge/vlan.c
+++ b/bridge/vlan.c
@@ -662,11 +662,8 @@  static void print_vlan_tunnel_info(struct rtattr *tb, int ifindex)
 		open_json_object(NULL);
 		width = print_range("vlan", last_vid_start, tunnel_vid);
 		if (width <= VLAN_ID_LEN) {
-			char buf[VLAN_ID_LEN + 1];
-
-			snprintf(buf, sizeof(buf), "%-*s",
-				 VLAN_ID_LEN - width, "");
-			print_string(PRINT_FP, NULL, "%s  ", buf);
+			if (!is_json_context())
+				printf("%-*s  ", VLAN_ID_LEN - width, "");
 		} else {
 			fprintf(stderr, "BUG: vlan range too wide, %u\n",
 				width);