Fri Oct 23 13:55:35 1992 Ian Lance Taylor (ian@cygnus.com)

* Check fclose return value for errors.
	libbfd.h: bfd_cache_close now returns a boolean.
	cache.c (bfd_cache_delete): return fclose success value.
	(bfd_cache_close): return bfd_cache_delete return value.
	opncls.c (bfd_close, bfd_close_all_done): return result of
	bfd_cache_close.
This commit is contained in:
Ian Lance Taylor 1992-10-23 21:01:29 +00:00
parent c26d7d179c
commit 700b2ee3ef
3 changed files with 35 additions and 13 deletions

View File

@ -1,3 +1,12 @@
Fri Oct 23 13:55:35 1992 Ian Lance Taylor (ian@cygnus.com)
* Check fclose return value for errors.
libbfd.h: bfd_cache_close now returns a boolean.
cache.c (bfd_cache_delete): return fclose success value.
(bfd_cache_close): return bfd_cache_delete return value.
opncls.c (bfd_close, bfd_close_all_done): return result of
bfd_cache_close.
Fri Oct 23 10:32:36 1992 Steve Chamberlain (sac@thepub.cygnus.com) Fri Oct 23 10:32:36 1992 Steve Chamberlain (sac@thepub.cygnus.com)
* seclet.c (rel): don't load sections without the SEC_LOAD bit. * seclet.c (rel): don't load sections without the SEC_LOAD bit.

View File

@ -1,6 +1,5 @@
/* BFD library -- caching of file descriptors. /* BFD library -- caching of file descriptors.
Copyright (C) 1990-1991 Free Software Foundation, Inc. Copyright 1990, 1991, 1992 Free Software Foundation, Inc.
Hacked by Steve Chamberlain of Cygnus Support (steve@cygnus.com). Hacked by Steve Chamberlain of Cygnus Support (steve@cygnus.com).
This file is part of BFD, the Binary File Descriptor library. This file is part of BFD, the Binary File Descriptor library.
@ -36,8 +35,6 @@ SECTION
*/ */
/* $Id$ */
#include "bfd.h" #include "bfd.h"
#include "sysdep.h" #include "sysdep.h"
#include "libbfd.h" #include "libbfd.h"
@ -47,7 +44,7 @@ INTERNAL_FUNCTION
BFD_CACHE_MAX_OPEN macro BFD_CACHE_MAX_OPEN macro
DESCRIPTION DESCRIPTION
The maxiumum number of files which the cache will keep open at The maximum number of files which the cache will keep open at
one time. one time.
.#define BFD_CACHE_MAX_OPEN 10 .#define BFD_CACHE_MAX_OPEN 10
@ -93,7 +90,7 @@ bfd *bfd_last_cache;
* *
*/ */
static void bfd_cache_delete(); static boolean EXFUN(bfd_cache_delete,(bfd *));
static void static void
@ -111,7 +108,7 @@ DEFUN_VOID(close_one)
} }
kill->where = ftell((FILE *)(kill->iostream)); kill->where = ftell((FILE *)(kill->iostream));
bfd_cache_delete(kill); (void) bfd_cache_delete(kill);
} }
/* Cuts the BFD abfd out of the chain in the cache */ /* Cuts the BFD abfd out of the chain in the cache */
@ -124,15 +121,21 @@ DEFUN(snip,(abfd),
if (cache_sentinel == abfd) cache_sentinel = (bfd *)NULL; if (cache_sentinel == abfd) cache_sentinel = (bfd *)NULL;
} }
static void static boolean
DEFUN(bfd_cache_delete,(abfd), DEFUN(bfd_cache_delete,(abfd),
bfd *abfd) bfd *abfd)
{ {
fclose ((FILE *)(abfd->iostream)); boolean ret;
if (fclose ((FILE *)(abfd->iostream)) == EOF)
ret = false;
else
ret = true;
snip (abfd); snip (abfd);
abfd->iostream = NULL; abfd->iostream = NULL;
open_files--; open_files--;
bfd_last_cache = 0; bfd_last_cache = 0;
return ret;
} }
static bfd * static bfd *
@ -183,16 +186,24 @@ DESCRIPTION
then close it too. then close it too.
SYNOPSIS SYNOPSIS
void bfd_cache_close (bfd *); boolean bfd_cache_close (bfd *);
RETURNS
<<false>> is returned if closing the file fails, <<true>> is
returned if all is well.
*/ */
void boolean
DEFUN(bfd_cache_close,(abfd), DEFUN(bfd_cache_close,(abfd),
bfd *abfd) bfd *abfd)
{ {
/* If this file is open then remove from the chain */ /* If this file is open then remove from the chain */
if (abfd->iostream) if (abfd->iostream)
{ {
bfd_cache_delete(abfd); return bfd_cache_delete(abfd);
}
else
{
return true;
} }
} }

View File

@ -71,6 +71,7 @@ PROTO(PTR, bfd_zalloc,(bfd *abfd, bfd_size_type size));
PROTO(PTR, bfd_realloc,(bfd *abfd, PTR orig, bfd_size_type new)); PROTO(PTR, bfd_realloc,(bfd *abfd, PTR orig, bfd_size_type new));
PROTO(void, bfd_alloc_grow,(bfd *abfd, PTR thing, bfd_size_type size)); PROTO(void, bfd_alloc_grow,(bfd *abfd, PTR thing, bfd_size_type size));
PROTO(PTR, bfd_alloc_finish,(bfd *abfd)); PROTO(PTR, bfd_alloc_finish,(bfd *abfd));
PROTO(PTR, bfd_alloc_by_size_t,(bfd *abfd, size_t wanted));
#define bfd_release(x,y) (void) obstack_free(&(x->memory),y) #define bfd_release(x,y) (void) obstack_free(&(x->memory),y)
@ -204,7 +205,7 @@ extern bfd *bfd_last_cache;
(FILE*)(bfd_last_cache->iostream): \ (FILE*)(bfd_last_cache->iostream): \
bfd_cache_lookup_worker(x)) bfd_cache_lookup_worker(x))
void EXFUN(bfd_cache_init , (bfd *)); void EXFUN(bfd_cache_init , (bfd *));
void EXFUN(bfd_cache_close , (bfd *)); boolean EXFUN(bfd_cache_close , (bfd *));
FILE* EXFUN(bfd_open_file, (bfd *)); FILE* EXFUN(bfd_open_file, (bfd *));
FILE *EXFUN(bfd_cache_lookup_worker, (bfd *)); FILE *EXFUN(bfd_cache_lookup_worker, (bfd *));
void EXFUN(bfd_constructor_entry, (bfd *abfd, void EXFUN(bfd_constructor_entry, (bfd *abfd,
@ -233,3 +234,4 @@ CONST bfd_arch_info_type *EXFUN(bfd_default_compatible
, (CONST bfd_arch_info_type *a, , (CONST bfd_arch_info_type *a,
CONST bfd_arch_info_type *b)); CONST bfd_arch_info_type *b));
boolean EXFUN(bfd_default_scan, (CONST struct bfd_arch_info *, CONST char *)); boolean EXFUN(bfd_default_scan, (CONST struct bfd_arch_info *, CONST char *));
struct elf_internal_shdr *EXFUN(bfd_elf_find_section , (bfd *abfd, char *name));