aboutsummaryrefslogtreecommitdiff
path: root/src/resolver/resolve_path.zig
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-08-10 18:26:16 -0700
committerGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-08-10 18:26:16 -0700
commit10b4b872a2824b6d7c66030dafc831f0da3309e8 (patch)
treea26e97e9e7be22c4407ccc628a54eecf09516c1f /src/resolver/resolve_path.zig
parent0daff24b16487acfb420813793bc432f8ceaf333 (diff)
downloadbun-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.zig27
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 {