X-Git-Url: https://vcs.fsf.org/?p=exim.git;a=blobdiff_plain;f=src%2Fsrc%2Fspool_out.c;h=4abe5961fade22a325ba8fbdbe7729629a1a85ae;hp=04ecd908e370902941c8e69adc3743f06ffbb674;hb=1ba28e2b955b005ce4825fec792df17f75a8de1e;hpb=47ca6d6cc2fd470063e3f2c36b57ee8960410b7a diff --git a/src/src/spool_out.c b/src/src/spool_out.c index 04ecd908e..4abe5961f 100644 --- a/src/src/spool_out.c +++ b/src/src/spool_out.c @@ -1,10 +1,10 @@ -/* $Cambridge: exim/src/src/spool_out.c,v 1.9 2005/12/12 15:58:53 ph10 Exp $ */ +/* $Cambridge: exim/src/src/spool_out.c,v 1.17 2009/11/16 19:50:37 nm4 Exp $ */ /************************************************* * Exim - an Internet mail transport agent * *************************************************/ -/* Copyright (c) University of Cambridge 1995 - 2005 */ +/* Copyright (c) University of Cambridge 1995 - 2009 */ /* See the file NOTICE for conditions of use and distribution. */ /* Functions for writing spool files, and moving them about. */ @@ -190,25 +190,15 @@ if (sender_ident != NULL) fprintf(f, "-ident %s\n", sender_ident); if (received_protocol != NULL) fprintf(f, "-received_protocol %s\n", received_protocol); -/* Preserve any ACL variables that are set. Because the values may contain -newlines, we use an explicit length. */ +/* Preserve any ACL variables that are set. */ -for (i = 0; i < ACL_CVARS; i++) - { - if (acl_var[i] != NULL) - fprintf(f, "-aclc %d %d\n%s\n", i, Ustrlen(acl_var[i]), acl_var[i]); - } - -for (i = 0; i < ACL_MVARS; i++) - { - int j = i + ACL_CVARS; - if (acl_var[j] != NULL) - fprintf(f, "-aclm %d %d\n%s\n", i, Ustrlen(acl_var[j]), acl_var[j]); - } +tree_walk(acl_var_c, &acl_var_write, f); +tree_walk(acl_var_m, &acl_var_write, f); /* Now any other data that needs to be remembered. */ fprintf(f, "-body_linecount %d\n", body_linecount); +fprintf(f, "-max_received_linelength %d\n", max_received_linelength); if (body_zerocount > 0) fprintf(f, "-body_zerocount %d\n", body_zerocount); @@ -298,7 +288,7 @@ if (fflush(f) != 0 || ferror(f)) just pushes it out of C, and fclose() doesn't guarantee to do the write either. That's just the way Unix works... */ -if (fsync(fileno(f)) < 0) +if (EXIMfsync(fileno(f)) < 0) return spool_write_error(where, errmsg, US"sync", temp_name, f); /* Get the size of the file, and close it. */ @@ -336,7 +326,7 @@ sprintf(CS temp_name, "%s/input/%s/.", spool_directory, message_subdir); if ((fd = Uopen(temp_name, O_RDONLY|O_DIRECTORY, 0)) < 0) return spool_write_error(where, errmsg, US"directory open", name, NULL); -if (fsync(fd) < 0 && errno != EINVAL) +if (EXIMfsync(fd) < 0 && errno != EINVAL) return spool_write_error(where, errmsg, US"directory sync", name, NULL); if (close(fd) < 0)