From 058e24d436a7d7d9de9a081ddc66db81aba96ce4 Mon Sep 17 00:00:00 2001 From: Nikola Petrov Date: Sun, 27 Aug 2023 20:38:26 +0200 Subject: [PATCH] Add optional return --- Password_manager/include/arg_func.h | 7 ++++--- Password_manager/include/func.h | 2 -- Password_manager/source/arg_func.cpp | 14 ++++++-------- Password_manager/source/main.cpp | 14 ++++++-------- 4 files changed, 16 insertions(+), 21 deletions(-) diff --git a/Password_manager/include/arg_func.h b/Password_manager/include/arg_func.h index d9ebc86..20cbfeb 100644 --- a/Password_manager/include/arg_func.h +++ b/Password_manager/include/arg_func.h @@ -4,6 +4,7 @@ struct LoginInfoPointer; class Buffer; class Cryptography; #include +#include 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 arg_get(Buffer& decrypted_buffer, const char* label); -LoginInfoPointer arg_generate(Buffer& decrypted_buffer, Buffer& encrypted_buffer, const char* label, Cryptography& crypto); +std::optional 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 arg_input(Buffer& decrypted_buffer, Buffer& encrypted_buffer, const char* label, Cryptography& crypto); void arg_list(Buffer& decrypted_buffer); diff --git a/Password_manager/include/func.h b/Password_manager/include/func.h index 8604a20..c16a4eb 100644 --- a/Password_manager/include/func.h +++ b/Password_manager/include/func.h @@ -13,8 +13,6 @@ struct LoginInfoPointer { const char* label; const char* password; - - LoginInfoPointer() : label(nullptr), password(nullptr) {} }; struct Index diff --git a/Password_manager/source/arg_func.cpp b/Password_manager/source/arg_func.cpp index 4277f2b..5022e27 100644 --- a/Password_manager/source/arg_func.cpp +++ b/Password_manager/source/arg_func.cpp @@ -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 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 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 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); } \ No newline at end of file diff --git a/Password_manager/source/main.cpp b/Password_manager/source/main.cpp index 605b243..28aa77b 100644 --- a/Password_manager/source/main.cpp +++ b/Password_manager/source/main.cpp @@ -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 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 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); }