diff --git a/ttyverse.pl b/ttyverse.pl index 0f8a4e6..eb13d61 100755 --- a/ttyverse.pl +++ b/ttyverse.pl @@ -1688,6 +1688,15 @@ EOF $oauthkey = "X"; $oauthsecret = "X"; + # Ensure the keyfile directory exists + my $keyfile_dir = $keyfile; + $keyfile_dir =~ s|[^/]*$||; # Remove filename, keep directory path + if ($keyfile_dir && !-d $keyfile_dir) { + eval { make_path($keyfile_dir) }; + if ($@) { + die("Failed to create keyfile directory $keyfile_dir: $@\n"); + } + } open(W, ">$keyfile") || die("Failed to write keyfile $keyfile: $!\n"); print W <<"EOF"; @@ -1864,6 +1873,15 @@ Access token =========> $at Access token secret ==> $ats EOF + # Ensure the keyfile directory exists + my $keyfile_dir = $keyfile; + $keyfile_dir =~ s|[^/]*$||; # Remove filename, keep directory path + if ($keyfile_dir && !-d $keyfile_dir) { + eval { make_path($keyfile_dir) }; + if ($@) { + die("Failed to create keyfile directory $keyfile_dir: $@\n"); + } + } open(W, ">$keyfile") || (print $stdout ("Unable to write to $keyfile: $!\n"), exit); print W "ck=$ck&cs=$cs&at=$at&ats=$ats\n"; @@ -10554,6 +10572,16 @@ sub oauth2_wizard { # Step 4: Save credentials to keyfile my $keyfile_content = "client_id=${client_id}&client_secret=${client_secret}&access_token=${access_token}&server=${fediverseserver}"; + # Ensure the keyfile directory exists + my $keyfile_dir = $keyfile; + $keyfile_dir =~ s|[^/]*$||; # Remove filename, keep directory path + if ($keyfile_dir && !-d $keyfile_dir) { + eval { make_path($keyfile_dir) }; + if ($@) { + die("Failed to create keyfile directory $keyfile_dir: $@\n"); + } + } + open(W, ">$keyfile") || die("couldn't write keyfile $keyfile: $!\n"); chmod 0600, $keyfile; print W $keyfile_content;