rbb         99/06/18 12:11:20

  Modified:    apr/include apr_win.h
               apr/test client.dsp server.dsp test.dsw testfile.dsp
                        testproc.dsp testsock.dsp testthread.c timetest.dsp
               apr/threadproc/win32 thread.c
               include  apr_lock.h apr_thread_proc.h
  Added:       apr/locks/win32 locks.c locks.def locks.dsp locks.h
  Log:
  Initial locking code for windows, and fixes for windows based threads.
  
  Revision  Changes    Path
  1.4       +1 -0      apache-apr/apr/include/apr_win.h
  
  Index: apr_win.h
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/include/apr_win.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- apr_win.h 1999/06/03 19:43:50     1.3
  +++ apr_win.h 1999/06/18 19:10:58     1.4
  @@ -76,6 +76,7 @@
   
   #define API_EXPORT(x)            x
   #define API_EXPORT_NONSTD(x)     x
  +#define API_THREAD_FUNC __stdcall
   
   #define strcasecmp(s1, s2)       stricmp(s1, s2)
   #define sleep(t)                 Sleep(t * 1000)
  
  
  
  1.1                  apache-apr/apr/locks/win32/locks.c
  
  Index: locks.c
  ===================================================================
  /* ====================================================================
   * Copyright (c) 1999 The Apache Group.  All rights reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. All advertising materials mentioning features or use of this
   *    software must display the following acknowledgment:
   *    "This product includes software developed by the Apache Group
   *    for use in the Apache HTTP server project (http://www.apache.org/)."
   *
   * 4. The names "Apache Server" and "Apache Group" must not be used to
   *    endorse or promote products derived from this software without
   *    prior written permission. For written permission, please contact
   *    [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache"
   *    nor may "Apache" appear in their names without prior written
   *    permission of the Apache Group.
   *
   * 6. Redistributions of any form whatsoever must retain the following
   *    acknowledgment:
   *    "This product includes software developed by the Apache Group
   *    for use in the Apache HTTP server project (http://www.apache.org/)."
   *
   * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``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 GROUP 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 Group.
   * For more information on the Apache Group and the Apache HTTP server
   * project, please see <http://www.apache.org/>.
   *
   */
  
  #include "apr_general.h"
  #include "apr_lib.h"
  #include "locks.h"
  
  ap_status_t ap_create_lock(ap_context_t *cont, ap_locktype_e type, char 
*fname, struct lock_t **lock)
  {
      struct lock_t *newlock;
      SECURITY_ATTRIBUTES sec;
  
      newlock = (struct lock_t *)ap_palloc(cont, sizeof(struct lock_t));
  
      newlock->cntxt = cont;
      newlock->fname = strdup(fname);
  
      sec.nLength = sizeof(SECURITY_ATTRIBUTES);
      sec.lpSecurityDescriptor = NULL;
  
      if (type == APR_CROSS_PROCESS || type == APR_LOCKALL) {
          sec.bInheritHandle = TRUE;
      }
      else {
          sec.bInheritHandle = FALSE;
      }
  
      newlock->mutex = CreateMutex(&sec, FALSE, fname);
      *lock = newlock;
      return APR_SUCCESS;
  }
  
  ap_status_t ap_child_init_lock(ap_context_t *cont, char *fname, struct lock_t 
**lock)
  {
      (*lock) = (struct lock_t *)ap_palloc(cont, sizeof(struct lock_t));
  
      if ((*lock) == NULL) {
          return APR_ENOMEM;
      }
  
      (*lock)->fname = strdup(fname);
      (*lock)->mutex = OpenMutex(MUTEX_ALL_ACCESS, TRUE, fname);
      
      if ((*lock)->mutex == NULL) {
          return APR_EEXIST;
      }
      return APR_SUCCESS;
  }
  
  ap_status_t ap_lock(struct lock_t *lock)
  {
      DWORD rv;
  
      rv = WaitForSingleObject(lock->mutex, INFINITE);
  
      if (rv == WAIT_OBJECT_0 || rv == WAIT_ABANDONED) {
          return APR_SUCCESS;
      }
      if (rv == WAIT_TIMEOUT) {
          return APR_TIMEUP;
      }
  
      return APR_EEXIST;
  }
  
  ap_status_t ap_unlock(struct lock_t *lock)
  {
      if (ReleaseMutex(lock->mutex) == 0) {
          return APR_EEXIST;
      }
      return APR_SUCCESS;
  }
  
  ap_status_t ap_destroy_lock(struct lock_t *lock)
  {
      if (CloseHandle(lock->mutex) == 0) {
          return APR_EEXIST;
      }
      return APR_SUCCESS;
  }
  
  
  
  
  
  1.1                  apache-apr/apr/locks/win32/locks.def
  
  Index: locks.def
  ===================================================================
  ; locks.def : 
  
  LIBRARY locks
  DESCRIPTION ''
  
  EXPORTS
        ; Add new API calls to the end of this list.
        ap_create_lock   @1
      ap_lock   @2
      ap_unlock   @3
      ap_destroy_lock   @4
      ap_child_init_lock   @5
  
  
  
  1.1                  apache-apr/apr/locks/win32/locks.dsp
  
  Index: locks.dsp
  ===================================================================
  # Microsoft Developer Studio Project File - Name="locks" - Package Owner=<4>
  # Microsoft Developer Studio Generated Build File, Format Version 5.00
  # ** DO NOT EDIT **
  
  # TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
  
  CFG=locks - Win32 Debug
  !MESSAGE This is not a valid makefile. To build this project using NMAKE,
  !MESSAGE use the Export Makefile command and run
  !MESSAGE 
  !MESSAGE NMAKE /f "locks.mak".
  !MESSAGE 
  !MESSAGE You can specify a configuration when running NMAKE
  !MESSAGE by defining the macro CFG on the command line. For example:
  !MESSAGE 
  !MESSAGE NMAKE /f "locks.mak" CFG="locks - Win32 Debug"
  !MESSAGE 
  !MESSAGE Possible choices for configuration are:
  !MESSAGE 
  !MESSAGE "locks - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
  !MESSAGE "locks - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
  !MESSAGE 
  
  # Begin Project
  # PROP Scc_ProjName ""
  # PROP Scc_LocalPath ""
  CPP=cl.exe
  MTL=midl.exe
  RSC=rc.exe
  
  !IF  "$(CFG)" == "locks - Win32 Release"
  
  # PROP BASE Use_MFC 0
  # PROP BASE Use_Debug_Libraries 0
  # PROP BASE Output_Dir "Release"
  # PROP BASE Intermediate_Dir "Release"
  # PROP BASE Target_Dir ""
  # PROP Use_MFC 0
  # PROP Use_Debug_Libraries 0
  # PROP Output_Dir "Release"
  # PROP Intermediate_Dir "Release"
  # PROP Target_Dir ""
  # ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" 
