1#!/bin/rc 2 3dosdisk=`{ls /dev/sd??/dos >[2]/dev/null | sed 1q | sed 's!.*/(.*)/dos!\1!'} 4if(~ $#dosdisk 0 || ! c: || ! test -f /n/c:/autoexec.bat || ! test -f /n/c:/config.sys) { 5 echo 'Could not find autoexec.bat or config.sys on the first FAT disk.' 6 exit bad 7} 8 9for (i in autoexec config msdos) 10 if(test -f /n/c:/$i.p9) { 11 echo 'A Plan 9 backup already exists; will not edit system files again.' 12 exit bad 13 } 14 15for (i in autoexec.bat config.sys msdos.sys) 16 if(! cp /n/c:/$i /n/c:/^`{echo $i | sed 's/\.(bat|sys)$/.p9/'}) { 17 echo 'Could not back up '^$i^'; will not continue.' 18 exit bad 19 } 20 21if(! test -d /n/c:/plan9 && ! mkdir /n/c:/plan9) { 22 echo 'Could not create directory /n/c:/plan9.' 23 exit bad 24} 25 26if(! cp /n/newfs/386/^(9load ld.com 9pcdisk) /tmp/plan9ini.bak /n/c:/plan9) { 27 echo 'Could not copy Plan 9 boot files into /n/c:/plan9.' 28 exit bad 29} 30 31chmod +w /n/c:/autoexec.bat /n/c:/config.sys /n/c:/msdos.sys 32 33if(grep -si 'Plan ?9' /n/c:/config.sys || grep -si 'Plan ?9' /n/c:/autoexec.bat) { 34 echo 'Plan 9 entries already in config.sys or autoexec.bat.' 35 echo 'Not changing them; refer to Plan 9 install documentation' 36 echo 'to configure manually.' 37 exit bad 38} 39 40if(! grep -si '\[menu\]' /n/c:/config.sys) { 41 { 42 echo 1 43 echo i 44 echo '[menu] 45' 46 echo 'menuitem=windows, Windows 47' 48 echo 'menudefault=windows 49' 50 echo ' 51' 52 echo '[common] 53' 54 echo ' 55' 56 echo '[windows] 57' 58 echo . 59 echo w 60 echo q 61 } | ed /n/c:/config.sys >/dev/null >[2]/dev/null 62} 63 64{ 65 echo 1 66 echo '/\[[Mm][Ee][Nn][Uu]\]' 67 echo '?^[Mm][Ee][Nn][Uu][Ii][Tt][Ee][Mm]=' 68 echo a 69 echo 'menuitem=plan9, Plan 9 from Bell Labs 70' 71 echo . 72 echo '$' 73 echo a 74 echo ' 75' 76 echo '[plan9] 77' 78 echo ' 79' 80 echo . 81 echo w 82 echo q 83} | ed /n/c:/config.sys >/dev/null>[2]/dev/null 84 85{ 86 echo 1 87 echo i 88 echo '@echo off 89' 90 echo 'if %config%==plan9 goto plan9 91' 92 echo 'goto notplan9 93' 94 echo ':plan9 95' 96 echo 'plan9\ld '^$dosdisk^'!dos!plan9/9load 97' 98 echo ':notplan9 99' 100 echo . 101 echo w 102 echo q 103} | ed /n/c:/autoexec.bat >/dev/null>[2]/dev/null 104 105fn zeroopt { 106 if(grep -s '^'^$1^'=1' /n/c:/msdos.sys) { 107 { 108 echo '/^'^$1^'=1/s/=1/=0/' 109 echo w 110 echo q 111 } | ed /n/c:/msdos.sys>/dev/null>[2]/dev/null 112 } 113 if not if (grep -s '^'^$1^'=0' /n/c:/msdos.sys) 114 ; 115 if not { 116 { 117 echo 1 118 echo i 119 echo '[Options] 120' 121 echo 'Logo=0 122' 123 echo . 124 echo w 125 echo q 126 } | ed /n/c:/msdos.sys>/dev/null>[2]/dev/null 127 } 128} 129 130if(grep -si '^\[paths\]' /n/c:/msdos.sys){ # Windows 9x rather than DOS 131 zeroopt Logo 132# zeroopt BootGUI 133} 134 135echo 'Plan 9 added to Windows 9X boot menu.' 136exit '' 137