Make ui_out::do_progress_end 'private'

I noticed that ui_out::do_progress_end is public, just to support one
use in debuginfod-support.c.  This patch makes it private, updates
progress_info to call it from its destructor, and finally changes
debuginfod-support.c to follow.
This commit is contained in:
Tom Tromey
2023-03-16 10:12:17 -06:00
parent 442716d400
commit 0fea10f327
2 changed files with 61 additions and 48 deletions

View File

@@ -261,16 +261,13 @@ debuginfod_is_enabled ()
/* Print the result of the most recent attempted download. */ /* Print the result of the most recent attempted download. */
static void static void
print_outcome (user_data &data, int fd) print_outcome (int fd, const char *desc, const char *fname)
{ {
/* Clears the current line of progress output. */
current_uiout->do_progress_end ();
if (fd < 0 && fd != -ENOENT) if (fd < 0 && fd != -ENOENT)
gdb_printf (_("Download failed: %s. Continuing without %s %ps.\n"), gdb_printf (_("Download failed: %s. Continuing without %s %ps.\n"),
safe_strerror (-fd), safe_strerror (-fd),
data.desc, desc,
styled_string (file_name_style.style (), data.fname)); styled_string (file_name_style.style (), fname));
} }
/* See debuginfod-support.h */ /* See debuginfod-support.h */
@@ -290,23 +287,28 @@ debuginfod_source_query (const unsigned char *build_id,
return scoped_fd (-ENOMEM); return scoped_fd (-ENOMEM);
char *dname = nullptr; char *dname = nullptr;
scoped_fd fd;
gdb::optional<target_terminal::scoped_restore_terminal_state> term_state;
{
user_data data ("source file", srcpath); user_data data ("source file", srcpath);
debuginfod_set_user_data (c, &data); debuginfod_set_user_data (c, &data);
gdb::optional<target_terminal::scoped_restore_terminal_state> term_state;
if (target_supports_terminal_ours ()) if (target_supports_terminal_ours ())
{ {
term_state.emplace (); term_state.emplace ();
target_terminal::ours (); target_terminal::ours ();
} }
scoped_fd fd (debuginfod_find_source (c, fd = scoped_fd (debuginfod_find_source (c,
build_id, build_id,
build_id_len, build_id_len,
srcpath, srcpath,
&dname)); &dname));
debuginfod_set_user_data (c, nullptr); debuginfod_set_user_data (c, nullptr);
print_outcome (data, fd.get ()); }
print_outcome (fd.get (), "source file", srcpath);
if (fd.get () >= 0) if (fd.get () >= 0)
destname->reset (dname); destname->reset (dname);
@@ -331,20 +333,25 @@ debuginfod_debuginfo_query (const unsigned char *build_id,
return scoped_fd (-ENOMEM); return scoped_fd (-ENOMEM);
char *dname = nullptr; char *dname = nullptr;
scoped_fd fd;
gdb::optional<target_terminal::scoped_restore_terminal_state> term_state;
{
user_data data ("separate debug info for", filename); user_data data ("separate debug info for", filename);
debuginfod_set_user_data (c, &data); debuginfod_set_user_data (c, &data);
gdb::optional<target_terminal::scoped_restore_terminal_state> term_state;
if (target_supports_terminal_ours ()) if (target_supports_terminal_ours ())
{ {
term_state.emplace (); term_state.emplace ();
target_terminal::ours (); target_terminal::ours ();
} }
scoped_fd fd (debuginfod_find_debuginfo (c, build_id, build_id_len, fd = scoped_fd (debuginfod_find_debuginfo (c, build_id, build_id_len,
&dname)); &dname));
debuginfod_set_user_data (c, nullptr); debuginfod_set_user_data (c, nullptr);
print_outcome (data, fd.get ()); }
print_outcome (fd.get (), "separate debug info for", filename);
if (fd.get () >= 0) if (fd.get () >= 0)
destname->reset (dname); destname->reset (dname);
@@ -369,19 +376,25 @@ debuginfod_exec_query (const unsigned char *build_id,
return scoped_fd (-ENOMEM); return scoped_fd (-ENOMEM);
char *dname = nullptr; char *dname = nullptr;
scoped_fd fd;
gdb::optional<target_terminal::scoped_restore_terminal_state> term_state;
{
user_data data ("executable for", filename); user_data data ("executable for", filename);
debuginfod_set_user_data (c, &data); debuginfod_set_user_data (c, &data);
gdb::optional<target_terminal::scoped_restore_terminal_state> term_state;
if (target_supports_terminal_ours ()) if (target_supports_terminal_ours ())
{ {
term_state.emplace (); term_state.emplace ();
target_terminal::ours (); target_terminal::ours ();
} }
scoped_fd fd (debuginfod_find_executable (c, build_id, build_id_len, &dname)); fd = scoped_fd (debuginfod_find_executable (c, build_id, build_id_len,
&dname));
debuginfod_set_user_data (c, nullptr); debuginfod_set_user_data (c, nullptr);
print_outcome (data, fd.get ()); }
print_outcome (fd.get (), "executable for", filename);
if (fd.get () >= 0) if (fd.get () >= 0)
destname->reset (dname); destname->reset (dname);

View File

@@ -302,7 +302,7 @@ class ui_out
~progress_update () ~progress_update ()
{ {
m_uiout->do_progress_end ();
} }
progress_update (const progress_update &) = delete; progress_update (const progress_update &) = delete;
@@ -321,14 +321,13 @@ class ui_out
{ {
m_uiout->do_progress_notify (msg, "", -1, -1); m_uiout->do_progress_notify (msg, "", -1, -1);
} }
private: private:
struct ui_out *m_uiout; struct ui_out *m_uiout;
}; };
virtual void do_progress_end () = 0; protected:
protected:
virtual void do_table_begin (int nbrofcols, int nr_rows, const char *tblid) virtual void do_table_begin (int nbrofcols, int nr_rows, const char *tblid)
= 0; = 0;
@@ -365,6 +364,7 @@ class ui_out
virtual void do_progress_start () = 0; virtual void do_progress_start () = 0;
virtual void do_progress_notify (const std::string &, const char *, virtual void do_progress_notify (const std::string &, const char *,
double, double) = 0; double, double) = 0;
virtual void do_progress_end () = 0;
/* Set as not MI-like by default. It is overridden in subclasses if /* Set as not MI-like by default. It is overridden in subclasses if
necessary. */ necessary. */