/YX /FD /c
  # ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX 
/FD /c
  # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32
  # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32
  # ADD BASE RSC /l 0x409 /d "NDEBUG"
  # ADD RSC /l 0x409 /d "NDEBUG"
  BSC32=bscmake.exe
  # ADD BASE BSC32 /nologo
  # ADD BSC32 /nologo
  LINK32=link.exe
  # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib 
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib 
odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
  # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib 
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib 
odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
  
  !ELSEIF  "$(CFG)" == "locks - Win32 Debug"
  
  # PROP BASE Use_MFC 0
  # PROP BASE Use_Debug_Libraries 1
  # PROP BASE Output_Dir "Debug"
  # PROP BASE Intermediate_Dir "Debug"
  # PROP BASE Target_Dir ""
  # PROP Use_MFC 0
  # PROP Use_Debug_Libraries 1
  # PROP Output_Dir "Debug"
  # PROP Intermediate_Dir "Debug"
  # PROP Ignore_Export_Lib 0
  # PROP Target_Dir ""
  # ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D 
"_WINDOWS" /YX /FD /c
  # ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\include" /I 
"..\..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
  # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
  # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
  # ADD BASE RSC /l 0x409 /d "_DEBUG"
  # ADD RSC /l 0x409 /d "_DEBUG"
  BSC32=bscmake.exe
  # ADD BASE BSC32 /nologo
  # ADD BSC32 /nologo
  LINK32=link.exe
  # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib 
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib 
odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
  # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib 
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib 
odbccp32.lib ..\..\lib\debug\lib.lib ..\..\misc\win32\debug\misc.lib /nologo 
/subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
  
  !ENDIF 
  
  # Begin Target
  
  # Name "locks - Win32 Release"
  # Name "locks - Win32 Debug"
  # Begin Source File
  
  SOURCE=.\locks.c
  # End Source File
  # Begin Source File
  
  SOURCE=.\locks.def
  # End Source File
  # Begin Source File
  
  SOURCE=.\locks.h
  # End Source File
  # End Target
  # End Project
  
  
  
  1.1                  apache-apr/apr/locks/win32/locks.h
  
  Index: locks.h
  ===================================================================
  /* ====================================================================
   * Copyright (c) 1999 The Apache Group.  All rights reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. All advertising materials mentioning features or use of this
   *    software must display the following acknowledgment:
   *    "This product includes software developed by the Apache Group
   *    for use in the Apache HTTP server project (http://www.apache.org/)."
   *
   * 4. The names "Apache Server" and "Apache Group" must not be used to
   *    endorse or promote products derived from this software without
   *    prior written permission. For written permission, please contact
   *    [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache"
   *    nor may "Apache" appear in their names without prior written
   *    permission of the Apache Group.
   *
   * 6. Redistributions of any form whatsoever must retain the following
   *    acknowledgment:
   *    "This product includes software developed by the Apache Group
   *    for use in the Apache HTTP server project (http://www.apache.org/)."
   *
   * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``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 GROUP 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 Group.
   * For more information on the Apache Group and the Apache HTTP server
   * project, please see <http://www.apache.org/>.
   *
   */
  #ifndef LOCKS_H
  #define LOCKS_H
  
  #include "apr_lock.h"
  
  struct lock_t {
      ap_context_t *cntxt;
      HANDLE mutex;
      char *fname;
  };
  
  #endif  /* LOCKS_H */
  
  
  
  
  1.3       +2 -2      apache-apr/apr/test/client.dsp
  
  Index: client.dsp
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/test/client.dsp,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- client.dsp        1999/06/17 18:56:08     1.2
  +++ client.dsp        1999/06/18 19:11:00     1.3
  @@ -49,7 +49,7 @@
   # ADD BSC32 /nologo
   LINK32=link.exe
   # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib 
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib 
odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
  -# ADD LINK32 ..\network_io\win32\Debug\network_io.lib kernel32.lib 
