#endif
#define string_format(buf, siz, fmt, ...) \
- string_format_trc(buf, siz, US __FUNCTION__, __LINE__, fmt, __VA_ARGS__)
+ string_format_trc(buf, siz, US __FUNCTION__, __LINE__, \
+ fmt __VA_OPT__(,) __VA_ARGS__)
extern BOOL string_format_trc(uschar *, int, const uschar *, unsigned,
const char *, ...) ALMOST_PRINTF(5,6);
unsigned, unsigned, const char *, va_list);
#define string_open_failed(eno, fmt, ...) \
- string_open_failed_trc(eno, US __FUNCTION__, __LINE__, fmt, __VA_ARGS__)
+ string_open_failed_trc(eno, US __FUNCTION__, __LINE__, \
+ fmt __VA_OPT__(,) __VA_ARGS__)
extern uschar *string_open_failed_trc(int, const uschar *, unsigned,
const char *, ...) PRINTF_FUNCTION(4,5);
extern int strncmpic(const uschar *, const uschar *, int);
extern uschar *strstric(uschar *, uschar *, BOOL);
+extern int test_harness_fudged_queue_time(int);
#ifdef EXIM_TFO_PROBE
extern void tfo_probe(void);
#endif
#define string_fmt_append(g, fmt, ...) \
string_fmt_append_f_trc(g, US __FUNCTION__, __LINE__, \
- SVFMT_EXTEND|SVFMT_REBUFFER, fmt, __VA_ARGS__)
+ SVFMT_EXTEND|SVFMT_REBUFFER, fmt __VA_OPT__(,) __VA_ARGS__)
#define string_fmt_append_f(g, flgs, fmt, ...) \
string_fmt_append_f_trc(g, US __FUNCTION__, __LINE__, \
- flgs, fmt, __VA_ARGS__)
+ flgs, fmt __VA_OPT__(,) __VA_ARGS__)
static inline gstring *
string_fmt_append_f_trc(gstring * g, const uschar * func, unsigned line,
# endif
static inline uschar *
-spool_sname(const uschar * purpose, uschar * subdir)
+spool_q_sname(const uschar * purpose, const uschar * q, uschar * subdir)
{
return string_sprintf("%s%s%s%s%s",
- queue_name, *queue_name ? "/" : "",
+ q, *q ? "/" : "",
purpose,
*subdir ? "/" : "", subdir);
}
+static inline uschar *
+spool_sname(const uschar * purpose, uschar * subdir)
+{
+return spool_q_sname(purpose, queue_name, subdir);
+}
+
+static inline uschar *
+spool_q_fname(const uschar * purpose, const uschar * q,
+ const uschar * subdir, const uschar * fname, const uschar * suffix)
+{
+return string_sprintf("%s/%s/%s/%s/%s%s",
+ spool_directory, q, purpose, subdir, fname, suffix);
+}
+
static inline uschar *
spool_fname(const uschar * purpose, const uschar * subdir, const uschar * fname,
const uschar * suffix)
{
-return string_sprintf("%s/%s/%s/%s/%s%s",
- spool_directory, queue_name, purpose, subdir, fname, suffix);
+return spool_q_fname(purpose, queue_name, subdir, fname, suffix);
}
static inline void