X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=lib%2FBEX%2FJob.pm;h=b0add1b3fe1f37bc1789af28f5e8d74f6a7a563e;hb=e765cc1ed217c063766f0f3abf0112edb432df3d;hp=7bd7a8f80277ffbb9aec78e18689334483b4e894;hpb=fe7af6273e6613e442400ed6b9900e983fbe04aa;p=bex.git diff --git a/lib/BEX/Job.pm b/lib/BEX/Job.pm index 7bd7a8f..b0add1b 100644 --- a/lib/BEX/Job.pm +++ b/lib/BEX/Job.pm @@ -10,17 +10,23 @@ use POSIX (); our $job_cnt = 0; +sub check_id($) { + my ($id) = @_; + return $id =~ /^([0-9A-Za-z-]+)$/; +} + sub new($;$) { my ($class, $id) = @_; my $job = { }; bless $job; if (defined $id) { + check_id($id) or die "Invalid job ID"; $job->{'ID'} = $id; } else { $job_cnt++; $job->{'ID'} = POSIX::strftime("%Y%m%d-%H%M%S-$$-$job_cnt", localtime); } - $job->{'Subject'} = '(no subject)'; + $job->{'Subject'} = ''; return $job; } @@ -40,9 +46,9 @@ sub new_from_file($$;$) { $job->{'body'} = join("", @cmds); } close T; - $job->{'Subject'} //= '?'; + $job->{'Subject'} //= ''; $job->{'ID'} or die "Cannot load $file: Missing ID"; - $job->{'ID'} !~ /\.[a-z]+$/ or die "Cannot load $file: Invalid ID syntax"; + check_id($job->{'ID'}) or die "Cannot load $file: Invalid ID syntax"; return bless $job; }