X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=include%2Frewrite.h;h=155f5044524ba08a642d9f920371e1204ba61c18;hb=4fcab959c02ef360373e055f8a739f16286e8112;hp=cacc69ae9229ef9625a341e4f6f10a80288812f6;hpb=8d2079660f51dfffd23b1333611dd4ba57c94fc9;p=openldap diff --git a/include/rewrite.h b/include/rewrite.h index cacc69ae92..155f504452 100644 --- a/include/rewrite.h +++ b/include/rewrite.h @@ -1,36 +1,27 @@ -/****************************************************************************** +/* $OpenLDAP$ + */ +/* This work is part of OpenLDAP Software . * - * Copyright (C) 2000 Pierangelo Masarati, + * Copyright 2000-2005 The OpenLDAP Foundation. + * Portions Copyright 2000-2003 Pierangelo Masarati. * All rights reserved. * - * Permission is granted to anyone to use this software for any purpose - * on any computer system, and to alter it and redistribute it, subject - * to the following restrictions: - * - * 1. The author is not responsible for the consequences of use of this - * software, no matter how awful, even if they arise from flaws in it. - * - * 2. The origin of this software must not be misrepresented, either by - * explicit claim or by omission. Since few users ever read sources, - * credits should appear in the documentation. - * - * 3. Altered versions must be plainly marked as such, and must not be - * misrepresented as being the original software. Since few users - * ever read sources, credits should appear in the documentation. - * - * 4. This notice may not be removed or altered. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted only as authorized by the OpenLDAP + * Public License. * - ******************************************************************************/ + * A copy of this license is available in file LICENSE in the + * top-level directory of the distribution or, alternatively, at + * . + */ +/* ACKNOWLEDGEMENT: + * This work was initially developed by Pierangelo Masarati for + * inclusion in OpenLDAP Software. + */ #ifndef REWRITE_H #define REWRITE_H -#ifdef HAVE_STRING_H -#include -#endif - -LDAP_BEGIN_DECL - /* * Default rewrite context */ @@ -47,13 +38,12 @@ LDAP_BEGIN_DECL * Rewrite internal status returns */ #define REWRITE_SUCCESS LDAP_SUCCESS -#define REWRITE_ERR LDAP_OPERATIONS_ERROR -#define REWRITE_NO_SUCH_OBJECT LDAP_NO_SUCH_OBJECT +#define REWRITE_ERR LDAP_OTHER /* * Rewrite modes (input values for rewrite_info_init); determine the * behavior in case a null or non existent context is required: - * + * * REWRITE_MODE_ERR error * REWRITE_MODE_OK no error but no rewrite * REWRITE_MODE_COPY_INPUT a copy of the input is returned @@ -66,7 +56,7 @@ LDAP_BEGIN_DECL /* * Rewrite status returns - * + * * REWRITE_REGEXEC_OK success (result may be empty in case * of no match) * REWRITE_REGEXEC_ERR error (internal error, @@ -75,21 +65,50 @@ LDAP_BEGIN_DECL * REWRITE_REGEXEC_UNWILLING the server should issue an 'unwilling * to perform' error */ -#define REWRITE_REGEXEC_OK 0x0000 -#define REWRITE_REGEXEC_ERR 0x0001 -#define REWRITE_REGEXEC_STOP 0x0002 -#define REWRITE_REGEXEC_UNWILLING 0x0004 +#define REWRITE_REGEXEC_OK (0) +#define REWRITE_REGEXEC_ERR (-1) +#define REWRITE_REGEXEC_STOP (-2) +#define REWRITE_REGEXEC_UNWILLING (-3) +#define REWRITE_REGEXEC_USER (1) /* and above: LDAP errors */ + +/* + * Rewrite variable flags + * REWRITE_VAR_INSERT insert mode (default) when adding + * a variable; if not set during value + * update, the variable is not inserted + * if not present + * REWRITE_VAR_UPDATE update mode (default) when updating + * a variable; if not set during insert, + * the value is not updated if the + * variable already exists + * REWRITE_VAR_COPY_NAME copy the variable name; if not set, + * the name is not copied; be sure the + * referenced string is available for + * the entire life scope of the variable. + * REWRITE_VAR_COPY_VALUE copy the variable value; if not set, + * the value is not copied; be sure the + * referenced string is available for + * the entire life scope of the variable. + */ +#define REWRITE_VAR_NONE 0x0000 +#define REWRITE_VAR_INSERT 0x0001 +#define REWRITE_VAR_UPDATE 0x0002 +#define REWRITE_VAR_COPY_NAME 0x0004 +#define REWRITE_VAR_COPY_VALUE 0x0008 /* * Rewrite info */ struct rewrite_info; -struct berval; + +struct berval; /* avoid include */ + +LDAP_BEGIN_DECL /* * Inits the info */ -extern struct rewrite_info * +LDAP_REWRITE_F (struct rewrite_info *) rewrite_info_init( int mode ); @@ -97,9 +116,9 @@ rewrite_info_init( /* * Cleans up the info structure */ -extern int +LDAP_REWRITE_F (int) rewrite_info_delete( - struct rewrite_info *info + struct rewrite_info **info ); @@ -114,7 +133,7 @@ rewrite_info_delete( * rewriteMap mapType mapName [mapArgs] * rewriteParam paramName paramValue */ -extern int +LDAP_REWRITE_F (int) rewrite_parse( struct rewrite_info *info, const char *fname, @@ -123,6 +142,15 @@ rewrite_parse( char **argv ); +/* + * process a config file that was already opened. Uses rewrite_parse. + */ +LDAP_REWRITE_F (int) +rewrite_read( + FILE *fin, + struct rewrite_info *info +); + /* * Rewrites a string according to context. * If the engine is off, OK is returned, but the return string will be NULL. @@ -133,12 +161,12 @@ rewrite_parse( * * What to do in case of non-existing rewrite context is still an issue. * Four possibilities: - * - error, - * - ok with NULL result, + * - error, + * - ok with NULL result, * - ok with copy of string as result, * - use the default rewrite context. */ -extern int +LDAP_REWRITE_F (int) rewrite( struct rewrite_info *info, const char *rewriteContext, @@ -149,7 +177,7 @@ rewrite( /* * Same as above; the cookie relates the rewrite to a session */ -extern int +LDAP_REWRITE_F (int) rewrite_session( struct rewrite_info *info, const char *rewriteContext, @@ -161,7 +189,7 @@ rewrite_session( /* * Inits a session */ -extern struct rewrite_session * +LDAP_REWRITE_F (struct rewrite_session *) rewrite_session_init( struct rewrite_info *info, const void *cookie @@ -170,18 +198,23 @@ rewrite_session_init( /* * Defines and inits a variable with session scope */ -extern int -rewrite_session_var_set( +LDAP_REWRITE_F (int) +rewrite_session_var_set_f( struct rewrite_info *info, const void *cookie, const char *name, - const char *value + const char *value, + int flags ); +#define rewrite_session_var_set(info, cookie, name, value) \ + rewrite_session_var_set_f((info), (cookie), (name), (value), \ + REWRITE_VAR_INSERT|REWRITE_VAR_UPDATE|REWRITE_VAR_COPY_NAME|REWRITE_VAR_COPY_VALUE) + /* * Deletes a session */ -extern int +LDAP_REWRITE_F (int) rewrite_session_delete( struct rewrite_info *info, const void *cookie @@ -195,7 +228,7 @@ rewrite_session_delete( /* * Defines and inits a variable with global scope */ -extern int +LDAP_REWRITE_F (int) rewrite_param_set( struct rewrite_info *info, const char *name, @@ -205,17 +238,17 @@ rewrite_param_set( /* * Gets a var with global scope */ -extern int +LDAP_REWRITE_F (int) rewrite_param_get( struct rewrite_info *info, const char *name, struct berval *value ); -/* +/* * Destroys the parameter tree */ -extern int +LDAP_REWRITE_F (int) rewrite_param_destroy( struct rewrite_info *info ); @@ -223,4 +256,3 @@ rewrite_param_destroy( LDAP_END_DECL #endif /* REWRITE_H */ -