annotate mpsplit.pl @ 1028:6e24f1ecf13e draft

Workaround for GNU system
author HIROSE Yuuji <yuuji@gentei.org>
date Fri, 22 Dec 2023 20:01:32 +0900
parents 1ba114ebcf2c
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11
3565d93c2fb1 add mpsplit.pl
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
1 #!/usr/bin/env perl
3565d93c2fb1 add mpsplit.pl
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
2 $sep = "--" . $ARGV[0];
3565d93c2fb1 add mpsplit.pl
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
3 $dir = ($ARGV[1] || "tmp");
12
262bbdea72e2 Clear taint flag
HIROSE Yuuji <yuuji@gentei.org>
parents: 11
diff changeset
4 if ($dir =~ /^([^<>\;\&]*)$/) {
262bbdea72e2 Clear taint flag
HIROSE Yuuji <yuuji@gentei.org>
parents: 11
diff changeset
5 $dir = $1;
262bbdea72e2 Clear taint flag
HIROSE Yuuji <yuuji@gentei.org>
parents: 11
diff changeset
6 }
11
3565d93c2fb1 add mpsplit.pl
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
7
3565d93c2fb1 add mpsplit.pl
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
8 #print "sep=".$sep, "dir=$dir\n";
3565d93c2fb1 add mpsplit.pl
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
9 #binmode STDIN;
3565d93c2fb1 add mpsplit.pl
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
10 $/ = undef;
3565d93c2fb1 add mpsplit.pl
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
11 $stream = (<STDIN>);
3565d93c2fb1 add mpsplit.pl
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
12 $n=0;
3565d93c2fb1 add mpsplit.pl
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
13 @slices = split($sep, $stream);
3565d93c2fb1 add mpsplit.pl
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
14 shift(@slices);
3565d93c2fb1 add mpsplit.pl
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
15 pop(@slices);
3565d93c2fb1 add mpsplit.pl
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
16 foreach $item (@slices) {
3565d93c2fb1 add mpsplit.pl
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
17 $item =~ s/^\n//;
3565d93c2fb1 add mpsplit.pl
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
18 ($header = $item) =~ s/\r\n\r\n.*//s;
3565d93c2fb1 add mpsplit.pl
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
19 ($body = $item) =~ s/.*?\r\n\r\n//s;
3565d93c2fb1 add mpsplit.pl
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
20 $body =~ s/\r\n$//;
3565d93c2fb1 add mpsplit.pl
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
21 #print "h=[$header]\n";
3565d93c2fb1 add mpsplit.pl
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
22 #print "b=[$body]\n";
3565d93c2fb1 add mpsplit.pl
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
23 unless ($header =~ /\bname=([\"']?)(.*?)\1/) {
3565d93c2fb1 add mpsplit.pl
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
24 next;
3565d93c2fb1 add mpsplit.pl
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
25 }
3565d93c2fb1 add mpsplit.pl
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
26 $name = $2;
3565d93c2fb1 add mpsplit.pl
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
27 #print "name=$name\n";
3565d93c2fb1 add mpsplit.pl
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
28 if ($header =~ /filename=(['\"]?)(.*?)\1/ && $2 gt "") {
12
262bbdea72e2 Clear taint flag
HIROSE Yuuji <yuuji@gentei.org>
parents: 11
diff changeset
29 $fn=$2;
262bbdea72e2 Clear taint flag
HIROSE Yuuji <yuuji@gentei.org>
parents: 11
diff changeset
30 if ($fn =~ /^([^\/]*)$/) {
262bbdea72e2 Clear taint flag
HIROSE Yuuji <yuuji@gentei.org>
parents: 11
diff changeset
31 $fn = $1;
262bbdea72e2 Clear taint flag
HIROSE Yuuji <yuuji@gentei.org>
parents: 11
diff changeset
32 }
748
1ba114ebcf2c Filename regularization
HIROSE Yuuji <yuuji@gentei.org>
parents: 716
diff changeset
33 $fn =~ s/[ <>&\#'\"\&|*?]/_/g;
716
07863b13e3f9 TEST: Extract basename of filename= argument of CGI params.
HIROSE Yuuji <yuuji@gentei.org>
parents: 660
diff changeset
34 $fn =~ s,.*[/\\],,;
11
3565d93c2fb1 add mpsplit.pl
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
35 open(OUT, ">$dir/$fn");
3565d93c2fb1 add mpsplit.pl
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
36 print OUT $body;
3565d93c2fb1 add mpsplit.pl
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
37 close(OUT);
3565d93c2fb1 add mpsplit.pl
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
38 printf("%s:filename=%s\n", $name, unpack("H*", $fn));
3565d93c2fb1 add mpsplit.pl
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
39 } else {
3565d93c2fb1 add mpsplit.pl
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
40 printf("%s=%s\n", $name, unpack("H*", $body));
3565d93c2fb1 add mpsplit.pl
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
41 }
3565d93c2fb1 add mpsplit.pl
HIROSE Yuuji <yuuji@gentei.org>
parents:
diff changeset
42 }

yatex.org