1/************************************************* 2* Perl-Compatible Regular Expressions * 3*************************************************/ 4 5/* PCRE is a library of functions to support regular expressions whose syntax 6and semantics are as close as possible to those of the Perl 5 language. 7 8 Written by Philip Hazel 9 Copyright (c) 1997-2009 University of Cambridge 10 11----------------------------------------------------------------------------- 12Redistribution and use in source and binary forms, with or without 13modification, are permitted provided that the following conditions are met: 14 15 * Redistributions of source code must retain the above copyright notice, 16 this list of conditions and the following disclaimer. 17 18 * Redistributions in binary form must reproduce the above copyright 19 notice, this list of conditions and the following disclaimer in the 20 documentation and/or other materials provided with the distribution. 21 22 * Neither the name of the University of Cambridge nor the names of its 23 contributors may be used to endorse or promote products derived from 24 this software without specific prior written permission. 25 26THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 27AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 28IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 29ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 30LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 31CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 32SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 33INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 34CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 35ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 36POSSIBILITY OF SUCH DAMAGE. 37----------------------------------------------------------------------------- 38*/ 39 40 41/* This module contains the external function pcre_config(). */ 42 43 44#ifdef HAVE_CONFIG_H 45#include "config.h" 46#endif 47 48#include "pcre_internal.h" 49 50 51/************************************************* 52* Return info about what features are configured * 53*************************************************/ 54 55/* This function has an extensible interface so that additional items can be 56added compatibly. 57 58Arguments: 59 what what information is required 60 where where to put the information 61 62Returns: 0 if data returned, negative on error 63*/ 64 65PCRE_EXP_DEFN int PCRE_CALL_CONVENTION 66pcre_config(int what, void *where) 67{ 68switch (what) 69 { 70 case PCRE_CONFIG_UTF8: 71#ifdef SUPPORT_UTF8 72 *((int *)where) = 1; 73#else 74 *((int *)where) = 0; 75#endif 76 break; 77 78 case PCRE_CONFIG_UNICODE_PROPERTIES: 79#ifdef SUPPORT_UCP 80 *((int *)where) = 1; 81#else 82 *((int *)where) = 0; 83#endif 84 break; 85 86 case PCRE_CONFIG_NEWLINE: 87 *((int *)where) = NEWLINE; 88 break; 89 90 case PCRE_CONFIG_BSR: 91#ifdef BSR_ANYCRLF 92 *((int *)where) = 1; 93#else 94 *((int *)where) = 0; 95#endif 96 break; 97 98 case PCRE_CONFIG_LINK_SIZE: 99 *((int *)where) = LINK_SIZE; 100 break; 101 102 case PCRE_CONFIG_POSIX_MALLOC_THRESHOLD: 103 *((int *)where) = POSIX_MALLOC_THRESHOLD; 104 break; 105 106 case PCRE_CONFIG_MATCH_LIMIT: 107 *((unsigned long int *)where) = MATCH_LIMIT; 108 break; 109 110 case PCRE_CONFIG_MATCH_LIMIT_RECURSION: 111 *((unsigned long int *)where) = MATCH_LIMIT_RECURSION; 112 break; 113 114 case PCRE_CONFIG_STACKRECURSE: 115#ifdef NO_RECURSE 116 *((int *)where) = 0; 117#else 118 *((int *)where) = 1; 119#endif 120 break; 121 122 default: return PCRE_ERROR_BADOPTION; 123 } 124 125return 0; 126} 127 128/* End of pcre_config.c */ 129