improve client_test
This commit is contained in:
parent
b367a0cd50
commit
7c35c2270f
|
@ -102,19 +102,30 @@ bool sleep_and_input(int* c, int sleep)
|
||||||
|
|
||||||
struct set_keypress
|
struct set_keypress
|
||||||
{
|
{
|
||||||
set_keypress()
|
enum terminal_mode {
|
||||||
|
echo = 1,
|
||||||
|
canonical = 2
|
||||||
|
};
|
||||||
|
|
||||||
|
explicit set_keypress(std::uint8_t const mode = 0)
|
||||||
{
|
{
|
||||||
termios new_settings;
|
termios new_settings;
|
||||||
tcgetattr(0,&stored_settings);
|
tcgetattr(0, &stored_settings);
|
||||||
new_settings = stored_settings;
|
new_settings = stored_settings;
|
||||||
// Disable canonical mode, and set buffer size to 1 byte
|
// Disable canonical mode, and set buffer size to 1 byte
|
||||||
// and disable echo
|
// and disable echo
|
||||||
new_settings.c_lflag &= ~(ICANON | ECHO);
|
if (mode & echo) new_settings.c_lflag |= ECHO;
|
||||||
|
else new_settings.c_lflag &= ~ECHO;
|
||||||
|
|
||||||
|
if (mode & canonical) new_settings.c_lflag |= ICANON;
|
||||||
|
else new_settings.c_lflag &= ~ICANON;
|
||||||
|
|
||||||
new_settings.c_cc[VTIME] = 0;
|
new_settings.c_cc[VTIME] = 0;
|
||||||
new_settings.c_cc[VMIN] = 1;
|
new_settings.c_cc[VMIN] = 1;
|
||||||
tcsetattr(0,TCSANOW,&new_settings);
|
tcsetattr(0,TCSANOW,&new_settings);
|
||||||
}
|
}
|
||||||
~set_keypress() { tcsetattr(0,TCSANOW,&stored_settings); }
|
~set_keypress() { tcsetattr(0, TCSANOW, &stored_settings); }
|
||||||
|
private:
|
||||||
termios stored_settings;
|
termios stored_settings;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1417,11 +1428,20 @@ MAGNETURL is a magnet link
|
||||||
char url[4096];
|
char url[4096];
|
||||||
url[0] = '\0';
|
url[0] = '\0';
|
||||||
puts("Enter magnet link:\n");
|
puts("Enter magnet link:\n");
|
||||||
|
|
||||||
|
#ifndef _WIN32
|
||||||
|
// enable terminal echo temporarily
|
||||||
|
set_keypress s(set_keypress::echo | set_keypress::canonical);
|
||||||
|
#endif
|
||||||
if (std::scanf("%4095s", url) == 1) add_magnet(ses, url);
|
if (std::scanf("%4095s", url) == 1) add_magnet(ses, url);
|
||||||
else std::printf("failed to read magnet link\n");
|
else std::printf("failed to read magnet link\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (c == 'q') break;
|
if (c == 'q')
|
||||||
|
{
|
||||||
|
quit = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (c == 'W' && h.is_valid())
|
if (c == 'W' && h.is_valid())
|
||||||
{
|
{
|
||||||
|
@ -1445,6 +1465,10 @@ MAGNETURL is a magnet link
|
||||||
torrent_status const& st = view.get_active_torrent();
|
torrent_status const& st = view.get_active_torrent();
|
||||||
std::printf("\n\nARE YOU SURE YOU WANT TO DELETE THE FILES FOR '%s'. THIS OPERATION CANNOT BE UNDONE. (y/N)"
|
std::printf("\n\nARE YOU SURE YOU WANT TO DELETE THE FILES FOR '%s'. THIS OPERATION CANNOT BE UNDONE. (y/N)"
|
||||||
, st.name.c_str());
|
, st.name.c_str());
|
||||||
|
#ifndef _WIN32
|
||||||
|
// enable terminal echo temporarily
|
||||||
|
set_keypress s(set_keypress::echo | set_keypress::canonical);
|
||||||
|
#endif
|
||||||
char response = 'n';
|
char response = 'n';
|
||||||
int ret = std::scanf("%c", &response);
|
int ret = std::scanf("%c", &response);
|
||||||
if (ret == 1 && response == 'y')
|
if (ret == 1 && response == 'y')
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit c1537196d68a6950e00995d5594dcbce4485effd
|
Subproject commit 60d786b8fa6ddaacdc98bdf691220660bc194494
|
Loading…
Reference in New Issue