]> git.lizzy.rs Git - plan9front.git/blob - rc/bin/fstype
change listener from ip/imap4d to upas/imap4d
[plan9front.git] / rc / bin / fstype
1 #!/bin/rc
2 rfork e
3 m=`{dd -if $1 -bs 2048 -skip 16 >[2]/dev/null | xd -c | sed 1q | \
4         sed 's/.........(....................).*/\1/; s/ //g'}
5 if(~ $"m 01CD00101){
6         echo 9660
7         exit
8 }
9 fn fat {
10         m=`{dd -if $1 -bs 1 -count 3 -skip $2 >[2]/dev/null}
11         ~ $"m FAT
12 }
13 if(fat $1 54 || fat $1 82){
14         echo dos
15         exit
16 }
17 m=`{dd -if $1 -bs 4 -count 1 >[2]/dev/null | xd | sed 's,0000000  ,,;q'}
18 if(~ $"m 529ab12b){
19         echo paqfs
20         exit
21 }
22 if(~ $"m 011ce50d){
23         echo hjfs
24         exit
25 }
26 m=`{dd -if $1 -bs 16 -count 1 -skip 16 >[2]/dev/null}
27 if(~ $"m 'kfs wren device'){
28         echo kfs
29         exit
30 }
31 dd -if $1 -count 1 >[2]/dev/null | \
32 awk '
33 /^(blocksize|daddrbits|daddrbits|indirblks|dirblks|namelen)/{p[$1]=$2}
34 END{
35         ca["fs", "blocksize"] = 4*1024
36         ca["fs", "namelen"] = 28
37         ca["fs", "dirblks"] = 6
38         ca["fs", "indirblks"] = 2
39         ca["fs", "daddrbits"] = 32
40
41         ca["fs64", "blocksize"] = 8*1024
42         ca["fs64", "namelen"] = 56
43         ca["fs64", "dirblks"] = 6
44         ca["fs64", "indirblks"] = 4
45         ca["fs64", "daddrbits"] = 64
46
47         ca["cwfs", "blocksize"] = 16*1024
48         ca["cwfs", "namelen"] = 28
49         ca["cwfs", "dirblks"] = 6
50         ca["cwfs", "indirblks"] = 2
51         ca["cwfs", "daddrbits"] = 32
52
53         ca["cwfs64", "blocksize"] = 16*1024
54         ca["cwfs64", "namelen"] = 56
55         ca["cwfs64", "dirblks"] = 6
56         ca["cwfs64", "indirblks"] = 4
57         ca["cwfs64", "daddrbits"] = 64
58
59         ca["cwfs64x", "blocksize"] = 16*1024
60         ca["cwfs64x", "namelen"] = 144
61         ca["cwfs64x", "dirblks"] = 6
62         ca["cwfs64x", "indirblks"] = 4
63         ca["cwfs64x", "daddrbits"] = 64
64
65         for(e in ca){
66                 split(e, k, SUBSEP)
67                 if(ca[k[1],k[2]] == p[k[2]])
68                         fs[k[1]]++
69         }
70         for(i in fs)
71                 if(fs[i] > fs[j])
72                         j=i
73         if(fs[j]){
74                 print j
75                 exit
76         }
77         exit 1
78 }
79 '