Recast more internal string routines to use growable-strings
[exim.git] / src / src / dummies.c
1 /*************************************************
2 * Exim - an Internet mail transport agent *
3 *************************************************/
4
5 /* Copyright (c) University of Cambridge 1995 - 2009 */
6 /* See the file NOTICE for conditions of use and distribution. */
7
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
13 alternates. */
14
15 #include <stdarg.h>
16 #include <stdio.h>
17 #include <errno.h>
18 #include <string.h>
19
20 /* We don't have the full Exim headers dragged in, but this function
21 is used for debugging output. */
22
23 extern gstring * string_vformat(gstring *, BOOL, const char *, va_list);
24
25
26 /*************************************************
27 * Handle calls to write the log *
28 *************************************************/
29
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.
32
33 Arguments:
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
38
39 Returns: nothing
40 */
41
42 void
43 log_write(unsigned int selector, int flags, char *format, ...)
44 {
45 va_list ap;
46 va_start(ap, format);
47 vfprintf(stderr, format, ap);
48 fprintf(stderr, "\n");
49 va_end(ap);
50 selector = selector; /* Keep picky compilers happy */
51 flags = flags;
52 }
53
54
55 /*************************************************
56 * Handle calls to print debug output *
57 *************************************************/
58
59 /* The message just gets written to stderr
60
61 Arguments:
62 format a printf() format
63 ... arguments for format
64
65 Returns: nothing
66 */
67
68 void
69 debug_printf(char *format, ...)
70 {
71 va_list ap;
72 gstring * g = string_get(1024);
73 void * reset_point = g;
74
75 va_start(ap, format);
76
77 if (!string_vformat(g, FALSE, format, ap))
78 {
79 char * s = "**** debug string overflowed buffer ****\n";
80 char * p = CS g->s + g->ptr;
81 int maxlen = g->size - (int)strlen(s) - 3;
82 if (p > g->s + maxlen) p = g->s + maxlen;
83 if (p > g->s && p[-1] != '\n') *p++ = '\n';
84 strcpy(p, s);
85 }
86
87 fprintf(stderr, "%s", string_from_gstring(g));
88 fflush(stderr);
89 store_reset(reset_point);
90 va_end(ap);
91 }
92
93
94
95 /*************************************************
96 * SIGALRM handler *
97 *************************************************/
98
99 extern int sigalrm_seen;
100
101 void
102 sigalrm_handler(int sig)
103 {
104 sig = sig; /* Keep picky compilers happy */
105 sigalrm_seen = TRUE;
106 }
107
108
109
110 /*************************************************
111 * Complete Dummies *
112 *************************************************/
113
114 int
115 header_checkname(void *h, char *name, int len)
116 {
117 h = h; /* Keep picky compilers happy */
118 name = name;
119 len = len;
120 return 0;
121 }
122
123 void
124 directory_make(char *parent, char *name, int mode, int panic)
125 {
126 parent = parent; /* Keep picky compilers happy */
127 name = name;
128 mode = mode;
129 panic = panic;
130 }
131
132 void
133 host_build_sender_fullhost(void) { }
134
135 /* This one isn't needed for test_host */
136
137 #ifndef TEST_HOST
138 char *
139 host_ntoa(int type, const void *arg, char *buffer, int *portptr)
140 {
141 type = type; /* Keep picky compilers happy */
142 arg = arg;
143 buffer = buffer;
144 portptr = portptr;
145 return NULL;
146 }
147 #endif
148
149
150 /* End of dummies.c */