]> git.lizzy.rs Git - plan9front.git/blob - rc/bin/hget
ca1f183b64d68eb63b85a3fa6a3ff8924561d3b3
[plan9front.git] / rc / bin / hget
1 #!/bin/rc
2 rfork e
3 argv0=$0
4 fn usage {
5         echo 'usage: $argv0 [ -o file ] [ -p body | -P ] [ -r header ] [ -m method ] [ -b baseurl ] url' >[1=2]
6         exit usage
7 }
8 s=0
9 o=()
10 p=()
11 P=()
12 r=()
13 m=()
14 b=()
15 while(~ $1 -*){
16         switch($1){
17         case -o
18                 o=$2
19                 shift
20         case -p
21                 p=$2
22                 shift
23         case -P
24                 P=1
25         case -r
26                 r=($r $2)
27                 shift
28         case -m
29                 m=$2
30                 shift
31         case -b
32                 b=$2
33                 shift
34         case *
35                 usage
36         }
37         shift
38 }
39 if(! ~ $#* 1)
40         usage
41 if(! ~ $#o 0){
42         if(! ~ $#o 1)
43                 usage
44         if(test -s $o)
45                 s=`{ls -l $o | awk '{print $6}'}
46 }
47 if(! ~ $s 0)
48         r=($r 'Range: bytes='^$s^'-')
49 <[3=0] <>/mnt/web/clone {
50         d=/mnt/web/^`{sed 1q}
51         if(~ $#b 1)
52                 echo -n baseurl $b >[1=0]
53         echo -n url $1 >[1=0]
54         for(i in $r)
55                 echo -n headers $i >[1=0]
56         if(~ $#m 1)
57                 echo -n request $m >[1=0]
58         if(! ~ $#p 0 || ! ~ $#P 0){
59                  >$d/postbody {
60                         if(! ~ $#p 0)
61                                 echo -n $"p
62                         if(! ~ $#P 0)
63                                 cat <[0=3]
64                 }
65         }
66         <$d/body {
67                 if(~ $#o 1){
68                         l=`{cat $d/contentlength >[2]/dev/null}
69                         x=`{awk 'BEGIN{FS=" |-"}/^bytes ([0-9]+)\-/{print $2}' \
70                                 $d/contentrange >[2]/dev/null}
71                         if(~ $s $l && ~ $#x 0)
72                                 exit
73                         if(~ $s $x)
74                                 exec cat >>$o
75                         exec cat >$o
76                 }
77                 exec cat
78         }
79 }