summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/src/drtables.c3
-rw-r--r--src/src/functions.h6
-rw-r--r--src/src/lookupapi.h6
-rw-r--r--src/src/lookups/cdb.c202
-rw-r--r--src/src/lookups/dbmdb.c24
-rw-r--r--src/src/lookups/dnsdb.c6
-rw-r--r--src/src/lookups/dsearch.c10
-rw-r--r--src/src/lookups/ibase.c49
-rw-r--r--src/src/lookups/json.c8
-rw-r--r--src/src/lookups/ldap.c18
-rw-r--r--src/src/lookups/lf_check_file.c4
-rw-r--r--src/src/lookups/lf_functions.h2
-rw-r--r--src/src/lookups/lmdb.c4
-rw-r--r--src/src/lookups/lsearch.c40
-rw-r--r--src/src/lookups/mysql.c6
-rw-r--r--src/src/lookups/nis.c10
-rw-r--r--src/src/lookups/nisplus.c6
-rw-r--r--src/src/lookups/oracle.c6
-rw-r--r--src/src/lookups/passwd.c6
-rw-r--r--src/src/lookups/pgsql.c6
-rw-r--r--src/src/lookups/redis.c10
-rw-r--r--src/src/lookups/spf.c6
-rw-r--r--src/src/lookups/sqlite.c9
-rw-r--r--src/src/lookups/testdb.c6
-rw-r--r--src/src/lookups/whoson.c6
-rw-r--r--src/src/search.c11
26 files changed, 226 insertions, 244 deletions
diff --git a/src/src/drtables.c b/src/src/drtables.c
index f1053bbda..7fa8ca469 100644
--- a/src/src/drtables.c
+++ b/src/src/drtables.c
@@ -546,8 +546,7 @@ if (lookup_list[pos])
/* need to insert it, so move all the other items up
(last slot is still empty, of course) */
- memmove(&lookup_list[pos+1],
- &lookup_list[pos],
+ memmove(&lookup_list[pos+1], &lookup_list[pos],
sizeof(lookup_info *) * (lookup_list_count-pos-1));
}
lookup_list[pos] = info;
diff --git a/src/src/functions.h b/src/src/functions.h
index f789c5e2d..90e6e6791 100644
--- a/src/src/functions.h
+++ b/src/src/functions.h
@@ -438,12 +438,12 @@ extern void route_init(void);
extern void route_show_supported(FILE *);
extern void route_tidyup(void);
-extern uschar *search_find(void *, uschar *, uschar *, int, const uschar *, int,
- int, int *);
+extern uschar *search_find(void *, const uschar *, uschar *, int,
+ const uschar *, int, int, int *);
extern int search_findtype(const uschar *, int);
extern int search_findtype_partial(const uschar *, int *, const uschar **, int *,
int *);
-extern void *search_open(uschar *, int, int, uid_t *, gid_t *);
+extern void *search_open(const uschar *, int, int, uid_t *, gid_t *);
extern void search_tidyup(void);
extern void set_process_info(const char *, ...) PRINTF_FUNCTION(1,2);
extern void sha1_end(hctx *, const uschar *, int, uschar *);
diff --git a/src/src/lookupapi.h b/src/src/lookupapi.h
index 9055f5239..07e7af91b 100644
--- a/src/src/lookupapi.h
+++ b/src/src/lookupapi.h
@@ -18,18 +18,18 @@ typedef struct lookup_info {
uschar *name; /* e.g. "lsearch" */
int type; /* query/singlekey/abs-file */
void *(*open)( /* open function */
- uschar *, /* file name for those that have one */
+ const uschar *, /* file name for those that have one */
uschar **); /* for error message */
BOOL (*check)( /* file checking function */
void *, /* handle */
- uschar *, /* file name */
+ const uschar *, /* file name */
int, /* modemask for file checking */
uid_t *, /* owners for file checking */
gid_t *, /* owngroups for file checking */
uschar **); /* for error messages */
int (*find)( /* find function */
void *, /* handle */
- uschar *, /* file name or NULL */
+ const uschar *, /* file name or NULL */
const uschar *, /* key or query */
int, /* length of key or query */
uschar **, /* for returning answer */
diff --git a/src/src/lookups/cdb.c b/src/src/lookups/cdb.c
index 5cae1535f..c9a5de1d8 100644
--- a/src/src/lookups/cdb.c
+++ b/src/src/lookups/cdb.c
@@ -136,108 +136,109 @@ cdb_bread(int fd,
static uint32
cdb_unpack(uschar *buf)
{
- uint32 num;
- num = buf[3]; num <<= 8;
- num += buf[2]; num <<= 8;
- num += buf[1]; num <<= 8;
- num += buf[0];
- return num;
+uint32 num;
+num = buf[3]; num <<= 8;
+num += buf[2]; num <<= 8;
+num += buf[1]; num <<= 8;
+num += buf[0];
+return num;
}
static void cdb_close(void *handle);
static void *
-cdb_open(uschar *filename,
- uschar **errmsg)
+cdb_open(const uschar * filename, uschar ** errmsg)
{
- int fileno;
- struct cdb_state *cdbp;
- struct stat statbuf;
- void * mapbuf;
-
- fileno = Uopen(filename, O_RDONLY, 0);
- if (fileno == -1) {
- int save_errno = errno;
- *errmsg = string_open_failed(errno, "%s for cdb lookup", filename);
- errno = save_errno;
- return NULL;
+int fileno;
+struct cdb_state *cdbp;
+struct stat statbuf;
+void * mapbuf;
+
+if ((fileno = Uopen(filename, O_RDONLY, 0)) < 0)
+ {
+ int save_errno = errno;
+ *errmsg = string_open_failed(errno, "%s for cdb lookup", filename);
+ errno = save_errno;
+ return NULL;
}
- if (fstat(fileno, &statbuf) == 0) {
- /* If this is a valid file, then it *must* be at least
- * CDB_HASH_TABLE bytes long */
- if (statbuf.st_size < CDB_HASH_TABLE) {
- int save_errno = errno;
- *errmsg = string_open_failed(errno,
- "%s too short for cdb lookup",
- filename);
- errno = save_errno;
- return NULL;
- }
- } else {
- int save_errno = errno;
- *errmsg = string_open_failed(errno,
- "fstat(%s) failed - cannot do cdb lookup",
- filename);
- errno = save_errno;
- return NULL;
+if (fstat(fileno, &statbuf) != 0)
+ {
+ int save_errno = errno;
+ *errmsg = string_open_failed(errno,
+ "fstat(%s) failed - cannot do cdb lookup",
+ filename);
+ errno = save_errno;
+ return NULL;
+ }
+
+/* If this is a valid file, then it *must* be at least
+CDB_HASH_TABLE bytes long */
+
+if (statbuf.st_size < CDB_HASH_TABLE)
+ {
+ int save_errno = errno;
+ *errmsg = string_open_failed(errno,
+ "%s too short for cdb lookup",
+ filename);
+ errno = save_errno;
+ return NULL;
}
- /* Having got a file open we need the structure to put things in */
- cdbp = store_get(sizeof(struct cdb_state), FALSE);
- /* store_get() does not return if memory was not available... */
- /* preload the structure.... */
- cdbp->fileno = fileno;
- cdbp->filelen = statbuf.st_size;
- cdbp->cdb_map = NULL;
- cdbp->cdb_offsets = NULL;
+/* Having got a file open we need the structure to put things in */
+cdbp = store_get(sizeof(struct cdb_state), FALSE);
+/* store_get() does not return if memory was not available... */
+/* preload the structure.... */
+cdbp->fileno = fileno;
+cdbp->filelen = statbuf.st_size;
+cdbp->cdb_map = NULL;
+cdbp->cdb_offsets = NULL;
- /* if we are allowed to we use mmap here.... */
+/* if we are allowed to we use mmap here.... */
#ifdef HAVE_MMAP
- mapbuf = mmap(NULL,
- statbuf.st_size,
- PROT_READ,
- MAP_SHARED,
- fileno,
- 0);
- if (mapbuf != MAP_FAILED) {
- /* We have an mmap-ed section. Now we can just use it */
- cdbp->cdb_map = mapbuf;
- /* The offsets can be set to the same value since they should
- * effectively be cached as well
- */
- cdbp->cdb_offsets = mapbuf;
-
- /* Now return the state struct */
- return(cdbp);
- } else
- /* If we got here the map failed. Basically we can ignore
- * this since we fall back to slower methods....
- * However lets debug log it...
- */
- DEBUG(D_lookup) debug_printf_indent("cdb mmap failed - %d\n", errno);
+if ((mapbuf = mmap(NULL, statbuf.st_size, PROT_READ, MAP_SHARED, fileno, 0))
+ != MAP_FAILED)
+ {
+ /* We have an mmap-ed section. Now we can just use it */
+ cdbp->cdb_map = mapbuf;
+ /* The offsets can be set to the same value since they should
+ * effectively be cached as well
+ */
+ cdbp->cdb_offsets = mapbuf;
+
+ /* Now return the state struct */
+ return(cdbp);
+ }
+
+/* If we got here the map failed. Basically we can ignore this since we fall
+back to slower methods.... However lets debug log it... */
+
+DEBUG(D_lookup) debug_printf_indent("cdb mmap failed - %d\n", errno);
#endif /* HAVE_MMAP */
- /* In this case we have either not got MMAP allowed, or it failed */
-
- /* get a buffer to stash the basic offsets in - this should speed
- * things up a lot - especially on multiple lookups */
- cdbp->cdb_offsets = store_get(CDB_HASH_TABLE, FALSE);
-
- /* now fill the buffer up... */
- if (cdb_bread(fileno, cdbp->cdb_offsets, CDB_HASH_TABLE) == -1) {
- /* read of hash table failed, oh dear, oh.....
- * time to give up I think....
- * call the close routine (deallocs the memory), and return NULL */
- *errmsg = string_open_failed(errno,
- "cannot read header from %s for cdb lookup",
- filename);
- cdb_close(cdbp);
- return NULL;
+/* In this case we have either not got MMAP allowed, or it failed */
+
+/* get a buffer to stash the basic offsets in - this should speed
+things up a lot - especially on multiple lookups */
+
+cdbp->cdb_offsets = store_get(CDB_HASH_TABLE, FALSE);
+
+/* now fill the buffer up... */
+
+if (cdb_bread(fileno, cdbp->cdb_offsets, CDB_HASH_TABLE) == -1)
+ {
+ /* read of hash table failed, oh dear, oh..... time to give up I think....
+ call the close routine (deallocs the memory), and return NULL */
+
+ *errmsg = string_open_failed(errno,
+ "cannot read header from %s for cdb lookup",
+ filename);
+ cdb_close(cdbp);
+ return NULL;
}
- /* Everything else done - return the cache structure */
- return cdbp;
+/* Everything else done - return the cache structure */
+return cdbp;
}
@@ -247,22 +248,12 @@ cdb_open(uschar *filename,
*************************************************/
static BOOL
-cdb_check(void *handle,
- uschar *filename,
- int modemask,
- uid_t *owners,
- gid_t *owngroups,
- uschar **errmsg)
+cdb_check(void * handle, const uschar * filename, int modemask,
+ uid_t * owners, gid_t * owngroups, uschar ** errmsg)
{
- struct cdb_state * cdbp = handle;
- return lf_check_file(cdbp->fileno,
- filename,
- S_IFREG,
- modemask,
- owners,
- owngroups,
- "cdb",
- errmsg) == 0;
+struct cdb_state * cdbp = handle;
+return lf_check_file(cdbp->fileno, filename, S_IFREG, modemask,
+ owners, owngroups, "cdb", errmsg) == 0;
}
@@ -272,13 +263,8 @@ cdb_check(void *handle,
*************************************************/
static int
-cdb_find(void *handle,
- uschar *filename,
- const uschar *keystring,
- int key_len,
- uschar **result,
- uschar **errmsg,
- uint *do_cache)
+cdb_find(void * handle, const uschar * filename, const uschar * keystring,
+ int key_len, uschar ** result, uschar ** errmsg, uint * do_cache)
{
struct cdb_state * cdbp = handle;
uint32 item_key_len,
diff --git a/src/src/lookups/dbmdb.c b/src/src/lookups/dbmdb.c
index 5e97009cc..f3bd6d2da 100644
--- a/src/src/lookups/dbmdb.c
+++ b/src/src/lookups/dbmdb.c
@@ -16,7 +16,7 @@
/* See local README for interface description */
static void *
-dbmdb_open(uschar *filename, uschar **errmsg)
+dbmdb_open(const uschar * filename, uschar ** errmsg)
{
uschar * dirname = string_copy(filename);
uschar * s;
@@ -24,7 +24,7 @@ EXIM_DB *yield = NULL;
if ((s = Ustrrchr(dirname, '/'))) *s = '\0';
EXIM_DBOPEN(filename, dirname, O_RDONLY, 0, &yield);
-if (yield == NULL)
+if (!yield)
{
int save_errno = errno;
*errmsg = string_open_failed(errno, "%s as a %s file", filename, EXIM_DBTYPE);
@@ -47,7 +47,7 @@ the same. Otherwise, for safety, we have to check for x.db or x.dir and x.pag.
*/
static BOOL
-dbmdb_check(void *handle, uschar *filename, int modemask, uid_t *owners,
+dbmdb_check(void *handle, const uschar *filename, int modemask, uid_t *owners,
gid_t *owngroups, uschar **errmsg)
{
int rc;
@@ -90,8 +90,8 @@ return rc == 0;
the keylength in order to include the terminating zero. */
static int
-dbmdb_find(void *handle, uschar *filename, const uschar *keystring, int length,
- uschar **result, uschar **errmsg, uint *do_cache)
+dbmdb_find(void * handle, const uschar * filename, const uschar * keystring,
+ int length, uschar ** result, uschar ** errmsg, uint * do_cache)
{
EXIM_DB *d = (EXIM_DB *)handle;
EXIM_DATUM key, data;
@@ -122,9 +122,9 @@ return FAIL;
/* See local README for interface description */
-int
-static dbmnz_find(void *handle, uschar *filename, const uschar *keystring, int length,
- uschar **result, uschar **errmsg, uint *do_cache)
+static int
+dbmnz_find(void * handle, const uschar * filename, const uschar * keystring,
+ int length, uschar ** result, uschar ** errmsg, uint * do_cache)
{
return dbmdb_find(handle, filename, keystring, length-1, result, errmsg,
do_cache);
@@ -143,8 +143,8 @@ return dbmdb_find(handle, filename, keystring, length-1, result, errmsg,
*/
static int
-dbmjz_find(void *handle, uschar *filename, const uschar *keystring, int length,
- uschar **result, uschar **errmsg, uint *do_cache)
+dbmjz_find(void * handle, const uschar * filename, const uschar * keystring,
+ int length, uschar ** result, uschar ** errmsg, uint * do_cache)
{
uschar *key_item, *key_buffer, *key_p;
const uschar *key_elems = keystring;
@@ -203,8 +203,8 @@ DEBUG(D_lookup) debug_printf_indent("NUL-joined key length: %d\n", key_item_len)
/* beware that dbmdb_find() adds 1 to length to get back terminating NUL, so
because we've calculated the real length, we need to subtract one more here */
-return dbmdb_find(handle, filename,
- key_buffer, key_item_len - 1,
+
+return dbmdb_find(handle, filename, key_buffer, key_item_len - 1,
result, errmsg, do_cache);
}
diff --git a/src/src/lookups/dnsdb.c b/src/src/lookups/dnsdb.c
index 94809e5d8..cc711c5c3 100644
--- a/src/src/lookups/dnsdb.c
+++ b/src/src/lookups/dnsdb.c
@@ -77,7 +77,7 @@ static int type_values[] = {
/* See local README for interface description. */
static void *
-dnsdb_open(uschar *filename, uschar **errmsg)
+dnsdb_open(const uschar * filename, uschar **errmsg)
{
filename = filename; /* Keep picky compilers happy */
errmsg = errmsg; /* Ditto */
@@ -130,8 +130,8 @@ which may start with '<' in order to set a specific separator. The default
separator, as always, is colon. */
static int
-dnsdb_find(void *handle, uschar *filename, const uschar *keystring, int length,
- uschar **result, uschar **errmsg, uint *do_cache)
+dnsdb_find(void * handle, const uschar * filename, const uschar * keystring,
+ int length, uschar ** result, uschar ** errmsg, uint * do_cache)
{
int rc;
int sep = 0;
diff --git a/src/src/lookups/dsearch.c b/src/src/lookups/dsearch.c
index 3a0df303b..dba8422cc 100644
--- a/src/src/lookups/dsearch.c
+++ b/src/src/lookups/dsearch.c
@@ -25,7 +25,7 @@ it open, because the "search" can be done by a call to lstat() rather than
actually scanning through the list of files. */
static void *
-dsearch_open(uschar *dirname, uschar **errmsg)
+dsearch_open(const uschar * dirname, uschar ** errmsg)
{
DIR * dp = exim_opendir(dirname);
if (!dp)
@@ -48,8 +48,8 @@ return (void *)(-1);
integer as this gives warnings on 64-bit systems. */
static BOOL
-dsearch_check(void *handle, uschar *filename, int modemask, uid_t *owners,
- gid_t *owngroups, uschar **errmsg)
+dsearch_check(void * handle, const uschar * filename, int modemask,
+ uid_t * owners, gid_t * owngroups, uschar ** errmsg)
{
handle = handle;
return lf_check_file(-1, filename, S_IFDIR, modemask, owners, owngroups,
@@ -66,8 +66,8 @@ scanning the directory, as it is hopefully faster to let the OS do the scanning
for us. */
static int
-dsearch_find(void *handle, uschar *dirname, const uschar *keystring, int length,
- uschar **result, uschar **errmsg, uint *do_cache)
+dsearch_find(void * handle, const uschar * dirname, const uschar * keystring,
+ int length, uschar ** result, uschar ** errmsg, uint * do_cache)
{
struct stat statbuf;
int save_errno;
diff --git a/src/src/lookups/ibase.c b/src/src/lookups/ibase.c
index f08f503f0..2ccb7b4f1 100644
--- a/src/src/lookups/ibase.c
+++ b/src/src/lookups/ibase.c
@@ -31,9 +31,9 @@ static ibase_connection *ibase_connections = NULL;
/* See local README for interface description. */
-static void *ibase_open(uschar * filename, uschar ** errmsg)
+static void *ibase_open(const uschar * filename, uschar ** errmsg)
{
- return (void *) (1); /* Just return something non-null */
+return (void *) (1); /* Just return something non-null */
}
@@ -450,33 +450,32 @@ arguments are not used. Loop through a list of servers while the query is
deferred with a retryable error. */
static int
-ibase_find(void *handle, uschar * filename, uschar * query, int length,
+ibase_find(void * handle, const uschar * filename, uschar * query, int length,
uschar ** result, uschar ** errmsg, uint *do_cache)
{
- int sep = 0;
- uschar *server;
- uschar *list = ibase_servers;
- uschar buffer[512];
-
- /* Keep picky compilers happy */
- do_cache = do_cache;
-
- DEBUG(D_lookup) debug_printf_indent("Interbase query: %s\n", query);
-
- while ((server =
- string_nextinlist(&list, &sep, buffer,
- sizeof(buffer))) != NULL) {
- BOOL defer_break = FALSE;
- int rc = perform_ibase_search(query, server, result, errmsg,
- &defer_break);
- if (rc != DEFER || defer_break)
- return rc;
- }
+int sep = 0;
+uschar *server;
+uschar *list = ibase_servers;
+uschar buffer[512];
- if (ibase_servers == NULL)
- *errmsg = US "no Interbase servers defined (ibase_servers option)";
+/* Keep picky compilers happy */
+do_cache = do_cache;
- return DEFER;
+DEBUG(D_lookup) debug_printf_indent("Interbase query: %s\n", query);
+
+while ((server = string_nextinlist(&list, &sep, buffer,
+ sizeof(buffer))))
+ {
+ BOOL defer_break = FALSE;
+ int rc = perform_ibase_search(query, server, result, errmsg, &defer_break);
+ if (rc != DEFER || defer_break)
+ return rc;
+ }
+
+if (!ibase_servers)
+ *errmsg = US "no Interbase servers defined (ibase_servers option)";
+
+return DEFER;
}
diff --git a/src/src/lookups/json.c b/src/src/lookups/json.c
index 15b861751..f476db3d9 100644
--- a/src/src/lookups/json.c
+++ b/src/src/lookups/json.c
@@ -40,7 +40,7 @@ json_free(void * p)
/* See local README for interface description */
static void *
-json_open(uschar *filename, uschar **errmsg)
+json_open(const uschar * filename, uschar ** errmsg)
{
FILE * f;
@@ -63,7 +63,7 @@ return f;
*************************************************/
static BOOL
-json_check(void *handle, uschar *filename, int modemask, uid_t *owners,
+json_check(void *handle, const uschar *filename, int modemask, uid_t *owners,
gid_t *owngroups, uschar **errmsg)
{
return lf_check_file(fileno((FILE *)handle), filename, S_IFREG, modemask,
@@ -79,8 +79,8 @@ return lf_check_file(fileno((FILE *)handle), filename, S_IFREG, modemask,
/* See local README for interface description */
static int
-json_find(void *handle, uschar *filename, const uschar *keystring, int length,
- uschar **result, uschar **errmsg, uint *do_cache)
+json_find(void * handle, const uschar * filename, const uschar * keystring,
+ int length, uschar ** result, uschar ** errmsg, uint * do_cache)
{
FILE * f = handle;
json_t * j, * j0;
diff --git a/src/src/lookups/ldap.c b/src/src/lookups/ldap.c
index 8972d1074..b9a52d251 100644
--- a/src/src/lookups/ldap.c
+++ b/src/src/lookups/ldap.c
@@ -1283,8 +1283,8 @@ are handled by a common function, with a flag to differentiate between them.
The handle and filename arguments are not used. */
static int
-eldap_find(void *handle, uschar *filename, const uschar *ldap_url, int length,
- uschar **result, uschar **errmsg, uint *do_cache)
+eldap_find(void * handle, const uschar * filename, const uschar * ldap_url,
+ int length, uschar ** result, uschar ** errmsg, uint * do_cache)
{
/* Keep picky compilers happy */
do_cache = do_cache;
@@ -1292,8 +1292,8 @@ return(control_ldap_search(ldap_url, SEARCH_LDAP_SINGLE, result, errmsg));
}
static int
-eldapm_find(void *handle, uschar *filename, const uschar *ldap_url, int length,
- uschar **result, uschar **errmsg, uint *do_cache)
+eldapm_find(void * handle, const uschar * filename, const uschar * ldap_url,
+ int length, uschar ** result, uschar ** errmsg, uint * do_cache)
{
/* Keep picky compilers happy */
do_cache = do_cache;
@@ -1301,8 +1301,8 @@ return(control_ldap_search(ldap_url, SEARCH_LDAP_MULTIPLE, result, errmsg));
}
static int
-eldapdn_find(void *handle, uschar *filename, const uschar *ldap_url, int length,
- uschar **result, uschar **errmsg, uint *do_cache)
+eldapdn_find(void * handle, const uschar * filename, const uschar * ldap_url,
+ int length, uschar ** result, uschar ** errmsg, uint * do_cache)
{
/* Keep picky compilers happy */
do_cache = do_cache;
@@ -1310,8 +1310,8 @@ return(control_ldap_search(ldap_url, SEARCH_LDAP_DN, result, errmsg));
}
int
-eldapauth_find(void *handle, uschar *filename, const uschar *ldap_url, int length,
- uschar **result, uschar **errmsg, uint *do_cache)
+eldapauth_find(void * handle, const uschar * filename, const uschar * ldap_url,
+ int length, uschar ** result, uschar ** errmsg, uint * do_cache)
{
/* Keep picky compilers happy */
do_cache = do_cache;
@@ -1327,7 +1327,7 @@ return(control_ldap_search(ldap_url, SEARCH_LDAP_AUTH, result, errmsg));
/* See local README for interface description. */
static void *
-eldap_open(uschar *filename, uschar **errmsg)
+eldap_open(const uschar * filename, uschar ** errmsg)
{
return (void *)(1); /* Just return something non-null */
}
diff --git a/src/src/lookups/lf_check_file.c b/src/src/lookups/lf_check_file.c
index 8b1140876..eb08a4de2 100644
--- a/src/src/lookups/lf_check_file.c
+++ b/src/src/lookups/lf_check_file.c
@@ -38,8 +38,8 @@ Side effect: sets errno to ERRNO_BADUGID, ERRNO_NOTREGULAR or ERRNO_BADMODE for
*/
int
-lf_check_file(int fd, uschar *filename, int s_type, int modemask, uid_t *owners,
- gid_t *owngroups, const char *type, uschar **errmsg)
+lf_check_file(int fd, const uschar * filename, int s_type, int modemask,
+ uid_t * owners, gid_t * owngroups, const char * type, uschar ** errmsg)
{
struct stat statbuf;
diff --git a/src/src/lookups/lf_functions.h b/src/src/lookups/lf_functions.h
index 8fa6027c6..4d9ae9595 100644
--- a/src/src/lookups/lf_functions.h
+++ b/src/src/lookups/lf_functions.h
@@ -7,7 +7,7 @@
/* Header for the functions that are shared by the lookups */
-extern int lf_check_file(int, uschar *, int, int, uid_t *, gid_t *,
+extern int lf_check_file(int, const uschar *, int, int, uid_t *, gid_t *,
const char *, uschar **);
extern gstring *lf_quote(uschar *, uschar *, int, gstring *);
extern int lf_sqlperform(const uschar *, const uschar *, const uschar *,
diff --git a/src/src/lookups/lmdb.c b/src/src/lookups/lmdb.c
index 2976cfac5..712261a41 100644
--- a/src/src/lookups/lmdb.c
+++ b/src/src/lookups/lmdb.c
@@ -23,7 +23,7 @@ MDB_dbi db_dbi;
*************************************************/
static void *
-lmdb_open(uschar * filename, uschar ** errmsg)
+lmdb_open(const uschar * filename, uschar ** errmsg)
{
MDB_env * db_env = NULL;
Lmdbstrct * lmdb_p;
@@ -74,7 +74,7 @@ bad:
*************************************************/
static int
-lmdb_find(void * handle, uschar * filename,
+lmdb_find(void * handle, const uschar * filename,
const uschar * keystring, int length, uschar ** result, uschar ** errmsg,
uint * do_cache)
{
diff --git a/src/src/lookups/lsearch.c b/src/src/lookups/lsearch.c
index 76b76b8f9..92a76e7c3 100644
--- a/src/src/lookups/lsearch.c
+++ b/src/src/lookups/lsearch.c
@@ -26,7 +26,7 @@ enum {
/* See local README for interface description */
static void *
-lsearch_open(uschar *filename, uschar **errmsg)
+lsearch_open(const uschar * filename, uschar ** errmsg)
{
FILE *f = Ufopen(filename, "rb");
if (f == NULL)
@@ -46,7 +46,7 @@ return f;
*************************************************/
static BOOL
-lsearch_check(void *handle, uschar *filename, int modemask, uid_t *owners,
+lsearch_check(void *handle, const uschar *filename, int modemask, uid_t *owners,
gid_t *owngroups, uschar **errmsg)
{
return lf_check_file(fileno((FILE *)handle), filename, S_IFREG, modemask,
@@ -71,8 +71,9 @@ fit into the fixed sized buffer. Most of the time this will never be exercised,
but people do occasionally do weird things. */
static int
-internal_lsearch_find(void *handle, uschar *filename, const uschar *keystring,
- int length, uschar **result, uschar **errmsg, int type)
+internal_lsearch_find(void * handle, const uschar * filename,
+ const uschar * keystring, int length, uschar ** result, uschar ** errmsg,
+ int type)
{
FILE *f = (FILE *)handle;
BOOL last_was_eol = TRUE;
@@ -318,8 +319,8 @@ return FAIL;
/* See local README for interface description */
static int
-lsearch_find(void *handle, uschar *filename, const uschar *keystring, int length,
- uschar **result, uschar **errmsg, uint *do_cache)
+lsearch_find(void * handle, const uschar * filename, const uschar * keystring,
+ int length, uschar ** result, uschar ** errmsg, uint * do_cache)
{
do_cache = do_cache; /* Keep picky compilers happy */
return internal_lsearch_find(handle, filename, keystring, length, result,
@@ -335,8 +336,8 @@ return internal_lsearch_find(handle, filename, keystring, length, result,
/* See local README for interface description */
static int
-wildlsearch_find(void *handle, uschar *filename, const uschar *keystring, int length,
- uschar **result, uschar **errmsg, uint *do_cache)
+wildlsearch_find(void * handle, const uschar * filename, const uschar * keystring,
+ int length, uschar ** result, uschar ** errmsg, uint * do_cache)
{
do_cache = do_cache; /* Keep picky compilers happy */
return internal_lsearch_find(handle, filename, keystring, length, result,
@@ -352,8 +353,8 @@ return internal_lsearch_find(handle, filename, keystring, length, result,
/* See local README for interface description */
static int
-nwildlsearch_find(void *handle, uschar *filename, const uschar *keystring, int length,
- uschar **result, uschar **errmsg, uint *do_cache)
+nwildlsearch_find(void * handle, const uschar * filename, const uschar * keystring,
+ int length, uschar ** result, uschar ** errmsg, uint * do_cache)
{
do_cache = do_cache; /* Keep picky compilers happy */
return internal_lsearch_find(handle, filename, keystring, length, result,
@@ -370,23 +371,20 @@ return internal_lsearch_find(handle, filename, keystring, length, result,
/* See local README for interface description */
static int
-iplsearch_find(void *handle, uschar *filename, const uschar *keystring, int length,
- uschar **result, uschar **errmsg, uint *do_cache)
+iplsearch_find(void * handle, uschar const * filename, const uschar * keystring,
+ int length, uschar ** result, uschar ** errmsg, uint * do_cache)
{
do_cache = do_cache; /* Keep picky compilers happy */
+
if ((length == 1 && keystring[0] == '*') ||
string_is_ip_address(keystring, NULL) != 0)
- {
return internal_lsearch_find(handle, filename, keystring, length, result,
errmsg, LSEARCH_IP);
- }
-else
- {
- *errmsg = string_sprintf("\"%s\" is not a valid iplsearch key (an IP "
- "address, with optional CIDR mask, is wanted): "
- "in a host list, use net-iplsearch as the search type", keystring);
- return DEFER;
- }
+
+*errmsg = string_sprintf("\"%s\" is not a valid iplsearch key (an IP "
+"address, with optional CIDR mask, is wanted): "
+"in a host list, use net-iplsearch as the search type", keystring);
+return DEFER;
}
diff --git a/src/src/lookups/mysql.c b/src/src/lookups/mysql.c
index 460ee2973..745c6505c 100644
--- a/src/src/lookups/mysql.c
+++ b/src/src/lookups/mysql.c
@@ -81,7 +81,7 @@ static mysql_connection *mysql_connections = NULL;
/* See local README for interface description. */
static void *
-mysql_open(uschar *filename, uschar **errmsg)
+mysql_open(const uschar * filename, uschar ** errmsg)
{
return (void *)(1); /* Just return something non-null */
}
@@ -389,8 +389,8 @@ query is deferred with a retryable error is now in a separate function that is
shared with other SQL lookups. */
static int
-mysql_find(void *handle, uschar *filename, const uschar *query, int length,
- uschar **result, uschar **errmsg, uint *do_cache)
+mysql_find(void * handle, const uschar * filename, const uschar * query,
+ int length, uschar ** result, uschar ** errmsg, uint * do_cache)
{
return lf_sqlperform(US"MySQL", US"mysql_servers", mysql_servers, query,
result, errmsg, do_cache, perform_mysql_search);
diff --git a/src/src/lookups/nis.c b/src/src/lookups/nis.c
index 6f5307f43..10ecf74c9 100644
--- a/src/src/lookups/nis.c
+++ b/src/src/lookups/nis.c
@@ -19,7 +19,7 @@
the "nis" and "nis0" lookup types. */
static void *
-nis_open(uschar *filename, uschar **errmsg)
+nis_open(const uschar * filename, uschar ** errmsg)
{
char *nis_domain;
if (yp_get_default_domain(&nis_domain) != 0)
@@ -41,8 +41,8 @@ for nis0 because they are so short it isn't worth trying to use any common
code. */
static int
-nis_find(void *handle, uschar *filename, const uschar *keystring, int length,
- uschar **result, uschar **errmsg, uint *do_cache)
+nis_find(void * handle, const uschar * filename, const uschar * keystring,
+ int length, uschar ** result, uschar ** errmsg, uint * do_cache)
{
int rc;
uschar *nis_data;
@@ -67,8 +67,8 @@ return (rc == YPERR_KEY || rc == YPERR_MAP)? FAIL : DEFER;
/* See local README for interface description. */
static int
-nis0_find(void *handle, uschar *filename, const uschar *keystring, int length,
- uschar **result, uschar **errmsg, uint *do_cache)
+nis0_find(void * handle, const uschar * filename, const uschar * keystring,
+ int length, uschar ** result, uschar ** errmsg, uint * do_cache)
{
int rc;
uschar *nis_data;
diff --git a/src/src/lookups/nisplus.c b/src/src/lookups/nisplus.c
index 98f3df303..370f6a655 100644
--- a/src/src/lookups/nisplus.c
+++ b/src/src/lookups/nisplus.c
@@ -18,7 +18,7 @@
/* See local README for interface description. */
static void *
-nisplus_open(uschar *filename, uschar **errmsg)
+nisplus_open(const uschar * filename, uschar ** errmsg)
{
return (void *)(1); /* Just return something non-null */
}
@@ -42,8 +42,8 @@ yield is the concatenation of all the fields, preceded by their names and an
equals sign. */
static int
-nisplus_find(void *handle, uschar *filename, const uschar *query, int length,
- uschar **result, uschar **errmsg, uint *do_cache)
+nisplus_find(void * handle, const uschar * filename, const uschar * query,
+ int length, uschar ** result, uschar ** errmsg, uint * do_cache)
{
int error_error = FAIL;
const uschar * field_name = NULL;
diff --git a/src/src/lookups/oracle.c b/src/src/lookups/oracle.c
index 4e8cba5ca..e22ff8945 100644
--- a/src/src/lookups/oracle.c
+++ b/src/src/lookups/oracle.c
@@ -196,7 +196,7 @@ return col;
/* See local README for interface description. */
static void *
-oracle_open(uschar *filename, uschar **errmsg)
+oracle_open(const uschar * filename, uschar ** errmsg)
{
return (void *)(1); /* Just return something non-null */
}
@@ -503,8 +503,8 @@ arguments are not used. Loop through a list of servers while the query is
deferred with a retryable error. */
static int
-oracle_find(void *handle, uschar *filename, uschar *query, int length,
- uschar **result, uschar **errmsg, uint *do_cache)
+oracle_find(void * handle, const uschar * filename, uschar * query, int length,
+ uschar ** result, uschar ** errmsg, uint * do_cache)
{
int sep = 0;
uschar *server;
diff --git a/src/src/lookups/passwd.c b/src/src/lookups/passwd.c
index 315677ffa..58222f605 100644
--- a/src/src/lookups/passwd.c
+++ b/src/src/lookups/passwd.c
@@ -16,7 +16,7 @@
/* See local README for interface description */
static void *
-passwd_open(uschar *filename, uschar **errmsg)
+passwd_open(const uschar * filename, uschar ** errmsg)
{
filename = filename; /* Keep picky compilers happy */
errmsg = errmsg;
@@ -33,8 +33,8 @@ return (void *)(-1); /* Just return something non-null */
/* See local README for interface description */
static int
-passwd_find(void *handle, uschar *filename, const uschar *keystring, int length,
- uschar **result, uschar **errmsg, uint *do_cache)
+passwd_find(void * handle, const uschar * filename, const uschar * keystring,
+ int length, uschar ** result, uschar ** errmsg, uint * do_cache)
{
struct passwd *pw;
diff --git a/src/src/lookups/pgsql.c b/src/src/lookups/pgsql.c
index b5f60938e..cf287b179 100644
--- a/src/src/lookups/pgsql.c
+++ b/src/src/lookups/pgsql.c
@@ -33,7 +33,7 @@ static pgsql_connection *pgsql_connections = NULL;
/* See local README for interface description. */
static void *
-pgsql_open(uschar *filename, uschar **errmsg)
+pgsql_open(const uschar * filename, uschar ** errmsg)
{
return (void *)(1); /* Just return something non-null */
}
@@ -381,8 +381,8 @@ query is deferred with a retryable error is now in a separate function that is
shared with other SQL lookups. */
static int
-pgsql_find(void *handle, uschar *filename, const uschar *query, int length,
- uschar **result, uschar **errmsg, uint *do_cache)
+pgsql_find(void * handle, const uschar * filename, const uschar * query,
+ int length, uschar ** result, uschar ** errmsg, uint * do_cache)
{
return lf_sqlperform(US"PostgreSQL", US"pgsql_servers", pgsql_servers, query,
result, errmsg, do_cache, perform_pgsql_search);
diff --git a/src/src/lookups/redis.c b/src/src/lookups/redis.c
index 53bd8d53d..b5c2eda23 100644
--- a/src/src/lookups/redis.c
+++ b/src/src/lookups/redis.c
@@ -28,7 +28,7 @@ static redis_connection *redis_connections = NULL;
static void *
-redis_open(uschar *filename, uschar **errmsg)
+redis_open(const uschar * filename, uschar ** errmsg)
{
return (void *)(1);
}
@@ -374,10 +374,10 @@ else
*/
static int
-redis_find(void *handle __attribute__((unused)),
- uschar *filename __attribute__((unused)),
- const uschar *command, int length, uschar **result, uschar **errmsg,
- uint *do_cache)
+redis_find(void * handle __attribute__((unused)),
+ const uschar * filename __attribute__((unused)),
+ const uschar * command, int length, uschar ** result, uschar ** errmsg,
+ uint * do_cache)
{
return lf_sqlperform(US"Redis", US"redis_servers", redis_servers, command,
result, errmsg, do_cache, perform_redis_search);
diff --git a/src/src/lookups/spf.c b/src/src/lookups/spf.c
index c84b6bbce..243c271a4 100644
--- a/src/src/lookups/spf.c
+++ b/src/src/lookups/spf.c
@@ -35,7 +35,7 @@ extern SPF_dns_server_t * SPF_dns_exim_new(int);
static void *
-spf_open(uschar *filename, uschar **errmsg)
+spf_open(const uschar * filename, uschar ** errmsg)
{
SPF_dns_server_t * dc;
SPF_server_t *spf_server = NULL;
@@ -64,8 +64,8 @@ if (spf_server) SPF_server_free(spf_server);
}
static int
-spf_find(void *handle, uschar *filename, const uschar *keystring, int key_len,
- uschar **result, uschar **errmsg, uint *do_cache)
+spf_find(void * handle, const uschar * filename, const uschar * keystring,
+ int key_len, uschar ** result, uschar ** errmsg, uint * do_cache)
{
SPF_server_t *spf_server = handle;
SPF_request_t *spf_request;
diff --git a/src/src/lookups/sqlite.c b/src/src/lookups/sqlite.c
index 6200d6c82..cf68b121a 100644
--- a/src/src/lookups/sqlite.c
+++ b/src/src/lookups/sqlite.c
@@ -18,13 +18,12 @@
/* See local README for interface description. */
static void *
-sqlite_open(uschar *filename, uschar **errmsg)
+sqlite_open(const uschar * filename, uschar ** errmsg)
{
sqlite3 *db = NULL;
int ret;
-ret = sqlite3_open(CS filename, &db);
-if (ret != 0)
+if ((ret = sqlite3_open(CCS filename, &db)) != 0)
{
*errmsg = (void *)sqlite3_errmsg(db);
debug_printf_indent("Error opening database: %s\n", *errmsg);
@@ -70,8 +69,8 @@ return 0;
static int
-sqlite_find(void *handle, uschar *filename, const uschar *query, int length,
- uschar **result, uschar **errmsg, uint *do_cache)
+sqlite_find(void * handle, const uschar * filename, const uschar * query,
+ int length, uschar ** result, uschar ** errmsg, uint * do_cache)
{
int ret;
gstring * res = NULL;
diff --git a/src/src/lookups/testdb.c b/src/src/lookups/testdb.c
index 3f19e80f6..a4f0af729 100644
--- a/src/src/lookups/testdb.c
+++ b/src/src/lookups/testdb.c
@@ -21,7 +21,7 @@ the find function. */
/* See local README for interface description. */
static void *
-testdb_open(uschar *filename, uschar **errmsg)
+testdb_open(const uschar * filename, uschar ** errmsg)
{
filename = filename; /* Keep picky compilers happy */
errmsg = errmsg;
@@ -37,8 +37,8 @@ return (void *)(1); /* Just return something non-null */
/* See local README for interface description. */
static int
-testdb_find(void *handle, uschar *filename, const uschar *query, int length,
- uschar **result, uschar **errmsg, uint *do_cache)
+testdb_find(void * handle, const uschar * filename, const uschar * query,
+ int length, uschar ** result, uschar ** errmsg, uint * do_cache)
{
handle = handle; /* Keep picky compilers happy */
filename = filename;
diff --git a/src/src/lookups/whoson.c b/src/src/lookups/whoson.c
index 8f065e60e..20d013351 100644
--- a/src/src/lookups/whoson.c
+++ b/src/src/lookups/whoson.c
@@ -20,7 +20,7 @@
/* See local README for interface description. */
static void *
-whoson_open(uschar *filename, uschar **errmsg)
+whoson_open(const uschar * filename, uschar ** errmsg)
{
filename = filename; /* Keep picky compilers happy */
errmsg = errmsg;
@@ -35,8 +35,8 @@ return (void *)(1); /* Just return something non-null */
/* See local README for interface description. */
static int
-whoson_find(void *handle, uschar *filename, uschar *query, int length,
- uschar **result, uschar **errmsg, uint *do_cache)
+whoson_find(void * handle, const uschar * filename, uschar * query, int length,
+ uschar ** result, uschar ** errmsg, uint * do_cache)
{
uschar buffer[80];
handle = handle; /* Keep picky compilers happy */
diff --git a/src/src/search.c b/src/src/search.c
index dc90f53d5..d67bdc59e 100644
--- a/src/src/search.c
+++ b/src/src/search.c
@@ -325,8 +325,8 @@ Returns: an identifying handle for the open database;
*/
void *
-search_open(uschar *filename, int search_type, int modemask, uid_t *owners,
- gid_t *owngroups)
+search_open(const uschar * filename, int search_type, int modemask,
+ uid_t * owners, gid_t * owngroups)
{
void *handle;
tree_node *t;
@@ -462,7 +462,7 @@ Returns: a pointer to a dynamic string containing the answer,
*/
static uschar *
-internal_search_find(void *handle, uschar *filename, uschar *keystring)
+internal_search_find(void * handle, const uschar * filename, uschar * keystring)
{
tree_node * t = (tree_node *)handle;
search_cache * c = (search_cache *)(t->data.ptr);
@@ -605,8 +605,9 @@ Returns: a pointer to a dynamic string containing the answer,
*/
uschar *
-search_find(void *handle, uschar *filename, uschar *keystring, int partial,
- const uschar *affix, int affixlen, int starflags, int *expand_setup)
+search_find(void * handle, const uschar * filename, uschar * keystring,
+ int partial, const uschar * affix, int affixlen, int starflags,
+ int * expand_setup)
{
tree_node *t = (tree_node *)handle;
BOOL set_null_wild = FALSE;