user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib 
ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\lib\Debug\lib.lib 
..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib 
..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib /nologo 
/subsystem:console /machine:I386
  +# ADD LINK32 ..\network_io\win32\Debug\network_io.lib ..\lib\Debug\lib.lib 
..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib 
..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib kernel32.lib 
user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib 
ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo 
/subsystem:console /machine:I386
   
   !ELSEIF  "$(CFG)" == "client - Win32 Debug"
   
  @@ -73,7 +73,7 @@
   # ADD BSC32 /nologo
   LINK32=link.exe
   # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib 
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib 
odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 
/pdbtype:sept
  -# ADD LINK32 ..\network_io\win32\Debug\network_io.lib kernel32.lib 
user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib 
ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\lib\Debug\lib.lib 
..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib 
..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib /nologo 
/subsystem:console /debug /machine:I386 /pdbtype:sept
  +# ADD LINK32 ..\network_io\win32\Debug\network_io.lib ..\lib\Debug\lib.lib 
..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib 
..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib 
..\locks\win32\debug\locks.lib kernel32.lib user32.lib gdi32.lib winspool.lib 
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib 
odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 
/pdbtype:sept
   
   !ENDIF 
   
  
  
  
  1.3       +2 -2      apache-apr/apr/test/server.dsp
  
  Index: server.dsp
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/test/server.dsp,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- server.dsp        1999/06/17 18:56:09     1.2
  +++ server.dsp        1999/06/18 19:11:00     1.3
  @@ -49,7 +49,7 @@
   # ADD BSC32 /nologo
   LINK32=link.exe
   # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib 
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib 
odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
  -# ADD LINK32 ..\network_io\win32\Debug\network_io.lib kernel32.lib 
user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib 
ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\lib\Debug\lib.lib 
..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib 
..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib /nologo 
/subsystem:console /machine:I386
  +# ADD LINK32 ..\network_io\win32\Debug\network_io.lib ..\lib\Debug\lib.lib 
