Move errno-protection into string_open_failed()
[users/heiko/exim.git] / src / src / lookups / lsearch.c
index 6586b5ca80bce96e02762a12557b0336819b52ba..9df7a167f11bb9c130231caa1ae249259f80888c 100644 (file)
@@ -3,6 +3,7 @@
 *************************************************/
 
 /* Copyright (c) University of Cambridge 1995 - 2018 */
+/* Copyright (c) The Exim Maintainers 2020 */
 /* See the file NOTICE for conditions of use and distribution. */
 
 #include "../exim.h"
@@ -28,14 +29,9 @@ enum {
 static void *
 lsearch_open(const uschar * filename, uschar ** errmsg)
 {
-FILE *f = Ufopen(filename, "rb");
-if (f == NULL)
-  {
-  int save_errno = errno;
-  *errmsg = string_open_failed(errno, "%s for linear search", filename);
-  errno = save_errno;
-  return NULL;
-  }
+FILE * f = Ufopen(filename, "rb");
+if (!f)
+  *errmsg = string_open_failed("%s for linear search", filename);
 return f;
 }
 
@@ -94,9 +90,6 @@ if(type == LSEARCH_WILD || type == LSEARCH_NWILD)
   reset_point = store_mark();
   }
 
-filename = filename;  /* Keep picky compilers happy */
-errmsg = errmsg;
-
 rewind(f);
 for (last_was_eol = TRUE;
      Ufgets(buffer, sizeof(buffer), f) != NULL;
@@ -323,7 +316,6 @@ lsearch_find(void * handle, const uschar * filename, const uschar * keystring,
   int length, uschar ** result, uschar ** errmsg, uint * do_cache,
   const uschar * opts)
 {
-do_cache = do_cache;  /* Keep picky compilers happy */
 return internal_lsearch_find(handle, filename, keystring, length, result,
   errmsg, LSEARCH_PLAIN);
 }
@@ -341,7 +333,6 @@ wildlsearch_find(void * handle, const uschar * filename, const uschar * keystrin
   int length, uschar ** result, uschar ** errmsg, uint * do_cache,
   const uschar * opts)
 {
-do_cache = do_cache;  /* Keep picky compilers happy */
 return internal_lsearch_find(handle, filename, keystring, length, result,
   errmsg, LSEARCH_WILD);
 }
@@ -359,7 +350,6 @@ nwildlsearch_find(void * handle, const uschar * filename, const uschar * keystri
   int length, uschar ** result, uschar ** errmsg, uint * do_cache,
   const uschar * opts)
 {
-do_cache = do_cache;  /* Keep picky compilers happy */
 return internal_lsearch_find(handle, filename, keystring, length, result,
   errmsg, LSEARCH_NWILD);
 }
@@ -378,8 +368,6 @@ iplsearch_find(void * handle, uschar const * filename, const uschar * keystring,
   int length, uschar ** result, uschar ** errmsg, uint * do_cache,
   const uschar * opts)
 {
-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,
@@ -426,51 +414,51 @@ fprintf(f, "Library version: lsearch: Exim version %s\n", EXIM_VERSION_STR);
 
 
 static lookup_info iplsearch_lookup_info = {
-  US"iplsearch",                 /* lookup name */
-  lookup_absfile,                /* uses absolute file name */
-  lsearch_open,                  /* open function */
-  lsearch_check,                 /* check function */
-  iplsearch_find,                /* find function */
-  lsearch_close,                 /* close function */
-  NULL,                          /* no tidy function */
-  NULL,                          /* no quoting function */
-  NULL                           /* no version reporting (redundant) */
+  .name = US"iplsearch",               /* lookup name */
+  .type = lookup_absfile,              /* uses absolute file name */
+  .open = lsearch_open,                        /* open function */
+  .check = lsearch_check,              /* check function */
+  .find = iplsearch_find,              /* find function */
+  .close = lsearch_close,              /* close function */
+  .tidy = NULL,                                /* no tidy function */
+  .quote = NULL,                       /* no quoting function */
+  .version_report = NULL                           /* no version reporting (redundant) */
 };
 
 static lookup_info lsearch_lookup_info = {
-  US"lsearch",                   /* lookup name */
-  lookup_absfile,                /* uses absolute file name */
-  lsearch_open,                  /* open function */
-  lsearch_check,                 /* check function */
-  lsearch_find,                  /* find function */
-  lsearch_close,                 /* close function */
-  NULL,                          /* no tidy function */
-  NULL,                          /* no quoting function */
-  lsearch_version_report         /* version reporting */
+  .name = US"lsearch",                 /* lookup name */
+  .type = lookup_absfile,              /* uses absolute file name */
+  .open = lsearch_open,                        /* open function */
+  .check = lsearch_check,              /* check function */
+  .find = lsearch_find,                        /* find function */
+  .close = lsearch_close,              /* close function */
+  .tidy = NULL,                                /* no tidy function */
+  .quote = NULL,                       /* no quoting function */
+  .version_report = lsearch_version_report         /* version reporting */
 };
 
 static lookup_info nwildlsearch_lookup_info = {
-  US"nwildlsearch",              /* lookup name */
-  lookup_absfile,                /* uses absolute file name */
-  lsearch_open,                  /* open function */
-  lsearch_check,                 /* check function */
-  nwildlsearch_find,             /* find function */
-  lsearch_close,                 /* close function */
-  NULL,                          /* no tidy function */
-  NULL,                          /* no quoting function */
-  NULL                           /* no version reporting (redundant) */
+  .name = US"nwildlsearch",            /* lookup name */
+  .type = lookup_absfile,              /* uses absolute file name */
+  .open = lsearch_open,                        /* open function */
+  .check = lsearch_check,              /* check function */
+  .find = nwildlsearch_find,           /* find function */
+  .close = lsearch_close,              /* close function */
+  .tidy = NULL,                                /* no tidy function */
+  .quote = NULL,                       /* no quoting function */
+  .version_report = NULL                           /* no version reporting (redundant) */
 };
 
 static lookup_info wildlsearch_lookup_info = {
-  US"wildlsearch",               /* lookup name */
-  lookup_absfile,                /* uses absolute file name */
-  lsearch_open,                  /* open function */
-  lsearch_check,                 /* check function */
-  wildlsearch_find,              /* find function */
-  lsearch_close,                 /* close function */
-  NULL,                          /* no tidy function */
-  NULL,                          /* no quoting function */
-  NULL                           /* no version reporting (redundant) */
+  .name = US"wildlsearch",             /* lookup name */
+  .type = lookup_absfile,              /* uses absolute file name */
+  .open = lsearch_open,                        /* open function */
+  .check = lsearch_check,              /* check function */
+  .find = wildlsearch_find,            /* find function */
+  .close = lsearch_close,              /* close function */
+  .tidy = NULL,                                /* no tidy function */
+  .quote = NULL,                       /* no quoting function */
+  .version_report = NULL                           /* no version reporting (redundant) */
 };
 
 #ifdef DYNLOOKUP