|
|
|
@@ -297,9 +297,6 @@ int command_line_mode(int argc, char* argv[]) {
|
|
|
|
|
|
|
|
|
|
// Call encrypt_text and then comment about using default pad
|
|
|
|
|
int result = encrypt_text(pad_identifier, text);
|
|
|
|
|
if (result == 0) {
|
|
|
|
|
printf("# Used default pad: %.16s...\n", pad_identifier);
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
} else {
|
|
|
|
|
printf("Error: No default pad configured. Specify pad explicitly or configure default pad.\n");
|
|
|
|
@@ -2730,15 +2727,27 @@ int load_preferences(void) {
|
|
|
|
|
char absolute_path[1024];
|
|
|
|
|
if (current_pads_dir[0] == '/') {
|
|
|
|
|
// Already absolute path
|
|
|
|
|
snprintf(first_pad_path, sizeof(first_pad_path), "%s/%s", current_pads_dir, entry->d_name);
|
|
|
|
|
int ret = snprintf(first_pad_path, sizeof(first_pad_path), "%s/%s", current_pads_dir, entry->d_name);
|
|
|
|
|
if (ret >= (int)sizeof(first_pad_path)) {
|
|
|
|
|
// Path was truncated, skip this entry
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
// Relative path - make it absolute
|
|
|
|
|
char current_dir[512];
|
|
|
|
|
if (getcwd(current_dir, sizeof(current_dir))) {
|
|
|
|
|
snprintf(first_pad_path, sizeof(first_pad_path), "%s/%s/%s", current_dir, current_pads_dir, entry->d_name);
|
|
|
|
|
int ret = snprintf(first_pad_path, sizeof(first_pad_path), "%s/%s/%s", current_dir, current_pads_dir, entry->d_name);
|
|
|
|
|
if (ret >= (int)sizeof(first_pad_path)) {
|
|
|
|
|
// Path was truncated, skip this entry
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
// Fallback to relative path
|
|
|
|
|
snprintf(first_pad_path, sizeof(first_pad_path), "%s/%s", current_pads_dir, entry->d_name);
|
|
|
|
|
int ret = snprintf(first_pad_path, sizeof(first_pad_path), "%s/%s", current_pads_dir, entry->d_name);
|
|
|
|
|
if (ret >= (int)sizeof(first_pad_path)) {
|
|
|
|
|
// Path was truncated, skip this entry
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
strncpy(default_pad_path, first_pad_path, sizeof(default_pad_path) - 1);
|
|
|
|
@@ -3602,7 +3611,7 @@ int handle_pads_menu(void) {
|
|
|
|
|
printf("No pads found.\n");
|
|
|
|
|
printf("\nOptions:\n");
|
|
|
|
|
printf(" \033[4mG\033[0menerate new pad\n");
|
|
|
|
|
printf(" \033[4mB\033[0mack to main menu\n");
|
|
|
|
|
printf(" E\033[4mx\033[0mit\n");
|
|
|
|
|
printf("\nSelect option: ");
|
|
|
|
|
|
|
|
|
|
char input[10];
|
|
|
|
@@ -3696,7 +3705,7 @@ int handle_pads_menu(void) {
|
|
|
|
|
printf("\nActions:\n");
|
|
|
|
|
printf(" \033[4mG\033[0menerate new pad\n");
|
|
|
|
|
printf(" \033[4mS\033[0met default pad\n");
|
|
|
|
|
printf(" \033[4mB\033[0mack to main menu\n");
|
|
|
|
|
printf(" E\033[4mx\033[0mit\n");
|
|
|
|
|
printf("\nSelect pad (by prefix) or action: ");
|
|
|
|
|
|
|
|
|
|
char input[MAX_HASH_LENGTH];
|
|
|
|
@@ -3747,15 +3756,31 @@ int handle_pads_menu(void) {
|
|
|
|
|
char new_default_path[1024];
|
|
|
|
|
if (current_pads_dir[0] == '/') {
|
|
|
|
|
// Already absolute path
|
|
|
|
|
snprintf(new_default_path, sizeof(new_default_path), "%s/%s.pad", current_pads_dir, pads[matched_pad].chksum);
|
|
|
|
|
int ret = snprintf(new_default_path, sizeof(new_default_path), "%s/%s.pad", current_pads_dir, pads[matched_pad].chksum);
|
|
|
|
|
if (ret >= (int)sizeof(new_default_path)) {
|
|
|
|
|
printf("Error: Path too long for default pad setting\n");
|
|
|
|
|
return handle_pads_menu();
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
// Relative path - make it absolute
|
|
|
|
|
char current_dir[512];
|
|
|
|
|
if (getcwd(current_dir, sizeof(current_dir))) {
|
|
|
|
|
snprintf(new_default_path, sizeof(new_default_path), "%s/%s/%s.pad", current_dir, current_pads_dir, pads[matched_pad].chksum);
|
|
|
|
|
int ret = snprintf(new_default_path, sizeof(new_default_path), "%s/%s/%s.pad", current_dir, current_pads_dir, pads[matched_pad].chksum);
|
|
|
|
|
if (ret >= (int)sizeof(new_default_path)) {
|
|
|
|
|
// Path was truncated, fall back to relative path
|
|
|
|
|
int ret2 = snprintf(new_default_path, sizeof(new_default_path), "%s/%s.pad", current_pads_dir, pads[matched_pad].chksum);
|
|
|
|
|
if (ret2 >= (int)sizeof(new_default_path)) {
|
|
|
|
|
printf("Error: Path too long for default pad setting\n");
|
|
|
|
|
return handle_pads_menu();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
// Fallback to relative path
|
|
|
|
|
snprintf(new_default_path, sizeof(new_default_path), "%s/%s.pad", current_pads_dir, pads[matched_pad].chksum);
|
|
|
|
|
int ret = snprintf(new_default_path, sizeof(new_default_path), "%s/%s.pad", current_pads_dir, pads[matched_pad].chksum);
|
|
|
|
|
if (ret >= (int)sizeof(new_default_path)) {
|
|
|
|
|
printf("Error: Path too long for default pad setting\n");
|
|
|
|
|
return handle_pads_menu();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -3767,8 +3792,8 @@ int handle_pads_menu(void) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return handle_pads_menu();
|
|
|
|
|
} else if (toupper(input[0]) == 'B') {
|
|
|
|
|
return 0; // Back to main menu
|
|
|
|
|
} else if (toupper(input[0]) == 'X') {
|
|
|
|
|
return 0; // Exit to main menu
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Find matching pad by prefix
|
|
|
|
|