78 lines
1.5 KiB
C++
78 lines
1.5 KiB
C++
#include "common.hh"
|
|
|
|
#define BCRYPT_HASHSIZE (64)
|
|
#define RANDBYTES (16)
|
|
#define COST (12)
|
|
|
|
using namespace std;
|
|
|
|
int getch() {
|
|
struct termios oldt,
|
|
newt;
|
|
int ch;
|
|
tcgetattr( STDIN_FILENO, &oldt );
|
|
newt = oldt;
|
|
newt.c_lflag &= ~( ICANON | ECHO );
|
|
tcsetattr( STDIN_FILENO, TCSANOW, &newt );
|
|
ch = getchar();
|
|
tcsetattr( STDIN_FILENO, TCSANOW, &oldt );
|
|
return ch;
|
|
}
|
|
|
|
std::string getPass( const char * prompt = "Enter Password : ", char h_ch = '*') {
|
|
std::string pass;
|
|
char ch;
|
|
cout << prompt;
|
|
|
|
while ( ch != '\n' ) {
|
|
ch = getch();
|
|
|
|
if(ch == 127 || ch == 8 ) {
|
|
if( !pass.empty() ) {
|
|
cout << "\b \b";
|
|
pass.pop_back();
|
|
}
|
|
} else {
|
|
pass.push_back(ch);
|
|
if(pass.front() == '\n') { cout << "\nPassword required. Exiting ...\n" << endl; exit(EXIT_FAILURE); }
|
|
cout << h_ch;
|
|
}
|
|
}
|
|
|
|
pass.pop_back();
|
|
|
|
cout << endl;
|
|
return pass;
|
|
}
|
|
|
|
inline bool is_empty_string(const std::string s) {
|
|
return true;
|
|
}
|
|
|
|
void toLower(std::string &str)
|
|
{
|
|
const int length = str.length();
|
|
for(int i=0; i < length; ++i)
|
|
{
|
|
str[i] = std::tolower(str[i]);
|
|
}
|
|
}
|
|
|
|
inline bool file_exists (const std::string& name) {
|
|
struct stat buffer;
|
|
return (stat (name.c_str(), &buffer) == 0);
|
|
}
|
|
bool is_hidden(const boost::filesystem::path &p)
|
|
{
|
|
|
|
boost::filesystem::path::string_type name = p.filename().native();
|
|
if(name != ".." &&
|
|
name != "." &&
|
|
name[0] == '.')
|
|
{
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|