Changeset 3435 in kBuild for trunk/src/kash/exec.c
- Timestamp:
- Sep 2, 2020 8:30:54 PM (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kash/exec.c
r3057 r3435 99 99 100 100 101 STATIC void tryexec(shinstance *, char *, char **, char **, int , int);101 STATIC void tryexec(shinstance *, char *, char **, char **, int); 102 102 STATIC void execinterp(shinstance *, char **, char **); 103 103 STATIC void printentry(shinstance *, struct tblentry *, int); … … 118 118 119 119 SH_NORETURN_1 void 120 shellexec(shinstance *psh, char **argv, char **envp, const char *path, int idx , int vforked)120 shellexec(shinstance *psh, char **argv, char **envp, const char *path, int idx) 121 121 { 122 122 char *cmdname; … … 144 144 cmdname = stalloc(psh, argv0len + 5); 145 145 strcpy(cmdname, argv0); 146 tryexec(psh, cmdname, argv, envp, vforked,has_ext);146 tryexec(psh, cmdname, argv, envp, has_ext); 147 147 TRACE((psh, "shellexec: cmdname=%s\n", cmdname)); 148 148 stunalloc(psh, cmdname); … … 165 165 while ((cmdname = padvance(psh, &path, argv0)) != NULL) { 166 166 if (--idx < 0 && psh->pathopt == NULL) { 167 tryexec(psh, cmdname, argv, envp, vforked,has_ext);167 tryexec(psh, cmdname, argv, envp, has_ext); 168 168 if (errno != ENOENT && errno != ENOTDIR) 169 169 e = errno; … … 185 185 break; 186 186 } 187 TRACE((psh, "shellexec failed for '%s', errno %d, vforked %d,suppressint %d\n",188 argv[0], e, vforked,psh->suppressint ));187 TRACE((psh, "shellexec failed for '%s', errno %d, suppressint %d\n", 188 argv[0], e, psh->suppressint )); 189 189 exerror(psh, EXEXEC, "%s: %s", argv[0], errmsg(psh, e, E_EXEC)); 190 190 /* NOTREACHED */ … … 193 193 194 194 STATIC void 195 tryexec(shinstance *psh, char *cmd, char **argv, char **envp, int vforked, inthas_ext)195 tryexec(shinstance *psh, char *cmd, char **argv, char **envp, int has_ext) 196 196 { 197 197 int e; … … 220 220 e = errno; 221 221 if (e == ENOEXEC) { 222 if (vforked) {223 /* We are currently vfork(2)ed, so raise an224 * exception, and evalcommand will try again225 * with a normal fork(2).226 */227 exraise(psh, EXSHELLPROC);228 }229 222 initshellproc(psh); 230 223 setinputfile(psh, cmd, 0); … … 347 340 /* nothing*/; 348 341 TRACE((psh, "hash bang '%s'\n", new[0])); 349 shellexec(psh, new, envp, pathval(psh), 0 , 0);342 shellexec(psh, new, envp, pathval(psh), 0); 350 343 /* NOTREACHED */ 351 344 }
Note:
See TracChangeset
for help on using the changeset viewer.