Asterisk - The Open Source Telephony Project
GIT-master-f36a736
utils
db1-ast
hash
hsearch.c
Go to the documentation of this file.
1
/*-
2
* Copyright (c) 1990, 1993
3
* The Regents of the University of California. All rights reserved.
4
*
5
* This code is derived from software contributed to Berkeley by
6
* Margo Seltzer.
7
*
8
* Redistribution and use in source and binary forms, with or without
9
* modification, are permitted provided that the following conditions
10
* are met:
11
* 1. Redistributions of source code must retain the above copyright
12
* notice, this list of conditions and the following disclaimer.
13
* 2. Redistributions in binary form must reproduce the above copyright
14
* notice, this list of conditions and the following disclaimer in the
15
* documentation and/or other materials provided with the distribution.
16
* 3. All advertising materials mentioning features or use of this software
17
* must display the following acknowledgement:
18
* This product includes software developed by the University of
19
* California, Berkeley and its contributors.
20
* 4. Neither the name of the University nor the names of its contributors
21
* may be used to endorse or promote products derived from this software
22
* without specific prior written permission.
23
*
24
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
25
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
28
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
30
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
31
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
33
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34
* SUCH DAMAGE.
35
*/
36
37
#if defined(LIBC_SCCS) && !defined(lint)
38
static
char
sccsid[] =
"@(#)hsearch.c 8.4 (Berkeley) 7/21/94"
;
39
#endif
/* LIBC_SCCS and not lint */
40
41
#include <sys/types.h>
42
43
#include <fcntl.h>
44
#include <string.h>
45
46
#include "../include/db.h"
47
#include "
search.h
"
48
49
static
DB
*
dbp
=
NULL
;
50
static
ENTRY
retval
;
51
52
extern
int
53
hcreate
(nel)
54
u_int nel;
55
{
56
HASHINFO
info
;
57
58
info
.nelem = nel;
59
info
.bsize = 256;
60
info
.ffactor = 8;
61
info
.cachesize = 0;
62
info
.hash =
NULL
;
63
info
.lorder = 0;
64
dbp
= (
DB
*)
__hash_open
(
NULL
, O_CREAT | O_RDWR, 0600, &
info
, 0);
65
return
((
int
)
dbp
);
66
}
67
68
extern
ENTRY
*
69
hsearch
(
item
, action)
70
ENTRY
item
;
71
ACTION
action;
72
{
73
DBT
key,
val
;
74
int
status
;
75
76
if
(!
dbp
)
77
return
(
NULL
);
78
key.
data
= (u_char *)
item
.key;
79
key.
size
= strlen(
item
.key) + 1;
80
81
if
(action ==
ENTER
) {
82
val
.data = (u_char *)
item
.data;
83
val
.size = strlen(
item
.data) + 1;
84
status
= (
dbp
->put)(
dbp
, &key, &
val
,
R_NOOVERWRITE
);
85
if
(
status
)
86
return
(
NULL
);
87
}
else
{
88
/* FIND */
89
status
= (
dbp
->get)(
dbp
, &key, &
val
, 0);
90
if
(
status
)
91
return
(
NULL
);
92
else
93
item
.data = (
char
*)
val
.data;
94
}
95
retval
.
key
=
item
.key;
96
retval
.
data
=
item
.data;
97
return
(&
retval
);
98
}
99
100
extern
void
101
hdestroy
()
102
{
103
if
(
dbp
) {
104
(void)(
dbp
->close)(
dbp
);
105
dbp
=
NULL
;
106
}
107
}
status
jack_status_t status
Definition:
app_jack.c:146
ENTER
@ ENTER
Definition:
app_meetme.c:684
R_NOOVERWRITE
#define R_NOOVERWRITE
Definition:
db.h:98
__hash_open
DB * __hash_open(char *file, int flags, int mode, const HASHINFO *info, int dflags) const
Definition:
hash.c:96
ACTION
ACTION
Definition:
hash.h:40
dbp
static DB * dbp
Definition:
hsearch.c:49
hcreate
int hcreate(u_int nel)
Definition:
hsearch.c:53
hsearch
ENTRY * hsearch(ENTRY item, ACTION action)
Definition:
hsearch.c:69
hdestroy
void hdestroy()
Definition:
hsearch.c:101
retval
static ENTRY retval
Definition:
hsearch.c:50
sip_to_pjsip.info
def info(msg)
Definition:
sip_to_pjsip.py:1313
NULL
#define NULL
Definition:
resample.c:96
search.h
DBT
Definition:
db.h:85
DBT::data
void * data
Definition:
db.h:86
DBT::size
size_t size
Definition:
db.h:87
HASHINFO
Definition:
db.h:163
__db
Definition:
db.h:129
entry
Definition:
search.h:40
entry::key
char * key
Definition:
search.h:41
entry::data
char * data
Definition:
search.h:42
val
Definition:
ast_expr2.c:325
item
static struct aco_type item
Definition:
test_config.c:1463
Generated on Wed Dec 18 2024 20:04:23 for Asterisk - The Open Source Telephony Project by
1.9.4