Compare commits

...

2 Commits

2 changed files with 23 additions and 2 deletions

25
otp.c
View File

@@ -148,6 +148,7 @@ int interactive_mode(void) {
break; break;
} }
case 'X': case 'X':
case 'Q':
printf("Goodbye!\n"); printf("Goodbye!\n");
return 0; return 0;
default: default:
@@ -267,7 +268,7 @@ int command_line_mode(int argc, char* argv[]) {
} }
void show_main_menu(void) { void show_main_menu(void) {
printf("=== Main Menu ===\n"); printf("=== Main Menu ===\n\n");
printf("\033[4mT\033[0mext encrypt\n"); printf("\033[4mT\033[0mext encrypt\n");
printf("\033[4mF\033[0mile encrypt\n"); printf("\033[4mF\033[0mile encrypt\n");
printf("\033[4mD\033[0mecrypt\n"); printf("\033[4mD\033[0mecrypt\n");
@@ -2558,7 +2559,27 @@ int handle_file_encrypt(void) {
int ascii_armor = (atoi(format_input) == 2) ? 1 : 0; int ascii_armor = (atoi(format_input) == 2) ? 1 : 0;
return encrypt_file(pad_input, input_file, NULL, ascii_armor); // Generate default output filename
char default_output[512];
if (ascii_armor) {
snprintf(default_output, sizeof(default_output), "%s.otp.asc", input_file);
} else {
snprintf(default_output, sizeof(default_output), "%s.otp", input_file);
}
// Ask for output filename with pre-filled default
printf("\nOutput filename [%s]: ", default_output);
char output_file[512];
if (!fgets(output_file, sizeof(output_file), stdin)) {
printf("Error: Failed to read input\n");
return 1;
}
output_file[strcspn(output_file, "\n")] = 0;
// Use default if user just pressed Enter
const char* output_filename = (strlen(output_file) > 0) ? output_file : default_output;
return encrypt_file(pad_input, input_file, output_filename, ascii_armor);
} }
int handle_smart_decrypt(void) { int handle_smart_decrypt(void) {

BIN
test.txt.otp Normal file

Binary file not shown.