Changeset 3435 for trunk/src/kash/redir.c
- Timestamp:
- Sep 2, 2020, 10:30:54 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kash/redir.c
r3433 r3435 114 114 memory[1] = flags & REDIR_BACKQ; 115 115 if (flags & REDIR_PUSH) { 116 /* We don't have to worry about REDIR_VFORK here, as117 * flags & REDIR_PUSH is never true if REDIR_VFORK is set.118 */119 116 sv = ckmalloc(psh, sizeof (struct redirtab)); 120 117 for (i = 0 ; i < 10 ; i++) … … 174 171 char *fname; 175 172 int f; 176 int oflags = O_WRONLY|O_CREAT|O_TRUNC , eflags;173 int oflags = O_WRONLY|O_CREAT|O_TRUNC; 177 174 178 175 /* … … 186 183 case NFROM: 187 184 fname = redir->nfile.expfname; 188 if (flags & REDIR_VFORK) 189 eflags = O_NONBLOCK; 190 else 191 eflags = 0; 192 if ((f = shfile_open(&psh->fdtab, fname, O_RDONLY|eflags, 0)) < 0) 185 if ((f = shfile_open(&psh->fdtab, fname, O_RDONLY, 0)) < 0) 193 186 goto eopen; 194 if (eflags)195 (void)shfile_fcntl(&psh->fdtab, f, F_SETFL, shfile_fcntl(&psh->fdtab, f, F_GETFL, 0) & ~eflags);196 187 break; 197 188 case NFROMTO: … … 365 356 366 357 SHELLPROC { 367 clearredir(psh , 0);358 clearredir(psh); 368 359 } 369 360 … … 381 372 382 373 void 383 clearredir(shinstance *psh , int vforked)374 clearredir(shinstance *psh) 384 375 { 385 376 struct redirtab *rp; … … 391 382 shfile_close(&psh->fdtab, rp->renamed[i]); 392 383 } 393 if (!vforked) 394 rp->renamed[i] = EMPTY; 384 rp->renamed[i] = EMPTY; 395 385 } 396 386 }
Note:
See TracChangeset
for help on using the changeset viewer.