Initial checkin of personal version.
authorThomas Hochstein <thh@inter.net>
Mon, 16 Aug 2010 21:03:19 +0000 (23:03 +0200)
committerThomas Hochstein <thh@inter.net>
Mon, 16 Aug 2010 21:40:20 +0000 (23:40 +0200)
Signed-off-by: Thomas Hochstein <thh@inter.net>
13 files changed:
UVrules.pm
messages.cfg
templates/result-multi
templates/result-single
tmp/ergebnis-1191790177 [deleted file]
tmp/stimmen-1191790177 [deleted file]
usevote.global.cfg [new file with mode: 0644]
usevote.rul
usevote.tpl.cfg [new file with mode: 0644]
uvballot.pl
uvbounce.pl
uvcfv.pl
uvvote.pl

index 76e260f..4325867 100644 (file)
@@ -149,10 +149,10 @@ sub read_rulefile {
       die $errortext . ": $_\n\n" if ($errortext);
  
       # check for correct characters in conditions
-      if ($if !~ /^[JjNnEeSsHhIi\.]+$/) {
+      if ($if !~ /^[JjNnEeSsIi\.]+$/) {
         die UVmessage::get ("RULES_INVCHARS", (NUM=>$num+1, TYPE=>"if")) . ": $if\n\n";
 
-      } elsif ($then !~ /^[JjNnEeSsHhIi\.]+$/) {
+      } elsif ($then !~ /^[JjNnEeSsIi\.]+$/) {
         die UVmessage::get ("RULES_INVCHARS",
                             (NUM=>$num+1, TYPE=>"if")) . ": $then\n\n";
       }
@@ -194,9 +194,8 @@ sub read_rulefile {
 sub make_regex_pos {
   my $pat = $_[0];
  
-  $pat =~ s/[hijens]/./g;
+  $pat =~ s/[jens]/./g;
   $pat =~ s/S/[JN]/g;
-  $pat =~ s/H/[EJ]/g;
   $pat =~ s/I/[EN]/g;
  
   return $pat;
@@ -217,19 +216,22 @@ sub make_regex_neg {
  
   # upper case characters are replaced with dots
   # (are covered by make_regex_pos)
-  $pat =~ s/[HIJENS]/./g;
+  $pat =~ s/[JENS]/./g;
  
   # reverse lower case characters
   $pat =~ s/j/[NE]/g;
   $pat =~ s/n/[JE]/g;
   $pat =~ s/e/[JN]/g;
   $pat =~ s/s/E/g;
-  $pat =~ s/h/N/g;
   $pat =~ s/i/J/g;
  
-  # If the string contained only upper case characters they are now all
-  # replaced with dots and the RegEx would match everything, i.e. declare
-  # every vote as invalid. In this case an empty pattern is returned.
+  # to be translated:
+  # Falls keine Kleinbuchstaben vorkamen (es sind nur Punkte uebrig):
+  # Wenn keine optionalen Forderungen vorhanden sind, wuerde der Regex
+  # immer matchen und somit die Stimme immer als nicht passend erkannt
+  # werden. Deswegen wird versucht auf den leeren String zu ueberpruefen,
+  # was durch die Negation dazu fuehrt, dass die Stimme als passend 
+  # gewertet wird.
   $pat =~ s/^\.+$//;
  
   return $pat;
@@ -303,10 +305,6 @@ sub rule_print {
       $fill = "    $and ";
       $text1 = UVmessage::get ("RULES_IFCLAUSE",
                                (VOTE=>"$yes $or $no", GROUP=>$groups[$i]));
-    } elsif ($rule[$i] eq 'H') {
-      $fill = "    $and ";
-      $text1 = UVmessage::get ("RULES_IFCLAUSE",
-                               (VOTE=>"$abst $or $yes", GROUP=>$groups[$i]));
     } elsif ($rule[$i] eq 'I') {
       $fill = "    $and ";
       $text1 = UVmessage::get ("RULES_IFCLAUSE",
@@ -324,10 +322,6 @@ sub rule_print {
       $fill = "    $or ";
       $text1 = UVmessage::get ("RULES_IFCLAUSE",
                                (VOTE=>"$yes $or $no", GROUP=>$groups[$i]));
-    } elsif ($rule[$i] eq 'h') {
-      $fill = "    $or ";
-      $text1 = UVmessage::get ("RULES_IFCLAUSE",
-                               (VOTE=>"$abst $or $yes", GROUP=>$groups[$i]));
     } elsif ($rule[$i] eq 'i') {
       $fill = "    $or ";
       $text1 = UVmessage::get ("RULES_IFCLAUSE",
@@ -363,10 +357,6 @@ sub rule_print {
       $fill = "    $and ";
       $text1 = UVmessage::get ("RULES_THENCLAUSE",
                                (VOTE=>"$yes $or $no", GROUP=>$groups[$i]));
-    } elsif ($rule[$i] eq 'H') {
-      $fill = "    $and ";
-      $text1 = UVmessage::get ("RULES_THENCLAUSE",
-                               (VOTE=>"$abst $or $yes", GROUP=>$groups[$i]));
     } elsif ($rule[$i] eq 'I') {
       $fill = "    $and ";
       $text1 = UVmessage::get ("RULES_THENCLAUSE",
@@ -384,10 +374,6 @@ sub rule_print {
       $fill = "    $or ";
       $text1 = UVmessage::get ("RULES_THENCLAUSE",
                                (VOTE=>"$yes $or $no", GROUP=>$groups[$i]));
-    } elsif ($rule[$i] eq 'h') {
-      $fill = "    $or ";
-      $text1 = UVmessage::get ("RULES_THENCLAUSE",
-                               (VOTE=>"$abst $or $yes", GROUP=>$groups[$i]));
     } elsif ($rule[$i] eq 'i') {
       $fill = "    $or ";
       $text1 = UVmessage::get ("RULES_THENCLAUSE",
index 6b1dd5d..1ea665e 100644 (file)
@@ -154,7 +154,6 @@ CFV_SUBJECT = Wahlschein
 #
 COUNT_ERR_OPEN = Kann Ergebnisdatei ${FILE} nicht oeffnen!
 COUNT_ERR_RESULT = Fehler in ${FILE} Zeile ${LINE}
-COUNT_ERR_GROUPCOUNT = Bei Stimme von <${ADDR}>: ${NUM1} statt ${NUM2} Stimmen gefunden (${RESULTFILE} kontrollieren!)
 COUNT_DELETED = ${NUM} Stimme(n) geloescht.
 #
 # uvvote.pl
index cc3659b..9a065ac 100644 (file)
@@ -11,12 +11,13 @@ group-more            := value group | drop-words 40 | create-lines 40
 
 Ergebnisse [$votename-first]
 [@votename-more|           [$line]\n]
-([$numvalid] gueltige Stimmen)
+
+Es wurden [$numvalid] gueltige Stimmen abgegeben.
 
  Ja  Nein : 2/3? >=60? : ang.? : Gruppe
 ---- ---- : ---- ----- : ----- : ---------------------------------------
 [@count|[$yes] [$no] : [?cond1| Ja |Nein] [?cond2| Ja |Nein]  : [?result| Ja |Nein]  : [$group-first]
-[@group-more|          :            :       : [$line]\n]\n]
+[@group-more|          :            :       : [$line]|\n]\n]
 [?numabstain|[$numabstain-formatted] Enthaltungen]
 [?numinvalid|[$numinvalid] ungueltige Stimme(n)]
 
index 1be10d2..355aa4a 100644 (file)
@@ -14,8 +14,8 @@ Es gab [$yes] Ja-Stimmen und [$no] Nein-Stimmen[?numabstain| bei [$numabstain] E
 [?numinvalid|[$numinvalid] Stimme(n) wurden als ungueltig gewertet.]
 
 Es wurde [?cond1|die|keine] 2/3-Mehrheit erreicht und es gingen [?cond2|mehr|weniger] als
-60 Ja-Stimmen ein. Damit ist die [$votename-text-first]
-[@votename-text-more|[$line] |\n][?cond1|[?cond2|angenommen|abgelehnt]|abgelehnt].
+60 Ja-Stimmen ein. Damit ist die [$votename-first]
+[@votename-more|[$line]|\n] [?cond1|[?cond2|angenommen|abgelehnt]|abgelehnt].
 
 Gegen dieses Ergebnis kann innerhalb einer Woche nach seiner
 Veroeffentlichung Einspruch erhoben werden. Der Einspruch ist per
diff --git a/tmp/ergebnis-1191790177 b/tmp/ergebnis-1191790177
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/tmp/stimmen-1191790177 b/tmp/stimmen-1191790177
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/usevote.global.cfg b/usevote.global.cfg
new file mode 100644 (file)
index 0000000..210d21b
--- /dev/null
@@ -0,0 +1,165 @@
+########################################################################
+# Alles ab hier braucht i.d.R. nur einmal festgelegt werden.
+# Es ist moeglich, diese Einstellungen in eine globale Konfigurations-
+# datei auszulagern. Das Einbinden erfolgt mit der Zeile
+#
+# include /pfad/zur/globalen_datei
+#
+# Falls Einstellungen aus der globalen Konfigurationsdatei hier
+# fuer einzelne Abstimmungen ueberschrieben werden sollen, muessen
+# diese *hinter* dem Include-Befehl stehen!
+# (der letzte Wert ueberschreibt vorhergehende Definitionen)
+########################################################################
+
+# SMTP benutzen? (falls nicht, wird der weiter unten einstellbare
+# MTA direkt aufgerufen; unter Windows kann nur SMTP benutzt werden!)
+smtp = 0
+
+# SMTP-Server (falls smtp = 1)
+smtpserver = localhost
+smtpport = 25
+
+# SMTP-Authentifizierung benutzen? (RFC 2554)
+# Das entsprechende Perlmodul (Net::SMTP) kann derzeit nur AUTH PLAIN,
+# funktioniert also moeglicherweise nicht mit jedem Server
+#smtpauth = 0
+#smtpuser = 
+#smtppass = 
+
+# Falls als HELO etwas anderes als der Hostname verwendet werden soll:
+#smtphelo = greenmeadow.szaf.org
+
+# Falls ein anderer Fully Qualified Domain Name als der Hostname fuer
+# die Message-ID verwendet werden soll:
+fqdn = gvv.th-h.de
+
+# Verzeichnis fuer fertig verarbeitete Mails und Ergebnisse
+archivedir = done
+
+# Temporaeres Verzeichnis
+tmpdir = tmp
+
+# Pfad zu den Templates (kommaseparierte Liste mit Verzeichnissen)
+templatedir = /home/gvv/usevote/templates
+
+# Konvertierungsfunktionen für die Templates
+# (kommaseparierte Liste mit Funktions-Modulen)
+formats   = /home/gvv/usevote/UVformats.pm
+
+# Dateiname der Steuerungsdatei fuer den Mailversandt
+controlfile = tmp/ack.control
+
+# Dateiname des Shellscripts zum Versenden der Bestaetigungsmails (falls smtp=0)
+domailfile = tmp/domail
+
+# MTA-Aufruf zum Verschicken der Bestaetigungsmails
+# nuetzlich ist die Sendmail-Option -f zum Setzen des Absenders
+#mailcmd = sendmail -oi -oem -femail@adresse
+mailcmd = /usr/sbin/sendmail -oi -oem -fvote-bounces@gvv.th-h.de 
+
+# Weiteres Kommando, welches nach jeder Mail aufgerufen werden soll (falls smtp=0).
+# Sinnvoll ist ein "sleep x", wobei x bei langsamen Systemen hoeher
+# gewaehlt werden sollte, um die Belastung gering zu halten.
+sleepcmd = sleep 1
+
+# Shellbefehl zum Loeschen des Bildschirms
+# Unix: i.d.R. "clear"
+# Windows: "cls"
+# Falls das Betriebssystem bzw. die Shell keinen solchen Befehl zur Verfuegung
+# stellt, sollte ein Kommando verwendet werden, welches eine Trennlinie
+# oder aehnliches auf dem Bildschirm ausgibt, z.B. mit "echo"
+clearcmd = clear
+
+# Shellbefehl zum seitenweisen Darstellen von Mails auf dem Bildschirm
+# Empfohlene Einstellung: "less", da more Probleme mit der Umleitung von
+# STDERR in eine Datei Probleme hat. Unter Windows ist "less" nicht
+# vorinstallirt, kann man sich aber herunterladen und einfach in das
+# Windows-Verzeichnis kopieren (URL siehe README-Datei)
+pager = less
+
+# Datei mit diversen Meldungen und Textfragmenten (Resourcendatei)
+messagefile = /home/gvv/usevote/messages.cfg
+
+# Datei mit Wahlregeln
+rulefile = /home/gvv/usevote/usevote.rul
+
+# Datei mit verdaechtigen Mailadressen
+badaddrfile = /home/gvv/usevote/mailpatterns.cfg
+
+# Datei fuer Fehlermeldungen beim Programmlauf
+errorfile = errors.log
+
+# Lockdatei (Verhinderung von mehrfachen Programmstarts)
+lockfile = usevote.lock
+
+# Einleitungszeile fuer naechste Mail (RegExp)
+mailstart = "^From "
+
+# Trennlinien vor und nach dem Wahlschein
+begin_divider = Alles vor dieser Zeile bitte loeschen
+end_divider = Alles nach dieser Zeile bitte loeschen
+
+# Text fuer die Namens-Angabe im Wahlschein. Achtung, muss im
+# Wahlschein genauso stehen!
+nametext = Dein Realname, falls nicht im FROM-Header:
+
+# Text fuer Namens-Angabe in Bestaetigungsmails
+nametext2 = Waehlername:
+
+# Text fuer die Adress-Angabe im Wahlschein
+addresstext = Waehleradresse:
+
+# Text für die Angabe der Wahlscheinkennung (siehe Option "personal")
+ballotidtext = Wahlscheinkennung:
+
+# Text fuer Datenschutzklausel (siehe Option "bdsg"), erscheint als Abstimmungspunkt
+bdsgtext = Datenschutzklausel - Zustimmung: Ich bin mit der Verarbeitung meiner Daten wie oben beschrieben einverstanden
+
+# Datei mit Erklaerungstext fuer BDSG-Klausel
+bdsgfile = /home/gvv/usevote/bdsgtext.cfg
+
+# Rechter Rand fuer einige Bildschirmausgaben (Terminalbreite)
+rightmargin = 72
+
+# Regular Expression fuer Erkennung eines gueltigen Realnamens
+name_re = [-a-zA-ZäöüáàâéèêíìîóòôúùûÄÖÜÁÁÂÉÈÊÍÌÎÓÒÔÚÙÛß]{2,} +.*[a-zA-ZäöüáàâéèêíìîóòôúùûÄÖÜÁÁÂÉÈÊÍÌÎÓÒÔÚÙÛß]{2,}
+
+# RegExp fuer JA-Stimmen (case-insensitive)
+# Standardmaessig wird J, JA, FUER und DAFUER erkannt
+ja_stimme = (J\s*A|J|(D\s*A\s*)?F\s*U\s*E\s*R)
+
+# RegExp fuer NEIN-Stimmen (case-insensitive)
+# Standardmaessig wird N, NEIN, GEGEN und DAGEGEN erkannt
+nein_stimme = (N\s*E\s*I\s*N|N|(D\s*A\s*)?G\s*E\s*G\s*E\s*N)
+
+# RegExp fuer ENTHALTUNG (case-insensitive)
+enth_stimme = (E|E\s*N\s*T\s*H\s*A\s*L\s*T\s*U\s*N\s*G)
+
+# RegExp fuer ANNULLIERUNG (case-insensitive)
+# Achtung, sollte auch in den Templates im Bestaetigungstext angepasst werden
+ann_stimme = A\s*N\s*N\s*U\s*L\s*L\s*I\s*E\s*R\s*U\s*N\s*G
+
+# Template files (these files are in the template directory defined above)
+tpl_mailheader = "mailheader"            # generally used mail header
+tpl_bouncelist = "bouncelist"            # used by uvbounce.pl
+tpl_result_multi = "result-multi"        # used by uvcount.pl -r -m
+tpl_result_single = "result-single"      # used by uvcount.pl -r -o
+tpl_result_prop = "result-proportional"  # used by uvcount.pl -r (proportional = 1)
+tpl_votes_multi = "votes-multi"          # used by uvcount.pl -v (multiple groups)
+tpl_votes_single = "votes-single"        # used by uvcount.pl -v (single group only)
+tpl_voterlist = "voterlist"              # used by uvcount.pl -l (2nd CfV) 
+tpl_ballot = "ballot"                    # used by uvballot.pl (personal = 0)
+tpl_ballot_request = "ballot-request"    # used by uvballot.pl (personal = 1)
+tpl_ballot_personal = "ballot-personal"  # used by uvcfv.pl    (personal = 1)
+tpl_addr_reg = "address-not-registered"  # used by uvvote.pl   (personal = 1)
+tpl_no_ballotid = "no-ballotid"          # used by uvvote.pl   (personal = 1)
+tpl_wrong_ballotid = "wrong-ballotid"    # used by uvvote.pl   (personal = 1)
+tpl_bdsg_error = "bdsg-error"            # used by uvvote.pl   (bdsg = 1)
+tpl_ack_mail = "ack-mail"                # used by uvvote.pl   (voteack = 1)
+tpl_cancelled = "cancelled"              # used by uvvote.pl
+tpl_invalid_account = "invalid-account"  # used by uvvote.pl
+tpl_invalid_name = "invalid-name"        # used by uvvote.pl
+tpl_multiple_votes = "multiple-votes"    # used by uvvote.pl
+tpl_no_ballot = "no-ballot"              # used by uvvote.pl
+tpl_no_votes = "no-votes"                # used by uvvote.pl
+tpl_rule_violated = "rule-violated"      # used by uvvote.pl   (c.f. usevote.rul)
index 4d9a6c6..e8f4501 100644 (file)
 #   N  eine NEIN-Stimme
 #   E  eine Enthaltung
 #   S  eine JA- oder NEIN-Stimme
-#   H   eine Enthaltung oder JA-Stimme
 #   I   eine Enthaltung oder NEIN-Stimme
 #   .  egal (Ja, nein oder Enthaltung)
 #   j  eine oder mehrere der markierten Gruppen hat JA-Stimme
 #   n   ""   ""    ""     ""     ""       ""    ""  NEIN-Stimme
 #   e   ""   ""    ""     ""     ""       ""    ""  Enthaltung
 #   s   ""   ""    ""     ""     ""       ""    ""  Ja- oder Nein-Stimme
-#   h   ""   ""    ""     ""     ""       ""    ""  Enthaltung oder Ja-Stimme
 #   i   ""   ""    ""     ""     ""       ""    ""  Enthaltung oder Nein-Stimme
 #
 # Alles klar?  Jede Stimme wird mit den Symbolen verglichen, und wenn alle
diff --git a/usevote.tpl.cfg b/usevote.tpl.cfg
new file mode 100644 (file)
index 0000000..40dcbbe
--- /dev/null
@@ -0,0 +1,76 @@
+include /home/gvv/usevote/usevote.global.cfg
+
+########################################################################
+# Diese Einstellungen muessen fuer jede Abstimmung angepasst werden
+########################################################################
+
+# Name der Abstimmung
+votename = [INSERT_HERE]
+
+# Abstimmungsgegenstaende (beliebig viele groupX moeglich,
+# von 1 an durchzunummerieren)
+group1 = [INSERT_HERE]
+
+# Mailbox, in der die zu verarbeitenden Mails liegen (falls smtp=0)
+votefile = votes
+
+# Bei den folgenden Fragen bedeutet jeweils:
+# 0: nein
+# 1: ja
+
+# Persoenliche Wahlscheine generieren und Scheinkennung erzwingen?
+personal = 0
+
+# Verhaeltniswahl durchfuehren? (z.B. fuer Moderationsnachwahlen)
+proportional = 0
+
+# Formel fuer die Berechnung des Verhaeltnisses. Kann z.B.
+# $yes/$no oder $yes-$no sein, letzteres wird bei Moderationsnachwahlen
+# verwendet. Als Variablen sind $yes und $no zulaessig, es kann
+# beliebiger Perlcode angegeben werden, dessen Rueckgabewert im 
+# Result erscheinen soll. Ausserdem wird bei der Auswertung die
+# Bedingung aus "condition1" weiter unten in dieser Datei ausgewertet.
+prop_formula = $yes/$no
+
+# Vote-Account (diese Adresse muss unbedingt korrekt sein, wird
+# in das Reply-To uebernommen)
+voteaccount = [INSERT_HERE]@gvv.th-h.de
+
+# Absender fuer den From-Header der Bestaetigungsmails
+mailfrom = Thomas Hochstein <votetaker@gvv.th-h.de>
+
+# Absender fuer den Envelope (Return-Path) der Bestaetigungsmails
+# (bitte einfach nur die Adresse eintragen, ohne Klammern und Zusaetze)
+envelopefrom = [INSERT_HERE]@gvv.th-h.de
+
+# Nur bei persoenlichen Wahlscheinen: Datei mit Anforderungsmails
+# requestfile = anforderung
+
+# Datenschutzklausel generieren und auf deren Existenz pruefen?
+# Konfiguration siehe unten (bdsgtext)
+bdsg = 1
+
+# Reply-To beachten?
+# Nicht empfohlen, da jemand fuer andere Personen abstimmen und
+# die Bestaetigungen zu sich umlenken koennte.
+replyto = 0
+
+# Stimmen einzeln bestaetigen? Empfohlen!
+voteack = 1
+
+# Bcc-Adresse fuer alle Mails (Backup fuer alle Faelle)
+#
+mailcc = gvv@greenmeadow.szaf.org
+
+# Bedingungen fuer einen Erfolg der Abstimmung (genau zwei erforderlich).
+# Es muss sich jeweils um gueltigen Perl-Code handeln, Rueckgabewert
+# wird boolesch ausgewertet (true/false). Als Variablen sind $yes
+# und $no zugelassen. Falls oben "proportional = 1" gesetzt wurde,
+# wird nur Bedingung 1 ausgewertet und kann z.B. auf "$yes>$no" gesetzt
+# werden.
+# condition1 = $yes>=2*$no
+# condition2 = $yes>=60
+condition1 = $yes>=2*$no
+condition2 = $yes>=60
+
+mailcmd = /usr/sbin/sendmail -oi -oem -f[INSERT_HERE]@gvv.th-h.de
index 4085a7f..b57bd02 100644 (file)
@@ -1,8 +1,8 @@
 #!/usr/bin/perl -w
 
 ###############################################################################
-# UseVoteGer 4.09 Wahlscheingenerierung
-# (c) 2001-2005 Marc Langer <uv@marclanger.de>
+# UseVoteGer 4.07 Wahlscheingenerierung
+# (c) 2001-2004 Marc Langer <uv@marclanger.de>
 # 
 # This script package is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Public License as published by the
@@ -31,7 +31,7 @@ use UVtemplate;
 
 my %opt_ctl = ();
 
-print STDERR "\n$usevote_version Wahlscheingenerierung - (c) 2001-2005 Marc Langer\n\n";
+print STDERR "\n$usevote_version Wahlscheingenerierung - (c) 2001-2004 Marc Langer\n\n";
 
 # unknown parameters remain in @ARGV (for "help")
 Getopt::Long::Configure(qw(pass_through bundling));
index 1bf5139..b144c74 100644 (file)
@@ -1,8 +1,8 @@
 #!/usr/bin/perl -w
 
 ###############################################################################
-# UseVoteGer 4.09 Bounce-Verarbeitung
-# (c) 2001-2005 Marc Langer <uv@marclanger.de>
+# UseVoteGer 4.07 Bounce-Verarbeitung
+# (c) 2001-2004 Marc Langer <uv@marclanger.de>
 # 
 # This script package is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Public License as published by the
@@ -33,7 +33,7 @@ my %opt_ctl = ();
 my %bounces = ();
 my $pop3 = 0;
 
-print STDERR "\n$usevote_version Bounce-Verarbeitung - (c) 2001-2005 Marc Langer\n\n";
+print STDERR "\n$usevote_version Bounce-Verarbeitung - (c) 2001-2004 Marc Langer\n\n";
 
 # unknown parameters remain in @ARGV (for "help")
 Getopt::Long::Configure(qw(pass_through bundling));
index 74174c6..e5a9691 100644 (file)
--- a/uvcfv.pl
+++ b/uvcfv.pl
@@ -1,8 +1,8 @@
 #!/usr/bin/perl -w
 
 ###############################################################################
-# UseVoteGer 4.09 Personalisierte Wahlscheine
-# (c) 2001-2005 Marc Langer <uv@marclanger.de>
+# UseVoteGer 4.07 Personalisierte Wahlscheine
+# (c) 2001-2004 Marc Langer <uv@marclanger.de>
 # 
 # This script package is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Public License as published by the
@@ -35,7 +35,7 @@ use UVtemplate;
 
 my %opt_ctl = ();
 
-print "\n$usevote_version Personalisierte Wahlscheine - (c) 2001-2005 Marc Langer\n\n";
+print "\n$usevote_version Personalisierte Wahlscheine - (c) 2001-2004 Marc Langer\n\n";
 
 # unknown parameters remain in @ARGV (for "help")
 Getopt::Long::Configure(qw(pass_through bundling));
index a86ef43..5dd26ff 100644 (file)
--- a/uvvote.pl
+++ b/uvvote.pl
@@ -1,8 +1,8 @@
 #!/usr/bin/perl -w
 
 ###############################################################################
-# UseVoteGer 4.09 Wahldurchfuehrung
-# (c) 2001-2005 Marc Langer <uv@marclanger.de>
+# UseVoteGer 4.07 Wahldurchfuehrung
+# (c) 2001-2004 Marc Langer <uv@marclanger.de>
 # 
 # This script package is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Public License as published by the
@@ -37,7 +37,7 @@ use UVtemplate;
 my $clean = 0;
 my %opt_ctl = ();
 
-print "\n$usevote_version Wahldurchfuehrung - (c) 2001-2005 Marc Langer\n\n";
+print "\n$usevote_version Wahldurchfuehrung - (c) 2001-2004 Marc Langer\n\n";
 
 # unknown parameters remain in @ARGV (for "help")
 Getopt::Long::Configure(qw(pass_through bundling));
@@ -123,7 +123,7 @@ if ($clean) {
   my $ext = time;
 
   opendir (TMP, $config{tmpdir});
-  my @tmpfiles = readdir (DIR);
+  my @tmpfiles = readdir (TMP);
   closedir (TMP);
   opendir (FERTIG, $config{archivedir});
   my @fertigfiles = readdir (FERTIG);
@@ -216,7 +216,7 @@ sub process_vote {
   my @header = split(/\n/, $entity->stringify_header);
   my $head = $entity->head;
   my $msgid = $head->get('Message-ID');
-  chomp($msgid) if ($msgid);
+  chomp($msgid) if defined($msgid);
 
   my @votes = ();              # the votes
   my @set;                     # interactively changed fields
This page took 0.02247 seconds and 4 git commands to generate.