]> git.ipfire.org Git - thirdparty/cups.git/commitdiff
Fix a mimeFilter bug that caused cupsFilter2 lines to not work for the second
authormike <mike@7a7537e8-13f0-0310-91df-b6672ffda945>
Fri, 22 Apr 2011 04:38:28 +0000 (04:38 +0000)
committermike <mike@7a7537e8-13f0-0310-91df-b6672ffda945>
Fri, 22 Apr 2011 04:38:28 +0000 (04:38 +0000)
and subsequent printers.

git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@9705 7a7537e8-13f0-0310-91df-b6672ffda945

scheduler/filter.c
scheduler/type.c

index 31350edc045b54c2a38e380fb12df34c52085796..d1446f654366b406980a92e00dd6b2ddd420afa1 100644 (file)
@@ -133,6 +133,7 @@ mimeAddFilter(mime_t      *mime,    /* I - MIME database */
 
     DEBUG_puts("1mimeAddFilter: Adding new filter.");
     cupsArrayAdd(mime->filters, temp);
+    cupsArrayAdd(mime->srcs, temp);
   }
 
  /*
@@ -177,6 +178,9 @@ mimeFilter2(mime_t      *mime,              /* I - MIME database */
            mime_type_t *dst,           /* I - Destination file type */
            int         *cost)          /* O - Cost of filters */
 {
+  cups_array_t *filters;               /* Array of filters to run */
+
+
  /*
   * Range-check the input...
   */
@@ -214,7 +218,24 @@ mimeFilter2(mime_t      *mime,             /* I - MIME database */
   * Find the filters...
   */
 
-  return (mime_find_filters(mime, src, srcsize, dst, cost, NULL));
+  filters = mime_find_filters(mime, src, srcsize, dst, cost, NULL);
+
+  DEBUG_printf(("1mimeFilter2: Returning %d filter(s), cost %d:",
+                cupsArrayCount(filters), cost ? *cost : -1));
+#ifdef DEBUG
+  {
+    mime_filter_t      *filter;        /* Current filter */
+
+    for (filter = (mime_filter_t *)cupsArrayFirst(filters);
+         filter;
+        filter = (mime_filter_t *)cupsArrayNext(filters))
+      DEBUG_printf(("1mimeFilter2: %s/%s %s/%s %d %s", filter->src->super,
+                    filter->src->type, filter->dst->super, filter->dst->type,
+                   filter->cost, filter->filter));
+  }
+#endif /* DEBUG */
+
+  return (filters);
 }
 
 
@@ -231,7 +252,7 @@ mimeFilterLookup(mime_t      *mime, /* I - MIME database */
                *filter;                /* Matching filter */
 
 
-  DEBUG_printf(("6mimeFilterLookup(mime=%p, src=%p(%s/%s), dst=%p(%s/%s))", mime,
+  DEBUG_printf(("2mimeFilterLookup(mime=%p, src=%p(%s/%s), dst=%p(%s/%s))", mime,
                 src, src ? src->super : "???", src ? src->type : "???",
                dst, dst ? dst->super : "???", dst ? dst->type : "???"));
 
@@ -239,7 +260,7 @@ mimeFilterLookup(mime_t      *mime, /* I - MIME database */
   key.dst = dst;
 
   filter = (mime_filter_t *)cupsArrayFind(mime->filters, &key);
-  DEBUG_printf(("7mimeFilterLookup: Returning %p(%s).", filter,
+  DEBUG_printf(("3mimeFilterLookup: Returning %p(%s).", filter,
                 filter ? filter->filter : "???"));
   return (filter);
 }
@@ -338,8 +359,10 @@ mime_find_filters(
     {
       DEBUG_printf(("3mime_find_filters: Returning 1 filter, cost %d:",
                     mincost));
-      DEBUG_printf(("3mime_find_filters: %s (cost=%d)", current->filter,
-                   current->cost));
+      DEBUG_printf(("3mime_find_filters: %s/%s %s/%s %d %s",
+                    current->src->super, current->src->type,
+                    current->dst->super, current->dst->type,
+                   current->cost, current->filter));
       return (mintemp);
     }
   }
@@ -412,8 +435,10 @@ mime_find_filters(
       for (current = (mime_filter_t *)cupsArrayFirst(temp);
           current;
           current = (mime_filter_t *)cupsArrayNext(temp))
-       DEBUG_printf(("3mime_find_filters: %s (cost=%d)", current->filter,
-                     current->cost));
+       DEBUG_printf(("3mime_find_filters: %s/%s %s/%s %d %s",
+                     current->src->super, current->src->type,
+                     current->dst->super, current->dst->type,
+                     current->cost, current->filter));
 #endif /* DEBUG */
 
       return (temp);
@@ -456,8 +481,10 @@ mime_find_filters(
     for (current = (mime_filter_t *)cupsArrayFirst(mintemp);
          current;
         current = (mime_filter_t *)cupsArrayNext(mintemp))
-      DEBUG_printf(("3mime_find_filters: %s (cost=%d)", current->filter,
-                    current->cost));
+      DEBUG_printf(("3mime_find_filters: %s/%s %s/%s %d %s",
+                    current->src->super, current->src->type,
+                    current->dst->super, current->dst->type,
+                   current->cost, current->filter));
 #endif /* DEBUG */
 
     if (cost)
index abbe1b668285039ec624a74e23bd68a8d6c86e49..1d8ff6d157709cb15b39594e820a2970deecef51 100644 (file)
@@ -741,7 +741,7 @@ mime_check_rules(
   unsigned char        *bufptr;                /* Pointer into buffer */
 
 
-  DEBUG_printf(("2mime_check_rules(filename=\"%s\", fb=%p, rules=%p)", filename,
+  DEBUG_printf(("4mime_check_rules(filename=\"%s\", fb=%p, rules=%p)", filename,
                 fb, rules));
 
   if (rules == NULL)
@@ -853,7 +853,7 @@ mime_check_rules(
          break;
 
       case MIME_MAGIC_STRING :
-          DEBUG_printf(("3mime_check_rules: string(%d, \"%s\")", rules->offset,
+          DEBUG_printf(("5mime_check_rules: string(%d, \"%s\")", rules->offset,
                        rules->value.stringv));
 
          /*
@@ -872,7 +872,7 @@ mime_check_rules(
                                      sizeof(fb->buffer));
            fb->offset = rules->offset;
 
-            DEBUG_printf(("3mime_check_rules: loaded %d byte fb->buffer at %d, starts "
+            DEBUG_printf(("5mime_check_rules: loaded %d byte fb->buffer at %d, starts "
                          "with \"%c%c%c%c\".",
                          fb->length, fb->offset, fb->buffer[0], fb->buffer[1],
                          fb->buffer[2], fb->buffer[3]));
@@ -888,7 +888,7 @@ mime_check_rules(
          else
             result = (memcmp(fb->buffer + rules->offset - fb->offset,
                             rules->value.stringv, rules->length) == 0);
-          DEBUG_printf(("3mime_check_rules: result=%d", result));
+          DEBUG_printf(("5mime_check_rules: result=%d", result));
          break;
 
       case MIME_MAGIC_ISTRING :
@@ -1089,7 +1089,7 @@ mime_check_rules(
     * the the rule set is false...
     */
 
-    DEBUG_printf(("3mime_check_rules: result of test %p (MIME_MAGIC_%s) is %d",
+    DEBUG_printf(("5mime_check_rules: result of test %p (MIME_MAGIC_%s) is %d",
                   rules, debug_ops[rules->op], result));
 
     if ((result && logic == MIME_MAGIC_OR) ||