]> git.lizzy.rs Git - plan9front.git/blob - rc/bin/diskparts
g: search .awk and .rc files
[plan9front.git] / rc / bin / diskparts
1 #!/bin/rc
2 rfork e
3
4 # note that really big disks (e.g., aoe devices) may have no mbr
5 # partition table because the mbr partition table can't cope with large
6 # block numbers, so we may have to examine the data file with prep if
7 # there's no plan9 file.  beware that `disk/prep -p data' on a disk with
8 # no plan 9 partition table will delete all extant partitions.
9 fn setup {
10         if(test -f $1/data && test -f $1/ctl)
11                 { disk/fdisk -p $1/data |
12                         grep -v '^delpart ' >$1/ctl } >[2]/dev/null
13         if(test -f $1/plan9)
14                 parts=($1/plan9*)
15         if not
16                 parts=($1/data)
17         for(part in $parts)
18                 if(test -f $part)
19                          { disk/prep -p $part |
20                                 grep -v '^delpart ' >$1/ctl } >[2]/dev/null
21 }
22
23 if(~ $#* 0){
24         # set up any disk partitions
25         if (! test -e /dev/sdctl)
26                 bind -b '#S' /dev
27         for(disk in /dev/sd*) {
28                 setup $disk
29         }
30         sysname=`{cat /dev/sysname}
31         # set up any fs(3) partitions
32         if (! test -e /dev/fs/ctl && test -e '#k/fs')
33                 bind -b '#k' /dev
34         if (~ $#sysname 1 && ! ~ $sysname '' &&
35           test -r /cfg/$sysname/fsconfig && test -w /dev/fs/ctl)
36                 awk '{print $0; fflush}' /cfg/$sysname/fsconfig >/dev/fs/ctl
37 }
38 if not {
39         for(disk) {
40                 setup $disk
41         }
42 }