X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=common-src%2Fgenversion.c;h=e4ae2369d8513c6a1b1c801f65e18c9047307106;hb=2627875b7d18858bc1f9f7652811e4d8c15a23eb;hp=65bc6f9ee115d5499e17d32a00459f0d70752087;hpb=3ab887b9bc819a846c75dd7f2ee5d41fac22b19f;p=debian%2Famanda diff --git a/common-src/genversion.c b/common-src/genversion.c index 65bc6f9..e4ae236 100644 --- a/common-src/genversion.c +++ b/common-src/genversion.c @@ -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 @@ -24,375 +24,438 @@ * file named AUTHORS, in the root directory of this distribution. */ /* - * $Id: genversion.c,v 1.18.4.4.4.1.2.2 2003/10/07 17:10:08 martinea Exp $ + * $Id: genversion.c 1168 2008-07-03 14:15:21Z djmitche $ * * dump the current Amanda version info */ #include "amanda.h" #include "version.h" + +/* distribution-time information */ +#include "svn-info.h" + +/* build-time information */ #include "genversion.h" -int main P((void)); +#define LMARGIN 6 +#define RMARGIN 70 + +static size_t linelen; -#define MARGIN 70 +#define startline(title) g_printf(" \"%-*s", LMARGIN, title); linelen = 0 +#define endline() g_printf("\\n\",\n") -#define newline() do { \ - printf(" \"%s\\n\",\n", line); \ - *line = '\0'; \ - linelen = 0; \ -} while (0) +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); + +int main(int, char **); /* 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() +static void +prstr( + const char *string) { - char line[STR_SIZE], *str = NULL; - int linelen, indent; - int fd; - unsigned long malloc_hist_1, malloc_size_1; - unsigned long malloc_hist_2, malloc_size_2; - - for(fd = 3; fd < FD_SETSIZE; fd++) { - /* - * Make sure nobody spoofs us with a lot of extra open files - * that would cause an open we do to get a very high file - * descriptor, which in turn might be used as an index into - * an array (e.g. an fd_set). - */ - close(fd); + 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; +} - set_pname("genversion"); - - malloc_size_1 = malloc_inuse(&malloc_hist_1); - - printf("/* version.c - generated by genversion.c - DO NOT EDIT! */\n"); - printf("char *version_info[] = {\n"); - - *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 "" - { - 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 */ }