Testsuite: add file-inclusion facility to "client" scripts
[exim.git] / src / src / mime.c
index 17643eda366f5ef1ea621aa8761932082f09e04c..821cb541d8ea42ded344a04c87e0fdef81335f1f 100644 (file)
@@ -233,11 +233,9 @@ long f_pos = 0;
 ssize_t size_counter = 0;
 ssize_t (*decode_function)(FILE*, FILE*, uschar*);
 
-if (mime_stream == NULL)
+if (!mime_stream || (f_pos = ftell(mime_stream)) < 0)
   return FAIL;
 
-f_pos = ftell(mime_stream);
-
 /* build default decode path (will exist since MBOX must be spooled up) */
 (void)string_format(decode_path,1024,"%s/scan/%s",spool_directory,message_id);
 
@@ -247,7 +245,7 @@ if ((option = string_nextinlist(&list, &sep,
                                sizeof(option_buffer))) != NULL)
   {
   /* parse 1st option */
-  if ( (Ustrcmp(option,"false") == 0) || (Ustrcmp(option,"0") == 0) )
+  if ((Ustrcmp(option,"false") == 0) || (Ustrcmp(option,"0") == 0))
     /* explicitly no decoding */
     return FAIL;
 
@@ -448,7 +446,7 @@ uschar * s = *sp;
 uschar * val = NULL;
 int size = 0, ptr = 0;
 
-/* debug_printf("   considering paramval '%s'\n", s); */
+/* debug_printf_indent("   considering paramval '%s'\n", s); */
 
 while (*s && *s != ';')                /* ; terminates */
   if (*s == '"')
@@ -547,7 +545,7 @@ while(1)
     if (!fgets(CS header, MIME_MAX_HEADER_SIZE, f))
       {
       /* Hit EOF or read error. Ugh. */
-      DEBUG(D_acl) debug_printf("MIME: Hit EOF ...\n");
+      DEBUG(D_acl) debug_printf_indent("MIME: Hit EOF ...\n");
       return rc;
       }
 
@@ -559,12 +557,12 @@ while(1)
       if (Ustrncmp((header+2+Ustrlen(context->boundary)), "--", 2) == 0)
        {
        /* END boundary found */
-       DEBUG(D_acl) debug_printf("MIME: End boundary found %s\n",
+       DEBUG(D_acl) debug_printf_indent("MIME: End boundary found %s\n",
          context->boundary);
        return rc;
        }
 
-      DEBUG(D_acl) debug_printf("MIME: Next part with boundary %s\n",
+      DEBUG(D_acl) debug_printf_indent("MIME: Next part with boundary %s\n",
        context->boundary);
       break;
       }
@@ -588,7 +586,7 @@ while(1)
 
       for (q = p; *q != ';' && *q; q++) ;
       *mh->value = string_copynlc(p, q-p);
-      DEBUG(D_acl) debug_printf("MIME: found %s header, value is '%s'\n",
+      DEBUG(D_acl) debug_printf_indent("MIME: found %s header, value is '%s'\n",
        mh->name, *mh->value);
 
       if (*(p = q)) p++;                       /* jump past the ; */
@@ -606,7 +604,7 @@ while(1)
          {
          mime_parameter * mp;
 
-         DEBUG(D_acl) debug_printf("MIME:   considering paramlist '%s'\n", p);
+         DEBUG(D_acl) debug_printf_indent("MIME:   considering paramlist '%s'\n", p);
 
          if (  !mime_filename
             && strncmpic(CUS"content-disposition:", header, 20) == 0
@@ -651,15 +649,15 @@ while(1)
                else
                  p = q;
 
-               DEBUG(D_acl) debug_printf("MIME:    charset %s fname '%s'\n",
+               DEBUG(D_acl) debug_printf_indent("MIME:    charset %s fname '%s'\n",
                  mime_filename_charset ? mime_filename_charset : US"<NULL>", p);
 
                temp_string = rfc2231_to_2047(p, mime_filename_charset, &slen);
-               DEBUG(D_acl) debug_printf("MIME:    2047-name %s\n", temp_string);
+               DEBUG(D_acl) debug_printf_indent("MIME:    2047-name %s\n", temp_string);
 
                temp_string = rfc2047_decode(temp_string, FALSE, NULL, ' ',
                  NULL, &err_msg);
-               DEBUG(D_acl) debug_printf("MIME:    plain-name %s\n", temp_string);
+               DEBUG(D_acl) debug_printf_indent("MIME:    plain-name %s\n", temp_string);
 
                size = Ustrlen(temp_string);
 
@@ -694,7 +692,7 @@ while(1)
                ? rfc2047_decode(q, check_rfc2047_length, NULL, 32, NULL,
                    &dummy_errstr)
                : NULL;
-             DEBUG(D_acl) debug_printf(
+             DEBUG(D_acl) debug_printf_indent(
                "MIME:  found %s parameter in %s header, value '%s'\n",
                mp->name, mh->name, *mp->value);
 
@@ -712,7 +710,7 @@ while(1)
          {
          if (decoding_failed) mime_filename = mime_fname_rfc2231;
 
-         DEBUG(D_acl) debug_printf(
+         DEBUG(D_acl) debug_printf_indent(
            "MIME:  found %s parameter in %s header, value is '%s'\n",
            "filename", mh->name, mime_filename);
          }
@@ -755,7 +753,7 @@ while(1)
        (Ustrncmp(mime_content_type,"multipart",9) == 0) )
     {
     DEBUG(D_acl)
-      debug_printf("MIME: Entering multipart recursion, boundary '%s'\n",
+      debug_printf_indent("MIME: Entering multipart recursion, boundary '%s'\n",
        nested_context.boundary);
 
     nested_context.context =