#!/usr/bin/perl -w

# Sample password prompt program.  Demonstration of how to interface with
# encfs's --extpass option.  Note that encfs's extpass interface was chosen to
# work with existing password prompt programs, like ssh-askpass.
#
# The external password program is expected to somehow prompt for the password
# and return the password on stdout.  Encfs also provides some extra
# information which is stored in environment variables.
#
# Quick Start:  The only necessary part of this script for encfs operation is
# the final part which prints the password to stdout.
#
# Encfs records some environment variables with useful information:
# "encfs_root" holds a path to the raw encrypted data.
# "encfs_stdout" holds a file descriptor number which will display data to
# standard output (because standard output is used for the password).
# "encfs_stderr" holds a file descriptor number which for standard error..

use strict;
use IO::Handle;

# find out where we can send data to display to the user (assuming encfs was
# started in a terminal!)
my $realOut = $ENV{"encfs_stdout"} || fileno(STDOUT);
#my $realErr = $ENV{"encfs_stderr"} || fileno(STDERR);
#my $rootDir = $ENV{"encfs_root"} || "[unknown]";
#system("xmessage realOut=$realOut, err=$realErr");

# for grins, show all encfs related environment variables to encfs's standard
# output
my $io = new IO::Handle;
if($io->fdopen($realOut, "w"))
{
    while (my ($key,$value) = each %ENV) 
    {
	$io->print("$key=$value\n") if($key=~/encfs/);
    }
}
$io->close();

## XXX XXX - This is the only part necessary for encfs to be happy.
# the functional part -- print the encfs password to stdout
print "test\n";

