X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=submit%2FMO%2FSubmit.pm;h=ba55961f7eff6dd3c56253541bf787e890196948;hb=6cba59728737842b32077102280642d269b78d90;hp=bae8b5f34ab1150a702360a66ff1ed0324794564;hpb=fc6c3a5af5a07a8d6f658d66fd74746ae186aa11;p=moe.git diff --git a/submit/MO/Submit.pm b/submit/MO/Submit.pm index bae8b5f..ba55961 100644 --- a/submit/MO/Submit.pm +++ b/submit/MO/Submit.pm @@ -17,15 +17,15 @@ sub new($) { my $mo = "$home/.mo"; my $root = $ENV{"MO_ROOT"} or die "Environment variable MO_ROOT not set\n"; my $self = { - "Contest" => "CPSPC 2007", - "Server" => "kamzice.ms.mff.cuni.cz:8888", + "Contest" => "CEOI 2007", + "Server" => "ceoi-gamma:8888", "Key" => "$mo/key.pem", # Keys and certificates "Cert" => "$mo/cert.pem", "CACert" => "$mo/ca-cert.pem", "Trace" => defined $ENV{"MO_SUBMIT_TRACE"}, - "Checks" => 1, - "AllowOverride" => 1, -# "History" => "$home/.history", # Keep submission history in this directory + "Checks" => 1, # Run `check' before submitting + "AllowOverride" => 1, # Allow overriding a failed check + "History" => "$home/.history", # Keep submission history in this directory "RefreshTimer" => 60000, # How often GUI sends STATUS commands [ms] "root" => $root, "user" => $user, @@ -126,7 +126,7 @@ sub connect($) { sub request($$) { my ($self, $obj) = @_; my $sk = $self->{"sk"}; - ## $SIG{'PIPE'} = 'ignore'; + local $SIG{'PIPE'} = 'ignore'; $obj->write($sk); print $sk "\n"; $sk->flush(); @@ -152,6 +152,7 @@ sub reply($) { sub send_file($$$) { my ($self, $fh, $size) = @_; my $sk = $self->{"sk"}; + local $SIG{'PIPE'} = 'ignore'; while ($size) { my $l = ($size < 4096 ? $size : 4096); my $buf = ""; @@ -169,11 +170,17 @@ sub send_file($$$) { return $self->reply; } -sub local_submit($$$$$) { +sub write_history($$$$$) { my ($self, $task, $part, $ext, $filename) = @_; my $hist = $self->{"History"}; -d $hist or mkdir $hist or return "Unable to create $hist: $!"; - ### FIXME: Unfinished + my $now = POSIX::strftime("%H:%M:%S", localtime(time)); + my $maybe_part = ($part eq $task) ? "" : ":$part"; + my $name = "$hist/$now-$task$maybe_part.$ext"; + $self->log("Backing up to $name"); + `cp "$filename" "$name"`; + return "Unable to back up $filename as $name" if $?; + return undef; } 1;