00001 #ifndef REGEXP_H 00002 #define REGEXP_H 00003 00004 /*****************************************************************************/ 00005 /******************************** Documentation ******************************/ 00006 /*****************************************************************************/ 00007 00008 /** 00009 * \file 00010 * Public interface for regular expression routines. 00011 */ 00012 00013 /*****************************************************************************/ 00014 /******************************* Include Files *******************************/ 00015 /*****************************************************************************/ 00016 00017 #include <pcre.h> 00018 #include "logging.h" 00019 00020 /*****************************************************************************/ 00021 /*********************************** Defines *********************************/ 00022 /*****************************************************************************/ 00023 00024 /*****************************************************************************/ 00025 /******************************* Type Definitions ****************************/ 00026 /*****************************************************************************/ 00027 00028 /** 00029 * Encapsulate the all the pieces necessary to manage a PCRE regular expression 00030 * operation. 00031 */ 00032 struct regexp_t { 00033 const char *pattern; /**< the regexp pattern to match */ 00034 pcre *re; /**< the compiled regexp */ 00035 const char *subject; /**< the string being searched */ 00036 int error; /**< the error code associated with this operation */ 00037 int num_matches; /**< a count of how many matches were found */ 00038 int matches[30]; /**< index into the matches; MUST be multiple of 3 */ 00039 }; 00040 00041 /*****************************************************************************/ 00042 /************************* External Global Variables ***********************/ 00043 /*****************************************************************************/ 00044 00045 /*****************************************************************************/ 00046 /**************************** Exported Functions ***************************/ 00047 /*****************************************************************************/ 00048 00049 const char *regexp_error_string(int error); 00050 int regexp_compile(struct regexp_t *regexp); 00051 int regexp_search(struct regexp_t *regexp, const char *subject); 00052 int regexp_substring(struct regexp_t *regexp, const int match_number, char* buffer, int buffer_size); 00053 int regexp_free(struct regexp_t *regexp); 00054 00055 #endif 00056