Imported Upstream version 2.6.1
[debian/amanda] / common-src / genversion.c
index 78becebcb9f9a93e7c3ab2d63a7489a1962b0835..e4ae2369d8513c6a1b1c801f65e18c9047307106 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * 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 1168 2008-07-03 14:15:21Z djmitche $
  *
  * dump the current Amanda version info
  */
 #include "amanda.h"
 #include "version.h"
-#include "genversion.h"
 
-int main P((void));
+/* distribution-time information */
+#include "svn-info.h"
 
-#define MARGIN         70
+/* build-time information */
+#include "genversion.h"
 
-#define newline() do {                                                 \
-    printf("  \"%s\\n\",\n", line);                                    \
-    *line = '\0';                                                      \
-    linelen = 0;                                                       \
-} while (0)
+#define        LMARGIN         6
+#define RMARGIN        70
 
-/* 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 size_t linelen;
 
-    safe_fd(-1, 0);
+#define        startline(title)  g_printf("  \"%-*s", LMARGIN, title); linelen = 0
+#define        endline()         g_printf("\\n\",\n")
 
-    set_pname("genversion");
+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);
 
-    malloc_size_1 = malloc_inuse(&malloc_hist_1);
+int main(int, char **);
 
-    printf("/* version.c - generated by genversion.c - DO NOT EDIT! */\n");
-    printf("char *version_info[] = {\n");
+/* 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("");
+    }
+    g_printf(" %s", string);
+    linelen += len;
+}
 
-    *line = '\0', linelen = 0, indent = 0;
+static char *buf = NULL;
+static size_t buf_len = 0;
 
+/* 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) {
+           g_fprintf(stderr, _("genversion: Not enough memory"));
+           abort();
+           /*NOTREACHED*/
+       }
+    }
+    g_snprintf(buf, buf_len, "%s=\\\"%s\\\"", var, val);       /* safe */
+    prstr(buf);
+}
 
-    prstr("build:"); indent = linelen;
+/* 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) {
+           g_fprintf(stderr, _("genversion: Not enough memory"));
+           abort();
+           /*NOTREACHED*/
+       }
+    }
+    g_snprintf(buf, buf_len, "%s=UNDEF", var); /* safe */
+    prstr(buf);
+}
 
-    {
-       char version_str[STR_SIZE];
+/* Print a numeric variable */
+static void
+prnum(
+    const char *var,
+    long       val)
+{
+    static char number[NUM_STR_SIZE];
+    size_t new_len;
+
+    g_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) {
+           g_fprintf(stderr, _("genversion: Not enough memory"));
+           abort();
+           /*NOTREACHED*/
+       }
+    }
+    g_snprintf(buf, buf_len, "%s=%s", var, number);            /* safe */
+    prstr(buf);
+}
 
-       ap_snprintf(version_str, sizeof(version_str), "Amanda-%s", version());
-       prvar(" VERSION", version_str);
+int
+main(
+    int                argc,
+    char **    argv)
+{
+    const char *v;
+    char *verstr;
+    size_t v_len;
+
+    (void)argc;        /* Quiet unused parameter warning */
+    (void)argv;        /* Quiet unused parameter warning */
+
+    /*
+     * Configure program for internationalization:
+     *   1) Only set the message locale for now.
+     *   2) Set textdomain for all amanda related programs to "amanda"
+     *      We don't want to be forced to support dozens of message catalogs.
+     */  
+    setlocale(LC_MESSAGES, "C");
+    textdomain("amanda"); 
+
+    g_printf(_("/* version.c - generated by genversion.c - DO NOT EDIT! */\n"));
+    g_printf("const char * const version_info[] = {\n");
+
+    startline("build:");
+    v = version();
+    v_len = SIZEOF("Amanda-") + strlen(v) + 1;
+    verstr = malloc(v_len);
+    if (!verstr) {
+       g_fprintf(stderr, _("genversion: Not enough memory"));
+       abort();
+       /*NOTREACHED*/
     }
+    g_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);
+#ifdef BUILT_REV
+    prvar("BUILT_REV", BUILT_REV);
 #else
