fn strdup(str: [*:0]const c_char) callconv(.c) ?[*:0]c_char
fn strdup(str: [*:0]const c_char) callconv(.c) ?[*:0]c_char { const len = std.mem.len(str); const d_opaque = c.malloc(len + 1) orelse return null; const d: [*]c_char = @ptrCast(d_opaque); @memcpy(d[0 .. len + 1], str[0 .. len + 1]); return @ptrCast(d); }