chiark / gitweb /
WIP dictionary updates - wip convert to ssh-remote
[ypp-sc-tools.main.git] / pctb / dictionary-update-receiver
index 9132c4e..727b94b 100755 (executable)
@@ -30,7 +30,7 @@ use IO::Handle;
 sub parseentryin__pixmap ($) {
     my ($entry_in) = @_;
     $entry_in =~
-       m/^(\w+ \- \w[-+'"#! 0-9a-z]*)\nP3\n([1-9]\d{1,3}) ([1-9]\d{1,3})\n255\n/s or die; # ']);
+       m/^(\w+ \- \w[-+\'\"\#! 0-9a-z]*)\nP3\n([1-9]\d{1,3}) ([1-9]\d{1,3})\n255\n/s or die;
     my ($def,$w,$h)= ($1, $2+0, $3+0);
     my @d= grep { m/./ } split /\s+/, $';
     @d == $w*$h*3 or die "$d[0]|$d[1]|...|$d[$#d-1]|$d[$#d] ?";
@@ -157,8 +157,9 @@ my $path= path_info();
 my $entry_in= param('entry');
 defined $entry_in or die;
 
-my $owner= `whoami`; $? and die $?;
-chomp $owner;
+my $du=$ENV{'YPPSC_DICTUPDATES'};
+chdir $du or die "$du $!"
+    if defined $du;
 
 my $kind;
 
@@ -170,6 +171,17 @@ if ($path =~ /(pixmap|char)/) {
 
 my ($ctx,$def,$entry,$icon,$width,$whole)= &{"parseentryin__$kind"}($entry_in);
 
+my $fn_t= "_update.$$-xxxxxxxxxxxxxxxx.tmp";
+open F, "> $fn_t" or die "$fn_t $!";
+(stat F) or die $!;
+my $fn_i= sprintf "_update.$$-%016x.rdy", (stat _)[1];
+
+print F $whole or die $!;
+close F or die $!;
+rename $fn_t, $fn_i or die "$fn_t $fn_i $!";
+
+__END__
+
 $icon =~ s/^/ /mg;
 
 my $email= <<END