-    prundefvar(" CC");
+    prundefvar("BUILT_REV");
 #endif
 
-#ifdef CONFIGURE_COMMAND
-    prvar(" CONFIGURE_COMMAND", CONFIGURE_COMMAND);
+#ifdef BUILT_BRANCH
+    prvar("BUILT_BRANCH", BUILT_BRANCH);
 #else
-    prundefvar(" CONFIGURE_COMMAND");
+    prundefvar("BUILT_BRANCH");
 #endif
 
-    newline();
+#ifdef CC
+    prvar("CC", CC);
+#else
+    prundefvar("CC");
+#endif
 
+    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("amlibexecdir", amlibexecdir);
+    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);
+#ifdef MAILER
+    prvar("MAILER", MAILER);
+#else
+    prundefvar(" MAILER");
+#endif
 
 #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();
-
-
-    prstr("defs: "); indent = linelen;
+    startline("defs:");
 
-    prvar(" DEFAULT_SERVER", DEFAULT_SERVER);
-    prvar(" DEFAULT_CONFIG", DEFAULT_CONFIG);
-    prvar(" DEFAULT_TAPE_SERVER", DEFAULT_TAPE_SERVER);
-    prvar(" DEFAULT_TAPE_DEVICE", DEFAULT_TAPE_DEVICE);
+    prvar("DEFAULT_SERVER", DEFAULT_SERVER);
+    prvar("DEFAULT_CONFIG", DEFAULT_CONFIG);
+    prvar("DEFAULT_TAPE_SERVER", DEFAULT_TAPE_SERVER);
 
-#ifdef AIX_BACKUP
-    prstr(" AIX_BACKUP");
+#ifdef DEFAULT_TAPE_DEVICE
+    prvar("DEFAULT_TAPE_DEVICE", DEFAULT_TAPE_DEVICE);
 #endif
 
-#ifdef AIX_TAPEIO
-    prstr(" AIX_TAPEIO");
+#ifdef AIX_BACKUP
+    prstr("AIX_BACKUP");
 #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");
-#endif
-#ifdef USE_FLOCK
-    prstr(" LOCKING=FLOCK");
+#ifdef WANT_AMFLOCK_POSIX
+    prstr("AMFLOCK_POSIX");
 #endif
-#ifdef USE_LOCKF
-    prstr(" LOCKING=LOCKF");
+#ifdef WANT_AMFLOCK_FLOCK
+    prstr("AMFLOCK_FLOCK");
 #endif
-#ifdef USE_LNLOCK
-    prstr(" LOCKING=LNLOCK");
+#ifdef WANT_AMFLOCK_LOCKF
+    prstr("AMFLOCK_LOCKF");
 #endif
-#if !defined(USE_POSIX_FCNTL) && !defined(USE_FLOCK) && !defined(USE_LOCK) && !defined(USE_LNLOCK)
-    prstr(" LOCKING=**NONE**");
+#ifdef WANT_AMFLOCK_LNLOCK
+    prstr("AMFLOCK_LNLOCK");
 #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");
-#endif
-
-#ifdef DEBUG_CODE
-    prstr(" DEBUG_CODE");
+    prstr("ASSERTIONS");
 #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
+
+#ifdef USE_AMANDAHOSTS
+    prstr("USE_AMANDAHOSTS");
+#endif
+
+#ifdef USE_RUNDUMP
+    prstr("USE_RUNDUMP");
 #endif
 
-    prvar(" CLIENT_LOGIN", CLIENT_LOGIN);
+    prvar("CLIENT_LOGIN", CLIENT_LOGIN);
 
-#ifdef FORCE_USERID
-    prstr(" FORCE_USERID");
+#ifdef CHECK_USERID
+    prstr("CHECK_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();
-
-
-    printf("  0\n};\n");
+    endline();
 
-    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);
-    }
+    g_printf("  0\n};\n");
 
-    return 0;
+    return (0); /* exit */
 }