summaryrefslogtreecommitdiff
path: root/binutils/strings.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2004-10-13 14:33:51 +0000
committerJakub Jelinek <jakub@redhat.com>2004-10-13 14:33:51 +0000
commitee0ac24f01dd3bf3cc2aa2a91a9ae8c7f876fca1 (patch)
treec0f974c89f9a6adcd86ef354858807d812820d74 /binutils/strings.c
parenta3a2613e871fa064f5d7bb9f7ac1f54b669a71de (diff)
downloadbinutils-redhat-ee0ac24f01dd3bf3cc2aa2a91a9ae8c7f876fca1.tar.gz
* strings.c (statbuf): New typedef.
(file_stat): Define. (strings_object_file): Avoid using get_file_size, instead do the checks here, using file_stat. * configure.in (HAVE_STAT64): New test. * configure: Rebuilt. * config.in: Rebuilt.
Diffstat (limited to 'binutils/strings.c')
-rw-r--r--binutils/strings.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/binutils/strings.c b/binutils/strings.c
index 8a27fa800e..17dbc7c2a8 100644
--- a/binutils/strings.c
+++ b/binutils/strings.c
@@ -104,6 +104,13 @@ typedef off64_t file_off;
typedef off_t file_off;
#define file_open(s,m) fopen(s, m)
#endif
+#ifdef HAVE_STAT64
+typedef struct stat64 statbuf;
+#define file_stat(f,s) stat64(f, s)
+#else
+typedef struct stat statbuf;
+#define file_stat(f,s) stat(f, s)
+#endif
/* Radix for printing addresses (must be 8, 10 or 16). */
static int address_radix;
@@ -370,8 +377,17 @@ strings_object_file (const char *file)
static bfd_boolean
strings_file (char *file)
{
- if (get_file_size (file) < 1)
- return FALSE;
+ statbuf st;
+
+ if (file_stat (file, &st) < 0)
+ {
+ if (errno == ENOENT)
+ non_fatal (_("'%s': No such file"), file);
+ else
+ non_fatal (_("Warning: could not locate '%s'. reason: %s"),
+ file, strerror (errno));
+ return FALSE;
+ }
/* If we weren't told to scan the whole file,
try to open it as an object file and only look at