Subject: Re: testing presence of a device (was sun-lamp CVS commits)
To: Jason Thorpe <thorpej@nas.nasa.gov>
From: Chris G Demetriou <Chris_G_Demetriou@BALVENIE.PDL.CS.CMU.EDU>
List: current-users
Date: 10/05/1995 02:30:10
> I apparently missed this original mail...
>
> The point is, doing this in shell to present a list like:
>
> You can install on the following devices:
> sd0
> sd1
> sd3
>
> ...is impractical.
I disagree.
Consider the following (short, relatively simple and self-documenting)
shell script:
TYPELIST=dlist
DEVDIR=/dev
echo disk type list is in: $TYPELIST
echo device directory name: $DEVDIR
echo ""
dtypes=`sed -e 's,#.*,,' dtlist`
se_devdir=`echo $DEVDIR | sed -e 's,/,\\\\/,g'`
echo disk types are: $dtypes
echo sed-escped device directory name is: $se_devdir
echo ""
for type in $dtypes; do
echo looking for disks of type \"$type\"
pdisks=${pdisks}\ ` \
/bin/ls -1 ${DEVDIR}/$type[0-9]* 2> /dev/null | \
sed -n -e "s/^${se_devdir}\/\($type[0-9][0-9]*\)c/\1/p" `
done
echo ""
echo possible disk devices are: $pdisks
echo ""
for disk in $pdisks; do
echo looking for disk \"$disk\"
if sh -c "( < /dev/${disk}c ) 2> /dev/null"; then
vdisks="$vdisks $disk"
fi
done
echo ""
echo valid disk devices are: $vdisks
echo ""
with a bit of trickyness, one could easily adapt this to deal with
multiple types of devices, too (think: 'eval' 8-).
Oh, i guess the above should use a "raw partition" variable, rather
than hardcoding 'c', for the broken ports that need a different one...
8-)
> Also, the technique of opening a device can be problematic in some
> circumstances ... maybe the disk is there but the partition has the wrong
> fstype, and thus the driver returns ENXIO?
Is this a problem in circumstances that will be faced when installing
a system, really?
under what circumstances is it impossible to read from the raw
partition of the disk?
chris