Commit | Line | Data |
---|---|---|
d7d7b7b9 | 1 | /* $Cambridge: exim/src/src/dummies.c,v 1.3 2006/02/07 11:19:00 ph10 Exp $ */ |
059ec3d9 PH |
2 | |
3 | /************************************************* | |
4 | * Exim - an Internet mail transport agent * | |
5 | *************************************************/ | |
6 | ||
d7d7b7b9 | 7 | /* Copyright (c) University of Cambridge 1995 - 2006 */ |
059ec3d9 PH |
8 | /* See the file NOTICE for conditions of use and distribution. */ |
9 | ||
10 | /* This file is not part of the main Exim code. There are little bits of test | |
11 | code for some of Exim's modules, and when they are used, the module they are | |
12 | testing may call other main Exim functions that are not available and/or | |
13 | should not be used in a test. The classic case is log_write(). This module | |
14 | contains dummy versions of such functions - well not really dummies, more like | |
15 | alternates. */ | |
16 | ||
17 | #include <stdarg.h> | |
18 | #include <stdio.h> | |
19 | #include <errno.h> | |
20 | #include <string.h> | |
21 | ||
22 | /* We don't have the full Exim headers dragged in, but this function | |
23 | is used for debugging output. */ | |
24 | ||
25 | extern int string_vformat(char *, int, char *, va_list); | |
26 | ||
27 | ||
28 | /************************************************* | |
29 | * Handle calls to write the log * | |
30 | *************************************************/ | |
31 | ||
32 | /* The message gets written to stderr when log_write() is called from a | |
33 | utility. The message always gets '\n' added on the end of it. | |
34 | ||
35 | Arguments: | |
36 | selector not relevant when running a utility | |
37 | flags not relevant when running a utility | |
38 | format a printf() format | |
39 | ... arguments for format | |
40 | ||
41 | Returns: nothing | |
42 | */ | |
43 | ||
44 | void | |
45 | log_write(unsigned int selector, int flags, char *format, ...) | |
46 | { | |
47 | va_list ap; | |
48 | va_start(ap, format); | |
49 | vfprintf(stderr, format, ap); | |
50 | fprintf(stderr, "\n"); | |
51 | va_end(ap); | |
52 | selector = selector; /* Keep picky compilers happy */ | |
53 | flags = flags; | |
54 | } | |
55 | ||
56 | ||
57 | /************************************************* | |
58 | * Handle calls to print debug output * | |
59 | *************************************************/ | |
60 | ||
61 | /* The message just gets written to stderr | |
62 | ||
63 | Arguments: | |
64 | format a printf() format | |
65 | ... arguments for format | |
66 | ||
67 | Returns: nothing | |
68 | */ | |
69 | ||
70 | void | |
71 | debug_printf(char *format, ...) | |
72 | { | |
73 | va_list ap; | |
74 | char buffer[1024]; | |
75 | ||
76 | va_start(ap, format); | |
77 | ||
78 | if (!string_vformat(buffer, sizeof(buffer), format, ap)) | |
79 | { | |
80 | char *s = "**** debug string overflowed buffer ****\n"; | |
81 | char *p = buffer + (int)strlen(buffer); | |
82 | int maxlen = sizeof(buffer) - (int)strlen(s) - 3; | |
83 | if (p > buffer + maxlen) p = buffer + maxlen; | |
84 | if (p > buffer && p[-1] != '\n') *p++ = '\n'; | |
85 | strcpy(p, s); | |
86 | } | |
87 | ||
88 | fprintf(stderr, "%s", buffer); | |
89 | fflush(stderr); | |
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 = 1; | |
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 */ |