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 <[EMAIL PROTECTED]> * * 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> {{{ }}} ###############################################################################