diff options
author | Andrew Cagney <cagney@redhat.com> | 2004-02-11 23:23:20 +0000 |
---|---|---|
committer | Andrew Cagney <cagney@redhat.com> | 2004-02-11 23:23:20 +0000 |
commit | ae077422383094a8a0d99c868add6353fb9cd852 (patch) | |
tree | c7da69c226ac0bf04c5cb62e89db0058746802cf /bfd/bfdio.c | |
parent | 2220ba04ba34042d220dff2680609c7af2e885a9 (diff) | |
download | gdb-ae077422383094a8a0d99c868add6353fb9cd852.tar.gz |
2004-02-11 Andrew Cagney <cagney@redhat.com>
* bfd-in.h: Update copyright.
(bfd_tell): Change return type to file_ptr.
* bfd-in2.h: Re-generate.
* cache.c: Update copyright.
(bfd_cache_lookup_worker): Use real_fseek, do not cast offset
parameter.
(close_one): Use real_ftell.
* bfdio.c: Update copyright.
(real_ftell, real_fseek): New functions.
(bfd_tell): Use real_fseek and real_ftell, change return type to
file_ptr.
(bfd_seek): Use real_ftell and real_fseek, change type of
file_position to a file_ptr.
* libbfd-in.h: Update copyright.
(real_ftell, real_fseek): Declare.
* libbfd.h: Re-generate.
Diffstat (limited to 'bfd/bfdio.c')
-rw-r--r-- | bfd/bfdio.c | 40 |
1 files changed, 33 insertions, 7 deletions
diff --git a/bfd/bfdio.c b/bfd/bfdio.c index b196a52fdf1..a90cb33ea5f 100644 --- a/bfd/bfdio.c +++ b/bfd/bfdio.c @@ -1,6 +1,8 @@ /* Low-level I/O routines for BFDs. - Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + + Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, + 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. + Written by Cygnus Support. This file is part of BFD, the Binary File Descriptor library. @@ -36,6 +38,30 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #define S_IXOTH 0001 /* Execute by others. */ #endif +file_ptr +real_ftell (FILE *file) +{ +#if defined (HAVE_FTELLO64) + return ftello64 (file); +#elif defined (HAVE_FTELLO) + return ftello (file); +#else + return ftell (file); +#endif +} + +int +real_fseek (FILE *file, file_ptr offset, int whence) +{ +#if defined (HAVE_FSEEKO64) + return fseeko64 (file, offset, whence); +#elif defined (HAVE_FSEEKO) + return fseeko (file, offset, whence); +#else + return fseek (file, offset, whence); +#endif +} + /* Note that archive entries don't have streams; they share their parent's. This allows someone to play with the iostream behind BFD's back. @@ -162,7 +188,7 @@ bfd_bwrite (const void *ptr, bfd_size_type size, bfd *abfd) return nwrote; } -bfd_vma +file_ptr bfd_tell (bfd *abfd) { file_ptr ptr; @@ -170,7 +196,7 @@ bfd_tell (bfd *abfd) if ((abfd->flags & BFD_IN_MEMORY) != 0) return abfd->where; - ptr = ftell (bfd_cache_lookup (abfd)); + ptr = real_ftell (bfd_cache_lookup (abfd)); if (abfd->my_archive) ptr -= abfd->origin; @@ -217,7 +243,7 @@ bfd_seek (bfd *abfd, file_ptr position, int direction) { int result; FILE *f; - long file_position; + file_ptr file_position; /* For the time being, a BFD may not seek to it's end. The problem is that we don't easily have a way to recognize the end of an element in an archive. */ @@ -278,7 +304,7 @@ bfd_seek (bfd *abfd, file_ptr position, int direction) tripping the abort, we can probably safely disable this code, so that the real optimizations happen. */ file_ptr where_am_i_now; - where_am_i_now = ftell (bfd_cache_lookup (abfd)); + where_am_i_now = real_ftell (bfd_cache_lookup (abfd)); if (abfd->my_archive) where_am_i_now -= abfd->origin; if (where_am_i_now != abfd->where) @@ -307,7 +333,7 @@ bfd_seek (bfd *abfd, file_ptr position, int direction) if (direction == SEEK_SET && abfd->my_archive != NULL) file_position += abfd->origin; - result = fseek (f, file_position, direction); + result = real_fseek (f, file_position, direction); if (result != 0) { int hold_errno = errno; |