diff options
author | 2021-08-10 18:26:16 -0700 | |
---|---|---|
committer | 2021-08-10 18:26:16 -0700 | |
commit | 10b4b872a2824b6d7c66030dafc831f0da3309e8 (patch) | |
tree | a26e97e9e7be22c4407ccc628a54eecf09516c1f /src/resolver/resolve_path.zig | |
parent | 0daff24b16487acfb420813793bc432f8ceaf333 (diff) | |
download | bun-10b4b872a2824b6d7c66030dafc831f0da3309e8.tar.gz bun-10b4b872a2824b6d7c66030dafc831f0da3309e8.tar.zst bun-10b4b872a2824b6d7c66030dafc831f0da3309e8.zip |
This is alot
Former-commit-id: 4b2a396611ec03270dc768b70e488b0f5eee2a37
Diffstat (limited to 'src/resolver/resolve_path.zig')
-rw-r--r-- | src/resolver/resolve_path.zig | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/src/resolver/resolve_path.zig b/src/resolver/resolve_path.zig index 212b2ff4d..e451db36f 100644 --- a/src/resolver/resolve_path.zig +++ b/src/resolver/resolve_path.zig @@ -648,6 +648,15 @@ pub fn joinAbsString(_cwd: []const u8, parts: anytype, comptime _platform: Platf ); } +pub fn joinAbsStringZ(_cwd: []const u8, parts: anytype, comptime _platform: Platform) [:0]const u8 { + return joinAbsStringBufZ( + _cwd, + &parser_join_input_buffer, + parts, + _platform, + ); +} + pub fn joinStringBuf(buf: []u8, _parts: anytype, comptime _platform: Platform) []const u8 { if (FeatureFlags.use_std_path_join) { var alloc = std.heap.FixedBufferAllocator.init(buf); @@ -701,8 +710,19 @@ pub fn joinStringBuf(buf: []u8, _parts: anytype, comptime _platform: Platform) [ } pub fn joinAbsStringBuf(_cwd: []const u8, buf: []u8, _parts: anytype, comptime _platform: Platform) []const u8 { + return _joinAbsStringBuf(false, []const u8, _cwd, buf, _parts, _platform); +} + +pub fn joinAbsStringBufZ(_cwd: []const u8, buf: []u8, _parts: anytype, comptime _platform: Platform) [:0]const u8 { + return _joinAbsStringBuf(true, [:0]const u8, _cwd, buf, _parts, _platform); +} + +inline fn _joinAbsStringBuf(comptime is_sentinel: bool, comptime ReturnType: type, _cwd: []const u8, buf: []u8, _parts: anytype, comptime _platform: Platform) ReturnType { var parts: []const []const u8 = _parts; if (parts.len == 0) { + if (comptime is_sentinel) { + unreachable; + } return _cwd; } @@ -779,7 +799,12 @@ pub fn joinAbsStringBuf(_cwd: []const u8, buf: []u8, _parts: anytype, comptime _ std.mem.copy(u8, buf[leading_separator.len .. result.len + leading_separator.len], result); - return buf[0 .. result.len + leading_separator.len]; + if (comptime is_sentinel) { + buf.ptr[result.len + leading_separator.len + 1] = 0; + return buf[0 .. result.len + leading_separator.len :0]; + } else { + return buf[0 .. result.len + leading_separator.len]; + } } pub fn isSepPosix(char: u8) bool { |