..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib 
..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib kernel32.lib 
user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib 
ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo 
/subsystem:console /machine:I386
   
   !ELSEIF  "$(CFG)" == "server - Win32 Debug"
   
  @@ -73,7 +73,7 @@
   # ADD BSC32 /nologo
   LINK32=link.exe
   # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib 
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib 
odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 
/pdbtype:sept
  -# ADD LINK32 ..\network_io\win32\Debug\network_io.lib kernel32.lib 
user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib 
ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\lib\Debug\lib.lib 
..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib 
..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib /nologo 
/subsystem:console /debug /machine:I386 /pdbtype:sept
  +# ADD LINK32 ..\network_io\win32\Debug\network_io.lib ..\lib\Debug\lib.lib 
..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib 
..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib 
..\locks\win32\debug\locks.lib kernel32.lib user32.lib gdi32.lib winspool.lib 
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib 
odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 
/pdbtype:sept
   
   !ENDIF 
   
  
  
  
  1.3       +12 -0     apache-apr/apr/test/test.dsw
  
  Index: test.dsw
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/test/test.dsw,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- test.dsw  1999/06/17 18:56:10     1.2
  +++ test.dsw  1999/06/18 19:11:00     1.3
  @@ -69,6 +69,18 @@
   
   
###############################################################################
   
  +Project: "testthread"=".\testthread.dsp" - Package Owner=<4>
  +
  +Package=<5>
  +{{{
  +}}}
  +
  +Package=<4>
  +{{{
  +}}}
  +
  
+###############################################################################
  +
   Project: "timetest"=".\timetest.dsp" - Package Owner=<4>
   
   Package=<5>
  
  
  
  1.5       +2 -2      apache-apr/apr/test/testfile.dsp
  
  Index: testfile.dsp
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/test/testfile.dsp,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- testfile.dsp      1999/06/17 18:56:10     1.4
  +++ testfile.dsp      1999/06/18 19:11:01     1.5
  @@ -50,7 +50,7 @@
   # ADD BSC32 /nologo
   LINK32=link.exe
   # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib 
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib 
odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
  -# ADD LINK32 ..\network_io\win32\Debug kernel32.lib user32.lib gdi32.lib 
winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib 
uuid.lib odbc32.lib odbccp32.lib ..\lib\Debug\lib.lib 
..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib 
..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib /nologo 
/subsystem:console /debug /machine:I386
  +# ADD LINK32 ..\network_io\win32\Debug ..\lib\Debug\lib.lib 
..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib 
..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib kernel32.lib 
user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib 
ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo 
/subsystem:console /debug /machine:I386
   
   !ELSEIF  "$(CFG)" == "testfile - Win32 Debug"
   
  @@ -74,7 +74,7 @@
   # ADD BSC32 /nologo
   LINK32=link.exe
   # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib 
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib 
odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 
/pdbtype:sept
  -# ADD LINK32 ..\network_io\win32\Debug\network_io.lib kernel32.lib 
user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib 
ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\lib\Debug\lib.lib 
..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib 
..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib /nologo 
/subsystem:console /debug /machine:I386 /pdbtype:sept
  +# ADD LINK32 ..\network_io\win32\Debug\network_io.lib ..\lib\Debug\lib.lib 
..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib 
..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib 
..\locks\win32\debug\locks.lib kernel32.lib user32.lib gdi32.lib winspool.lib 
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib 
odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 
/pdbtype:sept
   
   !ENDIF 
   
  
  
  
  1.4       +2 -2      apache-apr/apr/test/testproc.dsp
  
  Index: testproc.dsp
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/test/testproc.dsp,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- testproc.dsp      1999/06/17 18:56:11     1.3
  +++ testproc.dsp      1999/06/18 19:11:01     1.4
  @@ -50,7 +50,7 @@
   # ADD BSC32 /nologo
   LINK32=link.exe
   # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib 
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib 
odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
  -# ADD LINK32 ..\network_io\win32\Debug kernel32.lib user32.lib gdi32.lib 
winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib 
uuid.lib odbc32.lib odbccp32.lib ..\lib\Debug\lib.lib 
..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib 
..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib /nologo 
/subsystem:console /machine:I386
  +# ADD LINK32 ..\network_io\win32\Debug ..\lib\Debug\lib.lib 
..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib 
..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib kernel32.lib 
user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib 
ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo 
/subsystem:console /machine:I386
   
   !ELSEIF  "$(CFG)" == "testproc - Win32 Debug"
   
  @@ -74,7 +74,7 @@
   # ADD BSC32 /nologo
   LINK32=link.exe
   # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib 
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib 
odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 
/pdbtype:sept
  -# ADD LINK32 ..\network_io\win32\Debug\network_io.lib kernel32.lib 
user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib 
ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\lib\Debug\lib.lib 
..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib 
..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib /nologo 
/subsystem:console /debug /machine:I386 /pdbtype:sept
  +# ADD LINK32 ..\network_io\win32\Debug\network_io.lib ..\lib\Debug\lib.lib 
..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib 
..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib 
..\locks\win32\debug\locks.lib kernel32.lib user32.lib gdi32.lib winspool.lib 
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib 
odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 
/pdbtype:sept
   
   !ENDIF 
   
  
  
  
  1.3       +2 -2      apache-apr/apr/test/testsock.dsp
  
  Index: testsock.dsp
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/test/testsock.dsp,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- testsock.dsp      1999/06/17 18:56:11     1.2
  +++ testsock.dsp      1999/06/18 19:11:02     1.3
  @@ -50,7 +50,7 @@
   # ADD BSC32 /nologo
   LINK32=link.exe
   # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib 
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib 
odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
  -# ADD LINK32 ..\network_io\win32\Debug kernel32.lib user32.lib gdi32.lib 
winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib 
uuid.lib odbc32.lib odbccp32.lib ..\lib\Debug\lib.lib 
..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib 
..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib /nologo 
/subsystem:console /machine:I386
  +# ADD LINK32 ..\network_io\win32\Debug ..\lib\Debug\lib.lib 
..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib 
..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib kernel32.lib 
user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib 
ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo 
/subsystem:console /machine:I386
   
   !ELSEIF  "$(CFG)" == "testsock - Win32 Debug"
   
  @@ -74,7 +74,7 @@
   # ADD BSC32 /nologo
   LINK32=link.exe
   # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib 
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib 
odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 
/pdbtype:sept
  -# ADD LINK32 ..\network_io\win32\Debug\network_io.lib kernel32.lib 
user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib 
ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\lib\Debug\lib.lib 
..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib 
..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib /nologo 
/subsystem:console /debug /machine:I386 /pdbtype:sept
  +# ADD LINK32 ..\network_io\win32\Debug\network_io.lib ..\lib\Debug\lib.lib 
