1 /*************************************************
2 * Exim - an Internet mail transport agent *
3 *************************************************/
5 /* Copyright (c) University of Cambridge 1995 - 2009 */
6 /* See the file NOTICE for conditions of use and distribution. */
8 /* This file is not part of the main Exim code. There are little bits of test
9 code for some of Exim's modules, and when they are used, the module they are
10 testing may call other main Exim functions that are not available and/or
11 should not be used in a test. The classic case is log_write(). This module
12 contains dummy versions of such functions - well not really dummies, more like
20 /* We don't have the full Exim headers dragged in, but this function
21 is used for debugging output. */
23 extern gstring
* string_vformat(gstring
*, unsigned, const char *, va_list);
26 /*************************************************
27 * Handle calls to write the log *
28 *************************************************/
30 /* The message gets written to stderr when log_write() is called from a
31 utility. The message always gets '\n' added on the end of it.
34 selector not relevant when running a utility
35 flags not relevant when running a utility
36 format a printf() format
37 ... arguments for format
43 log_write(unsigned int selector
, int flags
, char *format
, ...)
47 vfprintf(stderr
, format
, ap
);
48 fprintf(stderr
, "\n");
50 selector
= selector
; /* Keep picky compilers happy */
55 /*************************************************
56 * Handle calls to print debug output *
57 *************************************************/
59 /* The message just gets written to stderr.
60 We use tainted memory to format into just so that we can handle
64 format a printf() format
65 ... arguments for format
71 debug_printf(char *format
, ...)
74 rmark reset_point
= store_mark();
75 gstring
* g
= string_get_tainted(1024, TRUE
);
79 if (!string_vformat(g
, 0, format
, ap
))
81 char * s
= "**** debug string overflowed buffer ****\n";
82 char * p
= CS g
->s
+ g
->ptr
;
83 int maxlen
= g
->size
- (int)strlen(s
) - 3;
84 if (p
> g
->s
+ maxlen
) p
= g
->s
+ maxlen
;
85 if (p
> g
->s
&& p
[-1] != '\n') *p
++ = '\n';
89 fprintf(stderr
, "%s", string_from_gstring(g
));
91 store_reset(reset_point
);
97 /*************************************************
99 *************************************************/
101 extern int sigalrm_seen
;
104 sigalrm_handler(int sig
)
106 sig
= sig
; /* Keep picky compilers happy */
112 /*************************************************
114 *************************************************/
117 header_checkname(void *h
, char *name
, int len
)
119 h
= h
; /* Keep picky compilers happy */
126 directory_make(char *parent
, char *name
, int mode
, int panic
)
128 parent
= parent
; /* Keep picky compilers happy */
135 host_build_sender_fullhost(void) { }
137 /* This one isn't needed for test_host */
141 host_ntoa(int type
, const void *arg
, char *buffer
, int *portptr
)
143 type
= type
; /* Keep picky compilers happy */
152 /* End of dummies.c */