1/* addentry.c */
2/* $OpenLDAP$ */
3/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
4 *
5 * Copyright 1998-2011 The OpenLDAP Foundation.
6 * All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted only as authorized by the OpenLDAP
10 * Public License.
11 *
12 * A copy of this license is available in the file LICENSE in the
13 * top-level directory of the distribution or, alternatively, at
14 * <http://www.OpenLDAP.org/license.html>.
15 */
16/* Portions Copyright (c) 1990 Regents of the University of Michigan.
17 * All rights reserved.
18 */
19
20#include "portable.h"
21
22#include <stdio.h>
23
24#include <ac/stdlib.h>
25
26#include <ac/socket.h>
27#include <ac/string.h>
28#include <ac/time.h>
29
30#include "ldap-int.h"
31
32LDAPMessage *
33ldap_delete_result_entry( LDAPMessage **list, LDAPMessage *e )
34{
35	LDAPMessage	*tmp, *prev = NULL;
36
37	assert( list != NULL );
38	assert( e != NULL );
39
40	for ( tmp = *list; tmp != NULL && tmp != e; tmp = tmp->lm_chain )
41		prev = tmp;
42
43	if ( tmp == NULL )
44		return( NULL );
45
46	if ( prev == NULL ) {
47		if ( tmp->lm_chain )
48			tmp->lm_chain->lm_chain_tail = (*list)->lm_chain_tail;
49		*list = tmp->lm_chain;
50	} else {
51		prev->lm_chain = tmp->lm_chain;
52		if ( prev->lm_chain == NULL )
53			(*list)->lm_chain_tail = prev;
54	}
55	tmp->lm_chain = NULL;
56
57	return( tmp );
58}
59
60void
61ldap_add_result_entry( LDAPMessage **list, LDAPMessage *e )
62{
63	assert( list != NULL );
64	assert( e != NULL );
65
66	e->lm_chain = *list;
67	if ( *list )
68		e->lm_chain_tail = (*list)->lm_chain_tail;
69	else
70		e->lm_chain_tail = e;
71	*list = e;
72}
73