..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib 
..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib 
..\locks\win32\debug\locks.lib kernel32.lib user32.lib gdi32.lib winspool.lib 
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib 
odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 
/pdbtype:sept
   
   !ENDIF 
   
  
  
  
  1.7       +33 -19    apache-apr/apr/test/testthread.c
  
  Index: testthread.c
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/test/testthread.c,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- testthread.c      1999/05/25 17:03:54     1.6
  +++ testthread.c      1999/06/18 19:11:02     1.7
  @@ -62,11 +62,18 @@
   #include <unistd.h>
   #endif
   
  +
  +void * API_THREAD_FUNC thread_func1(void *data);
  +void * API_THREAD_FUNC thread_func2(void *data);
  +void * API_THREAD_FUNC thread_func3(void *data);
  +void * API_THREAD_FUNC thread_func4(void *data);
  +
  +
   ap_lock_t *thread_lock;
   ap_context_t *context;
   int x = 0;
   
  -void *thread_func1(void *data)
  +void * API_THREAD_FUNC thread_func1(void *data)
   {
       int i;
       for (i = 0; i < 10000; i++) {
  @@ -74,9 +81,10 @@
           x++;
           ap_unlock(thread_lock);
       }
  +    return NULL;
   } 
   
  -void *thread_func2(void *data)
  +void * API_THREAD_FUNC thread_func2(void *data)
   {
       int i;
       for (i = 0; i < 10000; i++) {
  @@ -84,9 +92,10 @@
           x++;
           ap_unlock(thread_lock);
       }
  +    return NULL;
   } 
   
  -void *thread_func3(void *data)
  +void * API_THREAD_FUNC thread_func3(void *data)
   {
       int i;
       for (i = 0; i < 10000; i++) {
  @@ -94,9 +103,10 @@
           x++;
           ap_unlock(thread_lock);
       }
  +    return NULL;
   } 
   
  -void *thread_func4(void *data)
  +void * API_THREAD_FUNC thread_func4(void *data)
   {
       int i;
       for (i = 0; i < 10000; i++) {
  @@ -104,6 +114,7 @@
           x++;
           ap_unlock(thread_lock);
       }
  +    return NULL;
   } 
   
   int main()
  @@ -112,8 +123,10 @@
       ap_thread_t *t2;
       ap_thread_t *t3;
       ap_thread_t *t4;
  -    ap_threadattr_t *tattr;
  -    ap_status_t st;
  +    ap_status_t s1;
  +    ap_status_t s2;
  +    ap_status_t s3;
  +    ap_status_t s4;
   
       fprintf(stdout, "Initializing the context......."); 
       if (ap_create_context(NULL, NULL, &context) != APR_SUCCESS) {
  @@ -123,38 +136,39 @@
       fprintf(stdout, "OK\n");
   
       fprintf(stdout, "Initializing the lock......."); 
  -    st = ap_create_lock(context, APR_INTRAPROCESS, "lock.file", 
&thread_lock); 
  -    if (st != APR_SUCCESS) {
  +    s1 = ap_create_lock(context, APR_INTRAPROCESS, "lock.file", 
&thread_lock); 
  +    if (s1 != APR_SUCCESS) {
           fprintf(stderr, "Could not create lock\n");
           exit(-1);
       }
       fprintf(stdout, "OK\n");
   
       fprintf(stdout, "Starting all the threads......."); 
  -    ap_create_thread(context, NULL, thread_func1, NULL, &t1);
  -    ap_create_thread(context, NULL, thread_func2, NULL, &t2);
  -    ap_create_thread(context, NULL, thread_func3, NULL, &t3);
  -    ap_create_thread(context, NULL, thread_func4, NULL, &t4);
  -    if (t1 == NULL || t2 == NULL || t3 == NULL || t4 == NULL) {
  +    s1 = ap_create_thread(context, NULL, thread_func1, NULL, &t1);
  +    s2 = ap_create_thread(context, NULL, thread_func2, NULL, &t2);
  +    s3 = ap_create_thread(context, NULL, thread_func3, NULL, &t3);
  +    s4 = ap_create_thread(context, NULL, thread_func4, NULL, &t4);
  +    if (s1 != APR_SUCCESS || s2 != APR_SUCCESS || 
  +        s3 != APR_SUCCESS || s4 != APR_SUCCESS) {
           fprintf(stderr, "Error starting thread\n");
           exit(-1);
       }
       fprintf(stdout, "OK\n");
   
       fprintf(stdout, "Waiting for threads to exit.......");
  -    ap_thread_join(t1, &st);
  -    ap_thread_join(t2, &st);
  -    ap_thread_join(t3, &st);
  -    ap_thread_join(t4, &st);
  +    ap_thread_join(t1, &s1);
  +    ap_thread_join(t2, &s2);
  +    ap_thread_join(t3, &s3);
  +    ap_thread_join(t4, &s4);
       fprintf (stdout, "OK\n");   
   
       fprintf(stdout, "Checking if locks worked......."); 
       if (x != 40000) {
  -        fprintf(stderr, "The locks didn't work????\n");
  +        fprintf(stderr, "The locks didn't work????  %d\n", x);
       }
       else {
           fprintf(stdout, "Everything is working!\n");
       }
   
  -    exit(1);
  +    return 1;
   }
  
  
  
  1.2       +2 -2      apache-apr/apr/test/timetest.dsp
  
  Index: timetest.dsp
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/test/timetest.dsp,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- timetest.dsp      1999/06/17 18:56:13     1.1
  +++ timetest.dsp      1999/06/18 19:11:03     1.2
  @@ -50,7 +50,7 @@
   # ADD BSC32 /nologo
   LINK32=link.exe
   # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib 
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib 
odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
  -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib 
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib 
odbccp32.lib ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib 
..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib 
..\time\win32\Debug\time.lib /nologo /subsystem:console /machine:I386
  +# ADD LINK32 ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib 
..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib 
..\time\win32\Debug\time.lib kernel32.lib user32.lib gdi32.lib winspool.lib 
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib 
odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
   
   !ELSEIF  "$(CFG)" == "timetest - Win32 Debug"
   
  @@ -74,7 +74,7 @@
   # ADD BSC32 /nologo
   LINK32=link.exe
   # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib 
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib 
odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 
/pdbtype:sept
  -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib 
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib 
odbccp32.lib ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib 
..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib 
..\time\win32\Debug\time.lib /nologo /subsystem:console /debug /machine:I386 
/pdbtype:sept
  +# ADD LINK32 ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib 
..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib 
..\time\win32\Debug\time.lib ..\locks\win32\debug\locks.lib kernel32.lib 
user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib 
ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo 
/subsystem:console /debug /machine:I386 /pdbtype:sept
   
   !ENDIF 
   
  
  
  
  1.2       +6 -2      apache-apr/apr/threadproc/win32/thread.c
  
  Index: thread.c
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/threadproc/win32/thread.c,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- thread.c  1999/06/08 15:38:11     1.1
  +++ thread.c  1999/06/18 19:11:15     1.2
  @@ -57,6 +57,7 @@
   #include "apr_thread_proc.h"
   #include "apr_general.h"
   #include "apr_lib.h"
  +#include "apr_win.h"
   #include <process.h>
   
   
  @@ -92,6 +93,7 @@
   {
       ap_status_t stat;
        unsigned temp;
  +    int lasterror;
    
       (*new) = (struct thread_t *)ap_palloc(cont, sizeof(struct thread_t));
   
  @@ -109,11 +111,13 @@
        /* Use 0 for Thread Stack Size, because that will default the stack to 
the
         * same size as the calling thread. 
        */
  -    if (((*new)->td = (HANDLE *)_beginthreadex(func, 0, data, NULL, 0, 
&temp)) == 0) {
  +    if (((*new)->td = (HANDLE *)_beginthreadex(NULL, 0, (unsigned int 
(API_THREAD_FUNC *)(void *))func,
  +                                               data, 0, &temp)) == 0) {
  +        lasterror = GetLastError();
           return APR_EEXIST;
       }
   
  -     if (attr->detach) {
  +     if (attr && attr->detach) {
                CloseHandle((*new)->td);
        }
   
  
  
  
  1.4       +1 -0      apache-apr/include/apr_lock.h
  
  Index: apr_lock.h
  ===================================================================
  RCS file: /home/cvs/apache-apr/include/apr_lock.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- apr_lock.h        1999/05/24 18:16:49     1.3
  +++ apr_lock.h        1999/06/18 19:11:18     1.4
  @@ -72,6 +72,7 @@
   ap_status_t ap_lock(ap_lock_t *);
   ap_status_t ap_unlock(ap_lock_t *);
   ap_status_t ap_destroy_lock(ap_lock_t *);
  +ap_status_t ap_child_init_lock(ap_context_t *, char *, ap_lock_t **);
   
   #ifdef __cplusplus
   }
  
  
  
  1.15      +2 -1      apache-apr/include/apr_thread_proc.h
  
  Index: apr_thread_proc.h
  ===================================================================
  RCS file: /home/cvs/apache-apr/include/apr_thread_proc.h,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- apr_thread_proc.h 1999/06/15 17:43:42     1.14
  +++ apr_thread_proc.h 1999/06/18 19:11:18     1.15
  @@ -59,6 +59,7 @@
   #include "apr_file_io.h"
   #include "apr_general.h"
   #include "apr_errno.h"
  +#include "apr_win.h"
   
   #ifdef __cplusplus
   extern "C" {
  @@ -79,7 +80,7 @@
   
   typedef struct threadkey_t        ap_key_t;
   
  -typedef void *(*ap_thread_start_t)(void *);
  +typedef void *(API_THREAD_FUNC *ap_thread_start_t)(void *);
   
   /* Thread Function definitions */
   ap_status_t ap_create_threadattr(ap_context_t *, ap_threadattr_t **);
  
  
  

Reply via email to