diff options
author | Tom Tromey <tromey@adacore.com> | 2024-02-15 12:12:25 -0700 |
---|---|---|
committer | Tom Tromey <tromey@adacore.com> | 2024-02-27 09:46:31 -0700 |
commit | 5c92d8456d3120bcfbbd0ad063d423411a8c685d (patch) | |
tree | 5ac3dbb787ab4c1a194627f052518acb0e088f9c /gdbsupport | |
parent | 50c6682d74bb1b46ae3e140e107549733c699a44 (diff) | |
download | fsf-binutils-gdb-5c92d8456d3120bcfbbd0ad063d423411a8c685d.zip fsf-binutils-gdb-5c92d8456d3120bcfbbd0ad063d423411a8c685d.tar.gz fsf-binutils-gdb-5c92d8456d3120bcfbbd0ad063d423411a8c685d.tar.bz2 |
Introduce read_remainder_of_file
This patch adds a new function, read_remainder_of_file. This is like
read_text_file_to_string, but reads from an existing 'FILE *'. This
will be used in a subsequent patch.
Reviewed-By: Tom de Vries <tdevries@suse.de>
Diffstat (limited to 'gdbsupport')
-rw-r--r-- | gdbsupport/filestuff.cc | 24 | ||||
-rw-r--r-- | gdbsupport/filestuff.h | 4 |
2 files changed, 20 insertions, 8 deletions
diff --git a/gdbsupport/filestuff.cc b/gdbsupport/filestuff.cc index c67e650..9d3b417 100644 --- a/gdbsupport/filestuff.cc +++ b/gdbsupport/filestuff.cc @@ -504,13 +504,9 @@ mkdir_recursive (const char *dir) /* See gdbsupport/filestuff.h. */ -std::optional<std::string> -read_text_file_to_string (const char *path) +std::string +read_remainder_of_file (FILE *file) { - gdb_file_up file = gdb_fopen_cloexec (path, "r"); - if (file == nullptr) - return {}; - std::string res; for (;;) { @@ -520,7 +516,7 @@ read_text_file_to_string (const char *path) /* Resize to accommodate CHUNK_SIZE bytes. */ res.resize (start_size + chunk_size); - int n = fread (&res[start_size], 1, chunk_size, file.get ()); + int n = fread (&res[start_size], 1, chunk_size, file); if (n == chunk_size) continue; @@ -528,7 +524,7 @@ read_text_file_to_string (const char *path) /* Less than CHUNK means EOF or error. If it's an error, return no value. */ - if (ferror (file.get ())) + if (ferror (file)) return {}; /* Resize the string according to the data we read. */ @@ -538,3 +534,15 @@ read_text_file_to_string (const char *path) return res; } + +/* See gdbsupport/filestuff.h. */ + +std::optional<std::string> +read_text_file_to_string (const char *path) +{ + gdb_file_up file = gdb_fopen_cloexec (path, "r"); + if (file == nullptr) + return {}; + + return read_remainder_of_file (file.get ()); +} diff --git a/gdbsupport/filestuff.h b/gdbsupport/filestuff.h index 1c43b7d..e2ee141 100644 --- a/gdbsupport/filestuff.h +++ b/gdbsupport/filestuff.h @@ -133,4 +133,8 @@ extern bool mkdir_recursive (const char *dir); extern std::optional<std::string> read_text_file_to_string (const char *path); +/* Read the remaining content from FILE into an std::string. */ + +extern std::string read_remainder_of_file (FILE *file); + #endif /* COMMON_FILESTUFF_H */ |