Module loading working on FreeBSD (and unbreak).
[exim.git] / src / src / lookups / passwd.c
CommitLineData
0a49a7a4 1/* $Cambridge: exim/src/src/lookups/passwd.c,v 1.5 2009/11/16 19:50:38 nm4 Exp $ */
0756eb3c
PH
2
3/*************************************************
4* Exim - an Internet mail transport agent *
5*************************************************/
6
0a49a7a4 7/* Copyright (c) University of Cambridge 1995 - 2009 */
0756eb3c
PH
8/* See the file NOTICE for conditions of use and distribution. */
9
10#include "../exim.h"
0756eb3c
PH
11
12
13
14/*************************************************
15* Open entry point *
16*************************************************/
17
18/* See local README for interface description */
19
e6d225ae 20static void *
0756eb3c
PH
21passwd_open(uschar *filename, uschar **errmsg)
22{
23filename = filename; /* Keep picky compilers happy */
24errmsg = errmsg;
25return (void *)(-1); /* Just return something non-null */
26}
27
28
29
30
31/*************************************************
32* Find entry point for passwd *
33*************************************************/
34
35/* See local README for interface description */
36
e6d225ae 37static int
0756eb3c
PH
38passwd_find(void *handle, uschar *filename, uschar *keystring, int length,
39 uschar **result, uschar **errmsg, BOOL *do_cache)
40{
41struct passwd *pw;
42
43handle = handle; /* Keep picky compilers happy */
44filename = filename;
45length = length;
46errmsg = errmsg;
47do_cache = do_cache;
48
49if (!route_finduser(keystring, &pw, NULL)) return FAIL;
50*result = string_sprintf("*:%d:%d:%s:%s:%s", (int)pw->pw_uid, (int)pw->pw_gid,
51 pw->pw_gecos, pw->pw_dir, pw->pw_shell);
52return OK;
53}
54
e6d225ae
DW
55static lookup_info _lookup_info = {
56 US"passwd", /* lookup name */
57 lookup_querystyle, /* query-style lookup */
58 passwd_open, /* open function */
59 NULL, /* no check function */
60 passwd_find, /* find function */
61 NULL, /* no close function */
62 NULL, /* no tidy function */
63 NULL /* no quoting function */
64};
65
66#ifdef DYNLOOKUP
67#define passwd_lookup_module_info _lookup_module_info
68#endif
69
70static lookup_info *_lookup_list[] = { &_lookup_info };
71lookup_module_info passwd_lookup_module_info = { LOOKUP_MODULE_INFO_MAGIC, _lookup_list, 1 };
72
0756eb3c 73/* End of lookups/passwd.c */