26.11. slapi_filter_join_ex()

Recursively joins the two specified filters using one of the following filter types: LDAP_FILTER_AND, LDAP_FILTER_OR, or LDAP_FILTER_NOT. When specifying the filter type LDAP_FILTER_NOT, the second filter should be NULL.
Description

Filters of the type LDAP_FILTER_AND, LDAP_FILTER_OR, and LDAP_FILTER_NOT generally consist of one or more other filters. For example:

					(&(ou=Accounting)(l=Sunnyvale))
					(|(ou=Accounting)(l=Sunnyvale))
					(!(l=Sunnyvale))
Each of these examples contain one or more LDAP_FILTER_EQUALITY filters.
Call the slapi_filter_join() function to create a new filter of the type LDAP_FILTER_AND, LDAP_FILTER_OR, or LDAP_FILTER_NOT.
Syntax

#include "slapi-plugin.h"
Slapi_Filter *slapi_filter_join_ex( int ftype, Slapi_Filter *f1, Slapi_Filter *f2, int recurse_always );

Parameters

This function takes the following parameters:

ftype
Type of composite filter you want to create.
f1
First filter that you want to join.
f2
Second filter that you want to join. If ftype is LDAP_FILTER_NOT, specify NULL for this argument.
recurse_always
Recursively joins filters f1 and f2.
Returns

This function returns the new filter constructed from the other two filters.

Memory Concerns

The f1 and f2 filters are neither copied nor freed during the join process, but the resulting filter will have references pointing to these two filters.

See Also

slapi_filter_join() uses slapi_filter_join_ex() with recurse_always argument set to 1.