changelog shortlog tags branches changeset files revisions annotate raw help

Mercurial > hg > plan9front / rc/bin/hget

changeset 7243: 34f64dcbbc25
parent: 4a780de821ac
author: cinap_lenrek@felloff.net
date: Fri, 17 May 2019 18:14:10 +0200
permissions: -rwxr-xr-x
description: 7l: don't hardcode 4k pagesize, use INITRND
1 #!/bin/rc
2 rfork e
3 argv0=$0
4 fn usage {
5  echo usage: $argv0 '[ -l | -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 l=()
16 while(~ $1 -*){
17  switch($1){
18  case -o
19  o=$2
20  shift
21  case -p
22  p=$2
23  shift
24  case -P
25  P=1
26  case -r
27  r=($r $2)
28  shift
29  case -l
30  l=1
31  case -m
32  m=$2
33  shift
34  case -b
35  b=$2
36  shift
37  case *
38  usage
39  }
40  shift
41 }
42 if(! ~ $#* 1)
43  usage
44 if(! ~ $#o 0){
45  if(! ~ $#o 1)
46  usage
47  if(test -s $o)
48  s=`{ls -l $o | awk '{print $6}'}
49 }
50 <[3=0] <>/mnt/web/clone {
51  d=/mnt/web/^`{sed 1q}
52  if(~ $#b 1)
53  echo -n baseurl $b >[1=0]
54  echo -n url $1 >[1=0]
55  if(! ~ $s 0 && ~ $#p 0 && ~ $#P 0 && ~ $#m 0){
56  for(i in $r)
57  echo -n headers $i >[1=0]
58  echo -n request HEAD >[1=0]
59  <$d/body {
60  if(~ $s `{cat $d/contentlength >[2]/dev/null})
61  exit ''
62  }
63  if(~ $#b 1)
64  echo -n baseurl $b >[1=0]
65  echo -n url $1 >[1=0]
66  r=($r 'Range: bytes='^$s^'-')
67  }
68  for(i in $r)
69  echo -n headers $i >[1=0]
70  if(~ $#m 1)
71  echo -n request $m >[1=0]
72  if(! ~ $#p 0 || ! ~ $#P 0){
73  >$d/postbody {
74  if(! ~ $#p 0)
75  echo -n $"p
76  if(! ~ $#P 0)
77  cat <[0=3]
78  }
79  }
80  <$d/body {
81  if(~ $#l 1){
82  echo `{cat $d/parsed/url}
83  exit
84  }
85  if(~ $#o 1){
86  l=`{cat $d/contentlength >[2]/dev/null}
87  x=`{awk 'BEGIN{FS=" |-"}/^bytes ([0-9]+)\-/{print $2}' \
88  $d/contentrange >[2]/dev/null}
89  if(~ $s $l && ~ $#x 0)
90  exit
91  if(~ $s $x)
92  exec cat >>$o
93  exec cat >$o
94  }
95  c=`{cat $d/contentencoding >[2]/dev/null}
96  switch($c){
97  case *gzip*
98  ~ `{cat $d/contenttype >[2]/dev/null} *gzip* || exec gunzip
99  case *bzip2*
100  ~ `{cat $d/contenttype >[2]/dev/null} *bzip2* || exec bunzip2
101  case *compress*
102  ~ `{cat $d/contenttype >[2]/dev/null} *compress* || exec uncompress
103  }
104  exec cat
105  }
106 }