From fd1af7564b8d478ae3ebfd64fdd20802ce9e110e Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Tue, 14 Apr 2026 16:43:37 -0700 Subject: [PATCH] Address: add std.fmt.format helpers --- net.zig | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/net.zig b/net.zig index 09bd81caffc4db78d019ac9e15587735a099770f..a8add4d54ef3c37bf6fb6530bca79351eb2e56ac 100644 --- a/net.zig +++ b/net.zig @@ -49,6 +49,14 @@ pub const Address = extern union { }; } + pub fn format(adr: Address, comptime fmt: []const u8, options: std.fmt.FormatOptions, writer: anytype) !void { + switch (adr.any.family) { + .INET => try adr.in.format(fmt, options, writer), + .INET6 => try adr.in6.format(fmt, options, writer), + else => |a| try writer.print("{{any:{s}}}", .{@tagName(a)}), + } + } + pub fn size(adr: Address) sys.socklen_t { return switch (adr.any.family) { .INET => @sizeOf(sys.struct_sockaddr_in), @@ -123,6 +131,14 @@ pub const Ip4Address = extern struct { }, }; } + + pub fn format(adr: Ip4Address, comptime fmt: []const u8, options: std.fmt.FormatOptions, writer: anytype) !void { + _ = fmt; + _ = options; + const parts: [4]u8 = @bitCast(adr.sa.addr.addr); + const port = @byteSwap(adr.sa.port); + try writer.print("{d}.{d}.{d}.{d}:{d}", .{ parts[0], parts[1], parts[2], parts[3], port }); + } }; pub const Ip6Address = extern struct { @@ -140,6 +156,13 @@ pub const Ip6Address = extern struct { }, }; } + + pub fn format(adr: Ip6Address, comptime fmt: []const u8, options: std.fmt.FormatOptions, writer: anytype) !void { + _ = adr; + _ = fmt; + _ = options; + try writer.writeAll("{Ip6Address}"); + } }; pub const Socket = switch (os) { -- 2.54.0