⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 genversion.c

📁 开源备份软件源码 AMANDA, the Advanced Maryland Automatic Network Disk Archiver, is a backup system that a
💻 C
字号:
/* * Amanda, The Advanced Maryland Automatic Network Disk Archiver * 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 * documentation for any purpose is hereby granted without fee, provided that * the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the name of U.M. not be used in advertising or * publicity pertaining to distribution of the software without specific, * written prior permission.  U.M. makes no representations about the * suitability of this software for any purpose.  It is provided "as is" * without express or implied warranty. * * U.M. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL U.M. * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * * Authors: the Amanda Development Team.  Its members are listed in a * file named AUTHORS, in the root directory of this distribution. *//* * $Id: genversion.c 698 2008-01-11 00:42:49Z martinea $ * * 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"#define	LMARGIN		6#define RMARGIN 	70static size_t linelen;#define	startline(title)  g_printf("  \"%-*s", LMARGIN, title); linelen = 0#define	endline()	  g_printf("\\n\",\n")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 */static voidprstr(    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;}static char *buf = NULL;static size_t buf_len = 0;/* Print a text variable */static voidprvar(    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);}/* Print a undef variable */static voidprundefvar(    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);}/* Print a numeric variable */static voidprnum(    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);}intmain(    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);#else    prundefvar("BUILT_DATE");#endif#ifdef BUILT_MACH    prvar("BUILT_MACH", BUILT_MACH);#else    prundefvar("BUILT_MACH");#endif#ifdef BUILT_REV    prvar("BUILT_REV", BUILT_REV);#else    prundefvar("BUILT_REV");#endif#ifdef BUILT_BRANCH    prvar("BUILT_BRANCH", BUILT_BRANCH);#else    prundefvar("BUILT_BRANCH");#endif#ifdef CC    prvar("CC", CC);#else    prundefvar("CC");#endif    endline();    startline("paths:");    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);#else    prundefvar("AMANDA_DBGDIR");#endif    prvar("CONFIG_DIR", CONFIG_DIR);#ifdef DEV_PREFIX    prvar("DEV_PREFIX", DEV_PREFIX);#else    prundefvar("DEV_PREFIX");#endif#ifdef RDEV_PREFIX    prvar("RDEV_PREFIX", RDEV_PREFIX);#else    prundefvar("RDEV_PREFIX");#endif#ifdef DUMP    prvar("DUMP", DUMP);    prvar("RESTORE", RESTORE);#else    prundefvar("DUMP");    prundefvar("RESTORE");#endif#ifdef VDUMP    prvar("VDUMP", VDUMP);    prvar("VRESTORE", VRESTORE);#else    prundefvar("VDUMP");    prundefvar("VRESTORE");#endif#ifdef XFSDUMP    prvar("XFSDUMP", XFSDUMP);    prvar("XFSRESTORE", XFSRESTORE);#else    prundefvar("XFSDUMP");    prundefvar("XFSRESTORE");#endif#ifdef VXDUMP    prvar("VXDUMP", VXDUMP);    prvar("VXRESTORE", VXRESTORE);#else    prundefvar("VXDUMP");    prundefvar("VXRESTORE");#endif#ifdef SAMBA_CLIENT    prvar("SAMBA_CLIENT", SAMBA_CLIENT);#else    prundefvar("SAMBA_CLIENT");#endif#ifdef GNUTAR    prvar("GNUTAR", GNUTAR);#else    prundefvar("GNUTAR");#endif#ifdef COMPRESS_PATH    prvar("COMPRESS_PATH", COMPRESS_PATH);#else    prundefvar("COMPRESS_PATH");#endif#ifdef UNCOMPRESS_PATH    prvar("UNCOMPRESS_PATH", UNCOMPRESS_PATH);#else    prundefvar("UNCOMPRESS_PATH");#endif#ifdef LPRCMD    prvar("LPRCMD", LPRCMD);#else    prundefvar(" LPRCMD");#endif#ifdef MAILER    prvar("MAILER", MAILER);#else    prundefvar(" MAILER");#endif#ifdef GNUTAR_LISTED_INCREMENTAL_DIR    prvar("listed_incr_dir", GNUTAR_LISTED_INCREMENTAL_DIR);#else    prundefvar("GNUTAR_LISTED_INCREMENTAL_DIR");#endif    endline();    startline("defs:");    prvar("DEFAULT_SERVER", DEFAULT_SERVER);    prvar("DEFAULT_CONFIG", DEFAULT_CONFIG);    prvar("DEFAULT_TAPE_SERVER", DEFAULT_TAPE_SERVER);#ifdef DEFAULT_TAPE_DEVICE    prvar("DEFAULT_TAPE_DEVICE", DEFAULT_TAPE_DEVICE);#endif#ifdef AIX_BACKUP    prstr("AIX_BACKUP");#endif#ifdef BROKEN_VOID    prstr("BROKEN_VOID");#endif#ifdef DUMP_RETURNS_1    prstr("DUMP_RETURNS_1");#endif#ifdef HAVE_MMAP    prstr("HAVE_MMAP");#endif#ifndef HAVE_STRERROR    prstr("NEED_STRERROR");#endif#ifndef HAVE_STRSTR    prstr("NEED_STRSTR");#endif#ifdef HAVE_SYSVSHM    prstr("HAVE_SYSVSHM");#endif#ifdef USE_POSIX_FCNTL    prstr("LOCKING=POSIX_FCNTL");#endif#ifdef USE_FLOCK    prstr("LOCKING=FLOCK");#endif#ifdef USE_LOCKF    prstr("LOCKING=LOCKF");#endif#ifdef USE_LNLOCK    prstr("LOCKING=LNLOCK");#endif#if !defined(USE_POSIX_FCNTL) && !defined(USE_FLOCK) && !defined(USE_LOCK) && !defined(USE_LNLOCK)    prstr("LOCKING=**NONE**");#endif#ifdef STATFS_BSD    prstr("STATFS_BSD");#endif#ifdef STATFS_OSF1    prstr("STATFS_OSF1");#endif#ifdef STATFS_ULTRIX    prstr("STATFS_ULTRIX");#endif#ifdef SETPGRP_VOID    prstr("SETPGRP_VOID");#endif#ifdef ASSERTIONS    prstr("ASSERTIONS");#endif#ifdef AMANDA_DEBUG_DAYS    prnum("AMANDA_DEBUG_DAYS", AMANDA_DEBUG_DAYS);#endif#ifdef BSD_SECURITY    prstr("BSD_SECURITY");#endif#ifdef KRB4_SECURITY    prstr("KRB4_SECURITY");#endif#ifdef KRB5_SECURITY    prstr("KRB5_SECURITY");#endif#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);#ifdef CHECK_USERID    prstr("CHECK_USERID");#endif#ifdef USE_VERSION_SUFFIXES    prstr("USE_VERSION_SUFFIXES");#endif#ifdef HAVE_GZIP    prstr("HAVE_GZIP");#endif#ifdef COMPRESS_SUFFIX    prvar("COMPRESS_SUFFIX", COMPRESS_SUFFIX);#endif#ifdef COMPRESS_FAST_OPT    prvar("COMPRESS_FAST_OPT", COMPRESS_FAST_OPT);#endif#ifdef COMPRESS_BEST_OPT    prvar("COMPRESS_BEST_OPT", COMPRESS_BEST_OPT);#endif#ifdef UNCOMPRESS_OPT    prvar("UNCOMPRESS_OPT", UNCOMPRESS_OPT);#endif    endline();    g_printf("  0\n};\n");    return (0); /* exit */}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -