From 4cc10e41b60c7daaf0f427b70dd3dbbe95078ce5 Mon Sep 17 00:00:00 2001 From: Markus Schorn Date: Fri, 28 Apr 2006 08:33:43 +0000 Subject: [PATCH] Let spawner kill subprocesses, bug 119387 --- .../os/linux/x86/libpty.so | Bin 9870 -> 8071 bytes .../os/linux/x86/libspawner.so | Bin 17367 -> 15895 bytes .../library/exec_pty.c | 347 ++++++----- .../library/exec_unix.c | 3 + .../library/spawner.c | 586 +++++++++--------- .../os/solaris/sparc/libpty.so | Bin 9937 -> 9872 bytes .../os/solaris/sparc/libspawner.so | Bin 19773 -> 19428 bytes 7 files changed, 479 insertions(+), 457 deletions(-) diff --git a/core/org.eclipse.cdt.core.linux.x86/os/linux/x86/libpty.so b/core/org.eclipse.cdt.core.linux.x86/os/linux/x86/libpty.so index 1dd15a52e4e108ec6eda07d90db949f7b597cb5d..43496de1010731d698f7afe8647bc544a55d8f22 100644 GIT binary patch literal 8071 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 Jy8@@dzX5WRXukje diff --git a/core/org.eclipse.cdt.core.linux.x86/os/linux/x86/libspawner.so b/core/org.eclipse.cdt.core.linux.x86/os/linux/x86/libspawner.so index 63276413797bdce1930a2beb9d73e3d3edd0dc3a..40a3e39b8500645ce475fa7937016d37d7995457 100644 GIT binary patch literal 15895 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 v literal 17367 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 diff --git a/core/org.eclipse.cdt.core.solaris/library/exec_pty.c b/core/org.eclipse.cdt.core.solaris/library/exec_pty.c index 1ac95c947bf..c678370b1ac 100644 --- a/core/org.eclipse.cdt.core.solaris/library/exec_pty.c +++ b/core/org.eclipse.cdt.core.solaris/library/exec_pty.c @@ -1,172 +1,175 @@ -/******************************************************************************* - * Copyright (c) 2002 - 2005 QNX Software Systems and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * QNX Software Systems - initial API and implementation - *******************************************************************************/ -#include "exec0.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* from pfind.c */ -extern char *pfind(const char *name); - -pid_t -exec_pty(const char *path, char *const argv[], char *const envp[], - const char *dirpath, int channels[3], const char *pts_name, int fdm) -{ - int pipe2[2]; - pid_t childpid; - char *full_path; - - /* - * We use pfind() to check that the program exists and is an executable. - * If not pass the error up. Also execve() wants a full path. - */ - full_path = pfind(path); - if (full_path == NULL) { - fprintf(stderr, "Unable to find full path for \"%s\"\n", (path) ? path : ""); - return -1; - } - - /* - * Make sure we can create our pipes before forking. - */ - if (channels != NULL) { - if (pipe(pipe2) < 0) { - fprintf(stderr, "%s(%d): returning due to error: %s\n", __FUNCTION__, __LINE__, strerror(errno)); - free(full_path); - return -1; - } - } - - childpid = fork(); - - if (childpid < 0) { - fprintf(stderr, "%s(%d): returning due to error: %s\n", __FUNCTION__, __LINE__, strerror(errno)); - free(full_path); - return -1; - } else if (childpid == 0) { /* child */ - - chdir(dirpath); - - if (channels != NULL) { - int fds; - - fds = ptys_open(fdm, pts_name); - if (fds < 0) { - fprintf(stderr, "%s(%d): returning due to error: %s\n", __FUNCTION__, __LINE__, strerror(errno)); - return -1; - } - - /* Close the read end of pipe2 */ - if (close(pipe2[0]) == -1) - perror("close(pipe2[0]))"); - - /* close the master, no need in the child */ - close(fdm); - - set_noecho(fds); - /* redirections */ - dup2(fds, STDIN_FILENO); /* dup stdin */ - dup2(fds, STDOUT_FILENO); /* dup stdout */ - dup2(pipe2[1], STDERR_FILENO); /* dup stderr */ - close(fds); /* done with fds. */ - } - - /* Close all the fd's in the child */ - { - int fdlimit = sysconf(_SC_OPEN_MAX); - int fd = 3; - - while (fd < fdlimit) - close(fd++); - } - - if (envp[0] == NULL) { - execv(full_path, argv); - } else { - execve(full_path, argv, envp); - } - - _exit(127); - - } else if (childpid != 0) { /* parent */ - - ioctl(fdm, I_PUSH, "ptem"); - set_noecho(fdm); - if (channels != NULL) { - /* close the write end of pipe1 */ - if (close(pipe2[1]) == -1) - perror("close(pipe2[1])"); - - channels[0] = fdm; /* Input Stream. */ - channels[1] = fdm; /* Output Stream. */ - channels[2] = pipe2[0]; /* stderr Stream. */ - //channels[2] = fdm; /* Input Stream. */ - } - - free(full_path); - return childpid; - } - - free(full_path); - return -1; /*NOT REACHED */ -} -#ifdef __STAND_ALONE__ -int main(int argc, char **argv, char **envp) { - const char *path = "./bufferring_test"; - int channels[3] = { -1, -1, -1}; - int status; - FILE *app_stdin; - FILE *app_stdout; - FILE *app_stderr; - char pts_name[32]; - int fdm; - char buffer[32]; - - fdm = ptym_open(pts_name); - status = exec_pty(path, argv, envp, ".", channels, pts_name, fdm); - if (status >= 0) { - //app_stdin = fdopen(channels[0], "w"); - app_stdout = fdopen(channels[1], "r"); - app_stderr = fdopen(channels[2], "r"); - if (app_stdout == NULL || app_stderr == NULL /*|| app_stdin == NULL*/) { - fprintf(stderr, "PROBLEMS\n"); - } else { - printf("PID %d\n", status); - if (isatty(fdm)) { - printf("Is atty\n"); - } - write(fdm, "foo\n", 4); - write(fdm, "bar\n", 4); - //fputs("foo\n", app_stdin); - //fputs("bar\n", app_stdin); - //fflush(app_stdin); - while(fgets(buffer, sizeof buffer, app_stdout) != NULL) { - fprintf(stdout, "STDOUT: %s\n", buffer); - } - while(fgets(buffer, sizeof buffer, app_stderr) != NULL) { - fprintf(stdout, "STDERR: %s\n", buffer); - } - } - } - fputs("bye\n", stdout); - close(channels[0]); - close(channels[1]); - close(channels[2]); - return 0; -} -#endif +/******************************************************************************* + * Copyright (c) 2002 - 2005 QNX Software Systems and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * QNX Software Systems - initial API and implementation + * Wind River Systems, Inc. + *******************************************************************************/ +#include "exec0.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* from pfind.c */ +extern char *pfind(const char *name); + +pid_t +exec_pty(const char *path, char *const argv[], char *const envp[], + const char *dirpath, int channels[3], const char *pts_name, int fdm) +{ + int pipe2[2]; + pid_t childpid; + char *full_path; + + /* + * We use pfind() to check that the program exists and is an executable. + * If not pass the error up. Also execve() wants a full path. + */ + full_path = pfind(path); + if (full_path == NULL) { + fprintf(stderr, "Unable to find full path for \"%s\"\n", (path) ? path : ""); + return -1; + } + + /* + * Make sure we can create our pipes before forking. + */ + if (channels != NULL) { + if (pipe(pipe2) < 0) { + fprintf(stderr, "%s(%d): returning due to error: %s\n", __FUNCTION__, __LINE__, strerror(errno)); + free(full_path); + return -1; + } + } + + childpid = fork(); + + if (childpid < 0) { + fprintf(stderr, "%s(%d): returning due to error: %s\n", __FUNCTION__, __LINE__, strerror(errno)); + free(full_path); + return -1; + } else if (childpid == 0) { /* child */ + + chdir(dirpath); + + if (channels != NULL) { + int fds; + + fds = ptys_open(fdm, pts_name); + if (fds < 0) { + fprintf(stderr, "%s(%d): returning due to error: %s\n", __FUNCTION__, __LINE__, strerror(errno)); + return -1; + } + + /* Close the read end of pipe2 */ + if (close(pipe2[0]) == -1) + perror("close(pipe2[0]))"); + + /* close the master, no need in the child */ + close(fdm); + + set_noecho(fds); + /* redirections */ + dup2(fds, STDIN_FILENO); /* dup stdin */ + dup2(fds, STDOUT_FILENO); /* dup stdout */ + dup2(pipe2[1], STDERR_FILENO); /* dup stderr */ + close(fds); /* done with fds. */ + } + + /* Close all the fd's in the child */ + { + int fdlimit = sysconf(_SC_OPEN_MAX); + int fd = 3; + + while (fd < fdlimit) + close(fd++); + } + + setpgid(getpid(), getpid()); + + if (envp[0] == NULL) { + execv(full_path, argv); + } else { + execve(full_path, argv, envp); + } + + _exit(127); + + } else if (childpid != 0) { /* parent */ + + ioctl(fdm, I_PUSH, "ptem"); + set_noecho(fdm); + if (channels != NULL) { + /* close the write end of pipe1 */ + if (close(pipe2[1]) == -1) + perror("close(pipe2[1])"); + + channels[0] = fdm; /* Input Stream. */ + channels[1] = fdm; /* Output Stream. */ + channels[2] = pipe2[0]; /* stderr Stream. */ + //channels[2] = fdm; /* Input Stream. */ + } + + free(full_path); + return childpid; + } + + free(full_path); + return -1; /*NOT REACHED */ +} +#ifdef __STAND_ALONE__ +int main(int argc, char **argv, char **envp) { + const char *path = "./bufferring_test"; + int channels[3] = { -1, -1, -1}; + int status; + FILE *app_stdin; + FILE *app_stdout; + FILE *app_stderr; + char pts_name[32]; + int fdm; + char buffer[32]; + + fdm = ptym_open(pts_name); + status = exec_pty(path, argv, envp, ".", channels, pts_name, fdm); + if (status >= 0) { + //app_stdin = fdopen(channels[0], "w"); + app_stdout = fdopen(channels[1], "r"); + app_stderr = fdopen(channels[2], "r"); + if (app_stdout == NULL || app_stderr == NULL /*|| app_stdin == NULL*/) { + fprintf(stderr, "PROBLEMS\n"); + } else { + printf("PID %d\n", status); + if (isatty(fdm)) { + printf("Is atty\n"); + } + write(fdm, "foo\n", 4); + write(fdm, "bar\n", 4); + //fputs("foo\n", app_stdin); + //fputs("bar\n", app_stdin); + //fflush(app_stdin); + while(fgets(buffer, sizeof buffer, app_stdout) != NULL) { + fprintf(stdout, "STDOUT: %s\n", buffer); + } + while(fgets(buffer, sizeof buffer, app_stderr) != NULL) { + fprintf(stdout, "STDERR: %s\n", buffer); + } + } + } + fputs("bye\n", stdout); + close(channels[0]); + close(channels[1]); + close(channels[2]); + return 0; +} +#endif diff --git a/core/org.eclipse.cdt.core.solaris/library/exec_unix.c b/core/org.eclipse.cdt.core.solaris/library/exec_unix.c index 21030cd5b3b..4c43ede09e3 100644 --- a/core/org.eclipse.cdt.core.solaris/library/exec_unix.c +++ b/core/org.eclipse.cdt.core.solaris/library/exec_unix.c @@ -7,6 +7,7 @@ * * Contributors: * QNX Software Systems - initial API and implementation + * Wind River Systems, Inc. *******************************************************************************/ #include "exec0.h" #include @@ -90,6 +91,8 @@ exec0(const char *path, char *const argv[], char *const envp[], close(fd++); } + setpgid(getpid(), getpid()); + if (envp[0] == NULL) { execv(full_path, argv); } else { diff --git a/core/org.eclipse.cdt.core.solaris/library/spawner.c b/core/org.eclipse.cdt.core.solaris/library/spawner.c index 21a9181e98e..80091051eb6 100644 --- a/core/org.eclipse.cdt.core.solaris/library/spawner.c +++ b/core/org.eclipse.cdt.core.solaris/library/spawner.c @@ -1,285 +1,301 @@ -/******************************************************************************* - * Copyright (c) 2002 - 2005 QNX Software Systems and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * QNX Software Systems - initial API and implementation - *******************************************************************************/ -#include -#include -#include -#include -#include -#include - -#include "exec0.h" -#include - - -#define DEBUGIT 0 - - -/* - * Header for class org_eclipse_cdt_utils_spawner_Spawner - */ - - -#if DEBUGIT -static void print_array(char **c_array) -{ - if (c_array) { - char **p = c_array; - for (; *p; p++) { - if (*p) { - fprintf(stderr, " %s", *p); - } - } - } else { - fprintf(stderr, "null"); - } - fprintf(stderr, "\n"); -} -#endif - - -static char **alloc_c_array(JNIEnv * env, jobjectArray j_array) -{ - int i; - jint c_array_size = (*env)->GetArrayLength(env, j_array); - char **c_array = calloc(c_array_size + 1, sizeof(*c_array)); - - if (c_array == NULL) - return NULL; - - for (i = 0; i < c_array_size; i++) { - jstring j_str = - (jstring) (*env)->GetObjectArrayElement(env, j_array, i); - const char *c_str = (*env)->GetStringUTFChars(env, j_str, NULL); - c_array[i] = (char *) strdup(c_str); - (*env)->ReleaseStringUTFChars(env, j_str, c_str); - (*env)->DeleteLocalRef(env, j_str); - } - - return c_array; -} - - -static void free_c_array(char **c_array) -{ - if (c_array) { - char **p = c_array; - for (; *p; p++) { - if (*p) { - free(*p); - } - } - free(c_array); - } -} - - -/* - * Class: org_eclipse_cdt_utils_spawner_Spawner - * Method: exec2 - * Signature: ([Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[ILorg/eclipse/cdt/utils/pty/PTY;)I - */ -JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_exec2 - (JNIEnv *env, jobject jobj, jobjectArray jcmd, jobjectArray jenv, jstring jdir, jintArray jchannels, - jstring jslaveName, jint masterFD) -{ - jint *channels = (*env)->GetIntArrayElements(env, jchannels, 0); - const char *dirpath = (*env)->GetStringUTFChars(env, jdir, NULL); - const char *pts_name = (*env)->GetStringUTFChars(env, jslaveName, NULL); - char **cmd; - char **envp; - int fd[3]; - pid_t pid = -1; - - if (channels == NULL) - goto bail_out; - - cmd = alloc_c_array(env, jcmd); - if (cmd == NULL) - goto bail_out; - - envp = alloc_c_array(env, jenv); - if (envp == NULL) - goto bail_out; - -#if DEBUGIT - fprintf(stderr, "command:"); - print_array(cmd); - fprintf(stderr, "Envp:"); - print_array(envp); - fprintf(stderr, "dirpath: %s\n", dirpath); - fprintf(stderr, "pts_name: %s\n", pts_name); -#endif - - pid = exec_pty(cmd[0], cmd, envp, dirpath, fd, pts_name, masterFD); - if (pid < 0) - goto bail_out; - - channels[0] = fd[0]; - channels[1] = fd[1]; - channels[2] = fd[2]; - - bail_out: - (*env)->ReleaseIntArrayElements(env, jchannels, channels, 0); - (*env)->ReleaseStringUTFChars(env, jdir, dirpath); - (*env)->ReleaseStringUTFChars(env, jslaveName, pts_name); - if (cmd) - free_c_array(cmd); - if (envp) - free_c_array(envp); - return pid; -} - - -JNIEXPORT jint JNICALL -Java_org_eclipse_cdt_utils_spawner_Spawner_exec1(JNIEnv * env, jobject jobj, - jobjectArray jcmd, - jobjectArray jenv, - jstring jdir) -{ - const char *dirpath = (*env)->GetStringUTFChars(env, jdir, NULL); - char **cmd; - char **envp; - pid_t pid = -1; - - cmd = alloc_c_array(env, jcmd); - if (cmd == NULL) - goto bail_out; - - envp = alloc_c_array(env, jenv); - if (envp == NULL) - goto bail_out; - -#if DEBUGIT - fprintf(stderr, "command:"); - print_array(cmd); - fprintf(stderr, "Envp:"); - print_array(envp); - fprintf(stderr, "dirpath: %s\n", dirpath); -#endif - - pid = exec0(cmd[0], cmd, envp, dirpath, NULL); - if (pid < 0) - goto bail_out; - - bail_out: - (*env)->ReleaseStringUTFChars(env, jdir, dirpath); - if (cmd) - free_c_array(cmd); - if (envp) - free_c_array(envp); - return pid; -} - -/* - * Class: org_eclipse_cdt_utils_spawner_Spawner - * Method: exec0 - * Signature: ([Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[I)I - */ -JNIEXPORT jint JNICALL -Java_org_eclipse_cdt_utils_spawner_Spawner_exec0(JNIEnv * env, jobject jobj, - jobjectArray jcmd, - jobjectArray jenv, - jstring jdir, - jintArray jchannels) -{ - jint *channels = (*env)->GetIntArrayElements(env, jchannels, 0); - const char *dirpath = (*env)->GetStringUTFChars(env, jdir, NULL); - char **cmd; - char **envp; - int fd[3]; - pid_t pid = -1; - - if (channels == NULL) - goto bail_out; - - cmd = alloc_c_array(env, jcmd); - if (cmd == NULL) - goto bail_out; - - envp = alloc_c_array(env, jenv); - if (envp == NULL) - goto bail_out; - -#if DEBUGIT - fprintf(stderr, "command:"); - print_array(cmd); - fprintf(stderr, "Envp:"); - print_array(envp); - fprintf(stderr, "dirpath: %s\n", dirpath); -#endif - - pid = exec0(cmd[0], cmd, envp, dirpath, fd); - if (pid < 0) - goto bail_out; - - channels[0] = fd[0]; - channels[1] = fd[1]; - channels[2] = fd[2]; - - bail_out: - (*env)->ReleaseIntArrayElements(env, jchannels, channels, 0); - (*env)->ReleaseStringUTFChars(env, jdir, dirpath); - if (cmd) - free_c_array(cmd); - if (envp) - free_c_array(envp); - return pid; -} - -/* - * Class: org_eclipse_cdt_utils_spawner_Spawner - * Method: raise - * Signature: (II)I - */ -JNIEXPORT jint JNICALL -Java_org_eclipse_cdt_utils_spawner_Spawner_raise(JNIEnv * env, jobject jobj, - jint pid, jint sig) -{ - int status = -1; - - switch (sig) { - case 0: /* NOOP */ - status = kill(pid, 0); - break; - - case 2: /* INTERRUPT */ - status = kill(pid, SIGINT); - break; - - case 9: /* KILL */ - status = kill(pid, SIGKILL); - break; - - case 15: /* TERM */ - status = kill(pid, SIGTERM); - break; - - default: - status = kill(pid, sig); /* WHAT ?? */ - break; - } - - return status; -} - - - -/* - * Class: org_eclipse_cdt_utils_spawner_Spawner - * Method: waitFor - * Signature: (I)I - */ -JNIEXPORT jint JNICALL -Java_org_eclipse_cdt_utils_spawner_Spawner_waitFor(JNIEnv * env, - jobject jobj, jint pid) -{ - return wait0(pid); -} +/******************************************************************************* + * Copyright (c) 2002 - 2005 QNX Software Systems and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * QNX Software Systems - initial API and implementation + * Wind River Systems, Inc. + *******************************************************************************/ +#include +#include +#include +#include +#include +#include + +#include "exec0.h" +#include + + +#define DEBUGIT 0 + + +/* + * Header for class org_eclipse_cdt_utils_spawner_Spawner + */ + + +#if DEBUGIT +static void print_array(char **c_array) +{ + if (c_array) { + char **p = c_array; + for (; *p; p++) { + if (*p) { + fprintf(stderr, " %s", *p); + } + } + } else { + fprintf(stderr, "null"); + } + fprintf(stderr, "\n"); +} +#endif + + +static char **alloc_c_array(JNIEnv * env, jobjectArray j_array) +{ + int i; + jint c_array_size = (*env)->GetArrayLength(env, j_array); + char **c_array = calloc(c_array_size + 1, sizeof(*c_array)); + + if (c_array == NULL) + return NULL; + + for (i = 0; i < c_array_size; i++) { + jstring j_str = + (jstring) (*env)->GetObjectArrayElement(env, j_array, i); + const char *c_str = (*env)->GetStringUTFChars(env, j_str, NULL); + c_array[i] = (char *) strdup(c_str); + (*env)->ReleaseStringUTFChars(env, j_str, c_str); + (*env)->DeleteLocalRef(env, j_str); + } + + return c_array; +} + + +static void free_c_array(char **c_array) +{ + if (c_array) { + char **p = c_array; + for (; *p; p++) { + if (*p) { + free(*p); + } + } + free(c_array); + } +} + + +/* + * Class: org_eclipse_cdt_utils_spawner_Spawner + * Method: exec2 + * Signature: ([Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[ILorg/eclipse/cdt/utils/pty/PTY;)I + */ +JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_exec2 + (JNIEnv *env, jobject jobj, jobjectArray jcmd, jobjectArray jenv, jstring jdir, jintArray jchannels, + jstring jslaveName, jint masterFD) +{ + jint *channels = (*env)->GetIntArrayElements(env, jchannels, 0); + const char *dirpath = (*env)->GetStringUTFChars(env, jdir, NULL); + const char *pts_name = (*env)->GetStringUTFChars(env, jslaveName, NULL); + char **cmd; + char **envp; + int fd[3]; + pid_t pid = -1; + + if (channels == NULL) + goto bail_out; + + cmd = alloc_c_array(env, jcmd); + if (cmd == NULL) + goto bail_out; + + envp = alloc_c_array(env, jenv); + if (envp == NULL) + goto bail_out; + +#if DEBUGIT + fprintf(stderr, "command:"); + print_array(cmd); + fprintf(stderr, "Envp:"); + print_array(envp); + fprintf(stderr, "dirpath: %s\n", dirpath); + fprintf(stderr, "pts_name: %s\n", pts_name); +#endif + + pid = exec_pty(cmd[0], cmd, envp, dirpath, fd, pts_name, masterFD); + if (pid < 0) + goto bail_out; + + channels[0] = fd[0]; + channels[1] = fd[1]; + channels[2] = fd[2]; + + bail_out: + (*env)->ReleaseIntArrayElements(env, jchannels, channels, 0); + (*env)->ReleaseStringUTFChars(env, jdir, dirpath); + (*env)->ReleaseStringUTFChars(env, jslaveName, pts_name); + if (cmd) + free_c_array(cmd); + if (envp) + free_c_array(envp); + return pid; +} + + +JNIEXPORT jint JNICALL +Java_org_eclipse_cdt_utils_spawner_Spawner_exec1(JNIEnv * env, jobject jobj, + jobjectArray jcmd, + jobjectArray jenv, + jstring jdir) +{ + const char *dirpath = (*env)->GetStringUTFChars(env, jdir, NULL); + char **cmd; + char **envp; + pid_t pid = -1; + + cmd = alloc_c_array(env, jcmd); + if (cmd == NULL) + goto bail_out; + + envp = alloc_c_array(env, jenv); + if (envp == NULL) + goto bail_out; + +#if DEBUGIT + fprintf(stderr, "command:"); + print_array(cmd); + fprintf(stderr, "Envp:"); + print_array(envp); + fprintf(stderr, "dirpath: %s\n", dirpath); +#endif + + pid = exec0(cmd[0], cmd, envp, dirpath, NULL); + if (pid < 0) + goto bail_out; + + bail_out: + (*env)->ReleaseStringUTFChars(env, jdir, dirpath); + if (cmd) + free_c_array(cmd); + if (envp) + free_c_array(envp); + return pid; +} + +/* + * Class: org_eclipse_cdt_utils_spawner_Spawner + * Method: exec0 + * Signature: ([Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[I)I + */ +JNIEXPORT jint JNICALL +Java_org_eclipse_cdt_utils_spawner_Spawner_exec0(JNIEnv * env, jobject jobj, + jobjectArray jcmd, + jobjectArray jenv, + jstring jdir, + jintArray jchannels) +{ + jint *channels = (*env)->GetIntArrayElements(env, jchannels, 0); + const char *dirpath = (*env)->GetStringUTFChars(env, jdir, NULL); + char **cmd; + char **envp; + int fd[3]; + pid_t pid = -1; + + if (channels == NULL) + goto bail_out; + + cmd = alloc_c_array(env, jcmd); + if (cmd == NULL) + goto bail_out; + + envp = alloc_c_array(env, jenv); + if (envp == NULL) + goto bail_out; + +#if DEBUGIT + fprintf(stderr, "command:"); + print_array(cmd); + fprintf(stderr, "Envp:"); + print_array(envp); + fprintf(stderr, "dirpath: %s\n", dirpath); +#endif + + pid = exec0(cmd[0], cmd, envp, dirpath, fd); + if (pid < 0) + goto bail_out; + + channels[0] = fd[0]; + channels[1] = fd[1]; + channels[2] = fd[2]; + + bail_out: + (*env)->ReleaseIntArrayElements(env, jchannels, channels, 0); + (*env)->ReleaseStringUTFChars(env, jdir, dirpath); + if (cmd) + free_c_array(cmd); + if (envp) + free_c_array(envp); + return pid; +} + +/* + * Class: org_eclipse_cdt_utils_spawner_Spawner + * Method: raise + * Signature: (II)I + */ +JNIEXPORT jint JNICALL +Java_org_eclipse_cdt_utils_spawner_Spawner_raise(JNIEnv * env, jobject jobj, + jint pid, jint sig) +{ + int status = -1; + + switch (sig) { + case 0: /* NOOP */ + status = killpg(pid, 0); + if(status == -1) { + status = kill(pid, 0); + } + break; + + case 2: /* INTERRUPT */ + status = killpg(pid, SIGINT); + if(status == -1) { + status = kill(pid, SIGINT); + } + break; + + case 9: /* KILL */ + status = killpg(pid, SIGKILL); + if(status == -1) { + status = kill(pid, SIGKILL); + } + break; + + case 15: /* TERM */ + status = killpg(pid, SIGTERM); + if(status == -1) { + status = kill(pid, SIGTERM); + } + break; + + default: + status = killpg(pid, sig); /* WHAT ?? */ + if(status == -1) { + status = kill(pid, sig); /* WHAT ?? */ + } + break; + } + + return status; +} + + + +/* + * Class: org_eclipse_cdt_utils_spawner_Spawner + * Method: waitFor + * Signature: (I)I + */ +JNIEXPORT jint JNICALL +Java_org_eclipse_cdt_utils_spawner_Spawner_waitFor(JNIEnv * env, + jobject jobj, jint pid) +{ + return wait0(pid); +} diff --git a/core/org.eclipse.cdt.core.solaris/os/solaris/sparc/libpty.so b/core/org.eclipse.cdt.core.solaris/os/solaris/sparc/libpty.so index a5d848d0c579cad02271fbb3794d53e448d87ed1..2333a6dd6a49c3ee472e3104f10a27b953780243 100644 GIT binary patch literal 9872 zcmeHNYiwM_6`p(jOmLF56OvE@T=KxC!uxQX-~>YaT4J{w+p;$hD%9)s?zO#Sy?5EY z4vvbNMIf41NVTj8Ar;6rr8KQj6rr>#N-JAH+t4D_vJ6Ck+NHQHDpXBd+CnjPzcY{B zn{9ybr@t6wcD^%n=A1KU&dl5y=WsA|tEOwLkjj`2Och6wn;F}9g10p@gO#xcb_H7} z+j+J4slA^u%B+I-Y({x`#2n0kBH8Lq}bnX~-fyBFidSZb7+OVzNi2atSI> zDqgCpMqWn1m6iivhP(oKB{FPatC80r(-T9kFJ`pbdWx@dx*L%y=4?wS&MQwd!pwbe(6fPpk-noFLDKq~l2(&Q7K z3{hOq*z*18wjM?j?^aPQgaO~A<_!ZO-*$oxbEVxN`9mfA`%36LOX#5zdX%wMv#85S zd5=SL3bbF+^GsV!vB{vHeEAweVIJiMv{OvHfoTW7cBkZj8+AO%@%{tdC|=6Z88M<2 z;!C#wL9%n_p}oXk8pRS%f?q>C@z^J0NFL^GMGHzp=-0Yo)_HVT0~&g@UeR0mQ-iN- zUPN6?@<&VB6A0fy^lO#vIrs-z`9pgN{&)&B=?9DUs#l{dNtb55=46q z8%al!PRe0Ubi{HZj+17lnYKpa8OKVS!|BMFWyX`kHcL5&#!Ne9C4n+YR5P>lj-Ix? z-5rc-(abVV+DfPGG)tx9NoSbdla4zUize)h#l8?Z7%}bih-pO=@l?h#qcO)EcjAeR ziLPc}_>SIjCpGR2Kt^QDipvp|zR&>;6{_JpdPf zvJbkGMHi4km*N3;pMnFDF=p-w^|rT#%-&mX9SDZaa9evQXu`mlb+PF+`}%u3f}Q*N zgJ!6^=ZkH7f~p4sMXNo6U+ht}9^i*0Hh?E3ZUCk=NjxpUk4W4K{HVlzz&VNc13w}0 zAn*x^Cx9uI*YY*4)t-`g67{Dgz8Cn%5)=PVB&PG`d2G>Gk4ReW43@aWt0z#g4l*A? z{d?e{Jr`AV<=|1+gX2qKoCmcEH(;44+>B+ca4VLZ!XX?f3h!s^a)o0!_Y_Xyh*9`n z#wrztZ?9DNDE3l?bJ$K4hEK{A#@II~jPb5jcoxf@5ywn}&1eb42qPnONBL)#?w1mUq7DWsm1rU6ySk z9@IC_qkc}$vRU3{Fu+yRmh-UXv+(SsZj{e%W^7L1y?E@|R(=ps{Tz1O?D0WXH@);e z@kn{Cq=)Jur-BZpsk*@%T3P#TvlTPTB#)nTPI(M%Ze!Lxrb*ZM+++CV$%_05*m|=| zcD0gC&LY`I>v9dyvl~3i-Ev%b;(UFs^KbRJu6OHmp?}ur`rfP0g=c)z=ccNr&rN#R zGW6$uo~z1r&TedFvnbU#*J3>6?^B-LOP(y-PMF%M?<{jUpf$s7I{-VyMI z!OQiW@)!)`;a`u+SFTt(f;ehJ94(%#cylxPkH$P-kuRS@e6+H*zes(Zm`_;K_AaOE zr{9^antq3DDDj(L@K3)3-ggK~o@!V9D}>?a|G=)zuKG7Wg8x^N|3mPvck#c6HVcRoG&M6P8F7*%AnDWbyPFDP`M#U9;()?hhclUFpJHu9>R)j{b5*zWS(#T?W3#s7?Ba#{ufTM|JRjwTPv*Cl!r( zsX-jmygVUfa$WZe%zd6E4B!46dJDdF>Gepxhl#I5@7Jl$rT2)Up?8hc`yka(jKBs< zV6JzFF!a6;y*%zHK0d;?qvTJ-|5+)=p}x|Va>9@y<9vF4YWeQ3&DBrOL*Ch`IwK2w z_NeTO3j)?gekE+_qJIAy-)AO@@tyBf^EiW;nZ!Dut)E_)@tw&}Rh`LWeApk_K2LI} z9{Lu@rphb}@H)_F4+$*xjd^|WUK#`K3CEtzioLV`%qjAjZ#~&rWqCH}L zTx>2}`vCc=Rqg{Dl%L%Ds2bDD`cPil(RUPk%dux?)HvX?To}Hi_7F-wF08i&*qev% z6d%^B@ZUK-%3}%s>jTfi!z54nrMRYfJjwZb3$byHoDZz|-AnM-5cVz z1kH7MUip9gDZ~BIKfUyK8Z_|Dz~?3I0{*kaVcEiXA@Kvizma$n z_%(?i1wJS73E-C`J`Fr4@eJ^CUciL|KW6m_dmAHK)fmmUMg?#C98*C1CR<7lWn zFL32%l-1~W3MIW0)S%xYN>WX4NX$m8Qi)WCyT@4pi@!@qM5(gaasiSMAKUu5+4)M@B=0Orb0B0nP?g_(HJkKYAy#f zjT?!-sZhIEBJ%AIH2D)&im`*nd=M>S9yI2KXu6|u`75aeouvZptEdEhgbL6eDnUmC(E3Pwp2?9{FCgf3@{+^9iEG{ApgaKOoy_eqgUB zM>LX}PcC2j6Z7GDj~Zovyt%sPi{2DP6839fR^E^kY4j-H82^#}jDm zuVs6cJcENWOYOI4uVG%V&(8QVb|R9FqfAB8Q6HW_@igkq*esfM;@%897)gv!ARY{Db0lF8MG|JrvC|ndGCsk?!*FbTZ0ryliAI~us6Cd7C#;y44cqCc zWjeMg9%0RnaBn}}6bHhl$?T!Ktf=D+1R%E4Rd1TXF7wv@w!J~KJ-Da42dwmXYYGJ< zJApUZn75hHE32$ddAF*kXV~ctg*yEFH^6_J`0rN!+f1*(ahs2Zs}1&aLWO&1(ZbM7 zVX5Q?> z>o<0^_ySG7rU3So)`m^j4~!>!2hgy?*kdKFbUbS8jT|zX{C=D_mn3CRN5@X1VNcJ# z>y0Mwj&0s1Bd}w~j)1?Z*=R^x2`iGZt{0-9s%X@9V?2fBY8g!h`v{ELNn<-?42Ye> z++lXK2g#g(&)@9xH!WwM=~Mpv#0kE1SAC+WL~JMKWZ1bUlD0&oMCf8^?8D#F;!fPk z7>#Pqj8HszzzD|Tw7>17&}s~Lx3=6U&kKBR&?kmAhjPWuvJ%A|%?f)*Bbia=jU7s6 z4vmQteXG1 zZ#W{ppIHb zes0)?0i`KB?f6Elq_5ZjJ{tQ3KJ-3KqL`*TE#jKr^YI<2-5_Zc{Qg^xlJ2$mcH;3r z10H0(mGLVd?@K)Nxk%sZbYIw5?8@H@P{kAJqqGj0`m~F?HotGrfF?Ug54F`GUn?>3 zEr`tPiI47bijQno^3H<~nSr0nBRPt1J22T$DZY`#|Ahdp67f-@<*oQ2tBT~g@4|`? zb}2r(<5OOSszOqH^vzB3U^jhh^Y87i6u8h);ti6I-aj4yA2R))kwPMQlmo~l5C2Dq z-U=wwJ*tq1hsNE9jIm-)_!~l99{3SX;|GcONcVNfBoBOaSLOFrWfQ77AC-3?E50oF zkPEg07Wf8%72gr?Azzel#KkuWKIDQ7zyiJ-nCv0@5TpFQQ#xMaKZs1RArtXck`HL^ z=pIAk^&o#0nc~zyM!I4FuBlJQ+s5T8uOJjBzvqY~%)FCkIv^#A|> literal 9937 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 diff --git a/core/org.eclipse.cdt.core.solaris/os/solaris/sparc/libspawner.so b/core/org.eclipse.cdt.core.solaris/os/solaris/sparc/libspawner.so index 2d9da5cc8d3b9947e595299f9f86da36556955c3..46c86d9f9e777689cda1227942ced18cf36e49db 100644 GIT binary patch literal 19428 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 E0XMSGjQ{`u