X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=include%2Frewrite.h;h=155f5044524ba08a642d9f920371e1204ba61c18;hb=2ba90833c762a73af7c77392f9bbdf5c2bba881e;hp=1c74f073e4afd31178a127f8a5f35f07c24a3b5f;hpb=0552b1c53fa44790811f44cac5e14fc52fbd2ace;p=openldap diff --git a/include/rewrite.h b/include/rewrite.h index 1c74f073e4..155f504452 100644 --- a/include/rewrite.h +++ b/include/rewrite.h @@ -1,32 +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. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted only as authorized by the OpenLDAP + * Public License. * - * 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. - * - ******************************************************************************/ + * 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 -LDAP_BEGIN_DECL - /* * Default rewrite context */ @@ -43,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 @@ -62,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, @@ -71,10 +65,36 @@ 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 @@ -83,6 +103,8 @@ struct rewrite_info; struct berval; /* avoid include */ +LDAP_BEGIN_DECL + /* * Inits the info */ @@ -96,7 +118,7 @@ rewrite_info_init( */ LDAP_REWRITE_F (int) rewrite_info_delete( - struct rewrite_info *info + struct rewrite_info **info ); @@ -120,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. @@ -130,8 +161,8 @@ 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. */ @@ -168,13 +199,18 @@ rewrite_session_init( * Defines and inits a variable with session scope */ LDAP_REWRITE_F (int) -rewrite_session_var_set( +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 */ @@ -209,7 +245,7 @@ rewrite_param_get( struct berval *value ); -/* +/* * Destroys the parameter tree */ LDAP_REWRITE_F (int)