diff options
author | cinap_lenrek <cinap_lenrek@localhost> | 2011-04-21 10:40:03 +0000 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@localhost> | 2011-04-21 10:40:03 +0000 |
commit | 19a82a265411a5f5e9eae9d315279befd001a47d (patch) | |
tree | 52f49d72e4707264db3319ceb492bf701e7865a0 /rc | |
parent | a7db29c663f797e2b5e417909f81e6df78dc992c (diff) |
add fstype command to detect 9660, kfs and cwfs filesystems
Diffstat (limited to 'rc')
-rwxr-xr-x | rc/bin/fstype | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/rc/bin/fstype b/rc/bin/fstype new file mode 100755 index 000000000..c2fd65d9c --- /dev/null +++ b/rc/bin/fstype @@ -0,0 +1,57 @@ +#!/bin/rc +m=`{dd -if $1 -bs 2048 -skip 16 >[2]/dev/null | xd -c | sed 1q | \ + sed 's/.........(....................).*/\1/; s/ //g'} +if(~ $"m 01CD00101){ + echo 9660 + exit +} +dd -if $1 -count 1 >[2]/dev/null | \ +awk ' +/^kfs/{fs["kfs"]++} +/^(blocksize|daddrbits|daddrbits|indirblks|dirblks|namelen)/{p[$1]=$2} +END{ + ca["fs", "blocksize"] = 4*1024 + ca["fs", "namelen"] = 28 + ca["fs", "dirblks"] = 6 + ca["fs", "indirblks"] = 2 + ca["fs", "daddrbits"] = 32 + + ca["fs64", "blocksize"] = 8*1024 + ca["fs64", "namelen"] = 56 + ca["fs64", "dirblks"] = 6 + ca["fs64", "indirblks"] = 4 + ca["fs64", "daddrbits"] = 64 + + ca["cwfs", "blocksize"] = 16*1024 + ca["cwfs", "namelen"] = 28 + ca["cwfs", "dirblks"] = 6 + ca["cwfs", "indirblks"] = 2 + ca["cwfs", "daddrbits"] = 32 + + ca["cwfs64", "blocksize"] = 16*1024 + ca["cwfs64", "namelen"] = 56 + ca["cwfs64", "dirblks"] = 6 + ca["cwfs64", "indirblks"] = 4 + ca["cwfs64", "daddrbits"] = 64 + + ca["cwfs64x", "blocksize"] = 16*1024 + ca["cwfs64x", "namelen"] = 144 + ca["cwfs64x", "dirblks"] = 6 + ca["cwfs64x", "indirblks"] = 4 + ca["cwfs64x", "daddrbits"] = 64 + + for(e in ca){ + split(e, k, SUBSEP) + if(ca[k[1],k[2]] == p[k[2]]) + fs[k[1]]++ + } + for(i in fs) + if(fs[i] > fs[j]) + j=i + if(fs[j]){ + print j + exit + } + exit 1 +} +' |