aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-01-22 03:24:32 -0800
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-01-22 03:24:32 -0800
commit043e408b15c1c6cf2ad985a0001dbe7a0a02795b (patch)
treee7ba63736a58bd33530a90bc64ab09915202e753 /src
parent9f6658b9813f69ecb5f982dad3969af6b454138b (diff)
downloadbun-043e408b15c1c6cf2ad985a0001dbe7a0a02795b.tar.gz
bun-043e408b15c1c6cf2ad985a0001dbe7a0a02795b.tar.zst
bun-043e408b15c1c6cf2ad985a0001dbe7a0a02795b.zip
cleanup execArgv a little
Diffstat (limited to 'src')
-rw-r--r--src/bun.js/node/types.zig23
1 files changed, 19 insertions, 4 deletions
diff --git a/src/bun.js/node/types.zig b/src/bun.js/node/types.zig
index 038c7e6a0..5da5aa511 100644
--- a/src/bun.js/node/types.zig
+++ b/src/bun.js/node/types.zig
@@ -1894,19 +1894,34 @@ pub const Process = struct {
pub fn getExecArgv(globalObject: *JSC.JSGlobalObject) callconv(.C) JSC.JSValue {
const allocator = globalObject.allocator();
+ var vm = globalObject.bunVM();
var args = allocator.alloc(
JSC.ZigString,
// argv omits "bun" because it could be "bun run" or "bun" and it's kind of ambiguous
// argv also omits the script name
- std.os.argv.len,
+ std.os.argv.len -| 1,
) catch unreachable;
defer allocator.free(args);
+ var used: usize = 0;
+ const offset: usize = 1;
+
+ for (std.os.argv[@min(std.os.argv.len, offset)..]) |arg_| {
+ const arg = bun.span(arg_);
+ if (arg.len == 0)
+ continue;
+
+ if (arg[0] != '-')
+ continue;
+
+ if (vm.argv.len > 0 and strings.eqlLong(vm.argv[0], arg, true))
+ break;
+
+ args[used] = JSC.ZigString.fromUTF8(arg);
- for (std.os.argv) |arg, i| {
- args[i] = JSC.ZigString.fromUTF8(bun.span(arg));
+ used += 1;
}
- return JSC.JSValue.createStringArray(globalObject, args.ptr, args.len, true);
+ return JSC.JSValue.createStringArray(globalObject, args.ptr, used, true);
}
pub fn getArgv(globalObject: *JSC.JSGlobalObject) callconv(.C) JSC.JSValue {