mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-07-03 09:48:29 +00:00
Make more fixes and improvements
- Remove PAGESIZE constant - Fix realloc() documentation - Fix ttyname_r() error reporting - Make forking more reliable on Windows - Make execvp() a few microseconds faster - Make system() a few microseconds faster - Tighten up the socket-related magic numbers - Loosen restrictions on mmap() offset alignment - Improve GetProgramExecutableName() with getenv("_") - Use mkstemp() as basis for mktemp(), tmpfile(), tmpfd() - Fix flakes in pthread_cancel_test, unix_test, fork_test - Fix recently introduced futex stack overflow regression - Let sockets be passed as stdio to subprocesses on Windows - Improve security of bind() on Windows w/ SO_EXCLUSIVEADDRUSE
This commit is contained in:
parent
140a8a52e5
commit
18bb5888e1
311 changed files with 1239 additions and 2622 deletions
|
@ -42,11 +42,6 @@ int execlp(const char *prog, const char *arg, ... /*, NULL*/) {
|
|||
va_list va, vb;
|
||||
char pathbuf[PATH_MAX];
|
||||
|
||||
// resolve path of executable
|
||||
if (!(exe = commandv(prog, pathbuf, sizeof(pathbuf)))) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
// turn varargs into array
|
||||
va_copy(vb, va);
|
||||
va_start(va, arg);
|
||||
|
@ -60,6 +55,15 @@ int execlp(const char *prog, const char *arg, ... /*, NULL*/) {
|
|||
}
|
||||
va_end(vb);
|
||||
|
||||
if (strchr(prog, '/')) {
|
||||
return execv(prog, argv);
|
||||
}
|
||||
|
||||
// resolve path of executable
|
||||
if (!(exe = commandv(prog, pathbuf, sizeof(pathbuf)))) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
// change argv[0] to resolved path if it's ambiguous
|
||||
// otherwise the program won't have much luck finding itself
|
||||
if (argv[0] && *prog != '/' && *exe == '/' && !strcmp(prog, argv[0])) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue