Commit | Line | Data |
---|---|---|
059ec3d9 PH |
1 | /************************************************* |
2 | * Exim - an Internet mail transport agent * | |
3 | *************************************************/ | |
4 | ||
0a49a7a4 | 5 | /* Copyright (c) University of Cambridge 1995 - 2009 */ |
059ec3d9 PH |
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 int string_vformat(char *, int, 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 | char buffer[1024]; | |
73 | ||
74 | va_start(ap, format); | |
75 | ||
76 | if (!string_vformat(buffer, sizeof(buffer), format, ap)) | |
77 | { | |
78 | char *s = "**** debug string overflowed buffer ****\n"; | |
79 | char *p = buffer + (int)strlen(buffer); | |
80 | int maxlen = sizeof(buffer) - (int)strlen(s) - 3; | |
81 | if (p > buffer + maxlen) p = buffer + maxlen; | |
82 | if (p > buffer && p[-1] != '\n') *p++ = '\n'; | |
83 | strcpy(p, s); | |
84 | } | |
85 | ||
86 | fprintf(stderr, "%s", buffer); | |
87 | fflush(stderr); | |
88 | va_end(ap); | |
89 | } | |
90 | ||
91 | ||
92 | ||
93 | /************************************************* | |
94 | * SIGALRM handler * | |
95 | *************************************************/ | |
96 | ||
97 | extern int sigalrm_seen; | |
98 | ||
99 | void | |
100 | sigalrm_handler(int sig) | |
101 | { | |
102 | sig = sig; /* Keep picky compilers happy */ | |
103 | sigalrm_seen = 1; | |
104 | } | |
105 | ||
106 | ||
107 | ||
108 | /************************************************* | |
109 | * Complete Dummies * | |
110 | *************************************************/ | |
111 | ||
112 | int | |
113 | header_checkname(void *h, char *name, int len) | |
114 | { | |
115 | h = h; /* Keep picky compilers happy */ | |
116 | name = name; | |
117 | len = len; | |
118 | return 0; | |
119 | } | |
120 | ||
121 | void | |
122 | directory_make(char *parent, char *name, int mode, int panic) | |
123 | { | |
124 | parent = parent; /* Keep picky compilers happy */ | |
125 | name = name; | |
126 | mode = mode; | |
127 | panic = panic; | |
128 | } | |
129 | ||
130 | void | |
131 | host_build_sender_fullhost(void) { } | |
132 | ||
133 | /* This one isn't needed for test_host */ | |
134 | ||
135 | #ifndef TEST_HOST | |
136 | char * | |
137 | host_ntoa(int type, const void *arg, char *buffer, int *portptr) | |
138 | { | |
139 | type = type; /* Keep picky compilers happy */ | |
140 | arg = arg; | |
141 | buffer = buffer; | |
142 | portptr = portptr; | |
143 | return NULL; | |
144 | } | |
145 | #endif | |
146 | ||
147 | ||
148 | /* End of dummies.c */ |