authorgravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2026-04-14 16:43:37 -07:00
committergravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2026-04-14 16:43:37 -07:00
logfd1af7564b8d478ae3ebfd64fdd20802ce9e110e
tree3405aa1dd48e5fe9a58d7d1ae716f6c335cc1a46
parent56c4bc345e8df284d13756250f687a974290eb9e
signaturebadge-check Signed by SSH key SHA256:4hHJbtBRU58AYXwjL7fkz2fnQHdiye8x1QpTCQ0sHNw

Address: add std.fmt.format helpers


1 files changed, 23 insertions(+), 0 deletions(-)

net.zig+23
......@@ -49,6 +49,14 @@ pub const Address = extern union {
4949 };
5050 }
5151
52 pub fn format(adr: Address, comptime fmt: []const u8, options: std.fmt.FormatOptions, writer: anytype) !void {
53 switch (adr.any.family) {
54 .INET => try adr.in.format(fmt, options, writer),
55 .INET6 => try adr.in6.format(fmt, options, writer),
56 else => |a| try writer.print("{{any:{s}}}", .{@tagName(a)}),
57 }
58 }
59
5260 pub fn size(adr: Address) sys.socklen_t {
5361 return switch (adr.any.family) {
5462 .INET => @sizeOf(sys.struct_sockaddr_in),
......@@ -123,6 +131,14 @@ pub const Ip4Address = extern struct {
123131 },
124132 };
125133 }
134
135 pub fn format(adr: Ip4Address, comptime fmt: []const u8, options: std.fmt.FormatOptions, writer: anytype) !void {
136 _ = fmt;
137 _ = options;
138 const parts: [4]u8 = @bitCast(adr.sa.addr.addr);
139 const port = @byteSwap(adr.sa.port);
140 try writer.print("{d}.{d}.{d}.{d}:{d}", .{ parts[0], parts[1], parts[2], parts[3], port });
141 }
126142};
127143
128144pub const Ip6Address = extern struct {
......@@ -140,6 +156,13 @@ pub const Ip6Address = extern struct {
140156 },
141157 };
142158 }
159
160 pub fn format(adr: Ip6Address, comptime fmt: []const u8, options: std.fmt.FormatOptions, writer: anytype) !void {
161 _ = adr;
162 _ = fmt;
163 _ = options;
164 try writer.writeAll("{Ip6Address}");
165 }
143166};
144167
145168pub const Socket = switch (os) {