| ... | @@ -1533,6 +1533,32 @@ pub fn execveZ( | ... | @@ -1533,6 +1533,32 @@ pub fn execveZ( |
| 1533 | child_argv: [*:null]const ?[*:0]const u8, | 1533 | child_argv: [*:null]const ?[*:0]const u8, |
| 1534 | envp: [*:null]const ?[*:0]const u8, | 1534 | envp: [*:null]const ?[*:0]const u8, |
| 1535 | ) ExecveError { | 1535 | ) ExecveError { |
| | 1536 | if (comptime builtin.target.isDarwin()) { |
| | 1537 | // Darwin gets its own branch because it has BADEXEC and BADARCH |
| | 1538 | // which are beyond posix. |
| | 1539 | switch (errno(system.execve(path, child_argv, envp))) { |
| | 1540 | .SUCCESS => unreachable, |
| | 1541 | .FAULT => unreachable, |
| | 1542 | .@"2BIG" => return error.SystemResources, |
| | 1543 | .MFILE => return error.ProcessFdQuotaExceeded, |
| | 1544 | .NAMETOOLONG => return error.NameTooLong, |
| | 1545 | .NFILE => return error.SystemFdQuotaExceeded, |
| | 1546 | .NOMEM => return error.SystemResources, |
| | 1547 | .ACCES => return error.AccessDenied, |
| | 1548 | .PERM => return error.AccessDenied, |
| | 1549 | .INVAL => return error.InvalidExe, |
| | 1550 | .NOEXEC => return error.InvalidExe, |
| | 1551 | .BADEXEC => return error.InvalidExe, |
| | 1552 | .BADARCH => return error.InvalidExe, |
| | 1553 | .IO => return error.FileSystem, |
| | 1554 | .LOOP => return error.FileSystem, |
| | 1555 | .ISDIR => return error.IsDir, |
| | 1556 | .NOENT => return error.FileNotFound, |
| | 1557 | .NOTDIR => return error.NotDir, |
| | 1558 | .TXTBSY => return error.FileBusy, |
| | 1559 | else => |err| return unexpectedErrno(err), |
| | 1560 | } |
| | 1561 | } |
| 1536 | switch (errno(system.execve(path, child_argv, envp))) { | 1562 | switch (errno(system.execve(path, child_argv, envp))) { |
| 1537 | .SUCCESS => unreachable, | 1563 | .SUCCESS => unreachable, |
| 1538 | .FAULT => unreachable, | 1564 | .FAULT => unreachable, |