]> git.sur5r.net Git - openldap/blobdiff - libraries/librewrite/rewrite-int.h
Fix ITS#2142
[openldap] / libraries / librewrite / rewrite-int.h
index 1a21ca80d39a1164ad3b17a1c6f54364878d4861..b8bc161a54d34cec1f727baad1c72fc43f7b1253 100644 (file)
@@ -58,7 +58,8 @@
 /*
  * Submatch escape char
  */
-//#define REWRITE_SUBMATCH_ESCAPE                      '\\'
+/* the '\' conflicts with slapd.conf parsing */
+/* #define REWRITE_SUBMATCH_ESCAPE                     '\\' */
 #define REWRITE_SUBMATCH_ESCAPE                 '%'
 
 /*
@@ -242,7 +243,9 @@ struct rewrite_session {
        Avlnode                        *ls_vars;
 #ifdef USE_REWRITE_LDAP_PVT_THREADS
        ldap_pvt_thread_rdwr_t          ls_vars_mutex;
+       ldap_pvt_thread_mutex_t         ls_mutex;
 #endif /* USE_REWRITE_LDAP_PVT_THREADS */
+       int                             ls_count;
 };
 
 /*
@@ -312,6 +315,7 @@ struct rewrite_info {
  * PRIVATE *
  ***********/
 
+LDAP_REWRITE_V (struct rewrite_context*) __curr_context;
 
 /*
  * Maps
@@ -320,14 +324,14 @@ struct rewrite_info {
 /*
  * Parses a map (also in legacy 'x' version)
  */
-extern struct rewrite_map *
+LDAP_REWRITE_F (struct rewrite_map *)
 rewrite_map_parse(
                struct rewrite_info *info,
                const char *s,
                const char **end
 );
 
-extern struct rewrite_map *
+LDAP_REWRITE_F (struct rewrite_map *)
 rewrite_xmap_parse(
                struct rewrite_info *info,
                const char *s,
@@ -337,7 +341,7 @@ rewrite_xmap_parse(
 /*
  * Resolves key in val by means of map (also in legacy 'x' version)
  */
-extern int
+LDAP_REWRITE_F (int)
 rewrite_map_apply(
                struct rewrite_info *info,
                struct rewrite_op *op,
@@ -346,7 +350,7 @@ rewrite_map_apply(
                struct berval *val
 );
 
-extern int
+LDAP_REWRITE_F (int)
 rewrite_xmap_apply(
                struct rewrite_info *info,
                struct rewrite_op *op,
@@ -363,7 +367,7 @@ rewrite_xmap_apply(
 /*
  * Compiles a substitution pattern
  */
-extern struct rewrite_subst *
+LDAP_REWRITE_F (struct rewrite_subst *)
 rewrite_subst_compile(
                struct rewrite_info *info,
                const char *result
@@ -373,7 +377,7 @@ rewrite_subst_compile(
  * Substitutes a portion of rewritten string according to substitution
  * pattern using submatches
  */
-extern int
+LDAP_REWRITE_F (int)
 rewrite_subst_apply(
                struct rewrite_info *info,
                struct rewrite_op *op,
@@ -391,7 +395,7 @@ rewrite_subst_apply(
 /*
  * Compiles the rule and appends it at the running context
  */
-extern int
+LDAP_REWRITE_F (int)
 rewrite_rule_compile(
                struct rewrite_info *info,
                struct rewrite_context *context,
@@ -409,7 +413,7 @@ rewrite_rule_compile(
  *      REWRITE_REGEXEC_UNWILL: rule matched; force 'unwilling to perform'
  *      REWRITE_REGEXEC_ERR:   an error occurred
  */
-extern int
+LDAP_REWRITE_F (int)
 rewrite_rule_apply(
                struct rewrite_info *info,
                struct rewrite_op *op,
@@ -425,7 +429,7 @@ rewrite_rule_apply(
 /*
  * Fetches a struct rewrite_session
  */
-extern struct rewrite_session *
+LDAP_REWRITE_F (struct rewrite_session *)
 rewrite_session_find(
                 struct rewrite_info *info,
                 const void *cookie
@@ -434,7 +438,7 @@ rewrite_session_find(
 /*
  * Defines and inits a variable with session scope
  */
-extern int
+LDAP_REWRITE_F (int)
 rewrite_session_var_set(
                 struct rewrite_info *info,
                 const void *cookie,
@@ -445,7 +449,7 @@ rewrite_session_var_set(
 /*
  * Gets a var with session scope
  */
-extern int
+LDAP_REWRITE_F (int)
 rewrite_session_var_get(
                 struct rewrite_info *info,
                 const void *cookie,
@@ -456,7 +460,7 @@ rewrite_session_var_get(
 /*
  * Deletes a session
  */
-extern int
+LDAP_REWRITE_F (int)
 rewrite_session_delete(
                 struct rewrite_info *info,
                 const void *cookie
@@ -465,7 +469,7 @@ rewrite_session_delete(
 /*
  * Destroys the cookie tree
  */
-extern int
+LDAP_REWRITE_F (int)
 rewrite_session_destroy(
                 struct rewrite_info *info
 );
@@ -478,7 +482,7 @@ rewrite_session_destroy(
 /*
  * Finds a var
  */
-extern struct rewrite_var *
+LDAP_REWRITE_F (struct rewrite_var *)
 rewrite_var_find(
                 Avlnode *tree,
                 const char *name
@@ -487,7 +491,7 @@ rewrite_var_find(
 /*
  * Inserts a newly created var
  */
-extern struct rewrite_var *
+LDAP_REWRITE_F (struct rewrite_var *)
 rewrite_var_insert(
                 Avlnode **tree,
                 const char *name,
@@ -497,7 +501,7 @@ rewrite_var_insert(
 /*
  * Sets/inserts a var
  */
-extern struct rewrite_var *
+LDAP_REWRITE_F (struct rewrite_var *)
 rewrite_var_set(
                 Avlnode **tree,
                 const char *name,
@@ -508,7 +512,7 @@ rewrite_var_set(
 /*
  * Deletes a var tree
  */
-extern int
+LDAP_REWRITE_F (int)
 rewrite_var_delete(
                 Avlnode *tree
 );
@@ -521,7 +525,7 @@ rewrite_var_delete(
 /*
  * Finds the context named rewriteContext in the context tree
  */
-extern struct rewrite_context *
+LDAP_REWRITE_F (struct rewrite_context *)
 rewrite_context_find(
                struct rewrite_info *info,
                const char *rewriteContext
@@ -530,7 +534,7 @@ rewrite_context_find(
 /*
  * Creates a new context called rewriteContext and stores in into the tree
  */
-extern struct rewrite_context *
+LDAP_REWRITE_F (struct rewrite_context *)
 rewrite_context_create(
                struct rewrite_info *info,
                const char *rewriteContext
@@ -542,7 +546,7 @@ rewrite_context_create(
  *      STOP:   fine, rule matched; stop processing following rules
  *      UNWILL: rule matched; force 'unwilling to perform'
  */
-extern int
+LDAP_REWRITE_F (int)
 rewrite_context_apply(
                struct rewrite_info *info,
                struct rewrite_op *op,