Added support for SQLite.
[exim.git] / src / src / match.c
index 18f1a3791ee401ca138513436a687f34e1430d6e..100e4c0cbadd2f1bb2f03bc79e8d043389d2feb7 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/match.c,v 1.6 2005/06/22 10:17:23 ph10 Exp $ */
+/* $Cambridge: exim/src/src/match.c,v 1.8 2005/08/01 13:20:28 ph10 Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
@@ -266,12 +266,20 @@ up user@domain for sender rejection). There's a flag to disable it. */
 
 if (!cb->use_partial) partial = -1;
 
-/* Set the parameters for the two different kinds of lookup. */
+/* Set the parameters for the three different kinds of lookup. */
 
 keyquery = semicolon + 1;
 while (isspace(*keyquery)) keyquery++;
 
-if (!mac_islookup(search_type, lookup_querystyle))
+if (mac_islookup(search_type, lookup_absfilequery))
+  {
+  filename = keyquery;
+  while (*keyquery != 0 && !isspace(*keyquery)) keyquery++;
+  filename = string_copyn(filename, keyquery - filename);
+  while (isspace(*keyquery)) keyquery++;
+  }
+
+else if (!mac_islookup(search_type, lookup_querystyle))
   {
   filename = keyquery;
   keyquery = s;
@@ -783,13 +791,13 @@ while ((sss = string_nextinlist(&list, &sep, buffer, sizeof(buffer))) != NULL)
       switch ((func)(arg, ss, valueptr, &error))
         {
         case OK:
-        fclose(f);
+        (void)fclose(f);
         HDEBUG(D_lists) debug_printf("%s %s (matched \"%s\" in %s)\n", ot,
           (yield == OK)? "yes" : "no", sss, filename);
         return file_yield;
 
         case DEFER:
-        fclose(f);
+        (void)fclose(f);
         goto DEFER_RETURN;
 
         case ERROR:          /* host name lookup failed - this can only */
@@ -802,7 +810,7 @@ while ((sss = string_nextinlist(&list, &sep, buffer, sizeof(buffer))) != NULL)
          {
           HDEBUG(D_lists) debug_printf("%s %s (%s)\n", ot,
             include_unknown? "yes":"no", error);
-          fclose(f);
+          (void)fclose(f);
           if (!include_unknown) return FAIL;
           log_write(0, LOG_MAIN, "%s: accepted by +include_unknown", error);
           return OK;
@@ -814,7 +822,7 @@ while ((sss = string_nextinlist(&list, &sep, buffer, sizeof(buffer))) != NULL)
     for the file, in case this is the last item in the list. */
 
     yield = file_yield;
-    fclose(f);
+    (void)fclose(f);
     }
   }    /* Loop for the next item on the top-level list */