* bucomm.c (xmalloc, xrealloc): Deleted.

* bucomm.h (xmalloc, xrealloc): Prototypes fixed to correspond to libiberty
versions.
This commit is contained in:
Ken Raeburn 1994-01-09 20:37:30 +00:00
parent fb4cf140d6
commit 096aefc040
3 changed files with 113 additions and 89 deletions

View File

@ -1,3 +1,8 @@
* bucomm.c (xmalloc, xrealloc): Deleted.
* bucomm.h (xmalloc, xrealloc): Fix prototypes, to correspond to
libiberty version of functions.
Thu Jan 6 06:18:15 1994 David J. Mackenzie (djm@thepub.cygnus.com) Thu Jan 6 06:18:15 1994 David J. Mackenzie (djm@thepub.cygnus.com)
* binutils.texi: Add a chapter summarizing the ways to select * binutils.texi: Add a chapter summarizing the ways to select

View File

@ -1,24 +1,24 @@
/* bucomm.c -- Bin Utils COMmon code. /* bucomm.c -- Bin Utils COMmon code.
Copyright (C) 1991 Free Software Foundation, Inc. Copyright (C) 1991 Free Software Foundation, Inc.
This file is part of GNU Binutils. This file is part of GNU Binutils.
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or the Free Software Foundation; either version 2 of the License, or
(at your option) any later version. (at your option) any later version.
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
/* We might put this in a library someday so it could be dynamically /* We might put this in a library someday so it could be dynamically
loaded, but for now it's not necessary */ loaded, but for now it's not necessary. */
#include "bfd.h" #include "bfd.h"
#include "sysdep.h" #include "sysdep.h"
@ -27,120 +27,107 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
char *target = NULL; /* default as late as possible */ char *target = NULL; /* default as late as possible */
/* Yes, this is what atexit is for, but that isn't guaranteed yet. /* Yes, this is what atexit is for, but that isn't guaranteed yet.
And yes, I know this isn't as good, but it does what is needed just fine */ And yes, I know this isn't as good, but it does what is needed just fine. */
void (*exit_handler) (); void (*exit_handler) ();
/* Error reporting */ /* Error reporting */
char *program_name; char *program_name;
void void
DEFUN(bfd_fatal,(string), bfd_nonfatal (string)
char *string) char *string;
{ {
const char *errmsg = bfd_errmsg (bfd_error); CONST char *errmsg = bfd_errmsg (bfd_error);
if (string) if (string)
fprintf (stderr, "%s: %s: %s\n", program_name, string, errmsg); fprintf (stderr, "%s: %s: %s\n", program_name, string, errmsg);
else else
fprintf (stderr, "%s: %s\n", program_name, errmsg); fprintf (stderr, "%s: %s\n", program_name, errmsg);
}
if (NULL != exit_handler) (*exit_handler) (); void
bfd_fatal (string)
char *string;
{
bfd_nonfatal (string);
if (NULL != exit_handler)
(*exit_handler) ();
exit (1); exit (1);
} }
#if 0 /* !defined(NO_STDARG) */ #if 0 /* !defined(NO_STDARG) */
void void
fatal (Format) fatal (Format)
const char *Format; const char *Format;
{ {
va_list args; va_list args;
fprintf (stderr, "%s: ", program_name);
va_start (args, Format); va_start (args, Format);
vfprintf (stderr, Format, args); vfprintf (stderr, Format, args);
va_end (args); va_end (args);
(void) putc ('\n', stderr); putc ('\n', stderr);
if (NULL != exit_handler) (*exit_handler) (); if (NULL != exit_handler)
(*exit_handler) ();
exit (1); exit (1);
} }
#else #else
void fatal (va_alist) void
fatal (va_alist)
va_dcl va_dcl
{ {
char *Format; char *Format;
va_list args; va_list args;
va_start (args); fprintf (stderr, "%s: ", program_name);
Format = va_arg(args, char *); va_start (args);
vfprintf (stderr, Format, args); Format = va_arg (args, char *);
va_end (args); vfprintf (stderr, Format, args);
(void) putc ('\n', stderr); va_end (args);
if (NULL != exit_handler) (*exit_handler) (); putc ('\n', stderr);
exit (1); if (NULL != exit_handler)
} /* fatal() */ (*exit_handler) ();
exit (1);
}
#endif #endif
/** Display the archive header for an element as if it were an ls -l listing */
/* Mode User\tGroup\tSize\tDate Name */ void mode_string ();
/* Display the archive header for an element as if it were an ls -l listing:
Mode User\tGroup\tSize\tDate Name */
void void
DEFUN(print_arelt_descr,(file, abfd, verbose), print_arelt_descr (file, abfd, verbose)
FILE *file AND FILE *file;
bfd *abfd AND bfd *abfd;
boolean verbose) boolean verbose;
{ {
void mode_string ();
struct stat buf; struct stat buf;
if (verbose) { if (verbose)
{
if (bfd_stat_arch_elt (abfd, &buf) == 0)
{
char modebuf[11];
char timebuf[40];
long when = buf.st_mtime;
CONST char *ctime_result = (CONST char *) ctime (&when);
if (bfd_stat_arch_elt (abfd, &buf) == 0) { /* if not, huh? */ /* POSIX format: skip weekday and seconds from ctime output. */
char modebuf[11]; sprintf (timebuf, "%.12s %.4s", ctime_result + 4, ctime_result + 20);
char timebuf[40];
long when = buf.st_mtime;
CONST char *ctime_result = (CONST char *)ctime (&when);
/* Posix format: skip weekday and seconds from ctime output. */ mode_string (buf.st_mode, modebuf);
sprintf(timebuf, "%.12s %.4s", ctime_result+4, ctime_result+20); modebuf[10] = '\0';
/* POSIX 1003.2/D11 says to skip first character (entry type). */
mode_string (buf.st_mode, modebuf); fprintf (file, "%s %d/%d %6ld %s ", modebuf + 1,
modebuf[10] = '\0'; buf.st_uid, buf.st_gid, buf.st_size, timebuf);
/* Posix 1003.2/D11 says to skip first character (entry type). */ }
fprintf (file, "%s %d/%d %6ld %s ", modebuf+1, buf.st_uid, buf.st_gid, buf.st_size, timebuf);
} }
}
fprintf (file, "%s\n",abfd->filename); fprintf (file, "%s\n", abfd->filename);
}
/* Like malloc but get fatal error if memory is exhausted. */
char *
xmalloc (size)
unsigned size;
{
register char *result = malloc (size);
if (result == (char *) NULL && size != 0) {
fatal ("virtual memory exhausted");
}
return result;
}
/* Like realloc but get fatal error if memory is exhausted. */
char *
xrealloc (ptr, size)
char *ptr;
unsigned size;
{
register char *result = realloc (ptr, size);
if (result == 0 && size != 0) {
fatal ("virtual memory exhausted");
}
return result;
} }

32
binutils/bucomm.h Normal file
View File

@ -0,0 +1,32 @@
/* bucomm.h -- binutils common include file.
Copyright 1992 Free Software Foundation, Inc.
This file is part of GNU Binutils.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program 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.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
void bfd_nonfatal PARAMS ((CONST char *));
void bfd_fatal PARAMS ((CONST char *));
PTR xmalloc PARAMS ((size_t));
PTR xrealloc PARAMS ((char *, size_t));
void fatal PARAMS ((CONST char *, ...));
void print_arelt_descr PARAMS ((FILE *file, bfd *abfd, boolean verbose));
extern char *program_name;