Annotation of dmsdos/src/msdos.fsck-wrapper, revision 1.1

1.1     ! root        1: #!/bin/sh
        !             2: 
        !             3: # This is an example shell script that can be used as a wrapper for a
        !             4: # msdos.fsck (called by the generic fsck frontend).
        !             5: #
        !             6: # The script accepts a standard fsck command line and decides upon the
        !             7: # the raw filesystem data whether it is a CVF or not. If it is a CVF then
        !             8: # dmsdosfsck is invoked.
        !             9: #
        !            10: # The case when it is not a CVF but an uncompressed msdos partition is a bit
        !            11: # more complex. First, dosfsck is invoked to check that dos partition. Then
        !            12: # the script tries to mount that partition and scans its root directory for
        !            13: # CVFs. If there are CVFs it tries to check them, too, by calling dmsdosfsck
        !            14: # on them. After that, the msdos partition is unmounted again in order to
        !            15: # restore the previous state. If the -r option is present in the fsck
        !            16: # command line, some questions are asked.
        !            17: #
        !            18: # Note that this script needs a helper program that finds out whether a 
        !            19: # file is a CVF or not. If you have added the file(1) magics for CVFs to
        !            20: # /etc/magic (see the dmsdos installation instructions) you can use a
        !            21: # combination of file and grep (for example) for that purpose. I think this
        !            22: # is a standard way. If you still prefer the older method (by calling the
        !            23: # helper program cvftest) just compile cvftest ('make cvftest') and change 
        !            24: # some lines below (I've commented out the two cvftest calls and placed a
        !            25: # file command in the next line).
        !            26: 
        !            27: ###########################################################################
        !            28: 
        !            29: # where to find the different filesystem checker utilities
        !            30: DMSDOSFSCK="dmsdosfsck"
        !            31: DOSFSCK="dosfsck"
        !            32: 
        !            33: ARGS="$@"
        !            34: FILE=""
        !            35: ASK=n
        !            36: 
        !            37: while [ "$1" != "" ];
        !            38: do
        !            39:        case "$1" in
        !            40:        -u)     shift
        !            41:                shift ;;
        !            42:        -d)     shift
        !            43:                shift ;;
        !            44:        -r)     ASK=y
        !            45:                shift ;;
        !            46:        -*)     shift ;;
        !            47:        *)      FILE="$1" 
        !            48:                shift ;;
        !            49:        esac;
        !            50: done
        !            51: 
        !            52: #echo "ARGS=$ARGS"
        !            53: #echo "FILE=$FILE"
        !            54: 
        !            55: #if cvftest $FILE ;
        !            56: if [ ! -z "`file $FILE | grep CVF`" ];
        !            57: then
        !            58:        echo "CVF detected, calling dmsdosfsck..."
        !            59:        $DMSDOSFSCK $ARGS
        !            60:        CODE="$?"
        !            61: else
        !            62:        echo "no CVF found, calling dosfsck..."
        !            63:        $DOSFSCK $ARGS
        !            64:        CODE="$?"
        !            65:        if [ "$CODE" != "0" ];
        !            66:        then
        !            67:                exit $CODE
        !            68:        fi
        !            69:        if [ $ASK = y ];
        !            70:        then
        !            71:                echo -n "search $FILE for CVFs in it and check them, too?"
        !            72:                read ANS JUNK
        !            73:                if [ "$ANS" != "y" -a "$ANS" != "Y" ];
        !            74:                then
        !            75:                        exit 0
        !            76:                fi
        !            77:        fi
        !            78:        mkdir /tmp/fsckwrap.$$
        !            79:        if [ "$?" != "0" ];
        !            80:        then
        !            81:                echo "need write access to /tmp for automatic CVF check (skipped)"
        !            82:                exit 0
        !            83:        fi
        !            84:        chmod 700 /tmp/fsckwrap.$$
        !            85:        mount -t msdos $FILE /tmp/fsckwrap.$$
        !            86:        if [ "$?" != "0" ];
        !            87:        then
        !            88:                echo "cannot search $FILE for CVFs in it (skipped)"
        !            89:                exit 0
        !            90:        fi
        !            91: 
        !            92:        CODE="0"
        !            93:        FIRST=y
        !            94:        for I in /tmp/fsckwrap.$$/dblspace.0?? /tmp/fsckwrap.$$/drvspace.0?? /tmp/fsckwrap.$$/stacvol.*
        !            95:        do
        !            96:                if [ -f $I ];
        !            97:                then
        !            98:                        #if cvftest $I ;
        !            99:                        if [ ! -z "`file $I | grep CVF`" ];
        !           100:                        then
        !           101:                                if [ $FIRST = y ];
        !           102:                                then
        !           103:                                        echo "$FILE contains CVFs"
        !           104:                                        FIRST=n
        !           105:                                fi
        !           106:                                echo -n "checking CVF "
        !           107:                                basename $I
        !           108:                                $DMSDOSFSCK $ARGS $I
        !           109:                                if [ "$?" != "0" ];
        !           110:                                then
        !           111:                                        CODE="$?"
        !           112:                                fi
        !           113:                        fi
        !           114:                fi
        !           115:        done
        !           116:        umount /tmp/fsckwrap.$$
        !           117:        rmdir /tmp/fsckwrap.$$
        !           118: fi
        !           119: 
        !           120: exit $CODE

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.