X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=src%2Fsrc%2Flookups%2Fnis.c;h=1faa884a166667309e1ebcd14327ab2039bc76e7;hb=bfe645c1570343d3adca657ab67998e122ca8792;hp=9cb8090e65e9f3e48d4b4fa09b30e15254a6c702;hpb=184e88237dea64ce48076cdd0184612d057cbafd;p=exim.git diff --git a/src/src/lookups/nis.c b/src/src/lookups/nis.c index 9cb8090e6..1faa884a1 100644 --- a/src/src/lookups/nis.c +++ b/src/src/lookups/nis.c @@ -1,27 +1,12 @@ -/* $Cambridge: exim/src/src/lookups/nis.c,v 1.4 2007/01/08 10:50:19 ph10 Exp $ */ - /************************************************* * Exim - an Internet mail transport agent * *************************************************/ -/* Copyright (c) University of Cambridge 1995 - 2007 */ +/* Copyright (c) University of Cambridge 1995 - 2009 */ /* See the file NOTICE for conditions of use and distribution. */ #include "../exim.h" #include "lf_functions.h" -#include "nis.h" - -/* We can't just compile this code and allow the library mechanism to omit the -functions if they are not wanted, because we need to have the NIS header -available for compiling. Therefore, compile these functions only if LOOKUP_NIS -is defined. However, some compilers don't like compiling empty modules, so keep -them happy with a dummy when skipping the rest. Make it reference itself to -stop picky compilers complaining that it is unused, and put in a dummy argument -to stop even pickier compilers complaining about infinite loops. */ - -#ifndef LOOKUP_NIS -static void dummy(int x) { dummy(x-1); } -#else #include @@ -33,7 +18,7 @@ static void dummy(int x) { dummy(x-1); } /* See local README for interface description. This serves for both the "nis" and "nis0" lookup types. */ -void * +static void * nis_open(uschar *filename, uschar **errmsg) { char *nis_domain; @@ -55,9 +40,9 @@ return nis_domain; for nis0 because they are so short it isn't worth trying to use any common code. */ -int +static int nis_find(void *handle, uschar *filename, uschar *keystring, int length, - uschar **result, uschar **errmsg, BOOL *do_cache) + uschar **result, uschar **errmsg, uint *do_cache) { int rc; uschar *nis_data; @@ -81,9 +66,9 @@ return (rc == YPERR_KEY || rc == YPERR_MAP)? FAIL : DEFER; /* See local README for interface description. */ -int +static int nis0_find(void *handle, uschar *filename, uschar *keystring, int length, - uschar **result, uschar **errmsg, BOOL *do_cache) + uschar **result, uschar **errmsg, uint *do_cache) { int rc; uschar *nis_data; @@ -99,6 +84,54 @@ if ((rc = yp_match(CS handle, CS filename, CS keystring, length + 1, return (rc == YPERR_KEY || rc == YPERR_MAP)? FAIL : DEFER; } -#endif /* LOOKUP_NIS */ + + +/************************************************* +* Version reporting entry point * +*************************************************/ + +/* See local README for interface description. */ + +#include "../version.h" + +void +nis_version_report(FILE *f) +{ +#ifdef DYNLOOKUP +fprintf(f, "Library version: NIS: Exim version %s\n", EXIM_VERSION_STR); +#endif +} + + +static lookup_info nis_lookup_info = { + US"nis", /* lookup name */ + 0, /* not abs file, not query style*/ + nis_open, /* open function */ + NULL, /* check function */ + nis_find, /* find function */ + NULL, /* no close function */ + NULL, /* no tidy function */ + NULL, /* no quoting function */ + nis_version_report /* version reporting */ +}; + +static lookup_info nis0_lookup_info = { + US"nis0", /* lookup name */ + 0, /* not absfile, not query style */ + nis_open, /* sic */ /* open function */ + NULL, /* check function */ + nis0_find, /* find function */ + NULL, /* no close function */ + NULL, /* no tidy function */ + NULL, /* no quoting function */ + NULL /* no version reporting (redundant) */ +}; + +#ifdef DYNLOOKUP +#define nis_lookup_module_info _lookup_module_info +#endif + +static lookup_info *_lookup_list[] = { &nis_lookup_info, &nis0_lookup_info }; +lookup_module_info nis_lookup_module_info = { LOOKUP_MODULE_INFO_MAGIC, _lookup_list, 2 }; /* End of lookups/nis.c */