/* Copyright (c) 1993,1994, Joseph Arceneaux. All rights reserved. * * Copyright (C) 1986, 1989, 1992 Free Software Foundation, Inc. All rights * reserved. * * This file is subject to the terms of the GNU General Public License as * published by the Free Software Foundation. A copy of this license is * included with this software distribution in the file COPYING. If you * do not have a copy, you may obtain a copy by writing to the Free * Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ #include "sys.h" #include "indent.h" #include "globs.h" #ifdef HAVE_MALLOC_H #include #endif #include #include RCSTAG_CC ("$Id: globs.c,v 1.13 2002/03/15 07:48:45 david Exp $"); /* Like malloc but get error if no storage available. size really should be * size_t, but not all systems have size_t, so I hope "unsigned" will work. * It works for GNU style machines, where it is 32 bits, and works on * MS-DOS. */ char * xmalloc (unsigned size) { char *val = (char *) calloc (1, size); if (!val) { fprintf (stderr, _("indent: Virtual memory exhausted.\n")); exit (system_error); } #if defined (DEBUG) /* Fill it with garbage to detect code which depends on stuff being zero-filled. */ memset (val, 'x', size); #endif return val; } /* Like realloc but get error if no storage available. */ char *xrealloc ( char *ptr, unsigned size) { char *val = (char *) realloc (ptr, size); if (!val) { fprintf (stderr, _("indent: Virtual memory exhausted.\n")); exit (system_error); } return val; } void message ( char * kind, char * string, unsigned * a0, unsigned * a1) { if (kind) { fprintf (stderr, _("indent: %s:%d: %s:"), in_name, line_no, kind); } fprintf (stderr, string, a0, a1); fprintf (stderr, "\n"); } /* Print a fatal error message and exit, or, if compiled with "DEBUG" defined, abort (). */ void fatal ( const char *string, const char *a0) { fprintf (stderr, _("indent: Fatal Error: ")); fprintf (stderr, string, a0); fprintf (stderr, "\n"); #ifdef DEBUG abort (); #endif /* DEBUG */ if (errno) { fprintf (stderr, _("indent: System Error: ")); perror (0); } exit (indent_fatal); }