summaryrefslogtreecommitdiff
path: root/rc
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@rei2.9hal>2012-01-11 16:17:54 +0100
committercinap_lenrek <cinap_lenrek@rei2.9hal>2012-01-11 16:17:54 +0100
commit75e1ef0ab60acb6bccc54254b82770aec5786ead (patch)
treed273fc755a20e67801aa0a13df30ab75b2883419 /rc
parent62fb4f97177d8e76f1fd49bb9d0073007b7c9bcc (diff)
downloadplan9front-75e1ef0ab60acb6bccc54254b82770aec5786ead.tar.xz
new webfs, rc based hget
Diffstat (limited to 'rc')
-rwxr-xr-xrc/bin/hget69
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
+ }
+}