Check that stdout is a tty in ncurses ui

This commit is contained in:
Maxime Coste 2019-11-09 08:19:45 +11:00
parent 9d700344f7
commit 8e63aa1548
2 changed files with 6 additions and 18 deletions

View File

@ -106,11 +106,6 @@ void show_startup_info(Client* local_client, int last_version)
}
}
struct startup_error : runtime_error
{
using runtime_error::runtime_error;
};
inline void write_stdout(StringView str) { try { write(STDOUT_FILENO, str); } catch (runtime_error&) {} }
inline void write_stderr(StringView str) { try { write(STDERR_FILENO, str); } catch (runtime_error&) {} }
@ -578,9 +573,6 @@ std::unique_ptr<UserInterface> create_local_ui(UIType ui_type)
}
};
if (not isatty(1))
throw startup_error("stdout is not a tty");
if (not isatty(0))
{
// move stdin to another fd, and restore tty as stdin
@ -1104,9 +1096,6 @@ int main(int argc, char* argv[])
for (auto name : files)
new_files += format("edit '{}';", escape(real_path(name), "'", '\\'));
if (not isatty(1))
throw startup_error("stdout is not a tty");
return run_client(*server_session, {}, new_files + client_init, init_coord, ui_type, false);
}
else
@ -1137,14 +1126,9 @@ int main(int argc, char* argv[])
generate_switches_doc(param_desc.switches)));
return -1;
}
catch (startup_error& error)
{
write_stderr(format("Could not start kakoune: {}\n", error.what()));
return -1;
}
catch (Kakoune::exception& error)
{
write_stderr(format("uncaught exception ({}):\n{}\n", typeid(error).name(), error.what()));
write_stderr(format("Fatal error: {}\n", error.what()));
return -1;
}
catch (std::exception& error)

View File

@ -2,10 +2,11 @@
#include "display_buffer.hh"
#include "event_manager.hh"
#include "exception.hh"
#include "file.hh"
#include "keys.hh"
#include "ranges.hh"
#include "string_utils.hh"
#include "file.hh"
#include <algorithm>
@ -336,6 +337,9 @@ NCursesUI::NCursesUI()
}},
m_assistant(assistant_clippy)
{
if (not isatty(1))
throw runtime_error("stdout is not a tty");
tcgetattr(STDIN_FILENO, &m_original_termios);
initscr();