Annotation of dmsdos/src/msdos.fsck-wrapper2, revision 1.1.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: # This script is the second version. It uses a new feature of libdmsdos,
                      7: # the built-in direct translation that can access a CVF even if the host
                      8: # filesystem is not mounted. This is now the preferred way.
                      9: #
                     10: # The script accepts a standard fsck command line and decides upon the
                     11: # the raw filesystem data whether it is a CVF or not. If it is a CVF then
                     12: # dmsdosfsck is invoked.
                     13: #
                     14: # The case when it is not a CVF but an uncompressed msdos partition is a bit
                     15: # more complex. First, dosfsck is invoked to check that dos partition. Then
                     16: # the script scans its root directory for CVFs. If there are CVFs it tries 
                     17: # to check them, too, by calling dmsdosfsck on them. If the -r option is 
                     18: # present in the fsck command line, some questions are asked.
                     19: #
                     20: # Note that this script needs a helper program that finds out whether a 
                     21: # file is a CVF or not. If you have added the file(1) magics for CVFs to
                     22: # /etc/magic (see the dmsdos installation instructions) you can use a
                     23: # combination of file and grep (for example) for that purpose. I think this
                     24: # is a standard way. If you still prefer the older method (by calling the
                     25: # helper program cvftest) just compile cvftest ('make cvftest') and change 
                     26: # one lines below (I've commented out the cvftest call and placed a
                     27: # file command in the next line).
                     28: 
                     29: ###########################################################################
                     30: 
                     31: # where to find the different filesystem checker utilities
                     32: DMSDOSFSCK="dmsdosfsck"
                     33: DOSFSCK="dosfsck"
                     34: CVFLIST="cvflist"
                     35: 
                     36: ARGS="$@"
                     37: FILE=""
                     38: ASK=n
                     39: 
                     40: while [ "$1" != "" ];
                     41: do
                     42:        case "$1" in
                     43:        -u)     shift
                     44:                shift ;;
                     45:        -d)     shift
                     46:                shift ;;
                     47:        -r)     ASK=y
                     48:                shift ;;
                     49:        -*)     shift ;;
                     50:        *)      FILE="$1" 
                     51:                shift ;;
                     52:        esac;
                     53: done
                     54: 
                     55: #echo "ARGS=$ARGS"
                     56: #echo "FILE=$FILE"
                     57: 
                     58: #if cvftest $FILE ;
                     59: if [ ! -z "`file $FILE | grep CVF`" ];
                     60: then
                     61:        echo "CVF detected, calling dmsdosfsck ..."
                     62:        $DMSDOSFSCK $ARGS
                     63:        CODE="$?"
                     64: else
                     65:        echo "no CVF found, calling dosfsck ..."
                     66:        $DOSFSCK $ARGS
                     67:        CODE="$?"
                     68:        if [ "$CODE" != "0" ];
                     69:        then
                     70:                exit $CODE
                     71:        fi
                     72:        if [ $ASK = y ];
                     73:        then
                     74:                echo -n "search $FILE for CVFs in it and check them, too?"
                     75:                read ANS JUNK
                     76:                if [ "$ANS" != "y" -a "$ANS" != "Y" ];
                     77:                then
                     78:                        exit 0
                     79:                fi
                     80:        fi
                     81:         CVFS=`$CVFLIST $FILE`
                     82:         if [ -z "$CVFS" ];
                     83:         then
                     84:                echo "no CVFs found."
                     85:                exit 0
                     86:        fi
                     87: 
                     88:        CODE="0"
                     89:        for I in $CVFS
                     90:        do
                     91:                I=`echo $I | cut -f2 -d.`
                     92:                echo "checking CVF with ext $I ..."
                     93:                $DMSDOSFSCK $ARGS $FILE:$I
                     94:                if [ "$?" != "0" ];
                     95:                then
                     96:                        CODE="$?"
                     97:                fi
                     98:        done
                     99: fi
                    100: 
                    101: exit $CODE

unix.superglobalmegacorp.com

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