ksh/ksh-qemu.patch

106 lines
2.7 KiB
Diff

--- src/lib/libast/features/lib
+++ src/lib/libast/features/lib 2007-03-28 17:49:29.241351031 +0200
@@ -90,27 +90,6 @@ tst lib_poll_fd_1 note{ fd is first arg
}
}end
-tst lib_poll_fd_2 note{ fd is second arg to poll() }end execute{
- #include <poll.h>
- _BEGIN_EXTERNS_
- extern int pipe _ARG_((int*));
- _END_EXTERNS_
- int
- main()
- { int rw[2];
- struct pollfd fd;
- if (pipe(rw) < 0) return 1;
- fd.fd = rw[0];
- fd.events = POLLIN;
- fd.revents = 0;
- return poll(1, &fd, 0) < 0;
- if (poll(1, &fd, 0) < 0 || fd.revents != 0) return 1;
- if (write(rw[1], "x", 1) != 1) return 1;
- if (poll(1, &fd, 0) < 0 || fd.revents == 0) return 1;
- return 0;
- }
-}end
-
exp _lib_poll _lib_poll_fd_1||_lib_poll_fd_2
tst lib_poll_notimer note{ poll with no fds ignores timeout }end execute{
@@ -224,74 +203,6 @@ tst real_vfork note{ vfork child shares
}
}end
-tst lib_posix_spawn unistd.h stdlib.h spawn.h -Dfork=______fork note{ posix_spawn exists and it works and its worth using }end status{
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <sys/wait.h>
- #include <spawn.h>
- #include <signal.h>
- #include <fcntl.h>
- #include <string.h>
- #undef fork
- /* if it uses fork() why bother? */
- pid_t fork _ARG_((void)) { return -1; }
- pid_t _fork _ARG_((void)) { return -1; }
- pid_t __fork _ARG_((void)) { return -1; }
- int
- main(argc, argv)
- int argc;
- char** argv;
- {
- char* s;
- pid_t pid;
- posix_spawnattr_t attr;
- int n;
- int status;
- char* cmd[3];
- char tmp[1024];
- if (argv[1])
- _exit(signal(SIGHUP, SIG_DFL) != SIG_IGN);
- signal(SIGHUP, SIG_IGN);
- if (posix_spawnattr_init(&attr))
- _exit(0);
- if (posix_spawnattr_setpgroup(&attr, 0))
- _exit(0);
- if (posix_spawnattr_setflags(&attr, POSIX_SPAWN_SETPGROUP))
- _exit(0);
- /* first try an a.out and verify that SIGHUP is ignored */
- cmd[0] = argv[0];
- cmd[1] = "test";
- cmd[2] = 0;
- if (posix_spawn(&pid, cmd[0], 0, &attr, cmd, 0))
- _exit(0);
- status = 1;
- if (wait(&status) < 0 || status != 0)
- _exit(0);
- /* passing ENOEXEC to the shell is bogus */
- n = strlen(cmd[0]);
- if (n >= (sizeof(tmp) - 3))
- _exit(0);
- strcpy(tmp, cmd[0]);
- tmp[n] = '.';
- tmp[n+1] = 's';
- tmp[n+2] = 'h';
- tmp[n+3] = 0;
- if (close(open(tmp, O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO)) < 0 || chmod(tmp, S_IRWXU|S_IRWXG|S_IRWXO) < 0)
- _exit(0);
- cmd[0] = tmp;
- n = 0;
- pid = -1;
- if (posix_spawn(&pid, cmd[0], 0, &attr, cmd, 0))
- n = 2;
- else
- {
- n = pid != -1 && waitpid(pid, &status, WNOHANG|WNOWAIT) == pid && ((status>>8)&0x7f) == 127;
- wait(&status);
- }
- _exit(n);
- }
-}end
-
tst lib_spawn_mode unistd.h stdlib.h note{ first spawn arg is mode and it works }end execute{
#include <signal.h>
#include <process.h>