--- a/src/downloader.cpp 2020-04-17 15:41:32.142346898 +0200 +++ b/src/downloader.cpp 2020-04-17 14:54:23.614337011 +0200 @@ -255,21 +255,27 @@ else { if (!isatty(STDIN_FILENO)) { - std::cerr << "Unable to read email and password" << std::endl; - return 0; - } - std::cerr << "Email: "; - std::getline(std::cin,email); + /* Attempt to read this stuff from elsewhere */ + bool cookie_gone = boost::filesystem::exists(Globals::globalConfig.curlConf.sCookiePath); + bool tokens_gone = boost::filesystem::exists(Globals::globalConfig.sConfigDirectory + "/galaxy_tokens.json"); + if(cookie_gone || tokens_gone) { + std::cerr << "Unable to read email and password" << std::endl; + return 0; + } + } else { + std::cerr << "Email: "; + std::getline(std::cin,email); - std::cerr << "Password: "; - struct termios termios_old, termios_new; - tcgetattr(STDIN_FILENO, &termios_old); // Get current terminal attributes - termios_new = termios_old; - termios_new.c_lflag &= ~ECHO; // Set ECHO off - tcsetattr(STDIN_FILENO, TCSANOW, &termios_new); // Set terminal attributes - std::getline(std::cin, password); - tcsetattr(STDIN_FILENO, TCSANOW, &termios_old); // Restore old terminal attributes - std::cerr << std::endl; + std::cerr << "Password: "; + struct termios termios_old, termios_new; + tcgetattr(STDIN_FILENO, &termios_old); // Get current terminal attributes + termios_new = termios_old; + termios_new.c_lflag &= ~ECHO; // Set ECHO off + tcsetattr(STDIN_FILENO, TCSANOW, &termios_new); // Set terminal attributes + std::getline(std::cin, password); + tcsetattr(STDIN_FILENO, TCSANOW, &termios_old); // Restore old terminal attributes + std::cerr << std::endl; + } } if (email.empty() || password.empty())