X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~yarrgweb/git?a=blobdiff_plain;f=pctb%2Fdictionary-update-receiver;h=25cdf0a71d249ce458c976c43aa35250ca704400;hb=9c4e6ae34ea06c776ebbf5410f7bc1ce78edad2f;hp=6641dddf9de1f51c504c7fa1f1a3fd268704909c;hpb=5bcf61f52358ce7a1ceea3106c4c8a2d0a6dbfcd;p=ypp-sc-tools.main.git diff --git a/pctb/dictionary-update-receiver b/pctb/dictionary-update-receiver index 6641ddd..25cdf0a 100755 --- a/pctb/dictionary-update-receiver +++ b/pctb/dictionary-update-receiver @@ -19,6 +19,8 @@ use CGI qw/:standard -private_tempfiles/; use IO::Pipe; use IO::Handle; +my $aadepth=2; + #---------- pixmaps ---------- sub parseentryin__pixmap ($) { @@ -78,9 +80,12 @@ print STDERR ">@d<\n"; my $w= @d; - my $pgm= "P2\n$h $w\n7\n"; + my $maxval= (1<<$aadepth)-1; + die 'cannot do [^0...$maxval]!' if $maxval>9; + + my $pgm= "P2\n$h $w\n$maxval\n"; map { # x, left to right - m/[^0-7]/ and die "$_ ?"; + m/[^0-$maxval]/ and die "$_ ?"; my $l= $_; $l =~ s/./ $&/g; $pgm .= "$l\n"; @@ -156,6 +161,16 @@ sub pipeval ($@) { #---------- determine properties of the submission ---------- +my $version= param('version'); +my $spec_aadepth= param('depth'); +if ($version ne '3' || $spec_aadepth ne $aadepth) { + print header('text/plain', + "403 YPP SC PCTB client is out of date". + " ($version, $spec_aadepth)"); + print "\nYour YPP SC client is out of date.\n"; + exit 0; +} + my $dict= param('dict'); my $entry_in= param('entry'); defined $entry_in or die Dump()." ?"; @@ -193,6 +208,18 @@ $dict= $&; my ($ctx,$def,$image,$key,$val, $width,$icon,$whole,$entry)= &{"parseentryin__$kind"}($entry_in, @xa); +my $du=$ENV{'YPPSC_DICTUPDATES'}; +chdir $du or die "$du $!" + if defined $du; + +my $instance= $du; +$instance =~ s,ypp-sc-tools,,ig; +$instance =~ s,ypp,,ig; +$instance =~ s,pctb,,ig; +$instance =~ s,/\W+/,/,g; +$instance =~ s,/+$,,; +$instance =~ s,^.*/,,; + #---------- compute the email to send ---------- my $whoami= `whoami`; $? and die $?; @@ -200,7 +227,7 @@ chomp $whoami; my $email= < $fn_t" or die "$fn_t $!"; (stat F) or die $!; my $fn_i= sprintf "_update.$$-%016x.rdy", (stat _)[1]; -print F "ypp-sc-tools dictionary update v2\n"; +print F "ypp-sc-tools dictionary update v3 depth=$aadepth\n"; foreach my $v ($pirate,$caller,$dict,$ctx,$def,$image,$key,$val) { printf F "%d\n", length($v) or die $!;