home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.0 / builddiskfd < prev    next >
Text File  |  1992-01-01  |  16KB  |  718 lines

  1. #! /bin/csh -f
  2. #PROGRAM:builddisk  PROJECT:builddisk-19  DEVELOPER:richwill  BUILT:Fri Nov 2 18:20:59 PST 1990
  3. set path=( /usr/etc /bin /usr/bin /usr/ucb /etc $path )
  4. set prog=$0
  5. set hostname=`hostname`
  6. set scriptdir=/etc
  7. set exitstatus=0
  8. set mounted=()
  9. set mountlist=()
  10. while ( $#argv > 0 )
  11.     switch ( $argv[1] )
  12.     case -x:
  13.         set nofscks
  14.         shift
  15.         breaksw
  16.     case -n:
  17.         set noinit
  18.         shift
  19.         breaksw
  20.     case -q:
  21.         set noquestions
  22.         shift
  23.         breaksw
  24.     case -S:
  25.         set standalone
  26.         shift
  27.         breaksw
  28.     case -h:
  29.         if ( $#argv < 2 ) then
  30.             echo ${prog:t}: -h requires hostname
  31.             exit(1)
  32.         endif
  33.         set hostname=$argv[2]
  34.         shift; shift
  35.         breaksw
  36.     case -l:
  37.         if ( $#argv < 2 ) then
  38.             echo ${prog:t}: -l requires disklabel
  39.             exit(1)
  40.         endif
  41.         set label="$argv[2]"
  42.         shift; shift
  43.         breaksw
  44.     case -t:
  45.         if ( $#argv < 2 ) then
  46.             echo ${prog:t}: -t requires disktab type
  47.             exit(1)
  48.         endif
  49.         set dtype=$argv[2]
  50.         shift; shift
  51.         breaksw
  52.     case -s:
  53.         if ( $#argv < 2 ) then
  54.             echo ${prog:t}: -s requires builddisk script name
  55.             exit(1)
  56.         endif
  57.         set script=$argv[2]
  58.         shift; shift
  59.         breaksw
  60.     case -*:
  61.         echo ${prog:t}: Unknown option: $argv[1]
  62.         exit(1)
  63.     default:
  64.         break
  65.     endsw
  66. end
  67. set noglob
  68. umask 022
  69. if ( `whoami` != "root" ) then
  70.     echo You must be root to run ${prog:t}
  71.     exit(1)
  72. endif
  73. if ( $#argv != 1 ) then
  74.     echo Usage: ${prog:t} [-n] [-q] [-h HOSTNAME] [-l LABEL] [-t DISKTYPE] [-s SCRIPT] DEV
  75.     exit(1)
  76. endif
  77. switch ( $argv[1] )
  78. case fd0:
  79.     set type=fd
  80.     breaksw
  81. case od[01]:
  82.     set type=od
  83.     breaksw
  84. case sd[01234567]:
  85.     set type=sd
  86.     breaksw
  87. default:
  88.     echo ${prog:t}: Device must be of form \"od0\", \"sd0\", etc
  89.     exit(1)
  90. endsw
  91. set dev="/dev/$argv[1]"
  92. set rdev = "/dev/r"$argv[1]
  93. switch ( $type )
  94. case 'sd':
  95.     set mb=( `scsimodes -C ${rdev}a` )
  96.     if ( $status ) then
  97.         echo ${prog:t}: Can\'t determine SCSI capacity
  98.         set fstab=sd330
  99.     else if ( $mb > 500 ) then
  100.         if ( $?standalone ) then
  101.             set fstab=sd660.1
  102.         else
  103.             set fstab=sd660
  104.         endif
  105.         set dscript=sd660
  106.     else if ( $mb > 75 ) then
  107.         set fstab=sd330
  108.         set dscript=sd330
  109.     else
  110.         set fstab=sd330
  111.         set dscript=swapdisk
  112.         set label=swapdisk
  113.     endif
  114.     
  115.     echo \#
  116.     echo \# Building a $mb MB hard disk drive.
  117.     echo \#
  118.     
  119.     breaksw
  120. case 'od':
  121.     set fstab=od
  122.     set dscript=od
  123.     breaksw
  124. case 'fd':
  125.     set fstab=fd
  126.     set dscript=fd
  127.     breaksw
  128. endsw
  129. if ( ! $?script ) then
  130.     if ( $?dscript ) then
  131.         set script=$dscript
  132.     else
  133.         echo ${prog:t}: Use -s SCRIPT option to specify script
  134.         echo Known scripts are:
  135.         unset noglob
  136.         ls $scriptdir/BLD.* | sed -e 's/.*\/BLD\.//'
  137.         exit(1)
  138.     endif
  139. endif
  140. if ( ! $?label ) then
  141.     set label="MyDisk"
  142. endif
  143. if ( -e BLD.$script ) then
  144.     set desc=BLD.$script
  145. else if ( -e $scriptdir/BLD.$script ) then
  146.     set desc=$scriptdir/BLD.$script
  147. else
  148.     echo ${prog:t}: can\'t find builddisk script BLD.$script
  149.     echo Known scripts are:
  150.     unset noglob
  151.     ls $scriptdir/BLD.* | sed -e 's/.*\/BLD\.//'
  152.     exit(1)
  153. endif
  154. set mtab=( `mount | grep ^${dev}` )
  155. if ( $#mtab > 0 ) then
  156.     /usr/etc/wumount ${dev}a
  157. endif
  158. set mtab=( `mount | grep ^${dev}` )
  159. if ( $#mtab > 0 ) then
  160.     mount | grep ^${dev}
  161.     echo ${dev} is busy.  Try logging out and logging back in. 
  162.     exit(1)
  163. endif
  164. set mtab=( `mount | grep '/mnt[abc]' ` )
  165. if ( $#mtab > 0 ) then
  166.     mount | grep '/mnt[abc]'
  167.     echo ${prog:t}: /mnta, /mntb, or /mntc is in use
  168.     echo ${prog:t} must use these mount points
  169.     exit(1)
  170. endif
  171. if ( ! $?noinit ) then
  172.     if ( ! $?noquestions ) then
  173.         echo -n "builddisk destroys previous contents of $dev, ok? "
  174.         set rsp=$<
  175.         if ( $rsp !~ [yY]* ) then
  176.             echo ${prog:t} aborted
  177.             exit(1)
  178.         endif
  179.     endif
  180. else
  181.     if ( ! $?noquestions ) then
  182.         echo -n "builddisk overwrites contents of $dev, ok? "
  183.         set rsp=$<
  184.         if ( $rsp !~ [yY]* ) then
  185.             echo ${prog:t} aborted
  186.             exit(1)
  187.         endif
  188.     endif
  189.     set initialized
  190. endif
  191.  
  192.  
  193. set totalsize = 0
  194. set od_capacity = 233066
  195.  
  196. onintr abort
  197. @ line = 1
  198. while (1)
  199.     set cmdline = ( `sed -n -e ${line}p $desc` )
  200.     if ( $#cmdline < 1 ) goto done
  201.     if ( "$cmdline[1]" =~ \#* ) then
  202.         echo $cmdline
  203.         goto nextline
  204.     endif
  205.     if ( $#cmdline < 2 ) then
  206.         echo ${prog:t}: Bad command line \"$cmdline\"
  207.         goto abort
  208.     endif
  209.     set cmd = $cmdline[1]
  210.     set part = $cmdline[2]
  211.     if ( $cmd != newdisk && $?initialized == 0 ) then
  212.         if ( $?dtype ) then
  213.             disk -i -t $dtype -h $hostname -l "$label" ${rdev}a
  214.             if ( $status != 0 ) then
  215.                 echo ${prog:t}: Disk initialization failed
  216.                 goto abort
  217.             endif
  218.         else
  219.             disk -i -h $hostname -l "$label" ${rdev}a
  220.             if ( $status != 0 ) then
  221.                 echo ${prog:t}: Disk initialization failed
  222.                 goto abort
  223.             endif
  224.         endif
  225.         set initialized
  226.     endif
  227.     if ( $cmd != mount && $cmd != newdisk && "$mounted" !~ *\:$part\:* ) then
  228.         if ( ! $?nofscks && ! { fsck ${rdev}$part } ) then
  229.             echo ${prog:t}: fsck of ${rdev}$part failed
  230.             goto abort
  231.         endif
  232.         umount /mnt$part >& /dev/null
  233.         if ( ! { mount ${dev}$part /mnt$part } ) then
  234.             echo ${prog:t}: mount ${dev}$part /mnt$part failed
  235.             goto abort
  236.         endif
  237.         set mounted=($mounted \:$part\: )
  238.         set mountlist=($mountlist $part)
  239.     endif
  240.     echo Doing: $cmdline
  241.     switch ( $cmd )
  242.     case "size":
  243.         if ( $#cmdline != 3 ) then
  244.             echo ${prog:t}: Bad command \"$cmdline\"
  245.             goto abort
  246.         endif
  247.         set sizedir = $cmdline[3]
  248.             if( -e $sizedir ) then
  249.             set dirsize = ( `du -s $sizedir | awk '{ print $1 }'` )
  250.             @ totalsize = $totalsize + $dirsize
  251.             echo Size of $sizedir is $dirsize KB.
  252.         else
  253.             echo Cannot find directory to size
  254.         endif
  255.         breaksw
  256.     case "addsize":
  257.         if ( $#cmdline != 3 ) then
  258.             echo ${prog:t}: Bad command \"$cmdline\"
  259.             goto abort
  260.         endif
  261.         set addsize = $cmdline[3]
  262.         @ totalsize = $totalsize + $addsize
  263.         endif
  264.         breaksw
  265.     case "fit":
  266.         echo The source directories contain a total of $totalsize KB.
  267.         switch ( $type )
  268.         case 'sd':
  269.             set destination_size = ( `/usr/etc/scsimodes -C ${rdev}a` )
  270.             @ destination_size = $destination_size * 1024
  271.             if ( $totalsize > $destination_size ) then
  272.             echo The destination filesystem has a maximum capacity of $destination_size KB.
  273.             echo The source directories will NOT fit on the destination file system.
  274.             echo Builddisk failed.
  275.             exit(1)
  276.             endif
  277.             breaksw
  278.         case 'od':
  279.             if ( $totalsize > $od_capacity ) then
  280.             echo The destination filesystem has a maximum capacity of $od_capacity KB.
  281.             echo The source directories will NOT fit on the destination file system.
  282.             echo Builddisk failed.
  283.             exit(1)
  284.             endif
  285.             breaksw
  286.         endsw
  287.         echo The source directories will fit on the destination file system.
  288.         echo
  289.         breaksw
  290.     case "load":
  291.         if ( $#cmdline < 3 || $#cmdline > 4 ) then
  292.             echo ${prog:t}: Bad command \"$cmdline\"
  293.             goto abort
  294.         endif
  295.         set local = $cmdline[3]
  296.         if ( -e $local ) then
  297.             if ( $#cmdline == 4 ) then
  298.                 set target = $cmdline[4]
  299.             else
  300.                 set target = $local
  301.             endif
  302.             mkdirs /mnt$part/$target
  303.             (cd $local; tar cf - .)|(cd /mnt$part/$target; tar xfpB - )
  304.             if ( $status != 0 ) then
  305.                 echo ${prog:t}: load of $target from $local failed
  306.                 set exitstatus=1
  307.             endif
  308.         endif
  309.         breaksw
  310.     case "cload":
  311.         if ( $#cmdline < 3 || $#cmdline > 4 ) then
  312.             echo ${prog:t}: Bad command \"$cmdline\"
  313.             goto abort
  314.         endif
  315.         set local = $cmdline[3]
  316.         if ( $#cmdline == 4 ) then
  317.             set target = $cmdline[4]
  318.         else
  319.             set target = $local
  320.         endif
  321.         if ( -d $local ) then
  322.             mkdirs /mnt$part/$target
  323.             (cd $local; tar cf - .)|(cd /mnt$part/$target; tar xfpB - )
  324.             if ( $status != 0 ) then
  325.                 echo ${prog:t}: load of $target from $local failed
  326.                 set exitstatus=1
  327.             endif
  328.         endif
  329.         breaksw
  330.     case "symlink":
  331.         if ( $#cmdline != 4 ) then
  332.             echo ${prog:t}: Bad command \"$cmdline\"
  333.             goto abort
  334.         endif
  335.         set dest = $cmdline[3]
  336.         set src = $cmdline[4]
  337.         rm -f /mnt$part/$src
  338.         ln -s $dest /mnt$part/$src
  339.         if ( $status != 0 ) then
  340.             echo ${prog:t}: symlink of $src to $dest failed
  341.             set exitstatus=1
  342.         endif
  343.         breaksw
  344.     case "link":
  345.         if ( $#cmdline != 4 ) then
  346.             echo ${prog:t}: Bad command \"$cmdline\"
  347.             goto abort
  348.         endif
  349.         set dest = $cmdline[3]
  350.         set src = $cmdline[4]
  351.         rm -f /mnt$part/$src
  352.         ln /mnt$part/$dest /mnt$part/$src
  353.         if ( $status != 0 ) then
  354.             echo ${prog:t}: link of $src to $dest failed
  355.             set exitstatus=1
  356.         endif
  357.         breaksw
  358.     case "copy":
  359.         if ( $#cmdline < 3 || $#cmdline > 4 ) then
  360.             echo ${prog:t}: Bad command \"$cmdline\"
  361.             goto abort
  362.         endif
  363.         set src = $cmdline[3]
  364.         if ( $#cmdline == 4 ) then
  365.             set dest = $cmdline[4]
  366.         else
  367.             set dest = $src
  368.         endif
  369.         rm -f /mnt$part/$dest
  370.         unset noglob
  371.         if ( ! { cp -p $src /mnt$part/$dest } ) then
  372.             set noglob
  373.             echo ${prog:t}: copy of $src to $dest failed
  374.             set exitstatus=1
  375.         endif
  376.         set noglob
  377.         breaksw
  378.     case "ccopy":
  379.         if ( $#cmdline < 3 || $#cmdline > 4 ) then
  380.             echo ${prog:t}: Bad command \"$cmdline\"
  381.             goto abort
  382.         endif
  383.         set src = $cmdline[3]
  384.         if ( $#cmdline == 4 ) then
  385.             set dest = $cmdline[4]
  386.         else
  387.             set dest = $src
  388.         endif
  389.         if ( -f $src ) then
  390.             rm -f /mnt$part/$dest
  391.             unset noglob
  392.             if ( ! { cp -p $src /mnt$part/$dest } ) then
  393.                 set noglob
  394.                 echo ${prog:t}: copy of $src to $dest failed
  395.                 set exitstatus=1
  396.             endif
  397.             set noglob
  398.         endif
  399.         breaksw
  400.     case "move":
  401.         if ( $#cmdline != 4 ) then
  402.             echo ${prog:t}: Bad command \"$cmdline\"
  403.             goto abort
  404.         endif
  405.         set src = $cmdline[3]
  406.         set dest = $cmdline[4]
  407.         rm -f /mnt$part/$dest
  408.         unset noglob
  409.         if ( ! { mv /mnt$part/$src /mnt$part/$dest } ) then
  410.             set noglob
  411.             echo ${prog:t}: move of $src to $dest failed
  412.             set exitstatus=1
  413.         endif
  414.         set noglob
  415.         breaksw
  416.     case "mount":
  417.         if ( $#cmdline != 3 ) then
  418.             echo ${prog:t}: Bad command \"$cmdline\"
  419.             goto abort
  420.         endif
  421.         set src = $cmdline[2]
  422.         set dest = $cmdline[3]
  423.         umount $dest
  424.         if ( ! { mount $src $dest } ) then
  425.             echo ${prog:t}: mount of $src on $dest failed
  426.             goto abort
  427.         endif
  428.         breaksw
  429.     case "mkdirs":
  430.         if ( $#cmdline != 3 ) then
  431.             echo ${prog:t}: Bad command \"$cmdline\"
  432.             goto abort
  433.         endif
  434.         set dirs = $cmdline[3]
  435.         if ( ! { mkdirs /mnt$part/$dirs } ) then
  436.             echo ${prog:t}: mkdirs of $dirs failed
  437.             set exitstatus=1
  438.         endif
  439.         breaksw
  440.     case "rrm":
  441.         if ( $#cmdline != 3 ) then
  442.             echo ${prog:t}: Bad command \"$cmdline\"
  443.             goto abort
  444.         endif
  445.         set dirs = $cmdline[3]
  446.         unset noglob
  447.         if ( ! { rm -rf /mnt$part/$dirs } ) then
  448.             set noglob
  449.             echo ${prog:t}: rm -rf of $dirs failed
  450.             set exitstatus=1
  451.         endif
  452.         set noglob
  453.         breaksw
  454.     case "rm":
  455.         if ( $#cmdline != 3 ) then
  456.             echo ${prog:t}: Bad command \"$cmdline\"
  457.             goto abort
  458.         endif
  459.         set file = $cmdline[3]
  460.         unset noglob
  461.         if ( ! { rm /mnt$part/$file } ) then
  462.             set noglob
  463.             echo ${prog:t}: rm of $file failed
  464.             set exitstatus=1
  465.         endif
  466.         set noglob
  467.         breaksw
  468.     case "strip":
  469.         if ( $#cmdline != 3 ) then
  470.             echo ${prog:t}: Bad command \"$cmdline\"
  471.             goto abort
  472.         endif
  473.         set file = $cmdline[3]
  474.         unset noglob
  475.         strip /mnt$part/$file >& /dev/null
  476.         set noglob
  477.         breaksw
  478.     case "chmod":
  479.         if ( $#cmdline != 4 ) then
  480.             echo ${prog:t}: Bad command \"$cmdline\"
  481.             goto abort
  482.         endif
  483.         set mode = $cmdline[3]
  484.         set file = $cmdline[4]
  485.         unset noglob
  486.         if ( ! { chmod $mode /mnt$part/$file } ) then
  487.             set noglob
  488.             echo ${prog:t}: chmod $mode $file failed
  489.             set exitstatus=1
  490.         endif
  491.         set noglob
  492.         breaksw
  493.     case "chown":
  494.         if ( $#cmdline != 4 ) then
  495.             echo ${prog:t}: Bad command \"$cmdline\"
  496.             goto abort
  497.         endif
  498.         set owner = $cmdline[3]
  499.         set file = $cmdline[4]
  500.         unset noglob
  501.         if ( ! { chown $owner /mnt$part/$file } ) then
  502.             set noglob
  503.             echo ${prog:t}: chown $owner $file failed
  504.             set exitstatus=1
  505.         endif
  506.         set noglob
  507.         breaksw
  508.     case "chgrp":
  509.         if ( $#cmdline != 4 ) then
  510.             echo ${prog:t}: Bad command \"$cmdline\"
  511.             goto abort
  512.         endif
  513.         set group = $cmdline[3]
  514.         set file = $cmdline[4]
  515.         unset noglob
  516.         if ( ! { chgrp $group /mnt$part/$file } ) then
  517.             set noglob
  518.             echo ${prog:t}: chgrp $group $file failed
  519.             set exitstatus=1
  520.         endif
  521.         set noglob
  522.         breaksw
  523.     case "rchmod":
  524.         if ( $#cmdline != 4 ) then
  525.             echo ${prog:t}: Bad command \"$cmdline\"
  526.             goto abort
  527.         endif
  528.         set mode = $cmdline[3]
  529.         set file = $cmdline[4]
  530.         unset noglob
  531.         if ( ! { chmod -R $mode /mnt$part/$file } ) then
  532.             set noglob
  533.             echo ${prog:t}: chmod -R $mode $file failed
  534.             set exitstatus=1
  535.         endif
  536.         set noglob
  537.         breaksw
  538.     case "rchown":
  539.         if ( $#cmdline != 4 ) then
  540.             echo ${prog:t}: Bad command \"$cmdline\"
  541.             goto abort
  542.         endif
  543.         set owner = $cmdline[3]
  544.         set file = $cmdline[4]
  545.         unset noglob
  546.         if ( ! { chown -R $owner /mnt$part/$file } ) then
  547.             set noglob
  548.             echo ${prog:t}: chown -R $owner $file failed
  549.             set exitstatus=1
  550.         endif
  551.         set noglob
  552.         breaksw
  553.     case "rchgrp":
  554.         if ( $#cmdline != 4 ) then
  555.             echo ${prog:t}: Bad command \"$cmdline\"
  556.             goto abort
  557.         endif
  558.         set group = $cmdline[3]
  559.         set file = $cmdline[4]
  560.         unset noglob
  561.         if ( ! { chgrp -R $group /mnt$part/$file } ) then
  562.             set noglob
  563.             echo ${prog:t}: chgrp -R $group $file failed
  564.             set exitstatus=1
  565.         endif
  566.         set noglob
  567.         breaksw
  568.     case "exec":
  569.         if ( $#cmdline < 4 ) then
  570.             echo ${prog:t}: Bad command \"$cmdline\"
  571.             goto abort
  572.         endif
  573.         set dir = $cmdline[3]
  574.         set command = ( $cmdline[4-] )
  575.         ( cd /mnt$part/$dir; $command )
  576.         if ( $status != 0 ) then
  577.             echo ${prog:t}: $command failed
  578.             set exitstatus=1
  579.         endif
  580.         breaksw
  581.     case "newclient":
  582.         if ( $#cmdline < 3 || $#cmdline > 4) then
  583.             echo ${prog:t}: Bad command \"$cmdline\"
  584.             goto abort
  585.         endif
  586.         set dir = $cmdline[3]
  587.         if ( $#cmdline < 4 ) then
  588.             set opt = "-p"
  589.         else
  590.             set opt = $cmdline[4]
  591.         endif
  592.         ( cd /mnt$part/$dir; ./newclient $opt $fstab /mnta/usr/template/client /mnta/private )
  593.         if ( $status != 0 ) then
  594.             echo ${prog:t}: newclient failed
  595.             set exitstatus=1
  596.         endif
  597.         breaksw
  598.     case "touch":
  599.         if ( $#cmdline != 3 ) then
  600.             echo ${prog:t}: Bad command \"$cmdline\"
  601.             goto abort
  602.         endif
  603.         set file = $cmdline[3]
  604.         if ( ! { touch /mnt$part/$file } ) then
  605.             echo ${prog:t}: touch $file failed
  606.             set exitstatus=1
  607.         endif
  608.         breaksw
  609.     case "remove":
  610.         if ( $#cmdline != 3 ) then
  611.             echo ${prog:t}: Bad command \"$cmdline\"
  612.             goto abort
  613.         endif
  614.         set file=$cmdline[3]
  615.         unset noglob
  616.         if ( ! { rm -f /mnt$part/$file } ) then
  617.             set noglob
  618.             echo ${prog:t}: rm -f $file failed
  619.             set exitstatus=1
  620.         endif
  621.         set noglob
  622.         breaksw
  623.     case "newdisk":
  624.         if ( $#cmdline != 2 ) then
  625.             echo ${prog:t}: Bad command \"$cmdline\"
  626.             goto abort
  627.         endif
  628.         if ( $type !~ od && $type !~ fd) then
  629.             echo ${prog:t}: Can\'t use newdisk command with $type disks
  630.             goto abort
  631.         endif
  632.         if ( $#mountlist > 0 ) then
  633.             while ( $#mountlist > 0 )
  634.                 umount /mnt$mountlist[1]
  635.                 if ( ! $?nofscks && ! { fsck -y ${rdev}$mountlist[1] } ) then
  636.                     echo ${prog:t}: fsck of ${rdev}$mountlist[1] failed
  637.                     set exitstatus=1
  638.                 endif
  639.                 df ${rdev}$mountlist[1]
  640.                 shift mountlist
  641.             end
  642.             echo Label ejected disk with $label
  643.             disk -e ${rdev}a
  644.             set mounted=()
  645.             set mountlist=()
  646.         endif
  647.         set label=$part
  648.         echo Beginning build of $label
  649.         disk -i -h $hostname -l "$label" ${rdev}a
  650.         if ( $status != 0 ) then
  651.             echo ${prog:t}: Disk initialization failed
  652.             goto abort
  653.         endif
  654.         set initialized
  655.         breaksw
  656.     case "bom":
  657.         if ( $#cmdline > 3 ) then
  658.             echo ${prog:t}: Bad command \"$cmdline\"
  659.             goto abort
  660.         endif
  661.         if ( $#cmdline == 3 ) then
  662.             set bom=$cmdline[3]
  663.         else
  664.             set bom=$label
  665.         endif
  666.         (cd /mnt$part; du; ls -lgAR ) >${bom}.bom
  667.         breaksw
  668.     default:
  669.         echo ${prog:t}: Unknown command \"$cmdline\"
  670.         goto abort
  671.     endsw
  672. nextline:
  673.     @ line++
  674. end
  675.  
  676. abort:
  677. echo Build of $dev aborted
  678. while ( $#mountlist > 0 )
  679.     umount /mnt$mountlist[1]
  680.     shift mountlist
  681. end
  682. set exitstatus=1
  683. goto ejectit
  684.  
  685. done:
  686. while ( $#mountlist > 0 )
  687.     umount /mnt$mountlist[1]
  688.     if ( ! $?nofscks && ! { fsck -y ${rdev}$mountlist[1] } ) then
  689.         echo ${prog:t}: fsck of ${rdev}$mountlist[1] failed
  690.         set exitstatus=1
  691.     endif
  692.     df ${rdev}$mountlist[1]
  693.     shift mountlist
  694. end
  695. if ( $exitstatus != 0 ) then
  696.     echo ""
  697.     echo ============= WARNING ==================
  698.     echo ${prog:t}: BUILD OF $dev HAD ERRORS
  699.     echo DISK MAY NOT BE USABLE, REVIEW ERROR LOG
  700.     echo ========================================
  701. else
  702.     echo ""
  703.     echo ==========================
  704.     echo Build of $dev complete
  705.     echo ==========================
  706. endif
  707.  
  708. ejectit:
  709. if ( $type =~ od ) then
  710.     disk -e ${rdev}a
  711. endif
  712. exit($exitstatus)
  713.  
  714.  
  715.  
  716.  
  717.  
  718.