X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=include%2Frewrite.h;h=155f5044524ba08a642d9f920371e1204ba61c18;hb=2ba90833c762a73af7c77392f9bbdf5c2bba881e;hp=24456e77f4b1422906bcfbbd55022b0403913cbe;hpb=2711d717bdbf5ab16b56959aaf083c517d5df5a3;p=openldap diff --git a/include/rewrite.h b/include/rewrite.h index 24456e77f4..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. - * - * 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. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted only as authorized by the OpenLDAP + * Public License. * - * 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,8 +38,7 @@ 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 @@ -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 ); @@ -177,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 */