2 * Amanda, The Advanced Maryland Automatic Network Disk Archiver
3 * Copyright (c) 1991-1998 University of Maryland at College Park
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.
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.
23 * Authors: the Amanda Development Team. Its members are listed in a
24 * file named AUTHORS, in the root directory of this distribution.
27 * $Id: genversion.c,v 1.18.4.4.4.1.2.2 2003/10/07 17:10:08 martinea Exp $
29 * dump the current Amanda version info
33 #include "genversion.h"
39 #define newline() do { \
40 printf(" \"%s\\n\",\n", line); \
46 #define prstr(string) do { \
47 int len = strlen(string); \
48 if(linelen+len >= MARGIN) { \
50 ap_snprintf(line, sizeof(line), "%*s", indent, ""); \
53 line[sizeof(line)-1] = '\0'; \
54 strncat(line, (string), sizeof(line)-strlen(line)); \
58 /* Print a text "variable" */
59 #define prvar(var, val) do { \
60 str = newvstralloc(str, (var), "=\\\"", (val), "\\\"", NULL); \
64 /* Print a undef "variable" */
65 #define prundefvar(var) do { \
66 str = newvstralloc(str, (var), "=UNDEF", NULL); \
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); \
80 char line[STR_SIZE], *str = NULL;
83 unsigned long malloc_hist_1, malloc_size_1;
84 unsigned long malloc_hist_2, malloc_size_2;
86 for(fd = 3; fd < FD_SETSIZE; fd++) {
88 * Make sure nobody spoofs us with a lot of extra open files
89 * that would cause an open we do to get a very high file
90 * descriptor, which in turn might be used as an index into
91 * an array (e.g. an fd_set).
96 set_pname("genversion");
98 malloc_size_1 = malloc_inuse(&malloc_hist_1);
100 printf("/* version.c - generated by genversion.c - DO NOT EDIT! */\n");
101 printf("char *version_info[] = {\n");
103 *line = '\0', linelen = 0, indent = 0;
106 prstr("build:"); indent = linelen;
109 char version_str[STR_SIZE];
111 ap_snprintf(version_str, sizeof(version_str), "Amanda-%s", version());
112 prvar(" VERSION", version_str);
116 prvar(" BUILT_DATE", BUILT_DATE);
118 prundefvar(" BUILT_DATE");
122 prvar(" BUILT_MACH", BUILT_MACH);
124 prundefvar(" BUILT_MACH");
133 #ifdef CONFIGURE_COMMAND
134 prvar(" CONFIGURE_COMMAND", CONFIGURE_COMMAND);
136 prundefvar(" CONFIGURE_COMMAND");
142 prstr("paths:"); indent = linelen;
144 prvar(" bindir", bindir);
145 prvar(" sbindir", sbindir);
146 prvar(" libexecdir", libexecdir);
147 prvar(" mandir", mandir);
148 prvar(" AMANDA_TMPDIR", AMANDA_TMPDIR);
150 prvar(" AMANDA_DBGDIR", AMANDA_DBGDIR);
152 prundefvar(" AMANDA_DBGDIR");
155 prvar(" CONFIG_DIR", CONFIG_DIR);
158 prvar(" DEV_PREFIX", DEV_PREFIX);
160 prundefvar(" DEV_PREFIX");
164 prvar(" RDEV_PREFIX", RDEV_PREFIX);
166 prundefvar(" RDEV_PREFIX");
170 prvar(" DUMP", DUMP);
171 prvar(" RESTORE", RESTORE);
174 prundefvar(" RESTORE");
178 prvar(" VDUMP", VDUMP);
179 prvar(" VRESTORE", VRESTORE);
181 prundefvar(" VDUMP");
182 prundefvar(" VRESTORE");
186 prvar(" XFSDUMP", XFSDUMP);
187 prvar(" XFSRESTORE", XFSRESTORE);
189 prundefvar(" XFSDUMP");
190 prundefvar(" XFSRESTORE");
194 prvar(" VXDUMP", VXDUMP);
195 prvar(" VXRESTORE", VXRESTORE);
197 prundefvar(" VXDUMP");
198 prundefvar(" VXRESTORE");
202 prvar(" SAMBA_CLIENT", SAMBA_CLIENT);
204 prundefvar(" SAMBA_CLIENT");
208 prvar(" GNUTAR", GNUTAR);
210 prundefvar(" GNUTAR");
214 prvar(" COMPRESS_PATH", COMPRESS_PATH);
216 prundefvar(" COMPRESS_PATH");
219 #ifdef UNCOMPRESS_PATH
220 prvar(" UNCOMPRESS_PATH", UNCOMPRESS_PATH);
222 prundefvar(" UNCOMPRESS_PATH");
226 prvar(" LPRCMD", LPRCMD);
228 prundefvar(" LPRCMD");
231 prvar(" MAILER", MAILER);
233 #ifdef GNUTAR_LISTED_INCREMENTAL_DIR
234 prvar(" listed_incr_dir", GNUTAR_LISTED_INCREMENTAL_DIR);
236 prundefvar(" listed_incr_dir");
242 prstr("defs: "); indent = linelen;
244 prvar(" DEFAULT_SERVER", DEFAULT_SERVER);
245 prvar(" DEFAULT_CONFIG", DEFAULT_CONFIG);
246 prvar(" DEFAULT_TAPE_SERVER", DEFAULT_TAPE_SERVER);
247 prvar(" DEFAULT_TAPE_DEVICE", DEFAULT_TAPE_DEVICE);
250 prstr(" AIX_BACKUP");
254 prstr(" AIX_TAPEIO");
258 prstr(" BROKEN_VOID");
261 #ifdef DUMP_RETURNS_1
262 prstr(" DUMP_RETURNS_1");
269 #ifndef HAVE_STRERROR
270 prstr(" NEED_STRERROR");
274 prstr(" NEED_STRSTR");
278 prstr(" HAVE_SYSVSHM");
281 #ifdef USE_POSIX_FCNTL
282 prstr(" LOCKING=POSIX_FCNTL");
285 prstr(" LOCKING=FLOCK");
288 prstr(" LOCKING=LOCKF");
291 prstr(" LOCKING=LNLOCK");
293 #if !defined(USE_POSIX_FCNTL) && !defined(USE_FLOCK) && !defined(USE_LOCK) && !defined(USE_LNLOCK)
294 prstr(" LOCKING=**NONE**");
298 prstr(" STATFS_BSD");
302 prstr(" STATFS_OSF1");
306 prstr(" STATFS_ULTRIX");
310 prstr(" SETPGRP_VOID");
314 prstr(" ASSERTIONS");
318 prstr(" DEBUG_CODE");
321 #ifdef AMANDA_DEBUG_DAYS
322 prnum(" AMANDA_DEBUG_DAYS", AMANDA_DEBUG_DAYS);
326 prstr(" BSD_SECURITY");
329 #ifdef USE_AMANDAHOSTS
330 prstr(" USE_AMANDAHOSTS");
334 prstr(" USE_RUNDUMP");
338 #define HOSTNAME_INSTANCE "<hostname>"
340 char lifetime_str[NUM_STR_SIZE];
342 prstr(" KRB4_SECURITY");
343 prvar(" SERVER_HOST_PRINCIPLE", SERVER_HOST_PRINCIPLE);
344 prvar(" SERVER_HOST_INSTANCE", SERVER_HOST_INSTANCE);
345 prvar(" SERVER_HOST_KEY_FILE", SERVER_HOST_KEY_FILE);
346 prvar(" CLIENT_HOST_PRINCIPLE", CLIENT_HOST_PRINCIPLE);
347 prvar(" CLIENT_HOST_INSTANCE", CLIENT_HOST_INSTANCE);
348 prvar(" CLIENT_HOST_KEY_FILE", CLIENT_HOST_KEY_FILE);
349 ap_snprintf(lifetime_str, sizeof(lifetime_str), "%d", TICKET_LIFETIME);
350 prvar(" TICKET_LIFETIME", lifetime_str);
354 prvar(" CLIENT_LOGIN", CLIENT_LOGIN);
357 prstr(" FORCE_USERID");
360 #ifdef USE_VERSION_SUFFIXES
361 prstr(" USE_VERSION_SUFFIXES");
368 #ifdef COMPRESS_SUFFIX
369 prvar(" COMPRESS_SUFFIX", COMPRESS_SUFFIX);
372 #ifdef COMPRESS_FAST_OPT
373 prvar(" COMPRESS_FAST_OPT", COMPRESS_FAST_OPT);
376 #ifdef COMPRESS_BEST_OPT
377 prvar(" COMPRESS_BEST_OPT", COMPRESS_BEST_OPT);
380 #ifdef UNCOMPRESS_OPT
381 prvar(" UNCOMPRESS_OPT", UNCOMPRESS_OPT);
391 malloc_size_2 = malloc_inuse(&malloc_hist_2);
393 if(malloc_size_1 != malloc_size_2) {
394 malloc_list(fileno(stderr), malloc_hist_1, malloc_hist_2);