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

Reply via email to