mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-09-10 12:03:16 +02:00
Fix up the ASCII property for these files.
This commit is contained in:
parent
d37ff65df9
commit
1d7403d060
14 changed files with 2191 additions and 2191 deletions
|
@ -1,35 +1,35 @@
|
||||||
# makefile for libspawner.so
|
# makefile for libspawner.so
|
||||||
|
|
||||||
ifeq ($(JAVA_HOME),)
|
ifeq ($(JAVA_HOME),)
|
||||||
$(warning JAVA_HOME not set in environment)
|
$(warning JAVA_HOME not set in environment)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Defaults which can be overridden.
|
# Defaults which can be overridden.
|
||||||
OS = win32
|
OS = win32
|
||||||
ARCH = x86
|
ARCH = x86
|
||||||
|
|
||||||
JDK_INCLUDES= $(JAVA_HOME)/include
|
JDK_INCLUDES= $(JAVA_HOME)/include
|
||||||
JDK_OS_INCLUDES= $(JAVA_HOME)/include/$(OS)
|
JDK_OS_INCLUDES= $(JAVA_HOME)/include/$(OS)
|
||||||
|
|
||||||
CC=gcc
|
CC=gcc
|
||||||
CPPFLAGS = -I. -I$(JDK_INCLUDES) -I$(JDK_OS_INCLUDES)
|
CPPFLAGS = -I. -I$(JDK_INCLUDES) -I$(JDK_OS_INCLUDES)
|
||||||
CFLAGS += -D_UNICODE -Dwchar_t=short
|
CFLAGS += -D_UNICODE -Dwchar_t=short
|
||||||
|
|
||||||
INSTALL_DIR = ../os/$(OS)/$(ARCH)
|
INSTALL_DIR = ../os/$(OS)/$(ARCH)
|
||||||
|
|
||||||
LIB_NAME_SPAWNER = spawner.dll
|
LIB_NAME_SPAWNER = spawner.dll
|
||||||
LIB_NAME_FULL_SPAWNER = $(INSTALL_DIR)/spawner.dll
|
LIB_NAME_FULL_SPAWNER = $(INSTALL_DIR)/spawner.dll
|
||||||
OBJS_SPAWNER=StdAfx.o Win32ProcessEx.o iostream.o raise.o spawner.o
|
OBJS_SPAWNER=StdAfx.o Win32ProcessEx.o iostream.o raise.o spawner.o
|
||||||
|
|
||||||
OBJS = $(OBJS_SPAWNER)
|
OBJS = $(OBJS_SPAWNER)
|
||||||
|
|
||||||
all: $(LIB_NAME_FULL_SPAWNER)
|
all: $(LIB_NAME_FULL_SPAWNER)
|
||||||
|
|
||||||
rebuild: clean all
|
rebuild: clean all
|
||||||
|
|
||||||
$(LIB_NAME_FULL_SPAWNER) : $(OBJS_SPAWNER)
|
$(LIB_NAME_FULL_SPAWNER) : $(OBJS_SPAWNER)
|
||||||
mkdir -p $(INSTALL_DIR)
|
mkdir -p $(INSTALL_DIR)
|
||||||
$(CC) -Wl,--kill-at -g -shared -o $(LIB_NAME_FULL_SPAWNER) $(OBJS_SPAWNER)
|
$(CC) -Wl,--kill-at -g -shared -o $(LIB_NAME_FULL_SPAWNER) $(OBJS_SPAWNER)
|
||||||
|
|
||||||
clean :
|
clean :
|
||||||
$(RM) $(OBJS_SPAWNER) $(LIB_NAME_FULL_SPAWNER)
|
$(RM) $(OBJS_SPAWNER) $(LIB_NAME_FULL_SPAWNER)
|
||||||
|
|
|
@ -1,71 +1,71 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2002 - 2005 QNX Software Systems and others.
|
* Copyright (c) 2002 - 2005 QNX Software Systems and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
* http://www.eclipse.org/legal/epl-v10.html
|
* http://www.eclipse.org/legal/epl-v10.html
|
||||||
*
|
*
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* QNX Software Systems - initial API and implementation
|
* QNX Software Systems - initial API and implementation
|
||||||
*
|
*
|
||||||
* Spawner.h
|
* Spawner.h
|
||||||
*
|
*
|
||||||
* This is a part of JNI implementation of spawner
|
* This is a part of JNI implementation of spawner
|
||||||
***********************************************************************/
|
***********************************************************************/
|
||||||
/* DO NOT EDIT THIS FILE - it is machine generated */
|
/* DO NOT EDIT THIS FILE - it is machine generated */
|
||||||
#include <jni.h>
|
#include <jni.h>
|
||||||
/* Header for class org_eclipse_cdt_utils_spawner_Spawner */
|
/* Header for class org_eclipse_cdt_utils_spawner_Spawner */
|
||||||
|
|
||||||
#ifndef _Included_org_eclipse_cdt_utils_spawner_Spawner
|
#ifndef _Included_org_eclipse_cdt_utils_spawner_Spawner
|
||||||
#define _Included_org_eclipse_cdt_utils_spawner_Spawner
|
#define _Included_org_eclipse_cdt_utils_spawner_Spawner
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
/*
|
/*
|
||||||
* Class: org_eclipse_cdt_utils_spawner_Spawner
|
* Class: org_eclipse_cdt_utils_spawner_Spawner
|
||||||
* Method: exec0
|
* Method: exec0
|
||||||
* Signature: ([Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[I)I
|
* Signature: ([Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[I)I
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_exec0
|
JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_exec0
|
||||||
(JNIEnv *, jobject, jobjectArray, jobjectArray, jstring, jintArray);
|
(JNIEnv *, jobject, jobjectArray, jobjectArray, jstring, jintArray);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Class: org_eclipse_cdt_utils_spawner_Spawner
|
* Class: org_eclipse_cdt_utils_spawner_Spawner
|
||||||
* Method: exec1
|
* Method: exec1
|
||||||
* Signature: ([Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)I
|
* Signature: ([Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)I
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_exec1
|
JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_exec1
|
||||||
(JNIEnv *, jobject, jobjectArray, jobjectArray, jstring);
|
(JNIEnv *, jobject, jobjectArray, jobjectArray, jstring);
|
||||||
|
|
||||||
JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_exec2
|
JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_exec2
|
||||||
(JNIEnv * env, jobject process, jobjectArray cmdarray, jobjectArray envp, jstring dir, jintArray channels, jstring slaveName, jint fdm);
|
(JNIEnv * env, jobject process, jobjectArray cmdarray, jobjectArray envp, jstring dir, jintArray channels, jstring slaveName, jint fdm);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Class: org_eclipse_cdt_utils_spawner_Spawner
|
* Class: org_eclipse_cdt_utils_spawner_Spawner
|
||||||
* Method: raise
|
* Method: raise
|
||||||
* Signature: (II)I
|
* Signature: (II)I
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_raise
|
JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_raise
|
||||||
(JNIEnv *, jobject, jint, jint);
|
(JNIEnv *, jobject, jint, jint);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Class: org_eclipse_cdt_utils_spawner_Spawner
|
* Class: org_eclipse_cdt_utils_spawner_Spawner
|
||||||
* Method: waitFor
|
* Method: waitFor
|
||||||
* Signature: (I)I
|
* Signature: (I)I
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_waitFor
|
JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_waitFor
|
||||||
(JNIEnv *, jobject, jint);
|
(JNIEnv *, jobject, jint);
|
||||||
|
|
||||||
// #define DEBUG_MONITOR
|
// #define DEBUG_MONITOR
|
||||||
|
|
||||||
int interruptProcess(int pid);
|
int interruptProcess(int pid);
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// #define DEBUG_MONITOR
|
// #define DEBUG_MONITOR
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,47 +1,47 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2002 - 2005 QNX Software Systems and others.
|
* Copyright (c) 2002 - 2005 QNX Software Systems and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
* http://www.eclipse.org/legal/epl-v10.html
|
* http://www.eclipse.org/legal/epl-v10.html
|
||||||
*
|
*
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* QNX Software Systems - initial API and implementation
|
* QNX Software Systems - initial API and implementation
|
||||||
*
|
*
|
||||||
* SpawnerInputStream.h
|
* SpawnerInputStream.h
|
||||||
*
|
*
|
||||||
* This is a part of JNI implementation of spawner
|
* This is a part of JNI implementation of spawner
|
||||||
***********************************************************************/
|
***********************************************************************/
|
||||||
|
|
||||||
/* DO NOT EDIT THIS FILE - it is machine generated */
|
/* DO NOT EDIT THIS FILE - it is machine generated */
|
||||||
#include <jni.h>
|
#include <jni.h>
|
||||||
/* Header for class com_qnx_tools_utils_spawner_SpawnerInputStream */
|
/* Header for class com_qnx_tools_utils_spawner_SpawnerInputStream */
|
||||||
|
|
||||||
#ifndef _Included_com_qnx_tools_utils_spawner_SpawnerInputStream
|
#ifndef _Included_com_qnx_tools_utils_spawner_SpawnerInputStream
|
||||||
#define _Included_com_qnx_tools_utils_spawner_SpawnerInputStream
|
#define _Included_com_qnx_tools_utils_spawner_SpawnerInputStream
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
#undef com_qnx_tools_utils_spawner_SpawnerInputStream_SKIP_BUFFER_SIZE
|
#undef com_qnx_tools_utils_spawner_SpawnerInputStream_SKIP_BUFFER_SIZE
|
||||||
#define com_qnx_tools_utils_spawner_SpawnerInputStream_SKIP_BUFFER_SIZE 2048L
|
#define com_qnx_tools_utils_spawner_SpawnerInputStream_SKIP_BUFFER_SIZE 2048L
|
||||||
/* Inaccessible static: skipBuffer */
|
/* Inaccessible static: skipBuffer */
|
||||||
/*
|
/*
|
||||||
* Class: com_qnx_tools_utils_spawner_SpawnerInputStream
|
* Class: com_qnx_tools_utils_spawner_SpawnerInputStream
|
||||||
* Method: read0
|
* Method: read0
|
||||||
* Signature: (I[BI)I
|
* Signature: (I[BI)I
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jint JNICALL Java_com_qnx_tools_utils_spawner_SpawnerInputStream_read0
|
JNIEXPORT jint JNICALL Java_com_qnx_tools_utils_spawner_SpawnerInputStream_read0
|
||||||
(JNIEnv *, jobject, jint, jbyteArray, jint);
|
(JNIEnv *, jobject, jint, jbyteArray, jint);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Class: com_qnx_tools_utils_spawner_SpawnerInputStream
|
* Class: com_qnx_tools_utils_spawner_SpawnerInputStream
|
||||||
* Method: close0
|
* Method: close0
|
||||||
* Signature: (I)I
|
* Signature: (I)I
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jint JNICALL Java_com_qnx_tools_utils_spawner_SpawnerInputStream_close0
|
JNIEXPORT jint JNICALL Java_com_qnx_tools_utils_spawner_SpawnerInputStream_close0
|
||||||
(JNIEnv *, jobject, jint);
|
(JNIEnv *, jobject, jint);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,43 +1,43 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2002 - 2005 QNX Software Systems and others.
|
* Copyright (c) 2002 - 2005 QNX Software Systems and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
* http://www.eclipse.org/legal/epl-v10.html
|
* http://www.eclipse.org/legal/epl-v10.html
|
||||||
*
|
*
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* QNX Software Systems - initial API and implementation
|
* QNX Software Systems - initial API and implementation
|
||||||
*
|
*
|
||||||
* SpawnerOutputStream.h
|
* SpawnerOutputStream.h
|
||||||
*
|
*
|
||||||
* This is a part of JNI implementation of spawner
|
* This is a part of JNI implementation of spawner
|
||||||
***********************************************************************/
|
***********************************************************************/
|
||||||
/* DO NOT EDIT THIS FILE - it is machine generated */
|
/* DO NOT EDIT THIS FILE - it is machine generated */
|
||||||
#include <jni.h>
|
#include <jni.h>
|
||||||
/* Header for class com_qnx_tools_utils_spawner_SpawnerOutputStream */
|
/* Header for class com_qnx_tools_utils_spawner_SpawnerOutputStream */
|
||||||
|
|
||||||
#ifndef _Included_com_qnx_tools_utils_spawner_SpawnerOutputStream
|
#ifndef _Included_com_qnx_tools_utils_spawner_SpawnerOutputStream
|
||||||
#define _Included_com_qnx_tools_utils_spawner_SpawnerOutputStream
|
#define _Included_com_qnx_tools_utils_spawner_SpawnerOutputStream
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
/*
|
/*
|
||||||
* Class: com_qnx_tools_utils_spawner_SpawnerOutputStream
|
* Class: com_qnx_tools_utils_spawner_SpawnerOutputStream
|
||||||
* Method: write0
|
* Method: write0
|
||||||
* Signature: (I[BI)I
|
* Signature: (I[BI)I
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jint JNICALL Java_com_qnx_tools_utils_spawner_SpawnerOutputStream_write0
|
JNIEXPORT jint JNICALL Java_com_qnx_tools_utils_spawner_SpawnerOutputStream_write0
|
||||||
(JNIEnv *, jobject, jint, jbyteArray, jint);
|
(JNIEnv *, jobject, jint, jbyteArray, jint);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Class: com_qnx_tools_utils_spawner_SpawnerOutputStream
|
* Class: com_qnx_tools_utils_spawner_SpawnerOutputStream
|
||||||
* Method: close0
|
* Method: close0
|
||||||
* Signature: (I)I
|
* Signature: (I)I
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jint JNICALL Java_com_qnx_tools_utils_spawner_SpawnerOutputStream_close0
|
JNIEXPORT jint JNICALL Java_com_qnx_tools_utils_spawner_SpawnerOutputStream_close0
|
||||||
(JNIEnv *, jobject, jint);
|
(JNIEnv *, jobject, jint);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,22 +1,22 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2002 - 2005 QNX Software Systems and others.
|
* Copyright (c) 2002 - 2005 QNX Software Systems and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
* http://www.eclipse.org/legal/epl-v10.html
|
* http://www.eclipse.org/legal/epl-v10.html
|
||||||
*
|
*
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* QNX Software Systems - initial API and implementation
|
* QNX Software Systems - initial API and implementation
|
||||||
*
|
*
|
||||||
* StdAfx.c
|
* StdAfx.c
|
||||||
*
|
*
|
||||||
* This is a part of JNI implementation of spawner
|
* This is a part of JNI implementation of spawner
|
||||||
***********************************************************************/
|
***********************************************************************/
|
||||||
// stdafx.cpp : source file that includes just the standard includes
|
// stdafx.cpp : source file that includes just the standard includes
|
||||||
// spawner.pch will be the pre-compiled header
|
// spawner.pch will be the pre-compiled header
|
||||||
// stdafx.obj will contain the pre-compiled type information
|
// stdafx.obj will contain the pre-compiled type information
|
||||||
|
|
||||||
#include "stdafx.h"
|
#include "stdafx.h"
|
||||||
|
|
||||||
// TODO: reference any additional headers you need in STDAFX.H
|
// TODO: reference any additional headers you need in STDAFX.H
|
||||||
// and not in this file
|
// and not in this file
|
||||||
|
|
|
@ -1,41 +1,41 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2002 - 2005 QNX Software Systems and others.
|
* Copyright (c) 2002 - 2005 QNX Software Systems and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
* http://www.eclipse.org/legal/epl-v10.html
|
* http://www.eclipse.org/legal/epl-v10.html
|
||||||
*
|
*
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* QNX Software Systems - initial API and implementation
|
* QNX Software Systems - initial API and implementation
|
||||||
*
|
*
|
||||||
* StdAfx.h
|
* StdAfx.h
|
||||||
*
|
*
|
||||||
* This is a part of JNI implementation of spawner
|
* This is a part of JNI implementation of spawner
|
||||||
***********************************************************************/
|
***********************************************************************/
|
||||||
|
|
||||||
// stdafx.h : include file for standard system include files,
|
// stdafx.h : include file for standard system include files,
|
||||||
// or project specific include files that are used frequently, but
|
// or project specific include files that are used frequently, but
|
||||||
// are changed infrequently
|
// are changed infrequently
|
||||||
//
|
//
|
||||||
|
|
||||||
#if !defined(AFX_STDAFX_H__9D84F180_36E5_47D6_96AB_22723242789C__INCLUDED_)
|
#if !defined(AFX_STDAFX_H__9D84F180_36E5_47D6_96AB_22723242789C__INCLUDED_)
|
||||||
#define AFX_STDAFX_H__9D84F180_36E5_47D6_96AB_22723242789C__INCLUDED_
|
#define AFX_STDAFX_H__9D84F180_36E5_47D6_96AB_22723242789C__INCLUDED_
|
||||||
|
|
||||||
#if _MSC_VER > 1000
|
#if _MSC_VER > 1000
|
||||||
#pragma once
|
#pragma once
|
||||||
#endif // _MSC_VER > 1000
|
#endif // _MSC_VER > 1000
|
||||||
|
|
||||||
|
|
||||||
// Insert your headers here
|
// Insert your headers here
|
||||||
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
|
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
|
||||||
|
|
||||||
#include <tchar.h>
|
#include <tchar.h>
|
||||||
|
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
|
|
||||||
// TODO: reference additional headers your program requires here
|
// TODO: reference additional headers your program requires here
|
||||||
|
|
||||||
//{{AFX_INSERT_LOCATION}}
|
//{{AFX_INSERT_LOCATION}}
|
||||||
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
|
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
|
||||||
|
|
||||||
#endif // !defined(AFX_STDAFX_H__9D84F180_36E5_47D6_96AB_22723242789C__INCLUDED_)
|
#endif // !defined(AFX_STDAFX_H__9D84F180_36E5_47D6_96AB_22723242789C__INCLUDED_)
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,245 +1,245 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2002, 2006 QNX Software Systems and others.
|
* Copyright (c) 2002, 2006 QNX Software Systems and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
* http://www.eclipse.org/legal/epl-v10.html
|
* http://www.eclipse.org/legal/epl-v10.html
|
||||||
*
|
*
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* QNX Software Systems - initial API and implementation
|
* QNX Software Systems - initial API and implementation
|
||||||
*
|
*
|
||||||
* raise.c
|
* raise.c
|
||||||
*
|
*
|
||||||
* This is a part of JNI implementation of spawner
|
* This is a part of JNI implementation of spawner
|
||||||
* Includes implementation of JNI methods (see Spawner.java)
|
* Includes implementation of JNI methods (see Spawner.java)
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
#include "stdafx.h"
|
#include "stdafx.h"
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include "spawner.h"
|
#include "spawner.h"
|
||||||
#include "SpawnerInputStream.h"
|
#include "SpawnerInputStream.h"
|
||||||
#include "SpawnerOutputStream.h"
|
#include "SpawnerOutputStream.h"
|
||||||
|
|
||||||
#include "jni.h"
|
#include "jni.h"
|
||||||
#include "io.h"
|
#include "io.h"
|
||||||
|
|
||||||
//#define READ_REPORT
|
//#define READ_REPORT
|
||||||
|
|
||||||
JNIEXPORT void JNICALL ThrowByName(JNIEnv *env, const char *name, const char *msg);
|
JNIEXPORT void JNICALL ThrowByName(JNIEnv *env, const char *name, const char *msg);
|
||||||
|
|
||||||
#define BUFF_SIZE (1024)
|
#define BUFF_SIZE (1024)
|
||||||
|
|
||||||
/* Inaccessible static: skipBuffer */
|
/* Inaccessible static: skipBuffer */
|
||||||
/*
|
/*
|
||||||
* Class: SpawnerInputStream
|
* Class: SpawnerInputStream
|
||||||
* Method: read0
|
* Method: read0
|
||||||
* Signature: (I)I
|
* Signature: (I)I
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_SpawnerInputStream_read0
|
JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_SpawnerInputStream_read0
|
||||||
(JNIEnv * env, jobject proc, jint fd, jbyteArray buf, jint len)
|
(JNIEnv * env, jobject proc, jint fd, jbyteArray buf, jint len)
|
||||||
{
|
{
|
||||||
BYTE tmpBuf[BUFF_SIZE];
|
BYTE tmpBuf[BUFF_SIZE];
|
||||||
int nBuffOffset = 0;
|
int nBuffOffset = 0;
|
||||||
#ifdef DEBUG_MONITOR
|
#ifdef DEBUG_MONITOR
|
||||||
_TCHAR buffer[1000];
|
_TCHAR buffer[1000];
|
||||||
#endif
|
#endif
|
||||||
OVERLAPPED overlapped;
|
OVERLAPPED overlapped;
|
||||||
overlapped.Offset = 0;
|
overlapped.Offset = 0;
|
||||||
overlapped.OffsetHigh = 0;
|
overlapped.OffsetHigh = 0;
|
||||||
overlapped.hEvent = CreateEvent(NULL, // no security attribute
|
overlapped.hEvent = CreateEvent(NULL, // no security attribute
|
||||||
TRUE, // manual-reset event
|
TRUE, // manual-reset event
|
||||||
TRUE, // initial state = signaled
|
TRUE, // initial state = signaled
|
||||||
NULL); // unnamed event object
|
NULL); // unnamed event object
|
||||||
|
|
||||||
if(NULL == overlapped.hEvent) {
|
if(NULL == overlapped.hEvent) {
|
||||||
char * lpMsgBuf;
|
char * lpMsgBuf;
|
||||||
FormatMessage(
|
FormatMessage(
|
||||||
FORMAT_MESSAGE_ALLOCATE_BUFFER |
|
FORMAT_MESSAGE_ALLOCATE_BUFFER |
|
||||||
FORMAT_MESSAGE_FROM_SYSTEM |
|
FORMAT_MESSAGE_FROM_SYSTEM |
|
||||||
FORMAT_MESSAGE_IGNORE_INSERTS,
|
FORMAT_MESSAGE_IGNORE_INSERTS,
|
||||||
NULL,
|
NULL,
|
||||||
GetLastError(),
|
GetLastError(),
|
||||||
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
|
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
|
||||||
(char *) &lpMsgBuf,
|
(char *) &lpMsgBuf,
|
||||||
0,
|
0,
|
||||||
NULL
|
NULL
|
||||||
);
|
);
|
||||||
|
|
||||||
ThrowByName(env, "java/io/IOException", lpMsgBuf);
|
ThrowByName(env, "java/io/IOException", lpMsgBuf);
|
||||||
// Free the buffer.
|
// Free the buffer.
|
||||||
LocalFree( lpMsgBuf );
|
LocalFree( lpMsgBuf );
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef DEBUG_MONITOR
|
#ifdef DEBUG_MONITOR
|
||||||
#ifdef READ_REPORT
|
#ifdef READ_REPORT
|
||||||
_stprintf(buffer, _T("Start read %i\n"), fd);
|
_stprintf(buffer, _T("Start read %i\n"), fd);
|
||||||
OutputDebugStringW(buffer);
|
OutputDebugStringW(buffer);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
while(len > nBuffOffset)
|
while(len > nBuffOffset)
|
||||||
{
|
{
|
||||||
DWORD nNumberOfBytesToRead = min(len - nBuffOffset, BUFF_SIZE);
|
DWORD nNumberOfBytesToRead = min(len - nBuffOffset, BUFF_SIZE);
|
||||||
DWORD nNumberOfBytesRead;
|
DWORD nNumberOfBytesRead;
|
||||||
if(0 == ReadFile((HANDLE)fd, tmpBuf, nNumberOfBytesToRead, &nNumberOfBytesRead, &overlapped ))
|
if(0 == ReadFile((HANDLE)fd, tmpBuf, nNumberOfBytesToRead, &nNumberOfBytesRead, &overlapped ))
|
||||||
{
|
{
|
||||||
int err = GetLastError();
|
int err = GetLastError();
|
||||||
|
|
||||||
if(err == ERROR_IO_PENDING)
|
if(err == ERROR_IO_PENDING)
|
||||||
{
|
{
|
||||||
// asynchronous i/o is still in progress
|
// asynchronous i/o is still in progress
|
||||||
// check on the results of the asynchronous read
|
// check on the results of the asynchronous read
|
||||||
if(GetOverlappedResult((HANDLE)fd, &overlapped,
|
if(GetOverlappedResult((HANDLE)fd, &overlapped,
|
||||||
&nNumberOfBytesRead, TRUE))
|
&nNumberOfBytesRead, TRUE))
|
||||||
err = 0;
|
err = 0;
|
||||||
// if there was a problem ...
|
// if there was a problem ...
|
||||||
else
|
else
|
||||||
err = GetLastError();
|
err = GetLastError();
|
||||||
}
|
}
|
||||||
if(err == ERROR_BROKEN_PIPE) // Pipe was closed
|
if(err == ERROR_BROKEN_PIPE) // Pipe was closed
|
||||||
break;
|
break;
|
||||||
if(err != 0)
|
if(err != 0)
|
||||||
{
|
{
|
||||||
char * lpMsgBuf;
|
char * lpMsgBuf;
|
||||||
#ifdef DEBUG_MONITOR
|
#ifdef DEBUG_MONITOR
|
||||||
_stprintf(buffer, _T("Read failed - %i, error %i\n"), fd, err);
|
_stprintf(buffer, _T("Read failed - %i, error %i\n"), fd, err);
|
||||||
OutputDebugStringW(buffer);
|
OutputDebugStringW(buffer);
|
||||||
#endif
|
#endif
|
||||||
if(err != ERROR_MORE_DATA) // Otherwise error means just that there are more data
|
if(err != ERROR_MORE_DATA) // Otherwise error means just that there are more data
|
||||||
{ // than buffer can accept
|
{ // than buffer can accept
|
||||||
FormatMessage(
|
FormatMessage(
|
||||||
FORMAT_MESSAGE_ALLOCATE_BUFFER |
|
FORMAT_MESSAGE_ALLOCATE_BUFFER |
|
||||||
FORMAT_MESSAGE_FROM_SYSTEM |
|
FORMAT_MESSAGE_FROM_SYSTEM |
|
||||||
FORMAT_MESSAGE_IGNORE_INSERTS,
|
FORMAT_MESSAGE_IGNORE_INSERTS,
|
||||||
NULL,
|
NULL,
|
||||||
err,
|
err,
|
||||||
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
|
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
|
||||||
(char *) &lpMsgBuf,
|
(char *) &lpMsgBuf,
|
||||||
0,
|
0,
|
||||||
NULL
|
NULL
|
||||||
);
|
);
|
||||||
|
|
||||||
ThrowByName(env, "java/io/IOException", lpMsgBuf);
|
ThrowByName(env, "java/io/IOException", lpMsgBuf);
|
||||||
LocalFree( lpMsgBuf );
|
LocalFree( lpMsgBuf );
|
||||||
nBuffOffset = 0;
|
nBuffOffset = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(nNumberOfBytesRead > 0)
|
if(nNumberOfBytesRead > 0)
|
||||||
(*env) -> SetByteArrayRegion(env, buf, nBuffOffset, nNumberOfBytesRead, tmpBuf);
|
(*env) -> SetByteArrayRegion(env, buf, nBuffOffset, nNumberOfBytesRead, tmpBuf);
|
||||||
else
|
else
|
||||||
break;
|
break;
|
||||||
nBuffOffset += nNumberOfBytesRead;
|
nBuffOffset += nNumberOfBytesRead;
|
||||||
if(nNumberOfBytesRead != nNumberOfBytesToRead)
|
if(nNumberOfBytesRead != nNumberOfBytesToRead)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
CloseHandle(overlapped.hEvent);
|
CloseHandle(overlapped.hEvent);
|
||||||
#ifdef DEBUG_MONITOR
|
#ifdef DEBUG_MONITOR
|
||||||
#ifdef READ_REPORT
|
#ifdef READ_REPORT
|
||||||
_stprintf(buffer, _T("End read %i\n"), fd);
|
_stprintf(buffer, _T("End read %i\n"), fd);
|
||||||
OutputDebugStringW(buffer);
|
OutputDebugStringW(buffer);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
return nBuffOffset; // This is a real full readed length
|
return nBuffOffset; // This is a real full readed length
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Class: SpawnerInputStream
|
* Class: SpawnerInputStream
|
||||||
* Method: close0
|
* Method: close0
|
||||||
* Signature: (I)I
|
* Signature: (I)I
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_SpawnerInputStream_close0
|
JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_SpawnerInputStream_close0
|
||||||
(JNIEnv * env, jobject proc, jint fd)
|
(JNIEnv * env, jobject proc, jint fd)
|
||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
#ifdef DEBUG_MONITOR
|
#ifdef DEBUG_MONITOR
|
||||||
_TCHAR buffer[1000];
|
_TCHAR buffer[1000];
|
||||||
_stprintf(buffer, _T("Close %i\n"), fd);
|
_stprintf(buffer, _T("Close %i\n"), fd);
|
||||||
OutputDebugStringW(buffer);
|
OutputDebugStringW(buffer);
|
||||||
#endif
|
#endif
|
||||||
DisconnectNamedPipe((HANDLE)fd);
|
DisconnectNamedPipe((HANDLE)fd);
|
||||||
rc = (CloseHandle((HANDLE)fd) ? 0 : -1);
|
rc = (CloseHandle((HANDLE)fd) ? 0 : -1);
|
||||||
#ifdef DEBUG_MONITOR
|
#ifdef DEBUG_MONITOR
|
||||||
_stprintf(buffer, _T("Closed %i\n"), fd);
|
_stprintf(buffer, _T("Closed %i\n"), fd);
|
||||||
OutputDebugStringW(buffer);
|
OutputDebugStringW(buffer);
|
||||||
#endif
|
#endif
|
||||||
return (rc ? GetLastError() : 0);
|
return (rc ? GetLastError() : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_SpawnerInputStream_available0
|
JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_SpawnerInputStream_available0
|
||||||
(JNIEnv * env, jobject proc, jint fd)
|
(JNIEnv * env, jobject proc, jint fd)
|
||||||
{
|
{
|
||||||
int nAvail = 0;
|
int nAvail = 0;
|
||||||
|
|
||||||
if (0 == PeekNamedPipe((HANDLE)fd, NULL, 0, NULL, &nAvail, NULL)) {
|
if (0 == PeekNamedPipe((HANDLE)fd, NULL, 0, NULL, &nAvail, NULL)) {
|
||||||
// error
|
// error
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return nAvail;
|
return nAvail;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Class: SpawnerOutputStream
|
* Class: SpawnerOutputStream
|
||||||
* Method: write0
|
* Method: write0
|
||||||
* Signature: (I[BI)I
|
* Signature: (I[BI)I
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_SpawnerOutputStream_write0
|
JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_SpawnerOutputStream_write0
|
||||||
(JNIEnv * env, jobject proc, jint fd, jbyteArray buf, jint len)
|
(JNIEnv * env, jobject proc, jint fd, jbyteArray buf, jint len)
|
||||||
{
|
{
|
||||||
BYTE tmpBuf[BUFF_SIZE];
|
BYTE tmpBuf[BUFF_SIZE];
|
||||||
int nBuffOffset = 0;
|
int nBuffOffset = 0;
|
||||||
|
|
||||||
|
|
||||||
while(len > nBuffOffset)
|
while(len > nBuffOffset)
|
||||||
{
|
{
|
||||||
DWORD nNumberOfBytesToWrite = min(len - nBuffOffset, BUFF_SIZE);
|
DWORD nNumberOfBytesToWrite = min(len - nBuffOffset, BUFF_SIZE);
|
||||||
DWORD nNumberOfBytesWritten;
|
DWORD nNumberOfBytesWritten;
|
||||||
(*env) -> GetByteArrayRegion(env, buf, nBuffOffset, nNumberOfBytesToWrite, tmpBuf);
|
(*env) -> GetByteArrayRegion(env, buf, nBuffOffset, nNumberOfBytesToWrite, tmpBuf);
|
||||||
if(0 == WriteFile((HANDLE)fd, tmpBuf, nNumberOfBytesToWrite, &nNumberOfBytesWritten, NULL))
|
if(0 == WriteFile((HANDLE)fd, tmpBuf, nNumberOfBytesToWrite, &nNumberOfBytesWritten, NULL))
|
||||||
{
|
{
|
||||||
char * lpMsgBuf;
|
char * lpMsgBuf;
|
||||||
FormatMessage(
|
FormatMessage(
|
||||||
FORMAT_MESSAGE_ALLOCATE_BUFFER |
|
FORMAT_MESSAGE_ALLOCATE_BUFFER |
|
||||||
FORMAT_MESSAGE_FROM_SYSTEM |
|
FORMAT_MESSAGE_FROM_SYSTEM |
|
||||||
FORMAT_MESSAGE_IGNORE_INSERTS,
|
FORMAT_MESSAGE_IGNORE_INSERTS,
|
||||||
NULL,
|
NULL,
|
||||||
GetLastError(),
|
GetLastError(),
|
||||||
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
|
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
|
||||||
(char *) &lpMsgBuf,
|
(char *) &lpMsgBuf,
|
||||||
0,
|
0,
|
||||||
NULL
|
NULL
|
||||||
);
|
);
|
||||||
|
|
||||||
ThrowByName(env, "java/io/IOException", lpMsgBuf);
|
ThrowByName(env, "java/io/IOException", lpMsgBuf);
|
||||||
LocalFree( lpMsgBuf );
|
LocalFree( lpMsgBuf );
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
nBuffOffset += nNumberOfBytesWritten;
|
nBuffOffset += nNumberOfBytesWritten;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Class: SpawnerOutputStream
|
* Class: SpawnerOutputStream
|
||||||
* Method: close0
|
* Method: close0
|
||||||
* Signature: (I)I
|
* Signature: (I)I
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_SpawnerOutputStream_close0
|
JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_SpawnerOutputStream_close0
|
||||||
(JNIEnv * env, jobject proc, jint fd)
|
(JNIEnv * env, jobject proc, jint fd)
|
||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
#ifdef DEBUG_MONITOR
|
#ifdef DEBUG_MONITOR
|
||||||
_TCHAR buffer[1000];
|
_TCHAR buffer[1000];
|
||||||
_stprintf(buffer, _T("Close %i\n"), fd);
|
_stprintf(buffer, _T("Close %i\n"), fd);
|
||||||
OutputDebugStringW(buffer);
|
OutputDebugStringW(buffer);
|
||||||
#endif
|
#endif
|
||||||
DisconnectNamedPipe((HANDLE)fd);
|
DisconnectNamedPipe((HANDLE)fd);
|
||||||
rc = (CloseHandle((HANDLE)fd) ? 0 : -1);
|
rc = (CloseHandle((HANDLE)fd) ? 0 : -1);
|
||||||
#ifdef DEBUG_MONITOR
|
#ifdef DEBUG_MONITOR
|
||||||
_stprintf(buffer, _T("Closed %i\n"), fd);
|
_stprintf(buffer, _T("Closed %i\n"), fd);
|
||||||
OutputDebugStringW(buffer);
|
OutputDebugStringW(buffer);
|
||||||
#endif
|
#endif
|
||||||
return (rc ? GetLastError() : 0);
|
return (rc ? GetLastError() : 0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,157 +1,157 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2002 - 2005 QNX Software Systems and others.
|
* Copyright (c) 2002 - 2005 QNX Software Systems and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
* http://www.eclipse.org/legal/epl-v10.html
|
* http://www.eclipse.org/legal/epl-v10.html
|
||||||
*
|
*
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* QNX Software Systems - initial API and implementation
|
* QNX Software Systems - initial API and implementation
|
||||||
*
|
*
|
||||||
* raise.c
|
* raise.c
|
||||||
*
|
*
|
||||||
* This is a part of JNI implementation of spawner
|
* This is a part of JNI implementation of spawner
|
||||||
***********************************************************************/
|
***********************************************************************/
|
||||||
#include "stdafx.h"
|
#include "stdafx.h"
|
||||||
#include "Spawner.h"
|
#include "Spawner.h"
|
||||||
|
|
||||||
|
|
||||||
#include "jni.h"
|
#include "jni.h"
|
||||||
|
|
||||||
extern void JNICALL ThrowByName(JNIEnv *env, const char *name, const char *msg);
|
extern void JNICALL ThrowByName(JNIEnv *env, const char *name, const char *msg);
|
||||||
|
|
||||||
|
|
||||||
static HWND consoleHWND;
|
static HWND consoleHWND;
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Check if window is a console of process with pid
|
// Check if window is a console of process with pid
|
||||||
// Arguments:
|
// Arguments:
|
||||||
// hwnd - window handler
|
// hwnd - window handler
|
||||||
// arg - process PID
|
// arg - process PID
|
||||||
// Return : TRUE if yes
|
// Return : TRUE if yes
|
||||||
/////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////
|
||||||
static BOOL CALLBACK
|
static BOOL CALLBACK
|
||||||
find_child_console (HWND hwnd, LPARAM arg)
|
find_child_console (HWND hwnd, LPARAM arg)
|
||||||
{
|
{
|
||||||
DWORD thread_id;
|
DWORD thread_id;
|
||||||
DWORD process_id;
|
DWORD process_id;
|
||||||
DWORD pid = arg;
|
DWORD pid = arg;
|
||||||
|
|
||||||
thread_id = GetWindowThreadProcessId (hwnd, &process_id);
|
thread_id = GetWindowThreadProcessId (hwnd, &process_id);
|
||||||
if (process_id == pid)
|
if (process_id == pid)
|
||||||
{
|
{
|
||||||
char window_class[32];
|
char window_class[32];
|
||||||
|
|
||||||
GetClassName (hwnd, window_class, sizeof (window_class));
|
GetClassName (hwnd, window_class, sizeof (window_class));
|
||||||
if (strcmp (window_class, "ConsoleWindowClass") == 0)
|
if (strcmp (window_class, "ConsoleWindowClass") == 0)
|
||||||
{
|
{
|
||||||
consoleHWND = hwnd;
|
consoleHWND = hwnd;
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* keep looking */
|
/* keep looking */
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Function implements interrupt process (Ctrl-C emulation)
|
// Function implements interrupt process (Ctrl-C emulation)
|
||||||
// Arguments:
|
// Arguments:
|
||||||
// pid - process' pid
|
// pid - process' pid
|
||||||
// Return : 0 if OK or error code
|
// Return : 0 if OK or error code
|
||||||
/////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////
|
||||||
int interruptProcess(int pid)
|
int interruptProcess(int pid)
|
||||||
{
|
{
|
||||||
#ifdef DEBUG_MONITOR
|
#ifdef DEBUG_MONITOR
|
||||||
_TCHAR buffer[1000];
|
_TCHAR buffer[1000];
|
||||||
#endif
|
#endif
|
||||||
int rc;
|
int rc;
|
||||||
// Try another method
|
// Try another method
|
||||||
rc = 0;
|
rc = 0;
|
||||||
consoleHWND = NULL;
|
consoleHWND = NULL;
|
||||||
|
|
||||||
#ifdef DEBUG_MONITOR
|
#ifdef DEBUG_MONITOR
|
||||||
_stprintf(buffer, _T("Try to interrupt process %i\n"), pid);
|
_stprintf(buffer, _T("Try to interrupt process %i\n"), pid);
|
||||||
OutputDebugStringW(buffer);
|
OutputDebugStringW(buffer);
|
||||||
#endif
|
#endif
|
||||||
// Find console
|
// Find console
|
||||||
EnumWindows (find_child_console, (LPARAM) pid);
|
EnumWindows (find_child_console, (LPARAM) pid);
|
||||||
|
|
||||||
if(NULL != consoleHWND) // Yes, we found out it
|
if(NULL != consoleHWND) // Yes, we found out it
|
||||||
{
|
{
|
||||||
// We are going to switch focus to console,
|
// We are going to switch focus to console,
|
||||||
// send Ctrl-C and then restore focus
|
// send Ctrl-C and then restore focus
|
||||||
BYTE control_scan_code = (BYTE) MapVirtualKey (VK_CONTROL, 0);
|
BYTE control_scan_code = (BYTE) MapVirtualKey (VK_CONTROL, 0);
|
||||||
/* Fake Ctrl-C for SIGINT, and Ctrl-Break for SIGQUIT. */
|
/* Fake Ctrl-C for SIGINT, and Ctrl-Break for SIGQUIT. */
|
||||||
BYTE vk_c_code = 'C';
|
BYTE vk_c_code = 'C';
|
||||||
BYTE vk_break_code = VK_CANCEL;
|
BYTE vk_break_code = VK_CANCEL;
|
||||||
BYTE c_scan_code = (BYTE) MapVirtualKey (vk_c_code, 0);
|
BYTE c_scan_code = (BYTE) MapVirtualKey (vk_c_code, 0);
|
||||||
BYTE break_scan_code = (BYTE) MapVirtualKey (vk_break_code, 0);
|
BYTE break_scan_code = (BYTE) MapVirtualKey (vk_break_code, 0);
|
||||||
HWND foreground_window;
|
HWND foreground_window;
|
||||||
|
|
||||||
|
|
||||||
foreground_window = GetForegroundWindow ();
|
foreground_window = GetForegroundWindow ();
|
||||||
if (foreground_window)
|
if (foreground_window)
|
||||||
{
|
{
|
||||||
/* NT 5.0, and apparently also Windows 98, will not allow
|
/* NT 5.0, and apparently also Windows 98, will not allow
|
||||||
a Window to be set to foreground directly without the
|
a Window to be set to foreground directly without the
|
||||||
user's involvement. The workaround is to attach
|
user's involvement. The workaround is to attach
|
||||||
ourselves to the thread that owns the foreground
|
ourselves to the thread that owns the foreground
|
||||||
window, since that is the only thread that can set the
|
window, since that is the only thread that can set the
|
||||||
foreground window. */
|
foreground window. */
|
||||||
DWORD foreground_thread, child_thread;
|
DWORD foreground_thread, child_thread;
|
||||||
foreground_thread =
|
foreground_thread =
|
||||||
GetWindowThreadProcessId (foreground_window, NULL);
|
GetWindowThreadProcessId (foreground_window, NULL);
|
||||||
if (foreground_thread == GetCurrentThreadId ()
|
if (foreground_thread == GetCurrentThreadId ()
|
||||||
|| !AttachThreadInput (GetCurrentThreadId (),
|
|| !AttachThreadInput (GetCurrentThreadId (),
|
||||||
foreground_thread, TRUE))
|
foreground_thread, TRUE))
|
||||||
foreground_thread = 0;
|
foreground_thread = 0;
|
||||||
|
|
||||||
child_thread = GetWindowThreadProcessId (consoleHWND, NULL);
|
child_thread = GetWindowThreadProcessId (consoleHWND, NULL);
|
||||||
if (child_thread == GetCurrentThreadId ()
|
if (child_thread == GetCurrentThreadId ()
|
||||||
|| !AttachThreadInput (GetCurrentThreadId (),
|
|| !AttachThreadInput (GetCurrentThreadId (),
|
||||||
child_thread, TRUE))
|
child_thread, TRUE))
|
||||||
child_thread = 0;
|
child_thread = 0;
|
||||||
|
|
||||||
/* Set the foreground window to the child. */
|
/* Set the foreground window to the child. */
|
||||||
if (SetForegroundWindow (consoleHWND))
|
if (SetForegroundWindow (consoleHWND))
|
||||||
{
|
{
|
||||||
if(0 != break_scan_code) {
|
if(0 != break_scan_code) {
|
||||||
/* Generate keystrokes as if user had typed Ctrl-Break */
|
/* Generate keystrokes as if user had typed Ctrl-Break */
|
||||||
keybd_event (VK_CONTROL, control_scan_code, 0, 0);
|
keybd_event (VK_CONTROL, control_scan_code, 0, 0);
|
||||||
keybd_event (vk_break_code, break_scan_code, KEYEVENTF_EXTENDEDKEY, 0);
|
keybd_event (vk_break_code, break_scan_code, KEYEVENTF_EXTENDEDKEY, 0);
|
||||||
keybd_event (vk_break_code, break_scan_code,
|
keybd_event (vk_break_code, break_scan_code,
|
||||||
KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
|
KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
|
||||||
keybd_event (VK_CONTROL, control_scan_code, KEYEVENTF_KEYUP, 0);
|
keybd_event (VK_CONTROL, control_scan_code, KEYEVENTF_KEYUP, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Sleep for a bit to give time for respond */
|
/* Sleep for a bit to give time for respond */
|
||||||
Sleep (100);
|
Sleep (100);
|
||||||
|
|
||||||
SetForegroundWindow (foreground_window);
|
SetForegroundWindow (foreground_window);
|
||||||
}
|
}
|
||||||
/* Detach from the foreground and child threads now that
|
/* Detach from the foreground and child threads now that
|
||||||
the foreground switching is over. */
|
the foreground switching is over. */
|
||||||
if (foreground_thread)
|
if (foreground_thread)
|
||||||
AttachThreadInput (GetCurrentThreadId (),
|
AttachThreadInput (GetCurrentThreadId (),
|
||||||
foreground_thread, FALSE);
|
foreground_thread, FALSE);
|
||||||
if (child_thread)
|
if (child_thread)
|
||||||
AttachThreadInput (GetCurrentThreadId (),
|
AttachThreadInput (GetCurrentThreadId (),
|
||||||
child_thread, FALSE);
|
child_thread, FALSE);
|
||||||
#ifdef DEBUG_MONITOR
|
#ifdef DEBUG_MONITOR
|
||||||
_stprintf(buffer, _T("Sent Ctrl-C & Ctrl-Break to process %i\n"), pid);
|
_stprintf(buffer, _T("Sent Ctrl-C & Ctrl-Break to process %i\n"), pid);
|
||||||
OutputDebugStringW(buffer);
|
OutputDebugStringW(buffer);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef DEBUG_MONITOR
|
#ifdef DEBUG_MONITOR
|
||||||
else {
|
else {
|
||||||
_stprintf(buffer, _T("Cannot find console for process %i\n"), pid);
|
_stprintf(buffer, _T("Cannot find console for process %i\n"), pid);
|
||||||
OutputDebugStringW(buffer);
|
OutputDebugStringW(buffer);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,54 +1,54 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2002 - 2005 QNX Software Systems and others.
|
* Copyright (c) 2002 - 2005 QNX Software Systems and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
* http://www.eclipse.org/legal/epl-v10.html
|
* http://www.eclipse.org/legal/epl-v10.html
|
||||||
*
|
*
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* QNX Software Systems - initial API and implementation
|
* QNX Software Systems - initial API and implementation
|
||||||
*
|
*
|
||||||
* spawner.c
|
* spawner.c
|
||||||
*
|
*
|
||||||
* This is a part of JNI implementation of spawner
|
* This is a part of JNI implementation of spawner
|
||||||
***********************************************************************/
|
***********************************************************************/
|
||||||
|
|
||||||
#include "stdafx.h"
|
#include "stdafx.h"
|
||||||
#include "spawner.h"
|
#include "spawner.h"
|
||||||
|
|
||||||
|
|
||||||
CRITICAL_SECTION cs;
|
CRITICAL_SECTION cs;
|
||||||
|
|
||||||
|
|
||||||
_TCHAR path[MAX_PATH + 1] = {_T('\0') }; // Directory where spawner.dll is located
|
_TCHAR path[MAX_PATH + 1] = {_T('\0') }; // Directory where spawner.dll is located
|
||||||
|
|
||||||
|
|
||||||
BOOL APIENTRY DllMain( HANDLE hModule,
|
BOOL APIENTRY DllMain( HANDLE hModule,
|
||||||
DWORD ul_reason_for_call,
|
DWORD ul_reason_for_call,
|
||||||
LPVOID lpReserved
|
LPVOID lpReserved
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
switch (ul_reason_for_call)
|
switch (ul_reason_for_call)
|
||||||
{
|
{
|
||||||
case DLL_PROCESS_ATTACH:
|
case DLL_PROCESS_ATTACH:
|
||||||
{
|
{
|
||||||
_TCHAR * p;
|
_TCHAR * p;
|
||||||
InitializeCriticalSection(&cs);
|
InitializeCriticalSection(&cs);
|
||||||
GetModuleFileNameW(hModule, path, MAX_PATH);
|
GetModuleFileNameW(hModule, path, MAX_PATH);
|
||||||
p = _tcsrchr(path, _T('\\'));
|
p = _tcsrchr(path, _T('\\'));
|
||||||
if(NULL != p)
|
if(NULL != p)
|
||||||
*(p + 1) = _T('\0');
|
*(p + 1) = _T('\0');
|
||||||
else
|
else
|
||||||
_tcscat(path, L"\\");
|
_tcscat(path, L"\\");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case DLL_THREAD_ATTACH:
|
case DLL_THREAD_ATTACH:
|
||||||
case DLL_THREAD_DETACH:
|
case DLL_THREAD_DETACH:
|
||||||
break;
|
break;
|
||||||
case DLL_PROCESS_DETACH:
|
case DLL_PROCESS_DETACH:
|
||||||
DeleteCriticalSection(&cs);
|
DeleteCriticalSection(&cs);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,18 +1,18 @@
|
||||||
# Microsoft Developer Studio Generated Dependency File, included by spawner.mak
|
# Microsoft Developer Studio Generated Dependency File, included by spawner.mak
|
||||||
|
|
||||||
.\iostream.c : \
|
.\iostream.c : \
|
||||||
"$(JAVA_HOME)\include\jni.h"\
|
"$(JAVA_HOME)\include\jni.h"\
|
||||||
"$(JAVA_HOME)\include\win32\jni_md.h"\
|
"$(JAVA_HOME)\include\win32\jni_md.h"\
|
||||||
".\SpawnerInputStream.h"\
|
".\SpawnerInputStream.h"\
|
||||||
".\SpawnerOutputStream.h"\
|
".\SpawnerOutputStream.h"\
|
||||||
|
|
||||||
|
|
||||||
.\StdAfx.c : \
|
.\StdAfx.c : \
|
||||||
".\StdAfx.h"\
|
".\StdAfx.h"\
|
||||||
|
|
||||||
|
|
||||||
.\Win32ProcessEx.c : \
|
.\Win32ProcessEx.c : \
|
||||||
"$(JAVA_HOME)\include\jni.h"\
|
"$(JAVA_HOME)\include\jni.h"\
|
||||||
"$(JAVA_HOME)\include\win32\jni_md.h"\
|
"$(JAVA_HOME)\include\win32\jni_md.h"\
|
||||||
".\Spawner.h"\
|
".\Spawner.h"\
|
||||||
|
|
||||||
|
|
|
@ -1,181 +1,181 @@
|
||||||
# Microsoft Developer Studio Project File - Name="spawner" - Package Owner=<4>
|
# Microsoft Developer Studio Project File - Name="spawner" - Package Owner=<4>
|
||||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||||
# ** DO NOT EDIT **
|
# ** DO NOT EDIT **
|
||||||
|
|
||||||
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
|
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
|
||||||
|
|
||||||
CFG=spawner - Win32 Debug
|
CFG=spawner - Win32 Debug
|
||||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||||
!MESSAGE use the Export Makefile command and run
|
!MESSAGE use the Export Makefile command and run
|
||||||
!MESSAGE
|
!MESSAGE
|
||||||
!MESSAGE NMAKE /f "spawner.mak".
|
!MESSAGE NMAKE /f "spawner.mak".
|
||||||
!MESSAGE
|
!MESSAGE
|
||||||
!MESSAGE You can specify a configuration when running NMAKE
|
!MESSAGE You can specify a configuration when running NMAKE
|
||||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||||
!MESSAGE
|
!MESSAGE
|
||||||
!MESSAGE NMAKE /f "spawner.mak" CFG="spawner - Win32 Debug"
|
!MESSAGE NMAKE /f "spawner.mak" CFG="spawner - Win32 Debug"
|
||||||
!MESSAGE
|
!MESSAGE
|
||||||
!MESSAGE Possible choices for configuration are:
|
!MESSAGE Possible choices for configuration are:
|
||||||
!MESSAGE
|
!MESSAGE
|
||||||
!MESSAGE "spawner - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
|
!MESSAGE "spawner - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
|
||||||
!MESSAGE "spawner - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
|
!MESSAGE "spawner - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
|
||||||
!MESSAGE
|
!MESSAGE
|
||||||
|
|
||||||
# Begin Project
|
# Begin Project
|
||||||
# PROP AllowPerConfigDependencies 0
|
# PROP AllowPerConfigDependencies 0
|
||||||
# PROP Scc_ProjName ""
|
# PROP Scc_ProjName ""
|
||||||
# PROP Scc_LocalPath ""
|
# PROP Scc_LocalPath ""
|
||||||
CPP=cl.exe
|
CPP=cl.exe
|
||||||
MTL=midl.exe
|
MTL=midl.exe
|
||||||
RSC=rc.exe
|
RSC=rc.exe
|
||||||
|
|
||||||
!IF "$(CFG)" == "spawner - Win32 Release"
|
!IF "$(CFG)" == "spawner - Win32 Release"
|
||||||
|
|
||||||
# PROP BASE Use_MFC 0
|
# PROP BASE Use_MFC 0
|
||||||
# PROP BASE Use_Debug_Libraries 0
|
# PROP BASE Use_Debug_Libraries 0
|
||||||
# PROP BASE Output_Dir "Release"
|
# PROP BASE Output_Dir "Release"
|
||||||
# PROP BASE Intermediate_Dir "Release"
|
# PROP BASE Intermediate_Dir "Release"
|
||||||
# PROP BASE Target_Dir ""
|
# PROP BASE Target_Dir ""
|
||||||
# PROP Use_MFC 0
|
# PROP Use_MFC 0
|
||||||
# PROP Use_Debug_Libraries 0
|
# PROP Use_Debug_Libraries 0
|
||||||
# PROP Output_Dir "Release"
|
# PROP Output_Dir "Release"
|
||||||
# PROP Intermediate_Dir "Release"
|
# PROP Intermediate_Dir "Release"
|
||||||
# PROP Ignore_Export_Lib 0
|
# PROP Ignore_Export_Lib 0
|
||||||
# PROP Target_Dir ""
|
# PROP Target_Dir ""
|
||||||
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SPAWNER_EXPORTS" /Yu"stdafx.h" /FD /c
|
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SPAWNER_EXPORTS" /Yu"stdafx.h" /FD /c
|
||||||
# ADD CPP /nologo /Gz /MT /W3 /GX /O2 /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\Win32" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_UNICODE" /D "_USRDLL" /D "SPAWNER_EXPORTS" /Yu"stdafx.h" /FD /c
|
# ADD CPP /nologo /Gz /MT /W3 /GX /O2 /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\Win32" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_UNICODE" /D "_USRDLL" /D "SPAWNER_EXPORTS" /Yu"stdafx.h" /FD /c
|
||||||
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||||
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||||
BSC32=bscmake.exe
|
BSC32=bscmake.exe
|
||||||
# ADD BASE BSC32 /nologo
|
# ADD BASE BSC32 /nologo
|
||||||
# ADD BSC32 /nologo
|
# ADD BSC32 /nologo
|
||||||
LINK32=link.exe
|
LINK32=link.exe
|
||||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
|
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
|
||||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
|
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "spawner - Win32 Debug"
|
!ELSEIF "$(CFG)" == "spawner - Win32 Debug"
|
||||||
|
|
||||||
# PROP BASE Use_MFC 0
|
# PROP BASE Use_MFC 0
|
||||||
# PROP BASE Use_Debug_Libraries 1
|
# PROP BASE Use_Debug_Libraries 1
|
||||||
# PROP BASE Output_Dir "Debug"
|
# PROP BASE Output_Dir "Debug"
|
||||||
# PROP BASE Intermediate_Dir "Debug"
|
# PROP BASE Intermediate_Dir "Debug"
|
||||||
# PROP BASE Target_Dir ""
|
# PROP BASE Target_Dir ""
|
||||||
# PROP Use_MFC 0
|
# PROP Use_MFC 0
|
||||||
# PROP Use_Debug_Libraries 1
|
# PROP Use_Debug_Libraries 1
|
||||||
# PROP Output_Dir "Debug"
|
# PROP Output_Dir "Debug"
|
||||||
# PROP Intermediate_Dir "Debug"
|
# PROP Intermediate_Dir "Debug"
|
||||||
# PROP Ignore_Export_Lib 0
|
# PROP Ignore_Export_Lib 0
|
||||||
# PROP Target_Dir ""
|
# PROP Target_Dir ""
|
||||||
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SPAWNER_EXPORTS" /Yu"stdafx.h" /FD /GZ /c
|
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SPAWNER_EXPORTS" /Yu"stdafx.h" /FD /GZ /c
|
||||||
# ADD CPP /nologo /Gz /MD /W3 /Gm /GX /ZI /Od /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\Win32" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_UNICODE" /D "_USRDLL" /D "SPAWNER_EXPORTS" /FR /Yu"stdafx.h" /FD /GZ /c
|
# ADD CPP /nologo /Gz /MD /W3 /Gm /GX /ZI /Od /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\Win32" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_UNICODE" /D "_USRDLL" /D "SPAWNER_EXPORTS" /FR /Yu"stdafx.h" /FD /GZ /c
|
||||||
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||||
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||||
BSC32=bscmake.exe
|
BSC32=bscmake.exe
|
||||||
# ADD BASE BSC32 /nologo
|
# ADD BASE BSC32 /nologo
|
||||||
# ADD BSC32 /nologo
|
# ADD BSC32 /nologo
|
||||||
LINK32=link.exe
|
LINK32=link.exe
|
||||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
|
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
|
||||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /map /debug /machine:I386 /pdbtype:sept
|
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /map /debug /machine:I386 /pdbtype:sept
|
||||||
|
|
||||||
!ENDIF
|
!ENDIF
|
||||||
|
|
||||||
# Begin Target
|
# Begin Target
|
||||||
|
|
||||||
# Name "spawner - Win32 Release"
|
# Name "spawner - Win32 Release"
|
||||||
# Name "spawner - Win32 Debug"
|
# Name "spawner - Win32 Debug"
|
||||||
# Begin Group "Source Files"
|
# Begin Group "Source Files"
|
||||||
|
|
||||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=.\iostream.c
|
SOURCE=.\iostream.c
|
||||||
|
|
||||||
!IF "$(CFG)" == "spawner - Win32 Release"
|
!IF "$(CFG)" == "spawner - Win32 Release"
|
||||||
|
|
||||||
# ADD CPP /I "E:\Java\jdk1.3.1\include" /I "E:\Java\jdk1.3.1\include\Win32" /FAcs
|
# ADD CPP /I "E:\Java\jdk1.3.1\include" /I "E:\Java\jdk1.3.1\include\Win32" /FAcs
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "spawner - Win32 Debug"
|
!ELSEIF "$(CFG)" == "spawner - Win32 Debug"
|
||||||
|
|
||||||
!ENDIF
|
!ENDIF
|
||||||
|
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=.\raise.c
|
SOURCE=.\raise.c
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=.\spawner.c
|
SOURCE=.\spawner.c
|
||||||
|
|
||||||
!IF "$(CFG)" == "spawner - Win32 Release"
|
!IF "$(CFG)" == "spawner - Win32 Release"
|
||||||
|
|
||||||
# ADD CPP /I "E:\Java\jdk1.3.1\include" /I "E:\Java\jdk1.3.1\include\Win32"
|
# ADD CPP /I "E:\Java\jdk1.3.1\include" /I "E:\Java\jdk1.3.1\include\Win32"
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "spawner - Win32 Debug"
|
!ELSEIF "$(CFG)" == "spawner - Win32 Debug"
|
||||||
|
|
||||||
!ENDIF
|
!ENDIF
|
||||||
|
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=.\StdAfx.c
|
SOURCE=.\StdAfx.c
|
||||||
|
|
||||||
!IF "$(CFG)" == "spawner - Win32 Release"
|
!IF "$(CFG)" == "spawner - Win32 Release"
|
||||||
|
|
||||||
# ADD CPP /I "E:\Java\jdk1.3.1\include" /I "E:\Java\jdk1.3.1\include\Win32" /Yc"stdafx.h"
|
# ADD CPP /I "E:\Java\jdk1.3.1\include" /I "E:\Java\jdk1.3.1\include\Win32" /Yc"stdafx.h"
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "spawner - Win32 Debug"
|
!ELSEIF "$(CFG)" == "spawner - Win32 Debug"
|
||||||
|
|
||||||
# ADD CPP /Yc"stdafx.h"
|
# ADD CPP /Yc"stdafx.h"
|
||||||
|
|
||||||
!ENDIF
|
!ENDIF
|
||||||
|
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=.\Win32ProcessEx.c
|
SOURCE=.\Win32ProcessEx.c
|
||||||
|
|
||||||
!IF "$(CFG)" == "spawner - Win32 Release"
|
!IF "$(CFG)" == "spawner - Win32 Release"
|
||||||
|
|
||||||
# ADD CPP /I "E:\Java\jdk1.3.1\include" /I "E:\Java\jdk1.3.1\include\Win32" /FAcs
|
# ADD CPP /I "E:\Java\jdk1.3.1\include" /I "E:\Java\jdk1.3.1\include\Win32" /FAcs
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "spawner - Win32 Debug"
|
!ELSEIF "$(CFG)" == "spawner - Win32 Debug"
|
||||||
|
|
||||||
!ENDIF
|
!ENDIF
|
||||||
|
|
||||||
# End Source File
|
# End Source File
|
||||||
# End Group
|
# End Group
|
||||||
# Begin Group "Header Files"
|
# Begin Group "Header Files"
|
||||||
|
|
||||||
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=.\Spawner.h
|
SOURCE=.\Spawner.h
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=.\SpawnerInputStream.h
|
SOURCE=.\SpawnerInputStream.h
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=.\SpawnerOutputStream.h
|
SOURCE=.\SpawnerOutputStream.h
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=.\StdAfx.h
|
SOURCE=.\StdAfx.h
|
||||||
# End Source File
|
# End Source File
|
||||||
# End Group
|
# End Group
|
||||||
# Begin Group "Resource Files"
|
# Begin Group "Resource Files"
|
||||||
|
|
||||||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
||||||
# End Group
|
# End Group
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=.\ReadMe.txt
|
SOURCE=.\ReadMe.txt
|
||||||
# End Source File
|
# End Source File
|
||||||
# End Target
|
# End Target
|
||||||
# End Project
|
# End Project
|
||||||
|
|
|
@ -1,29 +1,29 @@
|
||||||
Microsoft Developer Studio Workspace File, Format Version 6.00
|
Microsoft Developer Studio Workspace File, Format Version 6.00
|
||||||
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
|
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
Project: "spawner"=.\spawner.dsp - Package Owner=<4>
|
Project: "spawner"=.\spawner.dsp - Package Owner=<4>
|
||||||
|
|
||||||
Package=<5>
|
Package=<5>
|
||||||
{{{
|
{{{
|
||||||
}}}
|
}}}
|
||||||
|
|
||||||
Package=<4>
|
Package=<4>
|
||||||
{{{
|
{{{
|
||||||
}}}
|
}}}
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
Global:
|
Global:
|
||||||
|
|
||||||
Package=<5>
|
Package=<5>
|
||||||
{{{
|
{{{
|
||||||
}}}
|
}}}
|
||||||
|
|
||||||
Package=<3>
|
Package=<3>
|
||||||
{{{
|
{{{
|
||||||
}}}
|
}}}
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
|
|
|
@ -1,301 +1,301 @@
|
||||||
# Microsoft Developer Studio Generated NMAKE File, Based on spawner.dsp
|
# Microsoft Developer Studio Generated NMAKE File, Based on spawner.dsp
|
||||||
!IF "$(CFG)" == ""
|
!IF "$(CFG)" == ""
|
||||||
CFG=spawner - Win32 Debug
|
CFG=spawner - Win32 Debug
|
||||||
!MESSAGE No configuration specified. Defaulting to spawner - Win32 Debug.
|
!MESSAGE No configuration specified. Defaulting to spawner - Win32 Debug.
|
||||||
!ENDIF
|
!ENDIF
|
||||||
|
|
||||||
!IF "$(CFG)" != "spawner - Win32 Release" && "$(CFG)" != "spawner - Win32 Debug"
|
!IF "$(CFG)" != "spawner - Win32 Release" && "$(CFG)" != "spawner - Win32 Debug"
|
||||||
!MESSAGE Invalid configuration "$(CFG)" specified.
|
!MESSAGE Invalid configuration "$(CFG)" specified.
|
||||||
!MESSAGE You can specify a configuration when running NMAKE
|
!MESSAGE You can specify a configuration when running NMAKE
|
||||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||||
!MESSAGE
|
!MESSAGE
|
||||||
!MESSAGE NMAKE /f "spawner.mak" CFG="spawner - Win32 Debug"
|
!MESSAGE NMAKE /f "spawner.mak" CFG="spawner - Win32 Debug"
|
||||||
!MESSAGE
|
!MESSAGE
|
||||||
!MESSAGE Possible choices for configuration are:
|
!MESSAGE Possible choices for configuration are:
|
||||||
!MESSAGE
|
!MESSAGE
|
||||||
!MESSAGE "spawner - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
|
!MESSAGE "spawner - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
|
||||||
!MESSAGE "spawner - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
|
!MESSAGE "spawner - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
|
||||||
!MESSAGE
|
!MESSAGE
|
||||||
!ERROR An invalid configuration is specified.
|
!ERROR An invalid configuration is specified.
|
||||||
!ENDIF
|
!ENDIF
|
||||||
|
|
||||||
!IF "$(OS)" == "Windows_NT"
|
!IF "$(OS)" == "Windows_NT"
|
||||||
NULL=
|
NULL=
|
||||||
!ELSE
|
!ELSE
|
||||||
NULL=nul
|
NULL=nul
|
||||||
!ENDIF
|
!ENDIF
|
||||||
|
|
||||||
CPP=cl.exe
|
CPP=cl.exe
|
||||||
MTL=midl.exe
|
MTL=midl.exe
|
||||||
RSC=rc.exe
|
RSC=rc.exe
|
||||||
|
|
||||||
!IF "$(CFG)" == "spawner - Win32 Release"
|
!IF "$(CFG)" == "spawner - Win32 Release"
|
||||||
|
|
||||||
OUTDIR=.\Release
|
OUTDIR=.\Release
|
||||||
INTDIR=.\Release
|
INTDIR=.\Release
|
||||||
# Begin Custom Macros
|
# Begin Custom Macros
|
||||||
OutDir=.\Release
|
OutDir=.\Release
|
||||||
# End Custom Macros
|
# End Custom Macros
|
||||||
|
|
||||||
ALL : "$(OUTDIR)\spawner.dll"
|
ALL : "$(OUTDIR)\spawner.dll"
|
||||||
|
|
||||||
|
|
||||||
CLEAN :
|
CLEAN :
|
||||||
-@erase "$(INTDIR)\iostream.obj"
|
-@erase "$(INTDIR)\iostream.obj"
|
||||||
-@erase "$(INTDIR)\raise.obj"
|
-@erase "$(INTDIR)\raise.obj"
|
||||||
-@erase "$(INTDIR)\spawner.obj"
|
-@erase "$(INTDIR)\spawner.obj"
|
||||||
-@erase "$(INTDIR)\spawner.pch"
|
-@erase "$(INTDIR)\spawner.pch"
|
||||||
-@erase "$(INTDIR)\StdAfx.obj"
|
-@erase "$(INTDIR)\StdAfx.obj"
|
||||||
-@erase "$(INTDIR)\vc60.idb"
|
-@erase "$(INTDIR)\vc60.idb"
|
||||||
-@erase "$(INTDIR)\Win32ProcessEx.obj"
|
-@erase "$(INTDIR)\Win32ProcessEx.obj"
|
||||||
-@erase "$(OUTDIR)\spawner.dll"
|
-@erase "$(OUTDIR)\spawner.dll"
|
||||||
-@erase "$(OUTDIR)\spawner.exp"
|
-@erase "$(OUTDIR)\spawner.exp"
|
||||||
-@erase "$(OUTDIR)\spawner.lib"
|
-@erase "$(OUTDIR)\spawner.lib"
|
||||||
|
|
||||||
"$(OUTDIR)" :
|
"$(OUTDIR)" :
|
||||||
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
|
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
|
||||||
|
|
||||||
CPP_PROJ=/nologo /Gz /MT /W3 /GX /O2 /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\Win32" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_UNICODE" /D "_USRDLL" /D "SPAWNER_EXPORTS" /Fp"$(INTDIR)\spawner.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
|
CPP_PROJ=/nologo /Gz /MT /W3 /GX /O2 /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\Win32" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_UNICODE" /D "_USRDLL" /D "SPAWNER_EXPORTS" /Fp"$(INTDIR)\spawner.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
|
||||||
MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32
|
MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32
|
||||||
BSC32=bscmake.exe
|
BSC32=bscmake.exe
|
||||||
BSC32_FLAGS=/nologo /o"$(OUTDIR)\spawner.bsc"
|
BSC32_FLAGS=/nologo /o"$(OUTDIR)\spawner.bsc"
|
||||||
BSC32_SBRS= \
|
BSC32_SBRS= \
|
||||||
|
|
||||||
LINK32=link.exe
|
LINK32=link.exe
|
||||||
LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:no /pdb:"$(OUTDIR)\spawner.pdb" /machine:I386 /out:"$(OUTDIR)\spawner.dll" /implib:"$(OUTDIR)\spawner.lib"
|
LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:no /pdb:"$(OUTDIR)\spawner.pdb" /machine:I386 /out:"$(OUTDIR)\spawner.dll" /implib:"$(OUTDIR)\spawner.lib"
|
||||||
LINK32_OBJS= \
|
LINK32_OBJS= \
|
||||||
"$(INTDIR)\iostream.obj" \
|
"$(INTDIR)\iostream.obj" \
|
||||||
"$(INTDIR)\raise.obj" \
|
"$(INTDIR)\raise.obj" \
|
||||||
"$(INTDIR)\spawner.obj" \
|
"$(INTDIR)\spawner.obj" \
|
||||||
"$(INTDIR)\StdAfx.obj" \
|
"$(INTDIR)\StdAfx.obj" \
|
||||||
"$(INTDIR)\Win32ProcessEx.obj"
|
"$(INTDIR)\Win32ProcessEx.obj"
|
||||||
|
|
||||||
"$(OUTDIR)\spawner.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
|
"$(OUTDIR)\spawner.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
|
||||||
$(LINK32) @<<
|
$(LINK32) @<<
|
||||||
$(LINK32_FLAGS) $(LINK32_OBJS)
|
$(LINK32_FLAGS) $(LINK32_OBJS)
|
||||||
<<
|
<<
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "spawner - Win32 Debug"
|
!ELSEIF "$(CFG)" == "spawner - Win32 Debug"
|
||||||
|
|
||||||
OUTDIR=.\Debug
|
OUTDIR=.\Debug
|
||||||
INTDIR=.\Debug
|
INTDIR=.\Debug
|
||||||
# Begin Custom Macros
|
# Begin Custom Macros
|
||||||
OutDir=.\Debug
|
OutDir=.\Debug
|
||||||
# End Custom Macros
|
# End Custom Macros
|
||||||
|
|
||||||
ALL : "$(OUTDIR)\spawner.dll" "$(OUTDIR)\spawner.bsc"
|
ALL : "$(OUTDIR)\spawner.dll" "$(OUTDIR)\spawner.bsc"
|
||||||
|
|
||||||
|
|
||||||
CLEAN :
|
CLEAN :
|
||||||
-@erase "$(INTDIR)\iostream.obj"
|
-@erase "$(INTDIR)\iostream.obj"
|
||||||
-@erase "$(INTDIR)\iostream.sbr"
|
-@erase "$(INTDIR)\iostream.sbr"
|
||||||
-@erase "$(INTDIR)\raise.obj"
|
-@erase "$(INTDIR)\raise.obj"
|
||||||
-@erase "$(INTDIR)\raise.sbr"
|
-@erase "$(INTDIR)\raise.sbr"
|
||||||
-@erase "$(INTDIR)\spawner.obj"
|
-@erase "$(INTDIR)\spawner.obj"
|
||||||
-@erase "$(INTDIR)\spawner.pch"
|
-@erase "$(INTDIR)\spawner.pch"
|
||||||
-@erase "$(INTDIR)\spawner.sbr"
|
-@erase "$(INTDIR)\spawner.sbr"
|
||||||
-@erase "$(INTDIR)\StdAfx.obj"
|
-@erase "$(INTDIR)\StdAfx.obj"
|
||||||
-@erase "$(INTDIR)\StdAfx.sbr"
|
-@erase "$(INTDIR)\StdAfx.sbr"
|
||||||
-@erase "$(INTDIR)\vc60.idb"
|
-@erase "$(INTDIR)\vc60.idb"
|
||||||
-@erase "$(INTDIR)\vc60.pdb"
|
-@erase "$(INTDIR)\vc60.pdb"
|
||||||
-@erase "$(INTDIR)\Win32ProcessEx.obj"
|
-@erase "$(INTDIR)\Win32ProcessEx.obj"
|
||||||
-@erase "$(INTDIR)\Win32ProcessEx.sbr"
|
-@erase "$(INTDIR)\Win32ProcessEx.sbr"
|
||||||
-@erase "$(OUTDIR)\spawner.bsc"
|
-@erase "$(OUTDIR)\spawner.bsc"
|
||||||
-@erase "$(OUTDIR)\spawner.dll"
|
-@erase "$(OUTDIR)\spawner.dll"
|
||||||
-@erase "$(OUTDIR)\spawner.exp"
|
-@erase "$(OUTDIR)\spawner.exp"
|
||||||
-@erase "$(OUTDIR)\spawner.ilk"
|
-@erase "$(OUTDIR)\spawner.ilk"
|
||||||
-@erase "$(OUTDIR)\spawner.lib"
|
-@erase "$(OUTDIR)\spawner.lib"
|
||||||
-@erase "$(OUTDIR)\spawner.map"
|
-@erase "$(OUTDIR)\spawner.map"
|
||||||
-@erase "$(OUTDIR)\spawner.pdb"
|
-@erase "$(OUTDIR)\spawner.pdb"
|
||||||
|
|
||||||
"$(OUTDIR)" :
|
"$(OUTDIR)" :
|
||||||
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
|
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
|
||||||
|
|
||||||
CPP_PROJ=/nologo /Gz /MD /W3 /Gm /GX /ZI /Od /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\Win32" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_UNICODE" /D "_USRDLL" /D "SPAWNER_EXPORTS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\spawner.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
|
CPP_PROJ=/nologo /Gz /MD /W3 /Gm /GX /ZI /Od /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\Win32" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_UNICODE" /D "_USRDLL" /D "SPAWNER_EXPORTS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\spawner.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
|
||||||
MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32
|
MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32
|
||||||
BSC32=bscmake.exe
|
BSC32=bscmake.exe
|
||||||
BSC32_FLAGS=/nologo /o"$(OUTDIR)\spawner.bsc"
|
BSC32_FLAGS=/nologo /o"$(OUTDIR)\spawner.bsc"
|
||||||
BSC32_SBRS= \
|
BSC32_SBRS= \
|
||||||
"$(INTDIR)\iostream.sbr" \
|
"$(INTDIR)\iostream.sbr" \
|
||||||
"$(INTDIR)\raise.sbr" \
|
"$(INTDIR)\raise.sbr" \
|
||||||
"$(INTDIR)\spawner.sbr" \
|
"$(INTDIR)\spawner.sbr" \
|
||||||
"$(INTDIR)\StdAfx.sbr" \
|
"$(INTDIR)\StdAfx.sbr" \
|
||||||
"$(INTDIR)\Win32ProcessEx.sbr"
|
"$(INTDIR)\Win32ProcessEx.sbr"
|
||||||
|
|
||||||
"$(OUTDIR)\spawner.bsc" : "$(OUTDIR)" $(BSC32_SBRS)
|
"$(OUTDIR)\spawner.bsc" : "$(OUTDIR)" $(BSC32_SBRS)
|
||||||
$(BSC32) @<<
|
$(BSC32) @<<
|
||||||
$(BSC32_FLAGS) $(BSC32_SBRS)
|
$(BSC32_FLAGS) $(BSC32_SBRS)
|
||||||
<<
|
<<
|
||||||
|
|
||||||
LINK32=link.exe
|
LINK32=link.exe
|
||||||
LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"$(OUTDIR)\spawner.pdb" /map:"$(INTDIR)\spawner.map" /debug /machine:I386 /out:"$(OUTDIR)\spawner.dll" /implib:"$(OUTDIR)\spawner.lib" /pdbtype:sept
|
LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"$(OUTDIR)\spawner.pdb" /map:"$(INTDIR)\spawner.map" /debug /machine:I386 /out:"$(OUTDIR)\spawner.dll" /implib:"$(OUTDIR)\spawner.lib" /pdbtype:sept
|
||||||
LINK32_OBJS= \
|
LINK32_OBJS= \
|
||||||
"$(INTDIR)\iostream.obj" \
|
"$(INTDIR)\iostream.obj" \
|
||||||
"$(INTDIR)\raise.obj" \
|
"$(INTDIR)\raise.obj" \
|
||||||
"$(INTDIR)\spawner.obj" \
|
"$(INTDIR)\spawner.obj" \
|
||||||
"$(INTDIR)\StdAfx.obj" \
|
"$(INTDIR)\StdAfx.obj" \
|
||||||
"$(INTDIR)\Win32ProcessEx.obj"
|
"$(INTDIR)\Win32ProcessEx.obj"
|
||||||
|
|
||||||
"$(OUTDIR)\spawner.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
|
"$(OUTDIR)\spawner.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
|
||||||
$(LINK32) @<<
|
$(LINK32) @<<
|
||||||
$(LINK32_FLAGS) $(LINK32_OBJS)
|
$(LINK32_FLAGS) $(LINK32_OBJS)
|
||||||
<<
|
<<
|
||||||
|
|
||||||
!ENDIF
|
!ENDIF
|
||||||
|
|
||||||
.c{$(INTDIR)}.obj::
|
.c{$(INTDIR)}.obj::
|
||||||
$(CPP) @<<
|
$(CPP) @<<
|
||||||
$(CPP_PROJ) $<
|
$(CPP_PROJ) $<
|
||||||
<<
|
<<
|
||||||
|
|
||||||
.cpp{$(INTDIR)}.obj::
|
.cpp{$(INTDIR)}.obj::
|
||||||
$(CPP) @<<
|
$(CPP) @<<
|
||||||
$(CPP_PROJ) $<
|
$(CPP_PROJ) $<
|
||||||
<<
|
<<
|
||||||
|
|
||||||
.cxx{$(INTDIR)}.obj::
|
.cxx{$(INTDIR)}.obj::
|
||||||
$(CPP) @<<
|
$(CPP) @<<
|
||||||
$(CPP_PROJ) $<
|
$(CPP_PROJ) $<
|
||||||
<<
|
<<
|
||||||
|
|
||||||
.c{$(INTDIR)}.sbr::
|
.c{$(INTDIR)}.sbr::
|
||||||
$(CPP) @<<
|
$(CPP) @<<
|
||||||
$(CPP_PROJ) $<
|
$(CPP_PROJ) $<
|
||||||
<<
|
<<
|
||||||
|
|
||||||
.cpp{$(INTDIR)}.sbr::
|
.cpp{$(INTDIR)}.sbr::
|
||||||
$(CPP) @<<
|
$(CPP) @<<
|
||||||
$(CPP_PROJ) $<
|
$(CPP_PROJ) $<
|
||||||
<<
|
<<
|
||||||
|
|
||||||
.cxx{$(INTDIR)}.sbr::
|
.cxx{$(INTDIR)}.sbr::
|
||||||
$(CPP) @<<
|
$(CPP) @<<
|
||||||
$(CPP_PROJ) $<
|
$(CPP_PROJ) $<
|
||||||
<<
|
<<
|
||||||
|
|
||||||
|
|
||||||
!IF "$(NO_EXTERNAL_DEPS)" != "1"
|
!IF "$(NO_EXTERNAL_DEPS)" != "1"
|
||||||
!IF EXISTS("spawner.dep")
|
!IF EXISTS("spawner.dep")
|
||||||
!INCLUDE "spawner.dep"
|
!INCLUDE "spawner.dep"
|
||||||
!ELSE
|
!ELSE
|
||||||
!MESSAGE Warning: cannot find "spawner.dep"
|
!MESSAGE Warning: cannot find "spawner.dep"
|
||||||
!ENDIF
|
!ENDIF
|
||||||
!ENDIF
|
!ENDIF
|
||||||
|
|
||||||
|
|
||||||
!IF "$(CFG)" == "spawner - Win32 Release" || "$(CFG)" == "spawner - Win32 Debug"
|
!IF "$(CFG)" == "spawner - Win32 Release" || "$(CFG)" == "spawner - Win32 Debug"
|
||||||
SOURCE=.\iostream.c
|
SOURCE=.\iostream.c
|
||||||
|
|
||||||
!IF "$(CFG)" == "spawner - Win32 Release"
|
!IF "$(CFG)" == "spawner - Win32 Release"
|
||||||
|
|
||||||
CPP_SWITCHES=/nologo /Gz /MT /W3 /GX /O2 /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\Win32" /I "E:\Java\jdk1.3.1\include" /I "E:\Java\jdk1.3.1\include\Win32" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_UNICODE" /D "_USRDLL" /D "SPAWNER_EXPORTS" /FAcs /Fa"$(INTDIR)\\" /Fp"$(INTDIR)\spawner.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
|
CPP_SWITCHES=/nologo /Gz /MT /W3 /GX /O2 /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\Win32" /I "E:\Java\jdk1.3.1\include" /I "E:\Java\jdk1.3.1\include\Win32" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_UNICODE" /D "_USRDLL" /D "SPAWNER_EXPORTS" /FAcs /Fa"$(INTDIR)\\" /Fp"$(INTDIR)\spawner.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
|
||||||
|
|
||||||
"$(INTDIR)\iostream.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\spawner.pch"
|
"$(INTDIR)\iostream.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\spawner.pch"
|
||||||
$(CPP) @<<
|
$(CPP) @<<
|
||||||
$(CPP_SWITCHES) $(SOURCE)
|
$(CPP_SWITCHES) $(SOURCE)
|
||||||
<<
|
<<
|
||||||
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "spawner - Win32 Debug"
|
!ELSEIF "$(CFG)" == "spawner - Win32 Debug"
|
||||||
|
|
||||||
CPP_SWITCHES=/nologo /Gz /MD /W3 /Gm /GX /ZI /Od /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\Win32" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_UNICODE" /D "_USRDLL" /D "SPAWNER_EXPORTS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\spawner.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
|
CPP_SWITCHES=/nologo /Gz /MD /W3 /Gm /GX /ZI /Od /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\Win32" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_UNICODE" /D "_USRDLL" /D "SPAWNER_EXPORTS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\spawner.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
|
||||||
|
|
||||||
"$(INTDIR)\iostream.obj" "$(INTDIR)\iostream.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\spawner.pch"
|
"$(INTDIR)\iostream.obj" "$(INTDIR)\iostream.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\spawner.pch"
|
||||||
$(CPP) @<<
|
$(CPP) @<<
|
||||||
$(CPP_SWITCHES) $(SOURCE)
|
$(CPP_SWITCHES) $(SOURCE)
|
||||||
<<
|
<<
|
||||||
|
|
||||||
|
|
||||||
!ENDIF
|
!ENDIF
|
||||||
|
|
||||||
SOURCE=.\raise.c
|
SOURCE=.\raise.c
|
||||||
|
|
||||||
!IF "$(CFG)" == "spawner - Win32 Release"
|
!IF "$(CFG)" == "spawner - Win32 Release"
|
||||||
|
|
||||||
|
|
||||||
"$(INTDIR)\raise.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\spawner.pch"
|
"$(INTDIR)\raise.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\spawner.pch"
|
||||||
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "spawner - Win32 Debug"
|
!ELSEIF "$(CFG)" == "spawner - Win32 Debug"
|
||||||
|
|
||||||
|
|
||||||
"$(INTDIR)\raise.obj" "$(INTDIR)\raise.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\spawner.pch"
|
"$(INTDIR)\raise.obj" "$(INTDIR)\raise.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\spawner.pch"
|
||||||
|
|
||||||
|
|
||||||
!ENDIF
|
!ENDIF
|
||||||
|
|
||||||
SOURCE=.\spawner.c
|
SOURCE=.\spawner.c
|
||||||
|
|
||||||
!IF "$(CFG)" == "spawner - Win32 Release"
|
!IF "$(CFG)" == "spawner - Win32 Release"
|
||||||
|
|
||||||
CPP_SWITCHES=/nologo /Gz /MT /W3 /GX /O2 /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\Win32" /I "E:\Java\jdk1.3.1\include" /I "E:\Java\jdk1.3.1\include\Win32" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_UNICODE" /D "_USRDLL" /D "SPAWNER_EXPORTS" /Fp"$(INTDIR)\spawner.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
|
CPP_SWITCHES=/nologo /Gz /MT /W3 /GX /O2 /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\Win32" /I "E:\Java\jdk1.3.1\include" /I "E:\Java\jdk1.3.1\include\Win32" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_UNICODE" /D "_USRDLL" /D "SPAWNER_EXPORTS" /Fp"$(INTDIR)\spawner.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
|
||||||
|
|
||||||
"$(INTDIR)\spawner.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\spawner.pch"
|
"$(INTDIR)\spawner.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\spawner.pch"
|
||||||
$(CPP) @<<
|
$(CPP) @<<
|
||||||
$(CPP_SWITCHES) $(SOURCE)
|
$(CPP_SWITCHES) $(SOURCE)
|
||||||
<<
|
<<
|
||||||
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "spawner - Win32 Debug"
|
!ELSEIF "$(CFG)" == "spawner - Win32 Debug"
|
||||||
|
|
||||||
CPP_SWITCHES=/nologo /Gz /MD /W3 /Gm /GX /ZI /Od /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\Win32" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_UNICODE" /D "_USRDLL" /D "SPAWNER_EXPORTS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\spawner.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
|
CPP_SWITCHES=/nologo /Gz /MD /W3 /Gm /GX /ZI /Od /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\Win32" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_UNICODE" /D "_USRDLL" /D "SPAWNER_EXPORTS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\spawner.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
|
||||||
|
|
||||||
"$(INTDIR)\spawner.obj" "$(INTDIR)\spawner.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\spawner.pch"
|
"$(INTDIR)\spawner.obj" "$(INTDIR)\spawner.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\spawner.pch"
|
||||||
$(CPP) @<<
|
$(CPP) @<<
|
||||||
$(CPP_SWITCHES) $(SOURCE)
|
$(CPP_SWITCHES) $(SOURCE)
|
||||||
<<
|
<<
|
||||||
|
|
||||||
|
|
||||||
!ENDIF
|
!ENDIF
|
||||||
|
|
||||||
SOURCE=.\StdAfx.c
|
SOURCE=.\StdAfx.c
|
||||||
|
|
||||||
!IF "$(CFG)" == "spawner - Win32 Release"
|
!IF "$(CFG)" == "spawner - Win32 Release"
|
||||||
|
|
||||||
CPP_SWITCHES=/nologo /Gz /MT /W3 /GX /O2 /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\Win32" /I "E:\Java\jdk1.3.1\include" /I "E:\Java\jdk1.3.1\include\Win32" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_UNICODE" /D "_USRDLL" /D "SPAWNER_EXPORTS" /Fp"$(INTDIR)\spawner.pch" /Yc"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
|
CPP_SWITCHES=/nologo /Gz /MT /W3 /GX /O2 /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\Win32" /I "E:\Java\jdk1.3.1\include" /I "E:\Java\jdk1.3.1\include\Win32" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_UNICODE" /D "_USRDLL" /D "SPAWNER_EXPORTS" /Fp"$(INTDIR)\spawner.pch" /Yc"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
|
||||||
|
|
||||||
"$(INTDIR)\StdAfx.obj" "$(INTDIR)\spawner.pch" : $(SOURCE) "$(INTDIR)"
|
"$(INTDIR)\StdAfx.obj" "$(INTDIR)\spawner.pch" : $(SOURCE) "$(INTDIR)"
|
||||||
$(CPP) @<<
|
$(CPP) @<<
|
||||||
$(CPP_SWITCHES) $(SOURCE)
|
$(CPP_SWITCHES) $(SOURCE)
|
||||||
<<
|
<<
|
||||||
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "spawner - Win32 Debug"
|
!ELSEIF "$(CFG)" == "spawner - Win32 Debug"
|
||||||
|
|
||||||
CPP_SWITCHES=/nologo /Gz /MD /W3 /Gm /GX /ZI /Od /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\Win32" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_UNICODE" /D "_USRDLL" /D "SPAWNER_EXPORTS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\spawner.pch" /Yc"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
|
CPP_SWITCHES=/nologo /Gz /MD /W3 /Gm /GX /ZI /Od /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\Win32" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_UNICODE" /D "_USRDLL" /D "SPAWNER_EXPORTS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\spawner.pch" /Yc"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
|
||||||
|
|
||||||
"$(INTDIR)\StdAfx.obj" "$(INTDIR)\StdAfx.sbr" "$(INTDIR)\spawner.pch" : $(SOURCE) "$(INTDIR)"
|
"$(INTDIR)\StdAfx.obj" "$(INTDIR)\StdAfx.sbr" "$(INTDIR)\spawner.pch" : $(SOURCE) "$(INTDIR)"
|
||||||
$(CPP) @<<
|
$(CPP) @<<
|
||||||
$(CPP_SWITCHES) $(SOURCE)
|
$(CPP_SWITCHES) $(SOURCE)
|
||||||
<<
|
<<
|
||||||
|
|
||||||
|
|
||||||
!ENDIF
|
!ENDIF
|
||||||
|
|
||||||
SOURCE=.\Win32ProcessEx.c
|
SOURCE=.\Win32ProcessEx.c
|
||||||
|
|
||||||
!IF "$(CFG)" == "spawner - Win32 Release"
|
!IF "$(CFG)" == "spawner - Win32 Release"
|
||||||
|
|
||||||
CPP_SWITCHES=/nologo /Gz /MT /W3 /GX /O2 /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\Win32" /I "E:\Java\jdk1.3.1\include" /I "E:\Java\jdk1.3.1\include\Win32" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_UNICODE" /D "_USRDLL" /D "SPAWNER_EXPORTS" /FA /Fa"$(INTDIR)\Win32ProcessEx.asm-only" /Fp"$(INTDIR)\spawner.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
|
CPP_SWITCHES=/nologo /Gz /MT /W3 /GX /O2 /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\Win32" /I "E:\Java\jdk1.3.1\include" /I "E:\Java\jdk1.3.1\include\Win32" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_UNICODE" /D "_USRDLL" /D "SPAWNER_EXPORTS" /FA /Fa"$(INTDIR)\Win32ProcessEx.asm-only" /Fp"$(INTDIR)\spawner.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
|
||||||
|
|
||||||
"$(INTDIR)\Win32ProcessEx.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\spawner.pch"
|
"$(INTDIR)\Win32ProcessEx.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\spawner.pch"
|
||||||
$(CPP) @<<
|
$(CPP) @<<
|
||||||
$(CPP_SWITCHES) $(SOURCE)
|
$(CPP_SWITCHES) $(SOURCE)
|
||||||
<<
|
<<
|
||||||
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "spawner - Win32 Debug"
|
!ELSEIF "$(CFG)" == "spawner - Win32 Debug"
|
||||||
|
|
||||||
CPP_SWITCHES=/nologo /Gz /MD /W3 /Gm /GX /ZI /Od /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\Win32" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_UNICODE" /D "_USRDLL" /D "SPAWNER_EXPORTS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\spawner.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
|
CPP_SWITCHES=/nologo /Gz /MD /W3 /Gm /GX /ZI /Od /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\Win32" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_UNICODE" /D "_USRDLL" /D "SPAWNER_EXPORTS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\spawner.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
|
||||||
|
|
||||||
"$(INTDIR)\Win32ProcessEx.obj" "$(INTDIR)\Win32ProcessEx.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\spawner.pch"
|
"$(INTDIR)\Win32ProcessEx.obj" "$(INTDIR)\Win32ProcessEx.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\spawner.pch"
|
||||||
$(CPP) @<<
|
$(CPP) @<<
|
||||||
$(CPP_SWITCHES) $(SOURCE)
|
$(CPP_SWITCHES) $(SOURCE)
|
||||||
<<
|
<<
|
||||||
|
|
||||||
|
|
||||||
!ENDIF
|
!ENDIF
|
||||||
|
|
||||||
|
|
||||||
!ENDIF
|
!ENDIF
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue