You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by hg...@apache.org on 2001/05/03 16:43:38 UTC
cvs commit: jakarta-tomcat/proposals/web-connector/native/netscape Makefile.nw Makefile.solaris jk_nsapi_plugin.c nsapi.dsp nsapi.dsw
hgomez 01/05/03 07:43:38
Added: proposals/web-connector/native/netscape Makefile.nw
Makefile.solaris jk_nsapi_plugin.c nsapi.dsp
nsapi.dsw
Log:
Netscape/IPlanet stuff
Revision Changes Path
1.1 jakarta-tomcat/proposals/web-connector/native/netscape/Makefile.nw
Index: Makefile.nw
===================================================================
.SILENT:
NLM_NAME=nsapi_rd
JDKPATH=k:\jdk\jdk-1_2_2
NOVELLNDK=r:\nwsdk
NSSDK=r:\netscape
METROWERKSPATH=k:\mw\5.3
CC=$(METROWERKSPATH)\bin\mwccnlm
LINK=$(METROWERKSPATH)\bin\mwldnlm
JK_OBJS=\
jk_ajp12_worker.obj \
jk_ajp13_worker.obj \
jk_ajp13.obj \
jk_connect.obj \
jk_jni_worker.obj \
jk_lb_worker.obj \
jk_map.obj \
jk_msg_buff.obj \
jk_nsapi_plugin.obj \
jk_pool.obj \
jk_sockbuf.obj \
jk_uri_worker_map.obj \
jk_util.obj \
jk_worker.obj \
jk_nwmain.obj \
all: $(NLM_NAME).nlm
$(NLM_NAME).nlm: $(JK_OBJS) link.opt
@echo Linking $@
@$(LINK) @link.opt
%.obj: %.c cc.opt
@echo Compiling $<
@$(CC) $< -o=$(@F) @cc.opt
%.obj: ../common/%.c cc.opt
@echo Compiling $<
@$(CC) $< -o=$(@F) @cc.opt
cc.opt: Makefile.nw
-@del cc.opt 2> NUL
@echo Generating $@
@echo -nosyspath -ext obj -c -align 1 -w nocmdline -bool on >> $@
ifdef DEBUG
@echo -g >> $@
endif
@echo -I$(NOVELLNDK)\include\nlm >> $@
@echo -I$(NOVELLNDK)\include >> $@
@echo -I$(NSSDK)\include >> $@
@echo -I. >> $@
@echo -I..\common >> $@
@echo -I$(METROWERKSPATH)\include >> $@
@echo -I$(JDKPATH)\include >> $@
@echo -I$(JDKPATH)\include\netware >> $@
@echo -DN_PLAT_NLM >> $@
@echo -DNETWARE >> $@
@echo -DXP_NETWARE >> $@
link.opt: Makefile.nw
-@del link.opt 2> NUL
-@del link.def 2> NUL
@echo -warnings off >> $@
@echo -zerobss >> $@
@echo -desc "Netscape Plugin for Tomcat" >> $@
@echo -o $(NLM_NAME).nlm >> $@
@echo -screenname "System Console" >> $@
@echo -nlmversion 0,1,0 >> $@
ifdef DEBUG
@echo -g >> $@
@echo -sym internal >> $@
@echo -sym codeview4 >> $@
@echo -osym $(NLM_NAME).sym >> $@
endif
@echo -nodefaults >> $@
@echo -map $(NLM_NAME).map >> $@
@echo -threadname "NSTomcat Thread" >> $@
@echo -stacksize 64000 >> $@
@echo $(METROWERKSPATH)\lib\nwpre.obj $(strip $(JK_OBJS)) >> $@
@echo -commandfile link.def >> $@
@echo module nsapi >> link.def
@echo Import @$(NOVELLNDK)\imports\clib.imp >> link.def
@echo Import @$(NOVELLNDK)\imports\lib0.imp >> link.def
@echo Import @$(NOVELLNDK)\imports\nlmlib.imp >> link.def
@echo Import @$(NOVELLNDK)\imports\threads.imp >> link.def
@echo Import @$(NOVELLNDK)\imports\socklib.imp >> link.def
@echo Import @$(NSSDK)\imports\nsapi.imp >> link.def
@echo Export jk_init, jk_service >> link.def
clean:
-@del *.obj 2> NUL
-@del *.map 2> NUL
-@del link.* 2> NUL
-@del cc.opt 2> NUL
-@del *.nlm 2> NUL
-@del *.sym 2> NUL
1.1 jakarta-tomcat/proposals/web-connector/native/netscape/Makefile.solaris
Index: Makefile.solaris
===================================================================
# Defines for example NSAPI programs running under SOLARIS
CC_CMD=gcc -DNET_SSL -DSOLARIS -D_REENTRANT
LD_SHAREDCMD=ld -G
all:
prepare:
OS_TYPE=solaris
INCLUDEDIR=$(SUITSPOT_HOME)/include
JAVA_INCLUDE=$(JAVA_HOME)/include
JK_OBJS = jk_ajp12_worker.o jk_lb_worker.o jk_sockbuf.o jk_connect.o jk_map.o \
jk_uri_worker_map.o jk_nsapi_plugin.o jk_util.o jk_jni_worker.o \
jk_pool.o jk_worker.o
INCLUDE_FLAGS=-I$(INCLUDEDIR) -I$(INCLUDEDIR)/base -I$(INCLUDEDIR)/frame -I$(JAVA_INCLUDE) -I$(JAVA_INCLUDE)/$(OS_TYPE)
COMMON_DEFS=-DMCC_HTTPD -DXP_UNIX -DSPAPI20 -DSOLARIS -Wall
all: nsapi_redirector.so
nsapi_redirector.so: $(JK_OBJS)
$(MAKE) prepare
$(LD_SHAREDCMD) $(JK_OBJS) -o nsapi_redirector.so $(EXTRA_LDDEFINES)
.c.o:
$(CC_CMD) $(COMMON_DEFS) $(INCLUDE_FLAGS) -c $<
clean:
rm $(JK_OBJS)
1.1 jakarta-tomcat/proposals/web-connector/native/netscape/jk_nsapi_plugin.c
Index: jk_nsapi_plugin.c
===================================================================
/*
* Copyright (c) 1997-1999 The Java Apache Project. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. All advertising materials mentioning features or use of this
* software must display the following acknowledgment:
* "This product includes software developed by the Java Apache
* Project for use in the Apache JServ servlet engine project
* <http://java.apache.org/>."
*
* 4. The names "Apache JServ", "Apache JServ Servlet Engine" and
* "Java Apache Project" must not be used to endorse or promote products
* derived from this software without prior written permission.
*
* 5. Products derived from this software may not be called "Apache JServ"
* nor may "Apache" nor "Apache JServ" appear in their names without
* prior written permission of the Java Apache Project.
*
* 6. Redistributions of any form whatsoever must retain the following
* acknowledgment:
* "This product includes software developed by the Java Apache
* Project for use in the Apache JServ servlet engine project
* <http://java.apache.org/>."
*
* THIS SOFTWARE IS PROVIDED BY THE JAVA APACHE PROJECT "AS IS" AND ANY
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JAVA APACHE PROJECT OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Java Apache Group. For more information
* on the Java Apache Project and the Apache JServ Servlet Engine project,
* please see <http://java.apache.org/>.
*
*/
/***************************************************************************
* Description: NSAPI plugin for Netscape servers *
* Author: Gal Shachor <sh...@il.ibm.com> *
* Version: $Revision: 1.1 $ *
***************************************************************************/
#include "jk_global.h"
#include "jk_util.h"
#include "jk_map.h"
#include "jk_pool.h"
#include "jk_service.h"
#include "jk_worker.h"
#include "jk_ajp12_worker.h"
#include "nsapi.h"
#define URI_PATTERN "path"
struct nsapi_private_data {
jk_pool_t p;
int request_started;
pblock *pb;
Session *sn;
Request *rq;
};
typedef struct nsapi_private_data nsapi_private_data_t;
static int init_on_other_thread_is_done = JK_FALSE;
static int init_on_other_thread_is_ok = JK_FALSE;
static jk_logger_t *logger = NULL;
static int JK_METHOD start_response(jk_ws_service_t *s,
int status,
const char *reason,
const char * const *header_names,
const char * const *header_values,
unsigned num_of_headers);
static int JK_METHOD ws_read(jk_ws_service_t *s,
void *b,
unsigned l,
unsigned *a);
static int JK_METHOD ws_write(jk_ws_service_t *s,
const void *b,
unsigned l);
NSAPI_PUBLIC int jk_init(pblock *pb,
Session *sn,
Request *rq);
NSAPI_PUBLIC void jk_term(void *p);
NSAPI_PUBLIC int jk_service(pblock *pb,
Session *sn,
Request *rq);
static int init_ws_service(nsapi_private_data_t *private_data,
jk_ws_service_t *s);
static int setup_http_headers(nsapi_private_data_t *private_data,
jk_ws_service_t *s);
static void init_workers_on_other_threads(void *init_d)
{
jk_map_t *init_map = (jk_map_t *)init_d;
if(wc_open(init_map, logger)) {
init_on_other_thread_is_ok = JK_TRUE;
} else {
jk_log(logger, JK_LOG_EMERG, "In init_workers_on_other_threads, failed\n");
}
init_on_other_thread_is_done = JK_TRUE;
}
static int JK_METHOD start_response(jk_ws_service_t *s,
int status,
const char *reason,
const char * const *header_names,
const char * const *header_values,
unsigned num_of_headers)
{
if(s && s->ws_private) {
nsapi_private_data_t *p = s->ws_private;
if(!p->request_started) {
unsigned i;
p->request_started = JK_TRUE;
/* Remove "old" content type */
param_free(pblock_remove("content-type", p->rq->srvhdrs));
if(num_of_headers) {
for (i = 0 ; i < (int)num_of_headers ; i++) {
pblock_nvinsert(header_names[i],
header_values[i],
p->rq->srvhdrs);
}
} else {
pblock_nvinsert("content-type",
"text/plain",
p->rq->srvhdrs);
}
protocol_status(p->sn,
p->rq,
status,
(char *)reason);
protocol_start_response(p->sn, p->rq);
}
return JK_TRUE;
}
return JK_FALSE;
}
static int JK_METHOD ws_read(jk_ws_service_t *s,
void *b,
unsigned l,
unsigned *a)
{
if(s && s->ws_private && b && a) {
nsapi_private_data_t *p = s->ws_private;
*a = 0;
if(l) {
char *buf = b;
unsigned i;
netbuf *inbuf = p->sn->inbuf;
/* Until we get a service pack for NW5.1 and earlier that has the latest */
/* Enterprise Server, we have to go through the else version of this code*/
#if defined(netbuf_getbytes) && !defined(NETWARE)
i = netbuf_getbytes(inbuf, b, l);
if(NETBUF_EOF == i || NETBUF_ERROR == i) {
return JK_FALSE;
}
#else
int ch;
for(i = 0 ; i < l ; i++) {
ch = netbuf_getc(inbuf);
/*
* IO_EOF is 0 (zero) which is a very reasonable byte
* when it comes to binary data. So we are not breaking
* out of the read loop when reading it.
*
* We are protected from an infinit loop by the Java part of
* Tomcat.
*/
if(IO_ERROR == ch) {
break;
}
buf[i] = ch;
}
if(0 == i) {
return JK_FALSE;
}
#endif
*a = i;
}
return JK_TRUE;
}
return JK_FALSE;
}
static int JK_METHOD ws_write(jk_ws_service_t *s,
const void *b,
unsigned l)
{
if(s && s->ws_private && b) {
nsapi_private_data_t *p = s->ws_private;
if(l) {
if(!p->request_started) {
start_response(s, 200, NULL, NULL, NULL, 0);
}
if(net_write(p->sn->csd, (char *)b, (int)l) == IO_ERROR) {
return JK_FALSE;
}
}
return JK_TRUE;
}
return JK_FALSE;
}
NSAPI_PUBLIC int jk_init(pblock *pb,
Session *sn,
Request *rq)
{
char *worker_prp_file = pblock_findval(JK_WORKER_FILE_TAG, pb);
char *log_level_str = pblock_findval(JK_LOG_LEVEL_TAG, pb);
char *log_file = pblock_findval(JK_LOG_FILE_TAG, pb);
int rc = REQ_ABORTED;
jk_map_t *init_map;
fprintf(stderr, "In jk_init %s %s %s\n",worker_prp_file, log_level_str, log_file);
if(!worker_prp_file) {
worker_prp_file = JK_WORKER_FILE_DEF;
}
if(!log_level_str) {
log_level_str = JK_LOG_LEVEL_DEF;
}
if(!jk_open_file_logger(&logger, log_file,
jk_parse_log_level(log_level_str))) {
logger = NULL;
}
if(map_alloc(&init_map)) {
if(map_read_properties(init_map, worker_prp_file)) {
int sleep_cnt;
SYS_THREAD s;
s = systhread_start(SYSTHREAD_DEFAULT_PRIORITY,
0,
init_workers_on_other_threads,
init_map);
for(sleep_cnt = 0 ; sleep_cnt < 60 ; sleep_cnt++) {
systhread_sleep(1000);
jk_log(logger, JK_LOG_DEBUG, "jk_init, a second passed\n");
if(init_on_other_thread_is_done) {
break;
}
}
if(init_on_other_thread_is_done &&
init_on_other_thread_is_ok) {
magnus_atrestart(jk_term, NULL);
rc = REQ_PROCEED;
}
/* if(wc_open(init_map, logger)) {
magnus_atrestart(jk_term, NULL);
rc = REQ_PROCEED;
}
*/
}
map_free(&init_map);
}
return rc;
}
NSAPI_PUBLIC void jk_term(void *p)
{
wc_close(logger);
if(logger) {
jk_close_file_logger(&logger);
}
}
NSAPI_PUBLIC int jk_service(pblock *pb,
Session *sn,
Request *rq)
{
char *worker_name = pblock_findval(JK_WORKER_NAME_TAG, pb);
char *uri_pattern = pblock_findval(URI_PATTERN, pb);
jk_worker_t *worker;
int rc = REQ_ABORTED;
if(uri_pattern) {
char *uri = pblock_findval("uri", rq->reqpb);
if(0 != shexp_match(uri, uri_pattern)) {
return REQ_NOACTION;
}
}
if(!worker_name) {
worker_name = JK_AJP12_WORKER_NAME;
}
worker = wc_get_worker_for_name(worker_name, logger);
if(worker) {
nsapi_private_data_t private_data;
jk_ws_service_t s;
jk_pool_atom_t buf[SMALL_POOL_SIZE];
jk_open_pool(&private_data.p, buf, sizeof(buf));
private_data.request_started = JK_FALSE;
private_data.pb = pb;
private_data.sn = sn;
private_data.rq = rq;
jk_init_ws_service(&s);
s.ws_private = &private_data;
s.pool = &private_data.p;
if(init_ws_service(&private_data, &s)) {
jk_endpoint_t *e = NULL;
if(worker->get_endpoint(worker, &e, logger)) {
int recover = JK_FALSE;
if(e->service(e, &s, logger, &recover)) {
rc = REQ_PROCEED;
}
e->done(&e, logger);
}
}
jk_close_pool(&private_data.p);
}
return rc;
}
static int init_ws_service(nsapi_private_data_t *private_data,
jk_ws_service_t *s)
{
char *tmp;
int rc;
s->jvm_route = NULL;
s->start_response = start_response;
s->read = ws_read;
s->write = ws_write;
s->auth_type = pblock_findval("auth-type", private_data->rq->vars);
s->remote_user = pblock_findval("auth-user", private_data->rq->vars);
s->content_length = 0;
tmp = NULL;
rc = request_header("content-length",
&tmp,
private_data->sn,
private_data->rq);
if((rc != REQ_ABORTED) && tmp) {
s->content_length = atoi(tmp);
}
s->method = pblock_findval("method", private_data->rq->reqpb);
s->protocol = pblock_findval("protocol", private_data->rq->reqpb);
s->remote_host = session_dns(private_data->sn);
s->remote_addr = pblock_findval("ip", private_data->sn->client);
s->req_uri = pblock_findval("uri", private_data->rq->reqpb);
s->query_string = pblock_findval("query", private_data->rq->reqpb);
s->server_name = server_hostname;
s->server_port = server_portnum;
s->server_software = system_version();
s->headers_names = NULL;
s->headers_values = NULL;
s->num_headers = 0;
s->is_ssl = security_active;
if(s->is_ssl) {
s->ssl_cert = pblock_findval("auth-cert", private_data->rq->vars);
if(s->ssl_cert) {
s->ssl_cert_len = strlen(s->ssl_cert);
}
s->ssl_cipher = pblock_findval("cipher", private_data->sn->client);
s->ssl_session = pblock_findval("ssl-id", private_data->sn->client);
} else {
s->ssl_cert = NULL;
s->ssl_cert_len = 0;
s->ssl_cipher = NULL;
s->ssl_session = NULL;
}
return setup_http_headers(private_data, s);
}
static int setup_http_headers(nsapi_private_data_t *private_data,
jk_ws_service_t *s)
{
pblock *headers_jar = private_data->rq->headers;
int cnt;
int i;
for(i = 0, cnt = 0 ; i < headers_jar->hsize ; i++) {
struct pb_entry *h = headers_jar->ht[i];
while(h && h->param) {
cnt++;
h = h->next;
}
}
if(cnt) {
s->headers_names = jk_pool_alloc(&private_data->p, cnt * sizeof(char *));
s->headers_values = jk_pool_alloc(&private_data->p, cnt * sizeof(char *));
if(s->headers_names && s->headers_values) {
for(i = 0, cnt = 0 ; i < headers_jar->hsize ; i++) {
struct pb_entry *h = headers_jar->ht[i];
while(h && h->param) {
s->headers_names[cnt] = h->param->name;
s->headers_values[cnt] = h->param->value;
cnt++;
h = h->next;
}
}
s->num_headers = cnt;
return JK_TRUE;
}
} else {
s->num_headers = cnt;
s->headers_names = NULL;
s->headers_values = NULL;
return JK_TRUE;
}
return JK_FALSE;
}
1.1 jakarta-tomcat/proposals/web-connector/native/netscape/nsapi.dsp
Index: nsapi.dsp
===================================================================
# Microsoft Developer Studio Project File - Name="nsapi" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
CFG=nsapi - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "nsapi.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "nsapi.mak" CFG="nsapi - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "nsapi - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE "nsapi - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
MTL=midl.exe
RSC=rc.exe
!IF "$(CFG)" == "nsapi - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "nsapi_release"
# PROP Intermediate_Dir "nsapi_release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "NSAPI_EXPORTS" /YX /FD /c
# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\common" /I "$(NS_HOME)\include" /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\win32" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "NSAPI_EXPORTS" /D "XP_WIN32" /YX /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
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 LINK32 wsock32.lib ns-httpd36.lib /nologo /dll /machine:I386 /out:"nsapi_release/nsapi_redirect.dll" /libpath:"$(NS_HOME)\lib"
!ELSEIF "$(CFG)" == "nsapi - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "nsapi___Win32_Debug"
# PROP BASE Intermediate_Dir "nsapi___Win32_Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "nsapi_debug"
# PROP Intermediate_Dir "nsapi_debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "NSAPI_EXPORTS" /YX /FD /GZ /c
# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\common" /I "$(NS_HOME)\include" /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\win32" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "NSAPI_EXPORTS" /D "XP_WIN32" /D "MCC_HTTPD" /D "SPAPI20" /YX /FD /GZ /c
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
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 LINK32 wsock32.lib ns-httpd36.lib /nologo /dll /debug /machine:I386 /out:"nsapi_debug/nsapi_redirect.dll" /pdbtype:sept /libpath:"$(NS_HOME)\lib"
!ENDIF
# Begin Target
# Name "nsapi - Win32 Release"
# Name "nsapi - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=..\common\jk_ajp12_worker.c
# End Source File
# Begin Source File
SOURCE=..\common\jk_ajp13.c
# End Source File
# Begin Source File
SOURCE=..\common\jk_ajp13_worker.c
# End Source File
# Begin Source File
SOURCE=..\common\jk_connect.c
# End Source File
# Begin Source File
SOURCE=..\common\jk_jni_worker.c
# End Source File
# Begin Source File
SOURCE=..\common\jk_lb_worker.c
# End Source File
# Begin Source File
SOURCE=..\common\jk_map.c
# End Source File
# Begin Source File
SOURCE=..\common\jk_msg_buff.c
# End Source File
# Begin Source File
SOURCE=.\jk_nsapi_plugin.c
# End Source File
# Begin Source File
SOURCE=..\common\jk_pool.c
# End Source File
# Begin Source File
SOURCE=..\common\jk_sockbuf.c
# End Source File
# Begin Source File
SOURCE=..\common\jk_uri_worker_map.c
# End Source File
# Begin Source File
SOURCE=..\common\jk_util.c
# End Source File
# Begin Source File
SOURCE=..\common\jk_worker.c
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# Begin Source File
SOURCE=..\common\jk_ajp12_worker.h
# End Source File
# Begin Source File
SOURCE=..\common\jk_ajp13.h
# End Source File
# Begin Source File
SOURCE=..\common\jk_ajp13_worker.h
# End Source File
# Begin Source File
SOURCE=..\common\jk_connect.h
# End Source File
# Begin Source File
SOURCE=..\common\jk_global.h
# End Source File
# Begin Source File
SOURCE=..\common\jk_jni_worker.h
# End Source File
# Begin Source File
SOURCE=..\common\jk_lb_worker.h
# End Source File
# Begin Source File
SOURCE=..\common\jk_logger.h
# End Source File
# Begin Source File
SOURCE=..\common\jk_map.h
# End Source File
# Begin Source File
SOURCE=..\common\jk_msg_buff.h
# End Source File
# Begin Source File
SOURCE=..\common\jk_mt.h
# End Source File
# Begin Source File
SOURCE=..\common\jk_pool.h
# End Source File
# Begin Source File
SOURCE=..\common\jk_service.h
# End Source File
# Begin Source File
SOURCE=..\common\jk_sockbuf.h
# End Source File
# Begin Source File
SOURCE=..\common\jk_uri_worker_map.h
# End Source File
# Begin Source File
SOURCE=..\common\jk_util.h
# End Source File
# Begin Source File
SOURCE=..\common\jk_worker.h
# End Source File
# Begin Source File
SOURCE=..\common\jk_worker_list.h
# End Source File
# End Group
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
# End Group
# End Target
# End Project
1.1 jakarta-tomcat/proposals/web-connector/native/netscape/nsapi.dsw
Index: nsapi.dsw
===================================================================
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "nsapi"=".\nsapi.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################