You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by ma...@apache.org on 2001/04/02 11:22:11 UTC

cvs commit: apache-1.3/src/support logresolve.c

martin      01/04/02 02:22:11

  Modified:    .        STATUS
               src      CHANGES Configure Makefile.tmpl
               src/helpers GuessOS
               src/include ap_config.h
               src/main http_main.c
               src/support logresolve.c
  Added:       src/os/cygwin Makefile.tmpl os-inline.c os.c os.h
  Log:
  Integrate support for the Cygwin 1.x platform (a POSIX emulation layer
  for Win32 systems, see http://www.cygwin.com)
  [Stipe Tolj <to...@wapme-systems.de>]
  
  PR: #2936
  Submitted by:	Stipe Tolj <to...@wapme-systems.de>
  Reviewed by:	Roy Fielding, Martin Kraemer
  
  Revision  Changes    Path
  1.935     +1 -6      apache-1.3/STATUS
  
  Index: STATUS
  ===================================================================
  RCS file: /home/cvs/apache-1.3/STATUS,v
  retrieving revision 1.934
  retrieving revision 1.935
  diff -u -u -r1.934 -r1.935
  --- STATUS	2001/03/28 12:20:20	1.934
  +++ STATUS	2001/04/02 09:22:02	1.935
  @@ -1,5 +1,5 @@
   APACHE 1.3 STATUS:						-*-text-*-
  -  Last modified at [$Date: 2001/03/28 12:20:20 $]
  +  Last modified at [$Date: 2001/04/02 09:22:02 $]
   
   Release:
   
  @@ -62,11 +62,6 @@
           Message-ID: <19...@chill.innovation.ch>
           Status:
   
  -    * Stipe Tolj's Cygwin32 port
  -        Message-ID: <3A...@wapme-systems.de> for 1.3.19
  -	Original PR#: 2936
  -        Status: Roy +1
  -        Lame-o conceptual musings: +1 from Lars, Martin, Ken, Jim
   
   Documentation that needs writing:
   
  
  
  
  1.1674    +4 -0      apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.1673
  retrieving revision 1.1674
  diff -u -u -r1.1673 -r1.1674
  --- CHANGES	2001/04/02 06:25:39	1.1673
  +++ CHANGES	2001/04/02 09:22:04	1.1674
  @@ -1,5 +1,9 @@
   Changes with Apache 1.3.20
   
  +  *) Integrate support for the Cygwin 1.x platform (a POSIX emulation layer
  +     for Win32 systems, see http://www.cygwin.com)
  +     [Stipe Tolj <to...@wapme-systems.de>]
  +
     *) Changes to 'ab'; fixed int overrun's, added statistics, output in
        csv/gnuplot format, rudimentary ssl support and various other tweaks
        to make results more true to what is measured. The upshot of this it
  
  
  
  1.423     +31 -1     apache-1.3/src/Configure
  
  Index: Configure
  ===================================================================
  RCS file: /home/cvs/apache-1.3/src/Configure,v
  retrieving revision 1.422
  retrieving revision 1.423
  diff -u -u -r1.422 -r1.423
  --- Configure	2001/02/28 08:46:33	1.422
  +++ Configure	2001/04/02 09:22:04	1.423
  @@ -835,6 +835,13 @@
          DEF_WANTHSREGEX=yes
          LIBS="$LIBS"
          ;;
  +    *-cygwin*)
  +	OS='Cygwin'
  +	OSDIR="os/cygwin"
  +	CFLAGS="$CFLAGS -DCYGWIN"
  +	DEF_WANTHSREGEX=yes
  +	LIBS="$LIBS -lcrypt"
  +	;;
       *) # default: Catch systems we don't know about
   	OS='Unknown and unsupported OS'
       	echo Sorry, but we cannot grok \"$PLAT\"
  @@ -1378,6 +1385,19 @@
   	    LDFLAGS_MOD_SHLIB=$LDFLAGS_SHLIB
   	    LDFLAGS_SHLIB_EXPORT=""
               ;;
  +	*-cygwin*)
  +	    DEF_SHARED_CORE=yes
  +	    LDFLAGS_SHLIB="-g"
  +	    LDFLAGS_MOD_SHLIB=$LDFLAGS_SHLIB
  +	    SHLIB_SUFFIX_NAME=dll
  +	    SHLIB_SUFFIX_DEPTH=0
  +	    DLL_IMPORT_LIB='lib$(TARGET).a'
  +	    DLL_IMPORT_DEF='lib$(TARGET).def'
  +	    LD_SHLIB='dllwrap --export-all --output-def $(DLL_IMPORT_DEF) --implib $(DLL_IMPORT_LIB) --driver-name $(CC)'
  +	    LD_SHCORE_LIBS='$(LIBS)'
  +	    LIBS_SHLIB='$(EXTRA_LIBS)'
  +	    SHARED_CORE_EP=''
  +	    ;;
   	*)
   	    ##  ok, no known explict support for shared objects
   	    ##  on this platform, but we give not up immediately.
  @@ -1855,7 +1875,11 @@
   	RULE_SHARED_CORE=$DEF_SHARED_CORE
       fi
       if [ "x$RULE_SHARED_CORE" = "xyes" ]; then
  -	echo " + enabling generation of Apache core as DSO"
  +	DSO_STRING="DSO"
  +	if [ "$OS" = "Cygwin" ]; then
  +	    DSO_STRING="DLL"
  +	fi
  +	echo " + enabling generation of Apache core as $DSO_STRING"
   	#    shuffle compiler flags from shlib variant to standard
   	CFLAGS="$CFLAGS $CFLAGS_SHLIB"
   	CFLAGS_SHLIB=""
  @@ -1898,6 +1922,12 @@
   if [ "x$using_shlib" = "x1" ] ; then
       if [ "x$TCFLAGS_SHLIB" = "x" ]; then
   	echo "CFLAGS_SHLIB=$CFLAGS_SHLIB -DSHARED_MODULE" >> Makefile.config
  +    fi
  +    if [ "x$TDLL_IMPORT_DEF" = "x" ]; then
  +	echo "DLL_IMPORT_DEF=$DLL_IMPORT_DEF" >> Makefile.config
  +    fi
  +    if [ "x$TDLL_IMPORT_LIB" = "x" ]; then
  +	echo "DLL_IMPORT_LIB=$DLL_IMPORT_LIB" >> Makefile.config
       fi
       if [ "x$TLD_SHLIB" = "x" ]; then
   	echo "LD_SHLIB=$LD_SHLIB" >> Makefile.config
  
  
  
  1.117     +1 -1      apache-1.3/src/Makefile.tmpl
  
  Index: Makefile.tmpl
  ===================================================================
  RCS file: /home/cvs/apache-1.3/src/Makefile.tmpl,v
  retrieving revision 1.116
  retrieving revision 1.117
  diff -u -u -r1.116 -r1.117
  --- Makefile.tmpl	2000/06/22 23:22:18	1.116
  +++ Makefile.tmpl	2001/04/02 09:22:05	1.117
  @@ -41,7 +41,7 @@
   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) $(SHCORE_IMPLIB)
  +	      ap/libap.a $(LIBS) $(SHCORE_IMPLIB) $(DLL_IMPORT_LIB)
   
   lib$(TARGET).ep: lib$(TARGET).$(SHLIB_SUFFIX_NAME)
   	$(CC) $(INCLUDES) $(CFLAGS) $(LDFLAGS) $(LDFLAGS_SHLIB_EXPORT) \
  
  
  
  1.74      +3 -0      apache-1.3/src/helpers/GuessOS
  
  Index: GuessOS
  ===================================================================
  RCS file: /home/cvs/apache-1.3/src/helpers/GuessOS,v
  retrieving revision 1.73
  retrieving revision 1.74
  diff -u -u -r1.73 -r1.74
  --- GuessOS	2001/03/16 14:13:40	1.73
  +++ GuessOS	2001/04/02 09:22:07	1.74
  @@ -313,6 +313,9 @@
       OS/390:*)
           echo "${MACHINE}-IBM-OS390-${RELEASE}-${VERSION}"; exit 0;
           ;;
  +    CYGWIN*:*:*:*)
  +	echo "${MACHINE}-whatever-cygwin"; exit 0
  +	;;
   esac
   
   #
  
  
  
  1.306     +5 -0      apache-1.3/src/include/ap_config.h
  
  Index: ap_config.h
  ===================================================================
  RCS file: /home/cvs/apache-1.3/src/include/ap_config.h,v
  retrieving revision 1.305
  retrieving revision 1.306
  diff -u -u -r1.305 -r1.306
  --- ap_config.h	2001/02/19 23:56:20	1.305
  +++ ap_config.h	2001/04/02 09:22:08	1.306
  @@ -1000,6 +1000,11 @@
   #define NET_SIZE_T size_t
   #define NEED_HASHBANG_EMUL
   
  +#elif defined(CYGWIN)               /* Cygwin 1.x POSIX layer for Win32 */
  +#define JMP_BUF jmp_buf
  +#define NO_KILLPG
  +#define USE_LONGJMP
  +
   #else
   /* Unknown system - Edit these to match */
   #ifdef BSD
  
  
  
  1.534     +7 -3      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.533
  retrieving revision 1.534
  diff -u -u -r1.533 -r1.534
  --- http_main.c	2001/03/26 19:25:54	1.533
  +++ http_main.c	2001/04/02 09:22:09	1.534
  @@ -117,7 +117,7 @@
   #endif
   #ifdef WIN32
   #include "../os/win32/getopt.h"
  -#elif !defined(BEOS) && !defined(TPF) && !defined(NETWARE) && !defined(OS390)
  +#elif !defined(BEOS) && !defined(TPF) && !defined(NETWARE) && !defined(OS390) && !defined(CYGWIN)
   #include <netinet/tcp.h>
   #endif
   #ifdef HAVE_BSTRING_H
  @@ -7167,8 +7167,12 @@
   #endif /* ndef SHARED_CORE_TIESTATIC */
   #else  /* ndef SHARED_CORE_BOOTSTRAP */
   
  -#ifdef OS2
  -/* Shared core loader for OS/2 */
  +#if defined(OS2) || defined(CYGWIN)
  +/* Shared core loader for OS/2 and Cygwin */
  +
  +#if defined(CYGWIN)
  +__declspec(dllimport) 
  +#endif
   
   int ap_main(int argc, char *argv[]); /* Load time linked from libhttpd.dll */
   
  
  
  
  1.1                  apache-1.3/src/os/cygwin/Makefile.tmpl
  
  Index: Makefile.tmpl
  ===================================================================
  CFLAGS=$(OPTIM) $(CFLAGS1) $(EXTRA_CFLAGS)
  LIBS=$(EXTRA_LIBS) $(LIBS1)
  INCLUDES=$(INCLUDES1) $(INCLUDES0) $(EXTRA_INCLUDES)
  LDFLAGS=$(LDFLAGS1) $(EXTRA_LDFLAGS)
  
  OBJS=	os.o os-inline.o
  
  LIB=	libos.a
  
  all:	$(LIB)
  
  $(LIB): $(OBJS)
  	rm -f $@
  	ar cr $@ $(OBJS)
  	$(RANLIB) $@
  
  .c.o:
  	$(CC) -c $(INCLUDES) $(CFLAGS) $<
  
  clean:
  	rm -f $(OBJS) $(LIB)
  
  distclean: clean
  	-rm -f Makefile
  
  # We really don't expect end users to use this rule.  It works only with
  # gcc, and rebuilds Makefile.tmpl.  You have to re-run Configure after
  # using it.
  depend:
  	cp Makefile.tmpl Makefile.tmpl.bak \
  	    && sed -ne '1,/^# DO NOT REMOVE/p' Makefile.tmpl > Makefile.new \
  	    && gcc -MM $(INCLUDES) $(CFLAGS) *.c >> Makefile.new \
  	    && sed -e '1,$$s: $(INCDIR)/: $$(INCDIR)/:g' \
  	           -e '1,$$s: $(OSDIR)/: $$(OSDIR)/:g' Makefile.new \
  		> Makefile.tmpl \
  	    && rm Makefile.new
  
  $(OBJS): Makefile
  
  # DO NOT REMOVE
  os-inline.o: os-inline.c $(INCDIR)/ap_config.h \
   $(INCDIR)/ap_mmn.h $(INCDIR)/ap_config_auto.h \
   $(OSDIR)/os.h $(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h
  os.o: os.c $(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
   $(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
   $(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h os.h
  
  
  
  1.1                  apache-1.3/src/os/cygwin/os-inline.c
  
  Index: os-inline.c
  ===================================================================
  /*
   * This file contains functions which can be inlined if the compiler
   * has an "inline" modifier. Because of this, this file is both a
   * header file and a compilable module.
   *
   * Only inlineable functions should be defined in here. They must all
   * include the INLINE modifier. 
   *
   * If the compiler supports inline, this file will be #included as a
   * header file from os.h to create all the inline function
   * definitions. INLINE will be defined to whatever is required on
   * function definitions to make them inline declarations.
   *
   * If the compiler does not support inline, this file will be compiled
   * as a normal C file into libos.a (along with os.c). In this case
   * INLINE will _not_ be set so we can use this to test if we are
   * compiling this source file.  
   */
  
  #ifndef INLINE
  #define INLINE
  
  /* Anything required only when compiling */
  #include "ap_config.h"
  
  #endif
  
  INLINE int ap_os_is_path_absolute(const char *file)
  {
    return file[0] == '/';
  }
  
  
  
  1.1                  apache-1.3/src/os/cygwin/os.c
  
  Index: os.c
  ===================================================================
  /*
   * This file will include OS specific functions which are not inlineable.
   * Any inlineable functions should be defined in os-inline.c instead.
   */
  
  #include "ap_config.h"
  #include "os.h"
  
  
  /* some linkers complain unless there's at least one function in each
   * .o file... and extra prototype is for gcc -Wmissing-prototypes
   */
  extern void ap_is_not_here(void);
  void ap_is_not_here(void) {}
  
  /*
   *  Abstraction layer for loading
   *  Apache modules under run-time via 
   *  dynamic shared object (DSO) mechanism
   */
  
  void ap_os_dso_init(void)
  {
  }
  
  void *ap_os_dso_load(const char *path)
  {
      return dlopen(path, RTLD_NOW | RTLD_GLOBAL);
  }
  
  void ap_os_dso_unload(void *handle)
  {
      dlclose(handle);
  
      return;
  }
  
  void *ap_os_dso_sym(void *handle, const char *symname)
  {
      return dlsym(handle, symname);
  }
  
  const char *ap_os_dso_error(void)
  {
      return dlerror();
  }
  
  
  
  1.1                  apache-1.3/src/os/cygwin/os.h
  
  Index: os.h
  ===================================================================
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2000 The Apache Software Foundation.  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. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``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 APACHE SOFTWARE FOUNDATION 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 Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   *
   * Portions of this software are based upon public domain software
   * originally written at the National Center for Supercomputing Applications,
   * University of Illinois, Urbana-Champaign.
   */
  
  #ifndef APACHE_OS_H
  #define APACHE_OS_H
  
  #include "ap_config.h"
  
  /*
   * Define the API_EXPORT declaration for creating a dynamic
   * loadable library (DLL) version of Apache on Cygwin 1.x platforms.
   */
  
  #ifndef API_EXPORT
  #ifdef SHARED_CORE
  # define API_EXPORT(type)    __declspec(dllexport) type
  #else /* Not SHARED_CORE */
  # define API_EXPORT(type)    __declspec(dllimport) type
  #endif /* def SHARED_CORE */ 
  #endif /* ndef API_EXPORT */
  
  /*
   * We don't consider the Cygwin 1.x support neither an Unix nor
   * a Win32 platform. Basicly it's something between both, so that
   * is why we introduce our own PLATFORM define.
   */
  #ifndef PLATFORM
  #define PLATFORM "Cygwin"
  #endif
  
  /*
   * This file in included in all Apache source code. It contains definitions
   * of facilities available on _this_ operating system (HAVE_* macros),
   * and prototypes of OS specific functions defined in os.c or os-inline.c
   */
  
  #if !defined(INLINE) && defined(USE_GNU_INLINE)
  /* Compiler supports inline, so include the inlineable functions as
   * part of the header
   */
  #define INLINE extern ap_inline
  
  INLINE int ap_os_is_path_absolute(const char *file);
  
  /*
   * The inline things are the same as in the os/unix branch, so include
   * that one rather than our own copy that would be the same.
   */
  #include "os-inline.c"
  
  #else
  
  /* Compiler does not support inline, so prototype the inlineable functions
   * as normal
   */
  extern int ap_os_is_path_absolute(const char *file);
  #endif
  
  /* Other ap_os_ routines not used by this platform */
  
  #define ap_os_is_filename_valid(f)          (1)
  #define ap_os_kill(pid, sig)                kill(pid, sig)
  
  /*
   *  Abstraction layer for loading
   *  Apache modules under run-time via 
   *  dynamic shared object (DSO) mechanism
   */
  
  #ifdef HAVE_DL_H
  #include <dl.h>
  #endif
  
  #ifdef HAVE_DLFCN_H
  #include <dlfcn.h>
  #else
  void *dlopen(const char *, int);
  int dlclose(void *);
  void *dlsym(void *, const char *);
  const char *dlerror(void);
  #endif
  
  /* probably on an older system that doesn't support RTLD_NOW or RTLD_LAZY.
   * The below define is a lie since we are really doing RTLD_LAZY since the
   * system doesn't support RTLD_NOW.
   */
  #ifndef RTLD_NOW
  #define RTLD_NOW 1
  #endif
  
  #ifndef RTLD_GLOBAL
  #define RTLD_GLOBAL 0
  #endif
  
  #define     ap_os_dso_handle_t  void *
  void        ap_os_dso_init(void);
  void *      ap_os_dso_load(const char *);
  void        ap_os_dso_unload(void *);
  void *      ap_os_dso_sym(void *, const char *);
  const char *ap_os_dso_error(void);
  
  #endif	/* !APACHE_OS_H */
  
  
  
  1.20      +1 -1      apache-1.3/src/support/logresolve.c
  
  Index: logresolve.c
  ===================================================================
  RCS file: /home/cvs/apache-1.3/src/support/logresolve.c,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -u -r1.19 -r1.20
  --- logresolve.c	2000/05/09 17:58:34	1.19
  +++ logresolve.c	2001/04/02 09:22:11	1.20
  @@ -101,7 +101,7 @@
    * statistics - obvious
    */
   
  -#ifndef h_errno
  +#if !defined(h_errno) && !defined(CYGWIN)
   extern int h_errno; /* some machines don't have this in their headers */
   #endif