[v3,1/5] Introduce read_remainder_of_file
Checks
Context |
Check |
Description |
linaro-tcwg-bot/tcwg_gdb_build--master-aarch64 |
success
|
Testing passed
|
linaro-tcwg-bot/tcwg_gdb_build--master-arm |
success
|
Testing passed
|
linaro-tcwg-bot/tcwg_gdb_check--master-arm |
success
|
Testing passed
|
linaro-tcwg-bot/tcwg_gdb_check--master-aarch64 |
success
|
Testing passed
|
Commit Message
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.
---
gdbsupport/filestuff.cc | 24 ++++++++++++++++--------
gdbsupport/filestuff.h | 4 ++++
2 files changed, 20 insertions(+), 8 deletions(-)
Comments
On 2/20/24 20:46, Tom Tromey wrote:
> 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.
LGTM.
Reviewed-By: Tom de Vries <tdevries@suse.de>
Thanks,
- Tom
> ---
> gdbsupport/filestuff.cc | 24 ++++++++++++++++--------
> gdbsupport/filestuff.h | 4 ++++
> 2 files changed, 20 insertions(+), 8 deletions(-)
>
> diff --git a/gdbsupport/filestuff.cc b/gdbsupport/filestuff.cc
> index c67e650c1a6..9d3b417359b 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 1c43b7de0ca..e2ee141d46f 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 */
>
@@ -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 ());
+}
@@ -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 */