xref: /netbsd-src/external/ibm-public/postfix/dist/src/util/dict_static.c (revision a5847cc334d9a7029f6352b847e9e8d71a0f9e0c)
1 /*	$NetBSD: dict_static.c,v 1.1.1.1 2009/06/23 10:08:59 tron Exp $	*/
2 
3 /*++
4 /* NAME
5 /*	dict_static 3
6 /* SUMMARY
7 /*	dictionary manager interface to static variables
8 /* SYNOPSIS
9 /*	#include <dict_static.h>
10 /*
11 /*	DICT	*dict_static_open(name, dummy, dict_flags)
12 /*	const char *name;
13 /*	int	dummy;
14 /*	int	dict_flags;
15 /* DESCRIPTION
16 /*	dict_static_open() implements a dummy dictionary that returns
17 /*	as lookup result the dictionary name, regardless of the lookup
18 /*	key value.
19 /*
20 /*	The \fIdummy\fR argument is ignored.
21 /* SEE ALSO
22 /*	dict(3) generic dictionary manager
23 /* LICENSE
24 /* .ad
25 /* .fi
26 /*	The Secure Mailer license must be distributed with this software.
27 /* AUTHOR(S)
28 /*	jeffm
29 /*	ghostgun.com
30 /*--*/
31 
32 /* System library. */
33 
34 #include "sys_defs.h"
35 #include <stdio.h>			/* sprintf() prototype */
36 #include <stdlib.h>
37 #include <unistd.h>
38 #include <string.h>
39 
40 /* Utility library. */
41 
42 #include "mymalloc.h"
43 #include "msg.h"
44 #include "dict.h"
45 #include "dict_static.h"
46 
47 /* dict_static_lookup - access static value*/
48 
49 static const char *dict_static_lookup(DICT *dict, const char *unused_name)
50 {
51     dict_errno = 0;
52 
53     return (dict->name);
54 }
55 
56 /* dict_static_close - close static dictionary */
57 
58 static void dict_static_close(DICT *dict)
59 {
60     dict_free(dict);
61 }
62 
63 /* dict_static_open - make association with static variable */
64 
65 DICT   *dict_static_open(const char *name, int unused_flags, int dict_flags)
66 {
67     DICT   *dict;
68 
69     dict = dict_alloc(DICT_TYPE_STATIC, name, sizeof(*dict));
70     dict->lookup = dict_static_lookup;
71     dict->close = dict_static_close;
72     dict->flags = dict_flags | DICT_FLAG_FIXED;
73     return (DICT_DEBUG (dict));
74 }
75