diff options
Diffstat (limited to 'core/org.eclipse.cdt.core.aix/library')
17 files changed, 0 insertions, 1472 deletions
diff --git a/core/org.eclipse.cdt.core.aix/library/Makefile b/core/org.eclipse.cdt.core.aix/library/Makefile deleted file mode 100644 index f607f23c1a8..00000000000 --- a/core/org.eclipse.cdt.core.aix/library/Makefile +++ /dev/null @@ -1,29 +0,0 @@ -# makefile for libspawner.so - -#set JDK_INCLUDES -JDK_INCLUDES=/opt/ibm-jdk1.4.2/include -RM=rm -CC=xlc -CFLAGS = -I. -I$(JDK_INCLUDES) -#CFLAGS +=-fpic -D_REENTRANT - -LIB_NAME_SPAWNER = libspawner.so -LIB_NAME_FULL_SPAWNER = ../os/aix/ppc/libspawner.so -OBJS_SPAWNER=spawner.o io.o exec_unix.o exec_pty.o openpty.o pfind.o - -LIB_NAME_PTY = libpty.so -LIB_NAME_FULL_PTY = ../os/aix/ppc/libpty.so -OBJS_PTY=openpty.o pty.o ptyio.o - -all: $(LIB_NAME_FULL_SPAWNER) $(LIB_NAME_FULL_PTY) - -$(LIB_NAME_FULL_SPAWNER): $(OBJS_SPAWNER) - mkdir -p ../os/aix/ppc - $(CC) -G -o $(LIB_NAME_FULL_SPAWNER) $(OBJS_SPAWNER) -lc - -$(LIB_NAME_FULL_PTY): $(OBJS_PTY) - $(CC) -G -o $(LIB_NAME_FULL_PTY) $(OBJS_PTY) - -clean : - $(RM) $(OBJS_SPAWNER) $(LIB_NAME_FULL_SPAWNER) - $(RM) $(OBJS_PTY) $(LIB_NAME_FULL_PTY) diff --git a/core/org.eclipse.cdt.core.aix/library/PTY.h b/core/org.eclipse.cdt.core.aix/library/PTY.h deleted file mode 100644 index f717942a01d..00000000000 --- a/core/org.eclipse.cdt.core.aix/library/PTY.h +++ /dev/null @@ -1,29 +0,0 @@ -/* DO NOT EDIT THIS FILE - it is machine generated */ -#include <jni.h> -/* Header for class org_eclipse_cdt_utils_pty_PTY */ - -#ifndef _Included_org_eclipse_cdt_utils_pty_PTY -#define _Included_org_eclipse_cdt_utils_pty_PTY -#ifdef __cplusplus -extern "C" { -#endif -/* - * Class: org_eclipse_cdt_utils_pty_PTY - * Method: openMaster - * Signature: (Z)Ljava/lang/String; - */ -JNIEXPORT jstring JNICALL Java_org_eclipse_cdt_utils_pty_PTY_openMaster - (JNIEnv *, jobject, jboolean); - -/* - * Class: org_eclipse_cdt_utils_pty_PTY - * Method: change_window_size - * Signature: (III)I - */ -JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTY_change_1window_1size - (JNIEnv *, jobject, jint, jint, jint); - -#ifdef __cplusplus -} -#endif -#endif diff --git a/core/org.eclipse.cdt.core.aix/library/PTYInputStream.h b/core/org.eclipse.cdt.core.aix/library/PTYInputStream.h deleted file mode 100644 index e7349272b56..00000000000 --- a/core/org.eclipse.cdt.core.aix/library/PTYInputStream.h +++ /dev/null @@ -1,32 +0,0 @@ -/* DO NOT EDIT THIS FILE - it is machine generated */ -#include <jni.h> -/* Header for class org_eclipse_cdt_utils_pty_PTYInputStream */ - -#ifndef _Included_org_eclipse_cdt_utils_pty_PTYInputStream -#define _Included_org_eclipse_cdt_utils_pty_PTYInputStream -#ifdef __cplusplus -extern "C" { -#endif -#undef org_eclipse_cdt_utils_pty_PTYInputStream_SKIP_BUFFER_SIZE -#define org_eclipse_cdt_utils_pty_PTYInputStream_SKIP_BUFFER_SIZE 2048L -/* Inaccessible static: skipBuffer */ -/* - * Class: org_eclipse_cdt_utils_pty_PTYInputStream - * Method: read0 - * Signature: (I[BI)I - */ -JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTYInputStream_read0 - (JNIEnv *, jobject, jint, jbyteArray, jint); - -/* - * Class: org_eclipse_cdt_utils_pty_PTYInputStream - * Method: close0 - * Signature: (I)I - */ -JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTYInputStream_close0 - (JNIEnv *, jobject, jint); - -#ifdef __cplusplus -} -#endif -#endif diff --git a/core/org.eclipse.cdt.core.aix/library/PTYOutputStream.h b/core/org.eclipse.cdt.core.aix/library/PTYOutputStream.h deleted file mode 100644 index fb28491060e..00000000000 --- a/core/org.eclipse.cdt.core.aix/library/PTYOutputStream.h +++ /dev/null @@ -1,29 +0,0 @@ -/* DO NOT EDIT THIS FILE - it is machine generated */ -#include <jni.h> -/* Header for class org_eclipse_cdt_utils_pty_PTYOutputStream */ - -#ifndef _Included_org_eclipse_cdt_utils_pty_PTYOutputStream -#define _Included_org_eclipse_cdt_utils_pty_PTYOutputStream -#ifdef __cplusplus -extern "C" { -#endif -/* - * Class: org_eclipse_cdt_utils_pty_PTYOutputStream - * Method: write0 - * Signature: (I[BI)I - */ -JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTYOutputStream_write0 - (JNIEnv *, jobject, jint, jbyteArray, jint); - -/* - * Class: org_eclipse_cdt_utils_pty_PTYOutputStream - * Method: close0 - * Signature: (I)I - */ -JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTYOutputStream_close0 - (JNIEnv *, jobject, jint); - -#ifdef __cplusplus -} -#endif -#endif diff --git a/core/org.eclipse.cdt.core.aix/library/Spawner.h b/core/org.eclipse.cdt.core.aix/library/Spawner.h deleted file mode 100644 index e2fea946912..00000000000 --- a/core/org.eclipse.cdt.core.aix/library/Spawner.h +++ /dev/null @@ -1,53 +0,0 @@ -/* DO NOT EDIT THIS FILE - it is machine generated */ -#include <jni.h> -/* Header for class org_eclipse_cdt_utils_spawner_Spawner */ - -#ifndef _Included_org_eclipse_cdt_utils_spawner_Spawner -#define _Included_org_eclipse_cdt_utils_spawner_Spawner -#ifdef __cplusplus -extern "C" { -#endif -/* - * 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 *, jobject, jobjectArray, jobjectArray, jstring, jintArray); - -/* - * Class: org_eclipse_cdt_utils_spawner_Spawner - * Method: exec1 - * Signature: ([Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)I - */ -JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_exec1 - (JNIEnv *, jobject, jobjectArray, jobjectArray, jstring); - -/* - * Class: org_eclipse_cdt_utils_spawner_Spawner - * Method: exec2 - * Signature: ([Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[ILjava/lang/String;I)I - */ -JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_exec2 - (JNIEnv *, jobject, jobjectArray, jobjectArray, jstring, jintArray, jstring, jint, jboolean); - -/* - * Class: org_eclipse_cdt_utils_spawner_Spawner - * Method: raise - * Signature: (II)I - */ -JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_raise - (JNIEnv *, jobject, jint, jint); - -/* - * Class: org_eclipse_cdt_utils_spawner_Spawner - * Method: waitFor - * Signature: (I)I - */ -JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_waitFor - (JNIEnv *, jobject, jint); - -#ifdef __cplusplus -} -#endif -#endif diff --git a/core/org.eclipse.cdt.core.aix/library/SpawnerInputStream.h b/core/org.eclipse.cdt.core.aix/library/SpawnerInputStream.h deleted file mode 100644 index ecf8f8c6a78..00000000000 --- a/core/org.eclipse.cdt.core.aix/library/SpawnerInputStream.h +++ /dev/null @@ -1,32 +0,0 @@ -/* DO NOT EDIT THIS FILE - it is machine generated */ -#include <jni.h> -/* Header for class com_qnx_tools_utils_spawner_SpawnerInputStream */ - -#ifndef _Included_com_qnx_tools_utils_spawner_SpawnerInputStream -#define _Included_com_qnx_tools_utils_spawner_SpawnerInputStream -#ifdef __cplusplus -extern "C" { -#endif -#undef com_qnx_tools_utils_spawner_SpawnerInputStream_SKIP_BUFFER_SIZE -#define com_qnx_tools_utils_spawner_SpawnerInputStream_SKIP_BUFFER_SIZE 2048L -/* Inaccessible static: skipBuffer */ -/* - * Class: org_elipse_cdt_utils_spawner_SpawnerInputStream - * Method: read0 - * Signature: (I[BI)I - */ -JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_SpawnerInputStream_read0 - (JNIEnv *, jobject, jint, jbyteArray, jint); - -/* - * Class: org_eclipse_cdt_utils_spawner_SpawnerInputStream - * Method: close0 - * Signature: (I)I - */ -JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_SpawnerInputStream_close0 - (JNIEnv *, jobject, jint); - -#ifdef __cplusplus -} -#endif -#endif diff --git a/core/org.eclipse.cdt.core.aix/library/SpawnerOutputStream.h b/core/org.eclipse.cdt.core.aix/library/SpawnerOutputStream.h deleted file mode 100644 index 444d71c698c..00000000000 --- a/core/org.eclipse.cdt.core.aix/library/SpawnerOutputStream.h +++ /dev/null @@ -1,29 +0,0 @@ -/* DO NOT EDIT THIS FILE - it is machine generated */ -#include <jni.h> -/* Header for class com_qnx_tools_utils_spawner_SpawnerOutputStream */ - -#ifndef _Included_com_qnx_tools_utils_spawner_SpawnerOutputStream -#define _Included_com_qnx_tools_utils_spawner_SpawnerOutputStream -#ifdef __cplusplus -extern "C" { -#endif -/* - * Class: org_eclipse_cdt_utils_spawner_SpawnerOutputStream - * Method: write0 - * Signature: (I[BI)I - */ -JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_SpawnerOutputStream_write0 - (JNIEnv *, jobject, jint, jbyteArray, jint); - -/* - * Class: org_eclipse_cdt_utils_spawner_SpawnerOutputStream - * Method: close0 - * Signature: (I)I - */ -JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_SpawnerOutputStream_close0 - (JNIEnv *, jobject, jint); - -#ifdef __cplusplus -} -#endif -#endif diff --git a/core/org.eclipse.cdt.core.aix/library/exec0.h b/core/org.eclipse.cdt.core.aix/library/exec0.h deleted file mode 100644 index 630e741a582..00000000000 --- a/core/org.eclipse.cdt.core.aix/library/exec0.h +++ /dev/null @@ -1,29 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2013 IBM Corporation 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: - * IBM Corporation - initial API and implementation - * IBM Corporation - port of 248071 - *******************************************************************************/ - -#include <unistd.h> -#include <sys/wait.h> -#include <sys/types.h> -#include <signal.h> -#include <errno.h> - -extern pid_t exec0(const char *path, char *const argv[], - char *const envp[], const char *dirpath, - int channels[3]); - - -extern 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 console); - -extern int wait0(pid_t pid); diff --git a/core/org.eclipse.cdt.core.aix/library/exec_pty.c b/core/org.eclipse.cdt.core.aix/library/exec_pty.c deleted file mode 100644 index 2c3a03ee0d4..00000000000 --- a/core/org.eclipse.cdt.core.aix/library/exec_pty.c +++ /dev/null @@ -1,184 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2013 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 - * IBM Corporation - port of 248071 - *******************************************************************************/ - -#include "exec0.h" -#include <unistd.h> -#include <stdlib.h> -#include <stdio.h> -#include <errno.h> -#include <string.h> -#include <libgen.h> -#include <stdlib.h> -#include <termios.h> - -/* from pfind.c */ -extern char *pfind(const char *name, char * const envp[]); - -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 console) -{ - 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, envp); - 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 && console) { - 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; - - if (!console && setsid() < 0) { - perror("setsid()"); - return -1; - } - - 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 (console && close(pipe2[0]) == -1) - perror("close(pipe2[0]))"); - - /* close the master, no need in the child */ - close(fdm); - - if (console) { - set_noecho(fds); - if (setpgid(getpid(), getpid()) < 0) { - perror("setpgid()"); - return -1; - } - } - - /* redirections */ - dup2(fds, STDIN_FILENO); /* dup stdin */ - dup2(fds, STDOUT_FILENO); /* dup stdout */ - if (console) { - dup2(pipe2[1], STDERR_FILENO); /* dup stderr */ - } else { - dup2(fds, 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 */ - - if (console) { - set_noecho(fdm); - } - if (channels != NULL) { - channels[0] = fdm; /* Input Stream. */ - channels[1] = fdm; /* Output Stream. */ - if (console) { - /* close the write end of pipe1 */ - if (close(pipe2[1]) == -1) - perror("close(pipe2[1])"); - channels[2] = pipe2[0]; /* stderr Stream. */ - } else { - channels[2] = fdm; /* Error 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 { - fputs("foo\n", app_stdin); - fputs("bar\n", 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.aix/library/exec_unix.c b/core/org.eclipse.cdt.core.aix/library/exec_unix.c deleted file mode 100644 index 8c71787b618..00000000000 --- a/core/org.eclipse.cdt.core.aix/library/exec_unix.c +++ /dev/null @@ -1,159 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2013 IBM Corporation 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: - * IBM Corporation - initial API and implementation - * IBM Corporation - port of 248071 - *******************************************************************************/ - -#include "exec0.h" -#include <unistd.h> -#include <stdlib.h> -#include <stdio.h> -#include <errno.h> -#include <string.h> -#include <libgen.h> -#include <stdlib.h> - -/* from pfind.c */ -extern char *pfind(const char *name, char * const envp[]); - -pid_t -exec0(const char *path, char *const argv[], char *const envp[], - const char *dirpath, int channels[3]) -{ - int pipe0[2], pipe1[2], 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, envp); - 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(pipe0) < 0 || pipe(pipe1) < 0 || pipe(pipe2) < 0) { - fprintf(stderr, "%s(%d): returning due to error.\n", - __FUNCTION__, __LINE__); - 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 */ - char *ptr; - - chdir(dirpath); - - if (channels != NULL) { - /* Close the write end of pipe0 */ - if (close(pipe0[1]) == -1) - perror("close(pipe0[1])"); - - /* Close the read end of pipe1 */ - if (close(pipe1[0]) == -1) - perror("close(pipe1[0])"); - - /* Close the read end of pipe2 */ - if (close(pipe2[0]) == -1) - perror("close(pipe2[0]))"); - - /* redirections */ - dup2(pipe0[0], STDIN_FILENO); /* dup stdin */ - dup2(pipe1[1], STDOUT_FILENO); /* dup stdout */ - dup2(pipe2[1], STDERR_FILENO); /* dup stderr */ - } - - /* 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 */ - - char b; - - if (channels != NULL) { - /* close the read end of pipe1 */ - if (close(pipe0[0]) == -1) - perror("close(pipe0[0])"); - - /* close the write end of pipe2 */ - if (close(pipe1[1]) == -1) - perror("close(pipe1[1])"); - - /* close the write end of pipe2 */ - if (close(pipe2[1]) == -1) - perror("close(pipe2[1])"); - - channels[0] = pipe0[1]; /* Output Stream. */ - channels[1] = pipe1[0]; /* Input Stream. */ - channels[2] = pipe2[0]; /* Input Stream. */ - } - - free(full_path); - return childpid; - } - - free(full_path); - return -1; /*NOT REACHED */ -} - - -int wait0(pid_t pid) -{ - int status; - int val = -1; - - if (pid < 0) - return -1; - - for (;;) { - if (waitpid(pid, &status, 0) < 0) { - if (errno == EINTR) { - // interrupted system call - retry - continue; - } - } - break; - } - - if (WIFEXITED(status)) { - val = WEXITSTATUS(status); - } - - return val; -} diff --git a/core/org.eclipse.cdt.core.aix/library/io.c b/core/org.eclipse.cdt.core.aix/library/io.c deleted file mode 100644 index b5bb5eef8b8..00000000000 --- a/core/org.eclipse.cdt.core.aix/library/io.c +++ /dev/null @@ -1,114 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2010 IBM Corporation 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ - -#include <jni.h> -#include <stdio.h> -#include <SpawnerInputStream.h> -#include <SpawnerOutputStream.h> -#include <unistd.h> - -/* Header for class _org_eclipse_cdt_utils_spawner_SpawnerInputStream */ -/* Header for class _org_eclipse_cdt_utils_spawner_SpawnerOutputStream */ - -/* - * Class: org_eclipse_cdt_utils_spawner_SpawnerInputStream - * Method: read0 - * Signature: (I)I - */ -JNIEXPORT jint JNICALL -Java_org_eclipse_cdt_utils_spawner_SpawnerInputStream_read0(JNIEnv * env, - jobject jobj, - jint jfd, - jbyteArray buf, - jint buf_len) -{ - int fd; - int status; - jbyte *data; - int data_len; - - data = (*env)->GetByteArrayElements(env, buf, 0); - data_len = buf_len; - fd = jfd; - - status = read( fd, data, data_len ); - (*env)->ReleaseByteArrayElements(env, buf, data, 0); - - if (status == 0) { - /* EOF. */ - status = -1; - } else if (status == -1) { - /* Error, toss an exception */ - jclass exception = (*env)->FindClass(env, "java/io/IOException"); - if (exception == NULL) { - /* Give up. */ - return -1; - } - (*env)->ThrowNew(env, exception, "read error"); - } - - return status; -} - - -/* - * Class: org_eclipse_cdt_utils_spawner_SpawnerInputStream - * Method: close0 - * Signature: (I)I - */ -JNIEXPORT jint JNICALL -Java_org_eclipse_cdt_utils_spawner_SpawnerInputStream_close0(JNIEnv * env, - jobject jobj, - jint fd) -{ - return close(fd); -} - -/* - * Class: org_eclipse_cdt_utils_spawner_SpawnerOutputStream - * Method: write0 - * Signature: (II)I - */ -JNIEXPORT jint JNICALL -Java_org_eclipse_cdt_utils_spawner_SpawnerOutputStream_write0(JNIEnv * env, - jobject jobj, - jint jfd, - jbyteArray buf, - jint buf_len) -{ - int status; - int fd; - jbyte *data; - int data_len; - - data = (*env)->GetByteArrayElements(env, buf, 0); - data_len = buf_len; - fd = jfd; - - status = write(fd, data, data_len); - (*env)->ReleaseByteArrayElements(env, buf, data, 0); - - return status; -} - - -/* - * Class: org_eclipse_cdt_utils_spawner_SpawnerOutputStream - * Method: close0 - * Signature: (I)I - */ -JNIEXPORT jint JNICALL -Java_org_eclipse_cdt_utils_spawner_SpawnerOutputStream_close0(JNIEnv * env, - jobject jobj, - jint fd) -{ - return close(fd); -} diff --git a/core/org.eclipse.cdt.core.aix/library/openpty.c b/core/org.eclipse.cdt.core.aix/library/openpty.c deleted file mode 100644 index e8af4b8ebed..00000000000 --- a/core/org.eclipse.cdt.core.aix/library/openpty.c +++ /dev/null @@ -1,134 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2013 IBM Corporation 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: - * IBM Corporation - initial API and implementation - * QNX Software Systems - *******************************************************************************/ - -#include <sys/types.h> -#include <sys/stat.h> -#include <sys/ioctl.h> -#include <fcntl.h> -#include <termios.h> -#include <errno.h> -#include <unistd.h> -#include <stdio.h> -#include <string.h> -#include <grp.h> - -#include <stdlib.h> -#include <stropts.h> - -/** - * This is taken from R. W. Stevens book. - * Alain Magloire. - */ - -int ptym_open (char *pts_name); -int ptys_open (int fdm, const char * pts_name); -void set_noecho(int fd); - -int -openpty(int *amaster, int *aslave, char *name, struct termios *termp, struct winsize *winp) -{ - char line[20]; - line[0]=0; - *amaster = ptym_open(line); - if (*amaster < 0) - return -1; - *aslave = ptys_open(*amaster, line); - if (*aslave < 0) { - close(*amaster); - return -1; - } - - if (name) - strcpy(name, line); -#ifndef TCSAFLUSH -#define TCSAFLUSH TCSETAF -#endif - if (termp) - (void) tcsetattr(*aslave, TCSAFLUSH, termp); -#ifdef TIOCSWINSZ - if (winp) - (void) ioctl(*aslave, TIOCSWINSZ, (char *)winp); -#endif - return 0; -} - -void -set_noecho(int fd) -{ - struct termios stermios; - if (tcgetattr(fd, &stermios) < 0) { - return ; - } - - /* turn off echo */ - stermios.c_lflag &= ~(ECHO | ECHOE | ECHOK | ECHONL); - /* Turn off the NL to CR/NL mapping ou output. */ - /*stermios.c_oflag &= ~(ONLCR);*/ - - stermios.c_iflag |= (IGNCR); - - tcsetattr(fd, TCSANOW, &stermios); -} - -int -ptym_open(char * pts_name) -{ - int fdm; - char *ptr; - - strcpy(pts_name, "/dev/ptmx"); - fdm = posix_openpt(O_RDWR); - if (fdm < 0) - return -1; - if (grantpt(fdm) < 0) { /* grant access to slave */ - close(fdm); - return -2; - } - if (unlockpt(fdm) < 0) { /* clear slave's lock flag */ - close(fdm); - return -3; - } - ptr = ptsname(fdm); - if (ptr == NULL) { /* get slave's name */ - close (fdm); - return -4; - } - strcpy(pts_name, ptr); /* return name of slave */ - return fdm; /* return fd of master */ -} - -int -ptys_open(int fdm, char * pts_name) -{ - int fds; - /* following should allocate controlling terminal */ - fds = open(pts_name, O_RDWR); - if (fds < 0) { - close(fdm); - return -5; - } -/* - if (ioctl(fds, I_PUSH, "ptem") < 0) { - printf("pterm:%s\n", strerror(errno)); - close(fdm); - close(fds); - return -6; - } - if (ioctl(fds, I_PUSH, "ldterm") < 0) { - printf("ldterm %s\n", strerror(errno)); - close(fdm); - close(fds); - return -7; - } -*/ - return fds; -} diff --git a/core/org.eclipse.cdt.core.aix/library/openpty.h b/core/org.eclipse.cdt.core.aix/library/openpty.h deleted file mode 100644 index 21c98ac82fd..00000000000 --- a/core/org.eclipse.cdt.core.aix/library/openpty.h +++ /dev/null @@ -1,19 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2003, 2013 IBM Corporation 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: - * IBM Corporation - initial API and implementation - * QNX Software Systems - * IBM Corporation - port of 248071 - *******************************************************************************/ - -#ifndef _OPENPTY_H -#define _OPENPTY_H -int ptym_open (char *pts_name); -int ptys_open (int fdm, const char * pts_name); -void set_noecho(int fd); -#endif diff --git a/core/org.eclipse.cdt.core.aix/library/pfind.c b/core/org.eclipse.cdt.core.aix/library/pfind.c deleted file mode 100644 index b97942e298d..00000000000 --- a/core/org.eclipse.cdt.core.aix/library/pfind.c +++ /dev/null @@ -1,107 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2013 IBM Corporation 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: - * IBM Corporation - initial API and implementation - * IBM Corporation - port of 248071 - *******************************************************************************/ - -/* - * pfind.c - Search for a binary in $PATH. - */ - -#include <stdio.h> -#include <unistd.h> -#include <stdlib.h> -#include <string.h> -#include <limits.h> - -#ifndef PATH_MAX -#define PATH_MAX 1024 -#endif - -#define PATH_DEF "PATH=" -const int path_def_len = 5; /* strlen(PATH_DEF); */ -char * path_val(char * const envp[]) -{ - int i; - if (envp == NULL || envp[0] == NULL) - return getenv("PATH" ); - - for(i = 0; envp[i] != NULL; i++){ - char* p = envp[i]; - if(!strncmp(PATH_DEF, p, path_def_len)){ - return p + path_def_len; - } - } - - return NULL; -} - -char * pfind(const char *name, char * const envp[]) -{ - char *tok; - char *sp; - char *path; - char fullpath[PATH_MAX+1]; - - /* Sanity check. */ - if (name == NULL) { - fprintf(stderr, "pfind(): Null argument.\n"); - return NULL; - } - - /* For absolute name or name with a path, check if it is an executable. */ - if (name[0] == '/' || name[0] == '.') { - if (access(name, X_OK | R_OK) == 0) { - return strdup(name); - } - return NULL; - } - - /* Search in the PATH environment. */ - path = path_val( envp ); - - if (path == NULL || strlen(path) <= 0) { - fprintf(stderr, "Unable to get $PATH.\n"); - return NULL; - } - - /* The value return by getenv() is readonly */ - path = strdup(path); - - tok = strtok_r(path, ":", &sp); - while (tok != NULL) { - snprintf(fullpath, sizeof(fullpath) - 1, "%s/%s", tok, name); - - if (access(fullpath, X_OK | R_OK) == 0) { - free(path); - return strdup(fullpath); - } - - tok = strtok_r( NULL, ":", &sp ); - } - - free(path); - return NULL; -} - -#ifdef BUILD_WITH_MAIN -int main(int argc, char **argv) -{ - int i; - char *fullpath; - - for (i=1; i<argc; i++) { - fullpath = pfind(argv[i], NULL); - if (fullpath == NULL) - printf("Unable to find %s in $PATH.\n", argv[i]); - else - printf("Found %s @ %s.\n", argv[i], fullpath); - } -} -#endif diff --git a/core/org.eclipse.cdt.core.aix/library/pty.c b/core/org.eclipse.cdt.core.aix/library/pty.c deleted file mode 100644 index 5de705d1105..00000000000 --- a/core/org.eclipse.cdt.core.aix/library/pty.c +++ /dev/null @@ -1,72 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2013 IBM Corporation 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: - * IBM Corporation - initial API and implementation - * QNX Software Systems - * IBM Corporation - port of 248071 - *******************************************************************************/ -#include <sys/ioctl.h> -#include "PTY.h" -#include "openpty.h" - -/* - * Class: org_eclipse_cdt_utils_pty_PTY - * Method: forkpty - * Signature: ()I - */ -JNIEXPORT jstring JNICALL -Java_org_eclipse_cdt_utils_pty_PTY_openMaster (JNIEnv *env, jobject jobj, jboolean console) { - jfieldID fid; /* Store the field ID */ - jstring jstr = NULL; - int master = -1; - char line[1024]; /* FIXME: Should be enough */ - jclass cls; - - line[0] = '\0'; - - master = ptym_open(line); - if (master >= 0) { - // turn off echo - if (console) { - set_noecho(master); - } - - /* Get a reference to the obj's class */ - cls = (*env)->GetObjectClass(env, jobj); - - /* Set the master fd. */ - fid = (*env)->GetFieldID(env, cls, "master", "I"); - if (fid == NULL) { - return NULL; - } - (*env)->SetIntField(env, jobj, fid, (jint)master); - - /* Create a new String for the slave. */ - jstr = (*env)->NewStringUTF(env, line); - } - return jstr; -} - -JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTY_change_1window_1size - (JNIEnv *env, jobject jobj, jint fdm, jint width, jint height) -{ -#ifdef TIOCGWINSZ - struct winsize win; - - win.ws_col = width; - win.ws_row = height; - win.ws_xpixel = 0; - win.ws_ypixel = 0; - - return ioctl(fdm, TIOCSWINSZ, &win); -#else - return 0; -#endif -} - - diff --git a/core/org.eclipse.cdt.core.aix/library/ptyio.c b/core/org.eclipse.cdt.core.aix/library/ptyio.c deleted file mode 100644 index 88ae70f77cb..00000000000 --- a/core/org.eclipse.cdt.core.aix/library/ptyio.c +++ /dev/null @@ -1,118 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2010 IBM Corporation 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ - -#include <jni.h> -#include <stdio.h> -#include <PTYInputStream.h> -#include <PTYOutputStream.h> -#include <unistd.h> - -/* Header for class _org_eclipse_cdt_utils_pty_PTYInputStream */ -/* Header for class _org_eclipse_cdt_utils_pty_PTYOutputStream */ - -/* - * Class: org_eclipse_cdt_utils_pty_PTYInputStream - * Method: read0 - * Signature: (I)I - */ -JNIEXPORT jint JNICALL -Java_org_eclipse_cdt_utils_pty_PTYInputStream_read0(JNIEnv * env, - jobject jobj, - jint jfd, - jbyteArray buf, - jint buf_len) -{ - int fd; - int status; - jbyte *data; - int data_len; - - data = (*env)->GetByteArrayElements(env, buf, 0); - data_len = buf_len; - fd = jfd; - - status = read( fd, data, data_len ); - (*env)->ReleaseByteArrayElements(env, buf, data, 0); - - if (status == 0) { - /* EOF. */ - status = -1; - } else if (status == -1) { - /* Error, toss an exception */ - /* Ignore the error for now, the debugger will attempt - * to close this multiple time. */ -#if 0 - jclass exception = (*env)->FindClass(env, "java/io/IOException"); - if (exception == NULL) { - /* Give up. */ - return -1; - } - (*env)->ThrowNew(env, exception, "read error"); -#endif - } - - return status; -} - - -/* - * Class: org_eclipse_cdt_utils_pty_PTYInputStream - * Method: close0 - * Signature: (I)I - */ -JNIEXPORT jint JNICALL -Java_org_eclipse_cdt_utils_pty_PTYInputStream_close0(JNIEnv * env, - jobject jobj, - jint fd) -{ - return close(fd); -} - -/* - * Class: org_eclipse_cdt_utils_pty_PTYOutputStream - * Method: write0 - * Signature: (II)I - */ -JNIEXPORT jint JNICALL -Java_org_eclipse_cdt_utils_pty_PTYOutputStream_write0(JNIEnv * env, - jobject jobj, - jint jfd, - jbyteArray buf, - jint buf_len) -{ - int status; - int fd; - jbyte *data; - int data_len; - - data = (*env)->GetByteArrayElements(env, buf, 0); - data_len = buf_len; - fd = jfd; - - status = write(fd, data, data_len); - (*env)->ReleaseByteArrayElements(env, buf, data, 0); - - return status; -} - - -/* - * Class: org_eclipse_cdt_utils_pty_PTYOutputStream - * Method: close0 - * Signature: (I)I - */ -JNIEXPORT jint JNICALL -Java_org_eclipse_cdt_utils_pty_PTYOutputStream_close0(JNIEnv * env, - jobject jobj, - jint fd) -{ - return close(fd); -} diff --git a/core/org.eclipse.cdt.core.aix/library/spawner.c b/core/org.eclipse.cdt.core.aix/library/spawner.c deleted file mode 100644 index 710ae08e1de..00000000000 --- a/core/org.eclipse.cdt.core.aix/library/spawner.c +++ /dev/null @@ -1,303 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2013 IBM Corporation 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: - * IBM Corporation - initial API and implementation - * QNX Software Systems - * IBM Corporation - port of 248071 - *******************************************************************************/ - -#include <unistd.h> -#include <stdlib.h> -#include <stdio.h> -#include <signal.h> -#include <string.h> -#include <jni.h> - -#include "exec0.h" -#include <Spawner.h> - - -#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, jboolean console) -{ - 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 = NULL; - char **envp = NULL; - 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, console); - 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 = NULL; - char **envp = NULL; - 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 = NULL; - char **envp = NULL; - 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); -} |