print_version.c revision 78527
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> 3678527SassarRCSID("$Id: print_version.c,v 1.3 2001/04/21 16:05:48 joda 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) 5278527Sassar progname = getprogname(); 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); 7578527Sassar fprintf(stderr, "Copyright (c) 1999-2001 Kungliga Tekniska H�gskolan\n"); 7672445Sassar if(num_args != 0) 7772445Sassar free(msg); 7872445Sassar} 79