1/* $NetBSD: util.c,v 1.3 2003/07/17 08:33:44 lukem Exp $ */ 2 3/* 4 * Copyright 1997 Piermont Information Systems Inc. 5 * All rights reserved. 6 * 7 * Written by Philip A. Nelson for Piermont Information Systems Inc. 8 * 9 * Redistribution and use in source and binary forms, with or without 10 * modification, are permitted provided that the following conditions 11 * are met: 12 * 1. Redistributions of source code must retain the above copyright 13 * notice, this list of conditions and the following disclaimer. 14 * 2. Redistributions in binary form must reproduce the above copyright 15 * notice, this list of conditions and the following disclaimer in the 16 * documentation and/or other materials provided with the distribution. 17 * 3. All advertising materials mentioning features or use of this software 18 * must display the following acknowledgement: 19 * This product includes software develooped for the NetBSD Project by 20 * Piermont Information Systems Inc. 21 * 4. The name of Piermont Information Systems Inc. may not be used to endorse 22 * or promote products derived from this software without specific prior 23 * written permission. 24 * 25 * THIS SOFTWARE IS PROVIDED BY PIERMONT INFORMATION SYSTEMS INC. ``AS IS'' 26 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 27 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 28 * ARE DISCLAIMED. IN NO EVENT SHALL PIERMONT INFORMATION SYSTEMS INC. BE 29 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 30 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 31 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 32 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 33 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 34 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 35 * THE POSSIBILITY OF SUCH DAMAGE. 36 * 37 */ 38 39/* util.c - utility routines. */ 40 41#if HAVE_NBTOOL_CONFIG_H 42#include "nbtool_config.h" 43#endif 44 45#include <sys/cdefs.h> 46 47#if defined(__RCSID) && !defined(lint) 48__RCSID("$NetBSD: util.c,v 1.3 2003/07/17 08:33:44 lukem Exp $"); 49#endif 50 51 52#include <stdio.h> 53#include <stdlib.h> 54#include <string.h> 55#include <stdarg.h> 56#include "defs.h" 57 58/* Error routine */ 59void 60yyerror(const char *fmt, ...) 61{ 62 va_list args; 63 64 va_start (args, fmt); 65 printf ("%s:%d: ", src_name, line_no); 66 vfprintf (stdout, fmt, args); 67 printf ("\n"); 68 va_end (args); 69 had_errors = TRUE; 70} 71 72 73/* Buffer routines */ 74static char *mc_buff = NULL; 75static int mc_size = 0; 76static int mc_loc = 0; 77 78void buff_add_ch (char ch) 79{ 80 char *t; 81 82 if (mc_loc >= mc_size-1) { 83 if (mc_size == 0) 84 mc_size = 80; 85 else 86 mc_size *= 2; 87 t = (char *) malloc (mc_size); 88 if (t == NULL) { 89 (void) fprintf (stderr, "%s:%d: Malloc error\n", 90 src_name, line_no); 91 exit (1); 92 } 93 if (mc_buff != NULL) { 94 strcpy (t, mc_buff); 95 free (mc_buff); 96 } 97 mc_buff = t; 98 } 99 mc_buff[mc_loc++] = ch; 100 mc_buff[mc_loc] = '\0'; 101} 102 103/* get a copy of the string ! */ 104 105char * 106buff_copy (void) 107{ 108 char *res = strdup (mc_buff); 109 mc_loc = 0; 110 mc_buff[0] = '\0'; 111 return res; 112} 113