Update version number and copyright year.
[exim.git] / src / src / search.c
index 1b8115b5049e5629528c8fd3e44e6527e8067651..c8a1cb99516d41c20517ecc6792e8744621a58dc 100644 (file)
@@ -1,10 +1,10 @@
-/* $Cambridge: exim/src/src/search.c,v 1.2 2005/01/04 10:00:42 ph10 Exp $ */
+/* $Cambridge: exim/src/src/search.c,v 1.5 2007/01/08 10:50:18 ph10 Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) University of Cambridge 1995 - 2005 */
+/* Copyright (c) University of Cambridge 1995 - 2007 */
 /* See the file NOTICE for conditions of use and distribution. */
 
 /* A set of functions to search databases in various formats. An open
@@ -184,18 +184,26 @@ else if (len >= 1 && ss[len-1]  == '*')
   }
 
 /* Check for the individual search type. Only those that are actually in the
-binary are valid. For query-style types, "partial" is an error. */
+binary are valid. For query-style types, "partial" and default types are
+erroneous. */
 
 stype = search_findtype(ss, len);
-if (pv >= 0 && mac_islookup(stype, lookup_querystyle))
+if (stype >= 0 && mac_islookup(stype, lookup_querystyle))
   {
-  search_error_message = string_sprintf("\"partial\" is not permitted "
-    "for lookup type \"%s\"", ss);
-  return -1;
+  if (pv >= 0)
+    {
+    search_error_message = string_sprintf("\"partial\" is not permitted "
+      "for lookup type \"%s\"", ss);
+    return -1;
+    }
+  if ((*starflags & (SEARCH_STAR|SEARCH_STARAT)) != 0)
+    {
+    search_error_message = string_sprintf("defaults using \"*\" or \"*@\" are "
+      "not permitted for lookup type \"%s\"", ss);
+    return -1;
+    }
   }
 
-/* All is well; pass back the partial type and return the lookup type. */
-
 *ptypeptr = pv;
 return stype;
 }