On Mon, Nov 19, 2001 at 12:09:56PM -0800, Ryan Bloom wrote:
> On Monday 19 November 2001 09:19 am, Aaron Bannert wrote:
> > What is the right way to handle this? I don't think we should we be
> > conditionally compiling declarations, only implementations. We can
> > either go for runtime errors (APR_ENOTIMPL) when functionality is
> > non-existant (--disable-threads), or we'll have to go around putting #if
> > blocks around all the code references.
>
> We should always opt for compile time errors over run-time errors, because
> it makes the error easier to see and fix. I would say, fix mod_ssl by #if'ing
> the code.
There are many other places where we make calls to the lock API without
checking APR_HAS_THREADS. I'm not so sure anymore that APR_HAS_THREADS
is even appropriate for the entire lock API (eg. crossprocess locks).
For the locks that do depend on a threading library (apr_thread_*_t)
how about we #error if the header was included but APR_HAS_THREADS
is not defined?
Something like this?
Index: apr_thread_mutex.h
===================================================================
RCS file: /home/cvs/apr/include/apr_thread_mutex.h,v
retrieving revision 1.4
diff -u -u -r1.4 apr_thread_mutex.h
--- apr_thread_mutex.h 2001/10/17 00:33:00 1.4
+++ apr_thread_mutex.h 2001/11/19 20:30:25
@@ -59,12 +59,14 @@
#include "apr_pools.h"
#include "apr_errno.h"
+#ifndef APR_HAS_THREADS
+#error Threads must be enabled to use the apr_thread_mutex.h interface
+#endif
+
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
-#if APR_HAS_THREADS
-
/**
* @file apr_thread_mutex.h
* @brief APR Thread Mutex Routines
@@ -127,8 +129,6 @@
* @return apr_pool_t the pool
*/
APR_POOL_DECLARE_ACCESSOR(thread_mutex);
-
-#endif
#ifdef __cplusplus
}