LTP GCOV extension - code coverage report
Current view: directory - ext/pcre/pcrelib - pcre_info.c
Test: PHP Code Coverage
Date: 2007-04-10 Instrumented lines: 10
Code covered: 70.0 % Executed lines: 7
Legend: not executed executed

       1                 : /*************************************************
       2                 : *      Perl-Compatible Regular Expressions       *
       3                 : *************************************************/
       4                 : 
       5                 : /* PCRE is a library of functions to support regular expressions whose syntax
       6                 : and semantics are as close as possible to those of the Perl 5 language.
       7                 : 
       8                 :                        Written by Philip Hazel
       9                 :            Copyright (c) 1997-2006 University of Cambridge
      10                 : 
      11                 : -----------------------------------------------------------------------------
      12                 : Redistribution and use in source and binary forms, with or without
      13                 : modification, 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                 : 
      26                 : THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
      27                 : AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
      28                 : IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
      29                 : ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
      30                 : LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
      31                 : CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
      32                 : SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
      33                 : INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
      34                 : CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
      35                 : ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
      36                 : POSSIBILITY OF SUCH DAMAGE.
      37                 : -----------------------------------------------------------------------------
      38                 : */
      39                 : 
      40                 : 
      41                 : /* This module contains the external function pcre_info(), which gives some
      42                 : information about a compiled pattern. However, use of this function is now
      43                 : deprecated, as it has been superseded by pcre_fullinfo(). */
      44                 : 
      45                 : 
      46                 : #include "pcre_internal.h"
      47                 : 
      48                 : 
      49                 : /*************************************************
      50                 : * (Obsolete) Return info about compiled pattern  *
      51                 : *************************************************/
      52                 : 
      53                 : /* This is the original "info" function. It picks potentially useful data out
      54                 : of the private structure, but its interface was too rigid. It remains for
      55                 : backwards compatibility. The public options are passed back in an int - though
      56                 : the re->options field has been expanded to a long int, all the public options
      57                 : at the low end of it, and so even on 16-bit systems this will still be OK.
      58                 : Therefore, I haven't changed the API for pcre_info().
      59                 : 
      60                 : Arguments:
      61                 :   argument_re   points to compiled code
      62                 :   optptr        where to pass back the options
      63                 :   first_byte    where to pass back the first character,
      64                 :                 or -1 if multiline and all branches start ^,
      65                 :                 or -2 otherwise
      66                 : 
      67                 : Returns:        number of capturing subpatterns
      68                 :                 or negative values on error
      69                 : */
      70                 : 
      71                 : PCRE_DATA_SCOPE int
      72                 : pcre_info(const pcre *argument_re, int *optptr, int *first_byte)
      73           21069 : {
      74                 : real_pcre internal_re;
      75           21069 : const real_pcre *re = (const real_pcre *)argument_re;
      76           21069 : if (re == NULL) return PCRE_ERROR_NULL;
      77           21069 : if (re->magic_number != MAGIC_NUMBER)
      78                 :   {
      79               0 :   re = _pcre_try_flipped(re, &internal_re, NULL, NULL);
      80               0 :   if (re == NULL) return PCRE_ERROR_BADMAGIC;
      81                 :   }
      82           21069 : if (optptr != NULL) *optptr = (int)(re->options & PUBLIC_OPTIONS);
      83           21069 : if (first_byte != NULL)
      84               0 :   *first_byte = ((re->options & PCRE_FIRSTSET) != 0)? re->first_byte :
      85                 :      ((re->options & PCRE_STARTLINE) != 0)? -1 : -2;
      86           21069 : return re->top_bracket;
      87                 : }
      88                 : 
      89                 : /* End of pcre_info.c */

Generated by: LTP GCOV extension version 1.5