diff options
Diffstat (limited to 'include')
48 files changed, 0 insertions, 9418 deletions
diff --git a/include/apr_anylock.h b/include/apr_anylock.h deleted file mode 100644 index 51e97ff3..00000000 --- a/include/apr_anylock.h +++ /dev/null @@ -1,128 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @file apr_anylock.h - * @brief APR-Util transparent any lock flavor wrapper - */ -#ifndef APR_ANYLOCK_H -#define APR_ANYLOCK_H - -#include "apr_proc_mutex.h" -#include "apr_thread_mutex.h" -#include "apr_thread_rwlock.h" - -/** Structure that may contain any APR lock type */ -typedef struct apr_anylock_t { - /** Indicates what type of lock is in lock */ - enum tm_lock { - apr_anylock_none, /**< None */ - apr_anylock_procmutex, /**< Process-based */ - apr_anylock_threadmutex, /**< Thread-based */ - apr_anylock_readlock, /**< Read lock */ - apr_anylock_writelock /**< Write lock */ - } type; - /** Union of all possible APR locks */ - union apr_anylock_u_t { - apr_proc_mutex_t *pm; /**< Process mutex */ -#if APR_HAS_THREADS - apr_thread_mutex_t *tm; /**< Thread mutex */ - apr_thread_rwlock_t *rw; /**< Read-write lock */ -#endif - } lock; -} apr_anylock_t; - -#if APR_HAS_THREADS - -/** Lock an apr_anylock_t structure */ -#define APR_ANYLOCK_LOCK(lck) \ - (((lck)->type == apr_anylock_none) \ - ? APR_SUCCESS \ - : (((lck)->type == apr_anylock_threadmutex) \ - ? apr_thread_mutex_lock((lck)->lock.tm) \ - : (((lck)->type == apr_anylock_procmutex) \ - ? apr_proc_mutex_lock((lck)->lock.pm) \ - : (((lck)->type == apr_anylock_readlock) \ - ? apr_thread_rwlock_rdlock((lck)->lock.rw) \ - : (((lck)->type == apr_anylock_writelock) \ - ? apr_thread_rwlock_wrlock((lck)->lock.rw) \ - : APR_EINVAL))))) - -#else /* APR_HAS_THREADS */ - -#define APR_ANYLOCK_LOCK(lck) \ - (((lck)->type == apr_anylock_none) \ - ? APR_SUCCESS \ - : (((lck)->type == apr_anylock_procmutex) \ - ? apr_proc_mutex_lock((lck)->lock.pm) \ - : APR_EINVAL)) - -#endif /* APR_HAS_THREADS */ - -#if APR_HAS_THREADS - -/** Try to lock an apr_anylock_t structure */ -#define APR_ANYLOCK_TRYLOCK(lck) \ - (((lck)->type == apr_anylock_none) \ - ? APR_SUCCESS \ - : (((lck)->type == apr_anylock_threadmutex) \ - ? apr_thread_mutex_trylock((lck)->lock.tm) \ - : (((lck)->type == apr_anylock_procmutex) \ - ? apr_proc_mutex_trylock((lck)->lock.pm) \ - : (((lck)->type == apr_anylock_readlock) \ - ? apr_thread_rwlock_tryrdlock((lck)->lock.rw) \ - : (((lck)->type == apr_anylock_writelock) \ - ? apr_thread_rwlock_trywrlock((lck)->lock.rw) \ - : APR_EINVAL))))) - -#else /* APR_HAS_THREADS */ - -#define APR_ANYLOCK_TRYLOCK(lck) \ - (((lck)->type == apr_anylock_none) \ - ? APR_SUCCESS \ - : (((lck)->type == apr_anylock_procmutex) \ - ? apr_proc_mutex_trylock((lck)->lock.pm) \ - : APR_EINVAL)) - -#endif /* APR_HAS_THREADS */ - -#if APR_HAS_THREADS - -/** Unlock an apr_anylock_t structure */ -#define APR_ANYLOCK_UNLOCK(lck) \ - (((lck)->type == apr_anylock_none) \ - ? APR_SUCCESS \ - : (((lck)->type == apr_anylock_threadmutex) \ - ? apr_thread_mutex_unlock((lck)->lock.tm) \ - : (((lck)->type == apr_anylock_procmutex) \ - ? apr_proc_mutex_unlock((lck)->lock.pm) \ - : ((((lck)->type == apr_anylock_readlock) || \ - ((lck)->type == apr_anylock_writelock)) \ - ? apr_thread_rwlock_unlock((lck)->lock.rw) \ - : APR_EINVAL)))) - -#else /* APR_HAS_THREADS */ - -#define APR_ANYLOCK_UNLOCK(lck) \ - (((lck)->type == apr_anylock_none) \ - ? APR_SUCCESS \ - : (((lck)->type == apr_anylock_procmutex) \ - ? apr_proc_mutex_unlock((lck)->lock.pm) \ - : APR_EINVAL)) - -#endif /* APR_HAS_THREADS */ - -#endif /* !APR_ANYLOCK_H */ diff --git a/include/apr_base64.h b/include/apr_base64.h deleted file mode 100644 index b4b2b88f..00000000 --- a/include/apr_base64.h +++ /dev/null @@ -1,112 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * The apr_vsnprintf/apr_snprintf functions are based on, and used with the - * permission of, the SIO stdio-replacement strx_* functions by Panos - * Tsirigotis <panos@alumni.cs.colorado.edu> for xinetd. - */ - -/** - * @file apr_base64.h - * @brief APR-UTIL Base64 Encoding - */ -#ifndef APR_BASE64_H -#define APR_BASE64_H - -#include "apu.h" -#include "apr_general.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @defgroup APR_Util_Base64 Base64 Encoding - * @ingroup APR_Util - * @{ - */ - -/* Simple BASE64 encode/decode functions. - * - * As we might encode binary strings, hence we require the length of - * the incoming plain source. And return the length of what we decoded. - * - * The decoding function takes any non valid char (i.e. whitespace, \0 - * or anything non A-Z,0-9 etc as terminal. - * - * plain strings/binary sequences are not assumed '\0' terminated. Encoded - * strings are neither. But probably should. - * - */ - -/** - * Given the length of an un-encrypted string, get the length of the - * encrypted string. - * @param len the length of an unencrypted string. - * @return the length of the string after it is encrypted - */ -APU_DECLARE(int) apr_base64_encode_len(int len); - -/** - * Encode a text string using base64encoding. - * @param coded_dst The destination string for the encoded string. - * @param plain_src The original string in plain text - * @param len_plain_src The length of the plain text string - * @return the length of the encoded string - */ -APU_DECLARE(int) apr_base64_encode(char * coded_dst, const char *plain_src, - int len_plain_src); - -/** - * Encode an EBCDIC string using base64encoding. - * @param coded_dst The destination string for the encoded string. - * @param plain_src The original string in plain text - * @param len_plain_src The length of the plain text string - * @return the length of the encoded string - */ -APU_DECLARE(int) apr_base64_encode_binary(char * coded_dst, - const unsigned char *plain_src, - int len_plain_src); - -/** - * Determine the maximum buffer length required to decode the plain text - * string given the encoded string. - * @param coded_src The encoded string - * @return the maximum required buffer length for the plain text string - */ -APU_DECLARE(int) apr_base64_decode_len(const char * coded_src); - -/** - * Decode a string to plain text - * @param plain_dst The destination string for the plain text - * @param coded_src The encoded string - * @return the length of the plain text string - */ -APU_DECLARE(int) apr_base64_decode(char * plain_dst, const char *coded_src); - -/** - * Decode an EBCDIC string to plain text - * @param plain_dst The destination string for the plain text - * @param coded_src The encoded string - * @return the length of the plain text string - */ -APU_DECLARE(int) apr_base64_decode_binary(unsigned char * plain_dst, - const char *coded_src); - -/** @} */ -#ifdef __cplusplus -} -#endif - -#endif /* !APR_BASE64_H */ diff --git a/include/apr_buckets.h b/include/apr_buckets.h deleted file mode 100644 index fb87635c..00000000 --- a/include/apr_buckets.h +++ /dev/null @@ -1,1569 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file apr_buckets.h - * @brief APR-UTIL Buckets/Bucket Brigades - */ - -#ifndef APR_BUCKETS_H -#define APR_BUCKETS_H - -#if defined(APR_BUCKET_DEBUG) && !defined(APR_RING_DEBUG) -#define APR_RING_DEBUG -#endif - -#include "apu.h" -#include "apr_network_io.h" -#include "apr_file_io.h" -#include "apr_general.h" -#include "apr_mmap.h" -#include "apr_errno.h" -#include "apr_ring.h" -#include "apr.h" -#if APR_HAVE_SYS_UIO_H -#include <sys/uio.h> /* for struct iovec */ -#endif -#if APR_HAVE_STDARG_H -#include <stdarg.h> -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @defgroup APR_Util_Bucket_Brigades Bucket Brigades - * @ingroup APR_Util - * @{ - */ - -/** default bucket buffer size - 8KB minus room for memory allocator headers */ -#define APR_BUCKET_BUFF_SIZE 8000 - -/** Determines how a bucket or brigade should be read */ -typedef enum { - APR_BLOCK_READ, /**< block until data becomes available */ - APR_NONBLOCK_READ /**< return immediately if no data is available */ -} apr_read_type_e; - -/** - * The one-sentence buzzword-laden overview: Bucket brigades represent - * a complex data stream that can be passed through a layered IO - * system without unnecessary copying. A longer overview follows... - * - * A bucket brigade is a doubly linked list (ring) of buckets, so we - * aren't limited to inserting at the front and removing at the end. - * Buckets are only passed around as members of a brigade, although - * singleton buckets can occur for short periods of time. - * - * Buckets are data stores of various types. They can refer to data in - * memory, or part of a file or mmap area, or the output of a process, - * etc. Buckets also have some type-dependent accessor functions: - * read, split, copy, setaside, and destroy. - * - * read returns the address and size of the data in the bucket. If the - * data isn't in memory then it is read in and the bucket changes type - * so that it can refer to the new location of the data. If all the - * data doesn't fit in the bucket then a new bucket is inserted into - * the brigade to hold the rest of it. - * - * split divides the data in a bucket into two regions. After a split - * the original bucket refers to the first part of the data and a new - * bucket inserted into the brigade after the original bucket refers - * to the second part of the data. Reference counts are maintained as - * necessary. - * - * setaside ensures that the data in the bucket has a long enough - * lifetime. Sometimes it is convenient to create a bucket referring - * to data on the stack in the expectation that it will be consumed - * (output to the network) before the stack is unwound. If that - * expectation turns out not to be valid, the setaside function is - * called to move the data somewhere safer. - * - * copy makes a duplicate of the bucket structure as long as it's - * possible to have multiple references to a single copy of the - * data itself. Not all bucket types can be copied. - * - * destroy maintains the reference counts on the resources used by a - * bucket and frees them if necessary. - * - * Note: all of the above functions have wrapper macros (apr_bucket_read(), - * apr_bucket_destroy(), etc), and those macros should be used rather - * than using the function pointers directly. - * - * To write a bucket brigade, they are first made into an iovec, so that we - * don't write too little data at one time. Currently we ignore compacting the - * buckets into as few buckets as possible, but if we really want good - * performance, then we need to compact the buckets before we convert to an - * iovec, or possibly while we are converting to an iovec. - */ - -/* - * Forward declaration of the main types. - */ - -/** @see apr_bucket_brigade */ -typedef struct apr_bucket_brigade apr_bucket_brigade; -/** @see apr_bucket */ -typedef struct apr_bucket apr_bucket; -/** @see apr_bucket_alloc_t */ -typedef struct apr_bucket_alloc_t apr_bucket_alloc_t; - -/** @see apr_bucket_type_t */ -typedef struct apr_bucket_type_t apr_bucket_type_t; - -/** - * Basic bucket type - */ -struct apr_bucket_type_t { - /** - * The name of the bucket type - */ - const char *name; - /** - * The number of functions this bucket understands. Can not be less than - * five. - */ - int num_func; - /** - * Whether the bucket contains metadata (ie, information that - * describes the regular contents of the brigade). The metadata - * is not returned by apr_bucket_read() and is not indicated by - * the ->length of the apr_bucket itself. In other words, an - * empty bucket is safe to arbitrarily remove if and only if it - * contains no metadata. In this sense, "data" is just raw bytes - * that are the "content" of the brigade and "metadata" describes - * that data but is not a proper part of it. - */ - enum { - /** This bucket type represents actual data to send to the client. */ - APR_BUCKET_DATA = 0, - /** This bucket type represents metadata. */ - APR_BUCKET_METADATA = 1 - } is_metadata; - /** - * Free the private data and any resources used by the bucket (if they - * aren't shared with another bucket). This function is required to be - * implemented for all bucket types, though it might be a no-op on some - * of them (namely ones that never allocate any private data structures). - * @param data The private data pointer from the bucket to be destroyed - */ - void (*destroy)(void *data); - - /** - * Read the data from the bucket. This is required to be implemented - * for all bucket types. - * @param b The bucket to read from - * @param str A place to store the data read. Allocation should only be - * done if absolutely necessary. - * @param len The amount of data read. - * @param block Should this read function block if there is more data that - * cannot be read immediately. - */ - apr_status_t (*read)(apr_bucket *b, const char **str, apr_size_t *len, - apr_read_type_e block); - - /** - * Make it possible to set aside the data for at least as long as the - * given pool. Buckets containing data that could potentially die before - * this pool (e.g. the data resides on the stack, in a child pool of - * the given pool, or in a disjoint pool) must somehow copy, shift, or - * transform the data to have the proper lifetime. - * @param e The bucket to convert - * @remark Some bucket types contain data that will always outlive the - * bucket itself. For example no data (EOS and FLUSH), or the data - * resides in global, constant memory (IMMORTAL), or the data is on - * the heap (HEAP). For these buckets, apr_bucket_setaside_noop can - * be used. - */ - apr_status_t (*setaside)(apr_bucket *e, apr_pool_t *pool); - - /** - * Split one bucket in two at the specified position by duplicating - * the bucket structure (not the data) and modifying any necessary - * start/end/offset information. If it's not possible to do this - * for the bucket type (perhaps the length of the data is indeterminate, - * as with pipe and socket buckets), then APR_ENOTIMPL is returned. - * @param e The bucket to split - * @param point The offset of the first byte in the new bucket - */ - apr_status_t (*split)(apr_bucket *e, apr_size_t point); - - /** - * Copy the bucket structure (not the data), assuming that this is - * possible for the bucket type. If it's not, APR_ENOTIMPL is returned. - * @param e The bucket to copy - * @param c Returns a pointer to the new bucket - */ - apr_status_t (*copy)(apr_bucket *e, apr_bucket **c); - -}; - -/** - * apr_bucket structures are allocated on the malloc() heap and - * their lifetime is controlled by the parent apr_bucket_brigade - * structure. Buckets can move from one brigade to another e.g. by - * calling APR_BRIGADE_CONCAT(). In general the data in a bucket has - * the same lifetime as the bucket and is freed when the bucket is - * destroyed; if the data is shared by more than one bucket (e.g. - * after a split) the data is freed when the last bucket goes away. - */ -struct apr_bucket { - /** Links to the rest of the brigade */ - APR_RING_ENTRY(apr_bucket) link; - /** The type of bucket. */ - const apr_bucket_type_t *type; - /** The length of the data in the bucket. This could have been implemented - * with a function, but this is an optimization, because the most - * common thing to do will be to get the length. If the length is unknown, - * the value of this field will be (apr_size_t)(-1). - */ - apr_size_t length; - /** The start of the data in the bucket relative to the private base - * pointer. The vast majority of bucket types allow a fixed block of - * data to be referenced by multiple buckets, each bucket pointing to - * a different segment of the data. That segment starts at base+start - * and ends at base+start+length. - * If the length == (apr_size_t)(-1), then start == -1. - */ - apr_off_t start; - /** type-dependent data hangs off this pointer */ - void *data; - /** - * Pointer to function used to free the bucket. This function should - * always be defined and it should be consistent with the memory - * function used to allocate the bucket. For example, if malloc() is - * used to allocate the bucket, this pointer should point to free(). - * @param e Pointer to the bucket being freed - */ - void (*free)(void *e); - /** The freelist from which this bucket was allocated */ - apr_bucket_alloc_t *list; -}; - -/** A list of buckets */ -struct apr_bucket_brigade { - /** The pool to associate the brigade with. The data is not allocated out - * of the pool, but a cleanup is registered with this pool. If the - * brigade is destroyed by some mechanism other than pool destruction, - * the destroying function is responsible for killing the cleanup. - */ - apr_pool_t *p; - /** The buckets in the brigade are on this list. */ - /* - * The apr_bucket_list structure doesn't actually need a name tag - * because it has no existence independent of struct apr_bucket_brigade; - * the ring macros are designed so that you can leave the name tag - * argument empty in this situation but apparently the Windows compiler - * doesn't like that. - */ - APR_RING_HEAD(apr_bucket_list, apr_bucket) list; - /** The freelist from which this bucket was allocated */ - apr_bucket_alloc_t *bucket_alloc; -}; - - -/** - * Function called when a brigade should be flushed - */ -typedef apr_status_t (*apr_brigade_flush)(apr_bucket_brigade *bb, void *ctx); - -/* - * define APR_BUCKET_DEBUG if you want your brigades to be checked for - * validity at every possible instant. this will slow your code down - * substantially but is a very useful debugging tool. - */ -#ifdef APR_BUCKET_DEBUG - -#define APR_BRIGADE_CHECK_CONSISTENCY(b) \ - APR_RING_CHECK_CONSISTENCY(&(b)->list, apr_bucket, link) - -#define APR_BUCKET_CHECK_CONSISTENCY(e) \ - APR_RING_CHECK_ELEM_CONSISTENCY((e), apr_bucket, link) - -#else -/** - * checks the ring pointers in a bucket brigade for consistency. an - * abort() will be triggered if any inconsistencies are found. - * note: this is a no-op unless APR_BUCKET_DEBUG is defined. - * @param b The brigade - */ -#define APR_BRIGADE_CHECK_CONSISTENCY(b) -/** - * checks the brigade a bucket is in for ring consistency. an - * abort() will be triggered if any inconsistencies are found. - * note: this is a no-op unless APR_BUCKET_DEBUG is defined. - * @param e The bucket - */ -#define APR_BUCKET_CHECK_CONSISTENCY(e) -#endif - - -/** - * Wrappers around the RING macros to reduce the verbosity of the code - * that handles bucket brigades. - */ -/** - * The magic pointer value that indicates the head of the brigade - * @remark This is used to find the beginning and end of the brigade, eg: - * <pre> - * while (e != APR_BRIGADE_SENTINEL(b)) { - * ... - * e = APR_BUCKET_NEXT(e); - * } - * </pre> - * @param b The brigade - * @return The magic pointer value - */ -#define APR_BRIGADE_SENTINEL(b) APR_RING_SENTINEL(&(b)->list, apr_bucket, link) - -/** - * Determine if the bucket brigade is empty - * @param b The brigade to check - * @return true or false - */ -#define APR_BRIGADE_EMPTY(b) APR_RING_EMPTY(&(b)->list, apr_bucket, link) - -/** - * Return the first bucket in a brigade - * @param b The brigade to query - * @return The first bucket in the brigade - */ -#define APR_BRIGADE_FIRST(b) APR_RING_FIRST(&(b)->list) -/** - * Return the last bucket in a brigade - * @param b The brigade to query - * @return The last bucket in the brigade - */ -#define APR_BRIGADE_LAST(b) APR_RING_LAST(&(b)->list) - -/** - * Insert a list of buckets at the front of a brigade - * @param b The brigade to add to - * @param e The first bucket in a list of buckets to insert - */ -#define APR_BRIGADE_INSERT_HEAD(b, e) do { \ - apr_bucket *ap__b = (e); \ - APR_RING_INSERT_HEAD(&(b)->list, ap__b, apr_bucket, link); \ - APR_BRIGADE_CHECK_CONSISTENCY((b)); \ - } while (0) - -/** - * Insert a list of buckets at the end of a brigade - * @param b The brigade to add to - * @param e The first bucket in a list of buckets to insert - */ -#define APR_BRIGADE_INSERT_TAIL(b, e) do { \ - apr_bucket *ap__b = (e); \ - APR_RING_INSERT_TAIL(&(b)->list, ap__b, apr_bucket, link); \ - APR_BRIGADE_CHECK_CONSISTENCY((b)); \ - } while (0) - -/** - * Concatenate brigade b onto the end of brigade a, leaving brigade b empty - * @param a The first brigade - * @param b The second brigade - */ -#define APR_BRIGADE_CONCAT(a, b) do { \ - APR_RING_CONCAT(&(a)->list, &(b)->list, apr_bucket, link); \ - APR_BRIGADE_CHECK_CONSISTENCY((a)); \ - } while (0) - -/** - * Prepend brigade b onto the beginning of brigade a, leaving brigade b empty - * @param a The first brigade - * @param b The second brigade - */ -#define APR_BRIGADE_PREPEND(a, b) do { \ - APR_RING_PREPEND(&(a)->list, &(b)->list, apr_bucket, link); \ - APR_BRIGADE_CHECK_CONSISTENCY((a)); \ - } while (0) - -/** - * Insert a list of buckets before a specified bucket - * @param a The bucket to insert before - * @param b The buckets to insert - */ -#define APR_BUCKET_INSERT_BEFORE(a, b) do { \ - apr_bucket *ap__a = (a), *ap__b = (b); \ - APR_RING_INSERT_BEFORE(ap__a, ap__b, link); \ - APR_BUCKET_CHECK_CONSISTENCY(ap__a); \ - } while (0) - -/** - * Insert a list of buckets after a specified bucket - * @param a The bucket to insert after - * @param b The buckets to insert - */ -#define APR_BUCKET_INSERT_AFTER(a, b) do { \ - apr_bucket *ap__a = (a), *ap__b = (b); \ - APR_RING_INSERT_AFTER(ap__a, ap__b, link); \ - APR_BUCKET_CHECK_CONSISTENCY(ap__a); \ - } while (0) - -/** - * Get the next bucket in the list - * @param e The current bucket - * @return The next bucket - */ -#define APR_BUCKET_NEXT(e) APR_RING_NEXT((e), link) -/** - * Get the previous bucket in the list - * @param e The current bucket - * @return The previous bucket - */ -#define APR_BUCKET_PREV(e) APR_RING_PREV((e), link) - -/** - * Remove a bucket from its bucket brigade - * @param e The bucket to remove - */ -#define APR_BUCKET_REMOVE(e) APR_RING_REMOVE((e), link) - -/** - * Initialize a new bucket's prev/next pointers - * @param e The bucket to initialize - */ -#define APR_BUCKET_INIT(e) APR_RING_ELEM_INIT((e), link) - -/** - * Determine if a bucket contains metadata. An empty bucket is - * safe to arbitrarily remove if and only if this is false. - * @param e The bucket to inspect - * @return true or false - */ -#define APR_BUCKET_IS_METADATA(e) ((e)->type->is_metadata) - -/** - * Determine if a bucket is a FLUSH bucket - * @param e The bucket to inspect - * @return true or false - */ -#define APR_BUCKET_IS_FLUSH(e) ((e)->type == &apr_bucket_type_flush) -/** - * Determine if a bucket is an EOS bucket - * @param e The bucket to inspect - * @return true or false - */ -#define APR_BUCKET_IS_EOS(e) ((e)->type == &apr_bucket_type_eos) -/** - * Determine if a bucket is a FILE bucket - * @param e The bucket to inspect - * @return true or false - */ -#define APR_BUCKET_IS_FILE(e) ((e)->type == &apr_bucket_type_file) -/** - * Determine if a bucket is a PIPE bucket - * @param e The bucket to inspect - * @return true or false - */ -#define APR_BUCKET_IS_PIPE(e) ((e)->type == &apr_bucket_type_pipe) -/** - * Determine if a bucket is a SOCKET bucket - * @param e The bucket to inspect - * @return true or false - */ -#define APR_BUCKET_IS_SOCKET(e) ((e)->type == &apr_bucket_type_socket) -/** - * Determine if a bucket is a HEAP bucket - * @param e The bucket to inspect - * @return true or false - */ -#define APR_BUCKET_IS_HEAP(e) ((e)->type == &apr_bucket_type_heap) -/** - * Determine if a bucket is a TRANSIENT bucket - * @param e The bucket to inspect - * @return true or false - */ -#define APR_BUCKET_IS_TRANSIENT(e) ((e)->type == &apr_bucket_type_transient) -/** - * Determine if a bucket is a IMMORTAL bucket - * @param e The bucket to inspect - * @return true or false - */ -#define APR_BUCKET_IS_IMMORTAL(e) ((e)->type == &apr_bucket_type_immortal) -#if APR_HAS_MMAP -/** - * Determine if a bucket is a MMAP bucket - * @param e The bucket to inspect - * @return true or false - */ -#define APR_BUCKET_IS_MMAP(e) ((e)->type == &apr_bucket_type_mmap) -#endif -/** - * Determine if a bucket is a POOL bucket - * @param e The bucket to inspect - * @return true or false - */ -#define APR_BUCKET_IS_POOL(e) ((e)->type == &apr_bucket_type_pool) - -/* - * General-purpose reference counting for the various bucket types. - * - * Any bucket type that keeps track of the resources it uses (i.e. - * most of them except for IMMORTAL, TRANSIENT, and EOS) needs to - * attach a reference count to the resource so that it can be freed - * when the last bucket that uses it goes away. Resource-sharing may - * occur because of bucket splits or buckets that refer to globally - * cached data. */ - -/** @see apr_bucket_refcount */ -typedef struct apr_bucket_refcount apr_bucket_refcount; -/** - * The structure used to manage the shared resource must start with an - * apr_bucket_refcount which is updated by the general-purpose refcount - * code. A pointer to the bucket-type-dependent private data structure - * can be cast to a pointer to an apr_bucket_refcount and vice versa. - */ -struct apr_bucket_refcount { - /** The number of references to this bucket */ - int refcount; -}; - -/* ***** Reference-counted bucket types ***** */ - -/** @see apr_bucket_heap */ -typedef struct apr_bucket_heap apr_bucket_heap; -/** - * A bucket referring to data allocated off the heap. - */ -struct apr_bucket_heap { - /** Number of buckets using this memory */ - apr_bucket_refcount refcount; - /** The start of the data actually allocated. This should never be - * modified, it is only used to free the bucket. - */ - char *base; - /** how much memory was allocated */ - apr_size_t alloc_len; - /** function to use to delete the data */ - void (*free_func)(void *data); -}; - -/** @see apr_bucket_pool */ -typedef struct apr_bucket_pool apr_bucket_pool; -/** - * A bucket referring to data allocated from a pool - */ -struct apr_bucket_pool { - /** The pool bucket must be able to be easily morphed to a heap - * bucket if the pool gets cleaned up before all references are - * destroyed. This apr_bucket_heap structure is populated automatically - * when the pool gets cleaned up, and subsequent calls to pool_read() - * will result in the apr_bucket in question being morphed into a - * regular heap bucket. (To avoid having to do many extra refcount - * manipulations and b->data manipulations, the apr_bucket_pool - * struct actually *contains* the apr_bucket_heap struct that it - * will become as its first element; the two share their - * apr_bucket_refcount members.) - */ - apr_bucket_heap heap; - /** The block of data actually allocated from the pool. - * Segments of this block are referenced by adjusting - * the start and length of the apr_bucket accordingly. - * This will be NULL after the pool gets cleaned up. - */ - const char *base; - /** The pool the data was allocated from. When the pool - * is cleaned up, this gets set to NULL as an indicator - * to pool_read() that the data is now on the heap and - * so it should morph the bucket into a regular heap - * bucket before continuing. - */ - apr_pool_t *pool; - /** The freelist this structure was allocated from, which is - * needed in the cleanup phase in order to allocate space on the heap - */ - apr_bucket_alloc_t *list; -}; - -#if APR_HAS_MMAP -/** @see apr_bucket_mmap */ -typedef struct apr_bucket_mmap apr_bucket_mmap; -/** - * A bucket referring to an mmap()ed file - */ -struct apr_bucket_mmap { - /** Number of buckets using this memory */ - apr_bucket_refcount refcount; - /** The mmap this sub_bucket refers to */ - apr_mmap_t *mmap; -}; -#endif - -/** @see apr_bucket_file */ -typedef struct apr_bucket_file apr_bucket_file; -/** - * A bucket referring to an file - */ -struct apr_bucket_file { - /** Number of buckets using this memory */ - apr_bucket_refcount refcount; - /** The file this bucket refers to */ - apr_file_t *fd; - /** The pool into which any needed structures should - * be created while reading from this file bucket */ - apr_pool_t *readpool; -#if APR_HAS_MMAP - /** Whether this bucket should be memory-mapped if - * a caller tries to read from it */ - int can_mmap; -#endif /* APR_HAS_MMAP */ -}; - -/** @see apr_bucket_structs */ -typedef union apr_bucket_structs apr_bucket_structs; -/** - * A union of all bucket structures so we know what - * the max size is. - */ -union apr_bucket_structs { - apr_bucket b; /**< Bucket */ - apr_bucket_heap heap; /**< Heap */ - apr_bucket_pool pool; /**< Pool */ -#if APR_HAS_MMAP - apr_bucket_mmap mmap; /**< MMap */ -#endif - apr_bucket_file file; /**< File */ -}; - -/** - * The amount that apr_bucket_alloc() should allocate in the common case. - * Note: this is twice as big as apr_bucket_structs to allow breathing - * room for third-party bucket types. - */ -#define APR_BUCKET_ALLOC_SIZE APR_ALIGN_DEFAULT(2*sizeof(apr_bucket_structs)) - -/* ***** Bucket Brigade Functions ***** */ -/** - * Create a new bucket brigade. The bucket brigade is originally empty. - * @param p The pool to associate with the brigade. Data is not allocated out - * of the pool, but a cleanup is registered. - * @param list The bucket allocator to use - * @return The empty bucket brigade - */ -APU_DECLARE(apr_bucket_brigade *) apr_brigade_create(apr_pool_t *p, - apr_bucket_alloc_t *list); - -/** - * destroy an entire bucket brigade. This includes destroying all of the - * buckets within the bucket brigade's bucket list. - * @param b The bucket brigade to destroy - */ -APU_DECLARE(apr_status_t) apr_brigade_destroy(apr_bucket_brigade *b); - -/** - * empty out an entire bucket brigade. This includes destroying all of the - * buckets within the bucket brigade's bucket list. This is similar to - * apr_brigade_destroy(), except that it does not deregister the brigade's - * pool cleanup function. - * @param data The bucket brigade to clean up - * @remark Generally, you should use apr_brigade_destroy(). This function - * can be useful in situations where you have a single brigade that - * you wish to reuse many times by destroying all of the buckets in - * the brigade and putting new buckets into it later. - */ -APU_DECLARE(apr_status_t) apr_brigade_cleanup(void *data); - -/** - * Move the buckets from the tail end of the existing brigade @param b into - * the brigade @param a. If @param a is NULL a new brigade is created. Buckets - * from @param e to the last bucket (inclusively) of brigade @param b are moved - * from @param b to the returned brigade @param a. - * @param b The brigade to split - * @param e The first bucket to move - * @param a The brigade which should be used for the result or NULL if - * a new brigade should be created. - * @return The brigade supplied in @param a or a new one if @param a was NULL. - * @warning Note that this function allocates a new brigade if @param a is - * NULL so memory consumption should be carefully considered. - */ -APU_DECLARE(apr_bucket_brigade *) apr_brigade_split_ex(apr_bucket_brigade *b, - apr_bucket *e, - apr_bucket_brigade *a); - -/** - * Create a new bucket brigade and move the buckets from the tail end - * of an existing brigade into the new brigade. Buckets from - * @param e to the last bucket (inclusively) of brigade @param b - * are moved from @param b to the returned brigade. - * @param b The brigade to split - * @param e The first bucket to move - * @return The new brigade - * @warning Note that this function always allocates a new brigade - * so memory consumption should be carefully considered. - */ -APU_DECLARE(apr_bucket_brigade *) apr_brigade_split(apr_bucket_brigade *b, - apr_bucket *e); - -/** - * Partition a bucket brigade at a given offset (in bytes from the start of - * the brigade). This is useful whenever a filter wants to use known ranges - * of bytes from the brigade; the ranges can even overlap. - * @param b The brigade to partition - * @param point The offset at which to partition the brigade - * @param after_point Returns a pointer to the first bucket after the partition - * @return APR_SUCCESS on success, APR_INCOMPLETE if the contents of the - * brigade were shorter than @a point, or an error code. - * @remark if APR_INCOMPLETE is returned, @a after_point will be set to - * the brigade sentinel. - */ -APU_DECLARE(apr_status_t) apr_brigade_partition(apr_bucket_brigade *b, - apr_off_t point, - apr_bucket **after_point); - -/** - * Return the total length of the brigade. - * @param bb The brigade to compute the length of - * @param read_all Read unknown-length buckets to force a size - * @param length Returns the length of the brigade (up to the end, or up - * to a bucket read error), or -1 if the brigade has buckets - * of indeterminate length and read_all is 0. - */ -APU_DECLARE(apr_status_t) apr_brigade_length(apr_bucket_brigade *bb, - int read_all, - apr_off_t *length); - -/** - * Take a bucket brigade and store the data in a flat char* - * @param bb The bucket brigade to create the char* from - * @param c The char* to write into - * @param len The maximum length of the char array. On return, it is the - * actual length of the char array. - */ -APU_DECLARE(apr_status_t) apr_brigade_flatten(apr_bucket_brigade *bb, - char *c, - apr_size_t *len); - -/** - * Creates a pool-allocated string representing a flat bucket brigade - * @param bb The bucket brigade to create the char array from - * @param c On return, the allocated char array - * @param len On return, the length of the char array. - * @param pool The pool to allocate the string from. - */ -APU_DECLARE(apr_status_t) apr_brigade_pflatten(apr_bucket_brigade *bb, - char **c, - apr_size_t *len, - apr_pool_t *pool); - -/** - * Split a brigade to represent one LF line. - * @param bbOut The bucket brigade that will have the LF line appended to. - * @param bbIn The input bucket brigade to search for a LF-line. - * @param block The blocking mode to be used to split the line. - * @param maxbytes The maximum bytes to read. If this many bytes are seen - * without a LF, the brigade will contain a partial line. - */ -APU_DECLARE(apr_status_t) apr_brigade_split_line(apr_bucket_brigade *bbOut, - apr_bucket_brigade *bbIn, - apr_read_type_e block, - apr_off_t maxbytes); - -/** - * create an iovec of the elements in a bucket_brigade... return number - * of elements used. This is useful for writing to a file or to the - * network efficiently. - * @param b The bucket brigade to create the iovec from - * @param vec The iovec to create - * @param nvec The number of elements in the iovec. On return, it is the - * number of iovec elements actually filled out. - */ -APU_DECLARE(apr_status_t) apr_brigade_to_iovec(apr_bucket_brigade *b, - struct iovec *vec, int *nvec); - -/** - * This function writes a list of strings into a bucket brigade. - * @param b The bucket brigade to add to - * @param flush The flush function to use if the brigade is full - * @param ctx The structure to pass to the flush function - * @param va A list of strings to add - * @return APR_SUCCESS or error code. - */ -APU_DECLARE(apr_status_t) apr_brigade_vputstrs(apr_bucket_brigade *b, - apr_brigade_flush flush, - void *ctx, - va_list va); - -/** - * This function writes a string into a bucket brigade. - * - * The apr_brigade_write function attempts to be efficient with the - * handling of heap buckets. Regardless of the amount of data stored - * inside a heap bucket, heap buckets are a fixed size to promote their - * reuse. - * - * If an attempt is made to write a string to a brigade that already - * ends with a heap bucket, this function will attempt to pack the - * string into the remaining space in the previous heap bucket, before - * allocating a new heap bucket. - * - * This function always returns APR_SUCCESS, unless a flush function is - * passed, in which case the return value of the flush function will be - * returned if used. - * @param b The bucket brigade to add to - * @param flush The flush function to use if the brigade is full - * @param ctx The structure to pass to the flush function - * @param str The string to add - * @param nbyte The number of bytes to write - * @return APR_SUCCESS or error code - */ -APU_DECLARE(apr_status_t) apr_brigade_write(apr_bucket_brigade *b, - apr_brigade_flush flush, void *ctx, - const char *str, apr_size_t nbyte); - -/** - * This function writes multiple strings into a bucket brigade. - * @param b The bucket brigade to add to - * @param flush The flush function to use if the brigade is full - * @param ctx The structure to pass to the flush function - * @param vec The strings to add (address plus length for each) - * @param nvec The number of entries in iovec - * @return APR_SUCCESS or error code - */ -APU_DECLARE(apr_status_t) apr_brigade_writev(apr_bucket_brigade *b, - apr_brigade_flush flush, - void *ctx, - const struct iovec *vec, - apr_size_t nvec); - -/** - * This function writes a string into a bucket brigade. - * @param bb The bucket brigade to add to - * @param flush The flush function to use if the brigade is full - * @param ctx The structure to pass to the flush function - * @param str The string to add - * @return APR_SUCCESS or error code - */ -APU_DECLARE(apr_status_t) apr_brigade_puts(apr_bucket_brigade *bb, - apr_brigade_flush flush, void *ctx, - const char *str); - -/** - * This function writes a character into a bucket brigade. - * @param b The bucket brigade to add to - * @param flush The flush function to use if the brigade is full - * @param ctx The structure to pass to the flush function - * @param c The character to add - * @return APR_SUCCESS or error code - */ -APU_DECLARE(apr_status_t) apr_brigade_putc(apr_bucket_brigade *b, - apr_brigade_flush flush, void *ctx, - const char c); - -/** - * This function writes an unspecified number of strings into a bucket brigade. - * @param b The bucket brigade to add to - * @param flush The flush function to use if the brigade is full - * @param ctx The structure to pass to the flush function - * @param ... The strings to add - * @return APR_SUCCESS or error code - */ -APU_DECLARE_NONSTD(apr_status_t) apr_brigade_putstrs(apr_bucket_brigade *b, - apr_brigade_flush flush, - void *ctx, ...); - -/** - * Evaluate a printf and put the resulting string at the end - * of the bucket brigade. - * @param b The brigade to write to - * @param flush The flush function to use if the brigade is full - * @param ctx The structure to pass to the flush function - * @param fmt The format of the string to write - * @param ... The arguments to fill out the format - * @return APR_SUCCESS or error code - */ -APU_DECLARE_NONSTD(apr_status_t) apr_brigade_printf(apr_bucket_brigade *b, - apr_brigade_flush flush, - void *ctx, - const char *fmt, ...) - __attribute__((format(printf,4,5))); - -/** - * Evaluate a printf and put the resulting string at the end - * of the bucket brigade. - * @param b The brigade to write to - * @param flush The flush function to use if the brigade is full - * @param ctx The structure to pass to the flush function - * @param fmt The format of the string to write - * @param va The arguments to fill out the format - * @return APR_SUCCESS or error code - */ -APU_DECLARE(apr_status_t) apr_brigade_vprintf(apr_bucket_brigade *b, - apr_brigade_flush flush, - void *ctx, - const char *fmt, va_list va); - -/** - * Utility function to insert a file (or a segment of a file) onto the - * end of the brigade. The file is split into multiple buckets if it - * is larger than the maximum size which can be represented by a - * single bucket. - * @param bb the brigade to insert into - * @param f the file to insert - * @param start the offset of the start of the segment - * @param len the length of the segment of the file to insert - * @param p pool from which file buckets are allocated - * @return the last bucket inserted - */ -APU_DECLARE(apr_bucket *) apr_brigade_insert_file(apr_bucket_brigade *bb, - apr_file_t *f, - apr_off_t start, - apr_off_t len, - apr_pool_t *p); - - - -/* ***** Bucket freelist functions ***** */ -/** - * Create a bucket allocator. - * @param p This pool's underlying apr_allocator_t is used to allocate memory - * for the bucket allocator. When the pool is destroyed, the bucket - * allocator's cleanup routine will free all memory that has been - * allocated from it. - * @remark The reason the allocator gets its memory from the pool's - * apr_allocator_t rather than from the pool itself is because - * the bucket allocator will free large memory blocks back to the - * allocator when it's done with them, thereby preventing memory - * footprint growth that would occur if we allocated from the pool. - * @warning The allocator must never be used by more than one thread at a time. - */ -APU_DECLARE_NONSTD(apr_bucket_alloc_t *) apr_bucket_alloc_create(apr_pool_t *p); - -/** - * Create a bucket allocator. - * @param allocator This apr_allocator_t is used to allocate both the bucket - * allocator and all memory handed out by the bucket allocator. The - * caller is responsible for destroying the bucket allocator and the - * apr_allocator_t -- no automatic cleanups will happen. - * @warning The allocator must never be used by more than one thread at a time. - */ -APU_DECLARE_NONSTD(apr_bucket_alloc_t *) apr_bucket_alloc_create_ex(apr_allocator_t *allocator); - -/** - * Destroy a bucket allocator. - * @param list The allocator to be destroyed - */ -APU_DECLARE_NONSTD(void) apr_bucket_alloc_destroy(apr_bucket_alloc_t *list); - -/** - * Allocate memory for use by the buckets. - * @param size The amount to allocate. - * @param list The allocator from which to allocate the memory. - */ -APU_DECLARE_NONSTD(void *) apr_bucket_alloc(apr_size_t size, apr_bucket_alloc_t *list); - -/** - * Free memory previously allocated with apr_bucket_alloc(). - * @param block The block of memory to be freed. - */ -APU_DECLARE_NONSTD(void) apr_bucket_free(void *block); - - -/* ***** Bucket Functions ***** */ -/** - * Free the resources used by a bucket. If multiple buckets refer to - * the same resource it is freed when the last one goes away. - * @see apr_bucket_delete() - * @param e The bucket to destroy - */ -#define apr_bucket_destroy(e) do { \ - (e)->type->destroy((e)->data); \ - (e)->free(e); \ - } while (0) - -/** - * Delete a bucket by removing it from its brigade (if any) and then - * destroying it. - * @remark This mainly acts as an aid in avoiding code verbosity. It is - * the preferred exact equivalent to: - * <pre> - * APR_BUCKET_REMOVE(e); - * apr_bucket_destroy(e); - * </pre> - * @param e The bucket to delete - */ -#define apr_bucket_delete(e) do { \ - APR_BUCKET_REMOVE(e); \ - apr_bucket_destroy(e); \ - } while (0) - -/** - * Read some data from the bucket. - * - * The apr_bucket_read function returns a convenient amount of data - * from the bucket provided, writing the address and length of the - * data to the pointers provided by the caller. The function tries - * as hard as possible to avoid a memory copy. - * - * Buckets are expected to be a member of a brigade at the time they - * are read. - * - * In typical application code, buckets are read in a loop, and after - * each bucket is read and processed, it is moved or deleted from the - * brigade and the next bucket read. - * - * The definition of "convenient" depends on the type of bucket that - * is being read, and is decided by APR. In the case of memory based - * buckets such as heap and immortal buckets, a pointer will be - * returned to the location of the buffer containing the complete - * contents of the bucket. - * - * Some buckets, such as the socket bucket, might have no concept - * of length. If an attempt is made to read such a bucket, the - * apr_bucket_read function will read a convenient amount of data - * from the socket. The socket bucket is magically morphed into a - * heap bucket containing the just-read data, and a new socket bucket - * is inserted just after this heap bucket. - * - * To understand why apr_bucket_read might do this, consider the loop - * described above to read and process buckets. The current bucket - * is magically morphed into a heap bucket and returned to the caller. - * The caller processes the data, and deletes the heap bucket, moving - * onto the next bucket, the new socket bucket. This process repeats, - * giving the illusion of a bucket brigade that contains potentially - * infinite amounts of data. It is up to the caller to decide at what - * point to stop reading buckets. - * - * Some buckets, such as the file bucket, might have a fixed size, - * but be significantly larger than is practical to store in RAM in - * one go. As with the socket bucket, if an attempt is made to read - * from a file bucket, the file bucket is magically morphed into a - * heap bucket containing a convenient amount of data read from the - * current offset in the file. During the read, the offset will be - * moved forward on the file, and a new file bucket will be inserted - * directly after the current bucket representing the remainder of the - * file. If the heap bucket was large enough to store the whole - * remainder of the file, no more file buckets are inserted, and the - * file bucket will disappear completely. - * - * The pattern for reading buckets described above does create the - * illusion that the code is willing to swallow buckets that might be - * too large for the system to handle in one go. This however is just - * an illusion: APR will always ensure that large (file) or infinite - * (socket) buckets are broken into convenient bite sized heap buckets - * before data is returned to the caller. - * - * There is a potential gotcha to watch for: if buckets are read in a - * loop, and aren't deleted after being processed, the potentially large - * bucket will slowly be converted into RAM resident heap buckets. If - * the file is larger than available RAM, an out of memory condition - * could be caused if the application is not careful to manage this. - * - * @param e The bucket to read from - * @param str The location to store a pointer to the data in - * @param len The location to store the amount of data read - * @param block Whether the read function blocks - */ -#define apr_bucket_read(e,str,len,block) (e)->type->read(e, str, len, block) - -/** - * Setaside data so that stack data is not destroyed on returning from - * the function - * @param e The bucket to setaside - * @param p The pool to setaside into - */ -#define apr_bucket_setaside(e,p) (e)->type->setaside(e,p) - -/** - * Split one bucket in two at the point provided. - * - * Once split, the original bucket becomes the first of the two new buckets. - * - * (It is assumed that the bucket is a member of a brigade when this - * function is called). - * @param e The bucket to split - * @param point The offset to split the bucket at - */ -#define apr_bucket_split(e,point) (e)->type->split(e, point) - -/** - * Copy a bucket. - * @param e The bucket to copy - * @param c Returns a pointer to the new bucket - */ -#define apr_bucket_copy(e,c) (e)->type->copy(e, c) - -/* Bucket type handling */ - -/** - * This function simply returns APR_SUCCESS to denote that the bucket does - * not require anything to happen for its setaside() function. This is - * appropriate for buckets that have "immortal" data -- the data will live - * at least as long as the bucket. - * @param data The bucket to setaside - * @param pool The pool defining the desired lifetime of the bucket data - * @return APR_SUCCESS - */ -APU_DECLARE_NONSTD(apr_status_t) apr_bucket_setaside_noop(apr_bucket *data, - apr_pool_t *pool); - -/** - * A place holder function that signifies that the setaside function was not - * implemented for this bucket - * @param data The bucket to setaside - * @param pool The pool defining the desired lifetime of the bucket data - * @return APR_ENOTIMPL - */ -APU_DECLARE_NONSTD(apr_status_t) apr_bucket_setaside_notimpl(apr_bucket *data, - apr_pool_t *pool); - -/** - * A place holder function that signifies that the split function was not - * implemented for this bucket - * @param data The bucket to split - * @param point The location to split the bucket - * @return APR_ENOTIMPL - */ -APU_DECLARE_NONSTD(apr_status_t) apr_bucket_split_notimpl(apr_bucket *data, - apr_size_t point); - -/** - * A place holder function that signifies that the copy function was not - * implemented for this bucket - * @param e The bucket to copy - * @param c Returns a pointer to the new bucket - * @return APR_ENOTIMPL - */ -APU_DECLARE_NONSTD(apr_status_t) apr_bucket_copy_notimpl(apr_bucket *e, - apr_bucket **c); - -/** - * A place holder function that signifies that this bucket does not need - * to do anything special to be destroyed. That's only the case for buckets - * that either have no data (metadata buckets) or buckets whose data pointer - * points to something that's not a bucket-type-specific structure, as with - * simple buckets where data points to a string and pipe buckets where data - * points directly to the apr_file_t. - * @param data The bucket data to destroy - */ -APU_DECLARE_NONSTD(void) apr_bucket_destroy_noop(void *data); - -/** - * There is no apr_bucket_destroy_notimpl, because destruction is required - * to be implemented (it could be a noop, but only if that makes sense for - * the bucket type) - */ - -/* There is no apr_bucket_read_notimpl, because it is a required function - */ - - -/* All of the bucket types implemented by the core */ -/** - * The flush bucket type. This signifies that all data should be flushed to - * the next filter. The flush bucket should be sent with the other buckets. - */ -APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_flush; -/** - * The EOS bucket type. This signifies that there will be no more data, ever. - * All filters MUST send all data to the next filter when they receive a - * bucket of this type - */ -APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_eos; -/** - * The FILE bucket type. This bucket represents a file on disk - */ -APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_file; -/** - * The HEAP bucket type. This bucket represents a data allocated from the - * heap. - */ -APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_heap; -#if APR_HAS_MMAP -/** - * The MMAP bucket type. This bucket represents an MMAP'ed file - */ -APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_mmap; -#endif -/** - * The POOL bucket type. This bucket represents a data that was allocated - * from a pool. IF this bucket is still available when the pool is cleared, - * the data is copied on to the heap. - */ -APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_pool; -/** - * The PIPE bucket type. This bucket represents a pipe to another program. - */ -APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_pipe; -/** - * The IMMORTAL bucket type. This bucket represents a segment of data that - * the creator is willing to take responsibility for. The core will do - * nothing with the data in an immortal bucket - */ -APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_immortal; -/** - * The TRANSIENT bucket type. This bucket represents a data allocated off - * the stack. When the setaside function is called, this data is copied on - * to the heap - */ -APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_transient; -/** - * The SOCKET bucket type. This bucket represents a socket to another machine - */ -APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_socket; - - -/* ***** Simple buckets ***** */ - -/** - * Split a simple bucket into two at the given point. Most non-reference - * counting buckets that allow multiple references to the same block of - * data (eg transient and immortal) will use this as their split function - * without any additional type-specific handling. - * @param b The bucket to be split - * @param point The offset of the first byte in the new bucket - * @return APR_EINVAL if the point is not within the bucket; - * APR_ENOMEM if allocation failed; - * or APR_SUCCESS - */ -APU_DECLARE_NONSTD(apr_status_t) apr_bucket_simple_split(apr_bucket *b, - apr_size_t point); - -/** - * Copy a simple bucket. Most non-reference-counting buckets that allow - * multiple references to the same block of data (eg transient and immortal) - * will use this as their copy function without any additional type-specific - * handling. - * @param a The bucket to copy - * @param b Returns a pointer to the new bucket - * @return APR_ENOMEM if allocation failed; - * or APR_SUCCESS - */ -APU_DECLARE_NONSTD(apr_status_t) apr_bucket_simple_copy(apr_bucket *a, - apr_bucket **b); - - -/* ***** Shared, reference-counted buckets ***** */ - -/** - * Initialize a bucket containing reference-counted data that may be - * shared. The caller must allocate the bucket if necessary and - * initialize its type-dependent fields, and allocate and initialize - * its own private data structure. This function should only be called - * by type-specific bucket creation functions. - * @param b The bucket to initialize - * @param data A pointer to the private data structure - * with the reference count at the start - * @param start The start of the data in the bucket - * relative to the private base pointer - * @param length The length of the data in the bucket - * @return The new bucket, or NULL if allocation failed - */ -APU_DECLARE(apr_bucket *) apr_bucket_shared_make(apr_bucket *b, void *data, - apr_off_t start, - apr_size_t length); - -/** - * Decrement the refcount of the data in the bucket. This function - * should only be called by type-specific bucket destruction functions. - * @param data The private data pointer from the bucket to be destroyed - * @return TRUE or FALSE; TRUE if the reference count is now - * zero, indicating that the shared resource itself can - * be destroyed by the caller. - */ -APU_DECLARE(int) apr_bucket_shared_destroy(void *data); - -/** - * Split a bucket into two at the given point, and adjust the refcount - * to the underlying data. Most reference-counting bucket types will - * be able to use this function as their split function without any - * additional type-specific handling. - * @param b The bucket to be split - * @param point The offset of the first byte in the new bucket - * @return APR_EINVAL if the point is not within the bucket; - * APR_ENOMEM if allocation failed; - * or APR_SUCCESS - */ -APU_DECLARE_NONSTD(apr_status_t) apr_bucket_shared_split(apr_bucket *b, - apr_size_t point); - -/** - * Copy a refcounted bucket, incrementing the reference count. Most - * reference-counting bucket types will be able to use this function - * as their copy function without any additional type-specific handling. - * @param a The bucket to copy - * @param b Returns a pointer to the new bucket - * @return APR_ENOMEM if allocation failed; - or APR_SUCCESS - */ -APU_DECLARE_NONSTD(apr_status_t) apr_bucket_shared_copy(apr_bucket *a, - apr_bucket **b); - - -/* ***** Functions to Create Buckets of varying types ***** */ -/* - * Each bucket type foo has two initialization functions: - * apr_bucket_foo_make which sets up some already-allocated memory as a - * bucket of type foo; and apr_bucket_foo_create which allocates memory - * for the bucket, calls apr_bucket_make_foo, and initializes the - * bucket's list pointers. The apr_bucket_foo_make functions are used - * inside the bucket code to change the type of buckets in place; - * other code should call apr_bucket_foo_create. All the initialization - * functions change nothing if they fail. - */ - -/** - * Create an End of Stream bucket. This indicates that there is no more data - * coming from down the filter stack. All filters should flush at this point. - * @param list The freelist from which this bucket should be allocated - * @return The new bucket, or NULL if allocation failed - */ -APU_DECLARE(apr_bucket *) apr_bucket_eos_create(apr_bucket_alloc_t *list); - -/** - * Make the bucket passed in an EOS bucket. This indicates that there is no - * more data coming from down the filter stack. All filters should flush at - * this point. - * @param b The bucket to make into an EOS bucket - * @return The new bucket, or NULL if allocation failed - */ -APU_DECLARE(apr_bucket *) apr_bucket_eos_make(apr_bucket *b); - -/** - * Create a flush bucket. This indicates that filters should flush their - * data. There is no guarantee that they will flush it, but this is the - * best we can do. - * @param list The freelist from which this bucket should be allocated - * @return The new bucket, or NULL if allocation failed - */ -APU_DECLARE(apr_bucket *) apr_bucket_flush_create(apr_bucket_alloc_t *list); - -/** - * Make the bucket passed in a FLUSH bucket. This indicates that filters - * should flush their data. There is no guarantee that they will flush it, - * but this is the best we can do. - * @param b The bucket to make into a FLUSH bucket - * @return The new bucket, or NULL if allocation failed - */ -APU_DECLARE(apr_bucket *) apr_bucket_flush_make(apr_bucket *b); - -/** - * Create a bucket referring to long-lived data. - * @param buf The data to insert into the bucket - * @param nbyte The size of the data to insert. - * @param list The freelist from which this bucket should be allocated - * @return The new bucket, or NULL if allocation failed - */ -APU_DECLARE(apr_bucket *) apr_bucket_immortal_create(const char *buf, - apr_size_t nbyte, - apr_bucket_alloc_t *list); - -/** - * Make the bucket passed in a bucket refer to long-lived data - * @param b The bucket to make into a IMMORTAL bucket - * @param buf The data to insert into the bucket - * @param nbyte The size of the data to insert. - * @return The new bucket, or NULL if allocation failed - */ -APU_DECLARE(apr_bucket *) apr_bucket_immortal_make(apr_bucket *b, - const char *buf, - apr_size_t nbyte); - -/** - * Create a bucket referring to data on the stack. - * @param buf The data to insert into the bucket - * @param nbyte The size of the data to insert. - * @param list The freelist from which this bucket should be allocated - * @return The new bucket, or NULL if allocation failed - */ -APU_DECLARE(apr_bucket *) apr_bucket_transient_create(const char *buf, - apr_size_t nbyte, - apr_bucket_alloc_t *list); - -/** - * Make the bucket passed in a bucket refer to stack data - * @param b The bucket to make into a TRANSIENT bucket - * @param buf The data to insert into the bucket - * @param nbyte The size of the data to insert. - * @return The new bucket, or NULL if allocation failed - */ -APU_DECLARE(apr_bucket *) apr_bucket_transient_make(apr_bucket *b, - const char *buf, - apr_size_t nbyte); - -/** - * Create a bucket referring to memory on the heap. If the caller asks - * for the data to be copied, this function always allocates 4K of - * memory so that more data can be added to the bucket without - * requiring another allocation. Therefore not all the data may be put - * into the bucket. If copying is not requested then the bucket takes - * over responsibility for free()ing the memory. - * @param buf The buffer to insert into the bucket - * @param nbyte The size of the buffer to insert. - * @param free_func Function to use to free the data; NULL indicates that the - * bucket should make a copy of the data - * @param list The freelist from which this bucket should be allocated - * @return The new bucket, or NULL if allocation failed - */ -APU_DECLARE(apr_bucket *) apr_bucket_heap_create(const char *buf, - apr_size_t nbyte, - void (*free_func)(void *data), - apr_bucket_alloc_t *list); -/** - * Make the bucket passed in a bucket refer to heap data - * @param b The bucket to make into a HEAP bucket - * @param buf The buffer to insert into the bucket - * @param nbyte The size of the buffer to insert. - * @param free_func Function to use to free the data; NULL indicates that the - * bucket should make a copy of the data - * @return The new bucket, or NULL if allocation failed - */ -APU_DECLARE(apr_bucket *) apr_bucket_heap_make(apr_bucket *b, const char *buf, - apr_size_t nbyte, - void (*free_func)(void *data)); - -/** - * Create a bucket referring to memory allocated from a pool. - * - * @param buf The buffer to insert into the bucket - * @param length The number of bytes referred to by this bucket - * @param pool The pool the memory was allocated from - * @param list The freelist from which this bucket should be allocated - * @return The new bucket, or NULL if allocation failed - */ -APU_DECLARE(apr_bucket *) apr_bucket_pool_create(const char *buf, - apr_size_t length, - apr_pool_t *pool, - apr_bucket_alloc_t *list); - -/** - * Make the bucket passed in a bucket refer to pool data - * @param b The bucket to make into a pool bucket - * @param buf The buffer to insert into the bucket - * @param length The number of bytes referred to by this bucket - * @param pool The pool the memory was allocated from - * @return The new bucket, or NULL if allocation failed - */ -APU_DECLARE(apr_bucket *) apr_bucket_pool_make(apr_bucket *b, const char *buf, - apr_size_t length, - apr_pool_t *pool); - -#if APR_HAS_MMAP -/** - * Create a bucket referring to mmap()ed memory. - * @param mm The mmap to insert into the bucket - * @param start The offset of the first byte in the mmap - * that this bucket refers to - * @param length The number of bytes referred to by this bucket - * @param list The freelist from which this bucket should be allocated - * @return The new bucket, or NULL if allocation failed - */ -APU_DECLARE(apr_bucket *) apr_bucket_mmap_create(apr_mmap_t *mm, - apr_off_t start, - apr_size_t length, - apr_bucket_alloc_t *list); - -/** - * Make the bucket passed in a bucket refer to an MMAP'ed file - * @param b The bucket to make into a MMAP bucket - * @param mm The mmap to insert into the bucket - * @param start The offset of the first byte in the mmap - * that this bucket refers to - * @param length The number of bytes referred to by this bucket - * @return The new bucket, or NULL if allocation failed - */ -APU_DECLARE(apr_bucket *) apr_bucket_mmap_make(apr_bucket *b, apr_mmap_t *mm, - apr_off_t start, - apr_size_t length); -#endif - -/** - * Create a bucket referring to a socket. - * @param thissock The socket to put in the bucket - * @param list The freelist from which this bucket should be allocated - * @return The new bucket, or NULL if allocation failed - */ -APU_DECLARE(apr_bucket *) apr_bucket_socket_create(apr_socket_t *thissock, - apr_bucket_alloc_t *list); -/** - * Make the bucket passed in a bucket refer to a socket - * @param b The bucket to make into a SOCKET bucket - * @param thissock The socket to put in the bucket - * @return The new bucket, or NULL if allocation failed - */ -APU_DECLARE(apr_bucket *) apr_bucket_socket_make(apr_bucket *b, - apr_socket_t *thissock); - -/** - * Create a bucket referring to a pipe. - * @param thispipe The pipe to put in the bucket - * @param list The freelist from which this bucket should be allocated - * @return The new bucket, or NULL if allocation failed - */ -APU_DECLARE(apr_bucket *) apr_bucket_pipe_create(apr_file_t *thispipe, - apr_bucket_alloc_t *list); - -/** - * Make the bucket passed in a bucket refer to a pipe - * @param b The bucket to make into a PIPE bucket - * @param thispipe The pipe to put in the bucket - * @return The new bucket, or NULL if allocation failed - */ -APU_DECLARE(apr_bucket *) apr_bucket_pipe_make(apr_bucket *b, - apr_file_t *thispipe); - -/** - * Create a bucket referring to a file. - * @param fd The file to put in the bucket - * @param offset The offset where the data of interest begins in the file - * @param len The amount of data in the file we are interested in - * @param p The pool into which any needed structures should be created - * while reading from this file bucket - * @param list The freelist from which this bucket should be allocated - * @return The new bucket, or NULL if allocation failed - * @remark If the file is truncated such that the segment of the file - * referenced by the bucket no longer exists, an attempt to read - * from the bucket will fail with APR_EOF. - * @remark apr_brigade_insert_file() should generally be used to - * insert files into brigades, since that function can correctly - * handle large file issues. - */ -APU_DECLARE(apr_bucket *) apr_bucket_file_create(apr_file_t *fd, - apr_off_t offset, - apr_size_t len, - apr_pool_t *p, - apr_bucket_alloc_t *list); - -/** - * Make the bucket passed in a bucket refer to a file - * @param b The bucket to make into a FILE bucket - * @param fd The file to put in the bucket - * @param offset The offset where the data of interest begins in the file - * @param len The amount of data in the file we are interested in - * @param p The pool into which any needed structures should be created - * while reading from this file bucket - * @return The new bucket, or NULL if allocation failed - */ -APU_DECLARE(apr_bucket *) apr_bucket_file_make(apr_bucket *b, apr_file_t *fd, - apr_off_t offset, - apr_size_t len, apr_pool_t *p); - -/** - * Enable or disable memory-mapping for a FILE bucket (default is enabled) - * @param b The bucket - * @param enabled Whether memory-mapping should be enabled - * @return APR_SUCCESS normally, or an error code if the operation fails - */ -APU_DECLARE(apr_status_t) apr_bucket_file_enable_mmap(apr_bucket *b, - int enabled); - -/** @} */ -#ifdef __cplusplus -} -#endif - -#endif /* !APR_BUCKETS_H */ diff --git a/include/apr_crypto.h b/include/apr_crypto.h deleted file mode 100644 index 2577248c..00000000 --- a/include/apr_crypto.h +++ /dev/null @@ -1,462 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef APR_CRYPTO_H -#define APR_CRYPTO_H - -#include "apu.h" -#include "apr_pools.h" -#include "apr_tables.h" -#include "apu_errno.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @file apr_crypto.h - * @brief APR-UTIL Crypto library - */ -/** - * @defgroup APR_Util_Crypto Crypto routines - * @ingroup APR_Util - * @{ - */ - -/** CA certificate type unknown */ -#define APR_CRYPTO_CA_TYPE_UNKNOWN 0 -/** binary DER encoded CA certificate */ -#define APR_CRYPTO_CA_TYPE_DER 1 -/** PEM encoded CA certificate */ -#define APR_CRYPTO_CA_TYPE_BASE64 2 -/** Netscape/Mozilla cert7.db CA certificate database */ -#define APR_CRYPTO_CA_TYPE_CERT7_DB 3 -/** Netscape/Mozilla secmod file */ -#define APR_CRYPTO_CA_TYPE_SECMOD 4 -/** Client certificate type unknown */ -#define APR_CRYPTO_CERT_TYPE_UNKNOWN 5 -/** binary DER encoded client certificate */ -#define APR_CRYPTO_CERT_TYPE_DER 6 -/** PEM encoded client certificate */ -#define APR_CRYPTO_CERT_TYPE_BASE64 7 -/** Netscape/Mozilla key3.db client certificate database */ -#define APR_CRYPTO_CERT_TYPE_KEY3_DB 8 -/** Netscape/Mozilla client certificate nickname */ -#define APR_CRYPTO_CERT_TYPE_NICKNAME 9 -/** Private key type unknown */ -#define APR_CRYPTO_KEY_TYPE_UNKNOWN 10 -/** binary DER encoded private key */ -#define APR_CRYPTO_KEY_TYPE_DER 11 -/** PEM encoded private key */ -#define APR_CRYPTO_KEY_TYPE_BASE64 12 -/** PKCS#12 encoded client certificate */ -#define APR_CRYPTO_CERT_TYPE_PFX 13 -/** PKCS#12 encoded private key */ -#define APR_CRYPTO_KEY_TYPE_PFX 14 -/** Openldap directory full of base64-encoded cert - * authorities with hashes in corresponding .0 directory - */ -#define APR_CRYPTO_CA_TYPE_CACERTDIR_BASE64 15 -/** CMS Key Database with private key and cert chain */ -#define APR_CRYPTO_CA_TYPE_CMS 16 -/** Symmetrical key */ -#define APR_CRYPTO_KEY_TYPE_SYM 17 -/** Netscape/Mozilla certificate database directory */ -#define APR_CRYPTO_CA_TYPE_DIR 18 -/** Crypto engine */ -#define APR_CRYPTO_ENGINE 101 - -#if APU_HAVE_CRYPTO - -#ifndef APU_CRYPTO_RECOMMENDED_DRIVER -#if APU_HAVE_OPENSSL -#define APU_CRYPTO_RECOMMENDED_DRIVER "openssl" -#else -#if APU_HAVE_NSS -#define APU_CRYPTO_RECOMMENDED_DRIVER "nss" -#else -#if APU_HAVE_MSCNG -#define APU_CRYPTO_RECOMMENDED_DRIVER "mscng" -#else -#if APU_HAVE_MSCAPI -#define APU_CRYPTO_RECOMMENDED_DRIVER "mscapi" -#else -#endif -#endif -#endif -#endif -#endif - -/** - * Symmetric Key types understood by the library. - * - * NOTE: It is expected that this list will grow over time. - * - * Interoperability Matrix: - * - * The matrix is based on the testcrypto.c unit test, which attempts to - * test whether a simple encrypt/decrypt will succeed, as well as testing - * whether an encrypted string by one library can be decrypted by the - * others. - * - * Some libraries will successfully encrypt and decrypt their own data, - * but won't decrypt data from another library. It is hoped that over - * time these anomalies will be found and fixed, but until then it is - * recommended that ciphers are chosen that interoperate across platform. - * - * An X below means the test passes, it does not necessarily mean that - * encryption performed is correct or secure. Applications should stick - * to ciphers that pass the interoperablity tests on the right hand side - * of the table. - * - * Aligned data is data whose length is a multiple of the block size for - * the chosen cipher. Padded data is data that is not aligned by block - * size and must be padded by the crypto library. - * - * OpenSSL NSS Interop - * Align Pad Align Pad Align Pad - * 3DES_192/CBC X X X X X X - * 3DES_192/ECB X X - * AES_256/CBC X X X X X X - * AES_256/ECB X X X X - * AES_192/CBC X X X X - * AES_192/ECB X X X - * AES_128/CBC X X X X - * AES_128/ECB X X X - * - * Conclusion: for padded data, use 3DES_192/CBC or AES_256/CBC. For - * aligned data, use 3DES_192/CBC, AES_256/CBC or AES_256/ECB. - */ - -typedef enum { - KEY_NONE, KEY_3DES_192, /** 192 bit (3-Key) 3DES */ - KEY_AES_128, /** 128 bit AES */ - KEY_AES_192, /** 192 bit AES */ - KEY_AES_256 -/** 256 bit AES */ -} apr_crypto_block_key_type_e; - -typedef enum { - MODE_NONE, /** An error condition */ - MODE_ECB, /** Electronic Code Book */ - MODE_CBC -/** Cipher Block Chaining */ -} apr_crypto_block_key_mode_e; - -/** - * Certificate and private key structure. - * - * The various crypto backends expect certificates and keys in a wide - * array of formats. This structure is analogous to apr_ldap_opt_tls_cert_t - * from the LDAP interface. Ultimately that interface should be meshed with - * this one. - * @param type Type of certificate APR_CRYPTO_*_TYPE_* - * @param path Path, file or nickname of the certificate - * @param password Optional password, can be NULL - */ -typedef struct apr_crypto_param_t { - int type; - const char *path; - const char *password; -} apr_crypto_param_t; - -/* These are opaque structs. Instantiation is up to each backend */ -typedef struct apr_crypto_driver_t apr_crypto_driver_t; -typedef struct apr_crypto_config_t apr_crypto_config_t; -typedef struct apr_crypto_key_t apr_crypto_key_t; -typedef struct apr_crypto_block_t apr_crypto_block_t; - -/** - * Public factory API, common to all backends. - */ -typedef struct apr_crypto_t { - apr_pool_t *pool; - apu_err_t *result; - apr_array_header_t *keys; - apr_crypto_config_t *config; -} apr_crypto_t; - -/** - * @brief Perform once-only initialisation. Call once only. - * - * @param pool - pool to register any shutdown cleanups, etc - * @return APR_NOTIMPL in case of no crypto support. - */ -APU_DECLARE(apr_status_t) apr_crypto_init(apr_pool_t *pool, - const apr_array_header_t *params); - -/** - * @brief Get the driver struct for a name - * - * @param pool - (process) pool to register cleanup - * @param name - driver name - * @param driver - pointer to driver struct. - * @return APR_SUCCESS for success - * @return APR_ENOTIMPL for no driver (when DSO not enabled) - * @return APR_EDSOOPEN if DSO driver file can't be opened - * @return APR_ESYMNOTFOUND if the driver file doesn't contain a driver - */ -APU_DECLARE(apr_status_t) apr_crypto_get_driver(apr_pool_t *pool, const char *name, - const apr_crypto_driver_t **driver, const apr_array_header_t *params, - const apu_err_t **result); - -/** - * @brief Return the name of the driver. - * - * @param driver - The driver in use. - * @return The name of the driver. - */ -APU_DECLARE(const char *)apr_crypto_driver_name (const apr_crypto_driver_t *driver); - -/** - * @brief Get the result of the last operation on a factory. If the result - * is NULL, the operation was successful. - * @param driver - driver to use - * @param factory - factory pointer will be written here - * @param result - the result structure - * @return APR_SUCCESS for success - */ -APU_DECLARE(apr_status_t) apr_crypto_error(const apr_crypto_t *f, - const apu_err_t **result); - -/** - * @brief Create a context for supporting encryption. Keys, certificates, - * algorithms and other parameters will be set per context. More than - * one context can be created at one time. A cleanup will be automatically - * registered with the given pool to guarantee a graceful shutdown. - * @param driver - driver to use - * @param pool - process pool - * @param params - array of key parameters - * @param factory - factory pointer will be written here - * @return APR_ENOENGINE when the engine specified does not exist. APR_EINITENGINE - * if the engine cannot be initialised. - */ -APU_DECLARE(apr_status_t) apr_crypto_factory(const apr_crypto_driver_t *driver, - apr_pool_t *pool, const apr_array_header_t *params, apr_crypto_t **f); - -/** - * @brief Create a key from the given passphrase. By default, the PBKDF2 - * algorithm is used to generate the key from the passphrase. It is expected - * that the same pass phrase will generate the same key, regardless of the - * backend crypto platform used. The key is cleaned up when the context - * is cleaned, and may be reused with multiple encryption or decryption - * operations. - * @note If *key is NULL, a apr_crypto_key_t will be created from a pool. If - * *key is not NULL, *key must point at a previously created structure. - * @param driver - driver to use - * @param p The pool to use. - * @param f The context to use. - * @param pass The passphrase to use. - * @param passLen The passphrase length in bytes - * @param salt The salt to use. - * @param saltLen The salt length in bytes - * @param type 3DES_192, AES_128, AES_192, AES_256. - * @param mode Electronic Code Book / Cipher Block Chaining. - * @param doPad Pad if necessary. - * @param key The key returned, see note. - * @param ivSize The size of the initialisation vector will be returned, based - * on whether an IV is relevant for this type of crypto. - * @return Returns APR_ENOKEY if the pass phrase is missing or empty, or if a backend - * error occurred while generating the key. APR_ENOCIPHER if the type or mode - * is not supported by the particular backend. APR_EKEYTYPE if the key type is - * not known. APR_EPADDING if padding was requested but is not supported. - * APR_ENOTIMPL if not implemented. - */ -APU_DECLARE(apr_status_t) apr_crypto_passphrase(const apr_crypto_driver_t *driver, - apr_pool_t *p, const apr_crypto_t *f, const char *pass, - apr_size_t passLen, const unsigned char * salt, apr_size_t saltLen, - const apr_crypto_block_key_type_e type, - const apr_crypto_block_key_mode_e mode, const int doPad, - const int iterations, apr_crypto_key_t **key, apr_size_t *ivSize); - -/** - * @brief Initialise a context for encrypting arbitrary data using the given key. - * @note If *ctx is NULL, a apr_crypto_block_t will be created from a pool. If - * *ctx is not NULL, *ctx must point at a previously created structure. - * @param driver - driver to use - * @param p The pool to use. - * @param f The block factory to use. - * @param key The key structure to use. - * @param iv Optional initialisation vector. If the buffer pointed to is NULL, - * an IV will be created at random, in space allocated from the pool. - * If the buffer pointed to is not NULL, the IV in the buffer will be - * used. - * @param ctx The block context returned, see note. - * @param blockSize The block size of the cipher. - * @return Returns APR_ENOIV if an initialisation vector is required but not specified. - * Returns APR_EINIT if the backend failed to initialise the context. Returns - * APR_ENOTIMPL if not implemented. - */ -APU_DECLARE(apr_status_t) apr_crypto_block_encrypt_init( - const apr_crypto_driver_t *driver, apr_pool_t *p, - const apr_crypto_t *f, const apr_crypto_key_t *key, - const unsigned char **iv, apr_crypto_block_t **ctx, - apr_size_t *blockSize); - -/** - * @brief Encrypt data provided by in, write it to out. - * @note The number of bytes written will be written to outlen. If - * out is NULL, outlen will contain the maximum size of the - * buffer needed to hold the data, including any data - * generated by apr_crypto_block_encrypt_finish below. If *out points - * to NULL, a buffer sufficiently large will be created from - * the pool provided. If *out points to a not-NULL value, this - * value will be used as a buffer instead. - * @param driver - driver to use - * @param ctx The block context to use. - * @param out Address of a buffer to which data will be written, - * see note. - * @param outlen Length of the output will be written here. - * @param in Address of the buffer to read. - * @param inlen Length of the buffer to read. - * @return APR_ECRYPT if an error occurred. Returns APR_ENOTIMPL if - * not implemented. - */ -APU_DECLARE(apr_status_t) apr_crypto_block_encrypt( - const apr_crypto_driver_t *driver, apr_crypto_block_t *ctx, - unsigned char **out, apr_size_t *outlen, const unsigned char *in, - apr_size_t inlen); - -/** - * @brief Encrypt final data block, write it to out. - * @note If necessary the final block will be written out after being - * padded. Typically the final block will be written to the - * same buffer used by apr_crypto_block_encrypt, offset by the - * number of bytes returned as actually written by the - * apr_crypto_block_encrypt() call. After this call, the context - * is cleaned and can be reused by apr_crypto_block_encrypt_init(). - * @param driver - driver to use - * @param ctx The block context to use. - * @param out Address of a buffer to which data will be written. This - * buffer must already exist, and is usually the same - * buffer used by apr_evp_crypt(). See note. - * @param outlen Length of the output will be written here. - * @return APR_ECRYPT if an error occurred. - * @return APR_EPADDING if padding was enabled and the block was incorrectly - * formatted. - * @return APR_ENOTIMPL if not implemented. - */ -APU_DECLARE(apr_status_t) apr_crypto_block_encrypt_finish( - const apr_crypto_driver_t *driver, apr_crypto_block_t *ctx, - unsigned char *out, apr_size_t *outlen); - -/** - * @brief Initialise a context for decrypting arbitrary data using the given key. - * @note If *ctx is NULL, a apr_crypto_block_t will be created from a pool. If - * *ctx is not NULL, *ctx must point at a previously created structure. - * @param driver - driver to use - * @param p The pool to use. - * @param f The block factory to use. - * @param key The key structure to use. - * @param iv Optional initialisation vector. - * @param ctx The block context returned, see note. - * @param blockSize The block size of the cipher. - * @return Returns APR_ENOIV if an initialisation vector is required but not specified. - * Returns APR_EINIT if the backend failed to initialise the context. Returns - * APR_ENOTIMPL if not implemented. - */ -APU_DECLARE(apr_status_t) apr_crypto_block_decrypt_init( - const apr_crypto_driver_t *driver, apr_pool_t *p, - const apr_crypto_t *f, const apr_crypto_key_t *key, - const unsigned char *iv, apr_crypto_block_t **ctx, - apr_size_t *blockSize); - -/** - * @brief Decrypt data provided by in, write it to out. - * @note The number of bytes written will be written to outlen. If - * out is NULL, outlen will contain the maximum size of the - * buffer needed to hold the data, including any data - * generated by apr_crypto_block_decrypt_finish below. If *out points - * to NULL, a buffer sufficiently large will be created from - * the pool provided. If *out points to a not-NULL value, this - * value will be used as a buffer instead. - * @param driver - driver to use - * @param ctx The block context to use. - * @param out Address of a buffer to which data will be written, - * see note. - * @param outlen Length of the output will be written here. - * @param in Address of the buffer to read. - * @param inlen Length of the buffer to read. - * @return APR_ECRYPT if an error occurred. Returns APR_ENOTIMPL if - * not implemented. - */ -APU_DECLARE(apr_status_t) apr_crypto_block_decrypt( - const apr_crypto_driver_t *driver, apr_crypto_block_t *ctx, - unsigned char **out, apr_size_t *outlen, const unsigned char *in, - apr_size_t inlen); - -/** - * @brief Decrypt final data block, write it to out. - * @note If necessary the final block will be written out after being - * padded. Typically the final block will be written to the - * same buffer used by apr_crypto_block_decrypt, offset by the - * number of bytes returned as actually written by the - * apr_crypto_block_decrypt() call. After this call, the context - * is cleaned and can be reused by apr_crypto_block_decrypt_init(). - * @param driver - driver to use - * @param ctx The block context to use. - * @param out Address of a buffer to which data will be written. This - * buffer must already exist, and is usually the same - * buffer used by apr_evp_crypt(). See note. - * @param outlen Length of the output will be written here. - * @return APR_ECRYPT if an error occurred. - * @return APR_EPADDING if padding was enabled and the block was incorrectly - * formatted. - * @return APR_ENOTIMPL if not implemented. - */ -APU_DECLARE(apr_status_t) apr_crypto_block_decrypt_finish( - const apr_crypto_driver_t *driver, apr_crypto_block_t *ctx, - unsigned char *out, apr_size_t *outlen); - -/** - * @brief Clean encryption / decryption context. - * @note After cleanup, a context is free to be reused if necessary. - * @param driver - driver to use - * @param ctx The block context to use. - * @return Returns APR_ENOTIMPL if not supported. - */ -APU_DECLARE(apr_status_t) apr_crypto_block_cleanup( - const apr_crypto_driver_t *driver, apr_crypto_block_t *ctx); - -/** - * @brief Clean encryption / decryption factory. - * @note After cleanup, a factory is free to be reused if necessary. - * @param driver - driver to use - * @param f The factory to use. - * @return Returns APR_ENOTIMPL if not supported. - */ -APU_DECLARE(apr_status_t) apr_crypto_cleanup(const apr_crypto_driver_t *driver, - apr_crypto_t *f); - -/** - * @brief Shutdown the crypto library. - * @note After shutdown, it is expected that the init function can be called again. - * @param driver - driver to use - * @param p The pool to use. - * @return Returns APR_ENOTIMPL if not supported. - */ -APU_DECLARE(apr_status_t) apr_crypto_shutdown(const apr_crypto_driver_t *driver, - apr_pool_t *p); - -#endif /* APU_HAVE_CRYPTO */ - -/** @} */ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/include/apr_date.h b/include/apr_date.h deleted file mode 100644 index b098b542..00000000 --- a/include/apr_date.h +++ /dev/null @@ -1,106 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef APR_DATE_H -#define APR_DATE_H - -/** - * @file apr_date.h - * @brief APR-UTIL date routines - */ - -/** - * @defgroup APR_Util_Date Date routines - * @ingroup APR_Util - * @{ - */ - -/* - * apr_date.h: prototypes for date parsing utility routines - */ - -#include "apu.h" -#include "apr_time.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** A bad date. */ -#define APR_DATE_BAD ((apr_time_t)0) - -/** - * Compare a string to a mask - * @param data The string to compare - * @param mask Mask characters (arbitrary maximum is 256 characters): - * <PRE> - * '\@' - uppercase letter - * '\$' - lowercase letter - * '\&' - hex digit - * '#' - digit - * '~' - digit or space - * '*' - swallow remaining characters - * </PRE> - * @remark The mask tests for an exact match for any other character - * @return 1 if the string matches, 0 otherwise - */ -APU_DECLARE(int) apr_date_checkmask(const char *data, const char *mask); - -/** - * Parses an HTTP date in one of three standard forms: - * <PRE> - * Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123 - * Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036 - * Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format - * </PRE> - * @param date The date in one of the three formats above - * @return the apr_time_t number of microseconds since 1 Jan 1970 GMT, or - * 0 if this would be out of range or if the date is invalid. - */ -APU_DECLARE(apr_time_t) apr_date_parse_http(const char *date); - -/** - * Parses a string resembling an RFC 822 date. This is meant to be - * leinent in its parsing of dates. Hence, this will parse a wider - * range of dates than apr_date_parse_http. - * - * The prominent mailer (or poster, if mailer is unknown) that has - * been seen in the wild is included for the unknown formats. - * <PRE> - * Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123 - * Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036 - * Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format - * Sun, 6 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123 - * Sun, 06 Nov 94 08:49:37 GMT ; RFC 822 - * Sun, 6 Nov 94 08:49:37 GMT ; RFC 822 - * Sun, 06 Nov 94 08:49 GMT ; Unknown [drtr\@ast.cam.ac.uk] - * Sun, 6 Nov 94 08:49 GMT ; Unknown [drtr\@ast.cam.ac.uk] - * Sun, 06 Nov 94 8:49:37 GMT ; Unknown [Elm 70.85] - * Sun, 6 Nov 94 8:49:37 GMT ; Unknown [Elm 70.85] - * </PRE> - * - * @param date The date in one of the formats above - * @return the apr_time_t number of microseconds since 1 Jan 1970 GMT, or - * 0 if this would be out of range or if the date is invalid. - */ -APU_DECLARE(apr_time_t) apr_date_parse_rfc(const char *date); - -/** @} */ -#ifdef __cplusplus -} -#endif - -#endif /* !APR_DATE_H */ diff --git a/include/apr_dbd.h b/include/apr_dbd.h deleted file mode 100644 index f30977da..00000000 --- a/include/apr_dbd.h +++ /dev/null @@ -1,552 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* Overview of what this is and does: - * http://www.apache.org/~niq/dbd.html - */ - -#ifndef APR_DBD_H -#define APR_DBD_H - -#include "apu.h" -#include "apr_pools.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @file apr_dbd.h - * @brief APR-UTIL DBD library - */ -/** - * @defgroup APR_Util_DBD DBD routines - * @ingroup APR_Util - * @{ - */ - -/** - * Mapping of C to SQL types, used for prepared statements. - * @remarks - * For apr_dbd_p[v]query/select functions, in and out parameters are always - * const char * (i.e. regular nul terminated strings). LOB types are passed - * with four (4) arguments: payload, length, table and column, all as const - * char *, where table and column are reserved for future use by Oracle. - * @remarks - * For apr_dbd_p[v]bquery/select functions, in and out parameters are - * described next to each enumeration constant and are generally native binary - * types or some APR data type. LOB types are passed with four (4) arguments: - * payload (char*), length (apr_size_t*), table (char*) and column (char*). - * Table and column are reserved for future use by Oracle. - */ -typedef enum { - APR_DBD_TYPE_NONE, - APR_DBD_TYPE_TINY, /**< \%hhd : in, out: char* */ - APR_DBD_TYPE_UTINY, /**< \%hhu : in, out: unsigned char* */ - APR_DBD_TYPE_SHORT, /**< \%hd : in, out: short* */ - APR_DBD_TYPE_USHORT, /**< \%hu : in, out: unsigned short* */ - APR_DBD_TYPE_INT, /**< \%d : in, out: int* */ - APR_DBD_TYPE_UINT, /**< \%u : in, out: unsigned int* */ - APR_DBD_TYPE_LONG, /**< \%ld : in, out: long* */ - APR_DBD_TYPE_ULONG, /**< \%lu : in, out: unsigned long* */ - APR_DBD_TYPE_LONGLONG, /**< \%lld : in, out: apr_int64_t* */ - APR_DBD_TYPE_ULONGLONG, /**< \%llu : in, out: apr_uint64_t* */ - APR_DBD_TYPE_FLOAT, /**< \%f : in, out: float* */ - APR_DBD_TYPE_DOUBLE, /**< \%lf : in, out: double* */ - APR_DBD_TYPE_STRING, /**< \%s : in: char*, out: char** */ - APR_DBD_TYPE_TEXT, /**< \%pDt : in: char*, out: char** */ - APR_DBD_TYPE_TIME, /**< \%pDi : in: char*, out: char** */ - APR_DBD_TYPE_DATE, /**< \%pDd : in: char*, out: char** */ - APR_DBD_TYPE_DATETIME, /**< \%pDa : in: char*, out: char** */ - APR_DBD_TYPE_TIMESTAMP, /**< \%pDs : in: char*, out: char** */ - APR_DBD_TYPE_ZTIMESTAMP, /**< \%pDz : in: char*, out: char** */ - APR_DBD_TYPE_BLOB, /**< \%pDb : in: char* apr_size_t* char* char*, out: apr_bucket_brigade* */ - APR_DBD_TYPE_CLOB, /**< \%pDc : in: char* apr_size_t* char* char*, out: apr_bucket_brigade* */ - APR_DBD_TYPE_NULL /**< \%pDn : in: void*, out: void** */ -} apr_dbd_type_e; - -/* These are opaque structs. Instantiation is up to each backend */ -typedef struct apr_dbd_driver_t apr_dbd_driver_t; -typedef struct apr_dbd_t apr_dbd_t; -typedef struct apr_dbd_transaction_t apr_dbd_transaction_t; -typedef struct apr_dbd_results_t apr_dbd_results_t; -typedef struct apr_dbd_row_t apr_dbd_row_t; -typedef struct apr_dbd_prepared_t apr_dbd_prepared_t; - -/** apr_dbd_init: perform once-only initialisation. Call once only. - * - * @param pool - pool to register any shutdown cleanups, etc - */ -APU_DECLARE(apr_status_t) apr_dbd_init(apr_pool_t *pool); - -/** apr_dbd_get_driver: get the driver struct for a name - * - * @param pool - (process) pool to register cleanup - * @param name - driver name - * @param driver - pointer to driver struct. - * @return APR_SUCCESS for success - * @return APR_ENOTIMPL for no driver (when DSO not enabled) - * @return APR_EDSOOPEN if DSO driver file can't be opened - * @return APR_ESYMNOTFOUND if the driver file doesn't contain a driver - */ -APU_DECLARE(apr_status_t) apr_dbd_get_driver(apr_pool_t *pool, const char *name, - const apr_dbd_driver_t **driver); - -/** apr_dbd_open_ex: open a connection to a backend - * - * @param pool - working pool - * @param params - arguments to driver (implementation-dependent) - * @param handle - pointer to handle to return - * @param driver - driver struct. - * @param error - descriptive error. - * @return APR_SUCCESS for success - * @return APR_EGENERAL if driver exists but connection failed - * @remarks PostgreSQL: the params is passed directly to the PQconnectdb() - * function (check PostgreSQL documentation for more details on the syntax). - * @remarks SQLite2: the params is split on a colon, with the first part used - * as the filename and second part converted to an integer and used as file - * mode. - * @remarks SQLite3: the params is passed directly to the sqlite3_open() - * function as a filename to be opened (check SQLite3 documentation for more - * details). - * @remarks Oracle: the params can have "user", "pass", "dbname" and "server" - * keys, each followed by an equal sign and a value. Such key/value pairs can - * be delimited by space, CR, LF, tab, semicolon, vertical bar or comma. - * @remarks MySQL: the params can have "host", "port", "user", "pass", - * "dbname", "sock", "flags" "fldsz", "group" and "reconnect" keys, each - * followed by an equal sign and a value. Such key/value pairs can be - * delimited by space, CR, LF, tab, semicolon, vertical bar or comma. For - * now, "flags" can only recognise CLIENT_FOUND_ROWS (check MySQL manual for - * details). The value associated with "fldsz" determines maximum amount of - * memory (in bytes) for each of the fields in the result set of prepared - * statements. By default, this value is 1 MB. The value associated with - * "group" determines which group from configuration file to use (see - * MYSQL_READ_DEFAULT_GROUP option of mysql_options() in MySQL manual). - * Reconnect is set to 1 by default (i.e. true). - * @remarks FreeTDS: the params can have "username", "password", "appname", - * "dbname", "host", "charset", "lang" and "server" keys, each followed by an - * equal sign and a value. - */ -APU_DECLARE(apr_status_t) apr_dbd_open_ex(const apr_dbd_driver_t *driver, - apr_pool_t *pool, const char *params, - apr_dbd_t **handle, - const char **error); - -/** apr_dbd_open: open a connection to a backend - * - * @param pool - working pool - * @param params - arguments to driver (implementation-dependent) - * @param handle - pointer to handle to return - * @param driver - driver struct. - * @return APR_SUCCESS for success - * @return APR_EGENERAL if driver exists but connection failed - * @see apr_dbd_open_ex - */ -APU_DECLARE(apr_status_t) apr_dbd_open(const apr_dbd_driver_t *driver, - apr_pool_t *pool, const char *params, - apr_dbd_t **handle); - -/** apr_dbd_close: close a connection to a backend - * - * @param handle - handle to close - * @param driver - driver struct. - * @return APR_SUCCESS for success or error status - */ -APU_DECLARE(apr_status_t) apr_dbd_close(const apr_dbd_driver_t *driver, - apr_dbd_t *handle); - -/* apr-function-shaped versions of things */ - -/** apr_dbd_name: get the name of the driver - * - * @param driver - the driver - * @return - name - */ -APU_DECLARE(const char*) apr_dbd_name(const apr_dbd_driver_t *driver); - -/** apr_dbd_native_handle: get native database handle of the underlying db - * - * @param driver - the driver - * @param handle - apr_dbd handle - * @return - native handle - */ -APU_DECLARE(void*) apr_dbd_native_handle(const apr_dbd_driver_t *driver, - apr_dbd_t *handle); - -/** check_conn: check status of a database connection - * - * @param driver - the driver - * @param pool - working pool - * @param handle - the connection to check - * @return APR_SUCCESS or error - */ -APU_DECLARE(int) apr_dbd_check_conn(const apr_dbd_driver_t *driver, apr_pool_t *pool, - apr_dbd_t *handle); - -/** apr_dbd_set_dbname: select database name. May be a no-op if not supported. - * - * @param driver - the driver - * @param pool - working pool - * @param handle - the connection - * @param name - the database to select - * @return 0 for success or error code - */ -APU_DECLARE(int) apr_dbd_set_dbname(const apr_dbd_driver_t *driver, apr_pool_t *pool, - apr_dbd_t *handle, const char *name); - -/** apr_dbd_transaction_start: start a transaction. May be a no-op. - * - * @param driver - the driver - * @param pool - a pool to use for error messages (if any). - * @param handle - the db connection - * @param trans - ptr to a transaction. May be null on entry - * @return 0 for success or error code - * @remarks Note that transaction modes, set by calling - * apr_dbd_transaction_mode_set(), will affect all query/select calls within - * a transaction. By default, any error in query/select during a transaction - * will cause the transaction to inherit the error code and any further - * query/select calls will fail immediately. Put transaction in "ignore - * errors" mode to avoid that. Use "rollback" mode to do explicit rollback. - */ -APU_DECLARE(int) apr_dbd_transaction_start(const apr_dbd_driver_t *driver, - apr_pool_t *pool, - apr_dbd_t *handle, - apr_dbd_transaction_t **trans); - -/** apr_dbd_transaction_end: end a transaction - * (commit on success, rollback on error). - * May be a no-op. - * - * @param driver - the driver - * @param handle - the db connection - * @param trans - the transaction. - * @return 0 for success or error code - */ -APU_DECLARE(int) apr_dbd_transaction_end(const apr_dbd_driver_t *driver, - apr_pool_t *pool, - apr_dbd_transaction_t *trans); - -#define APR_DBD_TRANSACTION_COMMIT 0x00 /**< commit the transaction */ -#define APR_DBD_TRANSACTION_ROLLBACK 0x01 /**< rollback the transaction */ -#define APR_DBD_TRANSACTION_IGNORE_ERRORS 0x02 /**< ignore transaction errors */ - -/** apr_dbd_transaction_mode_get: get the mode of transaction - * - * @param driver - the driver - * @param trans - the transaction - * @return mode of transaction - */ -APU_DECLARE(int) apr_dbd_transaction_mode_get(const apr_dbd_driver_t *driver, - apr_dbd_transaction_t *trans); - -/** apr_dbd_transaction_mode_set: set the mode of transaction - * - * @param driver - the driver - * @param trans - the transaction - * @param mode - new mode of the transaction - * @return the mode of transaction in force after the call - */ -APU_DECLARE(int) apr_dbd_transaction_mode_set(const apr_dbd_driver_t *driver, - apr_dbd_transaction_t *trans, - int mode); - -/** apr_dbd_query: execute an SQL query that doesn't return a result set - * - * @param driver - the driver - * @param handle - the connection - * @param nrows - number of rows affected. - * @param statement - the SQL statement to execute - * @return 0 for success or error code - */ -APU_DECLARE(int) apr_dbd_query(const apr_dbd_driver_t *driver, apr_dbd_t *handle, - int *nrows, const char *statement); - -/** apr_dbd_select: execute an SQL query that returns a result set - * - * @param driver - the driver - * @param pool - pool to allocate the result set - * @param handle - the connection - * @param res - pointer to result set pointer. May point to NULL on entry - * @param statement - the SQL statement to execute - * @param random - 1 to support random access to results (seek any row); - * 0 to support only looping through results in order - * (async access - faster) - * @return 0 for success or error code - */ -APU_DECLARE(int) apr_dbd_select(const apr_dbd_driver_t *driver, apr_pool_t *pool, - apr_dbd_t *handle, apr_dbd_results_t **res, - const char *statement, int random); - -/** apr_dbd_num_cols: get the number of columns in a results set - * - * @param driver - the driver - * @param res - result set. - * @return number of columns - */ -APU_DECLARE(int) apr_dbd_num_cols(const apr_dbd_driver_t *driver, - apr_dbd_results_t *res); - -/** apr_dbd_num_tuples: get the number of rows in a results set - * of a synchronous select - * - * @param driver - the driver - * @param res - result set. - * @return number of rows, or -1 if the results are asynchronous - */ -APU_DECLARE(int) apr_dbd_num_tuples(const apr_dbd_driver_t *driver, - apr_dbd_results_t *res); - -/** apr_dbd_get_row: get a row from a result set - * - * @param driver - the driver - * @param pool - pool to allocate the row - * @param res - result set pointer - * @param row - pointer to row pointer. May point to NULL on entry - * @param rownum - row number (counting from 1), or -1 for "next row". - * Ignored if random access is not supported. - * @return 0 for success, -1 for rownum out of range or data finished - */ -APU_DECLARE(int) apr_dbd_get_row(const apr_dbd_driver_t *driver, apr_pool_t *pool, - apr_dbd_results_t *res, apr_dbd_row_t **row, - int rownum); - -/** apr_dbd_get_entry: get an entry from a row - * - * @param driver - the driver - * @param row - row pointer - * @param col - entry number - * @return value from the row, or NULL if col is out of bounds. - */ -APU_DECLARE(const char*) apr_dbd_get_entry(const apr_dbd_driver_t *driver, - apr_dbd_row_t *row, int col); - -/** apr_dbd_get_name: get an entry name from a result set - * - * @param driver - the driver - * @param res - result set pointer - * @param col - entry number - * @return name of the entry, or NULL if col is out of bounds. - */ -APU_DECLARE(const char*) apr_dbd_get_name(const apr_dbd_driver_t *driver, - apr_dbd_results_t *res, int col); - - -/** apr_dbd_error: get current error message (if any) - * - * @param driver - the driver - * @param handle - the connection - * @param errnum - error code from operation that returned an error - * @return the database current error message, or message for errnum - * (implementation-dependent whether errnum is ignored) - */ -APU_DECLARE(const char*) apr_dbd_error(const apr_dbd_driver_t *driver, - apr_dbd_t *handle, int errnum); - -/** apr_dbd_escape: escape a string so it is safe for use in query/select - * - * @param driver - the driver - * @param pool - pool to alloc the result from - * @param string - the string to escape - * @param handle - the connection - * @return the escaped, safe string - */ -APU_DECLARE(const char*) apr_dbd_escape(const apr_dbd_driver_t *driver, - apr_pool_t *pool, const char *string, - apr_dbd_t *handle); - -/** apr_dbd_prepare: prepare a statement - * - * @param driver - the driver - * @param pool - pool to alloc the result from - * @param handle - the connection - * @param query - the SQL query - * @param label - A label for the prepared statement. - * use NULL for temporary prepared statements - * (eg within a Request in httpd) - * @param statement - statement to prepare. May point to null on entry. - * @return 0 for success or error code - * @remarks To specify parameters of the prepared query, use \%s, \%d etc. - * (see below for full list) in place of database specific parameter syntax - * (e.g. for PostgreSQL, this would be $1, $2, for SQLite3 this would be ? - * etc.). For instance: "SELECT name FROM customers WHERE name=%s" would be - * a query that this function understands. - * @remarks Here is the full list of format specifiers that this function - * understands and what they map to in SQL: \%hhd (TINY INT), \%hhu (UNSIGNED - * TINY INT), \%hd (SHORT), \%hu (UNSIGNED SHORT), \%d (INT), \%u (UNSIGNED - * INT), \%ld (LONG), \%lu (UNSIGNED LONG), \%lld (LONG LONG), \%llu - * (UNSIGNED LONG LONG), \%f (FLOAT, REAL), \%lf (DOUBLE PRECISION), \%s - * (VARCHAR), \%pDt (TEXT), \%pDi (TIME), \%pDd (DATE), \%pDa (DATETIME), - * \%pDs (TIMESTAMP), \%pDz (TIMESTAMP WITH TIME ZONE), \%pDb (BLOB), \%pDc - * (CLOB) and \%pDn (NULL). Not all databases have support for all these - * types, so the underlying driver will attempt the "best match" where - * possible. A \% followed by any letter not in the above list will be - * interpreted as VARCHAR (i.e. \%s). - */ -APU_DECLARE(int) apr_dbd_prepare(const apr_dbd_driver_t *driver, apr_pool_t *pool, - apr_dbd_t *handle, const char *query, - const char *label, - apr_dbd_prepared_t **statement); - - -/** apr_dbd_pquery: query using a prepared statement + args - * - * @param driver - the driver - * @param pool - working pool - * @param handle - the connection - * @param nrows - number of rows affected. - * @param statement - the prepared statement to execute - * @param nargs - ignored (for backward compatibility only) - * @param args - args to prepared statement - * @return 0 for success or error code - */ -APU_DECLARE(int) apr_dbd_pquery(const apr_dbd_driver_t *driver, apr_pool_t *pool, - apr_dbd_t *handle, int *nrows, - apr_dbd_prepared_t *statement, int nargs, - const char **args); - -/** apr_dbd_pselect: select using a prepared statement + args - * - * @param driver - the driver - * @param pool - working pool - * @param handle - the connection - * @param res - pointer to query results. May point to NULL on entry - * @param statement - the prepared statement to execute - * @param random - Whether to support random-access to results - * @param nargs - ignored (for backward compatibility only) - * @param args - args to prepared statement - * @return 0 for success or error code - */ -APU_DECLARE(int) apr_dbd_pselect(const apr_dbd_driver_t *driver, apr_pool_t *pool, - apr_dbd_t *handle, apr_dbd_results_t **res, - apr_dbd_prepared_t *statement, int random, - int nargs, const char **args); - -/** apr_dbd_pvquery: query using a prepared statement + args - * - * @param driver - the driver - * @param pool - working pool - * @param handle - the connection - * @param nrows - number of rows affected. - * @param statement - the prepared statement to execute - * @param ... - varargs list - * @return 0 for success or error code - */ -APU_DECLARE_NONSTD(int) apr_dbd_pvquery(const apr_dbd_driver_t *driver, - apr_pool_t *pool, - apr_dbd_t *handle, int *nrows, - apr_dbd_prepared_t *statement, ...); - -/** apr_dbd_pvselect: select using a prepared statement + args - * - * @param driver - the driver - * @param pool - working pool - * @param handle - the connection - * @param res - pointer to query results. May point to NULL on entry - * @param statement - the prepared statement to execute - * @param random - Whether to support random-access to results - * @param ... - varargs list - * @return 0 for success or error code - */ -APU_DECLARE_NONSTD(int) apr_dbd_pvselect(const apr_dbd_driver_t *driver, - apr_pool_t *pool, apr_dbd_t *handle, - apr_dbd_results_t **res, - apr_dbd_prepared_t *statement, - int random, ...); - -/** apr_dbd_pbquery: query using a prepared statement + binary args - * - * @param driver - the driver - * @param pool - working pool - * @param handle - the connection - * @param nrows - number of rows affected. - * @param statement - the prepared statement to execute - * @param args - binary args to prepared statement - * @return 0 for success or error code - */ -APU_DECLARE(int) apr_dbd_pbquery(const apr_dbd_driver_t *driver, - apr_pool_t *pool, apr_dbd_t *handle, - int *nrows, apr_dbd_prepared_t *statement, - const void **args); - -/** apr_dbd_pbselect: select using a prepared statement + binary args - * - * @param driver - the driver - * @param pool - working pool - * @param handle - the connection - * @param res - pointer to query results. May point to NULL on entry - * @param statement - the prepared statement to execute - * @param random - Whether to support random-access to results - * @param args - binary args to prepared statement - * @return 0 for success or error code - */ -APU_DECLARE(int) apr_dbd_pbselect(const apr_dbd_driver_t *driver, - apr_pool_t *pool, - apr_dbd_t *handle, apr_dbd_results_t **res, - apr_dbd_prepared_t *statement, int random, - const void **args); - -/** apr_dbd_pvbquery: query using a prepared statement + binary args - * - * @param driver - the driver - * @param pool - working pool - * @param handle - the connection - * @param nrows - number of rows affected. - * @param statement - the prepared statement to execute - * @param ... - varargs list of binary args - * @return 0 for success or error code - */ -APU_DECLARE_NONSTD(int) apr_dbd_pvbquery(const apr_dbd_driver_t *driver, - apr_pool_t *pool, - apr_dbd_t *handle, int *nrows, - apr_dbd_prepared_t *statement, ...); - -/** apr_dbd_pvbselect: select using a prepared statement + binary args - * - * @param driver - the driver - * @param pool - working pool - * @param handle - the connection - * @param res - pointer to query results. May point to NULL on entry - * @param statement - the prepared statement to execute - * @param random - Whether to support random-access to results - * @param ... - varargs list of binary args - * @return 0 for success or error code - */ -APU_DECLARE_NONSTD(int) apr_dbd_pvbselect(const apr_dbd_driver_t *driver, - apr_pool_t *pool, apr_dbd_t *handle, - apr_dbd_results_t **res, - apr_dbd_prepared_t *statement, - int random, ...); - -/** apr_dbd_datum_get: get a binary entry from a row - * - * @param driver - the driver - * @param row - row pointer - * @param col - entry number - * @param type - type of data to get - * @param data - pointer to data, allocated by the caller - * @return APR_SUCCESS on success, APR_ENOENT if data is NULL or APR_EGENERAL - */ -APU_DECLARE(apr_status_t) apr_dbd_datum_get(const apr_dbd_driver_t *driver, - apr_dbd_row_t *row, int col, - apr_dbd_type_e type, void *data); - -/** @} */ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/include/apr_dbm.h b/include/apr_dbm.h deleted file mode 100644 index ad1b4f39..00000000 --- a/include/apr_dbm.h +++ /dev/null @@ -1,227 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef APR_DBM_H -#define APR_DBM_H - -#include "apu.h" -#include "apr.h" -#include "apr_errno.h" -#include "apr_pools.h" -#include "apr_file_info.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @file apr_dbm.h - * @brief APR-UTIL DBM library - */ -/** - * @defgroup APR_Util_DBM DBM routines - * @ingroup APR_Util - * @{ - */ -/** - * Structure for referencing a dbm - */ -typedef struct apr_dbm_t apr_dbm_t; - -/** - * Structure for referencing the datum record within a dbm - */ -typedef struct -{ - /** pointer to the 'data' to retrieve/store in the DBM */ - char *dptr; - /** size of the 'data' to retrieve/store in the DBM */ - apr_size_t dsize; -} apr_datum_t; - -/* modes to open the DB */ -#define APR_DBM_READONLY 1 /**< open for read-only access */ -#define APR_DBM_READWRITE 2 /**< open for read-write access */ -#define APR_DBM_RWCREATE 3 /**< open for r/w, create if needed */ -#define APR_DBM_RWTRUNC 4 /**< open for r/w, truncating an existing - DB if present */ -/** - * Open a dbm file by file name and type of DBM - * @param dbm The newly opened database - * @param type The type of the DBM (not all may be available at run time) - * <pre> - * db for Berkeley DB files - * gdbm for GDBM files - * ndbm for NDBM files - * sdbm for SDBM files (always available) - * default for the default DBM type - * </pre> - * @param name The dbm file name to open - * @param mode The flag value - * <PRE> - * APR_DBM_READONLY open for read-only access - * APR_DBM_READWRITE open for read-write access - * APR_DBM_RWCREATE open for r/w, create if needed - * APR_DBM_RWTRUNC open for r/w, truncate if already there - * </PRE> - * @param perm Permissions to apply to if created - * @param cntxt The pool to use when creating the dbm - * @remark The dbm name may not be a true file name, as many dbm packages - * append suffixes for seperate data and index files. - * @bug In apr-util 0.9 and 1.x, the type arg was case insensitive. This - * was highly inefficient, and as of 2.x the dbm name must be provided in - * the correct case (lower case for all bundled providers) - */ - -APU_DECLARE(apr_status_t) apr_dbm_open_ex(apr_dbm_t **dbm, const char* type, - const char *name, - apr_int32_t mode, apr_fileperms_t perm, - apr_pool_t *cntxt); - - -/** - * Open a dbm file by file name - * @param dbm The newly opened database - * @param name The dbm file name to open - * @param mode The flag value - * <PRE> - * APR_DBM_READONLY open for read-only access - * APR_DBM_READWRITE open for read-write access - * APR_DBM_RWCREATE open for r/w, create if needed - * APR_DBM_RWTRUNC open for r/w, truncate if already there - * </PRE> - * @param perm Permissions to apply to if created - * @param cntxt The pool to use when creating the dbm - * @remark The dbm name may not be a true file name, as many dbm packages - * append suffixes for seperate data and index files. - */ -APU_DECLARE(apr_status_t) apr_dbm_open(apr_dbm_t **dbm, const char *name, - apr_int32_t mode, apr_fileperms_t perm, - apr_pool_t *cntxt); - -/** - * Close a dbm file previously opened by apr_dbm_open - * @param dbm The database to close - */ -APU_DECLARE(void) apr_dbm_close(apr_dbm_t *dbm); - -/** - * Fetch a dbm record value by key - * @param dbm The database - * @param key The key datum to find this record - * @param pvalue The value datum retrieved for this record - */ -APU_DECLARE(apr_status_t) apr_dbm_fetch(apr_dbm_t *dbm, apr_datum_t key, - apr_datum_t *pvalue); -/** - * Store a dbm record value by key - * @param dbm The database - * @param key The key datum to store this record by - * @param value The value datum to store in this record - */ -APU_DECLARE(apr_status_t) apr_dbm_store(apr_dbm_t *dbm, apr_datum_t key, - apr_datum_t value); - -/** - * Delete a dbm record value by key - * @param dbm The database - * @param key The key datum of the record to delete - * @remark It is not an error to delete a non-existent record. - */ -APU_DECLARE(apr_status_t) apr_dbm_delete(apr_dbm_t *dbm, apr_datum_t key); - -/** - * Search for a key within the dbm - * @param dbm The database - * @param key The datum describing a key to test - */ -APU_DECLARE(int) apr_dbm_exists(apr_dbm_t *dbm, apr_datum_t key); - -/** - * Retrieve the first record key from a dbm - * @param dbm The database - * @param pkey The key datum of the first record - */ -APU_DECLARE(apr_status_t) apr_dbm_firstkey(apr_dbm_t *dbm, apr_datum_t *pkey); - -/** - * Retrieve the next record key from a dbm - * @param dbm The database - * @param pkey The key datum of the next record - */ -APU_DECLARE(apr_status_t) apr_dbm_nextkey(apr_dbm_t *dbm, apr_datum_t *pkey); - -/** - * Proactively toss any memory associated with the apr_datum_t. - * @param dbm The database - * @param data The datum to free. - */ -APU_DECLARE(void) apr_dbm_freedatum(apr_dbm_t *dbm, apr_datum_t data); - -/** - * Report more information when an apr_dbm function fails. - * @param dbm The database - * @param errcode A DBM-specific value for the error (for logging). If this - * isn't needed, it may be NULL. - * @param errbuf Location to store the error text - * @param errbufsize The size of the provided buffer - * @return The errbuf parameter, for convenience. - */ -APU_DECLARE(char *) apr_dbm_geterror(apr_dbm_t *dbm, int *errcode, - char *errbuf, apr_size_t errbufsize); -/** - * If the specified file/path were passed to apr_dbm_open(), return the - * actual file/path names which would be (created and) used. At most, two - * files may be used; used2 may be NULL if only one file is used. - * @param pool The pool for allocating used1 and used2. - * @param type The type of DBM you require info on @see apr_dbm_open_ex - * @param pathname The path name to generate used-names from. - * @param used1 The first pathname used by the apr_dbm implementation. - * @param used2 The second pathname used by apr_dbm. If only one file is - * used by the specific implementation, this will be set to NULL. - * @return An error if the specified type is invalid. - * @remark The dbm file(s) don't need to exist. This function only manipulates - * the pathnames. - */ -APU_DECLARE(apr_status_t) apr_dbm_get_usednames_ex(apr_pool_t *pool, - const char *type, - const char *pathname, - const char **used1, - const char **used2); - -/** - * If the specified file/path were passed to apr_dbm_open(), return the - * actual file/path names which would be (created and) used. At most, two - * files may be used; used2 may be NULL if only one file is used. - * @param pool The pool for allocating used1 and used2. - * @param pathname The path name to generate used-names from. - * @param used1 The first pathname used by the apr_dbm implementation. - * @param used2 The second pathname used by apr_dbm. If only one file is - * used by the specific implementation, this will be set to NULL. - * @remark The dbm file(s) don't need to exist. This function only manipulates - * the pathnames. - */ -APU_DECLARE(void) apr_dbm_get_usednames(apr_pool_t *pool, - const char *pathname, - const char **used1, - const char **used2); - -/** @} */ -#ifdef __cplusplus -} -#endif - -#endif /* !APR_DBM_H */ diff --git a/include/apr_hooks.h b/include/apr_hooks.h deleted file mode 100644 index 9f2a8075..00000000 --- a/include/apr_hooks.h +++ /dev/null @@ -1,296 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef APR_HOOKS_H -#define APR_HOOKS_H - -#include "apu.h" -/* For apr_array_header_t */ -#include "apr_tables.h" - -#ifdef APR_DTRACE_PROVIDER -#include <sys/sdt.h> -#ifndef OLD_DTRACE_PROBE -#define OLD_DTRACE_PROBE(name) __dtrace_ap___##name() -#endif -#ifndef OLD_DTRACE_PROBE1 -#define OLD_DTRACE_PROBE1(name,a) __dtrace_ap___##name(a) -#endif -#ifndef OLD_DTRACE_PROBE2 -#define OLD_DTRACE_PROBE2(name,a,b) __dtrace_ap___##name(a,b) -#endif -#else -#define OLD_DTRACE_PROBE(a) -#define OLD_DTRACE_PROBE1(a,b) -#define OLD_DTRACE_PROBE2(a,b,c) -#endif - -/** - * @file apr_hooks.h - * @brief Apache hook functions - */ - -#ifdef __cplusplus -extern "C" { -#endif -/** - * @defgroup APR_Util_Hook Hook Functions - * @ingroup APR_Util - * @{ - */ -/** macro to return the prototype of the hook function */ -#define APR_IMPLEMENT_HOOK_GET_PROTO(ns,link,name) \ -link##_DECLARE(apr_array_header_t *) ns##_hook_get_##name(void) - -/** macro to declare the hook correctly */ -#define APR_DECLARE_EXTERNAL_HOOK(ns,link,ret,name,args) \ -typedef ret ns##_HOOK_##name##_t args; \ -link##_DECLARE(void) ns##_hook_##name(ns##_HOOK_##name##_t *pf, \ - const char * const *aszPre, \ - const char * const *aszSucc, int nOrder); \ -link##_DECLARE(ret) ns##_run_##name args; \ -APR_IMPLEMENT_HOOK_GET_PROTO(ns,link,name); \ -typedef struct ns##_LINK_##name##_t \ - { \ - ns##_HOOK_##name##_t *pFunc; \ - const char *szName; \ - const char * const *aszPredecessors; \ - const char * const *aszSuccessors; \ - int nOrder; \ - } ns##_LINK_##name##_t; - -/** macro to declare the hook structure */ -#define APR_HOOK_STRUCT(members) \ -static struct { members } _hooks; - -/** macro to link the hook structure */ -#define APR_HOOK_LINK(name) \ - apr_array_header_t *link_##name; - -/** macro to implement the hook */ -#define APR_IMPLEMENT_EXTERNAL_HOOK_BASE(ns,link,name) \ -link##_DECLARE(void) ns##_hook_##name(ns##_HOOK_##name##_t *pf,const char * const *aszPre, \ - const char * const *aszSucc,int nOrder) \ - { \ - ns##_LINK_##name##_t *pHook; \ - if(!_hooks.link_##name) \ - { \ - _hooks.link_##name=apr_array_make(apr_hook_global_pool,1,sizeof(ns##_LINK_##name##_t)); \ - apr_hook_sort_register(#name,&_hooks.link_##name); \ - } \ - pHook=apr_array_push(_hooks.link_##name); \ - pHook->pFunc=pf; \ - pHook->aszPredecessors=aszPre; \ - pHook->aszSuccessors=aszSucc; \ - pHook->nOrder=nOrder; \ - pHook->szName=apr_hook_debug_current; \ - if(apr_hook_debug_enabled) \ - apr_hook_debug_show(#name,aszPre,aszSucc); \ - } \ - APR_IMPLEMENT_HOOK_GET_PROTO(ns,link,name) \ - { \ - return _hooks.link_##name; \ - } - -/** - * Implement a hook that has no return code, and therefore runs all of the - * registered functions - * @param ns The namespace prefix of the hook functions - * @param link The linkage declaration prefix of the hook - * @param name The name of the hook - * @param args_decl The declaration of the arguments for the hook - * @param args_use The names for the arguments for the hook - * @note The link prefix FOO corresponds to FOO_DECLARE() macros, which - * provide export linkage from the module that IMPLEMENTs the hook, and - * import linkage from external modules that link to the hook's module. - */ -#define APR_IMPLEMENT_EXTERNAL_HOOK_VOID(ns,link,name,args_decl,args_use) \ -APR_IMPLEMENT_EXTERNAL_HOOK_BASE(ns,link,name) \ -link##_DECLARE(void) ns##_run_##name args_decl \ - { \ - ns##_LINK_##name##_t *pHook; \ - int n; \ -\ - OLD_DTRACE_PROBE(name##__entry); \ -\ - if(_hooks.link_##name) \ - { \ - pHook=(ns##_LINK_##name##_t *)_hooks.link_##name->elts; \ - for(n=0 ; n < _hooks.link_##name->nelts ; ++n) \ - { \ - OLD_DTRACE_PROBE1(name##__dispatch__invoke, (char *)pHook[n].szName); \ - pHook[n].pFunc args_use; \ - OLD_DTRACE_PROBE2(name##__dispatch__complete, (char *)pHook[n].szName, 0); \ - } \ - } \ -\ - OLD_DTRACE_PROBE1(name##__return, 0); \ -\ - } - -/* FIXME: note that this returns ok when nothing is run. I suspect it should - really return decline, but that breaks Apache currently - Ben -*/ -/** - * Implement a hook that runs until one of the functions returns something - * other than OK or DECLINE - * @param ns The namespace prefix of the hook functions - * @param link The linkage declaration prefix of the hook - * @param ret Type to return - * @param name The name of the hook - * @param args_decl The declaration of the arguments for the hook - * @param args_use The names for the arguments for the hook - * @param ok Success value - * @param decline Decline value - * @note The link prefix FOO corresponds to FOO_DECLARE() macros, which - * provide export linkage from the module that IMPLEMENTs the hook, and - * import linkage from external modules that link to the hook's module. - */ -#define APR_IMPLEMENT_EXTERNAL_HOOK_RUN_ALL(ns,link,ret,name,args_decl,args_use,ok,decline) \ -APR_IMPLEMENT_EXTERNAL_HOOK_BASE(ns,link,name) \ -link##_DECLARE(ret) ns##_run_##name args_decl \ - { \ - ns##_LINK_##name##_t *pHook; \ - int n; \ - ret rv = ok; \ -\ - OLD_DTRACE_PROBE(name##__entry); \ -\ - if(_hooks.link_##name) \ - { \ - pHook=(ns##_LINK_##name##_t *)_hooks.link_##name->elts; \ - for(n=0 ; n < _hooks.link_##name->nelts ; ++n) \ - { \ - OLD_DTRACE_PROBE1(name##__dispatch__invoke, (char *)pHook[n].szName); \ - rv=pHook[n].pFunc args_use; \ - OLD_DTRACE_PROBE2(name##__dispatch__complete, (char *)pHook[n].szName, rv); \ - if(rv != ok && rv != decline) \ - break; \ - rv = ok; \ - } \ - } \ -\ - OLD_DTRACE_PROBE1(name##__return, rv); \ -\ - return rv; \ - } - - -/** - * Implement a hook that runs until the first function returns something - * other than the value of decline - * @param ns The namespace prefix of the hook functions - * @param link The linkage declaration prefix of the hook - * @param name The name of the hook - * @param ret Type to return - * @param args_decl The declaration of the arguments for the hook - * @param args_use The names for the arguments for the hook - * @param decline Decline value - * @note The link prefix FOO corresponds to FOO_DECLARE() macros, which - * provide export linkage from the module that IMPLEMENTs the hook, and - * import linkage from external modules that link to the hook's module. - */ -#define APR_IMPLEMENT_EXTERNAL_HOOK_RUN_FIRST(ns,link,ret,name,args_decl,args_use,decline) \ -APR_IMPLEMENT_EXTERNAL_HOOK_BASE(ns,link,name) \ -link##_DECLARE(ret) ns##_run_##name args_decl \ - { \ - ns##_LINK_##name##_t *pHook; \ - int n; \ - ret rv = decline; \ -\ - OLD_DTRACE_PROBE(name##__entry); \ -\ - if(_hooks.link_##name) \ - { \ - pHook=(ns##_LINK_##name##_t *)_hooks.link_##name->elts; \ - for(n=0 ; n < _hooks.link_##name->nelts ; ++n) \ - { \ - OLD_DTRACE_PROBE1(name##__dispatch__invoke, (char *)pHook[n].szName); \ - rv=pHook[n].pFunc args_use; \ - OLD_DTRACE_PROBE2(name##__dispatch__complete, (char *)pHook[n].szName, rv); \ -\ - if(rv != decline) \ - break; \ - } \ - } \ -\ - OLD_DTRACE_PROBE1(name##__return, rv); \ -\ - return rv; \ - } - - /* Hook orderings */ -/** run this hook first, before ANYTHING */ -#define APR_HOOK_REALLY_FIRST (-10) -/** run this hook first */ -#define APR_HOOK_FIRST 0 -/** run this hook somewhere */ -#define APR_HOOK_MIDDLE 10 -/** run this hook after every other hook which is defined*/ -#define APR_HOOK_LAST 20 -/** run this hook last, after EVERYTHING */ -#define APR_HOOK_REALLY_LAST 30 - -/** - * The global pool used to allocate any memory needed by the hooks. - */ -APU_DECLARE_DATA extern apr_pool_t *apr_hook_global_pool; - -/** - * A global variable to determine if debugging information about the - * hooks functions should be printed - */ -APU_DECLARE_DATA extern int apr_hook_debug_enabled; - -/** - * The name of the module that is currently registering a function - */ -APU_DECLARE_DATA extern const char *apr_hook_debug_current; - -/** - * Register a hook function to be sorted - * @param szHookName The name of the Hook the function is registered for - * @param aHooks The array which stores all of the functions for this hook - */ -APU_DECLARE(void) apr_hook_sort_register(const char *szHookName, - apr_array_header_t **aHooks); -/** - * Sort all of the registerd functions for a given hook - */ -APU_DECLARE(void) apr_hook_sort_all(void); - -/** - * Print all of the information about the current hook. This is used for - * debugging purposes. - * @param szName The name of the hook - * @param aszPre All of the functions in the predecessor array - * @param aszSucc All of the functions in the successor array - */ -APU_DECLARE(void) apr_hook_debug_show(const char *szName, - const char * const *aszPre, - const char * const *aszSucc); - -/** - * Remove all currently registered functions. - */ -APU_DECLARE(void) apr_hook_deregister_all(void); - -/** @} */ -#ifdef __cplusplus -} -#endif - -#endif /* APR_HOOKS_H */ diff --git a/include/apr_ldap.h.in b/include/apr_ldap.h.in deleted file mode 100644 index 6087783d..00000000 --- a/include/apr_ldap.h.in +++ /dev/null @@ -1,197 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * apr_ldap.h is generated from apr_ldap.h.in by configure -- do not edit apr_ldap.h - */ -/** - * @file apr_ldap.h - * @brief APR-UTIL LDAP - */ -#ifndef APU_LDAP_H -#define APU_LDAP_H - -/** - * @defgroup APR_Util_LDAP LDAP - * @ingroup APR_Util - * @{ - */ - -/* this will be defined if LDAP support was compiled into apr-util */ -#define APR_HAS_LDAP @apu_has_ldap@ - -/* identify the LDAP toolkit used */ -#define APR_HAS_NETSCAPE_LDAPSDK @apu_has_ldap_netscape@ -#define APR_HAS_SOLARIS_LDAPSDK @apu_has_ldap_solaris@ -#define APR_HAS_NOVELL_LDAPSDK @apu_has_ldap_novell@ -#define APR_HAS_MOZILLA_LDAPSDK @apu_has_ldap_mozilla@ -#define APR_HAS_OPENLDAP_LDAPSDK @apu_has_ldap_openldap@ -#define APR_HAS_MICROSOFT_LDAPSDK @apu_has_ldap_microsoft@ -#define APR_HAS_TIVOLI_LDAPSDK @apu_has_ldap_tivoli@ -#define APR_HAS_ZOS_LDAPSDK @apu_has_ldap_zos@ -#define APR_HAS_OTHER_LDAPSDK @apu_has_ldap_other@ - - -/* - * Handle the case when LDAP is enabled - */ -#if APR_HAS_LDAP - -/* - * The following #defines are DEPRECATED and should not be used for - * anything. They remain to maintain binary compatibility. - * The original code defined the OPENLDAP SDK as present regardless - * of what really was there, which was way bogus. In addition, the - * apr_ldap_url_parse*() functions have been rewritten specifically for - * APR, so the APR_HAS_LDAP_URL_PARSE macro is forced to zero. - */ -#if APR_HAS_TIVOLI_LDAPSDK -#define APR_HAS_LDAP_SSL 0 -#else -#define APR_HAS_LDAP_SSL 1 -#endif -#define APR_HAS_LDAP_URL_PARSE 0 - -#if APR_HAS_OPENLDAP_LDAPSDK && !defined(LDAP_DEPRECATED) -/* Ensure that the "deprecated" interfaces are still exposed - * with OpenLDAP >= 2.3; these were exposed by default in earlier - * releases. */ -#define LDAP_DEPRECATED 1 -#endif - -/* - * Include the standard LDAP header files. - */ - -@lber_h@ -@ldap_h@ -@ldap_ssl_h@ - - -/* - * Detected standard functions - */ -#define APR_HAS_LDAPSSL_CLIENT_INIT @apu_has_ldapssl_client_init@ -#define APR_HAS_LDAPSSL_CLIENT_DEINIT @apu_has_ldapssl_client_deinit@ -#define APR_HAS_LDAPSSL_ADD_TRUSTED_CERT @apu_has_ldapssl_add_trusted_cert@ -#define APR_HAS_LDAP_START_TLS_S @apu_has_ldap_start_tls_s@ -#define APR_HAS_LDAP_SSLINIT @apu_has_ldap_sslinit@ -#define APR_HAS_LDAPSSL_INIT @apu_has_ldapssl_init@ -#define APR_HAS_LDAPSSL_INSTALL_ROUTINES @apu_has_ldapssl_install_routines@ - -/* - * Make sure the secure LDAP port is defined - */ -#ifndef LDAPS_PORT -#define LDAPS_PORT 636 /* ldaps:/// default LDAP over TLS port */ -#endif - -/* - * For ldap function calls that input a size limit on the number of returned elements - * Some SDKs do not have the define for LDAP_DEFAULT_LIMIT (-1) or LDAP_NO_LIMIT (0) - * LDAP_DEFAULT_LIMIT is preferred as it allows inheritance from whatever the SDK - * or process is configured for. - */ -#ifdef LDAP_DEFAULT_LIMIT -#define APR_LDAP_SIZELIMIT LDAP_DEFAULT_LIMIT -#else -#ifdef LDAP_NO_LIMIT -#define APR_LDAP_SIZELIMIT LDAP_NO_LIMIT -#endif -#endif - -#ifndef APR_LDAP_SIZELIMIT -#define APR_LDAP_SIZELIMIT 0 /* equivalent to LDAP_NO_LIMIT, and what goes on the wire */ -#endif - -/* - * z/OS is missing some defines - */ -#ifndef LDAP_VERSION_MAX -#define LDAP_VERSION_MAX LDAP_VERSION -#endif -#if APR_HAS_ZOS_LDAPSDK -#define LDAP_VENDOR_NAME "IBM z/OS" -#endif - -/* Note: Macros defining const casting has been removed in APR v1.0, - * pending real support for LDAP v2.0 toolkits. - * - * In the mean time, please use an LDAP v3.0 toolkit. - */ -#if LDAP_VERSION_MAX <= 2 -#error Support for LDAP v2.0 toolkits has been removed from apr-util. Please use an LDAP v3.0 toolkit. -#endif - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/** - * This structure allows the C LDAP API error codes to be returned - * along with plain text error messages that explain to us mere mortals - * what really happened. - */ -typedef struct apr_ldap_err_t { - const char *reason; - const char *msg; - int rc; -} apr_ldap_err_t; - -#ifdef __cplusplus -} -#endif - -/* The MS SDK returns LDAP_UNAVAILABLE when the backend has closed the connection - * between LDAP calls. Protect with APR_HAS_MICROSOFT_LDAPSDK in case someone - * manually chooses another SDK on Windows - */ -#if APR_HAS_MICROSOFT_LDAPSDK -#define APR_LDAP_IS_SERVER_DOWN(s) ((s) == LDAP_SERVER_DOWN \ - || (s) == LDAP_UNAVAILABLE) -#else -#define APR_LDAP_IS_SERVER_DOWN(s) ((s) == LDAP_SERVER_DOWN) -#endif - -/* These symbols are not actually exported in a DSO build, but mapped into - * a private exported function array for apr_ldap_stub to bind dynamically. - * Rename them appropriately to protect the global namespace. - */ -#ifdef APU_DSO_LDAP_BUILD - -#define apr_ldap_info apr__ldap_info -#define apr_ldap_init apr__ldap_init -#define apr_ldap_ssl_init apr__ldap_ssl_init -#define apr_ldap_ssl_deinit apr__ldap_ssl_deinit -#define apr_ldap_get_option apr__ldap_get_option -#define apr_ldap_set_option apr__ldap_set_option -#define apr_ldap_rebind_init apr__ldap_rebind_init -#define apr_ldap_rebind_add apr__ldap_rebind_add -#define apr_ldap_rebind_remove apr__ldap_rebind_remove - -#define APU_DECLARE_LDAP(type) type -#else -#define APU_DECLARE_LDAP(type) APU_DECLARE(type) -#endif - -#include "apr_ldap_url.h" -#include "apr_ldap_init.h" -#include "apr_ldap_option.h" -#include "apr_ldap_rebind.h" - -/** @} */ -#endif /* APR_HAS_LDAP */ -#endif /* APU_LDAP_H */ diff --git a/include/apr_ldap.hnw b/include/apr_ldap.hnw deleted file mode 100644 index c93014ae..00000000 --- a/include/apr_ldap.hnw +++ /dev/null @@ -1,158 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * apr_ldap.h is generated from apr_ldap.h.in by configure -- do not edit apr_ldap.h - */ -/** - * @file apr_ldap.h - * @brief APR-UTIL LDAP - */ -#ifndef APU_LDAP_H -#define APU_LDAP_H - -/** - * @defgroup APR_Util_LDAP LDAP - * @ingroup APR_Util - * @{ - */ - -/* this will be defined if LDAP support was compiled into apr-util */ -#define APR_HAS_LDAP 1 - -/* identify the LDAP toolkit used */ -#define APR_HAS_NETSCAPE_LDAPSDK 0 -#define APR_HAS_SOLARIS_LDAPSDK 0 -#define APR_HAS_NOVELL_LDAPSDK 1 -#define APR_HAS_MOZILLA_LDAPSDK 0 -#define APR_HAS_OPENLDAP_LDAPSDK 0 -#define APR_HAS_MICROSOFT_LDAPSDK 0 -#define APR_HAS_OTHER_LDAPSDK 0 - - -/* - * Handle the case when LDAP is enabled - */ -#if APR_HAS_LDAP - -/* - * The following #defines are DEPRECATED and should not be used for - * anything. They remain to maintain binary compatibility. - * The original code defined the OPENLDAP SDK as present regardless - * of what really was there, which was way bogus. In addition, the - * apr_ldap_url_parse*() functions have been rewritten specifically for - * APR, so the APR_HAS_LDAP_URL_PARSE macro is forced to zero. - */ -#define APR_HAS_LDAP_SSL 1 -#define APR_HAS_LDAP_URL_PARSE 0 - - -/* - * Include the standard LDAP header files. - */ - -#ifdef GENEXPORTS -#define LDAP_VERSION_MAX 3 -#define LDAP_INSUFFICIENT_ACCESS -#else -#include <lber.h> -#include <ldap.h> -#if APR_HAS_LDAP_SSL -#include <ldap_ssl.h> -#endif -#endif - - -/* - * Detected standard functions - */ -#define APR_HAS_LDAPSSL_CLIENT_INIT 1 -#define APR_HAS_LDAPSSL_CLIENT_DEINIT 1 -#define APR_HAS_LDAPSSL_ADD_TRUSTED_CERT 1 -#define APR_HAS_LDAP_START_TLS_S 0 -#define APR_HAS_LDAP_SSLINIT 0 -#define APR_HAS_LDAPSSL_INIT 1 -#define APR_HAS_LDAPSSL_INSTALL_ROUTINES 0 - - -/* - * Make sure the secure LDAP port is defined - */ -#ifndef LDAPS_PORT -#define LDAPS_PORT 636 /* ldaps:/// default LDAP over TLS port */ -#endif - - -/* Note: Macros defining const casting has been removed in APR v1.0, - * pending real support for LDAP v2.0 toolkits. - * - * In the mean time, please use an LDAP v3.0 toolkit. - */ -#if LDAP_VERSION_MAX <= 2 -#error Support for LDAP v2.0 toolkits has been removed from apr-util. Please use an LDAP v3.0 toolkit. -#endif - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/** - * This structure allows the C LDAP API error codes to be returned - * along with plain text error messages that explain to us mere mortals - * what really happened. - */ -typedef struct apr_ldap_err_t { - const char *reason; - const char *msg; - int rc; -} apr_ldap_err_t; - -#ifdef __cplusplus -} -#endif - -#define APR_LDAP_IS_SERVER_DOWN(s) ((s) == LDAP_SERVER_DOWN) - -/* These symbols are not actually exported in a DSO build, but mapped into - * a private exported function array for apr_ldap_stub to bind dynamically. - * Rename them appropriately to protect the global namespace. - */ -#ifdef APU_DSO_LDAP_BUILD - -#define apr_ldap_info apr__ldap_info -#define apr_ldap_init apr__ldap_init -#define apr_ldap_ssl_init apr__ldap_ssl_init -#define apr_ldap_ssl_deinit apr__ldap_ssl_deinit -#define apr_ldap_get_option apr__ldap_get_option -#define apr_ldap_set_option apr__ldap_set_option -#define apr_ldap_rebind_init apr__ldap_rebind_init -#define apr_ldap_rebind_add apr__ldap_rebind_add -#define apr_ldap_rebind_remove apr__ldap_rebind_remove - -#define APU_DECLARE_LDAP(type) type -#else -#define APU_DECLARE_LDAP(type) APU_DECLARE(type) -#endif - -#include "apr_ldap_url.h" -#include "apr_ldap_init.h" -#include "apr_ldap_option.h" -#include "apr_ldap_rebind.h" - -/** @} */ -#endif /* APR_HAS_LDAP */ -#endif /* APU_LDAP_H */ - diff --git a/include/apr_ldap.hw b/include/apr_ldap.hw deleted file mode 100644 index c1bd0d4b..00000000 --- a/include/apr_ldap.hw +++ /dev/null @@ -1,197 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * apr_ldap.h is generated from apr_ldap.h.in by configure -- do not edit apr_ldap.h - */ -/** - * @file apr_ldap.h - * @brief APR-UTIL LDAP - */ -#ifndef APU_LDAP_H -#define APU_LDAP_H - -/** - * @defgroup APR_Util_LDAP LDAP - * @ingroup APR_Util - * @{ - */ - -/* this will be defined if LDAP support was compiled into apr-util */ -#define APR_HAS_LDAP 1 - -/* identify the LDAP toolkit used */ -#define APR_HAS_NETSCAPE_LDAPSDK 0 -#define APR_HAS_SOLARIS_LDAPSDK 0 -#define APR_HAS_NOVELL_LDAPSDK 0 -#define APR_HAS_MOZILLA_LDAPSDK 0 -#define APR_HAS_OPENLDAP_LDAPSDK 0 -#define APR_HAS_MICROSOFT_LDAPSDK 1 -#define APR_HAS_TIVOLI_LDAPSDK 0 -#define APR_HAS_ZOS_LDAPSDK 0 -#define APR_HAS_OTHER_LDAPSDK 0 - - -/* - * Handle the case when LDAP is enabled - */ -#if APR_HAS_LDAP - -/* - * The following #defines are DEPRECATED and should not be used for - * anything. They remain to maintain binary compatibility. - * The original code defined the OPENLDAP SDK as present regardless - * of what really was there, which was way bogus. In addition, the - * apr_ldap_url_parse*() functions have been rewritten specifically for - * APR, so the APR_HAS_LDAP_URL_PARSE macro is forced to zero. - */ -#if APR_HAS_TIVOLI_LDAPSDK -#define APR_HAS_LDAP_SSL 0 -#else -#define APR_HAS_LDAP_SSL 1 -#endif -#define APR_HAS_LDAP_URL_PARSE 0 - -#if APR_HAS_OPENLDAP_LDAPSDK && !defined(LDAP_DEPRECATED) -/* Ensure that the "deprecated" interfaces are still exposed - * with OpenLDAP >= 2.3; these were exposed by default in earlier - * releases. */ -#define LDAP_DEPRECATED 1 -#endif - -/* - * Include the standard LDAP header files. - */ - -#include <winldap.h> - - -/* - * Detected standard functions - */ -#define APR_HAS_LDAPSSL_CLIENT_INIT 0 -#define APR_HAS_LDAPSSL_CLIENT_DEINIT 0 -#define APR_HAS_LDAPSSL_ADD_TRUSTED_CERT 0 -#define APR_HAS_LDAP_START_TLS_S 0 -#define APR_HAS_LDAP_SSLINIT 1 -#define APR_HAS_LDAPSSL_INIT 0 -#define APR_HAS_LDAPSSL_INSTALL_ROUTINES 0 - - -/* - * Make sure the secure LDAP port is defined - */ -#ifndef LDAPS_PORT -#define LDAPS_PORT 636 /* ldaps:/// default LDAP over TLS port */ -#endif - - -/* - * For ldap function calls that input a size limit on the number of returned elements - * Some SDKs do not have the define for LDAP_DEFAULT_LIMIT (-1) or LDAP_NO_LIMIT (0) - * LDAP_DEFAULT_LIMIT is preferred as it allows inheritance from whatever the SDK - * or process is configured for. - */ -#ifdef LDAP_DEFAULT_LIMIT -#define APR_LDAP_SIZELIMIT LDAP_DEFAULT_LIMIT -#else -#ifdef LDAP_NO_LIMIT -#define APR_LDAP_SIZELIMIT LDAP_NO_LIMIT -#endif -#endif - -#ifndef APR_LDAP_SIZELIMIT -#define APR_LDAP_SIZELIMIT 0 /* equivalent to LDAP_NO_LIMIT, and what goes on the wire */ -#endif - -/* - * z/OS is missing some defines - */ -#ifndef LDAP_VERSION_MAX -#define LDAP_VERSION_MAX LDAP_VERSION -#endif -#if APR_HAS_ZOS_LDAPSDK -#define LDAP_VENDOR_NAME "IBM z/OS" -#endif - -/* Note: Macros defining const casting has been removed in APR v1.0, - * pending real support for LDAP v2.0 toolkits. - * - * In the mean time, please use an LDAP v3.0 toolkit. - */ -#if LDAP_VERSION_MAX <= 2 -#error Support for LDAP v2.0 toolkits has been removed from apr-util. Please use an LDAP v3.0 toolkit. -#endif - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/** - * This structure allows the C LDAP API error codes to be returned - * along with plain text error messages that explain to us mere mortals - * what really happened. - */ -typedef struct apr_ldap_err_t { - const char *reason; - const char *msg; - int rc; -} apr_ldap_err_t; - -#ifdef __cplusplus -} -#endif - -/* The MS SDK returns LDAP_UNAVAILABLE when the backend has closed the connection - * between LDAP calls. Protect with APR_HAS_MICROSOFT_LDAPSDK in case someone - * manually chooses another SDK on Windows - */ -#if APR_HAS_MICROSOFT_LDAPSDK -#define APR_LDAP_IS_SERVER_DOWN(s) ((s) == LDAP_SERVER_DOWN \ - || (s) == LDAP_UNAVAILABLE) -#else -#define APR_LDAP_IS_SERVER_DOWN(s) ((s) == LDAP_SERVER_DOWN) -#endif - -/* These symbols are not actually exported in a DSO build, but mapped into - * a private exported function array for apr_ldap_stub to bind dynamically. - * Rename them appropriately to protect the global namespace. - */ -#ifdef APU_DSO_LDAP_BUILD - -#define apr_ldap_info apr__ldap_info -#define apr_ldap_init apr__ldap_init -#define apr_ldap_ssl_init apr__ldap_ssl_init -#define apr_ldap_ssl_deinit apr__ldap_ssl_deinit -#define apr_ldap_get_option apr__ldap_get_option -#define apr_ldap_set_option apr__ldap_set_option -#define apr_ldap_rebind_init apr__ldap_rebind_init -#define apr_ldap_rebind_add apr__ldap_rebind_add -#define apr_ldap_rebind_remove apr__ldap_rebind_remove - -#define APU_DECLARE_LDAP(type) type -#else -#define APU_DECLARE_LDAP(type) APU_DECLARE(type) -#endif - -#include "apr_ldap_url.h" -#include "apr_ldap_init.h" -#include "apr_ldap_option.h" -#include "apr_ldap_rebind.h" - -/** @} */ -#endif /* APR_HAS_LDAP */ -#endif /* APU_LDAP_H */ diff --git a/include/apr_ldap_init.h b/include/apr_ldap_init.h deleted file mode 100644 index aeb6d9bb..00000000 --- a/include/apr_ldap_init.h +++ /dev/null @@ -1,165 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @file apr_ldap_init.h - * @brief APR-UTIL LDAP ldap_init() functions - */ -#ifndef APR_LDAP_INIT_H -#define APR_LDAP_INIT_H - -/** - * @addtogroup APR_Util_LDAP - * @{ - */ - -#include "apr_ldap.h" - -#if APR_HAS_LDAP - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - - -/** - * Macro to detect security related return values. - */ -#if defined(LDAP_INSUFFICIENT_ACCESS) -#define APU_LDAP_INSUFFICIENT_ACCESS LDAP_INSUFFICIENT_ACCESS -#elif defined(LDAP_INSUFFICIENT_RIGHTS) -#define APU_LDAP_INSUFFICIENT_ACCESS LDAP_INSUFFICIENT_RIGHTS -#elif defined(APR_HAS_MICROSOFT_LDAPSDK) -/* The macros above fail to contemplate that LDAP_RETCODE values - * may be represented by an enum. autoconf tests would be much - * more robust. - */ -#define APU_LDAP_INSUFFICIENT_ACCESS LDAP_INSUFFICIENT_RIGHTS -#else -#error The security return codes must be added to support this LDAP toolkit. -#endif - -#if defined(LDAP_SECURITY_ERROR) -#define APU_LDAP_SECURITY_ERROR LDAP_SECURITY_ERROR -#else -#define APU_LDAP_SECURITY_ERROR(n) \ - (LDAP_INAPPROPRIATE_AUTH == n) ? 1 \ - : (LDAP_INVALID_CREDENTIALS == n) ? 1 \ - : (APU_LDAP_INSUFFICIENT_ACCESS == n) ? 1 \ - : 0 -#endif - - -/** - * APR LDAP SSL Initialise function - * - * This function initialises SSL on the underlying LDAP toolkit - * if this is necessary. - * - * If a CA certificate is provided, this is set, however the setting - * of certificates via this method has been deprecated and will be removed in - * APR v2.0. - * - * The apr_ldap_set_option() function with the APR_LDAP_OPT_TLS_CERT option - * should be used instead to set certificates. - * - * If SSL support is not available on this platform, or a problem - * was encountered while trying to set the certificate, the function - * will return APR_EGENERAL. Further LDAP specific error information - * can be found in result_err. - * @param pool The pool to use - * @param cert_auth_file The name of the certificate to use, can be NULL - * @param cert_file_type The type of certificate specified. See the - * apr_ldap_set_option() APR_LDAP_OPT_TLS_CERT option for details. - * @param result_err The returned result - */ -APU_DECLARE_LDAP(int) apr_ldap_ssl_init(apr_pool_t *pool, - const char *cert_auth_file, - int cert_file_type, - apr_ldap_err_t **result_err); - -/** - * APR LDAP SSL De-Initialise function - * - * This function tears down any SSL certificate setup previously - * set using apr_ldap_ssl_init(). It should be called to clean - * up if a graceful restart of a service is attempted. - * @todo currently we do not check whether apr_ldap_ssl_init() - * has been called first - we probably should. - */ -APU_DECLARE_LDAP(int) apr_ldap_ssl_deinit(void); - -/** - * APR LDAP initialise function - * - * This function is responsible for initialising an LDAP - * connection in a toolkit independant way. It does the - * job of ldap_init() from the C api. - * - * It handles both the SSL and non-SSL case, and attempts - * to hide the complexity setup from the user. This function - * assumes that any certificate setup necessary has already - * been done. - * - * If SSL or STARTTLS needs to be enabled, and the underlying - * toolkit supports it, the following values are accepted for - * secure: - * - * APR_LDAP_NONE: No encryption - * APR_LDAP_SSL: SSL encryption (ldaps://) - * APR_LDAP_STARTTLS: Force STARTTLS on ldap:// - * @remark The Novell toolkit is only able to set the SSL mode via this - * function. To work around this limitation, set the SSL mode here if no - * per connection client certificates are present, otherwise set secure - * APR_LDAP_NONE here, then set the per connection client certificates, - * followed by setting the SSL mode via apr_ldap_set_option(). As Novell - * does not support per connection client certificates, this problem is - * worked around while still being compatible with other LDAP toolkits. - * @param pool The pool to use - * @param ldap The LDAP handle - * @param hostname The name of the host to connect to. This can be either a - * DNS name, or an IP address. - * @param portno The port to connect to - * @param secure The security mode to set - * @param result_err The returned result - */ -APU_DECLARE_LDAP(int) apr_ldap_init(apr_pool_t *pool, - LDAP **ldap, - const char *hostname, - int portno, - int secure, - apr_ldap_err_t **result_err); - -/** - * APR LDAP info function - * - * This function returns a string describing the LDAP toolkit - * currently in use. The string is placed inside result_err->reason. - * @param pool The pool to use - * @param result_err The returned result - */ -APU_DECLARE_LDAP(int) apr_ldap_info(apr_pool_t *pool, - apr_ldap_err_t **result_err); - -#ifdef __cplusplus -} -#endif - -#endif /* APR_HAS_LDAP */ - -/** @} */ - -#endif /* APR_LDAP_URL_H */ diff --git a/include/apr_ldap_option.h b/include/apr_ldap_option.h deleted file mode 100644 index 0ff8a862..00000000 --- a/include/apr_ldap_option.h +++ /dev/null @@ -1,254 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @file apr_ldap_option.h - * @brief APR-UTIL LDAP ldap_*_option() functions - */ -#ifndef APR_LDAP_OPTION_H -#define APR_LDAP_OPTION_H - -/** - * @addtogroup APR_Util_LDAP - * @{ - */ - -#include "apr_ldap.h" - -#if APR_HAS_LDAP - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/* - * The following defines handle the different TLS certificate - * options available. If these options are missing, APR will try and - * emulate support for this using the deprecated ldap_start_tls_s() - * function. - */ -/** - * Set SSL mode to one of APR_LDAP_NONE, APR_LDAP_SSL, APR_LDAP_STARTTLS - * or APR_LDAP_STOPTLS. - */ -#define APR_LDAP_OPT_TLS 0x6fff -/** - * Set zero or more CA certificates, client certificates or private - * keys globally, or per connection (where supported). - */ -#define APR_LDAP_OPT_TLS_CERT 0x6ffe -/** - * Set the LDAP library to no verify the server certificate. This means - * all servers are considered trusted. - */ -#define APR_LDAP_OPT_VERIFY_CERT 0x6ffd -/** - * Set the LDAP library to indicate if referrals should be chased during - * LDAP searches. - */ -#define APR_LDAP_OPT_REFERRALS 0x6ffc -/** - * Set the LDAP library to indicate a maximum number of referral hops to - * chase before giving up on the search. - */ -#define APR_LDAP_OPT_REFHOPLIMIT 0x6ffb - -/** - * Structures for the apr_set_option() cases - */ - -/** - * APR_LDAP_OPT_TLS_CERT - * - * This structure includes possible options to set certificates on - * system initialisation. Different SDKs have different certificate - * requirements, and to achieve this multiple certificates must be - * specified at once passed as an (apr_array_header_t *). - * - * Netscape: - * Needs the CA cert database (cert7.db), the client cert database (key3.db) - * and the security module file (secmod.db) set at the system initialisation - * time. Three types are supported: APR_LDAP_CERT7_DB, APR_LDAP_KEY3_DB and - * APR_LDAP_SECMOD. - * - * To specify a client cert connection, a certificate nickname needs to be - * provided with a type of APR_LDAP_CERT. - * int ldapssl_enable_clientauth( LDAP *ld, char *keynickname, - * char *keypasswd, char *certnickname ); - * keynickname is currently not used, and should be set to "" - * - * Novell: - * Needs CA certificates and client certificates set at system initialisation - * time. Three types are supported: APR_LDAP_CA*, APR_LDAP_CERT* and - * APR_LDAP_KEY*. - * - * Certificates cannot be specified per connection. - * - * The functions used are: - * ldapssl_add_trusted_cert(serverTrustedRoot, serverTrustedRootEncoding); - * Clients certs and keys are set at system initialisation time with - * int ldapssl_set_client_cert ( - * void *cert, - * int type - * void *password); - * type can be LDAPSSL_CERT_FILETYPE_B64 or LDAPSSL_CERT_FILETYPE_DER - * ldapssl_set_client_private_key(clientPrivateKey, - * clientPrivateKeyEncoding, - * clientPrivateKeyPassword); - * - * OpenSSL: - * Needs one or more CA certificates to be set at system initialisation time - * with a type of APR_LDAP_CA*. - * - * May have one or more client certificates set per connection with a type of - * APR_LDAP_CERT*, and keys with APR_LDAP_KEY*. - */ -/** CA certificate type unknown */ -#define APR_LDAP_CA_TYPE_UNKNOWN 0 -/** binary DER encoded CA certificate */ -#define APR_LDAP_CA_TYPE_DER 1 -/** PEM encoded CA certificate */ -#define APR_LDAP_CA_TYPE_BASE64 2 -/** Netscape/Mozilla cert7.db CA certificate database */ -#define APR_LDAP_CA_TYPE_CERT7_DB 3 -/** Netscape/Mozilla secmod file */ -#define APR_LDAP_CA_TYPE_SECMOD 4 -/** Client certificate type unknown */ -#define APR_LDAP_CERT_TYPE_UNKNOWN 5 -/** binary DER encoded client certificate */ -#define APR_LDAP_CERT_TYPE_DER 6 -/** PEM encoded client certificate */ -#define APR_LDAP_CERT_TYPE_BASE64 7 -/** Netscape/Mozilla key3.db client certificate database */ -#define APR_LDAP_CERT_TYPE_KEY3_DB 8 -/** Netscape/Mozilla client certificate nickname */ -#define APR_LDAP_CERT_TYPE_NICKNAME 9 -/** Private key type unknown */ -#define APR_LDAP_KEY_TYPE_UNKNOWN 10 -/** binary DER encoded private key */ -#define APR_LDAP_KEY_TYPE_DER 11 -/** PEM encoded private key */ -#define APR_LDAP_KEY_TYPE_BASE64 12 -/** PKCS#12 encoded client certificate */ -#define APR_LDAP_CERT_TYPE_PFX 13 -/** PKCS#12 encoded private key */ -#define APR_LDAP_KEY_TYPE_PFX 14 -/** Openldap directory full of base64-encoded cert - * authorities with hashes in corresponding .0 directory - */ -#define APR_LDAP_CA_TYPE_CACERTDIR_BASE64 15 - - -/** - * Certificate structure. - * - * This structure is used to store certificate details. An array of - * these structures is passed to apr_ldap_set_option() to set CA - * and client certificates. - * @param type Type of certificate APR_LDAP_*_TYPE_* - * @param path Path, file or nickname of the certificate - * @param password Optional password, can be NULL - */ -typedef struct apr_ldap_opt_tls_cert_t apr_ldap_opt_tls_cert_t; -struct apr_ldap_opt_tls_cert_t { - int type; - const char *path; - const char *password; -}; - -/** - * APR_LDAP_OPT_TLS - * - * This sets the SSL level on the LDAP handle. - * - * Netscape/Mozilla: - * Supports SSL, but not STARTTLS - * SSL is enabled by calling ldapssl_install_routines(). - * - * Novell: - * Supports SSL and STARTTLS. - * SSL is enabled by calling ldapssl_install_routines(). Note that calling - * other ldap functions before ldapssl_install_routines() may cause this - * function to fail. - * STARTTLS is enabled by calling ldapssl_start_tls_s() after calling - * ldapssl_install_routines() (check this). - * - * OpenLDAP: - * Supports SSL and supports STARTTLS, but none of this is documented: - * http://www.openldap.org/lists/openldap-software/200409/msg00618.html - * Documentation for both SSL support and STARTTLS has been deleted from - * the OpenLDAP documentation and website. - */ - -/** No encryption */ -#define APR_LDAP_NONE 0 -/** SSL encryption (ldaps://) */ -#define APR_LDAP_SSL 1 -/** TLS encryption (STARTTLS) */ -#define APR_LDAP_STARTTLS 2 -/** end TLS encryption (STOPTLS) */ -#define APR_LDAP_STOPTLS 3 - -/** - * APR LDAP get option function - * - * This function gets option values from a given LDAP session if - * one was specified. It maps to the native ldap_get_option() function. - * @param pool The pool to use - * @param ldap The LDAP handle - * @param option The LDAP_OPT_* option to return - * @param outvalue The value returned (if any) - * @param result_err The apr_ldap_err_t structure contained detailed results - * of the operation. - */ -APU_DECLARE_LDAP(int) apr_ldap_get_option(apr_pool_t *pool, - LDAP *ldap, - int option, - void *outvalue, - apr_ldap_err_t **result_err); - -/** - * APR LDAP set option function - * - * This function sets option values to a given LDAP session if - * one was specified. It maps to the native ldap_set_option() function. - * - * Where an option is not supported by an LDAP toolkit, this function - * will try and apply legacy functions to achieve the same effect, - * depending on the platform. - * @param pool The pool to use - * @param ldap The LDAP handle - * @param option The LDAP_OPT_* option to set - * @param invalue The value to set - * @param result_err The apr_ldap_err_t structure contained detailed results - * of the operation. - */ -APU_DECLARE_LDAP(int) apr_ldap_set_option(apr_pool_t *pool, - LDAP *ldap, - int option, - const void *invalue, - apr_ldap_err_t **result_err); - -#ifdef __cplusplus -} -#endif - -#endif /* APR_HAS_LDAP */ - -/** @} */ - -#endif /* APR_LDAP_OPTION_H */ - diff --git a/include/apr_ldap_rebind.h b/include/apr_ldap_rebind.h deleted file mode 100644 index 342a17c3..00000000 --- a/include/apr_ldap_rebind.h +++ /dev/null @@ -1,98 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * The APR LDAP rebind functions provide an implementation of - * a rebind procedure that can be used to allow clients to chase referrals, - * using the same credentials used to log in originally. - * - * Use of this implementation is optional. - * - * @file apr_ldap_rebind.h - * @brief Apache LDAP library - */ - -#ifndef APU_LDAP_REBIND_H -#define APU_LDAP_REBIND_H - -/** - * @addtogroup APR_Util_LDAP - * @{ - **/ - -#if defined(DOXYGEN) -#include "apr_ldap.h" -#endif - -/* - * Handle the case when LDAP is enabled - */ -#if APR_HAS_LDAP - -/** - * APR LDAP initialize rebind lock - * - * This function creates the lock for controlling access to the xref list.. - * @param pool Pool to use when creating the xref_lock. - */ -APU_DECLARE_LDAP(apr_status_t) apr_ldap_rebind_init(apr_pool_t *pool); - - -/** - * APR LDAP rebind_add function - * - * This function creates a cross reference entry for the specified ldap - * connection. The rebind callback function will look up this ldap - * connection so it can retrieve the bindDN and bindPW for use in any - * binds while referrals are being chased. - * - * This function will add the callback to the LDAP handle passed in. - * - * A cleanup is registered within the pool provided to remove this - * entry when the pool is removed. Alternatively apr_ldap_rebind_remove() - * can be called to explicitly remove the entry at will. - * - * @param pool The pool to use - * @param ld The LDAP connectionhandle - * @param bindDN The bind DN to be used for any binds while chasing - * referrals on this ldap connection. - * @param bindPW The bind Password to be used for any binds while - * chasing referrals on this ldap connection. - */ -APU_DECLARE_LDAP(apr_status_t) apr_ldap_rebind_add(apr_pool_t *pool, - LDAP *ld, - const char *bindDN, - const char *bindPW); - -/** - * APR LDAP rebind_remove function - * - * This function removes the rebind cross reference entry for the - * specified ldap connection. - * - * If not explicitly removed, this function will be called automatically - * when the pool is cleaned up. - * - * @param ld The LDAP connectionhandle - */ -APU_DECLARE_LDAP(apr_status_t) apr_ldap_rebind_remove(LDAP *ld); - -#endif /* APR_HAS_LDAP */ - -/** @} */ - -#endif /* APU_LDAP_REBIND_H */ - diff --git a/include/apr_ldap_url.h b/include/apr_ldap_url.h deleted file mode 100644 index a71f5b3c..00000000 --- a/include/apr_ldap_url.h +++ /dev/null @@ -1,120 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @file apr_ldap_url.h - * @brief APR-UTIL LDAP ldap_init() functions - */ -#ifndef APR_LDAP_URL_H -#define APR_LDAP_URL_H - -/** - * @addtogroup APR_Util_LDAP - * @{ - */ - -#if defined(DOXYGEN) -#include "apr_ldap.h" -#endif - -#if APR_HAS_LDAP - -#include "apu.h" -#include "apr_pools.h" - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/** Structure to access an exploded LDAP URL */ -typedef struct apr_ldap_url_desc_t { - struct apr_ldap_url_desc_t *lud_next; - char *lud_scheme; - char *lud_host; - int lud_port; - char *lud_dn; - char **lud_attrs; - int lud_scope; - char *lud_filter; - char **lud_exts; - int lud_crit_exts; -} apr_ldap_url_desc_t; - -#ifndef APR_LDAP_URL_SUCCESS -#define APR_LDAP_URL_SUCCESS 0x00 /* Success */ -#define APR_LDAP_URL_ERR_MEM 0x01 /* can't allocate memory space */ -#define APR_LDAP_URL_ERR_PARAM 0x02 /* parameter is bad */ -#define APR_LDAP_URL_ERR_BADSCHEME 0x03 /* URL doesn't begin with "ldap[si]://" */ -#define APR_LDAP_URL_ERR_BADENCLOSURE 0x04 /* URL is missing trailing ">" */ -#define APR_LDAP_URL_ERR_BADURL 0x05 /* URL is bad */ -#define APR_LDAP_URL_ERR_BADHOST 0x06 /* host port is bad */ -#define APR_LDAP_URL_ERR_BADATTRS 0x07 /* bad (or missing) attributes */ -#define APR_LDAP_URL_ERR_BADSCOPE 0x08 /* scope string is invalid (or missing) */ -#define APR_LDAP_URL_ERR_BADFILTER 0x09 /* bad or missing filter */ -#define APR_LDAP_URL_ERR_BADEXTS 0x0a /* bad or missing extensions */ -#endif - -/** - * Is this URL an ldap url? ldap:// - * @param url The url to test - */ -APU_DECLARE(int) apr_ldap_is_ldap_url(const char *url); - -/** - * Is this URL an SSL ldap url? ldaps:// - * @param url The url to test - */ -APU_DECLARE(int) apr_ldap_is_ldaps_url(const char *url); - -/** - * Is this URL an ldap socket url? ldapi:// - * @param url The url to test - */ -APU_DECLARE(int) apr_ldap_is_ldapi_url(const char *url); - -/** - * Parse an LDAP URL. - * @param pool The pool to use - * @param url_in The URL to parse - * @param ludpp The structure to return the exploded URL - * @param result_err The result structure of the operation - */ -APU_DECLARE(int) apr_ldap_url_parse_ext(apr_pool_t *pool, - const char *url_in, - apr_ldap_url_desc_t **ludpp, - apr_ldap_err_t **result_err); - -/** - * Parse an LDAP URL. - * @param pool The pool to use - * @param url_in The URL to parse - * @param ludpp The structure to return the exploded URL - * @param result_err The result structure of the operation - */ -APU_DECLARE(int) apr_ldap_url_parse(apr_pool_t *pool, - const char *url_in, - apr_ldap_url_desc_t **ludpp, - apr_ldap_err_t **result_err); - -#ifdef __cplusplus -} -#endif - -#endif /* APR_HAS_LDAP */ - -/** @} */ - -#endif /* APR_LDAP_URL_H */ diff --git a/include/apr_md4.h b/include/apr_md4.h deleted file mode 100644 index 43fb33e3..00000000 --- a/include/apr_md4.h +++ /dev/null @@ -1,135 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* This is derived from material copyright RSA Data Security, Inc. - * Their notice is reproduced below in its entirety. - * - * Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All - * rights reserved. - * - * License to copy and use this software is granted provided that it - * is identified as the "RSA Data Security, Inc. MD4 Message-Digest - * Algorithm" in all material mentioning or referencing this software - * or this function. - * - * License is also granted to make and use derivative works provided - * that such works are identified as "derived from the RSA Data - * Security, Inc. MD4 Message-Digest Algorithm" in all material - * mentioning or referencing the derived work. - * - * RSA Data Security, Inc. makes no representations concerning either - * the merchantability of this software or the suitability of this - * software for any particular purpose. It is provided "as is" - * without express or implied warranty of any kind. - * - * These notices must be retained in any copies of any part of this - * documentation and/or software. - */ - -#ifndef APR_MD4_H -#define APR_MD4_H - -#include "apu.h" -#include "apr_xlate.h" -/** - * @file apr_md4.h - * @brief APR-UTIL MD4 Library - */ -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @defgroup APR_Util_MD4 MD4 Library - * @ingroup APR_Util - * @{ - */ - -/** The digestsize for MD4 */ -#define APR_MD4_DIGESTSIZE 16 - -/** @see apr_md4_ctx_t */ -typedef struct apr_md4_ctx_t apr_md4_ctx_t; - -/** MD4 context. */ -struct apr_md4_ctx_t { - /** state (ABCD) */ - apr_uint32_t state[4]; - /** number of bits, modulo 2^64 (lsb first) */ - apr_uint32_t count[2]; - /** input buffer */ - unsigned char buffer[64]; -#if APR_HAS_XLATE - /** translation handle */ - apr_xlate_t *xlate; -#endif -}; - -/** - * MD4 Initialize. Begins an MD4 operation, writing a new context. - * @param context The MD4 context to initialize. - */ -APU_DECLARE(apr_status_t) apr_md4_init(apr_md4_ctx_t *context); - -#if APR_HAS_XLATE -/** - * MDr4 translation setup. Provides the APR translation handle to be used - * for translating the content before calculating the digest. - * @param context The MD4 content to set the translation for. - * @param xlate The translation handle to use for this MD4 context - */ -APU_DECLARE(apr_status_t) apr_md4_set_xlate(apr_md4_ctx_t *context, - apr_xlate_t *xlate); -#else -#define apr_md4_set_xlate(context, xlate) APR_ENOTIMPL -#endif - -/** - * MD4 block update operation. Continue an MD4 message-digest operation, - * processing another message block, and updating the context. - * @param context The MD4 content to update. - * @param input next message block to update - * @param inputLen The length of the next message block - */ -APU_DECLARE(apr_status_t) apr_md4_update(apr_md4_ctx_t *context, - const unsigned char *input, - apr_size_t inputLen); - -/** - * MD4 finalization. Ends an MD4 message-digest operation, writing the - * message digest and zeroing the context - * @param digest The final MD4 digest - * @param context The MD4 content we are finalizing. - */ -APU_DECLARE(apr_status_t) apr_md4_final( - unsigned char digest[APR_MD4_DIGESTSIZE], - apr_md4_ctx_t *context); - -/** - * MD4 digest computation - * @param digest The MD4 digest - * @param input message block to use - * @param inputLen The length of the message block - */ -APU_DECLARE(apr_status_t) apr_md4(unsigned char digest[APR_MD4_DIGESTSIZE], - const unsigned char *input, - apr_size_t inputLen); - -/** @} */ -#ifdef __cplusplus -} -#endif - -#endif /* !APR_MD4_H */ diff --git a/include/apr_md5.h b/include/apr_md5.h deleted file mode 100644 index 367324a7..00000000 --- a/include/apr_md5.h +++ /dev/null @@ -1,162 +0,0 @@ -/* - * This is work is derived from material Copyright RSA Data Security, Inc. - * - * The RSA copyright statement and Licence for that original material is - * included below. This is followed by the Apache copyright statement and - * licence for the modifications made to that material. - */ - -/* Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All - rights reserved. - - License to copy and use this software is granted provided that it - is identified as the "RSA Data Security, Inc. MD5 Message-Digest - Algorithm" in all material mentioning or referencing this software - or this function. - - License is also granted to make and use derivative works provided - that such works are identified as "derived from the RSA Data - Security, Inc. MD5 Message-Digest Algorithm" in all material - mentioning or referencing the derived work. - - RSA Data Security, Inc. makes no representations concerning either - the merchantability of this software or the suitability of this - software for any particular purpose. It is provided "as is" - without express or implied warranty of any kind. - - These notices must be retained in any copies of any part of this - documentation and/or software. - */ - -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef APR_MD5_H -#define APR_MD5_H - -#include "apu.h" -#include "apr_xlate.h" - -#ifdef __cplusplus -extern "C" { -#endif -/** - * @file apr_md5.h - * @brief APR MD5 Routines - */ - -/** - * @defgroup APR_MD5 MD5 Routines - * @ingroup APR - * @{ - */ - -/** The MD5 digest size */ -#define APR_MD5_DIGESTSIZE 16 - -/** @see apr_md5_ctx_t */ -typedef struct apr_md5_ctx_t apr_md5_ctx_t; - -/** MD5 context. */ -struct apr_md5_ctx_t { - /** state (ABCD) */ - apr_uint32_t state[4]; - /** number of bits, modulo 2^64 (lsb first) */ - apr_uint32_t count[2]; - /** input buffer */ - unsigned char buffer[64]; - /** translation handle - * ignored if xlate is unsupported - */ - apr_xlate_t *xlate; -}; - -/** - * MD5 Initialize. Begins an MD5 operation, writing a new context. - * @param context The MD5 context to initialize. - */ -APU_DECLARE(apr_status_t) apr_md5_init(apr_md5_ctx_t *context); - -/** - * MD5 translation setup. Provides the APR translation handle to be used - * for translating the content before calculating the digest. - * @param context The MD5 content to set the translation for. - * @param xlate The translation handle to use for this MD5 context - */ -APU_DECLARE(apr_status_t) apr_md5_set_xlate(apr_md5_ctx_t *context, - apr_xlate_t *xlate); - -/** - * MD5 block update operation. Continue an MD5 message-digest operation, - * processing another message block, and updating the context. - * @param context The MD5 content to update. - * @param input next message block to update - * @param inputLen The length of the next message block - */ -APU_DECLARE(apr_status_t) apr_md5_update(apr_md5_ctx_t *context, - const void *input, - apr_size_t inputLen); - -/** - * MD5 finalization. Ends an MD5 message-digest operation, writing the - * message digest and zeroing the context - * @param digest The final MD5 digest - * @param context The MD5 content we are finalizing. - */ -APU_DECLARE(apr_status_t) apr_md5_final(unsigned char digest[APR_MD5_DIGESTSIZE], - apr_md5_ctx_t *context); - -/** - * MD5 in one step - * @param digest The final MD5 digest - * @param input The message block to use - * @param inputLen The length of the message block - */ -APU_DECLARE(apr_status_t) apr_md5(unsigned char digest[APR_MD5_DIGESTSIZE], - const void *input, - apr_size_t inputLen); - -/** - * Encode a password using an MD5 algorithm - * @param password The password to encode - * @param salt The salt to use for the encoding - * @param result The string to store the encoded password in - * @param nbytes The size of the result buffer - */ -APU_DECLARE(apr_status_t) apr_md5_encode(const char *password, const char *salt, - char *result, apr_size_t nbytes); - - -/** - * Validate hashes created by APR-supported algorithms: md5 and sha1. - * hashes created by crypt are supported only on platforms that provide - * crypt(3), so don't rely on that function unless you know that your - * application will be run only on platforms that support it. On platforms - * that don't support crypt(3), this falls back to a clear text string - * comparison. - * @param passwd The password to validate - * @param hash The password to validate against - */ -APU_DECLARE(apr_status_t) apr_password_validate(const char *passwd, - const char *hash); - - -/** @} */ -#ifdef __cplusplus -} -#endif - -#endif /* !APR_MD5_H */ diff --git a/include/apr_memcache.h b/include/apr_memcache.h deleted file mode 100644 index 499d2800..00000000 --- a/include/apr_memcache.h +++ /dev/null @@ -1,446 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef APR_MEMCACHE_H -#define APR_MEMCACHE_H - -/** - * @file apr_memcache.h - * @brief Client interface for memcached - * @remark To use this interface you must have a separate memcached - * server running. See the memcached website at http://www.danga.com/memcached/ - * for more information. - */ - -#include "apr.h" -#include "apr_pools.h" -#include "apr_time.h" -#include "apr_strings.h" -#include "apr_network_io.h" -#include "apr_ring.h" -#include "apr_buckets.h" -#include "apr_reslist.h" -#include "apr_hash.h" - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/** - * @defgroup APR_Util_MC Memcached Client Routines - * @ingroup APR_Util - * @{ - */ - -/** Specifies the status of a memcached server */ -typedef enum -{ - APR_MC_SERVER_LIVE, /**< Server is alive and responding to requests */ - APR_MC_SERVER_DEAD /**< Server is not responding to requests */ -} apr_memcache_server_status_t; - -/** Opaque memcache client connection object */ -typedef struct apr_memcache_conn_t apr_memcache_conn_t; - -/** Memcache Server Info Object */ -typedef struct apr_memcache_server_t apr_memcache_server_t; -struct apr_memcache_server_t -{ - const char *host; /**< Hostname of this Server */ - apr_port_t port; /**< Port of this Server */ - apr_memcache_server_status_t status; /**< @see apr_memcache_server_status_t */ -#if APR_HAS_THREADS || defined(DOXYGEN) - apr_reslist_t *conns; /**< Resource list of actual client connections */ -#else - apr_memcache_conn_t *conn; -#endif - apr_pool_t *p; /** Pool to use for private allocations */ -#if APR_HAS_THREADS - apr_thread_mutex_t *lock; -#endif - apr_time_t btime; -}; - -/* Custom hash callback function prototype, user for server selection. -* @param baton user selected baton -* @param data data to hash -* @param data_len length of data -*/ -typedef apr_uint32_t (*apr_memcache_hash_func)(void *baton, - const char *data, - const apr_size_t data_len); - -typedef struct apr_memcache_t apr_memcache_t; - -/* Custom Server Select callback function prototype. -* @param baton user selected baton -* @param mc memcache instance, use mc->live_servers to select a node -* @param hash hash of the selected key. -*/ -typedef apr_memcache_server_t* (*apr_memcache_server_func)(void *baton, - apr_memcache_t *mc, - const apr_uint32_t hash); - -/** Container for a set of memcached servers */ -struct apr_memcache_t -{ - apr_uint32_t flags; /**< Flags, Not currently used */ - apr_uint16_t nalloc; /**< Number of Servers Allocated */ - apr_uint16_t ntotal; /**< Number of Servers Added */ - apr_memcache_server_t **live_servers; /**< Array of Servers */ - apr_pool_t *p; /** Pool to use for allocations */ - void *hash_baton; - apr_memcache_hash_func hash_func; - void *server_baton; - apr_memcache_server_func server_func; -}; - -/** Returned Data from a multiple get */ -typedef struct -{ - apr_status_t status; - const char* key; - apr_size_t len; - char *data; - apr_uint16_t flags; -} apr_memcache_value_t; - -/** - * Creates a crc32 hash used to split keys between servers - * @param data Data to be hashed - * @param data_len Length of the data to use - * @return crc32 hash of data - * @remark The crc32 hash is not compatible with old memcached clients. - */ -APU_DECLARE(apr_uint32_t) apr_memcache_hash(apr_memcache_t *mc, - const char *data, - const apr_size_t data_len); - -/** - * Pure CRC32 Hash. Used by some clients. - */ -APU_DECLARE(apr_uint32_t) apr_memcache_hash_crc32(void *baton, - const char *data, - const apr_size_t data_len); - -/** - * hash compatible with the standard Perl Client. - */ -APU_DECLARE(apr_uint32_t) apr_memcache_hash_default(void *baton, - const char *data, - const apr_size_t data_len); - -/** - * Picks a server based on a hash - * @param mc The memcache client object to use - * @param hash Hashed value of a Key - * @return server that controls specified hash - * @see apr_memcache_hash - */ -APU_DECLARE(apr_memcache_server_t *) apr_memcache_find_server_hash(apr_memcache_t *mc, - const apr_uint32_t hash); - -/** - * server selection compatible with the standard Perl Client. - */ -APU_DECLARE(apr_memcache_server_t *) -apr_memcache_find_server_hash_default(void *baton, - apr_memcache_t *mc, - const apr_uint32_t hash); - -/** - * Adds a server to a client object - * @param mc The memcache client object to use - * @param ms Server to add - * @remark Adding servers is not thread safe, and should be done once at startup. - * @warning Changing servers after startup may cause keys to go to - * different servers. - */ -APU_DECLARE(apr_status_t) apr_memcache_add_server(apr_memcache_t *mc, - apr_memcache_server_t *server); - - -/** - * Finds a Server object based on a hostname/port pair - * @param mc The memcache client object to use - * @param host Hostname of the server - * @param port Port of the server - * @return Server with matching Hostname and Port, or NULL if none was found. - */ -APU_DECLARE(apr_memcache_server_t *) apr_memcache_find_server(apr_memcache_t *mc, - const char *host, - apr_port_t port); - -/** - * Enables a Server for use again - * @param mc The memcache client object to use - * @param ms Server to Activate - */ -APU_DECLARE(apr_status_t) apr_memcache_enable_server(apr_memcache_t *mc, - apr_memcache_server_t *ms); - - -/** - * Disable a Server - * @param mc The memcache client object to use - * @param ms Server to Disable - */ -APU_DECLARE(apr_status_t) apr_memcache_disable_server(apr_memcache_t *mc, - apr_memcache_server_t *ms); - -/** - * Creates a new Server Object - * @param p Pool to use - * @param host hostname of the server - * @param port port of the server - * @param min minimum number of client sockets to open - * @param smax soft maximum number of client connections to open - * @param max hard maximum number of client connections - * @param ttl time to live in seconds of a client connection - * @param ns location of the new server object - * @see apr_reslist_create - * @remark min, smax, and max are only used when APR_HAS_THREADS - */ -APU_DECLARE(apr_status_t) apr_memcache_server_create(apr_pool_t *p, - const char *host, - apr_port_t port, - apr_uint32_t min, - apr_uint32_t smax, - apr_uint32_t max, - apr_uint32_t ttl, - apr_memcache_server_t **ns); -/** - * Creates a new memcached client object - * @param p Pool to use - * @param max_servers maximum number of servers - * @param flags Not currently used - * @param mc location of the new memcache client object - */ -APU_DECLARE(apr_status_t) apr_memcache_create(apr_pool_t *p, - apr_uint16_t max_servers, - apr_uint32_t flags, - apr_memcache_t **mc); - -/** - * Gets a value from the server, allocating the value out of p - * @param mc client to use - * @param p Pool to use - * @param key null terminated string containing the key - * @param baton location of the allocated value - * @param len length of data at baton - * @param flags any flags set by the client for this key - * @return - */ -APU_DECLARE(apr_status_t) apr_memcache_getp(apr_memcache_t *mc, - apr_pool_t *p, - const char* key, - char **baton, - apr_size_t *len, - apr_uint16_t *flags); - - -/** - * Add a key to a hash for a multiget query - * if the hash (*value) is NULL it will be created - * @param data_pool pool from where the hash and their items are created from - * @param key null terminated string containing the key - * @param values hash of keys and values that this key will be added to - * @return - */ -APU_DECLARE(void) -apr_memcache_add_multget_key(apr_pool_t *data_pool, - const char* key, - apr_hash_t **values); - -/** - * Gets multiple values from the server, allocating the values out of p - * @param mc client to use - * @param temp_pool Pool used for tempoary allocations. May be cleared inside this - * call. - * @param data_pool Pool used to allocate data for the returned values. - * @param values hash of apr_memcache_value_t keyed by strings, contains the - * result of the multiget call. - * @return - */ -APU_DECLARE(apr_status_t) -apr_memcache_multgetp(apr_memcache_t *mc, - apr_pool_t *temp_pool, - apr_pool_t *data_pool, - apr_hash_t *values); - -/** - * Sets a value by key on the server - * @param mc client to use - * @param key null terminated string containing the key - * @param baton data to store on the server - * @param len length of data at baton - * @param timeout time in seconds for the data to live on the server - * @param flags any flags set by the client for this key - */ -APU_DECLARE(apr_status_t) apr_memcache_set(apr_memcache_t *mc, - const char *key, - char *baton, - const apr_size_t data_size, - apr_uint32_t timeout, - apr_uint16_t flags); - -/** - * Adds value by key on the server - * @param mc client to use - * @param key null terminated string containing the key - * @param baton data to store on the server - * @param len length of data at baton - * @param timeout time for the data to live on the server - * @param flags any flags set by the client for this key - * @return APR_SUCCESS if the key was added, APR_EEXIST if the key - * already exists on the server. - */ -APU_DECLARE(apr_status_t) apr_memcache_add(apr_memcache_t *mc, - const char *key, - char *baton, - const apr_size_t data_size, - apr_uint32_t timeout, - apr_uint16_t flags); - -/** - * Replaces value by key on the server - * @param mc client to use - * @param key null terminated string containing the key - * @param baton data to store on the server - * @param len length of data at baton - * @param timeout time for the data to live on the server - * @param flags any flags set by the client for this key - * @return APR_SUCCESS if the key was added, APR_EEXIST if the key - * did not exist on the server. - */ -APU_DECLARE(apr_status_t) apr_memcache_replace(apr_memcache_t *mc, - const char *key, - char *data, - const apr_size_t data_size, - apr_uint32_t timeout, - apr_uint16_t flags); -/** - * Deletes a key from a server - * @param mc client to use - * @param key null terminated string containing the key - * @param timeout time for the delete to stop other clients from adding - */ -APU_DECLARE(apr_status_t) apr_memcache_delete(apr_memcache_t *mc, - const char *key, - apr_uint32_t timeout); - -/** - * Increments a value - * @param mc client to use - * @param key null terminated string containing the key - * @param n number to increment by - * @param nv new value after incrmenting - */ -APU_DECLARE(apr_status_t) apr_memcache_incr(apr_memcache_t *mc, - const char *key, - apr_int32_t n, - apr_uint32_t *nv); - -/** - * Decrements a value - * @param mc client to use - * @param key null terminated string containing the key - * @param n number to decrement by - * @param nv new value after decrementing - */ -APU_DECLARE(apr_status_t) apr_memcache_decr(apr_memcache_t *mc, - const char *key, - apr_int32_t n, - apr_uint32_t *new_value); - -/** - * Query a server's version - * @param ms server to query - * @param p Pool to allocate answer from - * @param baton location to store server version string - * @param len length of the server version string - */ -APU_DECLARE(apr_status_t) apr_memcache_version(apr_memcache_server_t *ms, - apr_pool_t *p, - char **baton); - -typedef struct -{ - /** Version string of this server */ - const char *version; - /** Process id of this server process */ - apr_uint32_t pid; - /** Number of seconds this server has been running */ - apr_uint32_t uptime; - /** current UNIX time according to the server */ - apr_time_t time; - /** The size of a pointer on the current machine */ - apr_uint32_t pointer_size; - /** Accumulated user time for this process */ - apr_time_t rusage_user; - /** Accumulated system time for this process */ - apr_time_t rusage_system; - /** Current number of items stored by the server */ - apr_uint32_t curr_items; - /** Total number of items stored by this server */ - apr_uint32_t total_items; - /** Current number of bytes used by this server to store items */ - apr_uint64_t bytes; - /** Number of open connections */ - apr_uint32_t curr_connections; - /** Total number of connections opened since the server started running */ - apr_uint32_t total_connections; - /** Number of connection structures allocated by the server */ - apr_uint32_t connection_structures; - /** Cumulative number of retrieval requests */ - apr_uint32_t cmd_get; - /** Cumulative number of storage requests */ - apr_uint32_t cmd_set; - /** Number of keys that have been requested and found present */ - apr_uint32_t get_hits; - /** Number of items that have been requested and not found */ - apr_uint32_t get_misses; - /** Number of items removed from cache because they passed their - expiration time */ - apr_uint64_t evictions; - /** Total number of bytes read by this server */ - apr_uint64_t bytes_read; - /** Total number of bytes sent by this server */ - apr_uint64_t bytes_written; - /** Number of bytes this server is allowed to use for storage. */ - apr_uint32_t limit_maxbytes; - /** Number of threads the server is running (if built with threading) */ - apr_uint32_t threads; -} apr_memcache_stats_t; - -/** - * Query a server for statistics - * @param ms server to query - * @param p Pool to allocate answer from - * @param stats location of the new statistics structure - */ -APU_DECLARE(apr_status_t) apr_memcache_stats(apr_memcache_server_t *ms, - apr_pool_t *p, - apr_memcache_stats_t **stats); - - -/** @} */ - -#ifdef __cplusplus -} -#endif - -#endif /* APR_MEMCACHE_H */ diff --git a/include/apr_optional.h b/include/apr_optional.h deleted file mode 100644 index 3301d66e..00000000 --- a/include/apr_optional.h +++ /dev/null @@ -1,92 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef APR_OPTIONAL_H -#define APR_OPTIONAL_H - -#include "apu.h" -/** - * @file apr_optional.h - * @brief APR-UTIL registration of functions exported by modules - */ -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @defgroup APR_Util_Opt Optional Functions - * @ingroup APR_Util - * - * Typesafe registration and retrieval of functions that may not be present - * (i.e. functions exported by optional modules) - * @{ - */ - -/** - * The type of an optional function. - * @param name The name of the function - */ -#define APR_OPTIONAL_FN_TYPE(name) apr_OFN_##name##_t - -/** - * Declare an optional function. - * @param ret The return type of the function - * @param name The name of the function - * @param args The function arguments (including brackets) - */ -#define APR_DECLARE_OPTIONAL_FN(ret,name,args) \ -typedef ret (APR_OPTIONAL_FN_TYPE(name)) args - -/** - * XXX: This doesn't belong here, then! - * Private function! DO NOT USE! - * @internal - */ - -typedef void (apr_opt_fn_t)(void); -/** @internal */ -APU_DECLARE_NONSTD(void) apr_dynamic_fn_register(const char *szName, - apr_opt_fn_t *pfn); - -/** - * Register an optional function. This can be later retrieved, type-safely, by - * name. Like all global functions, the name must be unique. Note that, - * confusingly but correctly, the function itself can be static! - * @param name The name of the function - */ -#define APR_REGISTER_OPTIONAL_FN(name) do { \ - APR_OPTIONAL_FN_TYPE(name) *apu__opt = name; \ - apr_dynamic_fn_register(#name,(apr_opt_fn_t *)apu__opt); \ -} while (0) - -/** @internal - * Private function! DO NOT USE! - */ -APU_DECLARE(apr_opt_fn_t *) apr_dynamic_fn_retrieve(const char *szName); - -/** - * Retrieve an optional function. Returns NULL if the function is not present. - * @param name The name of the function - */ -#define APR_RETRIEVE_OPTIONAL_FN(name) \ - (APR_OPTIONAL_FN_TYPE(name) *)apr_dynamic_fn_retrieve(#name) - -/** @} */ -#ifdef __cplusplus -} -#endif - -#endif /* APR_OPTIONAL_H */ diff --git a/include/apr_optional_hooks.h b/include/apr_optional_hooks.h deleted file mode 100644 index 54bf65ef..00000000 --- a/include/apr_optional_hooks.h +++ /dev/null @@ -1,117 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file apr_optional_hooks.h - * @brief Apache optional hook functions - */ - - -#ifndef APR_OPTIONAL_HOOK_H -#define APR_OPTIONAL_HOOK_H - -#include "apr_tables.h" - -#ifdef __cplusplus -extern "C" { -#endif -/** - * @defgroup APR_Util_OPT_HOOK Optional Hook Functions - * @ingroup APR_Util_Hook - * @{ - */ -/** - * Function to implemnt the APR_OPTIONAL_HOOK Macro - * @internal - * @see APR_OPTIONAL_HOOK - * - * @param name The name of the hook - * @param pfn A pointer to a function that will be called - * @param aszPre a NULL-terminated array of strings that name modules whose hooks should precede this one - * @param aszSucc a NULL-terminated array of strings that name modules whose hooks should succeed this one - * @param nOrder an integer determining order before honouring aszPre and aszSucc (for example HOOK_MIDDLE) - */ - - -APU_DECLARE(void) apr_optional_hook_add(const char *szName,void (*pfn)(void), - const char * const *aszPre, - const char * const *aszSucc, - int nOrder); - -/** - * Hook to an optional hook. - * - * @param ns The namespace prefix of the hook functions - * @param name The name of the hook - * @param pfn A pointer to a function that will be called - * @param aszPre a NULL-terminated array of strings that name modules whose hooks should precede this one - * @param aszSucc a NULL-terminated array of strings that name modules whose hooks should succeed this one - * @param nOrder an integer determining order before honouring aszPre and aszSucc (for example HOOK_MIDDLE) - */ - -#define APR_OPTIONAL_HOOK(ns,name,pfn,aszPre,aszSucc,nOrder) do { \ - ns##_HOOK_##name##_t *apu__hook = pfn; \ - apr_optional_hook_add(#name,(void (*)(void))apu__hook,aszPre, aszSucc, nOrder); \ -} while (0) - -/** - * @internal - * @param szName - the name of the function - * @return the hook structure for a given hook - */ -APU_DECLARE(apr_array_header_t *) apr_optional_hook_get(const char *szName); - -/** - * Implement an optional hook that runs until one of the functions - * returns something other than OK or DECLINE. - * - * @param ns The namespace prefix of the hook functions - * @param link The linkage declaration prefix of the hook - * @param ret The type of the return value of the hook - * @param ret The type of the return value of the hook - * @param name The name of the hook - * @param args_decl The declaration of the arguments for the hook - * @param args_use The names for the arguments for the hook - * @param ok Success value - * @param decline Decline value - */ -#define APR_IMPLEMENT_OPTIONAL_HOOK_RUN_ALL(ns,link,ret,name,args_decl,args_use,ok,decline) \ -link##_DECLARE(ret) ns##_run_##name args_decl \ - { \ - ns##_LINK_##name##_t *pHook; \ - int n; \ - ret rv; \ - apr_array_header_t *pHookArray=apr_optional_hook_get(#name); \ -\ - if(!pHookArray) \ - return ok; \ -\ - pHook=(ns##_LINK_##name##_t *)pHookArray->elts; \ - for(n=0 ; n < pHookArray->nelts ; ++n) \ - { \ - rv=(pHook[n].pFunc)args_use; \ -\ - if(rv != ok && rv != decline) \ - return rv; \ - } \ - return ok; \ - } - -/** @} */ -#ifdef __cplusplus -} -#endif - -#endif /* APR_OPTIONAL_HOOK_H */ diff --git a/include/apr_queue.h b/include/apr_queue.h deleted file mode 100644 index 5d24c67c..00000000 --- a/include/apr_queue.h +++ /dev/null @@ -1,138 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef APR_QUEUE_H -#define APR_QUEUE_H - -/** - * @file apr_queue.h - * @brief Thread Safe FIFO bounded queue - * @note Since most implementations of the queue are backed by a condition - * variable implementation, it isn't available on systems without threads. - * Although condition variables are some times available without threads. - */ - -#include "apu.h" -#include "apr_errno.h" -#include "apr_pools.h" - -#if APR_HAS_THREADS - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/** - * @defgroup APR_Util_FIFO Thread Safe FIFO bounded queue - * @ingroup APR_Util - * @{ - */ - -/** - * opaque structure - */ -typedef struct apr_queue_t apr_queue_t; - -/** - * create a FIFO queue - * @param queue The new queue - * @param queue_capacity maximum size of the queue - * @param a pool to allocate queue from - */ -APU_DECLARE(apr_status_t) apr_queue_create(apr_queue_t **queue, - unsigned int queue_capacity, - apr_pool_t *a); - -/** - * push/add a object to the queue, blocking if the queue is already full - * - * @param queue the queue - * @param data the data - * @returns APR_EINTR the blocking was interrupted (try again) - * @returns APR_EOF the queue has been terminated - * @returns APR_SUCCESS on a successfull push - */ -APU_DECLARE(apr_status_t) apr_queue_push(apr_queue_t *queue, void *data); - -/** - * pop/get an object from the queue, blocking if the queue is already empty - * - * @param queue the queue - * @param data the data - * @returns APR_EINTR the blocking was interrupted (try again) - * @returns APR_EOF if the queue has been terminated - * @returns APR_SUCCESS on a successfull pop - */ -APU_DECLARE(apr_status_t) apr_queue_pop(apr_queue_t *queue, void **data); - -/** - * push/add a object to the queue, returning immediatly if the queue is full - * - * @param queue the queue - * @param data the data - * @returns APR_EINTR the blocking operation was interrupted (try again) - * @returns APR_EAGAIN the queue is full - * @returns APR_EOF the queue has been terminated - * @returns APR_SUCCESS on a successfull push - */ -APU_DECLARE(apr_status_t) apr_queue_trypush(apr_queue_t *queue, void *data); - -/** - * pop/get an object to the queue, returning immediatly if the queue is empty - * - * @param queue the queue - * @param data the data - * @returns APR_EINTR the blocking operation was interrupted (try again) - * @returns APR_EAGAIN the queue is empty - * @returns APR_EOF the queue has been terminated - * @returns APR_SUCCESS on a successfull push - */ -APU_DECLARE(apr_status_t) apr_queue_trypop(apr_queue_t *queue, void **data); - -/** - * returns the size of the queue. - * - * @warning this is not threadsafe, and is intended for reporting/monitoring - * of the queue. - * @param queue the queue - * @returns the size of the queue - */ -APU_DECLARE(unsigned int) apr_queue_size(apr_queue_t *queue); - -/** - * interrupt all the threads blocking on this queue. - * - * @param queue the queue - */ -APU_DECLARE(apr_status_t) apr_queue_interrupt_all(apr_queue_t *queue); - -/** - * terminate all queue, sendinging a interupt to all the - * blocking threads - * - * @param queue the queue - */ -APU_DECLARE(apr_status_t) apr_queue_term(apr_queue_t *queue); - -#ifdef __cplusplus -} -#endif - -/** @} */ - -#endif /* APR_HAS_THREADS */ - -#endif /* APRQUEUE_H */ diff --git a/include/apr_reslist.h b/include/apr_reslist.h deleted file mode 100644 index ad27d80c..00000000 --- a/include/apr_reslist.h +++ /dev/null @@ -1,174 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef APR_RESLIST_H -#define APR_RESLIST_H - -/** - * @file apr_reslist.h - * @brief APR-UTIL Resource List Routines - */ - -#include "apr.h" -#include "apu.h" -#include "apr_pools.h" -#include "apr_errno.h" -#include "apr_time.h" - -/** - * @defgroup APR_Util_RL Resource List Routines - * @ingroup APR_Util - * @{ - */ - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/** Opaque resource list object */ -typedef struct apr_reslist_t apr_reslist_t; - -/* Generic constructor called by resource list when it needs to create a - * resource. - * @param resource opaque resource - * @param param flags - * @param pool Pool - */ -typedef apr_status_t (*apr_reslist_constructor)(void **resource, void *params, - apr_pool_t *pool); - -/* Generic destructor called by resource list when it needs to destroy a - * resource. - * @param resource opaque resource - * @param param flags - * @param pool Pool - */ -typedef apr_status_t (*apr_reslist_destructor)(void *resource, void *params, - apr_pool_t *pool); - -/* Cleanup order modes */ -#define APR_RESLIST_CLEANUP_DEFAULT 0 /**< default pool cleanup */ -#define APR_RESLIST_CLEANUP_FIRST 1 /**< use pool pre cleanup */ - -/** - * Create a new resource list with the following parameters: - * @param reslist An address where the pointer to the new resource - * list will be stored. - * @param min Allowed minimum number of available resources. Zero - * creates new resources only when needed. - * @param smax Resources will be destroyed to meet this maximum - * restriction as they expire. - * @param hmax Absolute maximum limit on the number of total resources. - * @param ttl If non-zero, sets the maximum amount of time a resource - * may be available while exceeding the soft limit. - * @param con Constructor routine that is called to create a new resource. - * @param de Destructor routine that is called to destroy an expired resource. - * @param params Passed to constructor and deconstructor - * @param pool The pool from which to create this resoure list. Also the - * same pool that is passed to the constructor and destructor - * routines. - * @remark If APR has been compiled without thread support, hmax will be - * automatically set to 1 and values of min and smax will be forced to - * 1 for any non-zero value. - */ -APU_DECLARE(apr_status_t) apr_reslist_create(apr_reslist_t **reslist, - int min, int smax, int hmax, - apr_interval_time_t ttl, - apr_reslist_constructor con, - apr_reslist_destructor de, - void *params, - apr_pool_t *pool); - -/** - * Destroy the given resource list and all resources controlled by - * this list. - * FIXME: Should this block until all resources become available, - * or maybe just destroy all the free ones, or maybe destroy - * them even though they might be in use by something else? - * Currently it will abort if there are resources that haven't - * been released, so there is an assumption that all resources - * have been released to the list before calling this function. - * @param reslist The reslist to destroy - */ -APU_DECLARE(apr_status_t) apr_reslist_destroy(apr_reslist_t *reslist); - -/** - * Retrieve a resource from the list, creating a new one if necessary. - * If we have met our maximum number of resources, we will block - * until one becomes available. - */ -APU_DECLARE(apr_status_t) apr_reslist_acquire(apr_reslist_t *reslist, - void **resource); - -/** - * Return a resource back to the list of available resources. - */ -APU_DECLARE(apr_status_t) apr_reslist_release(apr_reslist_t *reslist, - void *resource); - -/** - * Set the timeout the acquire will wait for a free resource - * when the maximum number of resources is exceeded. - * @param reslist The resource list. - * @param timeout Timeout to wait. The zero waits forewer. - */ -APU_DECLARE(void) apr_reslist_timeout_set(apr_reslist_t *reslist, - apr_interval_time_t timeout); - -/** - * Return the number of outstanding resources. - * @param reslist The resource list. - */ -APU_DECLARE(apr_uint32_t) apr_reslist_acquired_count(apr_reslist_t *reslist); - -/** - * Invalidate a resource in the pool - e.g. a database connection - * that returns a "lost connection" error and can't be restored. - * Use this instead of apr_reslist_release if the resource is bad. - */ -APU_DECLARE(apr_status_t) apr_reslist_invalidate(apr_reslist_t *reslist, - void *resource); - -/** - * Perform routine maintenance on the resource list. This call - * may instantiate new resources or expire old resources. - * @param reslist The resource list. - */ -APU_DECLARE(apr_status_t) apr_reslist_maintain(apr_reslist_t *reslist); - -/** - * Set reslist cleanup order. - * @param reslist The resource list. - * @param mode Cleanup order mode - * <PRE> - * APR_RESLIST_CLEANUP_DEFAULT default pool cleanup order - * APR_RESLIST_CLEANUP_FIRST use pool pre cleanup - * </PRE> - * @remark If APR_RESLIST_CLEANUP_FIRST is used the destructors will - * be called before child pools of the pool used to create the reslist - * are destroyed. This allows to explicitly destroy the child pools - * inside reslist destructors. - */ -APU_DECLARE(void) apr_reslist_cleanup_order_set(apr_reslist_t *reslist, - apr_uint32_t mode); - -#ifdef __cplusplus -} -#endif - -/** @} */ - -#endif /* ! APR_RESLIST_H */ diff --git a/include/apr_rmm.h b/include/apr_rmm.h deleted file mode 100644 index 976fe9c5..00000000 --- a/include/apr_rmm.h +++ /dev/null @@ -1,137 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef APR_RMM_H -#define APR_RMM_H -/** - * @file apr_rmm.h - * @brief APR-UTIL Relocatable Memory Management Routines - */ -/** - * @defgroup APR_Util_RMM Relocatable Memory Management Routines - * @ingroup APR_Util - * @{ - */ - -#include "apr.h" -#include "apr_pools.h" -#include "apr_errno.h" -#include "apu.h" -#include "apr_anylock.h" - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/** Structure to access Relocatable, Managed Memory */ -typedef struct apr_rmm_t apr_rmm_t; - -/** Fundamental allocation unit, within a specific apr_rmm_t */ -typedef apr_size_t apr_rmm_off_t; - -/** - * Initialize a relocatable memory block to be managed by the apr_rmm API. - * @param rmm The relocatable memory block - * @param lock An apr_anylock_t of the appropriate type of lock, or NULL - * if no locking is required. - * @param membuf The block of relocatable memory to be managed - * @param memsize The size of relocatable memory block to be managed - * @param cont The pool to use for local storage and management - * @remark Both @param membuf and @param memsize must be aligned - * (for instance using APR_ALIGN_DEFAULT). - */ -APU_DECLARE(apr_status_t) apr_rmm_init(apr_rmm_t **rmm, apr_anylock_t *lock, - void *membuf, apr_size_t memsize, - apr_pool_t *cont); - -/** - * Destroy a managed memory block. - * @param rmm The relocatable memory block to destroy - */ -APU_DECLARE(apr_status_t) apr_rmm_destroy(apr_rmm_t *rmm); - -/** - * Attach to a relocatable memory block already managed by the apr_rmm API. - * @param rmm The relocatable memory block - * @param lock An apr_anylock_t of the appropriate type of lock - * @param membuf The block of relocatable memory already under management - * @param cont The pool to use for local storage and management - */ -APU_DECLARE(apr_status_t) apr_rmm_attach(apr_rmm_t **rmm, apr_anylock_t *lock, - void *membuf, apr_pool_t *cont); - -/** - * Detach from the managed block of memory. - * @param rmm The relocatable memory block to detach from - */ -APU_DECLARE(apr_status_t) apr_rmm_detach(apr_rmm_t *rmm); - -/** - * Allocate memory from the block of relocatable memory. - * @param rmm The relocatable memory block - * @param reqsize How much memory to allocate - */ -APU_DECLARE(apr_rmm_off_t) apr_rmm_malloc(apr_rmm_t *rmm, apr_size_t reqsize); - -/** - * Realloc memory from the block of relocatable memory. - * @param rmm The relocatable memory block - * @param entity The memory allocation to realloc - * @param reqsize The new size - */ -APU_DECLARE(apr_rmm_off_t) apr_rmm_realloc(apr_rmm_t *rmm, void *entity, apr_size_t reqsize); - -/** - * Allocate memory from the block of relocatable memory and initialize it to zero. - * @param rmm The relocatable memory block - * @param reqsize How much memory to allocate - */ -APU_DECLARE(apr_rmm_off_t) apr_rmm_calloc(apr_rmm_t *rmm, apr_size_t reqsize); - -/** - * Free allocation returned by apr_rmm_malloc or apr_rmm_calloc. - * @param rmm The relocatable memory block - * @param entity The memory allocation to free - */ -APU_DECLARE(apr_status_t) apr_rmm_free(apr_rmm_t *rmm, apr_rmm_off_t entity); - -/** - * Retrieve the physical address of a relocatable allocation of memory - * @param rmm The relocatable memory block - * @param entity The memory allocation to free - * @return address The address, aligned with APR_ALIGN_DEFAULT. - */ -APU_DECLARE(void *) apr_rmm_addr_get(apr_rmm_t *rmm, apr_rmm_off_t entity); - -/** - * Compute the offset of a relocatable allocation of memory - * @param rmm The relocatable memory block - * @param entity The physical address to convert to an offset - */ -APU_DECLARE(apr_rmm_off_t) apr_rmm_offset_get(apr_rmm_t *rmm, void *entity); - -/** - * Compute the required overallocation of memory needed to fit n allocs - * @param n The number of alloc/calloc regions desired - */ -APU_DECLARE(apr_size_t) apr_rmm_overhead_get(int n); - -#ifdef __cplusplus -} -#endif -/** @} */ -#endif /* ! APR_RMM_H */ - diff --git a/include/apr_sdbm.h b/include/apr_sdbm.h deleted file mode 100644 index 5759508b..00000000 --- a/include/apr_sdbm.h +++ /dev/null @@ -1,176 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * sdbm - ndbm work-alike hashed database library - * based on Per-Ake Larson's Dynamic Hashing algorithms. BIT 18 (1978). - * author: oz@nexus.yorku.ca - * status: ex-public domain - */ - -#ifndef APR_SDBM_H -#define APR_SDBM_H - -#include "apu.h" -#include "apr_errno.h" -#include "apr_file_io.h" /* for apr_fileperms_t */ - -/** - * @file apr_sdbm.h - * @brief apr-util SDBM library - */ -/** - * @defgroup APR_Util_DBM_SDBM SDBM library - * @ingroup APR_Util_DBM - * @{ - */ - -/** - * Structure for referencing an sdbm - */ -typedef struct apr_sdbm_t apr_sdbm_t; - -/** - * Structure for referencing the datum record within an sdbm - */ -typedef struct { - /** pointer to the data stored/retrieved */ - char *dptr; - /** size of data */ - /* apr_ssize_t for release 2.0??? */ - int dsize; -} apr_sdbm_datum_t; - -/* The extensions used for the database files */ -/** SDBM Directory file extension */ -#define APR_SDBM_DIRFEXT ".dir" -/** SDBM page file extension */ -#define APR_SDBM_PAGFEXT ".pag" - -/* flags to sdbm_store */ -#define APR_SDBM_INSERT 0 /**< Insert */ -#define APR_SDBM_REPLACE 1 /**< Replace */ -#define APR_SDBM_INSERTDUP 2 /**< Insert with duplicates */ - -/** - * Open an sdbm database by file name - * @param db The newly opened database - * @param name The sdbm file to open - * @param mode The flag values (APR_READ and APR_BINARY flags are implicit) - * <PRE> - * APR_WRITE open for read-write access - * APR_CREATE create the sdbm if it does not exist - * APR_TRUNCATE empty the contents of the sdbm - * APR_EXCL fail for APR_CREATE if the file exists - * APR_DELONCLOSE delete the sdbm when closed - * APR_SHARELOCK support locking across process/machines - * </PRE> - * @param perms Permissions to apply to if created - * @param p The pool to use when creating the sdbm - * @remark The sdbm name is not a true file name, as sdbm appends suffixes - * for seperate data and index files. - */ -APU_DECLARE(apr_status_t) apr_sdbm_open(apr_sdbm_t **db, const char *name, - apr_int32_t mode, - apr_fileperms_t perms, apr_pool_t *p); - -/** - * Close an sdbm file previously opened by apr_sdbm_open - * @param db The database to close - */ -APU_DECLARE(apr_status_t) apr_sdbm_close(apr_sdbm_t *db); - -/** - * Lock an sdbm database for concurency of multiple operations - * @param db The database to lock - * @param type The lock type - * <PRE> - * APR_FLOCK_SHARED - * APR_FLOCK_EXCLUSIVE - * </PRE> - * @remark Calls to apr_sdbm_lock may be nested. All apr_sdbm functions - * perform implicit locking. Since an APR_FLOCK_SHARED lock cannot be - * portably promoted to an APR_FLOCK_EXCLUSIVE lock, apr_sdbm_store and - * apr_sdbm_delete calls will fail if an APR_FLOCK_SHARED lock is held. - * The apr_sdbm_lock call requires the database to be opened with the - * APR_SHARELOCK mode value. - */ -APU_DECLARE(apr_status_t) apr_sdbm_lock(apr_sdbm_t *db, int type); - -/** - * Release an sdbm lock previously aquired by apr_sdbm_lock - * @param db The database to unlock - */ -APU_DECLARE(apr_status_t) apr_sdbm_unlock(apr_sdbm_t *db); - -/** - * Fetch an sdbm record value by key - * @param db The database - * @param value The value datum retrieved for this record - * @param key The key datum to find this record - */ -APU_DECLARE(apr_status_t) apr_sdbm_fetch(apr_sdbm_t *db, - apr_sdbm_datum_t *value, - apr_sdbm_datum_t key); - -/** - * Store an sdbm record value by key - * @param db The database - * @param key The key datum to store this record by - * @param value The value datum to store in this record - * @param opt The method used to store the record - * <PRE> - * APR_SDBM_INSERT return an error if the record exists - * APR_SDBM_REPLACE overwrite any existing record for key - * </PRE> - */ -APU_DECLARE(apr_status_t) apr_sdbm_store(apr_sdbm_t *db, apr_sdbm_datum_t key, - apr_sdbm_datum_t value, int opt); - -/** - * Delete an sdbm record value by key - * @param db The database - * @param key The key datum of the record to delete - * @remark It is not an error to delete a non-existent record. - */ -APU_DECLARE(apr_status_t) apr_sdbm_delete(apr_sdbm_t *db, - const apr_sdbm_datum_t key); - -/** - * Retrieve the first record key from a dbm - * @param db The database - * @param key The key datum of the first record - * @remark The keys returned are not ordered. To traverse the list of keys - * for an sdbm opened with APR_SHARELOCK, the caller must use apr_sdbm_lock - * prior to retrieving the first record, and hold the lock until after the - * last call to apr_sdbm_nextkey. - */ -APU_DECLARE(apr_status_t) apr_sdbm_firstkey(apr_sdbm_t *db, apr_sdbm_datum_t *key); - -/** - * Retrieve the next record key from an sdbm - * @param db The database - * @param key The key datum of the next record - */ -APU_DECLARE(apr_status_t) apr_sdbm_nextkey(apr_sdbm_t *db, apr_sdbm_datum_t *key); - -/** - * Returns true if the sdbm database opened for read-only access - * @param db The database to test - */ -APU_DECLARE(int) apr_sdbm_rdonly(apr_sdbm_t *db); -/** @} */ -#endif /* APR_SDBM_H */ diff --git a/include/apr_sha1.h b/include/apr_sha1.h deleted file mode 100644 index 2a4edf36..00000000 --- a/include/apr_sha1.h +++ /dev/null @@ -1,121 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* NIST Secure Hash Algorithm - * heavily modified by Uwe Hollerbach uh@alumni.caltech edu - * from Peter C. Gutmann's implementation as found in - * Applied Cryptography by Bruce Schneier - * This code is hereby placed in the public domain - */ - -#ifndef APR_SHA1_H -#define APR_SHA1_H - -#include "apu.h" -#include "apr_general.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @file apr_sha1.h - * @brief APR-UTIL SHA1 library - */ - -/** size of the SHA1 DIGEST */ -#define APR_SHA1_DIGESTSIZE 20 - -/** - * Define the Magic String prefix that identifies a password as being - * hashed using our algorithm. - */ -#define APR_SHA1PW_ID "{SHA}" - -/** length of the SHA Password */ -#define APR_SHA1PW_IDLEN 5 - -/** @see apr_sha1_ctx_t */ -typedef struct apr_sha1_ctx_t apr_sha1_ctx_t; - -/** - * SHA1 context structure - */ -struct apr_sha1_ctx_t { - /** message digest */ - apr_uint32_t digest[5]; - /** 64-bit bit counts */ - apr_uint32_t count_lo, count_hi; - /** SHA data buffer */ - apr_uint32_t data[16]; - /** unprocessed amount in data */ - int local; -}; - -/** - * Provide a means to SHA1 crypt/encode a plaintext password in a way which - * makes password file compatible with those commonly use in netscape web - * and ldap installations. - * @param clear The plaintext password - * @param len The length of the plaintext password - * @param out The encrypted/encoded password - * @note SHA1 support is useful for migration purposes, but is less - * secure than Apache's password format, since Apache's (MD5) - * password format uses a random eight character salt to generate - * one of many possible hashes for the same password. Netscape - * uses plain SHA1 without a salt, so the same password - * will always generate the same hash, making it easier - * to break since the search space is smaller. - */ -APU_DECLARE(void) apr_sha1_base64(const char *clear, int len, char *out); - -/** - * Initialize the SHA digest - * @param context The SHA context to initialize - */ -APU_DECLARE(void) apr_sha1_init(apr_sha1_ctx_t *context); - -/** - * Update the SHA digest - * @param context The SHA1 context to update - * @param input The buffer to add to the SHA digest - * @param inputLen The length of the input buffer - */ -APU_DECLARE(void) apr_sha1_update(apr_sha1_ctx_t *context, const char *input, - unsigned int inputLen); - -/** - * Update the SHA digest with binary data - * @param context The SHA1 context to update - * @param input The buffer to add to the SHA digest - * @param inputLen The length of the input buffer - */ -APU_DECLARE(void) apr_sha1_update_binary(apr_sha1_ctx_t *context, - const unsigned char *input, - unsigned int inputLen); - -/** - * Finish computing the SHA digest - * @param digest the output buffer in which to store the digest - * @param context The context to finalize - */ -APU_DECLARE(void) apr_sha1_final(unsigned char digest[APR_SHA1_DIGESTSIZE], - apr_sha1_ctx_t *context); - -#ifdef __cplusplus -} -#endif - -#endif /* APR_SHA1_H */ diff --git a/include/apr_strmatch.h b/include/apr_strmatch.h deleted file mode 100644 index 53fadad5..00000000 --- a/include/apr_strmatch.h +++ /dev/null @@ -1,81 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef APR_STRMATCH_H -#define APR_STRMATCH_H -/** - * @file apr_strmatch.h - * @brief APR-UTIL string matching routines - */ - -#include "apu.h" -#include "apr_pools.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @defgroup APR_Util_StrMatch String matching routines - * @ingroup APR_Util - * @{ - */ - -/** @see apr_strmatch_pattern */ -typedef struct apr_strmatch_pattern apr_strmatch_pattern; - -/** - * Precompiled search pattern - */ -struct apr_strmatch_pattern { - /** Function called to compare */ - const char *(*compare)(const apr_strmatch_pattern *this_pattern, - const char *s, apr_size_t slen); - const char *pattern; /**< Current pattern */ - apr_size_t length; /**< Current length */ - void *context; /**< hook to add precomputed metadata */ -}; - -#if defined(DOXYGEN) -/** - * Search for a precompiled pattern within a string - * @param pattern The pattern - * @param s The string in which to search for the pattern - * @param slen The length of s (excluding null terminator) - * @return A pointer to the first instance of the pattern in s, or - * NULL if not found - */ -APU_DECLARE(const char *) apr_strmatch(const apr_strmatch_pattern *pattern, - const char *s, apr_size_t slen); -#else -#define apr_strmatch(pattern, s, slen) (*((pattern)->compare))((pattern), (s), (slen)) -#endif - -/** - * Precompile a pattern for matching using the Boyer-Moore-Horspool algorithm - * @param p The pool from which to allocate the pattern - * @param s The pattern string - * @param case_sensitive Whether the matching should be case-sensitive - * @return a pointer to the compiled pattern, or NULL if compilation fails - */ -APU_DECLARE(const apr_strmatch_pattern *) apr_strmatch_precompile(apr_pool_t *p, const char *s, int case_sensitive); - -/** @} */ -#ifdef __cplusplus -} -#endif - -#endif /* !APR_STRMATCH_H */ diff --git a/include/apr_thread_pool.h b/include/apr_thread_pool.h deleted file mode 100644 index cbf382b3..00000000 --- a/include/apr_thread_pool.h +++ /dev/null @@ -1,299 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - * implied. See the License for the specific language governing - * permissions and limitations under the License. - */ - -#ifndef APU_THREAD_POOL_H -#define APU_THREAD_POOL_H - -#include "apu.h" -#include "apr_thread_proc.h" - -/** - * @file apr_thread_pool.h - * @brief APR Thread Pool Library - - * @remarks This library implements a thread pool using apr_thread_t. A thread - * pool is a set of threads that can be created in advance or on demand until a - * maximum number. When a task is scheduled, the thread pool will find an idle - * thread to handle the task. In case all existing threads are busy and the - * number of tasks in the queue is higher than the adjustable threshold, the - * pool will try to create a new thread to serve the task if the maximum number - * has not been reached. Otherwise, the task will be put into a queue based on - * priority, which can be valued from 0 to 255, with higher values being served - * first. If there are tasks with the same priority, the new task might be put at - * the top or at the bottom - it depends on which function is used to put the task. - * - * @remarks There may be the case where the thread pool can use up to the maximum - * number of threads at peak load, but having those threads idle afterwards. A - * maximum number of idle threads can be set so that the extra idling threads will - * be terminated to save system resources. - */ -#if APR_HAS_THREADS - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/** - * @defgroup APR_Util_TP Thread Pool routines - * @ingroup APR_Util - * @{ - */ - -/** Opaque Thread Pool structure. */ -typedef struct apr_thread_pool apr_thread_pool_t; - -#define APR_THREAD_TASK_PRIORITY_LOWEST 0 -#define APR_THREAD_TASK_PRIORITY_LOW 63 -#define APR_THREAD_TASK_PRIORITY_NORMAL 127 -#define APR_THREAD_TASK_PRIORITY_HIGH 191 -#define APR_THREAD_TASK_PRIORITY_HIGHEST 255 - -/** - * Create a thread pool - * @param me The pointer in which to return the newly created apr_thread_pool - * object, or NULL if thread pool creation fails. - * @param init_threads The number of threads to be created initially, this number - * will also be used as the initial value for the maximum number of idle threads. - * @param max_threads The maximum number of threads that can be created - * @param pool The pool to use - * @return APR_SUCCESS if the thread pool was created successfully. Otherwise, - * the error code. - */ -APU_DECLARE(apr_status_t) apr_thread_pool_create(apr_thread_pool_t **me, - apr_size_t init_threads, - apr_size_t max_threads, - apr_pool_t *pool); - -/** - * Destroy the thread pool and stop all the threads - * @return APR_SUCCESS if all threads are stopped. - */ -APU_DECLARE(apr_status_t) apr_thread_pool_destroy(apr_thread_pool_t *me); - -/** - * Schedule a task to the bottom of the tasks of same priority. - * @param me The thread pool - * @param func The task function - * @param param The parameter for the task function - * @param priority The priority of the task. - * @param owner Owner of this task. - * @return APR_SUCCESS if the task had been scheduled successfully - */ -APU_DECLARE(apr_status_t) apr_thread_pool_push(apr_thread_pool_t *me, - apr_thread_start_t func, - void *param, - apr_byte_t priority, - void *owner); -/** - * Schedule a task to be run after a delay - * @param me The thread pool - * @param func The task function - * @param param The parameter for the task function - * @param time Time in microseconds - * @param owner Owner of this task. - * @return APR_SUCCESS if the task had been scheduled successfully - */ -APU_DECLARE(apr_status_t) apr_thread_pool_schedule(apr_thread_pool_t *me, - apr_thread_start_t func, - void *param, - apr_interval_time_t time, - void *owner); - -/** - * Schedule a task to the top of the tasks of same priority. - * @param me The thread pool - * @param func The task function - * @param param The parameter for the task function - * @param priority The priority of the task. - * @param owner Owner of this task. - * @return APR_SUCCESS if the task had been scheduled successfully - */ -APU_DECLARE(apr_status_t) apr_thread_pool_top(apr_thread_pool_t *me, - apr_thread_start_t func, - void *param, - apr_byte_t priority, - void *owner); - -/** - * Cancel tasks submitted by the owner. If there is any task from the owner that - * is currently running, the function will spin until the task finished. - * @param me The thread pool - * @param owner Owner of the task - * @return APR_SUCCESS if the task has been cancelled successfully - * @note The task function should not be calling cancel, otherwise the function - * may get stuck forever. The function assert if it detect such a case. - */ -APU_DECLARE(apr_status_t) apr_thread_pool_tasks_cancel(apr_thread_pool_t *me, - void *owner); - -/** - * Get the current number of tasks waiting in the queue - * @param me The thread pool - * @return Number of tasks in the queue - */ -APU_DECLARE(apr_size_t) apr_thread_pool_tasks_count(apr_thread_pool_t *me); - -/** - * Get the current number of scheduled tasks waiting in the queue - * @param me The thread pool - * @return Number of scheduled tasks in the queue - */ -APU_DECLARE(apr_size_t) apr_thread_pool_scheduled_tasks_count(apr_thread_pool_t *me); - -/** - * Get the current number of threads - * @param me The thread pool - * @return Total number of threads - */ -APU_DECLARE(apr_size_t) apr_thread_pool_threads_count(apr_thread_pool_t *me); - -/** - * Get the current number of busy threads - * @param me The thread pool - * @return Number of busy threads - */ -APU_DECLARE(apr_size_t) apr_thread_pool_busy_count(apr_thread_pool_t *me); - -/** - * Get the current number of idle threads - * @param me The thread pool - * @return Number of idle threads - */ -APU_DECLARE(apr_size_t) apr_thread_pool_idle_count(apr_thread_pool_t *me); - -/** - * Access function for the maximum number of idle threads. Number of current - * idle threads will be reduced to the new limit. - * @param me The thread pool - * @param cnt The number - * @return The number of threads that were stopped. - */ -APU_DECLARE(apr_size_t) apr_thread_pool_idle_max_set(apr_thread_pool_t *me, - apr_size_t cnt); - -/** - * Get number of tasks that have run - * @param me The thread pool - * @return Number of tasks that have run - */ -APU_DECLARE(apr_size_t) - apr_thread_pool_tasks_run_count(apr_thread_pool_t * me); - -/** - * Get high water mark of the number of tasks waiting to run - * @param me The thread pool - * @return High water mark of tasks waiting to run - */ -APU_DECLARE(apr_size_t) - apr_thread_pool_tasks_high_count(apr_thread_pool_t * me); - -/** - * Get high water mark of the number of threads - * @param me The thread pool - * @return High water mark of threads in thread pool - */ -APU_DECLARE(apr_size_t) - apr_thread_pool_threads_high_count(apr_thread_pool_t * me); - -/** - * Get the number of idle threads that were destroyed after timing out - * @param me The thread pool - * @return Number of idle threads that timed out - */ -APU_DECLARE(apr_size_t) - apr_thread_pool_threads_idle_timeout_count(apr_thread_pool_t * me); - -/** - * Access function for the maximum number of idle threads - * @param me The thread pool - * @return The current maximum number - */ -APU_DECLARE(apr_size_t) apr_thread_pool_idle_max_get(apr_thread_pool_t *me); - -/** - * Access function for the maximum number of threads. - * @param me The thread pool - * @param cnt Number of threads - * @return The original maximum number of threads - */ -APU_DECLARE(apr_size_t) apr_thread_pool_thread_max_set(apr_thread_pool_t *me, - apr_size_t cnt); - -/** - * Access function for the maximum wait time (in microseconds) of an - * idling thread that exceeds the maximum number of idling threads. - * A non-zero value allows for the reaping of idling threads to shrink - * over time. Which helps reduce thrashing. - * @param me The thread pool - * @param timeout The number of microseconds an idle thread should wait - * till it reaps itself - * @return The original maximum wait time - */ -APU_DECLARE(apr_interval_time_t) - apr_thread_pool_idle_wait_set(apr_thread_pool_t * me, - apr_interval_time_t timeout); - -/** - * Access function for the maximum wait time (in microseconds) of an - * idling thread that exceeds the maximum number of idling threads - * @param me The thread pool - * @return The current maximum wait time - */ -APU_DECLARE(apr_interval_time_t) - apr_thread_pool_idle_wait_get(apr_thread_pool_t * me); - -/** - * Access function for the maximum number of threads - * @param me The thread pool - * @return The current maximum number - */ -APU_DECLARE(apr_size_t) apr_thread_pool_thread_max_get(apr_thread_pool_t *me); - -/** - * Access function for the threshold of tasks in queue to trigger a new thread. - * @param me The thread pool - * @param cnt The new threshold - * @return The original threshold - */ -APU_DECLARE(apr_size_t) apr_thread_pool_threshold_set(apr_thread_pool_t *me, - apr_size_t val); - -/** - * Access function for the threshold of tasks in queue to trigger a new thread. - * @param me The thread pool - * @return The current threshold - */ -APU_DECLARE(apr_size_t) apr_thread_pool_threshold_get(apr_thread_pool_t * me); - -/** - * Get owner of the task currently been executed by the thread. - * @param thd The thread is executing a task - * @param owner Pointer to receive owner of the task. - * @return APR_SUCCESS if the owner is retrieved successfully - */ -APU_DECLARE(apr_status_t) apr_thread_pool_task_owner_get(apr_thread_t *thd, - void **owner); - -/** @} */ - -#ifdef __cplusplus -} -#endif - -#endif /* APR_HAS_THREADS */ -#endif /* !APR_THREAD_POOL_H */ diff --git a/include/apr_uri.h b/include/apr_uri.h deleted file mode 100644 index 02908a9d..00000000 --- a/include/apr_uri.h +++ /dev/null @@ -1,178 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * apr_uri.h: External Interface of apr_uri.c - */ - -/** - * @file apr_uri.h - * @brief APR-UTIL URI Routines - */ - -#ifndef APR_URI_H -#define APR_URI_H - -#include "apu.h" - -#include "apr_network_io.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @defgroup APR_Util_URI URI - * @ingroup APR_Util - * @{ - */ - -#define APR_URI_FTP_DEFAULT_PORT 21 /**< default FTP port */ -#define APR_URI_SSH_DEFAULT_PORT 22 /**< default SSH port */ -#define APR_URI_TELNET_DEFAULT_PORT 23 /**< default telnet port */ -#define APR_URI_GOPHER_DEFAULT_PORT 70 /**< default Gopher port */ -#define APR_URI_HTTP_DEFAULT_PORT 80 /**< default HTTP port */ -#define APR_URI_POP_DEFAULT_PORT 110 /**< default POP port */ -#define APR_URI_NNTP_DEFAULT_PORT 119 /**< default NNTP port */ -#define APR_URI_IMAP_DEFAULT_PORT 143 /**< default IMAP port */ -#define APR_URI_PROSPERO_DEFAULT_PORT 191 /**< default Prospero port */ -#define APR_URI_WAIS_DEFAULT_PORT 210 /**< default WAIS port */ -#define APR_URI_LDAP_DEFAULT_PORT 389 /**< default LDAP port */ -#define APR_URI_HTTPS_DEFAULT_PORT 443 /**< default HTTPS port */ -#define APR_URI_RTSP_DEFAULT_PORT 554 /**< default RTSP port */ -#define APR_URI_SNEWS_DEFAULT_PORT 563 /**< default SNEWS port */ -#define APR_URI_ACAP_DEFAULT_PORT 674 /**< default ACAP port */ -#define APR_URI_NFS_DEFAULT_PORT 2049 /**< default NFS port */ -#define APR_URI_TIP_DEFAULT_PORT 3372 /**< default TIP port */ -#define APR_URI_SIP_DEFAULT_PORT 5060 /**< default SIP port */ - -/** Flags passed to unparse_uri_components(): */ -/** suppress "scheme://user\@site:port" */ -#define APR_URI_UNP_OMITSITEPART (1U<<0) -/** Just omit user */ -#define APR_URI_UNP_OMITUSER (1U<<1) -/** Just omit password */ -#define APR_URI_UNP_OMITPASSWORD (1U<<2) -/** omit "user:password\@" part */ -#define APR_URI_UNP_OMITUSERINFO (APR_URI_UNP_OMITUSER | \ - APR_URI_UNP_OMITPASSWORD) -/** Show plain text password (default: show XXXXXXXX) */ -#define APR_URI_UNP_REVEALPASSWORD (1U<<3) -/** Show "scheme://user\@site:port" only */ -#define APR_URI_UNP_OMITPATHINFO (1U<<4) -/** Omit the "?queryarg" from the path */ -#define APR_URI_UNP_OMITQUERY (1U<<5) - -/** @see apr_uri_t */ -typedef struct apr_uri_t apr_uri_t; - -/** - * A structure to encompass all of the fields in a uri - */ -struct apr_uri_t { - /** scheme ("http"/"ftp"/...) */ - char *scheme; - /** combined [user[:password]\@]host[:port] */ - char *hostinfo; - /** user name, as in http://user:passwd\@host:port/ */ - char *user; - /** password, as in http://user:passwd\@host:port/ */ - char *password; - /** hostname from URI (or from Host: header) */ - char *hostname; - /** port string (integer representation is in "port") */ - char *port_str; - /** the request path (or NULL if only scheme://host was given) */ - char *path; - /** Everything after a '?' in the path, if present */ - char *query; - /** Trailing "#fragment" string, if present */ - char *fragment; - - /** structure returned from gethostbyname() */ - struct hostent *hostent; - - /** The port number, numeric, valid only if port_str != NULL */ - apr_port_t port; - - /** has the structure been initialized */ - unsigned is_initialized:1; - - /** has the DNS been looked up yet */ - unsigned dns_looked_up:1; - /** has the dns been resolved yet */ - unsigned dns_resolved:1; -}; - -/* apr_uri.c */ -/** - * Return the default port for a given scheme. The schemes recognized are - * http, ftp, https, gopher, wais, nntp, snews, and prospero - * @param scheme_str The string that contains the current scheme - * @return The default port for this scheme - */ -APU_DECLARE(apr_port_t) apr_uri_port_of_scheme(const char *scheme_str); - -/** - * Unparse a apr_uri_t structure to an URI string. Optionally - * suppress the password for security reasons. - * @param p The pool to allocate out of - * @param uptr All of the parts of the uri - * @param flags How to unparse the uri. One of: - * <PRE> - * APR_URI_UNP_OMITSITEPART Suppress "scheme://user\@site:port" - * APR_URI_UNP_OMITUSER Just omit user - * APR_URI_UNP_OMITPASSWORD Just omit password - * APR_URI_UNP_OMITUSERINFO Omit "user:password\@" part - * APR_URI_UNP_REVEALPASSWORD Show plain text password (default: show XXXXXXXX) - * APR_URI_UNP_OMITPATHINFO Show "scheme://user\@site:port" only - * APR_URI_UNP_OMITQUERY Omit "?queryarg" or "#fragment" - * </PRE> - * @return The uri as a string - */ -APU_DECLARE(char *) apr_uri_unparse(apr_pool_t *p, - const apr_uri_t *uptr, - unsigned flags); - -/** - * Parse a given URI, fill in all supplied fields of a apr_uri_t - * structure. This eliminates the necessity of extracting host, port, - * path, query info repeatedly in the modules. - * @param p The pool to allocate out of - * @param uri The uri to parse - * @param uptr The apr_uri_t to fill out - * @return APR_SUCCESS for success or error code - */ -APU_DECLARE(apr_status_t) apr_uri_parse(apr_pool_t *p, const char *uri, - apr_uri_t *uptr); - -/** - * Special case for CONNECT parsing: it comes with the hostinfo part only - * @param p The pool to allocate out of - * @param hostinfo The hostinfo string to parse - * @param uptr The apr_uri_t to fill out - * @return APR_SUCCESS for success or error code - */ -APU_DECLARE(apr_status_t) apr_uri_parse_hostinfo(apr_pool_t *p, - const char *hostinfo, - apr_uri_t *uptr); - -/** @} */ -#ifdef __cplusplus -} -#endif - -#endif /* APR_URI_H */ diff --git a/include/apr_uuid.h b/include/apr_uuid.h deleted file mode 100644 index 5312a9f6..00000000 --- a/include/apr_uuid.h +++ /dev/null @@ -1,76 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @file apr_uuid.h - * @brief APR UUID library - */ -#ifndef APR_UUID_H -#define APR_UUID_H - -#include "apu.h" -#include "apr_errno.h" - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/** - * @defgroup APR_UUID UUID Handling - * @ingroup APR - * @{ - */ - -/** - * we represent a UUID as a block of 16 bytes. - */ - -typedef struct { - unsigned char data[16]; /**< the actual UUID */ -} apr_uuid_t; - -/** UUIDs are formatted as: 00112233-4455-6677-8899-AABBCCDDEEFF */ -#define APR_UUID_FORMATTED_LENGTH 36 - - -/** - * Generate and return a (new) UUID - * @param uuid The resulting UUID - */ -APU_DECLARE(void) apr_uuid_get(apr_uuid_t *uuid); - -/** - * Format a UUID into a string, following the standard format - * @param buffer The buffer to place the formatted UUID string into. It must - * be at least APR_UUID_FORMATTED_LENGTH + 1 bytes long to hold - * the formatted UUID and a null terminator - * @param uuid The UUID to format - */ -APU_DECLARE(void) apr_uuid_format(char *buffer, const apr_uuid_t *uuid); - -/** - * Parse a standard-format string into a UUID - * @param uuid The resulting UUID - * @param uuid_str The formatted UUID - */ -APU_DECLARE(apr_status_t) apr_uuid_parse(apr_uuid_t *uuid, const char *uuid_str); - -/** @} */ -#ifdef __cplusplus -} -#endif - -#endif /* APR_UUID_H */ diff --git a/include/apr_xlate.h b/include/apr_xlate.h deleted file mode 100644 index 32636685..00000000 --- a/include/apr_xlate.h +++ /dev/null @@ -1,163 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef APR_XLATE_H -#define APR_XLATE_H - -#include "apu.h" -#include "apr_pools.h" -#include "apr_errno.h" - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/** - * @file apr_xlate.h - * @brief APR I18N translation library - */ - -/** - * @defgroup APR_XLATE I18N translation library - * @ingroup APR - * @{ - */ -/** Opaque translation buffer */ -typedef struct apr_xlate_t apr_xlate_t; - -/** - * Set up for converting text from one charset to another. - * @param convset The handle to be filled in by this function - * @param topage The name of the target charset - * @param frompage The name of the source charset - * @param pool The pool to use - * @remark - * Specify APR_DEFAULT_CHARSET for one of the charset - * names to indicate the charset of the source code at - * compile time. This is useful if there are literal - * strings in the source code which must be translated - * according to the charset of the source code. - * APR_DEFAULT_CHARSET is not useful if the source code - * of the caller was not encoded in the same charset as - * APR at compile time. - * - * @remark - * Specify APR_LOCALE_CHARSET for one of the charset - * names to indicate the charset of the current locale. - * - * @remark - * Return APR_EINVAL if unable to procure a convset, or APR_ENOTIMPL - * if charset transcoding is not available in this instance of - * apr-util at all (i.e., APR_HAS_XLATE is undefined). - */ -APU_DECLARE(apr_status_t) apr_xlate_open(apr_xlate_t **convset, - const char *topage, - const char *frompage, - apr_pool_t *pool); - -/** - * This is to indicate the charset of the sourcecode at compile time - * names to indicate the charset of the source code at - * compile time. This is useful if there are literal - * strings in the source code which must be translated - * according to the charset of the source code. - */ -#define APR_DEFAULT_CHARSET (const char *)0 -/** - * To indicate charset names of the current locale - */ -#define APR_LOCALE_CHARSET (const char *)1 - -/** - * Find out whether or not the specified conversion is single-byte-only. - * @param convset The handle allocated by apr_xlate_open, specifying the - * parameters of conversion - * @param onoff Output: whether or not the conversion is single-byte-only - * @remark - * Return APR_ENOTIMPL if charset transcoding is not available - * in this instance of apr-util (i.e., APR_HAS_XLATE is undefined). - */ -APU_DECLARE(apr_status_t) apr_xlate_sb_get(apr_xlate_t *convset, int *onoff); - -/** - * Convert a buffer of text from one codepage to another. - * @param convset The handle allocated by apr_xlate_open, specifying - * the parameters of conversion - * @param inbuf The address of the source buffer - * @param inbytes_left Input: the amount of input data to be translated - * Output: the amount of input data not yet translated - * @param outbuf The address of the destination buffer - * @param outbytes_left Input: the size of the output buffer - * Output: the amount of the output buffer not yet used - * @remark - * Returns APR_ENOTIMPL if charset transcoding is not available - * in this instance of apr-util (i.e., APR_HAS_XLATE is undefined). - * Returns APR_INCOMPLETE if the input buffer ends in an incomplete - * multi-byte character. - * - * To correctly terminate the output buffer for some multi-byte - * character set encodings, a final call must be made to this function - * after the complete input string has been converted, passing - * the inbuf and inbytes_left parameters as NULL. (Note that this - * mode only works from version 1.1.0 onwards) - */ -APU_DECLARE(apr_status_t) apr_xlate_conv_buffer(apr_xlate_t *convset, - const char *inbuf, - apr_size_t *inbytes_left, - char *outbuf, - apr_size_t *outbytes_left); - -/* @see apr_file_io.h the comment in apr_file_io.h about this hack */ -#ifdef APR_NOT_DONE_YET -/** - * The purpose of apr_xlate_conv_char is to translate one character - * at a time. This needs to be written carefully so that it works - * with double-byte character sets. - * @param convset The handle allocated by apr_xlate_open, specifying the - * parameters of conversion - * @param inchar The character to convert - * @param outchar The converted character - */ -APU_DECLARE(apr_status_t) apr_xlate_conv_char(apr_xlate_t *convset, - char inchar, char outchar); -#endif - -/** - * Convert a single-byte character from one charset to another. - * @param convset The handle allocated by apr_xlate_open, specifying the - * parameters of conversion - * @param inchar The single-byte character to convert. - * @warning This only works when converting between single-byte character sets. - * -1 will be returned if the conversion can't be performed. - */ -APU_DECLARE(apr_int32_t) apr_xlate_conv_byte(apr_xlate_t *convset, - unsigned char inchar); - -/** - * Close a codepage translation handle. - * @param convset The codepage translation handle to close - * @remark - * Return APR_ENOTIMPL if charset transcoding is not available - * in this instance of apr-util (i.e., APR_HAS_XLATE is undefined). - */ -APU_DECLARE(apr_status_t) apr_xlate_close(apr_xlate_t *convset); - -/** @} */ -#ifdef __cplusplus -} -#endif - -#endif /* ! APR_XLATE_H */ diff --git a/include/apr_xml.h b/include/apr_xml.h deleted file mode 100644 index 2a43b283..00000000 --- a/include/apr_xml.h +++ /dev/null @@ -1,356 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file apr_xml.h - * @brief APR-UTIL XML Library - */ -#ifndef APR_XML_H -#define APR_XML_H - -/** - * @defgroup APR_Util_XML XML - * @ingroup APR_Util - * @{ - */ -#include "apr_pools.h" -#include "apr_tables.h" -#include "apr_file_io.h" - -#include "apu.h" -#if APR_CHARSET_EBCDIC -#include "apr_xlate.h" -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @package Apache XML library - */ - -/* -------------------------------------------------------------------- */ - -/* ### these will need to move at some point to a more logical spot */ - -/** @see apr_text */ -typedef struct apr_text apr_text; - -/** Structure to keep a linked list of pieces of text */ -struct apr_text { - /** The current piece of text */ - const char *text; - /** a pointer to the next piece of text */ - struct apr_text *next; -}; - -/** @see apr_text_header */ -typedef struct apr_text_header apr_text_header; - -/** A list of pieces of text */ -struct apr_text_header { - /** The first piece of text in the list */ - apr_text *first; - /** The last piece of text in the list */ - apr_text *last; -}; - -/** - * Append a piece of text to the end of a list - * @param p The pool to allocate out of - * @param hdr The text header to append to - * @param text The new text to append - */ -APU_DECLARE(void) apr_text_append(apr_pool_t *p, apr_text_header *hdr, - const char *text); - - -/* -------------------------------------------------------------------- -** -** XML PARSING -*/ - -/* -** Qualified namespace values -** -** APR_XML_NS_DAV_ID -** We always insert the "DAV:" namespace URI at the head of the -** namespace array. This means that it will always be at ID==0, -** making it much easier to test for. -** -** APR_XML_NS_NONE -** This special ID is used for two situations: -** -** 1) The namespace prefix begins with "xml" (and we do not know -** what it means). Namespace prefixes with "xml" (any case) as -** their first three characters are reserved by the XML Namespaces -** specification for future use. mod_dav will pass these through -** unchanged. When this identifier is used, the prefix is LEFT in -** the element/attribute name. Downstream processing should not -** prepend another prefix. -** -** 2) The element/attribute does not have a namespace. -** -** a) No prefix was used, and a default namespace has not been -** defined. -** b) No prefix was used, and the default namespace was specified -** to mean "no namespace". This is done with a namespace -** declaration of: xmlns="" -** (this declaration is typically used to override a previous -** specification for the default namespace) -** -** In these cases, we need to record that the elem/attr has no -** namespace so that we will not attempt to prepend a prefix. -** All namespaces that are used will have a prefix assigned to -** them -- mod_dav will never set or use the default namespace -** when generating XML. This means that "no prefix" will always -** mean "no namespace". -** -** In both cases, the XML generation will avoid prepending a prefix. -** For the first case, this means the original prefix/name will be -** inserted into the output stream. For the latter case, it means -** the name will have no prefix, and since we never define a default -** namespace, this means it will have no namespace. -** -** Note: currently, mod_dav understands the "xmlns" prefix and the -** "xml:lang" attribute. These are handled specially (they aren't -** left within the XML tree), so the APR_XML_NS_NONE value won't ever -** really apply to these values. -*/ -#define APR_XML_NS_DAV_ID 0 /**< namespace ID for "DAV:" */ -#define APR_XML_NS_NONE -10 /**< no namespace for this elem/attr */ - -#define APR_XML_NS_ERROR_BASE -100 /**< used only during processing */ -/** Is this namespace an error? */ -#define APR_XML_NS_IS_ERROR(e) ((e) <= APR_XML_NS_ERROR_BASE) - -/** @see apr_xml_attr */ -typedef struct apr_xml_attr apr_xml_attr; -/** @see apr_xml_elem */ -typedef struct apr_xml_elem apr_xml_elem; -/** @see apr_xml_doc */ -typedef struct apr_xml_doc apr_xml_doc; - -/** apr_xml_attr: holds a parsed XML attribute */ -struct apr_xml_attr { - /** attribute name */ - const char *name; - /** index into namespace array */ - int ns; - - /** attribute value */ - const char *value; - - /** next attribute */ - struct apr_xml_attr *next; -}; - -/** apr_xml_elem: holds a parsed XML element */ -struct apr_xml_elem { - /** element name */ - const char *name; - /** index into namespace array */ - int ns; - /** xml:lang for attrs/contents */ - const char *lang; - - /** cdata right after start tag */ - apr_text_header first_cdata; - /** cdata after MY end tag */ - apr_text_header following_cdata; - - /** parent element */ - struct apr_xml_elem *parent; - /** next (sibling) element */ - struct apr_xml_elem *next; - /** first child element */ - struct apr_xml_elem *first_child; - /** first attribute */ - struct apr_xml_attr *attr; - - /* used only during parsing */ - /** last child element */ - struct apr_xml_elem *last_child; - /** namespaces scoped by this elem */ - struct apr_xml_ns_scope *ns_scope; - - /* used by modules during request processing */ - /** Place for modules to store private data */ - void *priv; -}; - -/** Is this XML element empty? */ -#define APR_XML_ELEM_IS_EMPTY(e) ((e)->first_child == NULL && \ - (e)->first_cdata.first == NULL) - -/** apr_xml_doc: holds a parsed XML document */ -struct apr_xml_doc { - /** root element */ - apr_xml_elem *root; - /** array of namespaces used */ - apr_array_header_t *namespaces; -}; - -/** Opaque XML parser structure */ -typedef struct apr_xml_parser apr_xml_parser; - -/** - * Create an XML parser - * @param pool The pool for allocating the parser and the parse results. - * @return The new parser. - */ -APU_DECLARE(apr_xml_parser *) apr_xml_parser_create(apr_pool_t *pool); - -/** - * Parse a File, producing a xml_doc - * @param p The pool for allocating the parse results. - * @param parser A pointer to *parser (needed so calling function can get - * errors), will be set to NULL on successfull completion. - * @param ppdoc A pointer to *apr_xml_doc (which has the parsed results in it) - * @param xmlfd A file to read from. - * @param buffer_length Buffer length which would be suitable - * @return Any errors found during parsing. - */ -APU_DECLARE(apr_status_t) apr_xml_parse_file(apr_pool_t *p, - apr_xml_parser **parser, - apr_xml_doc **ppdoc, - apr_file_t *xmlfd, - apr_size_t buffer_length); - - -/** - * Feed input into the parser - * @param parser The XML parser for parsing this data. - * @param data The data to parse. - * @param len The length of the data. - * @return Any errors found during parsing. - * @remark Use apr_xml_parser_geterror() to get more error information. - */ -APU_DECLARE(apr_status_t) apr_xml_parser_feed(apr_xml_parser *parser, - const char *data, - apr_size_t len); - -/** - * Terminate the parsing and return the result - * @param parser The XML parser for parsing this data. - * @param pdoc The resulting parse information. May be NULL to simply - * terminate the parsing without fetching the info. - * @return Any errors found during the final stage of parsing. - * @remark Use apr_xml_parser_geterror() to get more error information. - */ -APU_DECLARE(apr_status_t) apr_xml_parser_done(apr_xml_parser *parser, - apr_xml_doc **pdoc); - -/** - * Fetch additional error information from the parser. - * @param parser The XML parser to query for errors. - * @param errbuf A buffer for storing error text. - * @param errbufsize The length of the error text buffer. - * @return The error buffer - */ -APU_DECLARE(char *) apr_xml_parser_geterror(apr_xml_parser *parser, - char *errbuf, - apr_size_t errbufsize); - - -/** - * Converts an XML element tree to flat text - * @param p The pool to allocate out of - * @param elem The XML element to convert - * @param style How to covert the XML. One of: - * <PRE> - * APR_XML_X2T_FULL start tag, contents, end tag - * APR_XML_X2T_INNER contents only - * APR_XML_X2T_LANG_INNER xml:lang + inner contents - * APR_XML_X2T_FULL_NS_LANG FULL + ns defns + xml:lang - * </PRE> - * @param namespaces The namespace of the current XML element - * @param ns_map Namespace mapping - * @param pbuf Buffer to put the converted text into - * @param psize Size of the converted text - */ -APU_DECLARE(void) apr_xml_to_text(apr_pool_t *p, const apr_xml_elem *elem, - int style, apr_array_header_t *namespaces, - int *ns_map, const char **pbuf, - apr_size_t *psize); - -/* style argument values: */ -#define APR_XML_X2T_FULL 0 /**< start tag, contents, end tag */ -#define APR_XML_X2T_INNER 1 /**< contents only */ -#define APR_XML_X2T_LANG_INNER 2 /**< xml:lang + inner contents */ -#define APR_XML_X2T_FULL_NS_LANG 3 /**< FULL + ns defns + xml:lang */ - -/** - * empty XML element - * @param p The pool to allocate out of - * @param elem The XML element to empty - * @return the string that was stored in the XML element - */ -APU_DECLARE(const char *) apr_xml_empty_elem(apr_pool_t *p, - const apr_xml_elem *elem); - -/** - * quote an XML string - * Replace '<', '>', and '&' with '<', '>', and '&'. - * @param p The pool to allocate out of - * @param s The string to quote - * @param quotes If quotes is true, then replace '"' with '"'. - * @return The quoted string - * @note If the string does not contain special characters, it is not - * duplicated into the pool and the original string is returned. - */ -APU_DECLARE(const char *) apr_xml_quote_string(apr_pool_t *p, const char *s, - int quotes); - -/** - * Quote an XML element - * @param p The pool to allocate out of - * @param elem The element to quote - */ -APU_DECLARE(void) apr_xml_quote_elem(apr_pool_t *p, apr_xml_elem *elem); - -/* manage an array of unique URIs: apr_xml_insert_uri() and APR_XML_URI_ITEM() */ - -/** - * return the URI's (existing) index, or insert it and return a new index - * @param uri_array array to insert into - * @param uri The uri to insert - * @return int The uri's index - */ -APU_DECLARE(int) apr_xml_insert_uri(apr_array_header_t *uri_array, - const char *uri); - -/** Get the URI item for this XML element */ -#define APR_XML_GET_URI_ITEM(ary, i) (((const char * const *)(ary)->elts)[i]) - -#if APR_CHARSET_EBCDIC -/** - * Convert parsed tree in EBCDIC - * @param p The pool to allocate out of - * @param pdoc The apr_xml_doc to convert. - * @param xlate The translation handle to use. - * @return Any errors found during conversion. - */ -APU_DECLARE(apr_status_t) apr_xml_parser_convert_doc(apr_pool_t *p, - apr_xml_doc *pdoc, - apr_xlate_t *convset); -#endif - -#ifdef __cplusplus -} -#endif -/** @} */ -#endif /* APR_XML_H */ diff --git a/include/apu.h.in b/include/apu.h.in deleted file mode 100644 index 4037094d..00000000 --- a/include/apu.h.in +++ /dev/null @@ -1,114 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * apu.h is generated from apu.h.in by configure -- do not edit apu.h - */ -/* @file apu.h - * @brief APR-Utility main file - */ -/** - * @defgroup APR_Util APR Utility Functions - * @{ - */ - - -#ifndef APU_H -#define APU_H - -/** - * APU_DECLARE_EXPORT is defined when building the APR-UTIL dynamic library, - * so that all public symbols are exported. - * - * APU_DECLARE_STATIC is defined when including the APR-UTIL public headers, - * to provide static linkage when the dynamic library may be unavailable. - * - * APU_DECLARE_STATIC and APU_DECLARE_EXPORT are left undefined when - * including the APR-UTIL public headers, to import and link the symbols from - * the dynamic APR-UTIL library and assure appropriate indirection and calling - * conventions at compile time. - */ - -/** - * The public APR-UTIL functions are declared with APU_DECLARE(), so they may - * use the most appropriate calling convention. Public APR functions with - * variable arguments must use APU_DECLARE_NONSTD(). - * - * @fn APU_DECLARE(rettype) apr_func(args); - */ -#define APU_DECLARE(type) type -/** - * The public APR-UTIL functions using variable arguments are declared with - * APU_DECLARE_NONSTD(), as they must use the C language calling convention. - * - * @fn APU_DECLARE_NONSTD(rettype) apr_func(args, ...); - */ -#define APU_DECLARE_NONSTD(type) type -/** - * The public APR-UTIL variables are declared with APU_DECLARE_DATA. - * This assures the appropriate indirection is invoked at compile time. - * - * @fn APU_DECLARE_DATA type apr_variable; - * @note APU_DECLARE_DATA extern type apr_variable; syntax is required for - * declarations within headers to properly import the variable. - */ -#define APU_DECLARE_DATA - -#if !defined(WIN32) || defined(APU_MODULE_DECLARE_STATIC) -/** - * Declare a dso module's exported module structure as APU_MODULE_DECLARE_DATA. - * - * Unless APU_MODULE_DECLARE_STATIC is defined at compile time, symbols - * declared with APU_MODULE_DECLARE_DATA are always exported. - * @code - * module APU_MODULE_DECLARE_DATA mod_tag - * @endcode - */ -#define APU_MODULE_DECLARE_DATA -#else -#define APU_MODULE_DECLARE_DATA __declspec(dllexport) -#endif - -/* - * we always have SDBM (it's in our codebase) - */ -#define APU_HAVE_SDBM @apu_have_sdbm@ -#define APU_HAVE_GDBM @apu_have_gdbm@ -#define APU_HAVE_NDBM @apu_have_ndbm@ -#define APU_HAVE_DB @apu_have_db@ - -#if APU_HAVE_DB -#define APU_HAVE_DB_VERSION @apu_db_version@ -#endif - -#define APU_HAVE_PGSQL @apu_have_pgsql@ -#define APU_HAVE_MYSQL @apu_have_mysql@ -#define APU_HAVE_SQLITE3 @apu_have_sqlite3@ -#define APU_HAVE_SQLITE2 @apu_have_sqlite2@ -#define APU_HAVE_ORACLE @apu_have_oracle@ -#define APU_HAVE_FREETDS @apu_have_freetds@ -#define APU_HAVE_ODBC @apu_have_odbc@ - -#define APU_HAVE_CRYPTO @apu_have_crypto@ -#define APU_HAVE_OPENSSL @apu_have_openssl@ -#define APU_HAVE_NSS @apu_have_nss@ - -#define APU_HAVE_APR_ICONV @have_apr_iconv@ -#define APU_HAVE_ICONV @have_iconv@ -#define APR_HAS_XLATE (APU_HAVE_APR_ICONV || APU_HAVE_ICONV) - -#endif /* APU_H */ -/** @} */ diff --git a/include/apu.hnw b/include/apu.hnw deleted file mode 100644 index 31c0dfb4..00000000 --- a/include/apu.hnw +++ /dev/null @@ -1,124 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * Note: This is a NetWare specific version of apu.h. It is renamed to - * apu.h at the start of a NetWare build. - */ -/* @file apu.h - * @brief APR-Utility main file - */ - -#ifdef NETWARE -#ifndef APU_H -#define APU_H -/** - * @defgroup APR_Util APR Utility Functions - * @{ - */ - - -/** - * APU_DECLARE_EXPORT is defined when building the APR-UTIL dynamic library, - * so that all public symbols are exported. - * - * APU_DECLARE_STATIC is defined when including the APR-UTIL public headers, - * to provide static linkage when the dynamic library may be unavailable. - * - * APU_DECLARE_STATIC and APU_DECLARE_EXPORT are left undefined when - * including the APR-UTIL public headers, to import and link the symbols from - * the dynamic APR-UTIL library and assure appropriate indirection and calling - * conventions at compile time. - */ - -/** - * The public APR-UTIL functions are declared with APU_DECLARE(), so they may - * use the most appropriate calling convention. Public APR functions with - * variable arguments must use APU_DECLARE_NONSTD(). - * - * @fn APU_DECLARE(rettype) apr_func(args); - */ -#define APU_DECLARE(type) type -/** - * The public APR-UTIL functions using variable arguments are declared with - * APU_DECLARE_NONSTD(), as they must use the C language calling convention. - * - * @fn APU_DECLARE_NONSTD(rettype) apr_func(args, ...); - */ -#define APU_DECLARE_NONSTD(type) type -/** - * The public APR-UTIL variables are declared with APU_DECLARE_DATA. - * This assures the appropriate indirection is invoked at compile time. - * - * @fn APU_DECLARE_DATA type apr_variable; - * @note APU_DECLARE_DATA extern type apr_variable; syntax is required for - * declarations within headers to properly import the variable. - */ -#define APU_DECLARE_DATA - -/** - * Declare a dso module's exported module structure as APU_MODULE_DECLARE_DATA. - * - * Unless APU_MODULE_DECLARE_STATIC is defined at compile time, symbols - * declared with APU_MODULE_DECLARE_DATA are always exported. - * @code - * module APU_MODULE_DECLARE_DATA mod_tag - * @endcode - */ -#define APU_MODULE_DECLARE_DATA - -/* - * we always have SDBM (it's in our codebase) - */ -#define APU_HAVE_SDBM 1 - -#ifndef APU_DSO_MODULE_BUILD -#define APU_HAVE_GDBM 0 -#define APU_HAVE_NDBM 0 -#define APU_HAVE_DB 0 - -#if APU_HAVE_DB -#define APU_HAVE_DB_VERSION 0 -#endif -#endif - -/* - * we always enable dynamic driver loads within apr_dbd - */ -#ifndef APU_DSO_MODULE_BUILD -#define APU_HAVE_PGSQL 0 -#define APU_HAVE_MYSQL 0 -#define APU_HAVE_SQLITE3 0 -#define APU_HAVE_SQLITE2 0 -#define APU_HAVE_ORACLE 0 -#define APU_HAVE_FREETDS 0 -#define APU_HAVE_ODBC 0 -#endif - -#define APU_HAVE_CRYPTO 0 - -#ifndef APU_DSO_MODULE_BUILD -#define APU_HAVE_OPENSSL 0 -#define APU_HAVE_NSS 0 -#endif - -#define APU_HAVE_APR_ICONV 0 -#define APU_HAVE_ICONV 1 -#define APR_HAS_XLATE (APU_HAVE_APR_ICONV || APU_HAVE_ICONV) - -#endif /* APU_H */ -#endif /* NETWARE */ - diff --git a/include/apu.hw b/include/apu.hw deleted file mode 100644 index 5be70de6..00000000 --- a/include/apu.hw +++ /dev/null @@ -1,140 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * apu.h is duplicated from apu.hw at build time -- do not edit apu.h - */ -/* @file apu.h - * @brief APR-Utility main file - */ -/** - * @defgroup APR_Util APR Utility Functions - * @{ - */ - - -#ifndef APU_H -#define APU_H - -/** - * APU_DECLARE_EXPORT is defined when building the APR-UTIL dynamic library, - * so that all public symbols are exported. - * - * APU_DECLARE_STATIC is defined when including the APR-UTIL public headers, - * to provide static linkage when the dynamic library may be unavailable. - * - * APU_DECLARE_STATIC and APU_DECLARE_EXPORT are left undefined when - * including the APR-UTIL public headers, to import and link the symbols from - * the dynamic APR-UTIL library and assure appropriate indirection and calling - * conventions at compile time. - */ - -#if defined(DOXYGEN) || !defined(WIN32) -/** - * The public APR-UTIL functions are declared with APU_DECLARE(), so they may - * use the most appropriate calling convention. Public APR functions with - * variable arguments must use APU_DECLARE_NONSTD(). - * - * @fn APU_DECLARE(rettype) apr_func(args); - */ -#define APU_DECLARE(type) type -/** - * The public APR-UTIL functions using variable arguments are declared with - * APU_DECLARE_NONSTD(), as they must use the C language calling convention. - * - * @fn APU_DECLARE_NONSTD(rettype) apr_func(args, ...); - */ -#define APU_DECLARE_NONSTD(type) type -/** - * The public APR-UTIL variables are declared with APU_DECLARE_DATA. - * This assures the appropriate indirection is invoked at compile time. - * - * @fn APU_DECLARE_DATA type apr_variable; - * @note extern APU_DECLARE_DATA type apr_variable; syntax is required for - * declarations within headers to properly import the variable. - */ -#define APU_DECLARE_DATA -#elif defined(APU_DECLARE_STATIC) -#define APU_DECLARE(type) type __stdcall -#define APU_DECLARE_NONSTD(type) type __cdecl -#define APU_DECLARE_DATA -#elif defined(APU_DECLARE_EXPORT) -#define APU_DECLARE(type) __declspec(dllexport) type __stdcall -#define APU_DECLARE_NONSTD(type) __declspec(dllexport) type __cdecl -#define APU_DECLARE_DATA __declspec(dllexport) -#else -#define APU_DECLARE(type) __declspec(dllimport) type __stdcall -#define APU_DECLARE_NONSTD(type) __declspec(dllimport) type __cdecl -#define APU_DECLARE_DATA __declspec(dllimport) -#endif - -#if !defined(WIN32) || defined(APU_MODULE_DECLARE_STATIC) -/** - * Declare a dso module's exported module structure as APU_MODULE_DECLARE_DATA. - * - * Unless APU_MODULE_DECLARE_STATIC is defined at compile time, symbols - * declared with APU_MODULE_DECLARE_DATA are always exported. - * @code - * module APU_MODULE_DECLARE_DATA mod_tag - * @endcode - */ -#define APU_MODULE_DECLARE_DATA -#else -#define APU_MODULE_DECLARE_DATA __declspec(dllexport) -#endif - -/* - * we always have SDBM (it's in our codebase) - */ -#define APU_HAVE_SDBM 1 - -#ifndef APU_DSO_MODULE_BUILD -#define APU_HAVE_GDBM 0 -#define APU_HAVE_NDBM 0 -#define APU_HAVE_DB 0 - -#if APU_HAVE_DB -#define APU_HAVE_DB_VERSION 0 -#endif -#endif - -/* - * we always enable dynamic driver loads within apr_dbd - * Win32 always has odbc (it's always installed) - */ -#ifndef APU_DSO_MODULE_BUILD -#define APU_HAVE_PGSQL 0 -#define APU_HAVE_MYSQL 0 -#define APU_HAVE_SQLITE3 0 -#define APU_HAVE_SQLITE2 0 -#define APU_HAVE_ORACLE 0 -#define APU_HAVE_FREETDS 0 -#define APU_HAVE_ODBC 1 -#endif - -#define APU_HAVE_CRYPTO 0 - -#ifndef APU_DSO_MODULE_BUILD -#define APU_HAVE_OPENSSL 0 -#define APU_HAVE_NSS 0 -#endif - -#define APU_HAVE_APR_ICONV 1 -#define APU_HAVE_ICONV 0 -#define APR_HAS_XLATE (APU_HAVE_APR_ICONV || APU_HAVE_ICONV) - -#endif /* APU_H */ -/** @} */ diff --git a/include/apu_errno.h b/include/apu_errno.h deleted file mode 100644 index c0a8ec7d..00000000 --- a/include/apu_errno.h +++ /dev/null @@ -1,173 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef APU_ERRNO_H -#define APU_ERRNO_H - -/** - * @file apu_errno.h - * @brief APR-Util Error Codes - */ - -#include "apr.h" -#include "apr_errno.h" - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/** - * @defgroup apu_errno Error Codes - * @ingroup APR_Util - * @{ - */ - -/** - * @defgroup APR_Util_Error APR_Util Error Values - * <PRE> - * <b>APU ERROR VALUES</b> - * APR_ENOKEY The key provided was empty or NULL - * APR_ENOIV The initialisation vector provided was NULL - * APR_EKEYTYPE The key type was not recognised - * APR_ENOSPACE The buffer supplied was not big enough - * APR_ECRYPT An error occurred while encrypting or decrypting - * APR_EPADDING Padding was not supported - * APR_EKEYLENGTH The key length was incorrect - * APR_ENOCIPHER The cipher provided was not recognised - * APR_ENODIGEST The digest provided was not recognised - * APR_ENOENGINE The engine provided was not recognised - * APR_EINITENGINE The engine could not be initialised - * APR_EREINIT Underlying crypto has already been initialised - * </PRE> - * - * <PRE> - * <b>APR STATUS VALUES</b> - * APR_INCHILD Program is currently executing in the child - * </PRE> - * @{ - */ -/** @see APR_STATUS_IS_ENOKEY */ -#define APR_ENOKEY (APR_UTIL_START_STATUS + 1) -/** @see APR_STATUS_IS_ENOIV */ -#define APR_ENOIV (APR_UTIL_START_STATUS + 2) -/** @see APR_STATUS_IS_EKEYTYPE */ -#define APR_EKEYTYPE (APR_UTIL_START_STATUS + 3) -/** @see APR_STATUS_IS_ENOSPACE */ -#define APR_ENOSPACE (APR_UTIL_START_STATUS + 4) -/** @see APR_STATUS_IS_ECRYPT */ -#define APR_ECRYPT (APR_UTIL_START_STATUS + 5) -/** @see APR_STATUS_IS_EPADDING */ -#define APR_EPADDING (APR_UTIL_START_STATUS + 6) -/** @see APR_STATUS_IS_EKEYLENGTH */ -#define APR_EKEYLENGTH (APR_UTIL_START_STATUS + 7) -/** @see APR_STATUS_IS_ENOCIPHER */ -#define APR_ENOCIPHER (APR_UTIL_START_STATUS + 8) -/** @see APR_STATUS_IS_ENODIGEST */ -#define APR_ENODIGEST (APR_UTIL_START_STATUS + 9) -/** @see APR_STATUS_IS_ENOENGINE */ -#define APR_ENOENGINE (APR_UTIL_START_STATUS + 10) -/** @see APR_STATUS_IS_EINITENGINE */ -#define APR_EINITENGINE (APR_UTIL_START_STATUS + 11) -/** @see APR_STATUS_IS_EREINIT */ -#define APR_EREINIT (APR_UTIL_START_STATUS + 12) -/** @} */ - -/** - * @defgroup APU_STATUS_IS Status Value Tests - * @warning For any particular error condition, more than one of these tests - * may match. This is because platform-specific error codes may not - * always match the semantics of the POSIX codes these tests (and the - * corresponding APR error codes) are named after. A notable example - * are the APR_STATUS_IS_ENOENT and APR_STATUS_IS_ENOTDIR tests on - * Win32 platforms. The programmer should always be aware of this and - * adjust the order of the tests accordingly. - * @{ - */ - -/** @} */ - -/** - * @addtogroup APR_Util_Error - * @{ - */ -/** - * The key was empty or not provided - */ -#define APR_STATUS_IS_ENOKEY(s) ((s) == APR_ENOKEY) -/** - * The initialisation vector was not provided - */ -#define APR_STATUS_IS_ENOIV(s) ((s) == APR_ENOIV) -/** - * The key type was not recognised - */ -#define APR_STATUS_IS_EKEYTYPE(s) ((s) == APR_EKEYTYPE) -/** - * The buffer provided was not big enough - */ -#define APR_STATUS_IS_ENOSPACE(s) ((s) == APR_ENOSPACE) -/** - * An error occurred while encrypting or decrypting - */ -#define APR_STATUS_IS_ECRYPT(s) ((s) == APR_ECRYPT) -/** - * An error occurred while padding - */ -#define APR_STATUS_IS_EPADDING(s) ((s) == APR_EPADDING) -/** - * An error occurred with the key length - */ -#define APR_STATUS_IS_EKEYLENGTH(s) ((s) == APR_EKEYLENGTH) -/** - * The cipher provided was not recognised - */ -#define APR_STATUS_IS_ENOCIPHER(s) ((s) == APR_ENOCIPHER) -/** - * The digest provided was not recognised - */ -#define APR_STATUS_IS_ENODIGEST(s) ((s) == APR_ENODIGEST) -/** - * The engine provided was not recognised - */ -#define APR_STATUS_IS_ENOENGINE(s) ((s) == APR_ENOENGINE) -/** - * The engine could not be initialised - */ -#define APR_STATUS_IS_EINITENGINE(s) ((s) == APR_EINITENGINE) -/** - * Crypto has already been initialised - */ -#define APR_STATUS_IS_EREINIT(s) ((s) == APR_EREINIT) -/** @} */ - -/** - * This structure allows the underlying API error codes to be returned - * along with plain text error messages that explain to us mere mortals - * what really happened. - */ -typedef struct apu_err_t { - const char *reason; - const char *msg; - int rc; -} apu_err_t; - -/** @} */ - -#ifdef __cplusplus -} -#endif - -#endif /* ! APU_ERRNO_H */ diff --git a/include/apu_version.h b/include/apu_version.h deleted file mode 100644 index 9db3f81a..00000000 --- a/include/apu_version.h +++ /dev/null @@ -1,134 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef APU_VERSION_H -#define APU_VERSION_H - -/** - * @file apu_version.h - * @brief APR-util Versioning Interface - * - * APR-util's Version - * - * There are several different mechanisms for accessing the version. There - * is a string form, and a set of numbers; in addition, there are constants - * which can be compiled into your application, and you can query the library - * being used for its actual version. - * - * Note that it is possible for an application to detect that it has been - * compiled against a different version of APU by use of the compile-time - * constants and the use of the run-time query function. - * - * APU version numbering follows the guidelines specified in: - * - * http://apr.apache.org/versioning.html - */ - - -/* The numeric compile-time version constants. These constants are the - * authoritative version numbers for APU. - */ - -/** major version - * Major API changes that could cause compatibility problems for older - * programs such as structure size changes. No binary compatibility is - * possible across a change in the major version. - */ -#define APU_MAJOR_VERSION 2 - -/** minor version - * Minor API changes that do not cause binary compatibility problems. - * Reset to 0 when upgrading APU_MAJOR_VERSION - */ -#define APU_MINOR_VERSION 0 - -/** patch level - * The Patch Level never includes API changes, simply bug fixes. - * Reset to 0 when upgrading APR_MINOR_VERSION - */ -#define APU_PATCH_VERSION 0 - -/** - * The symbol APU_IS_DEV_VERSION is only defined for internal, - * "development" copies of APU. It is undefined for released versions - * of APU. - */ -#define APU_IS_DEV_VERSION - - -#if defined(APU_IS_DEV_VERSION) || defined(DOXYGEN) -/** Internal: string form of the "is dev" flag */ -#define APU_IS_DEV_STRING "-dev" -#else -#define APU_IS_DEV_STRING "" -#endif - - -#ifndef APU_STRINGIFY -/** Properly quote a value as a string in the C preprocessor */ -#define APU_STRINGIFY(n) APU_STRINGIFY_HELPER(n) -/** Helper macro for APU_STRINGIFY */ -#define APU_STRINGIFY_HELPER(n) #n -#endif - -/** The formatted string of APU's version */ -#define APU_VERSION_STRING \ - APU_STRINGIFY(APU_MAJOR_VERSION) "." \ - APU_STRINGIFY(APU_MINOR_VERSION) "." \ - APU_STRINGIFY(APU_PATCH_VERSION) \ - APU_IS_DEV_STRING - -/** An alternative formatted string of APR's version */ -/* macro for Win32 .rc files using numeric csv representation */ -#define APU_VERSION_STRING_CSV APU_MAJOR_VERSION ##, \ - ##APU_MINOR_VERSION ##, \ - ##APU_PATCH_VERSION - - -#ifndef APU_VERSION_ONLY - -/* The C language API to access the version at run time, - * as opposed to compile time. APU_VERSION_ONLY may be defined - * externally when preprocessing apr_version.h to obtain strictly - * the C Preprocessor macro declarations. - */ - -#include "apr_version.h" - -#include "apu.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * Return APR-util's version information information in a numeric form. - * - * @param pvsn Pointer to a version structure for returning the version - * information. - */ -APU_DECLARE(void) apu_version(apr_version_t *pvsn); - -/** Return APU's version information as a string. */ -APU_DECLARE(const char *) apu_version_string(void); - -#ifdef __cplusplus -} -#endif - -#endif /* ndef APU_VERSION_ONLY */ - -#endif /* ndef APU_VERSION_H */ diff --git a/include/apu_want.h.in b/include/apu_want.h.in deleted file mode 100644 index a296e5c5..00000000 --- a/include/apu_want.h.in +++ /dev/null @@ -1,51 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "apu.h" /* configuration data */ - -/** - * @file apu_want.h - * @brief APR Standard Headers Support - * - * <PRE> - * Features: - * - * APU_WANT_DB: <@apu_db_header@> - * - * Typical usage: - * - * #define APU_WANT_DB - * #include "apu_want.h" - * - * The appropriate headers will be included. - * - * Note: it is safe to use this in a header (it won't interfere with other - * headers' or source files' use of apu_want.h) - * </PRE> - */ - -/* --------------------------------------------------------------------- */ - -#ifdef APU_WANT_DB - -#if APU_HAVE_DB -#include <@apu_db_header@> -#endif - -#undef APU_WANT_DB -#endif - -/* --------------------------------------------------------------------- */ diff --git a/include/apu_want.hnw b/include/apu_want.hnw deleted file mode 100644 index afdc9f74..00000000 --- a/include/apu_want.hnw +++ /dev/null @@ -1,52 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "apu.h" /* configuration data */ - -/** - * @file apu_want.h - * @brief APR Standard Headers Support - * - * <PRE> - * Features: - * - * APU_WANT_DB: <@apu_db_header> - * - * Typical usage: - * - * #define APU_WANT_DB - * #include "apu_want.h" - * - * The appropriate headers will be included. - * - * Note: it is safe to use this in a header (it won't interfere with other - * headers' or source files' use of apu_want.h) - * </PRE> - */ - -/* --------------------------------------------------------------------- */ - -#ifdef APU_WANT_DB - -#if APU_HAVE_DB -/* win32 note.. you will need to change this for db1 */ -#include <db.h> -#endif - -#undef APU_WANT_DB -#endif - -/* --------------------------------------------------------------------- */ diff --git a/include/apu_want.hw b/include/apu_want.hw deleted file mode 100644 index 8bb56ce7..00000000 --- a/include/apu_want.hw +++ /dev/null @@ -1,52 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "apu.h" /* configuration data */ - -/** - * @file apu_want.h - * @brief APR Standard Headers Support - * - * <PRE> - * Features: - * - * APU_WANT_DB: <db.h> - * - * Typical usage: - * - * #define APU_WANT_DB - * #include "apu_want.h" - * - * The appropriate headers will be included. - * - * Note: it is safe to use this in a header (it won't interfere with other - * headers' or source files' use of apu_want.h) - * </PRE> - */ - -/* --------------------------------------------------------------------- */ - -#ifdef APU_WANT_DB - -#if APU_HAVE_DB -/* win32 note.. you will need to change this for db1 */ -#include <db.h> -#endif - -#undef APU_WANT_DB -#endif - -/* --------------------------------------------------------------------- */ diff --git a/include/private/apr_crypto_internal.h b/include/private/apr_crypto_internal.h deleted file mode 100644 index de109de5..00000000 --- a/include/private/apr_crypto_internal.h +++ /dev/null @@ -1,253 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef APR_CRYPTO_INTERNAL_H -#define APR_CRYPTO_INTERNAL_H - -#include <stdarg.h> - -#include "apr_crypto.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#if APU_HAVE_CRYPTO - -struct apr_crypto_driver_t { - - /** name */ - const char *name; - - /** - * @brief: allow driver to perform once-only initialisation. - * Called once only. - * @param pool The pool to register the cleanup in. - * @param params An array of optional init parameters. - */ - apr_status_t (*init)(apr_pool_t *pool, const apr_array_header_t *params, int *rc); - - /** - * @brief Create a context for supporting encryption. Keys, certificates, - * algorithms and other parameters will be set per context. More than - * one context can be created at one time. A cleanup will be automatically - * registered with the given pool to guarantee a graceful shutdown. - * @param driver - driver to use - * @param pool - process pool - * @param params - array of key parameters - * @param f - context pointer will be written here - * @return APR_ENOENGINE when the engine specified does not exist. APR_EINITENGINE - * if the engine cannot be initialised. - */ - apr_status_t (*factory)(apr_pool_t *pool, const apr_array_header_t *params, - apr_crypto_t **f); - - /** - * @brief Create a key from the given passphrase. By default, the PBKDF2 - * algorithm is used to generate the key from the passphrase. It is expected - * that the same pass phrase will generate the same key, regardless of the - * backend crypto platform used. The key is cleaned up when the context - * is cleaned, and may be reused with multiple encryption or decryption - * operations. - * @note If *key is NULL, a apr_crypto_key_t will be created from a pool. If - * *key is not NULL, *key must point at a previously created structure. - * @param driver - driver to use - * @param p The pool to use. - * @param f The context to use. - * @param pass The passphrase to use. - * @param passLen The passphrase length in bytes - * @param salt The salt to use. - * @param saltLen The salt length in bytes - * @param type 3DES_192, AES_128, AES_192, AES_256. - * @param mode Electronic Code Book / Cipher Block Chaining. - * @param doPad Pad if necessary. - * @param key The key returned, see note. - * @param ivSize The size of the initialisation vector will be returned, based - * on whether an IV is relevant for this type of crypto. - * @return Returns APR_ENOKEY if the pass phrase is missing or empty, or if a backend - * error occurred while generating the key. APR_ENOCIPHER if the type or mode - * is not supported by the particular backend. APR_EKEYTYPE if the key type is - * not known. APR_EPADDING if padding was requested but is not supported. - * APR_ENOTIMPL if not implemented. - */ - apr_status_t (*passphrase)(apr_pool_t *p, const apr_crypto_t *f, - const char *pass, apr_size_t passLen, const unsigned char * salt, - apr_size_t saltLen, const apr_crypto_block_key_type_e type, - const apr_crypto_block_key_mode_e mode, const int doPad, - const int iterations, apr_crypto_key_t **key, apr_size_t *ivSize); - - /** - * @brief Initialise a context for encrypting arbitrary data using the given key. - * @note If *ctx is NULL, a apr_crypto_block_t will be created from a pool. If - * *ctx is not NULL, *ctx must point at a previously created structure. - * @param p The pool to use. - * @param f The block factory to use. - * @param key The key structure. - * @param iv Optional initialisation vector. If the buffer pointed to is NULL, - * an IV will be created at random, in space allocated from the pool. - * If the buffer pointed to is not NULL, the IV in the buffer will be - * used. - * @param ctx The block context returned, see note. - * @param ivSize The size of the initialisation vector will be returned, based - * on whether an IV is relevant for this type of crypto. - * @param blockSize The block size of the cipher. - * @return Returns APR_ENOIV if an initialisation vector is required but not specified. - * Returns APR_EINIT if the backend failed to initialise the context. Returns - * APR_ENOTIMPL if not implemented. - */ - apr_status_t (*block_encrypt_init)(apr_pool_t *p, const apr_crypto_t *f, - const apr_crypto_key_t *key, const unsigned char **iv, - apr_crypto_block_t **ctx, apr_size_t *blockSize); - - /** - * @brief Encrypt data provided by in, write it to out. - * @note The number of bytes written will be written to outlen. If - * out is NULL, outlen will contain the maximum size of the - * buffer needed to hold the data, including any data - * generated by apr_crypto_block_encrypt_finish below. If *out points - * to NULL, a buffer sufficiently large will be created from - * the pool provided. If *out points to a not-NULL value, this - * value will be used as a buffer instead. - * @param ctx The block context to use. - * @param out Address of a buffer to which data will be written, - * see note. - * @param outlen Length of the output will be written here. - * @param in Address of the buffer to read. - * @param inlen Length of the buffer to read. - * @return APR_ECRYPT if an error occurred. Returns APR_ENOTIMPL if - * not implemented. - */ - apr_status_t (*block_encrypt)(apr_crypto_block_t *ctx, unsigned char **out, - apr_size_t *outlen, const unsigned char *in, apr_size_t inlen); - - /** - * @brief Encrypt final data block, write it to out. - * @note If necessary the final block will be written out after being - * padded. Typically the final block will be written to the - * same buffer used by apr_crypto_block_encrypt, offset by the - * number of bytes returned as actually written by the - * apr_crypto_block_encrypt() call. After this call, the context - * is cleaned and can be reused by apr_crypto_block_encrypt_init(). - * @param ctx The block context to use. - * @param out Address of a buffer to which data will be written. This - * buffer must already exist, and is usually the same - * buffer used by apr_evp_crypt(). See note. - * @param outlen Length of the output will be written here. - * @return APR_ECRYPT if an error occurred. - * @return APR_EPADDING if padding was enabled and the block was incorrectly - * formatted. - * @return APR_ENOTIMPL if not implemented. - */ - apr_status_t (*block_encrypt_finish)(apr_crypto_block_t *ctx, - unsigned char *out, apr_size_t *outlen); - - /** - * @brief Initialise a context for decrypting arbitrary data using the given key. - * @note If *ctx is NULL, a apr_crypto_block_t will be created from a pool. If - * *ctx is not NULL, *ctx must point at a previously created structure. - * @param p The pool to use. - * @param f The block factory to use. - * @param key The key structure. - * @param iv Optional initialisation vector. If the buffer pointed to is NULL, - * an IV will be created at random, in space allocated from the pool. - * If the buffer is not NULL, the IV in the buffer will be used. - * @param ctx The block context returned, see note. - * @param blockSize The block size of the cipher. - * @return Returns APR_ENOIV if an initialisation vector is required but not specified. - * Returns APR_EINIT if the backend failed to initialise the context. Returns - * APR_ENOTIMPL if not implemented. - */ - apr_status_t (*block_decrypt_init)(apr_pool_t *p, const apr_crypto_t *f, - const apr_crypto_key_t *key, const unsigned char *iv, - apr_crypto_block_t **ctx, apr_size_t *blockSize); - - /** - * @brief Decrypt data provided by in, write it to out. - * @note The number of bytes written will be written to outlen. If - * out is NULL, outlen will contain the maximum size of the - * buffer needed to hold the data, including any data - * generated by apr_crypto_block_decrypt_finish below. If *out points - * to NULL, a buffer sufficiently large will be created from - * the pool provided. If *out points to a not-NULL value, this - * value will be used as a buffer instead. - * @param ctx The block context to use. - * @param out Address of a buffer to which data will be written, - * see note. - * @param outlen Length of the output will be written here. - * @param in Address of the buffer to read. - * @param inlen Length of the buffer to read. - * @return APR_ECRYPT if an error occurred. Returns APR_ENOTIMPL if - * not implemented. - */ - apr_status_t (*block_decrypt)(apr_crypto_block_t *ctx, unsigned char **out, - apr_size_t *outlen, const unsigned char *in, apr_size_t inlen); - - /** - * @brief Decrypt final data block, write it to out. - * @note If necessary the final block will be written out after being - * padded. Typically the final block will be written to the - * same buffer used by apr_crypto_block_decrypt, offset by the - * number of bytes returned as actually written by the - * apr_crypto_block_decrypt() call. After this call, the context - * is cleaned and can be reused by apr_crypto_block_decrypt_init(). - * @param ctx The block context to use. - * @param out Address of a buffer to which data will be written. This - * buffer must already exist, and is usually the same - * buffer used by apr_evp_crypt(). See note. - * @param outlen Length of the output will be written here. - * @return APR_ECRYPT if an error occurred. - * @return APR_EPADDING if padding was enabled and the block was incorrectly - * formatted. - * @return APR_ENOTIMPL if not implemented. - */ - apr_status_t (*block_decrypt_finish)(apr_crypto_block_t *ctx, - unsigned char *out, apr_size_t *outlen); - - /** - * @brief Clean encryption / decryption context. - * @note After cleanup, a context is free to be reused if necessary. - * @param driver - driver to use - * @param ctx The block context to use. - * @return Returns APR_ENOTIMPL if not supported. - */ - apr_status_t (*block_cleanup)(apr_crypto_block_t *ctx); - - /** - * @brief Clean encryption / decryption factory. - * @note After cleanup, a factory is free to be reused if necessary. - * @param driver - driver to use - * @param f The factory to use. - * @return Returns APR_ENOTIMPL if not supported. - */ - apr_status_t (*cleanup)(apr_crypto_t *f); - - /** - * @brief Clean encryption / decryption factory. - * @note After cleanup, a factory is free to be reused if necessary. - * @param pool The pool to use. - * @return Returns APR_ENOTIMPL if not supported. - */ - apr_status_t (*shutdown)(apr_pool_t *p); - -}; - -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/include/private/apr_dbd_internal.h b/include/private/apr_dbd_internal.h deleted file mode 100644 index 671ffb21..00000000 --- a/include/private/apr_dbd_internal.h +++ /dev/null @@ -1,365 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* Overview of what this is and does: - * http://www.apache.org/~niq/dbd.html - */ - -#ifndef APR_DBD_INTERNAL_H -#define APR_DBD_INTERNAL_H - -#include <stdarg.h> - -#include "apr_dbd.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#define TXN_IGNORE_ERRORS(t) \ - ((t) && ((t)->mode & APR_DBD_TRANSACTION_IGNORE_ERRORS)) -#define TXN_NOTICE_ERRORS(t) \ - ((t) && !((t)->mode & APR_DBD_TRANSACTION_IGNORE_ERRORS)) - -#define TXN_DO_COMMIT(t) (!((t)->mode & APR_DBD_TRANSACTION_ROLLBACK)) -#define TXN_DO_ROLLBACK(t) ((t)->mode & APR_DBD_TRANSACTION_ROLLBACK) - -#define TXN_MODE_BITS \ - (APR_DBD_TRANSACTION_ROLLBACK|APR_DBD_TRANSACTION_IGNORE_ERRORS) - -struct apr_dbd_driver_t { - /** name */ - const char *name; - - /** init: allow driver to perform once-only initialisation. - * Called once only. May be NULL - */ - void (*init)(apr_pool_t *pool); - - /** native_handle: return the native database handle of the underlying db - * - * @param handle - apr_dbd handle - * @return - native handle - */ - void *(*native_handle)(apr_dbd_t *handle); - - /** open: obtain a database connection from the server rec. - * Must be explicitly closed when you're finished with it. - * WARNING: only use this when you need a connection with - * a lifetime other than a request - * - * @param pool - a pool to use for error messages (if any). - * @param params - connection parameters. - * @param error - descriptive error. - * @return database handle, or NULL on error. - */ - apr_dbd_t *(*open)(apr_pool_t *pool, const char *params, - const char **error); - - /** check_conn: check status of a database connection - * - * @param pool - a pool to use for error messages (if any). - * @param handle - the connection to check - * @return APR_SUCCESS or error - */ - apr_status_t (*check_conn)(apr_pool_t *pool, apr_dbd_t *handle); - - /** close: close/release a connection obtained from open() - * - * @param handle - the connection to release - * @return APR_SUCCESS or error - */ - apr_status_t (*close)(apr_dbd_t *handle); - - /** set_dbname: select database name. May be a no-op if not supported. - * - * @param pool - working pool - * @param handle - the connection - * @param name - the database to select - * @return 0 for success or error code - */ - int (*set_dbname)(apr_pool_t* pool, apr_dbd_t *handle, const char *name); - - /** transaction: start a transaction. May be a no-op. - * - * @param pool - a pool to use for error messages (if any). - * @param handle - the connection - * @param trans - ptr to a transaction. May be null on entry - * @return 0 for success or error code - */ - int (*start_transaction)(apr_pool_t *pool, apr_dbd_t *handle, - apr_dbd_transaction_t **trans); - - /** end_transaction: end a transaction - * (commit on success, rollback on error). - * May be a no-op. - * - * @param trans - the transaction. - * @return 0 for success or error code - */ - int (*end_transaction)(apr_dbd_transaction_t *trans); - - /** query: execute an SQL query that doesn't return a result set - * - * @param handle - the connection - * @param nrows - number of rows affected. - * @param statement - the SQL statement to execute - * @return 0 for success or error code - */ - int (*query)(apr_dbd_t *handle, int *nrows, const char *statement); - - /** select: execute an SQL query that returns a result set - * - * @param pool - pool to allocate the result set - * @param handle - the connection - * @param res - pointer to result set pointer. May point to NULL on entry - * @param statement - the SQL statement to execute - * @param random - 1 to support random access to results (seek any row); - * 0 to support only looping through results in order - * (async access - faster) - * @return 0 for success or error code - */ - int (*select)(apr_pool_t *pool, apr_dbd_t *handle, apr_dbd_results_t **res, - const char *statement, int random); - - /** num_cols: get the number of columns in a results set - * - * @param res - result set. - * @return number of columns - */ - int (*num_cols)(apr_dbd_results_t *res); - - /** num_tuples: get the number of rows in a results set - * of a synchronous select - * - * @param res - result set. - * @return number of rows, or -1 if the results are asynchronous - */ - int (*num_tuples)(apr_dbd_results_t *res); - - /** get_row: get a row from a result set - * - * @param pool - pool to allocate the row - * @param res - result set pointer - * @param row - pointer to row pointer. May point to NULL on entry - * @param rownum - row number, or -1 for "next row". Ignored if random - * access is not supported. - * @return 0 for success, -1 for rownum out of range or data finished - */ - int (*get_row)(apr_pool_t *pool, apr_dbd_results_t *res, - apr_dbd_row_t **row, int rownum); - - /** get_entry: get an entry from a row - * - * @param row - row pointer - * @param col - entry number - * @param val - entry to fill - * @return 0 for success, -1 for no data, +1 for general error - */ - const char* (*get_entry)(const apr_dbd_row_t *row, int col); - - /** error: get current error message (if any) - * - * @param handle - the connection - * @param errnum - error code from operation that returned an error - * @return the database current error message, or message for errnum - * (implementation-dependent whether errnum is ignored) - */ - const char *(*error)(apr_dbd_t *handle, int errnum); - - /** escape: escape a string so it is safe for use in query/select - * - * @param pool - pool to alloc the result from - * @param string - the string to escape - * @param handle - the connection - * @return the escaped, safe string - */ - const char *(*escape)(apr_pool_t *pool, const char *string, - apr_dbd_t *handle); - - /** prepare: prepare a statement - * - * @param pool - pool to alloc the result from - * @param handle - the connection - * @param query - the SQL query - * @param label - A label for the prepared statement. - * use NULL for temporary prepared statements - * (eg within a Request in httpd) - * @param nargs - number of parameters in the query - * @param nvals - number of values passed in p[b]query/select - * @param types - pointer to an array with types of parameters - * @param statement - statement to prepare. May point to null on entry. - * @return 0 for success or error code - */ - int (*prepare)(apr_pool_t *pool, apr_dbd_t *handle, const char *query, - const char *label, int nargs, int nvals, - apr_dbd_type_e *types, apr_dbd_prepared_t **statement); - - /** pvquery: query using a prepared statement + args - * - * @param pool - working pool - * @param handle - the connection - * @param nrows - number of rows affected. - * @param statement - the prepared statement to execute - * @param args - args to prepared statement - * @return 0 for success or error code - */ - int (*pvquery)(apr_pool_t *pool, apr_dbd_t *handle, int *nrows, - apr_dbd_prepared_t *statement, va_list args); - - /** pvselect: select using a prepared statement + args - * - * @param pool - working pool - * @param handle - the connection - * @param res - pointer to query results. May point to NULL on entry - * @param statement - the prepared statement to execute - * @param random - Whether to support random-access to results - * @param args - args to prepared statement - * @return 0 for success or error code - */ - int (*pvselect)(apr_pool_t *pool, apr_dbd_t *handle, - apr_dbd_results_t **res, - apr_dbd_prepared_t *statement, int random, va_list args); - - /** pquery: query using a prepared statement + args - * - * @param pool - working pool - * @param handle - the connection - * @param nrows - number of rows affected. - * @param statement - the prepared statement to execute - * @param args - args to prepared statement - * @return 0 for success or error code - */ - int (*pquery)(apr_pool_t *pool, apr_dbd_t *handle, int *nrows, - apr_dbd_prepared_t *statement, const char **args); - - /** pselect: select using a prepared statement + args - * - * @param pool - working pool - * @param handle - the connection - * @param res - pointer to query results. May point to NULL on entry - * @param statement - the prepared statement to execute - * @param random - Whether to support random-access to results - * @param args - args to prepared statement - * @return 0 for success or error code - */ - int (*pselect)(apr_pool_t *pool, apr_dbd_t *handle, - apr_dbd_results_t **res, apr_dbd_prepared_t *statement, - int random, const char **args); - - - /** get_name: get a column title from a result set - * - * @param res - result set pointer - * @param col - entry number - * @return param name, or NULL if col is out of bounds. - */ - const char* (*get_name)(const apr_dbd_results_t *res, int col); - - /** transaction_mode_get: get the mode of transaction - * - * @param trans - the transaction. - * @return mode of transaction - */ - int (*transaction_mode_get)(apr_dbd_transaction_t *trans); - - /** transaction_mode_set: get the mode of transaction - * - * @param trans - the transaction. - * @param mode - new mode of the transaction - * @return the mode of transaction in force after the call - */ - int (*transaction_mode_set)(apr_dbd_transaction_t *trans, int mode); - - /** format of prepared statement parameters */ - const char *pformat; - - /** pvbquery: query using a prepared statement + binary args - * - * @param pool - working pool - * @param handle - the connection - * @param nrows - number of rows affected. - * @param statement - the prepared statement to execute - * @param args - binary args to prepared statement - * @return 0 for success or error code - */ - int (*pvbquery)(apr_pool_t *pool, apr_dbd_t *handle, int *nrows, - apr_dbd_prepared_t *statement, va_list args); - - /** pvbselect: select using a prepared statement + binary args - * - * @param pool - working pool - * @param handle - the connection - * @param res - pointer to query results. May point to NULL on entry - * @param statement - the prepared statement to execute - * @param random - Whether to support random-access to results - * @param args - binary args to prepared statement - * @return 0 for success or error code - */ - int (*pvbselect)(apr_pool_t *pool, apr_dbd_t *handle, - apr_dbd_results_t **res, - apr_dbd_prepared_t *statement, int random, va_list args); - - /** pbquery: query using a prepared statement + binary args - * - * @param pool - working pool - * @param handle - the connection - * @param nrows - number of rows affected. - * @param statement - the prepared statement to execute - * @param args - binary args to prepared statement - * @return 0 for success or error code - */ - int (*pbquery)(apr_pool_t *pool, apr_dbd_t *handle, int *nrows, - apr_dbd_prepared_t *statement,const void **args); - - /** pbselect: select using a prepared statement + binary args - * - * @param pool - working pool - * @param handle - the connection - * @param res - pointer to query results. May point to NULL on entry - * @param statement - the prepared statement to execute - * @param random - Whether to support random-access to results - * @param args - binary args to prepared statement - * @return 0 for success or error code - */ - int (*pbselect)(apr_pool_t *pool, apr_dbd_t *handle, - apr_dbd_results_t **res, apr_dbd_prepared_t *statement, - int random, const void **args); - - /** datum_get: get a binary entry from a row - * - * @param row - row pointer - * @param col - entry number - * @param type - type of data to get - * @param data - pointer to data, allocated by the caller - * @return APR_SUCCESS, an error code on error or if col is out of bounds - */ - apr_status_t (*datum_get)(const apr_dbd_row_t *row, int col, - apr_dbd_type_e type, void *data); -}; - -/* Export mutex lock/unlock for drivers that need it - * deprecated; create a per-dbd mutex within the (*init) function - * to avoid blocking other providers running on other threads - */ -APU_DECLARE(apr_status_t) apr_dbd_mutex_lock(void); -APU_DECLARE(apr_status_t) apr_dbd_mutex_unlock(void); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/include/private/apr_dbd_odbc_v2.h b/include/private/apr_dbd_odbc_v2.h deleted file mode 100644 index dc7bc9c9..00000000 --- a/include/private/apr_dbd_odbc_v2.h +++ /dev/null @@ -1,119 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -/* ONLY USED FOR ODBC Version 2 -DODBCV2 -* -* Re-define everything to work (more-or-less) in an ODBC V2 environment -* Random access to retrieved rows is not supported - i.e. calls to apr_dbd_select() cannot -* have a 'random' argument of 1. apr_dbd_get_row() must always pass rownum as 0 (get next row) -* -*/ - -#define SQLHANDLE SQLHENV // Presumes that ENV, DBC, and STMT handles are all the same datatype -#define SQL_NULL_HANDLE 0 -#define SQL_HANDLE_STMT 1 -#define SQL_HANDLE_DBC 2 -#define SQL_HANDLE_ENV 3 -#define SQL_NO_DATA SQL_NO_DATA_FOUND - -#ifndef SQL_SUCCEEDED -#define SQL_SUCCEEDED(rc) (((rc)&(~1))==0) -#endif - -#undef SQLSetEnvAttr -#define SQLSetEnvAttr(henv, Attribute, Value, StringLength) (0) - -#undef SQLAllocHandle -#define SQLAllocHandle(type, parent, hndl) \ -( (type == SQL_HANDLE_STMT) ? SQLAllocStmt(parent, hndl) \ - : (type == SQL_HANDLE_ENV) ? SQLAllocEnv(hndl) \ - : SQLAllocConnect(parent, hndl) \ -) - -#undef SQLFreeHandle -#define SQLFreeHandle(type, hndl) \ -( (type == SQL_HANDLE_STMT) ? SQLFreeStmt(hndl, SQL_DROP) \ - : (type == SQL_HANDLE_ENV) ? SQLFreeEnv(hndl) \ - : SQLFreeConnect(hndl) \ -) - -#undef SQLGetDiagRec -#define SQLGetDiagRec(type, h, i, state, native, buffer, bufsize, reslen) \ - SQLError( (type == SQL_HANDLE_ENV) ? h : NULL, \ - (type == SQL_HANDLE_DBC) ? h : NULL, \ - (type == SQL_HANDLE_STMT) ? h : NULL, \ - state, native, buffer, bufsize, reslen) - -#undef SQLCloseCursor -#define SQLCloseCursor(stmt) SQLFreeStmt(stmt, SQL_CLOSE) - -#undef SQLGetConnectAttr -#define SQLGetConnectAttr(hdbc, fOption, ValuePtr, BufferLength, NULL) \ - SQLGetConnectOption(hdbc, fOption, ValuePtr) - -#undef SQLSetConnectAttr -#define SQLSetConnectAttr(hdbc, fOption, ValuePtr, BufferLength) \ - SQLSetConnectOption(hdbc, fOption, (SQLUINTEGER) ValuePtr) - -#undef SQLSetStmtAttr -#define SQLSetStmtAttr(hstmt, fOption, ValuePtr, BufferLength) (0); return APR_ENOTIMPL; - -#undef SQLEndTran -#define SQLEndTran(hType, hdbc,type) SQLTransact(henv, hdbc, type) - -#undef SQLFetchScroll -#define SQLFetchScroll(stmt, orient, rownum) (0); return APR_ENOTIMPL; - -#define SQL_DESC_TYPE SQL_COLUMN_TYPE -#define SQL_DESC_CONCISE_TYPE SQL_COLUMN_TYPE -#define SQL_DESC_DISPLAY_SIZE SQL_COLUMN_DISPLAY_SIZE -#define SQL_DESC_OCTET_LENGTH SQL_COLUMN_LENGTH -#define SQL_DESC_UNSIGNED SQL_COLUMN_UNSIGNED - -#undef SQLColAttribute -#define SQLColAttribute(s, c, f, a, l, m, n) SQLColAttributes(s, c, f, a, l, m, n) - -#define SQL_ATTR_ACCESS_MODE SQL_ACCESS_MODE -#define SQL_ATTR_AUTOCOMMIT SQL_AUTOCOMMIT -#define SQL_ATTR_CONNECTION_TIMEOUT 113 -#define SQL_ATTR_CURRENT_CATALOG SQL_CURRENT_QUALIFIER -#define SQL_ATTR_DISCONNECT_BEHAVIOR 114 -#define SQL_ATTR_ENLIST_IN_DTC 1207 -#define SQL_ATTR_ENLIST_IN_XA 1208 - -#define SQL_ATTR_CONNECTION_DEAD 1209 -#define SQL_CD_TRUE 1L /* Connection is closed/dead */ -#define SQL_CD_FALSE 0L /* Connection is open/available */ - -#define SQL_ATTR_LOGIN_TIMEOUT SQL_LOGIN_TIMEOUT -#define SQL_ATTR_ODBC_CURSORS SQL_ODBC_CURSORS -#define SQL_ATTR_PACKET_SIZE SQL_PACKET_SIZE -#define SQL_ATTR_QUIET_MODE SQL_QUIET_MODE -#define SQL_ATTR_TRACE SQL_OPT_TRACE -#define SQL_ATTR_TRACEFILE SQL_OPT_TRACEFILE -#define SQL_ATTR_TRANSLATE_LIB SQL_TRANSLATE_DLL -#define SQL_ATTR_TRANSLATE_OPTION SQL_TRANSLATE_OPTION -#define SQL_ATTR_TXN_ISOLATION SQL_TXN_ISOLATION - -#define SQL_ATTR_CURSOR_SCROLLABLE -1 - -#define SQL_C_SBIGINT (SQL_BIGINT+SQL_SIGNED_OFFSET) /* SIGNED BIGINT */ -#define SQL_C_UBIGINT (SQL_BIGINT+SQL_UNSIGNED_OFFSET) /* UNSIGNED BIGINT */ - -#define SQL_FALSE 0 -#define SQL_TRUE 1 - diff --git a/include/private/apr_dbm_private.h b/include/private/apr_dbm_private.h deleted file mode 100644 index 020d3a6b..00000000 --- a/include/private/apr_dbm_private.h +++ /dev/null @@ -1,121 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef APR_DBM_PRIVATE_H -#define APR_DBM_PRIVATE_H - -#include "apr.h" -#include "apr_errno.h" -#include "apr_pools.h" -#include "apr_dbm.h" -#include "apr_file_io.h" - -#include "apu.h" - -/* ### for now, include the DBM selection; this will go away once we start - ### building and linking all of the DBMs at once. */ -#include "apu_select_dbm.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** @internal */ - -/** - * Most DBM libraries take a POSIX mode for creating files. Don't trust - * the mode_t type, some platforms may not support it, int is safe. - */ -APU_DECLARE(int) apr_posix_perms2mode(apr_fileperms_t perm); - -/** - * Structure to describe the operations of the DBM - */ -typedef struct { - /** The name of the DBM Type */ - const char *name; - - /** Open the DBM */ - apr_status_t (*open)(apr_dbm_t **pdb, const char *pathname, - apr_int32_t mode, apr_fileperms_t perm, - apr_pool_t *pool); - - /** Close the DBM */ - void (*close)(apr_dbm_t *dbm); - - /** Fetch a dbm record value by key */ - apr_status_t (*fetch)(apr_dbm_t *dbm, apr_datum_t key, - apr_datum_t * pvalue); - - /** Store a dbm record value by key */ - apr_status_t (*store)(apr_dbm_t *dbm, apr_datum_t key, apr_datum_t value); - - /** Delete a dbm record value by key */ - apr_status_t (*del)(apr_dbm_t *dbm, apr_datum_t key); - - /** Search for a key within the dbm */ - int (*exists)(apr_dbm_t *dbm, apr_datum_t key); - - /** Retrieve the first record key from a dbm */ - apr_status_t (*firstkey)(apr_dbm_t *dbm, apr_datum_t * pkey); - - /** Retrieve the next record key from a dbm */ - apr_status_t (*nextkey)(apr_dbm_t *dbm, apr_datum_t * pkey); - - /** Proactively toss any memory associated with the apr_datum_t. */ - void (*freedatum)(apr_dbm_t *dbm, apr_datum_t data); - - /** Get the names that the DBM will use for a given pathname. */ - void (*getusednames)(apr_pool_t *pool, - const char *pathname, - const char **used1, - const char **used2); - -} apr_dbm_type_t; - - -/** - * The actual DBM - */ -struct apr_dbm_t -{ - /** Associated pool */ - apr_pool_t *pool; - - /** pointer to DB Implementation Specific data */ - void *file; - - /** Current integer error code */ - int errcode; - /** Current string error code */ - const char *errmsg; - - /** the type of DBM */ - const apr_dbm_type_t *type; -}; - - -/* Declare all of the DBM provider tables */ -APU_MODULE_DECLARE_DATA extern const apr_dbm_type_t apr_dbm_type_sdbm; -APU_MODULE_DECLARE_DATA extern const apr_dbm_type_t apr_dbm_type_gdbm; -APU_MODULE_DECLARE_DATA extern const apr_dbm_type_t apr_dbm_type_ndbm; -APU_MODULE_DECLARE_DATA extern const apr_dbm_type_t apr_dbm_type_db; - -#ifdef __cplusplus -} -#endif - -#endif /* APR_DBM_PRIVATE_H */ diff --git a/include/private/apu_config.hnw b/include/private/apu_config.hnw deleted file mode 100644 index 9c6c73e4..00000000 --- a/include/private/apu_config.hnw +++ /dev/null @@ -1,53 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * Note: This is a NetWare specific version of apu_config.hnw. It is copied - * as apu_config.h at the start of a NetWare build. - */ - -#ifdef NETWARE - -#ifndef APU_CONFIG_H -#define APU_CONFIG_H - -/* Always compile Netware with DSO support for .nlm builds */ -#define APU_DSO_BUILD 0 - -/* - * NetWare does not have GDBM, and we always use the bundled (new) Expat - */ - -/* Define if you have the gdbm library (-lgdbm). */ -/* #undef HAVE_LIBGDBM */ - -/* define if Expat 1.0 or 1.1 was found */ -/* #undef APR_HAVE_OLD_EXPAT */ - -/* NetWare uses its own ICONV implementation. */ -#define HAVE_ICONV_H 1 - -/* - * check for newer NDKs which use now correctly 'const char*' with iconv. - */ -#include <ndkvers.h> -#if (CURRENT_NDK_THRESHOLD >= 705110000) -#define APU_ICONV_INBUF_CONST -#endif - -#endif /* APU_CONFIG_H */ -#endif /* NETWARE */ - diff --git a/include/private/apu_config.hw b/include/private/apu_config.hw deleted file mode 100644 index 015dd526..00000000 --- a/include/private/apu_config.hw +++ /dev/null @@ -1,46 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * Note: This is a Windows specific version of apu_config.hw. It is copied - * as apu_config.h at the start of a Windows build. - */ - -#ifdef WIN32 - -#ifndef APU_CONFIG_H -#define APU_CONFIG_H - -/* Compile win32 with DSO support for .dll builds */ -#ifdef APU_DECLARE_STATIC -#define APU_DSO_BUILD 0 -#else -#define APU_DSO_BUILD 1 -#endif - -/* - * Windows does not have GDBM, and we always use the bundled (new) Expat - */ - -/* Define if you have the gdbm library (-lgdbm). */ -/* #undef HAVE_LIBGDBM */ - -/* define if Expat 1.0 or 1.1 was found */ -/* #undef APR_HAVE_OLD_EXPAT */ - - -#endif /* APU_CONFIG_H */ -#endif /* WIN32 */ diff --git a/include/private/apu_internal.h b/include/private/apu_internal.h deleted file mode 100644 index c95c9d50..00000000 --- a/include/private/apu_internal.h +++ /dev/null @@ -1,73 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "apr.h" -#include "apr_dso.h" -#include "apu.h" - -#ifndef APU_INTERNAL_H -#define APU_INTERNAL_H - -#if APU_DSO_BUILD - -#ifdef __cplusplus -extern "C" { -#endif - -/* For modular dso loading, an internal interlock to allow us to - * continue to initialize modules by multiple threads, the caller - * of apu_dso_load must lock first, and not unlock until any init - * finalization is complete. - */ -apr_status_t apu_dso_init(apr_pool_t *pool); - -apr_status_t apu_dso_mutex_lock(void); -apr_status_t apu_dso_mutex_unlock(void); - -apr_status_t apu_dso_load(apr_dso_handle_t **dso, apr_dso_handle_sym_t *dsoptr, const char *module, - const char *modsym, apr_pool_t *pool); - -#if APR_HAS_LDAP - -/* For LDAP internal builds, wrap our LDAP namespace */ - -struct apr__ldap_dso_fntable { - int (*info)(apr_pool_t *pool, apr_ldap_err_t **result_err); - int (*init)(apr_pool_t *pool, LDAP **ldap, const char *hostname, - int portno, int secure, apr_ldap_err_t **result_err); - int (*ssl_init)(apr_pool_t *pool, const char *cert_auth_file, - int cert_file_type, apr_ldap_err_t **result_err); - int (*ssl_deinit)(void); - int (*get_option)(apr_pool_t *pool, LDAP *ldap, int option, - void *outvalue, apr_ldap_err_t **result_err); - int (*set_option)(apr_pool_t *pool, LDAP *ldap, int option, - const void *invalue, apr_ldap_err_t **result_err); - apr_status_t (*rebind_init)(apr_pool_t *pool); - apr_status_t (*rebind_add)(apr_pool_t *pool, LDAP *ld, - const char *bindDN, const char *bindPW); - apr_status_t (*rebind_remove)(LDAP *ld); -}; - -#endif /* APR_HAS_LDAP */ - -#ifdef __cplusplus -} -#endif - -#endif /* APU_DSO_BUILD */ - -#endif /* APU_INTERNAL_H */ - diff --git a/include/private/apu_select_dbm.h.in b/include/private/apu_select_dbm.h.in deleted file mode 100644 index b69aec03..00000000 --- a/include/private/apu_select_dbm.h.in +++ /dev/null @@ -1,28 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef APU_SELECT_DBM_H -#define APU_SELECT_DBM_H - -/* -** The following macros control what features APRUTIL will use -*/ -#define APU_USE_SDBM @apu_use_sdbm@ -#define APU_USE_NDBM @apu_use_ndbm@ -#define APU_USE_GDBM @apu_use_gdbm@ -#define APU_USE_DB @apu_use_db@ - -#endif /* !APU_SELECT_DBM_H */ diff --git a/include/private/apu_select_dbm.hw b/include/private/apu_select_dbm.hw deleted file mode 100644 index 97c7b6c2..00000000 --- a/include/private/apu_select_dbm.hw +++ /dev/null @@ -1,28 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef APU_SELECT_DBM_H -#define APU_SELECT_DBM_H - -/* -** The following macros control what features APRUTIL will use -*/ -#define APU_USE_SDBM 1 -#define APU_USE_GDBM 0 -#define APU_USE_NDBM 0 -#define APU_USE_DB 0 - -#endif /* !APU_SELECT_DBM_H */ |