Add optional return
This commit is contained in:
parent
375af5f3cd
commit
058e24d436
Password_manager
@ -4,6 +4,7 @@ struct LoginInfoPointer;
|
||||
class Buffer;
|
||||
class Cryptography;
|
||||
#include <string>
|
||||
#include <optional>
|
||||
|
||||
enum class Arg
|
||||
{
|
||||
@ -22,11 +23,11 @@ void print_args();
|
||||
|
||||
Arg get_args(int argc, char** argv, char** label);
|
||||
|
||||
LoginInfoPointer arg_get(Buffer& decrypted_buffer, const char* label);
|
||||
std::optional<LoginInfoPointer> arg_get(Buffer& decrypted_buffer, const char* label);
|
||||
|
||||
LoginInfoPointer arg_generate(Buffer& decrypted_buffer, Buffer& encrypted_buffer, const char* label, Cryptography& crypto);
|
||||
std::optional<LoginInfoPointer> arg_generate(Buffer& decrypted_buffer, Buffer& encrypted_buffer, const char* label, Cryptography& crypto);
|
||||
|
||||
LoginInfoPointer arg_input(Buffer& decrypted_buffer, Buffer& encrypted_buffer, const char* label, Cryptography& crypto);
|
||||
std::optional<LoginInfoPointer> arg_input(Buffer& decrypted_buffer, Buffer& encrypted_buffer, const char* label, Cryptography& crypto);
|
||||
|
||||
void arg_list(Buffer& decrypted_buffer);
|
||||
|
||||
|
@ -13,8 +13,6 @@ struct LoginInfoPointer
|
||||
{
|
||||
const char* label;
|
||||
const char* password;
|
||||
|
||||
LoginInfoPointer() : label(nullptr), password(nullptr) {}
|
||||
};
|
||||
|
||||
struct Index
|
||||
|
@ -56,17 +56,17 @@ Arg get_args(int argc, char** argv, char** label) {
|
||||
return Arg::Error;
|
||||
}
|
||||
|
||||
LoginInfoPointer arg_get(Buffer& decrypted_buffer, const char* label)
|
||||
std::optional<LoginInfoPointer> arg_get(Buffer& decrypted_buffer, const char* label)
|
||||
{
|
||||
int pass = find_logininfo_in_buffer(decrypted_buffer, label);
|
||||
if (pass < 0) {
|
||||
printf_s("Password not found\n");
|
||||
return LoginInfoPointer();
|
||||
return {};
|
||||
}
|
||||
return get_logininfo_pointer_from_buffer(decrypted_buffer, pass);
|
||||
}
|
||||
|
||||
LoginInfoPointer arg_generate(Buffer& decrypted_buffer, Buffer& encrypted_buffer, const char* label, Cryptography& crypto)
|
||||
std::optional<LoginInfoPointer> arg_generate(Buffer& decrypted_buffer, Buffer& encrypted_buffer, const char* label, Cryptography& crypto)
|
||||
{
|
||||
printf_s("Generating password for %s\n", label);
|
||||
|
||||
@ -83,7 +83,7 @@ LoginInfoPointer arg_generate(Buffer& decrypted_buffer, Buffer& encrypted_buffer
|
||||
return get_logininfo_pointer_from_buffer(decrypted_buffer, index->count - 1);
|
||||
}
|
||||
|
||||
LoginInfoPointer arg_input(Buffer& decrypted_buffer, Buffer& encrypted_buffer, const char* label, Cryptography& crypto)
|
||||
std::optional<LoginInfoPointer> arg_input(Buffer& decrypted_buffer, Buffer& encrypted_buffer, const char* label, Cryptography& crypto)
|
||||
{
|
||||
printf_s("Input password for %s:", label);
|
||||
|
||||
@ -91,9 +91,7 @@ LoginInfoPointer arg_input(Buffer& decrypted_buffer, Buffer& encrypted_buffer, c
|
||||
if (new_string.empty())
|
||||
{
|
||||
printf_s("error getting password\n");
|
||||
|
||||
return LoginInfoPointer();
|
||||
|
||||
return {};
|
||||
}
|
||||
|
||||
int pass = find_logininfo_in_buffer(decrypted_buffer, label);
|
||||
@ -213,5 +211,5 @@ void arg_show(Buffer& decrypted_buffer, const char* label) {
|
||||
if (pass < 0)
|
||||
printf_s("Password not found\n");
|
||||
else
|
||||
printf_s("Password: %s\n", get_logininfo_pointer_from_buffer(decrypted_buffer, pass));
|
||||
printf_s("Password: %s\n", get_logininfo_pointer_from_buffer(decrypted_buffer, pass).password);
|
||||
}
|
@ -8,8 +8,6 @@
|
||||
|
||||
#ifdef _DEBUG
|
||||
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
const char* label = "facebook";
|
||||
@ -35,7 +33,7 @@ int main()
|
||||
decrypted_buffer.add_end((uint8_t*)&index, sizeof(Index));
|
||||
}
|
||||
|
||||
LoginInfoPointer login_info;
|
||||
std::optional<LoginInfoPointer> login_info;
|
||||
|
||||
switch (args)
|
||||
{
|
||||
@ -72,10 +70,10 @@ int main()
|
||||
break;
|
||||
}
|
||||
|
||||
if (!login_info.password) return 0;
|
||||
if (!login_info.has_value()) return 0;
|
||||
|
||||
printf_s("Password copied to clipboard\n");
|
||||
put_data_on_clipboard(login_info.password);
|
||||
put_data_on_clipboard(login_info.value().password);
|
||||
|
||||
}
|
||||
|
||||
@ -114,7 +112,7 @@ int main(int argc, char** argv)
|
||||
decrypted_buffer.add_end((uint8_t*)&index, sizeof(Index));
|
||||
}
|
||||
|
||||
LoginInfoPointer login_info;
|
||||
std::optional<LoginInfoPointer> login_info;
|
||||
|
||||
switch (args)
|
||||
{
|
||||
@ -151,10 +149,10 @@ int main(int argc, char** argv)
|
||||
break;
|
||||
}
|
||||
|
||||
if (!login_info.password) return 1;
|
||||
if (!login_info.has_value()) return 1;
|
||||
|
||||
printf_s("Password copied to clipboard\n");
|
||||
put_data_on_clipboard(login_info.password);
|
||||
put_data_on_clipboard(login_info.value().password);
|
||||
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user