bjh 99/05/04 04:21:17
Modified: src CHANGES Configure Makefile.tmpl src/main http_config.c http_main.c src/modules/proxy .cvsignore Makefile.tmpl src/modules/standard .cvsignore mod_so.c src/os/os2 os.c os.h Added: src ApacheCoreOS2.def src/modules/proxy Makefile.OS2 src/modules/standard Makefile.OS2 Log: OS/2: Add support for building loadable modules as DLLs. - EXE files can't be linked to at run time so a shared core is needed. - As uninitialized global variables can't be exported I had to add initializers to the exported globals that didn't already have one. - Due to an 'optimization' done for OS/2 v3, DLL file names are limited to 8 characters plus the .dll extension. As most of the module names are longer than that I've had to map the module names to a shorter version. This is done in src/modules/standard/Makefile.OS2. The short version of the module name must be used in the SharedModule statement in Configuration and in the LoadModule directive in httpd.conf - I had to mess with the dependencies in src/Makefile regarding the "libhttpd.ep" as I don't want to build one. It _should_ still work for the sysv people it's meant for but I have no way to check. - .def files are needed for all DLLs. The one for the core dll is based on the Win32 one and is called ApacheCoreOS2.def. The .def files for modules are generated on the fly by the makefile. Revision Changes Path 1.1346 +3 -0 apache-1.3/src/CHANGES Index: CHANGES =================================================================== RCS file: /home/cvs/apache-1.3/src/CHANGES,v retrieving revision 1.1345 retrieving revision 1.1346 diff -u -r1.1345 -r1.1346 --- CHANGES 1999/05/04 02:57:08 1.1345 +++ CHANGES 1999/05/04 11:21:07 1.1346 @@ -1,5 +1,8 @@ Changes with Apache 1.3.7 + *) OS/2: Add support for building loadable modules using DLLs. + [Brian Havard] + *) Add iconsdir, htdocsdir, and cgidir to config.layout. [Wilfredo Sanchez] 1.342 +29 -7 apache-1.3/src/Configure Index: Configure =================================================================== RCS file: /home/cvs/apache-1.3/src/Configure,v retrieving revision 1.341 retrieving revision 1.342 diff -u -r1.341 -r1.342 --- Configure 1999/05/04 01:07:30 1.341 +++ Configure 1999/05/04 11:21:07 1.342 @@ -331,8 +331,8 @@ OSDIR="os/os2" DEF_WANTHSREGEX=yes OS='EMX OS/2' - CFLAGS="$CFLAGS -DOS2 -Zbsd-signals -Zbin-files -DTCPIPV4 -g" - LDFLAGS="$LDFLAGS -Zexe" + CFLAGS="$CFLAGS -DOS2 -Zbsd-signals -Zbin-files -Zcrtdll -DTCPIPV4 -g" + LDFLAGS="$LDFLAGS -Zexe -Zcrtdll" LIBS="$LIBS -lsocket -lufc -lbsd" DBM_LIB="-lgdbm" SHELL=sh @@ -947,6 +947,8 @@ SHLIB_SUFFIX_NAME=so SHLIB_SUFFIX_DEPTH=all SHLIB_EXPORT_FILES=no + SHARED_CORE_EP='lib$(TARGET).ep' + SHCORE_IMPLIB='' case "$PLAT" in *-linux1) CFLAGS_SHLIB="-fpic" @@ -1169,6 +1171,19 @@ LDFLAGS_SHLIB_EXPORT="-Zlink=dynamic -Wl,-Bexport" CFLAGS_SHLIB='-Zpic' ;; + *-OS/2*) + DEF_SHARED_CORE=yes + LDFLAGS_SHLIB="`echo $LDFLAGS|sed -e s/-Zexe//` -Zdll" + SHLIB_SUFFIX_NAME=dll + SHLIB_SUFFIX_DEPTH=0 + LD_SHLIB=$CC + LD_SHCORE_DEF="ApacheCoreOS2.def" + LD_SHCORE_LIBS="$LIBS" + LIBS_SHLIB='$(SRCDIR)/ApacheCoreOS2.a -lsocket -lbsd' + SHARED_CORE_EP='' + SHCORE_IMPLIB='ApacheCoreOS2.a' + OS_MODULE_INCLUDE='Makefile.OS2' + ;; *) ## ok, no known explict support for shared objects ## on this platform, but we give not up immediately. @@ -1518,7 +1533,7 @@ . ./$tmpfile3 fi rm -f $tmpfile2 $tmpfile3 - if [ "x$ext" != "xso" ]; then + if [ "x$ext" != "x$SHLIB_SUFFIX_NAME" ]; then ext=o fi fi @@ -1526,11 +1541,11 @@ modname=`echo $modbase | sed 's/^.*\///' | \ sed 's/^mod_//' | sed 's/^lib//' | sed 's/$/_module/'` fi - if [ "x$ext" != "xso" ]; then + if [ "x$ext" != "x$SHLIB_SUFFIX_NAME" ]; then echo "Module $modname $modbase.$ext" >>$tmpfile fi # optionally generate export file for some linkers - if [ "x$ext" = "xso" -a "x$SHLIB_EXPORT_FILES" = "xyes" ]; then + if [ "x$ext" = "x$SHLIB_SUFFIX_NAME" -a "x$SHLIB_EXPORT_FILES" = "xyes" ]; then echo "$modname" >$modbase.exp fi done @@ -1549,7 +1564,6 @@ #################################################################### ## Now the SHARED_CHAIN stuff ## -LIBS_SHLIB='' if [ "x$using_shlib" = "x1" ] ; then if [ "x$RULE_SHARED_CHAIN" = "xdefault" ] ; then RULE_SHARED_CHAIN=$DEF_SHARED_CHAIN @@ -1618,6 +1632,10 @@ if [ "x$TLDFLAGS_SHLIB_EXPORT" = "x" ]; then echo "LDFLAGS_SHLIB_EXPORT=$LDFLAGS_SHLIB_EXPORT" >> Makefile.config fi + echo "LD_SHCORE_DEF=$LD_SHCORE_DEF" >> Makefile.config + echo "LD_SHCORE_LIBS=$LD_SHCORE_LIBS" >> Makefile.config + echo "SHARED_CORE_EP=$SHARED_CORE_EP" >> Makefile.config + echo "SHCORE_IMPLIB=$SHCORE_IMPLIB" >> Makefile.config fi #################################################################### @@ -2006,7 +2024,7 @@ ar cr $@ $(OBJS) $(RANLIB) $@ -.SUFFIXES: .o .so +.SUFFIXES: .o .so .dll .c.o: $(CC) -c $(INCLUDES) $(CFLAGS) $< @@ -2032,6 +2050,10 @@ && rm Makefile.new EOF + fi + + if [ "x$OS_MODULE_INCLUDE" != "x" ]; then + echo "include $OS_MODULE_INCLUDE" >> $moddir/Makefile fi $CAT << 'EOF' >> $moddir/Makefile 1.111 +7 -3 apache-1.3/src/Makefile.tmpl Index: Makefile.tmpl =================================================================== RCS file: /home/cvs/apache-1.3/src/Makefile.tmpl,v retrieving revision 1.110 retrieving revision 1.111 diff -u -r1.110 -r1.111 --- Makefile.tmpl 1999/03/16 21:37:02 1.110 +++ Makefile.tmpl 1999/05/04 11:21:08 1.111 @@ -14,6 +14,10 @@ .c.o: $(CC) -c $(INCLUDES) $(CFLAGS) $< +# Used to generate import library for OS/2 +.def.a: + emximp -o $@ $< + all: @@Configuration@@ $(TARGET) @@Configuration@@: Configuration.tmpl @@ -33,10 +37,10 @@ target_compile_only: subdirs modules.o $(CC) -c $(INCLUDES) $(CFLAGS) buildmark.c -target_shared: lib$(TARGET).ep +target_shared: $(SHCORE_IMPLIB) $(SHARED_CORE_EP) lib$(TARGET).$(SHLIB_SUFFIX_NAME) $(CC) $(INCLUDES) $(CFLAGS) $(LDFLAGS) $(LDFLAGS_SHLIB_EXPORT) \ -o $(TARGET) -DSHARED_CORE_BOOTSTRAP main/http_main.c \ - ap/libap.a $(LIBS) + ap/libap.a $(LIBS) $(SHCORE_IMPLIB) lib$(TARGET).ep: lib$(TARGET).$(SHLIB_SUFFIX_NAME) $(CC) $(INCLUDES) $(CFLAGS) $(LDFLAGS) $(LDFLAGS_SHLIB_EXPORT) \ @@ -45,7 +49,7 @@ lib$(TARGET).$(SHLIB_SUFFIX_NAME): subdirs modules.o $(CC) -c $(INCLUDES) $(CFLAGS) buildmark.c - $(LD_SHLIB) $(LDFLAGS_SHLIB) -o lib$(TARGET).$(SHLIB_SUFFIX_NAME) buildmark.o $(OBJS) $(REGLIB) + $(LD_SHLIB) $(LDFLAGS_SHLIB) -o lib$(TARGET).$(SHLIB_SUFFIX_NAME) buildmark.o $(OBJS) $(REGLIB) $(LD_SHCORE_DEF) $(LD_SHCORE_LIBS) @if [ ".$(SHLIB_SUFFIX_LIST)" != . ]; then \ rm -f lib$(TARGET).$(SHLIB_SUFFIX_NAME).*; \ for suffix in $(SHLIB_SUFFIX_LIST) ""; do \ 1.1 apache-1.3/src/ApacheCoreOS2.def Index: ApacheCoreOS2.def =================================================================== ; ApacheCoreOS2.def : LIBRARY libhttpd INITINSTANCE DESCRIPTION 'Apache Web Server' EXPORTS ; Add new API calls to the end of this list. ap_MD5Final @1 ap_MD5Init @2 ap_MD5Update @3 ; ap_acquire_mutex @4 ap_add_cgi_vars @5 ap_add_common_vars @6 ap_add_loaded_module @7 ap_add_module @8 ap_add_named_module @9 ap_add_per_dir_conf @10 ap_add_per_url_conf @11 ap_add_version_component @12 ap_allow_options @13 ap_allow_overrides @14 ap_append_arrays @15 ap_array_cat @16 ap_auth_name @17 ap_auth_type @18 ap_basic_http_header @19 ap_bclose @20 ap_bcreate @21 ap_bfilbuf @22 ap_bfileno @23 ap_bflsbuf @24 ap_bflush @25 ap_bgetopt @26 ap_bgets @27 ap_bhalfduplex @28 ap_block_alarms @29 ap_blookc @30 ap_bnonblock @31 ap_bonerror @32 ap_bpushfd @33 ; ap_bpushh @34 ap_bputs @35 ap_bread @36 ap_bsetflag @37 ap_bsetopt @38 ap_bskiplf @39 ap_bspawn_child @40 ap_bwrite @41 ap_bytes_in_free_blocks @42 ap_bytes_in_pool @43 ap_call_exec @44 ap_can_exec @45 ap_cfg_closefile @46 ap_cfg_getc @47 ap_cfg_getline @48 ap_chdir_file @49 ; ap_check_alarm @50 ap_check_cmd_context @51 ap_checkmask @52 ap_cleanup_for_exec @53 ap_clear_module_list @54 ap_clear_pool @55 ap_clear_table @56 ap_close_piped_log @57 ap_construct_server @58 ap_construct_url @59 ap_content_type_tolower @60 ap_copy_array @61 ap_copy_array_hdr @62 ap_copy_table @63 ap_count_dirs @64 ap_cpystrn @65 ap_create_environment @66 ; ap_create_mutex @67 ap_create_per_dir_config @68 ap_custom_response @69 ap_default_port_for_request @70 ap_default_port_for_scheme @71 ap_default_type @72 ; ap_destroy_mutex @73 ap_destroy_pool @74 ap_destroy_sub_req @75 ap_die @76 ap_discard_request_body @77 ap_document_root @78 ap_each_byterange @79 ap_error_log2stderr @80 ap_escape_html @81 ap_escape_path_segment @82 ap_escape_quotes @83 ap_escape_shell_cmd @84 ap_exists_scoreboard_image @85 ap_finalize_request_protocol @86 ap_find_command @87 ap_find_command_in_modules @88 ap_find_last_token @89 ap_find_linked_module @90 ap_find_module_name @91 ap_find_path_info @92 ap_find_token @93 ap_get_basic_auth_pw @94 ap_get_client_block @95 ap_get_gmtoff @96 ap_get_limit_req_body @97 ap_get_remote_host @98 ap_get_remote_logname @99 ap_get_server_built @100 ap_get_server_name @101 ap_get_server_port @102 ap_get_server_version @103 ap_get_time @104 ap_get_token @105 ap_getparents @106 ap_getword @107 ap_getword_conf @108 ap_getword_conf_nc @109 ap_getword_nc @110 ap_getword_nulls @111 ap_getword_nulls_nc @112 ap_getword_white @113 ap_getword_white_nc @114 ap_gm_timestr_822 @115 ap_gname2id @116 ap_handle_command @117 ap_hard_timeout @118 ap_ht_time @119 ap_ind @120 ap_index_of_response @121 ap_init_virtual_host @122 ap_internal_redirect @123 ap_internal_redirect_handler @124 ap_is_directory @125 ap_is_fnmatch @126 ap_is_initial_req @127 ap_is_matchexp @128 ap_is_url @129 ap_kill_cleanup @130 ap_kill_cleanups_for_fd @131 ap_kill_cleanups_for_socket @132 ap_kill_timeout @133 ap_log_assert @134 ap_log_error_old @135 ap_log_reason @136 ap_log_unixerr @137 ap_make_array @138 ap_make_dirstr @139 ap_make_dirstr_parent @140 ap_make_dirstr_prefix @141 ap_make_full_path @142 ap_make_sub_pool @143 ap_make_table @144 ap_matches_request_vhost @145 ap_md5 @146 ap_md5_binary @147 ap_md5contextTo64 @148 ap_md5digest @149 ap_meets_conditions @150 ap_no2slash @151 ap_note_auth_failure @152 ap_note_basic_auth_failure @153 ap_note_cleanups_for_fd @154 ap_note_cleanups_for_file @155 ; ap_note_cleanups_for_h @156 ap_note_cleanups_for_socket @157 ap_note_digest_auth_failure @158 ap_note_subprocess @159 ; ap_open_mutex @160 ap_open_piped_log @161 ap_os_canonical_filename @162 ap_os_escape_path @163 ap_overlap_tables @164 ap_overlay_tables @165 ap_palloc @166 ap_parseHTTPdate @167 ap_parse_hostinfo_components @168 ap_parse_uri @169 ap_parse_uri_components @170 ap_pcalloc @171 ap_pcfg_open_custom @172 ap_pcfg_openfile @173 ap_pclosedir @174 ap_pclosef @175 ; ap_pcloseh @176 ap_pclosesocket @177 ap_pduphostent @178 ap_pfclose @179 ap_pfdopen @180 ap_pfopen @181 ap_pgethostbyname @182 ap_popendir @183 ap_popenf @184 ap_pregcomp @185 ap_pregfree @186 ap_pregsub @187 ap_psignature @188 ap_psocket @189 ap_pstrdup @190 ap_pstrndup @191 ap_push_array @192 ap_pvsprintf @193 ap_rationalize_mtime @194 ap_register_cleanup @195 ; ap_release_mutex @196 ap_remove_loaded_module @197 ap_remove_module @198 ap_requires @199 ap_reset_timeout @200 ap_rflush @201 ap_rind @202 ap_rputc @203 ap_rputs @204 ap_run_cleanup @205 ap_run_sub_req @206 ap_rwrite @207 ap_satisfies @208 ap_scan_script_header_err @209 ap_scan_script_header_err_buff @210 ap_scan_script_header_err_core @211 ap_send_fb @212 ap_send_fb_length @213 ap_send_fd @214 ap_send_fd_length @215 ap_send_http_header @216 ap_send_http_trace @217 ap_send_mmap @218 ap_send_size @219 ap_server_root_relative @220 ap_set_byterange @221 ap_set_content_length @222 ap_set_etag @223 ap_set_keepalive @224 ap_set_last_modified @225 ap_setup_client_block @226 ap_should_client_block @227 ap_soft_timeout @228 ap_some_auth_required @229 ap_spawn_child @230 ap_srm_command_loop @231 ap_str_tolower @232 ap_strcasecmp_match @233 ap_strcmp_match @234 ap_sub_req_lookup_file @235 ap_sub_req_lookup_uri @236 ap_sync_scoreboard_image @237 ap_table_add @238 ap_table_addn @239 ap_table_get @240 ap_table_merge @241 ap_table_mergen @242 ap_table_set @243 ap_table_setn @244 ap_table_unset @245 ap_tm2sec @246 ap_uname2id @247 ap_unblock_alarms @248 ap_unescape_url @249 ap_unparse_uri_components @250 ap_update_mtime @251 ap_uudecode @252 ap_uuencode @253 ap_vbprintf @254 ap_vformatter @255 ap_vsnprintf @256 ; closedir @257 ; opendir @258 ; os_spawnv @259 ; os_spawnve @260 ; os_stat @261 ; readdir @262 regcomp @263 regexec @264 regfree @265 ; access_module @266 ; alias_module @267 ap_bprintf @268 ap_bvputs @269 ap_day_snames @270 ap_extended_status @271 ap_limit_section @272 ap_loaded_modules @273 ap_log_error @274 ap_log_printf @275 ap_log_rerror @276 ap_month_snames @277 ap_null_cleanup @278 ap_psprintf @279 ap_pstrcat @280 ap_restart_time @281 ap_rprintf @282 ap_rvputs @283 ap_scoreboard_image @284 ap_send_header_field @285 ap_server_argv0 @286 ap_server_root @287 ap_set_file_slot @288 ap_set_flag_slot @289 ap_set_string_slot @290 ap_set_string_slot_lower @291 ap_snprintf @292 ap_suexec_enabled @293 ap_table_do @294 ap_main @295 ; asis_module @296 ; auth_module @297 ; autoindex_module @298 ; cgi_module @299 ; config_log_module @300 core_module @301 ; dir_module @302 ; env_module @303 ; imap_module @304 ; includes_module @305 ; mime_module @306 ; negotiation_module @307 ; os_spawnle @308 ; setenvif_module @309 so_module @310 top_module @311 ap_fnmatch @312 ap_method_number_of @313 ap_exists_config_define @314 ap_single_module_configure @315 ap_make_etag @317 ap_array_pstrcat @318 ; ap_os_is_filename_valid @319 ap_find_list_item @320 ap_MD5Encode @321 ap_validate_password @322 ap_size_list_item @323 ap_get_list_item @324 ap_scoreboard_fname @325 ap_pid_fname @326 ap_excess_requests_per_child @327 ap_threads_per_child @328 ap_max_requests_per_child @329 ap_daemons_to_start @330 ap_daemons_min_free @331 ap_daemons_max_free @332 ap_daemons_limit @333 ap_user_name @334 ap_user_id @335 ap_group_id @336 ap_standalone @337 ap_server_confname @338 ap_sub_req_method_uri @339 strcasecmp @340 strncasecmp @341 ap_my_generation @342 ap_dummy_mutex @343 ap_signal @344 1.144 +1 -1 apache-1.3/src/main/http_config.c Index: http_config.c =================================================================== RCS file: /home/cvs/apache-1.3/src/main/http_config.c,v retrieving revision 1.143 retrieving revision 1.144 diff -u -r1.143 -r1.144 --- http_config.c 1999/03/10 10:34:06 1.143 +++ http_config.c 1999/05/04 11:21:10 1.144 @@ -99,7 +99,7 @@ */ static int dynamic_modules = 0; API_VAR_EXPORT module *top_module = NULL; -API_VAR_EXPORT module **ap_loaded_modules; +API_VAR_EXPORT module **ap_loaded_modules=NULL; typedef int (*handler_func) (request_rec *); typedef void *(*dir_maker_func) (pool *, char *); 1.434 +31 -18 apache-1.3/src/main/http_main.c Index: http_main.c =================================================================== RCS file: /home/cvs/apache-1.3/src/main/http_main.c,v retrieving revision 1.433 retrieving revision 1.434 diff -u -r1.433 -r1.434 --- http_main.c 1999/05/01 17:02:26 1.433 +++ http_main.c 1999/05/04 11:21:10 1.434 @@ -229,26 +229,26 @@ * for the most part the only code that acts on 'em. (Hmmm... mod_main.c?) */ -int ap_standalone; -uid_t ap_user_id; -char *ap_user_name; -gid_t ap_group_id; +int ap_standalone=0; +uid_t ap_user_id=0; +char *ap_user_name=NULL; +gid_t ap_group_id=0; #ifdef MULTIPLE_GROUPS gid_t group_id_list[NGROUPS_MAX]; #endif -int ap_max_requests_per_child; -int ap_threads_per_child; -int ap_excess_requests_per_child; -char *ap_pid_fname; -char *ap_scoreboard_fname; +int ap_max_requests_per_child=0; +int ap_threads_per_child=0; +int ap_excess_requests_per_child=0; +char *ap_pid_fname=NULL; +char *ap_scoreboard_fname=NULL; char *ap_lock_fname; -char *ap_server_argv0; +char *ap_server_argv0=NULL; struct in_addr ap_bind_address; -int ap_daemons_to_start; -int ap_daemons_min_free; -int ap_daemons_max_free; -int ap_daemons_limit; -time_t ap_restart_time; +int ap_daemons_to_start=0; +int ap_daemons_min_free=0; +int ap_daemons_max_free=0; +int ap_daemons_limit=0; +time_t ap_restart_time=0; int ap_suexec_enabled = 0; int ap_listenbacklog; int ap_dump_settings = 0; @@ -281,8 +281,8 @@ listen_rec *ap_listeners; static listen_rec *head_listener; -API_VAR_EXPORT char ap_server_root[MAX_STRING_LEN]; -char ap_server_confname[MAX_STRING_LEN]; +API_VAR_EXPORT char ap_server_root[MAX_STRING_LEN]=""; +char ap_server_confname[MAX_STRING_LEN]=""; char ap_coredump_dir[MAX_STRING_LEN]; array_header *ap_server_pre_read_config; @@ -2651,7 +2651,7 @@ static int volatile shutdown_pending; static int volatile restart_pending; static int volatile is_graceful; -ap_generation_t volatile ap_my_generation; +ap_generation_t volatile ap_my_generation=0; #ifdef WIN32 /* @@ -6355,6 +6355,18 @@ #endif /* ndef SHARED_CORE_TIESTATIC */ #else /* ndef SHARED_CORE_BOOTSTRAP */ +#ifdef OS2 +/* Shared core loader for OS/2 */ + +int ap_main(int argc, char *argv[]); /* Load time linked from libhttpd.dll */ + +int main(int argc, char *argv[]) +{ + return ap_main(argc, argv); +} + +#else + /* ** Standalone Bootstrap Program for Shared Core support ** @@ -6476,6 +6488,7 @@ return 0; } +#endif /* def OS2 */ #endif /* ndef SHARED_CORE_BOOTSTRAP */ 1.6 +2 -0 apache-1.3/src/modules/proxy/.cvsignore Index: .cvsignore =================================================================== RCS file: /home/cvs/apache-1.3/src/modules/proxy/.cvsignore,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- .cvsignore 1998/05/10 13:04:34 1.5 +++ .cvsignore 1999/05/04 11:21:12 1.6 @@ -8,3 +8,5 @@ Makefile *.lo *.so +*.dll +*.def 1.26 +6 -1 apache-1.3/src/modules/proxy/Makefile.tmpl Index: Makefile.tmpl =================================================================== RCS file: /home/cvs/apache-1.3/src/modules/proxy/Makefile.tmpl,v retrieving revision 1.25 retrieving revision 1.26 diff -u -r1.25 -r1.26 --- Makefile.tmpl 1998/09/07 06:59:34 1.25 +++ Makefile.tmpl 1999/05/04 11:21:13 1.26 @@ -21,7 +21,12 @@ rm -f $@ $(LD_SHLIB) $(LDFLAGS_SHLIB) -o $@ $(OBJS_PIC) $(LIBS_SHLIB) -.SUFFIXES: .o .lo +libproxy.dll: $(OBJS_PIC) mod_proxy.def + $(LD_SHLIB) $(LDFLAGS_SHLIB) -o $* $(OBJS_PIC) $(LIBS_SHLIB) + emxbind -b -q -s -h0 -dmod_proxy.def $* && \ + rm $* + +.SUFFIXES: .o .lo .dll .c.o: $(CC) -c $(INCLUDES) $(CFLAGS) $< 1.1 apache-1.3/src/modules/proxy/Makefile.OS2 Index: Makefile.OS2 =================================================================== # Extra rules for making DLLs for OS/2 %.def : %.c echo "LIBRARY $* INITINSTANCE" > $@ echo "EXPORTS" >> $@ grep "^module .*=" $< | sed "s/module .* \(.*\) =/ \1/" >> $@ 1.3 +2 -0 apache-1.3/src/modules/standard/.cvsignore Index: .cvsignore =================================================================== RCS file: /home/cvs/apache-1.3/src/modules/standard/.cvsignore,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- .cvsignore 1998/05/10 13:04:35 1.2 +++ .cvsignore 1999/05/04 11:21:14 1.3 @@ -1,3 +1,5 @@ Makefile *.lo *.so +*.dll +*.def 1.32 +3 -3 apache-1.3/src/modules/standard/mod_so.c Index: mod_so.c =================================================================== RCS file: /home/cvs/apache-1.3/src/modules/standard/mod_so.c,v retrieving revision 1.31 retrieving revision 1.32 diff -u -r1.31 -r1.32 --- mod_so.c 1999/03/01 15:37:53 1.31 +++ mod_so.c 1999/05/04 11:21:14 1.32 @@ -251,7 +251,7 @@ "' in file ", szModuleFile, ": ", ap_os_dso_error(), NULL); } modi->modp = modp; - modp->dynamic_load_handle = modhandle; + modp->dynamic_load_handle = (void *)modhandle; /* * Make sure the found module structure is really a module structure @@ -291,7 +291,7 @@ static const char *load_file(cmd_parms *cmd, void *dummy, char *filename) { - void *handle; + ap_os_dso_handle_t handle; char *file; file = ap_server_root_relative(cmd->pool, filename); @@ -307,7 +307,7 @@ ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, NULL, "loaded file %s", filename); - ap_register_cleanup(cmd->pool, handle, unload_file, ap_null_cleanup); + ap_register_cleanup(cmd->pool, (void *)handle, unload_file, ap_null_cleanup); return NULL; } 1.1 apache-1.3/src/modules/standard/Makefile.OS2 Index: Makefile.OS2 =================================================================== # Extra rules for making DLLs for OS/2 define mkdll $(LD_SHLIB) $(LDFLAGS_SHLIB) -o $* $(<:%.c=%.o) $(LIBS_SHLIB) $(<:%.o=%.def) && \ emxbind -b -q -s -h0 -d$(<:%.o=%.def) $* && \ rm $* endef %.def : %.c echo "LIBRARY $* INITINSTANCE" > $@ echo "EXPORTS" >> $@ grep "^module .*=" $< | sed "s/module.* \(.*\) =.*/ \1/" >> $@ access.dll: mod_access.o mod_access.def $(mkdll) actions.dll: mod_actions.o mod_actions.def $(mkdll) alias.dll: mod_alias.o mod_alias.def $(mkdll) asis.dll: mod_asis.o mod_asis.def $(mkdll) auth.dll: mod_auth.o mod_auth.def $(mkdll) auth_ano.dll: mod_auth_anon.o mod_auth_anon.def $(mkdll) auth_db.dll: mod_auth_db.o mod_auth_db.def $(mkdll) auth_dbm.dll: mod_auth_dbm.o mod_auth_dbm.def $(mkdll) autoinde.dll: mod_autoindex.o mod_autoindex.def $(mkdll) cern_met.dll: mod_cern_meta.o mod_cern_meta.def $(mkdll) cgi.dll: mod_cgi.o mod_cgi.def $(mkdll) digest.dll: mod_digest.o mod_digest.def $(mkdll) dir.dll: mod_dir.o mod_dir.def $(mkdll) env.dll: mod_env.o mod_env.def $(mkdll) expires.dll: mod_expires.o mod_expires.def $(mkdll) headers.dll: mod_headers.o mod_headers.def $(mkdll) imap.dll: mod_imap.o mod_imap.def $(mkdll) include.dll: mod_include.o mod_include.def $(mkdll) info.dll: mod_info.o mod_info.def $(mkdll) log_agen.dll: mod_log_agent.o mod_log_agent.def $(mkdll) log_conf.dll: mod_log_config.o mod_log_config.def $(mkdll) log_refe.dll: mod_log_referer.o mod_log_referer.def $(mkdll) mime.dll: mod_mime.o mod_mime.def $(mkdll) mime_mag.dll: mod_mime_magic.o mod_mime_magic.def $(mkdll) negotiat.dll: mod_negotiation.o mod_negotiation.def $(mkdll) rewrite.dll: mod_rewrite.o mod_rewrite.def $(mkdll) setenvif.dll: mod_setenvif.o mod_setenvif.def $(mkdll) so.dll: mod_so.o mod_so.def $(mkdll) speling.dll: mod_speling.o mod_speling.def $(mkdll) status.dll: mod_status.o mod_status.def $(mkdll) uniqueid.dll: mod_unique_id.o mod_unique_id.def $(mkdll) userdir.dll: mod_userdir.o mod_userdir.def $(mkdll) usertrac.dll: mod_usertrack.o mod_usertrack.def $(mkdll) 1.2 +54 -0 apache-1.3/src/os/os2/os.c Index: os.c =================================================================== RCS file: /home/cvs/apache-1.3/src/os/os2/os.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- os.c 1997/11/05 12:48:23 1.1 +++ os.c 1999/05/04 11:21:15 1.2 @@ -4,3 +4,57 @@ */ #include "os.h" +#define INCL_DOS +#include <os2.h> +#include <stdio.h> + +static int rc=0; + +void ap_os_dso_init(void) +{ +} + + + +ap_os_dso_handle_t ap_os_dso_load(const char *module_name) +{ + char errorstr[200]; + HMODULE handle; + + rc = DosLoadModule(errorstr, sizeof(errorstr), module_name, &handle); + + if (rc == 0) + return handle; + + return 0; +} + + + +void ap_os_dso_unload(ap_os_dso_handle_t handle) +{ + DosFreeModule(handle); +} + + + +void *ap_os_dso_sym(ap_os_dso_handle_t handle, const char *funcname) +{ + PFN func; + + rc = DosQueryProcAddr( handle, 0, funcname, &func ); + + if (rc == 0) + return func; + + return NULL; +} + + + +const char *ap_os_dso_error(void) +{ + static char message[30]; + sprintf( message, "OS/2 error code %d", rc ); + return message; +} 1.14 +8 -0 apache-1.3/src/os/os2/os.h Index: os.h =================================================================== RCS file: /home/cvs/apache-1.3/src/os/os2/os.h,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- os.h 1999/05/01 05:15:52 1.13 +++ os.h 1999/05/04 11:21:16 1.14 @@ -38,4 +38,12 @@ /* OS/2 doesn't have symlinks so S_ISLNK is always false */ #define S_ISLNK(m) 0 +/* Dynamic loading functions */ +#define ap_os_dso_handle_t unsigned long +void ap_os_dso_init(void); +ap_os_dso_handle_t ap_os_dso_load(const char *); +void ap_os_dso_unload(ap_os_dso_handle_t); +void * ap_os_dso_sym(ap_os_dso_handle_t, const char *); +const char *ap_os_dso_error(void); + #endif /* ! APACHE_OS_H */