this repo has no description
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

exec*() function fixes

+12 -1
+12 -1
src/libSystem/libc/exec.cpp
··· 9 9 #include <unistd.h> 10 10 #include <stdarg.h> 11 11 #include <vector> 12 + #include <iostream> 12 13 #include <sys/types.h> 13 14 #include <sys/stat.h> 14 15 #include <fcntl.h> ··· 20 21 static const char* findInPath(const char* file) 21 22 { 22 23 static __thread char buffer[DARWIN_MAXPATHLEN]; 24 + 25 + if (*file == '/') 26 + return file; 23 27 24 28 if (strchr(file, '/') != 0) 25 29 { ··· 88 92 std::vector<char*> argv; 89 93 char* an_arg; 90 94 95 + argv.push_back(const_cast<char*>(arg)); 91 96 while ((an_arg = va_arg(vl, char*)) != 0) 92 97 argv.push_back(an_arg); 93 98 ··· 106 111 std::vector<char*> argv; 107 112 char* an_arg; 108 113 114 + argv.push_back(const_cast<char*>(arg)); 109 115 while ((an_arg = va_arg(vl, char*)) != 0) 110 116 argv.push_back(an_arg); 111 117 ··· 125 131 char* an_arg; 126 132 char** envp; 127 133 134 + argv.push_back(const_cast<char*>(arg)); 128 135 while ((an_arg = va_arg(vl, char*)) != 0) 129 136 argv.push_back(an_arg); 130 137 ··· 150 157 else 151 158 { 152 159 argv = prependLoaderPath(argv, path); 153 - int rv = execv(g_loader_path, argv); 160 + int rv = execvp(g_loader_path, argv); 161 + 162 + std::cout << "Executing with loader at " << g_loader_path << std::endl; 163 + 154 164 errnoOut(); 155 165 156 166 delete [] argv; ··· 165 175 const char* path = findInPath(file); 166 176 if (!path) 167 177 { 178 + std::cout << "Path failed to be located: " << file << std::endl; 168 179 errno = DARWIN_ENOENT; 169 180 return -1; 170 181 }