You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by bj...@hyperreal.org on 1999/05/04 13:21:17 UTC

cvs commit: apache-1.3/src/os/os2 os.c os.h

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 */