Commit Diff


commit - d69b79026381ab7108b17b12ba835ce503f80539
commit + 1f89d66ab922c72bf01bf9b0662b832c9309e45f
blob - 88f6dcd174d3474712ab3d8a408f87467b61cb9c
blob + 380dadc2ac66c40f077e9dea6dc13a3f602a6ab2
--- plass
+++ plass
@@ -105,10 +105,20 @@ sub readpass {
 	die "failed to read stdin: $!" unless defined($pass);
 	chomp $pass;
 	return $pass;
+}
+
+sub mkdirs {
+	my $dir = shift;
+	my $parent = dirname $dir;
+	mkdirs($parent) unless -d $parent || $parent eq '/';
+	mkdir $dir or die "mkdir $dir: $!"
+	    unless -d $dir;
 }
 
 sub writepass {
 	my ($file, $pass) = @_;
+
+	mkdirs(dirname $file);
 
 	my @args = ($gpg, @gpg_flags, '-e', '-r', recipient(),
 	    '-o', $file);