Replace fd_clexec() with calls to fcntl(fd, F_SETFD, FD_CLOEXEC)
From: Todd C. Miller <millert@cvs.openbsd.org>
This commit is contained in:
parent
665202f561
commit
1a183984c4
8
c_sh.c
8
c_sh.c
|
@ -1,5 +1,5 @@
|
|||
/** $MirBSD: src/bin/ksh/c_sh.c,v 2.9 2004/12/31 17:29:28 tg Exp $ */
|
||||
/* $OpenBSD: c_sh.c,v 1.26 2004/12/22 18:57:28 otto Exp $ */
|
||||
/** $MirBSD: src/bin/ksh/c_sh.c,v 2.10 2004/12/31 17:42:44 tg Exp $ */
|
||||
/* $OpenBSD: c_sh.c,v 1.21 2004/12/18 22:35:41 millert Exp $ */
|
||||
|
||||
/*
|
||||
* built-in Bourne commands
|
||||
|
@ -10,7 +10,7 @@
|
|||
#include "ksh_time.h"
|
||||
#include "ksh_times.h"
|
||||
|
||||
__RCSID("$MirBSD: src/bin/ksh/c_sh.c,v 2.9 2004/12/31 17:29:28 tg Exp $");
|
||||
__RCSID("$MirBSD: src/bin/ksh/c_sh.c,v 2.10 2004/12/31 17:42:44 tg Exp $");
|
||||
|
||||
static char *clocktos(clock_t t);
|
||||
|
||||
|
@ -808,7 +808,7 @@ c_exec(char **wp GCC_FUNC_ATTR(unused))
|
|||
* keeps them open).
|
||||
*/
|
||||
if (!Flag(FSH) && i > 2 && e->savefd[i])
|
||||
fd_clexec(i);
|
||||
fcntl(i, F_SETFD, FD_CLOEXEC);
|
||||
}
|
||||
e->savefd = NULL;
|
||||
}
|
||||
|
|
24
exec.c
24
exec.c
|
@ -1,5 +1,5 @@
|
|||
/** $MirBSD: src/bin/ksh/exec.c,v 2.8 2004/12/28 22:40:40 tg Exp $ */
|
||||
/* $OpenBSD: exec.c,v 1.39 2004/12/22 18:57:28 otto Exp $ */
|
||||
/** $MirBSD: src/bin/ksh/exec.c,v 2.9 2004/12/31 17:42:44 tg Exp $ */
|
||||
/* $OpenBSD: exec.c,v 1.35 2004/12/18 22:35:41 millert Exp $ */
|
||||
|
||||
/*
|
||||
* execute command tree
|
||||
|
@ -10,7 +10,7 @@
|
|||
#include <ctype.h>
|
||||
#include "ksh_stat.h"
|
||||
|
||||
__RCSID("$MirBSD: src/bin/ksh/exec.c,v 2.8 2004/12/28 22:40:40 tg Exp $");
|
||||
__RCSID("$MirBSD: src/bin/ksh/exec.c,v 2.9 2004/12/31 17:42:44 tg Exp $");
|
||||
|
||||
static int comexec(struct op *t, struct tbl *volatile tp, char **ap,
|
||||
int volatile flags);
|
||||
|
@ -38,24 +38,6 @@ static void dbteste_error(Test_env *te, int offset, const char *msg);
|
|||
static char clexec_tab[MAXFD+1];
|
||||
#endif
|
||||
|
||||
/*
|
||||
* we now use this function always.
|
||||
*/
|
||||
int
|
||||
fd_clexec(int fd)
|
||||
{
|
||||
#ifndef F_SETFD
|
||||
if (fd >= 0 && fd < sizeof(clexec_tab)) {
|
||||
clexec_tab[fd] = 1;
|
||||
return 0;
|
||||
}
|
||||
return -1;
|
||||
#else
|
||||
return fcntl(fd, F_SETFD, 1);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* execute command tree
|
||||
*/
|
||||
|
|
6
io.c
6
io.c
|
@ -1,5 +1,5 @@
|
|||
/** $MirBSD: src/bin/ksh/io.c,v 2.5 2004/12/28 22:32:08 tg Exp $ */
|
||||
/* $OpenBSD: io.c,v 1.13 2003/11/10 21:26:39 millert Exp $ */
|
||||
/** $MirBSD: src/bin/ksh/io.c,v 2.6 2004/12/31 17:42:45 tg Exp $ */
|
||||
/* $OpenBSD: io.c,v 1.17 2004/12/18 22:35:41 millert Exp $ */
|
||||
|
||||
/*
|
||||
* shell buffered IO and formatted output
|
||||
|
@ -259,7 +259,7 @@ savefd(int fd, int noclose)
|
|||
close(fd);
|
||||
} else
|
||||
nfd = fd;
|
||||
fd_clexec(nfd);
|
||||
fcntl(nfd, F_SETFD, FD_CLOEXEC);
|
||||
return nfd;
|
||||
}
|
||||
|
||||
|
|
5
proto.h
5
proto.h
|
@ -1,9 +1,9 @@
|
|||
/** $MirBSD: src/bin/ksh/proto.h,v 2.9 2004/12/31 17:29:28 tg Exp $ */
|
||||
/** $MirBSD: src/bin/ksh/proto.h,v 2.10 2004/12/31 17:42:45 tg Exp $ */
|
||||
/* $OpenBSD: proto.h,v 1.11 2003/05/16 19:58:57 jsyn Exp $ */
|
||||
/* $From: proto.h,v 1.3 1994/05/19 18:32:40 michael Exp michael $ */
|
||||
|
||||
#ifndef PROTO_H
|
||||
/* $OpenBSD: proto.h,v 1.17 2004/12/18 21:58:39 millert Exp $ */
|
||||
/* $OpenBSD: proto.h,v 1.18 2004/12/18 22:35:41 millert Exp $ */
|
||||
|
||||
/*
|
||||
* prototypes for PD-KSH
|
||||
|
@ -70,7 +70,6 @@ char *debunk(char *dp, const char *sp, size_t dlen);
|
|||
void expand(char *cp, XPtrV *wp, int f);
|
||||
int glob_str(char *cp, XPtrV *wp, int markdirs);
|
||||
/* exec.c */
|
||||
int fd_clexec(int fd);
|
||||
int execute(struct op * volatile t, volatile int flags);
|
||||
int shcomexec(char **wp);
|
||||
struct tbl * findfunc(const char *name, unsigned int h, int create);
|
||||
|
|
10
shf.c
10
shf.c
|
@ -1,5 +1,5 @@
|
|||
/** $MirBSD: src/bin/ksh/shf.c,v 2.3 2004/12/18 19:22:30 tg Exp $ */
|
||||
/* $OpenBSD: shf.c,v 1.8 2003/02/28 09:45:09 jmc Exp $ */
|
||||
/** $MirBSD: src/bin/ksh/shf.c,v 2.4 2004/12/31 17:42:45 tg Exp $ */
|
||||
/* $OpenBSD: shf.c,v 1.10 2004/12/18 22:35:41 millert Exp $ */
|
||||
|
||||
/*
|
||||
* Shell file I/O routines
|
||||
|
@ -9,7 +9,7 @@
|
|||
#include "ksh_stat.h"
|
||||
#include "ksh_limval.h"
|
||||
|
||||
__RCSID("$MirBSD: src/bin/ksh/shf.c,v 2.3 2004/12/18 19:22:30 tg Exp $");
|
||||
__RCSID("$MirBSD: src/bin/ksh/shf.c,v 2.4 2004/12/31 17:42:45 tg Exp $");
|
||||
|
||||
/* flags to shf_emptybuf() */
|
||||
#define EB_READSW 0x01 /* about to switch to reading */
|
||||
|
@ -113,7 +113,7 @@ shf_fdopen(int fd, int sflags, struct shf *shf)
|
|||
shf->errno_ = 0;
|
||||
shf->bsize = bsize;
|
||||
if (sflags & SHF_CLEXEC)
|
||||
fd_clexec(fd);
|
||||
fcntl(fd, F_SETFD, FD_CLOEXEC);
|
||||
return shf;
|
||||
}
|
||||
|
||||
|
@ -153,7 +153,7 @@ shf_reopen(int fd, int sflags, struct shf *shf)
|
|||
shf->flags = (shf->flags & (SHF_ALLOCS | SHF_ALLOCB)) | sflags;
|
||||
shf->errno_ = 0;
|
||||
if (sflags & SHF_CLEXEC)
|
||||
fd_clexec(fd);
|
||||
fcntl(fd, F_SETFD, FD_CLOEXEC);
|
||||
return shf;
|
||||
}
|
||||
|
||||
|
|
8
tty.c
8
tty.c
|
@ -1,5 +1,5 @@
|
|||
/** $MirBSD: src/bin/ksh/tty.c,v 2.3 2004/12/31 17:39:12 tg Exp $ */
|
||||
/* $OpenBSD: tty.c,v 1.4 2004/12/18 22:12:23 millert Exp $ */
|
||||
/** $MirBSD: src/bin/ksh/tty.c,v 2.4 2004/12/31 17:42:45 tg Exp $ */
|
||||
/* $OpenBSD: tty.c,v 1.5 2004/12/18 22:35:41 millert Exp $ */
|
||||
|
||||
#include "sh.h"
|
||||
#include "ksh_stat.h"
|
||||
|
@ -7,7 +7,7 @@
|
|||
#include "tty.h"
|
||||
#undef EXTERN
|
||||
|
||||
__RCSID("$MirBSD: src/bin/ksh/tty.c,v 2.3 2004/12/31 17:39:12 tg Exp $");
|
||||
__RCSID("$MirBSD: src/bin/ksh/tty.c,v 2.4 2004/12/31 17:42:45 tg Exp $");
|
||||
|
||||
/* Initialize tty_fd. Used for saving/reseting tty modes upon
|
||||
* foreground job completion and for setting up tty process group.
|
||||
|
@ -42,7 +42,7 @@ tty_init(int init_ttystate)
|
|||
if ((tty_fd = ksh_dupbase(tfd, FDBASE)) < 0) {
|
||||
warningf(false, "j_ttyinit: dup of tty fd failed: %s",
|
||||
strerror(errno));
|
||||
} else if (fd_clexec(tty_fd) < 0) {
|
||||
} else if (fcntl(tty_fd, F_SETFD, FD_CLOEXEC) < 0) {
|
||||
warningf(false, "j_ttyinit: can't set close-on-exec flag: %s",
|
||||
strerror(errno));
|
||||
close(tty_fd);
|
||||
|
|
Loading…
Reference in New Issue