- Timestamp:
- Oct 10, 2007 2:32:54 AM (17 years ago)
- Location:
- trunk/src/kash
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kash/error.c
r1233 r1240 102 102 onint(shinstance *psh) 103 103 { 104 sh _sigset_t nsigset;104 shsigset_t nsigset; 105 105 106 106 if (psh->suppressint) { -
trunk/src/kash/jobs.c
r1233 r1240 102 102 return; 103 103 if (on) { 104 #if defined(FIOCLEX) || defined(FD_CLOEXEC)105 104 int err; 106 105 int i; … … 125 124 psh->ttyfd = err; 126 125 } 127 #ifdef FIOCLEX 128 err = shfile_ioctl(&psh->fdtab, psh->ttyfd, FIOCLEX, 0); 129 #elif FD_CLOEXEC 130 err = shfile_fcntl(&psh->fdtab, psh->ttyfd, F_SETFD, 131 shfile_fcntl(&psh->fdtab, psh->ttyfd, F_GETFD, 0) | FD_CLOEXEC); 132 #endif 126 err = shfile_cloexec(&psh->fdtab, psh->ttyfd, 1); 133 127 if (err == -1) { 134 128 shfile_close(&psh->fdtab, psh->ttyfd); … … 136 130 goto out; 137 131 } 138 #else139 out2str(psh, "sh: Need FIOCLEX or FD_CLOEXEC to support job control");140 goto out;141 #endif142 132 do { /* while we are in the background */ 143 133 if ((psh->initialpgrp = sh_tcgetpgrp(psh, psh->ttyfd)) < 0) { -
trunk/src/kash/shfile.c
r1233 r1240 27 27 #include "shfile.h" 28 28 #include <stdlib.h> 29 #include <stdio.h> 29 30 30 31 #ifdef KBUILD_OS_WINDOWS … … 210 211 211 212 213 int shfile_cloexec(shfdtab *pfdtab, int fd, int closeit) 214 { 215 #ifdef SH_PURE_STUB_MODE 216 return -1; 217 #elif defined(SH_STUB_MODE) 218 # ifdef _MSC_VER 219 return -1; 220 # else 221 int rc = fcntl(fd, F_SETFD, fcntl(fd, F_GETFD, 0) 222 | (closeit ? FD_CLOEXEC : 0)); 223 fprintf(stderr, "shfile_cloexec(%d, %d) -> %d\n", fd, closeit, rc); 224 return rc; 225 # endif 226 #else 227 #endif 228 229 } 230 231 212 232 int shfile_ioctl(shfdtab *pfdtab, int fd, unsigned long request, void *buf) 213 233 { … … 218 238 return -1; 219 239 # else 220 return ioctl(fd, request, buf); 221 # endif 222 #else 223 #endif 224 } 240 int rc = ioctl(fd, request, buf); 241 fprintf(stderr, "ioctl(%d, %#x, %p) -> %d\n", fd, request, buf, rc); 242 return rc; 243 # endif 244 #else 245 #endif 246 } 247 225 248 226 249 mode_t shfile_get_umask(shfdtab *pfdtab) -
trunk/src/kash/shfile.h
r1233 r1240 132 132 int shfile_access(shfdtab *, const char *, int); 133 133 int shfile_isatty(shfdtab *, int); 134 int shfile_cloexec(shfdtab *, int, int); 134 135 int shfile_ioctl(shfdtab *, int, unsigned long, void *); 135 136 #ifdef _MSC_VER -
trunk/src/kash/shinstance.c
r1237 r1240 129 129 } 130 130 131 int sh_sigaction( int signo, const struct sh_sigaction *newp, struct sh_sigaction *oldp)131 int sh_sigaction(shinstance *psh, int signo, const struct shsigaction *newp, struct shsigaction *oldp) 132 132 { 133 133 #ifdef SH_PURE_STUB_MODE … … 151 151 } 152 152 153 sh _sig_t sh_signal(shinstance *psh, int signo, sh_sig_t handler)154 { 155 return (sh _sig_t)-1;153 shsig_t sh_signal(shinstance *psh, int signo, shsig_t handler) 154 { 155 return (shsig_t)-1; 156 156 } 157 157 … … 161 161 } 162 162 163 void sh_sigemptyset(sh _sigset_t *setp)163 void sh_sigemptyset(shsigset_t *setp) 164 164 { 165 165 memset(setp, 0, sizeof(*setp)); 166 166 } 167 167 168 int sh_sigprocmask(shinstance *psh, int operation, sh _sigset_t const *newp, sh_sigset_t *oldp)168 int sh_sigprocmask(shinstance *psh, int operation, shsigset_t const *newp, shsigset_t *oldp) 169 169 { 170 170 return -1; -
trunk/src/kash/shinstance.h
r1233 r1240 332 332 333 333 /* signals */ 334 typedef void (*sh _sig_t)(shinstance *, int);335 #ifdef _MSC_VER 336 typedef uint32_t sh _sigset_t;334 typedef void (*shsig_t)(shinstance *, int); 335 #ifdef _MSC_VER 336 typedef uint32_t shsigset_t; 337 337 #else 338 typedef sigset_t sh _sigset_t;339 #endif 340 struct sh _sigaction338 typedef sigset_t shsigset_t; 339 #endif 340 struct shsigaction 341 341 { 342 sh _sig_tsh_handler;343 sh _sigset_tsh_mask;342 shsig_t sh_handler; 343 shsigset_t sh_mask; 344 344 int sh_flags; 345 345 }; 346 #define SH_SIG_DFL ((sh _sig_t)SIG_DFL)347 #define SH_SIG_IGN ((sh _sig_t)SIG_IGN)346 #define SH_SIG_DFL ((shsig_t)SIG_DFL) 347 #define SH_SIG_IGN ((shsig_t)SIG_IGN) 348 348 #ifdef _MSC_VER 349 349 # define SIG_BLOCK 1 … … 366 366 #endif 367 367 368 int sh_sigaction( int, const struct sh_sigaction *, struct sh_sigaction *);369 sh _sig_t sh_signal(shinstance *, int, sh_sig_t);368 int sh_sigaction(shinstance *, int, const struct shsigaction *, struct shsigaction *); 369 shsig_t sh_signal(shinstance *, int, shsig_t); 370 370 int sh_siginterrupt(shinstance *, int, int); 371 void sh_sigemptyset(sh _sigset_t *);372 int sh_sigprocmask(shinstance *, int, sh _sigset_t const *, sh_sigset_t *);371 void sh_sigemptyset(shsigset_t *); 372 int sh_sigprocmask(shinstance *, int, shsigset_t const *, shsigset_t *); 373 373 void sh_abort(shinstance *) __attribute__((__noreturn__)); 374 374 void sh_raise_sigint(shinstance *); -
trunk/src/kash/trap.c
r1233 r1240 82 82 //int pendingsigs; /* indicates some signal received */ 83 83 84 static int getsigaction(shinstance *, int, sh _sig_t *);84 static int getsigaction(shinstance *, int, shsig_t *); 85 85 86 86 /* … … 245 245 { 246 246 int action; 247 sh _sig_t sigact = SH_SIG_DFL;247 shsig_t sigact = SH_SIG_DFL; 248 248 char *t, tsig; 249 249 … … 321 321 */ 322 322 static int 323 getsigaction(shinstance *psh, int signo, sh _sig_t *sigact)324 { 325 struct sh _sigaction sa;326 327 if (sh_sigaction( signo, NULL, &sa) == -1)323 getsigaction(shinstance *psh, int signo, shsig_t *sigact) 324 { 325 struct shsigaction sa; 326 327 if (sh_sigaction(psh, signo, NULL, &sa) == -1) 328 328 return 0; 329 *sigact = (sh _sig_t)sa.sh_handler;329 *sigact = (shsig_t)sa.sh_handler; 330 330 return 1; 331 331 }
Note:
See TracChangeset
for help on using the changeset viewer.