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.2.1 2005/09/20 21:31:52 jrjackson 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;
82 unsigned long malloc_hist_1, malloc_size_1;
83 unsigned long malloc_hist_2, malloc_size_2;
87 set_pname("genversion");
89 malloc_size_1 = malloc_inuse(&malloc_hist_1);
91 printf("/* version.c - generated by genversion.c - DO NOT EDIT! */\n");
92 printf("char *version_info[] = {\n");
94 *line = '\0', linelen = 0, indent = 0;
97 prstr("build:"); indent = linelen;
100 char version_str[STR_SIZE];
102 ap_snprintf(version_str, sizeof(version_str), "Amanda-%s", version());
103 prvar(" VERSION", version_str);
107 prvar(" BUILT_DATE", BUILT_DATE);
109 prundefvar(" BUILT_DATE");
113 prvar(" BUILT_MACH", BUILT_MACH);
115 prundefvar(" BUILT_MACH");
124 #ifdef CONFIGURE_COMMAND
125 prvar(" CONFIGURE_COMMAND", CONFIGURE_COMMAND);
127 prundefvar(" CONFIGURE_COMMAND");
133 prstr("paths:"); indent = linelen;
135 prvar(" bindir", bindir);
136 prvar(" sbindir", sbindir);
137 prvar(" libexecdir", libexecdir);
138 prvar(" mandir", mandir);
139 prvar(" AMANDA_TMPDIR", AMANDA_TMPDIR);
141 prvar(" AMANDA_DBGDIR", AMANDA_DBGDIR);
143 prundefvar(" AMANDA_DBGDIR");
146 prvar(" CONFIG_DIR", CONFIG_DIR);
149 prvar(" DEV_PREFIX", DEV_PREFIX);
151 prundefvar(" DEV_PREFIX");
155 prvar(" RDEV_PREFIX", RDEV_PREFIX);
157 prundefvar(" RDEV_PREFIX");
161 prvar(" DUMP", DUMP);
162 prvar(" RESTORE", RESTORE);
165 prundefvar(" RESTORE");
169 prvar(" VDUMP", VDUMP);
170 prvar(" VRESTORE", VRESTORE);
172 prundefvar(" VDUMP");
173 prundefvar(" VRESTORE");
177 prvar(" XFSDUMP", XFSDUMP);
178 prvar(" XFSRESTORE", XFSRESTORE);
180 prundefvar(" XFSDUMP");
181 prundefvar(" XFSRESTORE");
185 prvar(" VXDUMP", VXDUMP);
186 prvar(" VXRESTORE", VXRESTORE);
188 prundefvar(" VXDUMP");
189 prundefvar(" VXRESTORE");
193 prvar(" SAMBA_CLIENT", SAMBA_CLIENT);
195 prundefvar(" SAMBA_CLIENT");
199 prvar(" GNUTAR", GNUTAR);
201 prundefvar(" GNUTAR");
205 prvar(" COMPRESS_PATH", COMPRESS_PATH);
207 prundefvar(" COMPRESS_PATH");
210 #ifdef UNCOMPRESS_PATH
211 prvar(" UNCOMPRESS_PATH", UNCOMPRESS_PATH);
213 prundefvar(" UNCOMPRESS_PATH");
217 prvar(" LPRCMD", LPRCMD);
219 prundefvar(" LPRCMD");
222 prvar(" MAILER", MAILER);
224 #ifdef GNUTAR_LISTED_INCREMENTAL_DIR
225 prvar(" listed_incr_dir", GNUTAR_LISTED_INCREMENTAL_DIR);
227 prundefvar(" listed_incr_dir");
233 prstr("defs: "); indent = linelen;
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);
241 prstr(" AIX_BACKUP");
245 prstr(" AIX_TAPEIO");
249 prstr(" BROKEN_VOID");
252 #ifdef DUMP_RETURNS_1
253 prstr(" DUMP_RETURNS_1");
260 #ifndef HAVE_STRERROR
261 prstr(" NEED_STRERROR");
265 prstr(" NEED_STRSTR");
269 prstr(" HAVE_SYSVSHM");
272 #ifdef USE_POSIX_FCNTL
273 prstr(" LOCKING=POSIX_FCNTL");
276 prstr(" LOCKING=FLOCK");
279 prstr(" LOCKING=LOCKF");
282 prstr(" LOCKING=LNLOCK");
284 #if !defined(USE_POSIX_FCNTL) && !defined(USE_FLOCK) && !defined(USE_LOCK) && !defined(USE_LNLOCK)
285 prstr(" LOCKING=**NONE**");
289 prstr(" STATFS_BSD");
293 prstr(" STATFS_OSF1");
297 prstr(" STATFS_ULTRIX");
301 prstr(" SETPGRP_VOID");
305 prstr(" ASSERTIONS");
309 prstr(" DEBUG_CODE");
312 #ifdef AMANDA_DEBUG_DAYS
313 prnum(" AMANDA_DEBUG_DAYS", AMANDA_DEBUG_DAYS);
317 prstr(" BSD_SECURITY");
320 #ifdef USE_AMANDAHOSTS
321 prstr(" USE_AMANDAHOSTS");
325 prstr(" USE_RUNDUMP");
329 #define HOSTNAME_INSTANCE "<hostname>"
331 char lifetime_str[NUM_STR_SIZE];
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);
345 prvar(" CLIENT_LOGIN", CLIENT_LOGIN);
348 prstr(" FORCE_USERID");
351 #ifdef USE_VERSION_SUFFIXES
352 prstr(" USE_VERSION_SUFFIXES");
359 #ifdef COMPRESS_SUFFIX
360 prvar(" COMPRESS_SUFFIX", COMPRESS_SUFFIX);
363 #ifdef COMPRESS_FAST_OPT
364 prvar(" COMPRESS_FAST_OPT", COMPRESS_FAST_OPT);
367 #ifdef COMPRESS_BEST_OPT
368 prvar(" COMPRESS_BEST_OPT", COMPRESS_BEST_OPT);
371 #ifdef UNCOMPRESS_OPT
372 prvar(" UNCOMPRESS_OPT", UNCOMPRESS_OPT);
382 malloc_size_2 = malloc_inuse(&malloc_hist_2);
384 if(malloc_size_1 != malloc_size_2) {
385 malloc_list(fileno(stderr), malloc_hist_1, malloc_hist_2);