/*
* Amanda, The Advanced Maryland Automatic Network Disk Archiver
- * Copyright (c) 1991-1998 University of Maryland at College Park
+ * Copyright (c) 1991-1999 University of Maryland at College Park
* All Rights Reserved.
*
* Permission to use, copy, modify, distribute, and sell this software and its
* file named AUTHORS, in the root directory of this distribution.
*/
/*
- * $Id: genversion.c,v 1.18.4.4.4.1.2.2.2.1 2005/09/20 21:31:52 jrjackson Exp $
+ * $Id: genversion.c,v 1.36 2006/07/13 03:22:20 paddy_s Exp $
*
* dump the current Amanda version info
*/
#include "version.h"
#include "genversion.h"
-int main P((void));
+#define LMARGIN 6
+#define RMARGIN 70
-#define MARGIN 70
+static size_t linelen;
-#define newline() do { \
- printf(" \"%s\\n\",\n", line); \
- *line = '\0'; \
- linelen = 0; \
-} while (0)
+#define startline(title) printf(" \"%-*s", LMARGIN, title); linelen = 0
+#define endline() printf("\\n\",\n")
-/* Print a string */
-#define prstr(string) do { \
- int len = strlen(string); \
- if(linelen+len >= MARGIN) { \
- newline(); \
- ap_snprintf(line, sizeof(line), "%*s", indent, ""); \
- linelen = indent; \
- } \
- line[sizeof(line)-1] = '\0'; \
- strncat(line, (string), sizeof(line)-strlen(line)); \
- linelen += len; \
-} while (0)
-
-/* Print a text "variable" */
-#define prvar(var, val) do { \
- str = newvstralloc(str, (var), "=\\\"", (val), "\\\"", NULL); \
- prstr(str); \
-} while(0)
-
-/* Print a undef "variable" */
-#define prundefvar(var) do { \
- str = newvstralloc(str, (var), "=UNDEF", NULL); \
- prstr(str); \
-} while(0)
-
-/* Print a numeric "variable" */
-#define prnum(var, val) do { \
- char number[NUM_STR_SIZE]; \
- ap_snprintf(number, sizeof(number), "%ld", (long)(val)); \
- str = newvstralloc(str, (var), "=", number, NULL); \
- prstr(str); \
-} while(0)
-
-int main()
-{
- char line[STR_SIZE], *str = NULL;
- int linelen, indent;
- unsigned long malloc_hist_1, malloc_size_1;
- unsigned long malloc_hist_2, malloc_size_2;
+static void prstr(const char *);
+static void prvar(const char *, const char *);
+static void prundefvar(const char *var);
+static void prnum(const char *var, long val);
- safe_fd(-1, 0);
+int main(int, char **);
- set_pname("genversion");
+/* Print a string */
+static void
+prstr(
+ const char *string)
+{
+ size_t len = strlen(string) + 1;
+
+ /*
+ * If this string overflows this line, and there's other stuff
+ * on the line, create a new one.
+ */
+ if (linelen > 0 && linelen + len >= RMARGIN - LMARGIN) {
+ endline();
+ startline("");
+ }
+ printf(" %s", string);
+ linelen += len;
+}
- malloc_size_1 = malloc_inuse(&malloc_hist_1);
+static char *buf = NULL;
+static size_t buf_len = 0;
- printf("/* version.c - generated by genversion.c - DO NOT EDIT! */\n");
- printf("char *version_info[] = {\n");
+/* Print a text variable */
+static void
+prvar(
+ const char *var,
+ const char *val)
+{
+ size_t new_len;
+
+ new_len = strlen(var)
+ + SIZEOF("=\\\"")
+ + strlen(val)
+ + SIZEOF("\\\"")
+ + 1;
+ if(new_len > buf_len) {
+ free(buf);
+ buf_len = new_len;
+ buf = malloc(new_len);
+ if (!buf) {
+ fprintf(stderr, "genversion: Not enough memory");
+ abort();
+ /*NOTREACHED*/
+ }
+ }
+ snprintf(buf, buf_len, "%s=\\\"%s\\\"", var, val); /* safe */
+ prstr(buf);
+}
- *line = '\0', linelen = 0, indent = 0;
+/* Print a undef variable */
+static void
+prundefvar(
+ const char *var)
+{
+ size_t new_len;
+
+ new_len = strlen(var)
+ + SIZEOF("=UNDEF")
+ + 1;
+ if(new_len > buf_len) {
+ free(buf);
+ buf_len = new_len;
+ buf = malloc(new_len); /* let it die if malloc() fails */
+ if (!buf) {
+ fprintf(stderr, "genversion: Not enough memory");
+ abort();
+ /*NOTREACHED*/
+ }
+ }
+ snprintf(buf, buf_len, "%s=UNDEF", var); /* safe */
+ prstr(buf);
+}
+/* Print a numeric variable */
+static void
+prnum(
+ const char *var,
+ long val)
+{
+ static char number[NUM_STR_SIZE];
+ size_t new_len;
+
+ snprintf(number, SIZEOF(number), "%ld", val);
+ new_len = strlen(var)
+ + SIZEOF("=")
+ + strlen(number)
+ + 1;
+ if(new_len > buf_len) {
+ free(buf);
+ buf_len = new_len;
+ buf = malloc(new_len); /* let it die if malloc() fails */
+ if (!buf) {
+ fprintf(stderr, "genversion: Not enough memory");
+ abort();
+ /*NOTREACHED*/
+ }
+ }
+ snprintf(buf, buf_len, "%s=%s", var, number); /* safe */
+ prstr(buf);
+}
- prstr("build:"); indent = linelen;
+int
+main(
+ int argc,
+ char ** argv)
+{
+ const char *v;
+ char *verstr;
+ size_t v_len;
- {
- char version_str[STR_SIZE];
+ (void)argc; /* Quiet unused parameter warning */
+ (void)argv; /* Quiet unused parameter warning */
- ap_snprintf(version_str, sizeof(version_str), "Amanda-%s", version());
- prvar(" VERSION", version_str);
+ printf("/* version.c - generated by genversion.c - DO NOT EDIT! */\n");
+ printf("const char * const version_info[] = {\n");
+
+ startline("build:");
+ v = version();
+ v_len = SIZEOF("Amanda-") + strlen(v) + 1;
+ verstr = malloc(v_len);
+ if (!verstr) {
+ fprintf(stderr, "genversion: Not enough memory");
+ abort();
+ /*NOTREACHED*/
}
+ snprintf(verstr, v_len, "Amanda-%s", v); /* safe */
+ prvar("VERSION", verstr);
+ free(verstr);
#ifdef BUILT_DATE
- prvar(" BUILT_DATE", BUILT_DATE);
+ prvar("BUILT_DATE", BUILT_DATE);
#else
- prundefvar(" BUILT_DATE");
+ prundefvar("BUILT_DATE");
#endif
#ifdef BUILT_MACH
- prvar(" BUILT_MACH", BUILT_MACH);
+ prvar("BUILT_MACH", BUILT_MACH);
#else
- prundefvar(" BUILT_MACH");
+ prundefvar("BUILT_MACH");
#endif
#ifdef CC
- prvar(" CC", CC);
+ prvar("CC", CC);
#else
- prundefvar(" CC");
+ prundefvar("CC");
#endif
-#ifdef CONFIGURE_COMMAND
- prvar(" CONFIGURE_COMMAND", CONFIGURE_COMMAND);
+#ifdef CC
+ prvar("CONFIGURE_COMMAND", CONFIGURE_COMMAND);
#else
- prundefvar(" CONFIGURE_COMMAND");
+ prundefvar("CONFIGURE_COMMAND");
#endif
- newline();
-
+ endline();
- prstr("paths:"); indent = linelen;
+ startline("paths:");
- prvar(" bindir", bindir);
- prvar(" sbindir", sbindir);
- prvar(" libexecdir", libexecdir);
- prvar(" mandir", mandir);
- prvar(" AMANDA_TMPDIR", AMANDA_TMPDIR);
+ prvar("bindir", bindir);
+ prvar("sbindir", sbindir);
+ prvar("libexecdir", libexecdir);
+ prvar("mandir", mandir);
+ prvar("AMANDA_TMPDIR", AMANDA_TMPDIR);
#ifdef AMANDA_DBGDIR
- prvar(" AMANDA_DBGDIR", AMANDA_DBGDIR);
+ prvar("AMANDA_DBGDIR", AMANDA_DBGDIR);
#else
- prundefvar(" AMANDA_DBGDIR");
+ prundefvar("AMANDA_DBGDIR");
#endif
-
- prvar(" CONFIG_DIR", CONFIG_DIR);
+ prvar("CONFIG_DIR", CONFIG_DIR);
#ifdef DEV_PREFIX
- prvar(" DEV_PREFIX", DEV_PREFIX);
+ prvar("DEV_PREFIX", DEV_PREFIX);
#else
- prundefvar(" DEV_PREFIX");
+ prundefvar("DEV_PREFIX");
#endif
#ifdef RDEV_PREFIX
- prvar(" RDEV_PREFIX", RDEV_PREFIX);
+ prvar("RDEV_PREFIX", RDEV_PREFIX);
#else
- prundefvar(" RDEV_PREFIX");
+ prundefvar("RDEV_PREFIX");
#endif
#ifdef DUMP
- prvar(" DUMP", DUMP);
- prvar(" RESTORE", RESTORE);
+ prvar("DUMP", DUMP);
+ prvar("RESTORE", RESTORE);
#else
- prundefvar(" DUMP");
- prundefvar(" RESTORE");
+ prundefvar("DUMP");
+ prundefvar("RESTORE");
#endif
#ifdef VDUMP
- prvar(" VDUMP", VDUMP);
- prvar(" VRESTORE", VRESTORE);
+ prvar("VDUMP", VDUMP);
+ prvar("VRESTORE", VRESTORE);
#else
- prundefvar(" VDUMP");
- prundefvar(" VRESTORE");
+ prundefvar("VDUMP");
+ prundefvar("VRESTORE");
#endif
#ifdef XFSDUMP
- prvar(" XFSDUMP", XFSDUMP);
- prvar(" XFSRESTORE", XFSRESTORE);
+ prvar("XFSDUMP", XFSDUMP);
+ prvar("XFSRESTORE", XFSRESTORE);
#else
- prundefvar(" XFSDUMP");
- prundefvar(" XFSRESTORE");
+ prundefvar("XFSDUMP");
+ prundefvar("XFSRESTORE");
#endif
#ifdef VXDUMP
- prvar(" VXDUMP", VXDUMP);
- prvar(" VXRESTORE", VXRESTORE);
+ prvar("VXDUMP", VXDUMP);
+ prvar("VXRESTORE", VXRESTORE);
#else
- prundefvar(" VXDUMP");
- prundefvar(" VXRESTORE");
+ prundefvar("VXDUMP");
+ prundefvar("VXRESTORE");
#endif
#ifdef SAMBA_CLIENT
- prvar(" SAMBA_CLIENT", SAMBA_CLIENT);
+ prvar("SAMBA_CLIENT", SAMBA_CLIENT);
#else
- prundefvar(" SAMBA_CLIENT");
+ prundefvar("SAMBA_CLIENT");
#endif
#ifdef GNUTAR
- prvar(" GNUTAR", GNUTAR);
+ prvar("GNUTAR", GNUTAR);
#else
- prundefvar(" GNUTAR");
+ prundefvar("GNUTAR");
#endif
#ifdef COMPRESS_PATH
- prvar(" COMPRESS_PATH", COMPRESS_PATH);
+ prvar("COMPRESS_PATH", COMPRESS_PATH);
#else
- prundefvar(" COMPRESS_PATH");
+ prundefvar("COMPRESS_PATH");
#endif
#ifdef UNCOMPRESS_PATH
- prvar(" UNCOMPRESS_PATH", UNCOMPRESS_PATH);
+ prvar("UNCOMPRESS_PATH", UNCOMPRESS_PATH);
#else
- prundefvar(" UNCOMPRESS_PATH");
+ prundefvar("UNCOMPRESS_PATH");
#endif
#ifdef LPRCMD
- prvar(" LPRCMD", LPRCMD);
+ prvar("LPRCMD", LPRCMD);
#else
prundefvar(" LPRCMD");
#endif
- prvar(" MAILER", MAILER);
+ prvar("MAILER", MAILER);
#ifdef GNUTAR_LISTED_INCREMENTAL_DIR
- prvar(" listed_incr_dir", GNUTAR_LISTED_INCREMENTAL_DIR);
+ prvar("listed_incr_dir", GNUTAR_LISTED_INCREMENTAL_DIR);
#else
- prundefvar(" listed_incr_dir");
+ prundefvar("GNUTAR_LISTED_INCREMENTAL_DIR");
#endif
+ endline();
- newline();
-
+ startline("defs:");
- prstr("defs: "); indent = linelen;
+ prvar("DEFAULT_SERVER", DEFAULT_SERVER);
+ prvar("DEFAULT_CONFIG", DEFAULT_CONFIG);
+ prvar("DEFAULT_TAPE_SERVER", DEFAULT_TAPE_SERVER);
- prvar(" DEFAULT_SERVER", DEFAULT_SERVER);
- prvar(" DEFAULT_CONFIG", DEFAULT_CONFIG);
- prvar(" DEFAULT_TAPE_SERVER", DEFAULT_TAPE_SERVER);
- prvar(" DEFAULT_TAPE_DEVICE", DEFAULT_TAPE_DEVICE);
+#ifdef DEFAULT_TAPE_DEVICE
+ prvar("DEFAULT_TAPE_DEVICE", DEFAULT_TAPE_DEVICE);
+#endif
#ifdef AIX_BACKUP
- prstr(" AIX_BACKUP");
+ prstr("AIX_BACKUP");
#endif
#ifdef AIX_TAPEIO
- prstr(" AIX_TAPEIO");
+ prstr("AIX_TAPEIO");
#endif
#ifdef BROKEN_VOID
- prstr(" BROKEN_VOID");
+ prstr("BROKEN_VOID");
#endif
#ifdef DUMP_RETURNS_1
- prstr(" DUMP_RETURNS_1");
+ prstr("DUMP_RETURNS_1");
#endif
#ifdef HAVE_MMAP
- prstr(" HAVE_MMAP");
+ prstr("HAVE_MMAP");
#endif
#ifndef HAVE_STRERROR
- prstr(" NEED_STRERROR");
+ prstr("NEED_STRERROR");
#endif
#ifndef HAVE_STRSTR
- prstr(" NEED_STRSTR");
+ prstr("NEED_STRSTR");
#endif
#ifdef HAVE_SYSVSHM
- prstr(" HAVE_SYSVSHM");
+ prstr("HAVE_SYSVSHM");
#endif
#ifdef USE_POSIX_FCNTL
- prstr(" LOCKING=POSIX_FCNTL");
+ prstr("LOCKING=POSIX_FCNTL");
#endif
#ifdef USE_FLOCK
- prstr(" LOCKING=FLOCK");
+ prstr("LOCKING=FLOCK");
#endif
#ifdef USE_LOCKF
- prstr(" LOCKING=LOCKF");
+ prstr("LOCKING=LOCKF");
#endif
#ifdef USE_LNLOCK
- prstr(" LOCKING=LNLOCK");
+ prstr("LOCKING=LNLOCK");
#endif
#if !defined(USE_POSIX_FCNTL) && !defined(USE_FLOCK) && !defined(USE_LOCK) && !defined(USE_LNLOCK)
- prstr(" LOCKING=**NONE**");
+ prstr("LOCKING=**NONE**");
#endif
#ifdef STATFS_BSD
- prstr(" STATFS_BSD");
+ prstr("STATFS_BSD");
#endif
#ifdef STATFS_OSF1
- prstr(" STATFS_OSF1");
+ prstr("STATFS_OSF1");
#endif
#ifdef STATFS_ULTRIX
- prstr(" STATFS_ULTRIX");
+ prstr("STATFS_ULTRIX");
#endif
#ifdef SETPGRP_VOID
- prstr(" SETPGRP_VOID");
+ prstr("SETPGRP_VOID");
#endif
#ifdef ASSERTIONS
- prstr(" ASSERTIONS");
+ prstr("ASSERTIONS");
#endif
#ifdef DEBUG_CODE
- prstr(" DEBUG_CODE");
+ prstr("DEBUG_CODE");
#endif
#ifdef AMANDA_DEBUG_DAYS
- prnum(" AMANDA_DEBUG_DAYS", AMANDA_DEBUG_DAYS);
+ prnum("AMANDA_DEBUG_DAYS", AMANDA_DEBUG_DAYS);
#endif
#ifdef BSD_SECURITY
- prstr(" BSD_SECURITY");
+ prstr("BSD_SECURITY");
#endif
-#ifdef USE_AMANDAHOSTS
- prstr(" USE_AMANDAHOSTS");
+#ifdef KRB4_SECURITY
+ prstr("KRB4_SECURITY");
#endif
-#ifdef USE_RUNDUMP
- prstr(" USE_RUNDUMP");
+#ifdef KRB5_SECURITY
+ prstr("KRB5_SECURITY");
#endif
-#ifdef KRB4_SECURITY
-#define HOSTNAME_INSTANCE "<hostname>"
- {
- char lifetime_str[NUM_STR_SIZE];
-
- prstr(" KRB4_SECURITY");
- prvar(" SERVER_HOST_PRINCIPLE", SERVER_HOST_PRINCIPLE);
- prvar(" SERVER_HOST_INSTANCE", SERVER_HOST_INSTANCE);
- prvar(" SERVER_HOST_KEY_FILE", SERVER_HOST_KEY_FILE);
- prvar(" CLIENT_HOST_PRINCIPLE", CLIENT_HOST_PRINCIPLE);
- prvar(" CLIENT_HOST_INSTANCE", CLIENT_HOST_INSTANCE);
- prvar(" CLIENT_HOST_KEY_FILE", CLIENT_HOST_KEY_FILE);
- ap_snprintf(lifetime_str, sizeof(lifetime_str), "%d", TICKET_LIFETIME);
- prvar(" TICKET_LIFETIME", lifetime_str);
- }
+#ifdef RSH_SECURITY
+ prstr("RSH_SECURITY");
#endif
- prvar(" CLIENT_LOGIN", CLIENT_LOGIN);
+#ifdef USE_AMANDAHOSTS
+ prstr("USE_AMANDAHOSTS");
+#endif
+
+#ifdef USE_RUNDUMP
+ prstr("USE_RUNDUMP");
+#endif
+
+ prvar("CLIENT_LOGIN", CLIENT_LOGIN);
#ifdef FORCE_USERID
- prstr(" FORCE_USERID");
+ prstr("FORCE_USERID");
#endif
#ifdef USE_VERSION_SUFFIXES
- prstr(" USE_VERSION_SUFFIXES");
+ prstr("USE_VERSION_SUFFIXES");
#endif
#ifdef HAVE_GZIP
- prstr(" HAVE_GZIP");
+ prstr("HAVE_GZIP");
#endif
#ifdef COMPRESS_SUFFIX
- prvar(" COMPRESS_SUFFIX", COMPRESS_SUFFIX);
+ prvar("COMPRESS_SUFFIX", COMPRESS_SUFFIX);
#endif
#ifdef COMPRESS_FAST_OPT
- prvar(" COMPRESS_FAST_OPT", COMPRESS_FAST_OPT);
+ prvar("COMPRESS_FAST_OPT", COMPRESS_FAST_OPT);
#endif
#ifdef COMPRESS_BEST_OPT
- prvar(" COMPRESS_BEST_OPT", COMPRESS_BEST_OPT);
+ prvar("COMPRESS_BEST_OPT", COMPRESS_BEST_OPT);
#endif
#ifdef UNCOMPRESS_OPT
- prvar(" UNCOMPRESS_OPT", UNCOMPRESS_OPT);
+ prvar("UNCOMPRESS_OPT", UNCOMPRESS_OPT);
#endif
- newline();
-
+ endline();
printf(" 0\n};\n");
- amfree(str);
-
- malloc_size_2 = malloc_inuse(&malloc_hist_2);
-
- if(malloc_size_1 != malloc_size_2) {
- malloc_list(fileno(stderr), malloc_hist_1, malloc_hist_2);
- }
-
- return 0;
+ return (0); /* exit */
}