print_version.c revision 72445
172445Sassar/*
272445Sassar * Copyright (c) 1998 - 2000 Kungliga Tekniska H�gskolan
372445Sassar * (Royal Institute of Technology, Stockholm, Sweden).
472445Sassar * All rights reserved.
572445Sassar *
672445Sassar * Redistribution and use in source and binary forms, with or without
772445Sassar * modification, are permitted provided that the following conditions
872445Sassar * are met:
972445Sassar *
1072445Sassar * 1. Redistributions of source code must retain the above copyright
1172445Sassar *    notice, this list of conditions and the following disclaimer.
1272445Sassar *
1372445Sassar * 2. Redistributions in binary form must reproduce the above copyright
1472445Sassar *    notice, this list of conditions and the following disclaimer in the
1572445Sassar *    documentation and/or other materials provided with the distribution.
1672445Sassar *
1772445Sassar * 3. Neither the name of the Institute nor the names of its contributors
1872445Sassar *    may be used to endorse or promote products derived from this software
1972445Sassar *    without specific prior written permission.
2072445Sassar *
2172445Sassar * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
2272445Sassar * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2372445Sassar * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2472445Sassar * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
2572445Sassar * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2672445Sassar * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2772445Sassar * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2872445Sassar * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2972445Sassar * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
3072445Sassar * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
3172445Sassar * SUCH DAMAGE.
3272445Sassar */
3372445Sassar
3472445Sassar#ifdef HAVE_CONFIG_H
3572445Sassar#include <config.h>
3672445SassarRCSID("$Id: print_version.c,v 1.1 2000/07/01 19:47:35 assar Exp $");
3772445Sassar#endif
3872445Sassar#include "roken.h"
3972445Sassar
4072445Sassar#include "print_version.h"
4172445Sassar
4272445Sassarvoid
4372445Sassarprint_version(const char *progname)
4472445Sassar{
4572445Sassar    const char *arg[] = VERSIONLIST;
4672445Sassar    const int num_args = sizeof(arg) / sizeof(arg[0]);
4772445Sassar    char *msg;
4872445Sassar    size_t len = 0;
4972445Sassar    int i;
5072445Sassar
5172445Sassar    if(progname == NULL)
5272445Sassar	progname = __progname;
5372445Sassar
5472445Sassar    if(num_args == 0)
5572445Sassar	msg = "no version information";
5672445Sassar    else {
5772445Sassar	for(i = 0; i < num_args; i++) {
5872445Sassar	    if(i > 0)
5972445Sassar		len += 2;
6072445Sassar	    len += strlen(arg[i]);
6172445Sassar	}
6272445Sassar	msg = malloc(len + 1);
6372445Sassar	if(msg == NULL) {
6472445Sassar	    fprintf(stderr, "%s: out of memory\n", progname);
6572445Sassar	    return;
6672445Sassar	}
6772445Sassar	msg[0] = '\0';
6872445Sassar	for(i = 0; i < num_args; i++) {
6972445Sassar	    if(i > 0)
7072445Sassar		strcat(msg, ", ");
7172445Sassar	    strcat(msg, arg[i]);
7272445Sassar	}
7372445Sassar    }
7472445Sassar    fprintf(stderr, "%s (%s)\n", progname, msg);
7572445Sassar    fprintf(stderr, "Copyright (c) 1999 - 2000 Kungliga Tekniska H�gskolan\n");
7672445Sassar    if(num_args != 0)
7772445Sassar	free(msg);
7872445Sassar}
79