Blame


1 68beda21 2013-09-26 0intro #!/usr/local/plan9/bin/rc
2 68beda21 2013-09-26 0intro
3 68beda21 2013-09-26 0intro # the fossil configuration is stored at the 127kB offset in the disk
4 68beda21 2013-09-26 0intro # and extends for at most 1 kB.
5 68beda21 2013-09-26 0intro
6 68beda21 2013-09-26 0intro rfork e
7 68beda21 2013-09-26 0intro fn usage {
8 68beda21 2013-09-26 0intro echo 'usage: fossil/conf [-w] /dev/sdC0/fossil [config]' >[1=2]
9 68beda21 2013-09-26 0intro exit usage
10 68beda21 2013-09-26 0intro }
11 68beda21 2013-09-26 0intro
12 68beda21 2013-09-26 0intro wflag=no
13 68beda21 2013-09-26 0intro while(! ~ $#* 0 && ~ $1 -* && ! ~ $1 --){
14 68beda21 2013-09-26 0intro switch($1){
15 68beda21 2013-09-26 0intro case -w
16 68beda21 2013-09-26 0intro wflag=yes
17 68beda21 2013-09-26 0intro case *
18 68beda21 2013-09-26 0intro usage
19 68beda21 2013-09-26 0intro }
20 68beda21 2013-09-26 0intro shift
21 68beda21 2013-09-26 0intro }
22 68beda21 2013-09-26 0intro if(~ $1 --)
23 68beda21 2013-09-26 0intro shift
24 68beda21 2013-09-26 0intro
25 68beda21 2013-09-26 0intro if(~ $wflag no && ! ~ $#* 1)
26 68beda21 2013-09-26 0intro usage
27 68beda21 2013-09-26 0intro if(~ $wflag yes && ! ~ $#* 1 2)
28 68beda21 2013-09-26 0intro usage
29 68beda21 2013-09-26 0intro
30 68beda21 2013-09-26 0intro disk=$1
31 68beda21 2013-09-26 0intro if(! 9 test -f $disk){
32 68beda21 2013-09-26 0intro echo 'unknown disk' $1 >[1=2]
33 68beda21 2013-09-26 0intro exit nodisk
34 68beda21 2013-09-26 0intro }
35 68beda21 2013-09-26 0intro
36 68beda21 2013-09-26 0intro fn sigexit {
37 68beda21 2013-09-26 0intro rm -f /tmp/fossilconf.$pid
38 68beda21 2013-09-26 0intro }
39 68beda21 2013-09-26 0intro
40 68beda21 2013-09-26 0intro if(~ $wflag yes){
41 68beda21 2013-09-26 0intro {echo fossil config; cat $2} >/tmp/fossilconf.$pid || exit oops
42 68beda21 2013-09-26 0intro if(! 9 test -s /tmp/fossilconf.$pid){
43 68beda21 2013-09-26 0intro echo 'config is empty; will not install' >[1=2]
44 68beda21 2013-09-26 0intro exit emptyconfig
45 68beda21 2013-09-26 0intro }
46 68beda21 2013-09-26 0intro if(9 test `{9 ls -l /tmp/fossilconf.$pid | awk '{print $6}'} -gt 1024){
47 68beda21 2013-09-26 0intro echo 'config is too long; max is a little less than a kilobyte' >[1=2]
48 68beda21 2013-09-26 0intro exit toolong
49 68beda21 2013-09-26 0intro }
50 68beda21 2013-09-26 0intro 9 dd -quiet 1 -bs 1024 -count 1 -if $disk -iseek 127 \
51 68beda21 2013-09-26 0intro >/tmp/_fossilconf.old || exit backup
52 68beda21 2013-09-26 0intro 9 dd -quiet 1 -count 2 </dev/zero >>/tmp/fossilconf.$pid || exit dd
53 68beda21 2013-09-26 0intro 9 dd -quiet 1 -bs 1024 -count 1 -if /tmp/fossilconf.$pid \
54 68beda21 2013-09-26 0intro -trunc 0 -of $disk -oseek 127 || exit dd2
55 68beda21 2013-09-26 0intro exit 0
56 68beda21 2013-09-26 0intro }
57 68beda21 2013-09-26 0intro
58 68beda21 2013-09-26 0intro 9 dd -quiet 1 -bs 1024 -count 1 -if $disk -iseek 127 |
59 68beda21 2013-09-26 0intro zerotrunc >/tmp/fossilconf.$pid
60 68beda21 2013-09-26 0intro
61 68beda21 2013-09-26 0intro if(! cmp -s <{sed 1q /tmp/fossilconf.$pid} <{echo fossil config}){
62 68beda21 2013-09-26 0intro echo 'config has bad header' >[1=2]
63 68beda21 2013-09-26 0intro exit badconfig
64 68beda21 2013-09-26 0intro }
65 68beda21 2013-09-26 0intro
66 68beda21 2013-09-26 0intro sed 1d /tmp/fossilconf.$pid
67 68beda21 2013-09-26 0intro exit 0
68 68beda21 2013-09-26 0intro