Imported Upstream version 2.4.5p1
[debian/amanda] / common-src / genversion.c
1 /*
2  * Amanda, The Advanced Maryland Automatic Network Disk Archiver
3  * Copyright (c) 1991-1998 University of Maryland at College Park
4  * All Rights Reserved.
5  *
6  * Permission to use, copy, modify, distribute, and sell this software and its
7  * documentation for any purpose is hereby granted without fee, provided that
8  * the above copyright notice appear in all copies and that both that
9  * copyright notice and this permission notice appear in supporting
10  * documentation, and that the name of U.M. not be used in advertising or
11  * publicity pertaining to distribution of the software without specific,
12  * written prior permission.  U.M. makes no representations about the
13  * suitability of this software for any purpose.  It is provided "as is"
14  * without express or implied warranty.
15  *
16  * U.M. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL U.M.
18  * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
19  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
20  * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
21  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
22  *
23  * Authors: the Amanda Development Team.  Its members are listed in a
24  * file named AUTHORS, in the root directory of this distribution.
25  */
26 /*
27  * $Id: genversion.c,v 1.18.4.4.4.1.2.2.2.1 2005/09/20 21:31:52 jrjackson Exp $
28  *
29  * dump the current Amanda version info
30  */
31 #include "amanda.h"
32 #include "version.h"
33 #include "genversion.h"
34
35 int main P((void));
36
37 #define MARGIN  70
38
39 #define newline() do {                                                  \
40     printf("  \"%s\\n\",\n", line);                                     \
41     *line = '\0';                                                       \
42     linelen = 0;                                                        \
43 } while (0)
44
45 /* Print a string */
46 #define prstr(string) do {                                              \
47     int len = strlen(string);                                           \
48     if(linelen+len >= MARGIN) {                                         \
49         newline();                                                      \
50         ap_snprintf(line, sizeof(line), "%*s", indent, "");             \
51         linelen = indent;                                               \
52     }                                                                   \
53     line[sizeof(line)-1] = '\0';                                        \
54     strncat(line, (string), sizeof(line)-strlen(line));                 \
55     linelen += len;                                                     \
56 } while (0)
57
58 /* Print a text "variable" */
59 #define prvar(var, val) do {                                            \
60     str = newvstralloc(str, (var), "=\\\"", (val), "\\\"", NULL);       \
61     prstr(str);                                                         \
62 } while(0)
63
64 /* Print a undef "variable" */
65 #define prundefvar(var) do {                                            \
66     str = newvstralloc(str, (var), "=UNDEF", NULL);                     \
67     prstr(str);                                                         \
68 } while(0)
69
70 /* Print a numeric "variable" */
71 #define prnum(var, val) do {                                            \
72     char number[NUM_STR_SIZE];                                          \
73     ap_snprintf(number, sizeof(number), "%ld", (long)(val));            \
74     str = newvstralloc(str, (var), "=", number, NULL);                  \
75     prstr(str);                                                         \
76 } while(0)
77
78 int main()
79 {
80     char line[STR_SIZE], *str = NULL;
81     int  linelen, indent;
82     unsigned long malloc_hist_1, malloc_size_1;
83     unsigned long malloc_hist_2, malloc_size_2;
84
85     safe_fd(-1, 0);
86
87     set_pname("genversion");
88
89     malloc_size_1 = malloc_inuse(&malloc_hist_1);
90
91     printf("/* version.c - generated by genversion.c - DO NOT EDIT! */\n");
92     printf("char *version_info[] = {\n");
93
94     *line = '\0', linelen = 0, indent = 0;
95
96
97     prstr("build:"); indent = linelen;
98
99     {
100         char version_str[STR_SIZE];
101
102         ap_snprintf(version_str, sizeof(version_str), "Amanda-%s", version());
103         prvar(" VERSION", version_str);
104     }
105
106 #ifdef BUILT_DATE
107     prvar(" BUILT_DATE", BUILT_DATE);
108 #else
109     prundefvar(" BUILT_DATE");
110 #endif
111
112 #ifdef BUILT_MACH
113     prvar(" BUILT_MACH", BUILT_MACH);
114 #else
115     prundefvar(" BUILT_MACH");
116 #endif
117
118 #ifdef CC
119     prvar(" CC", CC);
120 #else
121     prundefvar(" CC");
122 #endif
123
124 #ifdef CONFIGURE_COMMAND
125     prvar(" CONFIGURE_COMMAND", CONFIGURE_COMMAND);
126 #else
127     prundefvar(" CONFIGURE_COMMAND");
128 #endif
129
130     newline();
131
132
133     prstr("paths:"); indent = linelen;
134
135     prvar(" bindir", bindir);
136     prvar(" sbindir", sbindir);
137     prvar(" libexecdir", libexecdir);
138     prvar(" mandir", mandir);
139     prvar(" AMANDA_TMPDIR", AMANDA_TMPDIR);
140 #ifdef AMANDA_DBGDIR
141     prvar(" AMANDA_DBGDIR", AMANDA_DBGDIR);
142 #else
143     prundefvar(" AMANDA_DBGDIR");
144 #endif
145
146     prvar(" CONFIG_DIR", CONFIG_DIR);
147
148 #ifdef DEV_PREFIX
149     prvar(" DEV_PREFIX", DEV_PREFIX);
150 #else
151     prundefvar(" DEV_PREFIX");
152 #endif
153
154 #ifdef RDEV_PREFIX
155     prvar(" RDEV_PREFIX", RDEV_PREFIX);
156 #else
157     prundefvar(" RDEV_PREFIX");
158 #endif
159
160 #ifdef DUMP
161     prvar(" DUMP", DUMP);
162     prvar(" RESTORE", RESTORE);
163 #else
164     prundefvar(" DUMP");
165     prundefvar(" RESTORE");
166 #endif
167
168 #ifdef VDUMP
169     prvar(" VDUMP", VDUMP);
170     prvar(" VRESTORE", VRESTORE);
171 #else
172     prundefvar(" VDUMP");
173     prundefvar(" VRESTORE");
174 #endif
175
176 #ifdef XFSDUMP
177     prvar(" XFSDUMP", XFSDUMP);
178     prvar(" XFSRESTORE", XFSRESTORE);
179 #else
180     prundefvar(" XFSDUMP");
181     prundefvar(" XFSRESTORE");
182 #endif
183
184 #ifdef VXDUMP
185     prvar(" VXDUMP", VXDUMP);
186     prvar(" VXRESTORE", VXRESTORE);
187 #else
188     prundefvar(" VXDUMP");
189     prundefvar(" VXRESTORE");
190 #endif
191
192 #ifdef SAMBA_CLIENT
193     prvar(" SAMBA_CLIENT", SAMBA_CLIENT);
194 #else
195     prundefvar(" SAMBA_CLIENT");
196 #endif
197
198 #ifdef GNUTAR
199     prvar(" GNUTAR", GNUTAR);
200 #else
201     prundefvar(" GNUTAR");
202 #endif
203
204 #ifdef COMPRESS_PATH
205     prvar(" COMPRESS_PATH", COMPRESS_PATH);
206 #else
207     prundefvar(" COMPRESS_PATH");
208 #endif
209
210 #ifdef UNCOMPRESS_PATH
211     prvar(" UNCOMPRESS_PATH", UNCOMPRESS_PATH);
212 #else
213     prundefvar(" UNCOMPRESS_PATH");
214 #endif
215
216 #ifdef LPRCMD
217     prvar(" LPRCMD", LPRCMD);
218 #else
219     prundefvar(" LPRCMD");
220 #endif
221
222     prvar(" MAILER", MAILER);
223
224 #ifdef GNUTAR_LISTED_INCREMENTAL_DIR
225     prvar(" listed_incr_dir", GNUTAR_LISTED_INCREMENTAL_DIR);
226 #else
227     prundefvar(" listed_incr_dir");
228 #endif
229
230     newline();
231
232
233     prstr("defs: "); indent = linelen;
234
235     prvar(" DEFAULT_SERVER", DEFAULT_SERVER);
236     prvar(" DEFAULT_CONFIG", DEFAULT_CONFIG);
237     prvar(" DEFAULT_TAPE_SERVER", DEFAULT_TAPE_SERVER);
238     prvar(" DEFAULT_TAPE_DEVICE", DEFAULT_TAPE_DEVICE);
239
240 #ifdef AIX_BACKUP
241     prstr(" AIX_BACKUP");
242 #endif
243
244 #ifdef AIX_TAPEIO
245     prstr(" AIX_TAPEIO");
246 #endif
247
248 #ifdef BROKEN_VOID
249     prstr(" BROKEN_VOID");
250 #endif
251
252 #ifdef DUMP_RETURNS_1
253     prstr(" DUMP_RETURNS_1");
254 #endif
255
256 #ifdef HAVE_MMAP
257     prstr(" HAVE_MMAP");
258 #endif
259
260 #ifndef HAVE_STRERROR
261     prstr(" NEED_STRERROR");
262 #endif
263
264 #ifndef HAVE_STRSTR
265     prstr(" NEED_STRSTR");
266 #endif
267
268 #ifdef HAVE_SYSVSHM
269     prstr(" HAVE_SYSVSHM");
270 #endif
271
272 #ifdef USE_POSIX_FCNTL
273     prstr(" LOCKING=POSIX_FCNTL");
274 #endif
275 #ifdef USE_FLOCK
276     prstr(" LOCKING=FLOCK");
277 #endif
278 #ifdef USE_LOCKF
279     prstr(" LOCKING=LOCKF");
280 #endif
281 #ifdef USE_LNLOCK
282     prstr(" LOCKING=LNLOCK");
283 #endif
284 #if !defined(USE_POSIX_FCNTL) && !defined(USE_FLOCK) && !defined(USE_LOCK) && !defined(USE_LNLOCK)
285     prstr(" LOCKING=**NONE**");
286 #endif
287
288 #ifdef STATFS_BSD
289     prstr(" STATFS_BSD");
290 #endif
291
292 #ifdef STATFS_OSF1
293     prstr(" STATFS_OSF1");
294 #endif
295
296 #ifdef STATFS_ULTRIX
297     prstr(" STATFS_ULTRIX");
298 #endif
299
300 #ifdef SETPGRP_VOID
301     prstr(" SETPGRP_VOID");
302 #endif
303
304 #ifdef ASSERTIONS
305     prstr(" ASSERTIONS");
306 #endif
307
308 #ifdef DEBUG_CODE
309     prstr(" DEBUG_CODE");
310 #endif
311
312 #ifdef AMANDA_DEBUG_DAYS
313     prnum(" AMANDA_DEBUG_DAYS", AMANDA_DEBUG_DAYS);
314 #endif
315
316 #ifdef BSD_SECURITY
317     prstr(" BSD_SECURITY");
318 #endif
319
320 #ifdef USE_AMANDAHOSTS
321     prstr(" USE_AMANDAHOSTS");
322 #endif
323
324 #ifdef USE_RUNDUMP
325     prstr(" USE_RUNDUMP");
326 #endif
327
328 #ifdef KRB4_SECURITY
329 #define HOSTNAME_INSTANCE "<hostname>"
330     {
331         char lifetime_str[NUM_STR_SIZE];
332
333         prstr(" KRB4_SECURITY");
334         prvar(" SERVER_HOST_PRINCIPLE", SERVER_HOST_PRINCIPLE);
335         prvar(" SERVER_HOST_INSTANCE", SERVER_HOST_INSTANCE);
336         prvar(" SERVER_HOST_KEY_FILE", SERVER_HOST_KEY_FILE);
337         prvar(" CLIENT_HOST_PRINCIPLE", CLIENT_HOST_PRINCIPLE);
338         prvar(" CLIENT_HOST_INSTANCE", CLIENT_HOST_INSTANCE);
339         prvar(" CLIENT_HOST_KEY_FILE", CLIENT_HOST_KEY_FILE);
340         ap_snprintf(lifetime_str, sizeof(lifetime_str), "%d", TICKET_LIFETIME);
341         prvar(" TICKET_LIFETIME", lifetime_str);
342     }
343 #endif
344
345     prvar(" CLIENT_LOGIN", CLIENT_LOGIN);
346
347 #ifdef FORCE_USERID
348     prstr(" FORCE_USERID");
349 #endif
350
351 #ifdef USE_VERSION_SUFFIXES
352     prstr(" USE_VERSION_SUFFIXES");
353 #endif
354
355 #ifdef HAVE_GZIP
356     prstr(" HAVE_GZIP");
357 #endif
358
359 #ifdef COMPRESS_SUFFIX
360     prvar(" COMPRESS_SUFFIX", COMPRESS_SUFFIX);
361 #endif
362
363 #ifdef COMPRESS_FAST_OPT
364     prvar(" COMPRESS_FAST_OPT", COMPRESS_FAST_OPT);
365 #endif
366
367 #ifdef COMPRESS_BEST_OPT
368     prvar(" COMPRESS_BEST_OPT", COMPRESS_BEST_OPT);
369 #endif
370
371 #ifdef UNCOMPRESS_OPT
372     prvar(" UNCOMPRESS_OPT", UNCOMPRESS_OPT);
373 #endif
374
375     newline();
376
377
378     printf("  0\n};\n");
379
380     amfree(str);
381
382     malloc_size_2 = malloc_inuse(&malloc_hist_2);
383
384     if(malloc_size_1 != malloc_size_2) {
385         malloc_list(fileno(stderr), malloc_hist_1, malloc_hist_2);
386     }
387
388     return 0;
389 }