Postfix3.3.1
総合概要
データ構造
ファイル
ファイル一覧
大域各種
postfix-3.3.1
src
util
nvtable.c
[詳解]
1
/*++
2
/* NAME
3
/* nvtable 3
4
/* SUMMARY
5
/* attribute list manager
6
/* SYNOPSIS
7
/* #include <nvtable.h>
8
/*
9
/* typedef struct {
10
/* .in +4
11
/* char *key;
12
/* char *value;
13
/* /* private fields... */
14
/* .in -4
15
/* } NVTABLE_INFO;
16
/*
17
/* NVTABLE *nvtable_create(size)
18
/* int size;
19
/*
20
/* NVTABLE_INFO *nvtable_update(table, key, value)
21
/* NVTABLE *table;
22
/* const char *key;
23
/* const char *value;
24
/*
25
/* char *nvtable_find(table, key)
26
/* NVTABLE *table;
27
/* const char *key;
28
/*
29
/* NVTABLE_INFO *nvtable_locate(table, key)
30
/* NVTABLE *table;
31
/* const char *key;
32
/*
33
/* void nvtable_delete(table, key)
34
/* NVTABLE *table;
35
/* const char *key;
36
/*
37
/* void nvtable_free(table)
38
/* NVTABLE *table;
39
/*
40
/* void nvtable_walk(table, action, ptr)
41
/* NVTABLE *table;
42
/* void (*action)(NVTABLE_INFO *, char *ptr);
43
/* char *ptr;
44
/*
45
/* NVTABLE_INFO **nvtable_list(table)
46
/* NVTABLE *table;
47
/* DESCRIPTION
48
/* This module maintains one or more attribute lists. It provides a
49
/* more convenient interface than hash tables, although it uses the
50
/* same underlying implementation. Each attribute list entry consists
51
/* of a unique string-valued lookup key and a string value.
52
/*
53
/* nvtable_create() creates a table of the specified size and returns a
54
/* pointer to the result.
55
/*
56
/* nvtable_update() stores or updates a (key, value) pair in the specified
57
/* table and returns a pointer to the resulting entry. The key and the
58
/* value are copied.
59
/*
60
/* nvtable_find() returns the value that was stored under the given key,
61
/* or a null pointer if it was not found. In order to distinguish
62
/* a null value from a non-existent value, use nvtable_locate().
63
/*
64
/* nvtable_locate() returns a pointer to the entry that was stored
65
/* for the given key, or a null pointer if it was not found.
66
/*
67
/* nvtable_delete() removes one entry that was stored under the given key.
68
/*
69
/* nvtable_free() destroys a hash table, including contents.
70
/*
71
/* nvtable_walk() invokes the action function for each table entry, with
72
/* a pointer to the entry as its argument. The ptr argument is passed
73
/* on to the action function.
74
/*
75
/* nvtable_list() returns a null-terminated list of pointers to
76
/* all elements in the named table. The list should be passed to
77
/* myfree().
78
/* RESTRICTIONS
79
/* A callback function should not modify the attribute list that is
80
/* specified to its caller.
81
/* DIAGNOSTICS
82
/* The following conditions are reported and cause the program to
83
/* terminate immediately: memory allocation failure; an attempt
84
/* to delete a non-existent entry.
85
/* SEE ALSO
86
/* mymalloc(3) memory management wrapper
87
/* htable(3) hash table manager
88
/* LICENSE
89
/* .ad
90
/* .fi
91
/* The Secure Mailer license must be distributed with this software.
92
/* AUTHOR(S)
93
/* Wietse Venema
94
/* IBM T.J. Watson Research
95
/* P.O. Box 704
96
/* Yorktown Heights, NY 10598, USA
97
/*--*/
98
99
/* C library */
100
101
#include <
sys_defs.h
>
102
103
/* Utility library. */
104
105
#include <
mymalloc.h
>
106
#include <
htable.h
>
107
#include <
nvtable.h
>
108
109
/* nvtable_update - update or enter (key, value) pair */
110
111
NVTABLE_INFO
*
nvtable_update
(
NVTABLE
* table,
const
char
*key,
const
char
*value)
112
{
113
NVTABLE_INFO
*ht;
114
115
if
((ht =
htable_locate
(table, key)) != 0) {
116
myfree
(ht->
value
);
117
}
else
{
118
ht =
htable_enter
(table, key, (
void
*) 0);
119
}
120
ht->
value
=
mystrdup
(value);
121
return
(ht);
122
}
HTABLE_INFO::value
void * value
Definition:
htable.h:18
myfree
void myfree(void *ptr)
Definition:
mymalloc.c:207
htable_locate
HTABLE_INFO * htable_locate(HTABLE *table, const char *key)
Definition:
htable.c:242
mystrdup
char * mystrdup(const char *str)
Definition:
mymalloc.c:225
nvtable_update
NVTABLE_INFO * nvtable_update(NVTABLE *table, const char *key, const char *value)
Definition:
nvtable.c:111
HTABLE
Definition:
htable.h:25
nvtable.h
sys_defs.h
HTABLE_INFO
Definition:
htable.h:16
mymalloc.h
htable.h
htable_enter
HTABLE_INFO * htable_enter(HTABLE *table, const char *key, void *value)
Definition:
htable.c:212
2018年11月10日(土) 18時59分59秒作成 - Postfix3.3.1 / 構成:
1.8.9.1