]> mj.ucw.cz Git - bex.git/blobdiff - lib/BEX/Job.pm
Updates of job status are atomic
[bex.git] / lib / BEX / Job.pm
index 7bd7a8f80277ffbb9aec78e18689334483b4e894..b0add1b3fe1f37bc1789af28f5e8d74f6a7a563e 100644 (file)
@@ -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;
 }