diff options
author | cinap_lenrek <cinap_lenrek@rei2.9hal> | 2012-01-11 16:17:54 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@rei2.9hal> | 2012-01-11 16:17:54 +0100 |
commit | 75e1ef0ab60acb6bccc54254b82770aec5786ead (patch) | |
tree | d273fc755a20e67801aa0a13df30ab75b2883419 /rc | |
parent | 62fb4f97177d8e76f1fd49bb9d0073007b7c9bcc (diff) | |
download | plan9front-75e1ef0ab60acb6bccc54254b82770aec5786ead.tar.xz |
new webfs, rc based hget
Diffstat (limited to 'rc')
-rwxr-xr-x | rc/bin/hget | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/rc/bin/hget b/rc/bin/hget new file mode 100755 index 000000000..5c0b1e19b --- /dev/null +++ b/rc/bin/hget @@ -0,0 +1,69 @@ +#!/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 + } +} |