/* Copyright (c) Andrew Colin Kissa <andrew@topdog.za.net> 2016 */
/* Copyright (c) University of Cambridge 2016 */
-/* Copyright (c) The Exim Maintainers 1995 - 2018 */
+/* Copyright (c) The Exim Maintainers 1995 - 2020 */
/* See the file NOTICE for conditions of use and distribution. */
+
#include "../exim.h"
+
+#ifdef EXPERIMENTAL_QUEUEFILE /* whole file */
#include "queuefile.h"
+#ifndef EXIM_HAVE_OPENAT
+# error queuefile transport reqires openat() support
+#endif
+
/* Options specific to the appendfile transport. They must be in alphabetic
order (note that "_" comes before the lower case letters). Some of them are
stored in the publicly visible instance block - these are flagged with the
optionlist queuefile_transport_options[] = {
{ "directory", opt_stringptr,
- (void *)offsetof(queuefile_transport_options_block, dirname) },
+ OPT_OFF(queuefile_transport_options_block, dirname) },
};
{
int i, j;
uschar buffer[16384];
-uschar * s;
if (lseek(src, 0, SEEK_SET) != 0)
return FALSE;
do
if ((j = read(src, buffer, sizeof(buffer))) > 0)
- for (s = buffer; (i = write(dst, s, j)) != j; s += i, j -= i)
+ for (uschar * s = buffer; (i = write(dst, s, j)) != j; s += i, j -= i)
if (i < 0)
return FALSE;
else if (j < 0)
tb->name, srcpath, dstpath);
if ( (s = dstpath,
- (dstfd = openat(ddfd, CCS filename, O_RDWR|O_CREAT|O_EXCL, SPOOL_MODE))
+ (dstfd = exim_openat4(ddfd, CCS filename, O_RDWR|O_CREAT|O_EXCL, SPOOL_MODE))
< 0
)
|| is_hdr_file
- && (s = srcpath, (srcfd = openat(sdfd, CCS filename, O_RDONLY)) < 0)
+ && (s = srcpath, (srcfd = exim_openat(sdfd, CCS filename, O_RDONLY)) < 0)
)
op = US"opening";
}
can_link = (dstatbuf.st_dev == sstatbuf.st_dev);
-if (dont_deliver)
+if (f.dont_deliver)
{
DEBUG(D_transport)
debug_printf("*** delivery by %s transport bypassed by -N option\n",
}
#endif /*!MACRO_PREDEF*/
+#endif /*EXPERIMENTAL_QUEUEFILE*/