use FindBin;
use Getopt::Long;
-use Pod::Usage;
use Mail::IMAPTalk;
use MIME::Base64;
+use Pod::Usage;
+use Proc::ProcessTable;
use lib "$FindBin::Bin/../lib";
local $0 = "$FindBin::Script " . join ' ', @ARGV;
+my $processes = Proc::ProcessTable->new;
+
+for my $process (@{$processes->table}) {
+ if ($process->cmndline eq $0 and $process->pid != $$) {
+ verbose "$FindBin::Script already running";
+
+ exit 0;
+ } # if
+} # for
+
my $defaultIMAPServer = 'defaria.com';
my $IMAP;
my %unseen;
my $greeting = $greetings[int rand $#greetings];
my $msg = "$greeting from $from... $subject";
- $msg =~ s/\"/\\"/g;
-
- my $hour = (localtime)[2];
+ my $hour = (localtime)[2];
# Only announce if after 6 Am. Note this will announce up until
# midnight but that's ok. I want midnight to 6 Am as silent time.
if ($hour >= 7) {
$log->msg($logmsg);
$log->dbug("Calling speak");
- speak $msg;
+ speak $msg, $log;
} else {
- $log->msg("$logmsg [silent]");
+ $log->msg("$logmsg [silent nighttime]");
} # if
$unseen{$_} = 1;
my $startTime = time;
# Re-establish callback
- $log->msg("Calling IMAP->idle");
+ $log->dbug("Calling IMAP->idle");
eval {
$IMAP->idle(\&MonitorMail, $opts{timeout})
};