diff options
Diffstat (limited to 'pseudo_wrappers.c')
-rw-r--r-- | pseudo_wrappers.c | 58 |
1 files changed, 0 insertions, 58 deletions
diff --git a/pseudo_wrappers.c b/pseudo_wrappers.c index 470206a..a32aa0d 100644 --- a/pseudo_wrappers.c +++ b/pseudo_wrappers.c @@ -523,64 +523,6 @@ vfork(void) { return fork(); } -int -clone(int (*fn)(void *), void *child_stack, int flags, void *arg, ...) { - sigset_t saved; - va_list ap; - pid_t *pid; - struct user_desc *tls; - pid_t *ctid; - - int rc = -1; - - if (!pseudo_check_wrappers() || !real_clone) { - /* rc was initialized to the "failure" value */ - pseudo_enosys("clone"); - return rc; - } - - va_start(ap, arg); - pid = va_arg(ap, pid_t *); - tls = va_arg(ap, struct user_desc *); - ctid = va_arg(ap, pid_t *); - va_end(ap); - - pseudo_debug(4, "called: clone\n"); - pseudo_sigblock(&saved); - if (pseudo_getlock()) { - errno = EBUSY; - sigprocmask(SIG_SETMASK, &saved, NULL); - return -1; - } - - int save_errno; - int save_disabled = pseudo_disabled; - /* because clone() doesn't actually continue in this function, we - * can't check the return and fix up environment variables in the - * child. Instead, we have to temporarily do any fixup, then possibly - * undo it later. UGH! - */ - -#include "guts/clone.c" - - if (save_disabled != pseudo_disabled) { - if (pseudo_disabled) { - pseudo_disabled = 0; - pseudo_magic(); - } else { - pseudo_disabled = 1; - pseudo_antimagic(); - } - } - - save_errno = errno; - pseudo_droplock(); - sigprocmask(SIG_SETMASK, &saved, NULL); - pseudo_debug(4, "completed: clone\n"); - errno = save_errno; - return rc; -} - #if 0 static int (*real_execlp)(const char *file, const char *arg, ...) = NULL; static int (*real_execl)(const char *file, const char *arg, ...) = NULL; |