commit:     feb500c197990874101ae84aa51a6b718e96ae79
Author:     Jorge Manuel B. S. Vicetto (jmbsvicetto) <jmbsvicetto <AT> gentoo 
<DOT> org>
AuthorDate: Sun Jun 19 12:05:35 2016 +0000
Commit:     Jorge Manuel B. S. Vicetto <jmbsvicetto <AT> gentoo <DOT> org>
CommitDate: Sun Jun 19 12:05:35 2016 +0000
URL:        https://gitweb.gentoo.org/proj/elections.git/commit/?id=feb500c1

Allow running votify outside of /etc/elections and the repository dir.

Signed-off-by: Jorge Manuel B. S. Vicetto (jmbsvicetto) <jmbsvicetto <AT> 
gentoo.org>

 Votify.pm | 12 ++++++------
 votify    |  8 +++++---
 2 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/Votify.pm b/Votify.pm
index 48e5938..ed5b519 100644
--- a/Votify.pm
+++ b/Votify.pm
@@ -10,13 +10,13 @@ package Votify;
 
 use POSIX;
 use Cwd qw(abs_path);
+use File::Basename;
 use File::Spec::Functions;
 use List::Util;
 use strict;
 
 our $datefmt = '%Y-%m-%d %H:%M:%S UTC';
-
-our ($basedir) = List::Util::first { -d $_ } ('/etc/elections', '.');
+our ($basedir) = List::Util::first { -d $_ } ('/etc/elections', 
dirname(__FILE__));
 (our $zero = $0) =~ s,.*/,,;
 our $version = '1.6';
 
@@ -41,16 +41,16 @@ sub validate_election_dir {
     my $election_dir = $_;
     my $election_name = $election_dir;
     $election_name =~ /.*\//;
-    return 0 unless -d $election_dir;
+    return 0 unless -d "$basedir/$election_dir";
     return 0 if substr($election_name,0,1) eq ".";
     my $valid = List::Util::reduce {
         $a or $b ? 1 : 0;
     } map {
         my $file_valid = 0;
         # Legacy naming:
-        $file_valid = 1 if -f sprintf("%s/%s-%s", $election_name, $_, 
$election_name);
+        $file_valid = 1 if -f sprintf("%s/%s-%s", "$basedir/$election_name", 
$_, $election_name);
         # New naming:
-        $file_valid = 1 if -f sprintf("%s/%s", $election_name, $_);
+        $file_valid = 1 if -f sprintf("%s/%s", "$basedir/$election_name", $_);
         #printf "File %s valid=%d\n", $_, $file_valid;
         $file_valid;
     } @REQUIRED_FILES;
@@ -88,7 +88,7 @@ sub get_single_election_hashref {
     my %election;
     foreach my $fn (@REQUIRED_FILES){
         #print "Scan $fn\n";
-        my @filenames = (sprintf("%s/%s", $election_name, $fn), 
sprintf("%s/%s-%s", $election_name, $fn, $election_name));
+        my @filenames = (sprintf("%s/%s", "$basedir/$election_name", $fn), 
sprintf("%s/%s-%s", "$basedir/$election_name", $fn, $election_name));
         #print Dumper(@filenames);
         my $filename = abs_path(List::Util::first { -f $_ } @filenames);
         $election{"${fn}file"} = $filename;

diff --git a/votify b/votify
index e52881d..4fb688d 100755
--- a/votify
+++ b/votify
@@ -7,13 +7,15 @@
 # votify: generate, verify and submit voting ballots for trustee elections
 #
 
-#BEGIN { push @INC, (getpwnam 'fox2mike')[7].'/elections' }
 BEGIN {
+    my $dirname;
     if(-f '/etc/elections/Votify.pm') {
-        push @INC, '/etc/elections';
+        $dirname = '/etc/elections';
     } else {
-        push @INC, '.' if -f 'Votify.pm';
+        use File::Basename;
+        $dirname = dirname(__FILE__);
     }
+    push @INC, $dirname;
 }
 
 use POSIX;

Reply via email to