Return-Path: Delivered-To: apache-cvs-archive@hyperreal.org Received: (qmail 19669 invoked by uid 6000); 23 Jan 2000 01:13:52 -0000 Received: (qmail 19653 invoked by uid 2016); 23 Jan 2000 01:13:49 -0000 Delivered-To: apcore-apache-2.0-cvs@apache.org Received: (qmail 19646 invoked by uid 124); 23 Jan 2000 01:13:48 -0000 Date: 23 Jan 2000 01:13:48 -0000 Message-ID: <20000123011348.19645.qmail@hyperreal.org> From: ben@hyperreal.org To: apache-2.0-cvs@apache.org Subject: cvs commit: apache-2.0/src/lib/apr/time/unix timestr.c Sender: apache-cvs-owner@apache.org Precedence: bulk Reply-To: new-httpd@apache.org ben 00/01/22 17:13:48 Modified: src/lib/apr configure.in src/lib/apr/include apr_portable.h src/lib/apr/locks/unix crossproc.c locks.h src/lib/apr/time/unix timestr.c Log: Make interprocess mutexes actually choose, fix semaphore mutexes. Revision Changes Path 1.46 +37 -38 apache-2.0/src/lib/apr/configure.in Index: configure.in =================================================================== RCS file: /export/home/cvs/apache-2.0/src/lib/apr/configure.in,v retrieving revision 1.45 retrieving revision 1.46 diff -u -r1.45 -r1.46 --- configure.in 2000/01/19 01:14:49 1.45 +++ configure.in 2000/01/23 01:13:44 1.46 @@ -161,43 +161,6 @@ AC_CHECK_DEFINE(LOCK_EX, sys/file.h) AC_CHECK_DEFINE(F_SETLK, fcntl.h) -dnl Checks for libraries. -AC_BEGIN_DECISION([lock implementation method]) -AC_IFALLYES(header:sys/file.h define:LOCK_EX, - AC_DECIDE(USE_FLOCK_SERIALIZE, [4.2BSD-style flock()])) -AC_IFALLYES(header:sys/ipc.h header:sys/sem.h header:sys/file.h dnl - func:semget func:semctl, - AC_DECIDE(USE_SYSVSEM_SERIALIZE, [SysV IPC semget()])) -AC_IFALLYES(header:fcntl.h define:F_SETLK, - AC_DECIDE(USE_FCNTL_SERIALIZE, [SVR4-style fcntl()])) -AC_IFALLYES(header:pthread.h define:PTHREAD_PROCESS_SHARED dnl - custom:use_pthread_cross, - AC_DECIDE(USE_PROC_PTHREAD_SERIALIZE, [pthread mutex])) -AC_DECISION_FORCE(USE_FCNTL_SERIALIZE) -AC_END_DECISION -AC_DEFINE_UNQUOTED($ac_decision) - -if test ".$ac_decision" = ".USE_FLOCK_SERIALIZE"; then - flockser="1" -else - flockser="0" -fi -if test ".$ac_decision" = ".USE_SYSVSEM_SERIALIZE"; then - sysvser="1" -else - sysvser="0" -fi -if test ".$ac_decision" = ".USE_FCNTL_SERIALIZE"; then - fcntlser="1" -else - fcntlser="0" -fi -if test ".$ac_decision" = ".USE_PROC_PTHREAD_SERIALIZE"; then - procpthreadser="1" -else - procpthreadser="0" -fi - ac_cv_define_READDIR_IS_THREAD_SAFE=no AC_CHECK_LIB(c_r, readdir, AC_DEFINE(READDIR_IS_THREAD_SAFE)) @@ -322,7 +285,7 @@ ],[ union semun arg; semctl(0, 0, 0, arg); -], AC_DEFINE(HAVE_STRUCT_UNION_SEMUN) +], [AC_DEFINE(HAVE_STRUCT_UNION_SEMUN) union_semun=yes] msg=yes,dnl msg=no) AC_MSG_RESULT([$msg]) @@ -352,6 +315,42 @@ AC_SUBST(inet_network) AC_CHECK_FUNCS(gmtime_r localtime_r) + +dnl Checks for libraries. +AC_BEGIN_DECISION([lock implementation method]) +AC_IFALLYES(header:sys/file.h define:LOCK_EX, + AC_DECIDE(USE_FLOCK_SERIALIZE, [4.2BSD-style flock()])) +AC_IFALLYES(header:fcntl.h define:F_SETLK, + AC_DECIDE(USE_FCNTL_SERIALIZE, [SVR4-style fcntl()])) +AC_IFALLYES(custom:union_semun, + AC_DECIDE(USE_SYSVSEM_SERIALIZE, [SysV IPC semget()])) +AC_IFALLYES(header:pthread.h define:PTHREAD_PROCESS_SHARED dnl + custom:use_pthread_cross, + AC_DECIDE(USE_PROC_PTHREAD_SERIALIZE, [pthread mutex])) +dnl AC_DECISION_FORCE(USE_FCNTL_SERIALIZE) +AC_END_DECISION +AC_DEFINE_UNQUOTED($ac_decision) + +if test ".$ac_decision" = ".USE_FLOCK_SERIALIZE"; then + flockser="1" +else + flockser="0" +fi +if test ".$ac_decision" = ".USE_SYSVSEM_SERIALIZE"; then + sysvser="1" +else + sysvser="0" +fi +if test ".$ac_decision" = ".USE_FCNTL_SERIALIZE"; then + fcntlser="1" +else + fcntlser="0" +fi +if test ".$ac_decision" = ".USE_PROC_PTHREAD_SERIALIZE"; then + procpthreadser="1" +else + procpthreadser="0" +fi dnl Start building stuff from our information AC_SUBST(LDLIBS) 1.19 +3 -0 apache-2.0/src/lib/apr/include/apr_portable.h Index: apr_portable.h =================================================================== RCS file: /export/home/cvs/apache-2.0/src/lib/apr/include/apr_portable.h,v retrieving revision 1.18 retrieving revision 1.19 diff -u -r1.18 -r1.19 --- apr_portable.h 2000/01/09 20:58:22 1.18 +++ apr_portable.h 2000/01/23 01:13:45 1.19 @@ -81,6 +81,9 @@ #if APR_HAVE_PTHREAD_H #include #endif +#ifdef HAVE_STRUCT_UNION_SEMUN +#include +#endif #ifdef WIN32 /* The primitives for Windows types */ 1.11 +7 -5 apache-2.0/src/lib/apr/locks/unix/crossproc.c Index: crossproc.c =================================================================== RCS file: /export/home/cvs/apache-2.0/src/lib/apr/locks/unix/crossproc.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- crossproc.c 1999/12/03 15:18:27 1.10 +++ crossproc.c 2000/01/23 01:13:46 1.11 @@ -56,12 +56,14 @@ #include "locks.h" #if defined (USE_SYSVSEM_SERIALIZE) -ap_status_t lock_cleanup(struct lock_t *lock) +ap_status_t lock_cleanup(void *lock_) { + struct lock_t *lock=lock_; union semun ick; + if (lock->curr_locked == 1) { ick.val = 0; - semctl(new->interproc, 0, IPC_RMID, ick); + semctl(lock->interproc, 0, IPC_RMID, ick); } return APR_SUCCESS; } @@ -71,7 +73,7 @@ union semun ick; struct semid_ds buf; - new->interproc = semget(IPC_PRIVATE, 1, IPC_CREATE | 0600); + new->interproc = semget(IPC_PRIVATE, 1, IPC_CREAT | 0600); if (new->interproc < 0) { lock_cleanup(new); @@ -97,7 +99,7 @@ ap_status_t lock_inter(struct lock_t *lock) { - new->curr_locked = 1; + lock->curr_locked = 1; if (semop(lock->interproc, &lock->op_on, 1) < 0) { return errno; } @@ -109,7 +111,7 @@ if (semop(lock->interproc, &lock->op_off, 1) < 0) { return errno; } - new->curr_locked = 0; + lock->curr_locked = 0; return APR_SUCCESS; } 1.9 +4 -1 apache-2.0/src/lib/apr/locks/unix/locks.h Index: locks.h =================================================================== RCS file: /export/home/cvs/apache-2.0/src/lib/apr/locks/unix/locks.h,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- locks.h 1999/12/06 18:58:28 1.8 +++ locks.h 2000/01/23 01:13:47 1.9 @@ -88,6 +88,9 @@ #if HAVE_FCNTL_H #include #endif +#ifdef HAVE_STRUCT_UNION_SEMUN +#include +#endif #if APR_HAS_THREADS #if HAVE_PTHREAD_H @@ -96,7 +99,7 @@ #endif /* End System Headers */ -#ifndef HAVE_UNION_SEMUN +#ifndef HAVE_STRUCT_UNION_SEMUN /* it makes no sense, but this isn't defined on solaris */ union semun { long val; 1.8 +3 -0 apache-2.0/src/lib/apr/time/unix/timestr.c Index: timestr.c =================================================================== RCS file: /export/home/cvs/apache-2.0/src/lib/apr/time/unix/timestr.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- timestr.c 2000/01/19 01:51:30 1.7 +++ timestr.c 2000/01/23 01:13:47 1.8 @@ -56,6 +56,8 @@ #include "atime.h" #include "apr_portable.h" +#include + API_VAR_EXPORT const char ap_month_snames[12][4] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" @@ -159,6 +161,7 @@ const char *format, ap_exploded_time_t *xt) { struct tm tm; + memset(&tm, 0, sizeof tm); tm.tm_sec = xt->tm_sec; tm.tm_min = xt->tm_min;