From f4eee291a254099eea4f2a05c95873071584524e Mon Sep 17 00:00:00 2001 From: Johan Danielsson Date: Thu, 30 Apr 1998 22:57:09 +0000 Subject: [PATCH] print_version git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@4826 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/roken/Makefile.am | 1 + lib/roken/Makefile.in | 2 + lib/roken/print_version.c | 97 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 100 insertions(+) create mode 100644 lib/roken/print_version.c diff --git a/lib/roken/Makefile.am b/lib/roken/Makefile.am index 42a681dff..6868c2dd3 100644 --- a/lib/roken/Makefile.am +++ b/lib/roken/Makefile.am @@ -21,6 +21,7 @@ libroken_a_SOURCES = \ mini_inetd.c \ parse_time.c \ parse_units.c \ + print_version.c \ resolve.c \ roken_gethostby.c \ signal.c \ diff --git a/lib/roken/Makefile.in b/lib/roken/Makefile.in index f41abdff7..d1e5bd35a 100644 --- a/lib/roken/Makefile.in +++ b/lib/roken/Makefile.in @@ -62,6 +62,7 @@ SOURCES = \ mkstemp.c \ parse_time.c \ parse_units.c \ + print_version.c \ putenv.c \ rcmd.c \ roken_gethostby.c \ @@ -104,6 +105,7 @@ OBJECTS = \ mini_inetd.o \ parse_time.o \ parse_units.o \ + print_version.o \ roken_gethostby.o \ signal.o \ simple_exec.o \ diff --git a/lib/roken/print_version.c b/lib/roken/print_version.c new file mode 100644 index 000000000..04657b57b --- /dev/null +++ b/lib/roken/print_version.c @@ -0,0 +1,97 @@ +/* + * Copyright (c) 1998 Kungliga Tekniska Högskolan + * (Royal Institute of Technology, Stockholm, Sweden). + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by Kungliga Tekniska + * Högskolan and its contributors. + * + * 4. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifdef HAVE_CONFIG_H +#include +#endif +#include "roken.h" + +/* can't use includes here */ +#ifdef KRB5 +extern const char *heimdal_version; +#endif +#ifdef KRB4 +extern const char *krb4_version; +#endif + +RCSID("$Id$"); + +void +print_version(const char *progname) +{ + const char *arg[] = { +#ifdef KRB5 + heimdal_version, +#endif +#ifdef KRB4 + krb4_version, +#endif + }; + const int num_args = sizeof(arg) / sizeof(arg[0]); + char *msg; + size_t len = 0; + int i; + + if(progname == NULL) + progname = __progname; + + if(num_args == 0) + msg = "no version information"; + else { + for(i = 0; i < num_args; i++) { + if(i > 0) + len += 2; + len += strlen(arg[i]); + } + msg = malloc(len + 1); + if(msg == NULL) { + fprintf(stderr, "%s: out of memory\n", progname); + return; + } + msg[0] = '\0'; + for(i = 0; i < num_args; i++) { + if(i > 0) + strcat(msg, ", "); + strcat(msg, arg[i]); + } + } + fprintf(stderr, "%s (%s)\n", progname, msg); + fprintf(stderr, "Copyright (c) 1998 Kungliga Tekniska Högskolan\n"); + if(num_args != 0) + free(msg); +}