Various updates from DEV
[clearscm.git] / lib / Speak.pm
index 0869ed4..dd38346 100644 (file)
@@ -47,6 +47,7 @@ use warnings;
 use base 'Exporter';
 
 use FindBin;
+use Clipboard;
 
 use lib "$FindBin::Bin/../lib";
 
@@ -103,15 +104,19 @@ Returns:
 =cut
 
   if (-f "$FindBin::Bin/shh") {
+    $msg .= ' [silent]';
     if ($log) {
-      $log->msg("Not speaking because we were asked to be quiet - $msg");
+      $log->msg($msg);
     } else {
-      verbose "Not speaking because we were asked to be quiet - $msg";
+      verbose $msg;
     } # if
 
     return;
   } # if
 
+  # Handle the case where $msg is not passed in. Then use the clipboard;
+  $msg = Clipboard->paste unless $msg;
+
   # Handle the case where $msg is a filehandle
   $msg = <$msg> if ref $msg eq 'GLOB';
 
@@ -119,10 +124,12 @@ Returns:
   # backoff a little and try again.
   my $attempts   = 0;
   my $maxretries = 3;
-  my $backoff    = 2;
 
   my ($status, @output);
 
+  # Log message to log file if $log was passed in.
+  $log->msg($msg) if $log;
+
   while ($attempts++ < $maxretries) {
     ($status, @output) = Execute "/usr/local/bin/gt \"$msg\"";
 
@@ -135,9 +142,9 @@ Returns:
         error $errmsg;
       } # if
 
-      sleep $backoff++;
+      sleep int rand 10;
     } else {
-      return; # We said our piece...
+      return;
     } # if
   } # while