aboutsummaryrefslogtreecommitdiff
path: root/lib/std/child_process.zig
diff options
context:
space:
mode:
authorLoris Cro <kappaloris@gmail.com>2023-06-18 09:06:40 +0200
committerGitHub <noreply@github.com>2023-06-18 09:06:40 +0200
commit216ef10dc471e4db60a30208be178d6c59efeaaf (patch)
tree8c239dab283ae9cb3b7fe099bae240bcc53f894e /lib/std/child_process.zig
parent0fc1d396495c1ab482197021dedac8bea3f9401c (diff)
parent729a051e9e38674233190aea23c0ac8c134f2d67 (diff)
downloadzig-216ef10dc471e4db60a30208be178d6c59efeaaf.tar.gz
zig-216ef10dc471e4db60a30208be178d6c59efeaaf.zip
Merge branch 'master' into autodoc-searchkey
Diffstat (limited to 'lib/std/child_process.zig')
-rw-r--r--lib/std/child_process.zig19
1 files changed, 8 insertions, 11 deletions
diff --git a/lib/std/child_process.zig b/lib/std/child_process.zig
index f5ca72ed39..db85242002 100644
--- a/lib/std/child_process.zig
+++ b/lib/std/child_process.zig
@@ -530,7 +530,7 @@ pub const ChildProcess = struct {
// can fail between fork() and execve().
// Therefore, we do all the allocation for the execve() before the fork().
// This means we must do the null-termination of argv and env vars here.
- const argv_buf = try arena.allocSentinel(?[*:0]u8, self.argv.len, null);
+ const argv_buf = try arena.allocSentinel(?[*:0]const u8, self.argv.len, null);
for (self.argv, 0..) |arg, i| argv_buf[i] = (try arena.dupeZ(u8, arg)).ptr;
const envp = m: {
@@ -542,7 +542,7 @@ pub const ChildProcess = struct {
} else if (builtin.output_mode == .Exe) {
// Then we have Zig start code and this works.
// TODO type-safety for null-termination of `os.environ`.
- break :m @ptrCast([*:null]?[*:0]u8, os.environ.ptr);
+ break :m @ptrCast([*:null]const ?[*:0]const u8, os.environ.ptr);
} else {
// TODO come up with a solution for this.
@compileError("missing std lib enhancement: ChildProcess implementation has no way to collect the environment variables to forward to the child process");
@@ -850,7 +850,7 @@ pub const ChildProcess = struct {
return original_err;
}
- var it = mem.tokenize(u16, PATH, &[_]u16{';'});
+ var it = mem.tokenizeScalar(u16, PATH, ';');
while (it.next()) |search_path| {
dir_buf.clearRetainingCapacity();
try dir_buf.appendSlice(self.allocator, search_path);
@@ -957,15 +957,12 @@ fn windowsCreateProcessPathExt(
// NtQueryDirectoryFile calls.
var dir = dir: {
- if (fs.path.isAbsoluteWindowsWTF16(dir_buf.items[0..dir_path_len])) {
- const prefixed_path = try windows.wToPrefixedFileW(dir_buf.items[0..dir_path_len]);
- break :dir fs.cwd().openDirW(prefixed_path.span().ptr, .{}, true) catch return error.FileNotFound;
- }
// needs to be null-terminated
try dir_buf.append(allocator, 0);
- defer dir_buf.shrinkRetainingCapacity(dir_buf.items[0..dir_path_len].len);
+ defer dir_buf.shrinkRetainingCapacity(dir_path_len);
const dir_path_z = dir_buf.items[0 .. dir_buf.items.len - 1 :0];
- break :dir std.fs.cwd().openDirW(dir_path_z.ptr, .{}, true) catch return error.FileNotFound;
+ const prefixed_path = try windows.wToPrefixedFileW(dir_path_z);
+ break :dir fs.cwd().openDirW(prefixed_path.span().ptr, .{}, true) catch return error.FileNotFound;
};
defer dir.close();
@@ -1067,7 +1064,7 @@ fn windowsCreateProcessPathExt(
// Now we know that at least *a* file matching the wildcard exists, we can loop
// through PATHEXT in order and exec any that exist
- var ext_it = mem.tokenize(u16, pathext, &[_]u16{';'});
+ var ext_it = mem.tokenizeScalar(u16, pathext, ';');
while (ext_it.next()) |ext| {
if (!windowsCreateProcessSupportsExtension(ext)) continue;
@@ -1174,7 +1171,7 @@ fn windowsCreateProcess(app_name: [*:0]u16, cmd_line: [*:0]u16, envp_ptr: ?[*]u1
);
}
-/// Case-insenstive UTF-16 lookup
+/// Case-insensitive UTF-16 lookup
fn windowsCreateProcessSupportsExtension(ext: []const u16) bool {
if (ext.len != 4) return false;
const State = enum {