-/* $Cambridge: exim/src/src/lookups/nisplus.c,v 1.5 2009/11/16 19:50:38 nm4 Exp $ */
-
/*************************************************
* Exim - an Internet mail transport agent *
*************************************************/
-/* Copyright (c) University of Cambridge 1995 - 2009 */
+/* Copyright (c) University of Cambridge 1995 - 2015 */
/* See the file NOTICE for conditions of use and distribution. */
#include "../exim.h"
static int
nisplus_find(void *handle, uschar *filename, uschar *query, int length,
- uschar **result, uschar **errmsg, BOOL *do_cache)
+ uschar **result, uschar **errmsg, uint *do_cache)
{
int i;
int ssize = 0;
if (field_name == NULL)
{
- yield = string_cat(yield, &ssize, &offset,US tc->tc_name,
- Ustrlen(tc->tc_name));
- yield = string_cat(yield, &ssize, &offset, US"=", 1);
+ yield = string_cat(yield, &ssize, &offset,US tc->tc_name);
+ yield = string_catn(yield, &ssize, &offset, US"=", 1);
/* Quote the value if it contains spaces or is empty */
if (value[0] == 0 || Ustrchr(value, ' ') != NULL)
{
int j;
- yield = string_cat(yield, &ssize, &offset, US"\"", 1);
+ yield = string_catn(yield, &ssize, &offset, US"\"", 1);
for (j = 0; j < len; j++)
{
if (value[j] == '\"' || value[j] == '\\')
- yield = string_cat(yield, &ssize, &offset, US"\\", 1);
- yield = string_cat(yield, &ssize, &offset, value+j, 1);
+ yield = string_catn(yield, &ssize, &offset, US"\\", 1);
+ yield = string_catn(yield, &ssize, &offset, value+j, 1);
}
- yield = string_cat(yield, &ssize, &offset, US"\"", 1);
+ yield = string_catn(yield, &ssize, &offset, US"\"", 1);
}
- else yield = string_cat(yield, &ssize, &offset, value, len);
+ else yield = string_catn(yield, &ssize, &offset, value, len);
- yield = string_cat(yield, &ssize, &offset, US" ", 1);
+ yield = string_catn(yield, &ssize, &offset, US" ", 1);
}
/* When the specified field is found, grab its data and finish */
return quoted;
}
+
+/*************************************************
+* Version reporting entry point *
+*************************************************/
+
+/* See local README for interface description. */
+
+#include "../version.h"
+
+void
+nisplus_version_report(FILE *f)
+{
+#ifdef DYNLOOKUP
+fprintf(f, "Library version: NIS+: Exim version %s\n", EXIM_VERSION_STR);
+#endif
+}
+
+
static lookup_info _lookup_info = {
US"nisplus", /* lookup name */
lookup_querystyle, /* query-style lookup */
nisplus_find, /* find function */
NULL, /* no close function */
NULL, /* no tidy function */
- nisplus_quote /* quoting function */
+ nisplus_quote, /* quoting function */
+ nisplus_version_report /* version reporting */
};
#ifdef DYNLOOKUP