70 lines
1,003 B
Bash
Executable file
70 lines
1,003 B
Bash
Executable file
#!/bin/rc
|
|
argv0=$0
|
|
fn usage {
|
|
echo usage: $argv0 [ -o file ] [ -p body ] [ -r header ] [ -m method ] [ -b baseurl ] url >[2=1]
|
|
exit usage
|
|
}
|
|
s=0
|
|
o=()
|
|
p=()
|
|
r=()
|
|
m=()
|
|
b=()
|
|
while(~ $1 -*){
|
|
switch($1){
|
|
case -o
|
|
o=$2
|
|
shift
|
|
case -p
|
|
p=$2
|
|
shift
|
|
case -r
|
|
r=($r $2)
|
|
shift
|
|
case -m
|
|
m=$2
|
|
shift
|
|
case -b
|
|
b=$2
|
|
shift
|
|
case *
|
|
usage
|
|
}
|
|
shift
|
|
}
|
|
if(! ~ $#* 1)
|
|
usage
|
|
if(! ~ $#o 0){
|
|
if(! ~ $#o 1)
|
|
usage
|
|
if(test -s $o)
|
|
s=`{ls -l $o | awk '{print $6}'}
|
|
}
|
|
if(! ~ $s 0)
|
|
r=($r 'Range: bytes='^$s^'-')
|
|
<>/mnt/web/clone {
|
|
d=/mnt/web/^`{sed 1q}
|
|
if(~ $#b 1)
|
|
echo -n baseurl $b >[1=0]
|
|
echo -n url $1 >[1=0]
|
|
for(i in $r)
|
|
echo -n headers $i >[1=0]
|
|
if(~ $#m 1)
|
|
echo -n request $m >[1=0]
|
|
if(~ $#p 1)
|
|
cat <$p >$d/postbody
|
|
<$d/body {
|
|
if(~ $#o 1){
|
|
l=`{cat $d/contentlength >[2]/dev/null}
|
|
x=`{awk 'BEGIN{FS=" |-"}/^bytes ([0-9]+)\-/{print $2}' \
|
|
$d/contentrange >[2]/dev/null}
|
|
if(~ $s $l && ~ $#x 0)
|
|
exit
|
|
if(~ $s $x)
|
|
exec cat >>$o
|
|
exec cat >$o
|
|
}
|
|
exec cat
|
|
}
|
|
}
|