From 19a82a265411a5f5e9eae9d315279befd001a47d Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Thu, 21 Apr 2011 10:40:03 +0000 Subject: add fstype command to detect 9660, kfs and cwfs filesystems --- rc/bin/fstype | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100755 rc/bin/fstype (limited to 'rc') 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 +} +' -- cgit v1.2.3