19a747e4fSDavid du Colombier#!/bin/rc 29a747e4fSDavid du Colombier 39a747e4fSDavid du Colombierdosdisk=`{ls /dev/sd??/dos >[2]/dev/null | sed 1q | sed 's!.*/(.*)/dos!\1!'} 49a747e4fSDavid du Colombierif(~ $#dosdisk 0 || ! c: || ! test -f /n/c:/autoexec.bat || ! test -f /n/c:/config.sys) { 59a747e4fSDavid du Colombier echo 'Could not find autoexec.bat or config.sys on the first FAT disk.' 69a747e4fSDavid du Colombier exit bad 79a747e4fSDavid du Colombier} 89a747e4fSDavid du Colombier 99a747e4fSDavid du Colombierfor (i in autoexec config msdos) 109a747e4fSDavid du Colombier if(test -f /n/c:/$i.p9) { 119a747e4fSDavid du Colombier echo 'A Plan 9 backup already exists; will not edit system files again.' 129a747e4fSDavid du Colombier exit bad 139a747e4fSDavid du Colombier } 149a747e4fSDavid du Colombier 159a747e4fSDavid du Colombierfor (i in autoexec.bat config.sys msdos.sys) 169a747e4fSDavid du Colombier if(! cp /n/c:/$i /n/c:/^`{echo $i | sed 's/\.(bat|sys)$/.p9/'}) { 179a747e4fSDavid du Colombier echo 'Could not back up '^$i^'; will not continue.' 189a747e4fSDavid du Colombier exit bad 199a747e4fSDavid du Colombier } 209a747e4fSDavid du Colombier 219a747e4fSDavid du Colombierif(! test -d /n/c:/plan9 && ! mkdir /n/c:/plan9) { 229a747e4fSDavid du Colombier echo 'Could not create directory /n/c:/plan9.' 239a747e4fSDavid du Colombier exit bad 249a747e4fSDavid du Colombier} 259a747e4fSDavid du Colombier 26*a22b0629SDavid du Colombierif(! cp /n/newfs/386/^(9load ld.com 9pcdisk) /tmp/plan9ini.bak /n/c:/plan9) { 279a747e4fSDavid du Colombier echo 'Could not copy Plan 9 boot files into /n/c:/plan9.' 289a747e4fSDavid du Colombier exit bad 299a747e4fSDavid du Colombier} 309a747e4fSDavid du Colombier 319a747e4fSDavid du Colombierchmod +w /n/c:/autoexec.bat /n/c:/config.sys /n/c:/msdos.sys 329a747e4fSDavid du Colombier 339a747e4fSDavid du Colombierif(grep -si 'Plan ?9' /n/c:/config.sys || grep -si 'Plan ?9' /n/c:/autoexec.bat) { 349a747e4fSDavid du Colombier echo 'Plan 9 entries already in config.sys or autoexec.bat.' 359a747e4fSDavid du Colombier echo 'Not changing them; refer to Plan 9 install documentation' 369a747e4fSDavid du Colombier echo 'to configure manually.' 379a747e4fSDavid du Colombier exit bad 389a747e4fSDavid du Colombier} 399a747e4fSDavid du Colombier 409a747e4fSDavid du Colombierif(! grep -si '\[menu\]' /n/c:/config.sys) { 419a747e4fSDavid du Colombier { 429a747e4fSDavid du Colombier echo 1 439a747e4fSDavid du Colombier echo i 449a747e4fSDavid du Colombier echo '[menu] 459a747e4fSDavid du Colombier' 469a747e4fSDavid du Colombier echo 'menuitem=windows, Windows 479a747e4fSDavid du Colombier' 489a747e4fSDavid du Colombier echo 'menudefault=windows 499a747e4fSDavid du Colombier' 509a747e4fSDavid du Colombier echo ' 519a747e4fSDavid du Colombier' 529a747e4fSDavid du Colombier echo '[common] 539a747e4fSDavid du Colombier' 549a747e4fSDavid du Colombier echo ' 559a747e4fSDavid du Colombier' 569a747e4fSDavid du Colombier echo '[windows] 579a747e4fSDavid du Colombier' 589a747e4fSDavid du Colombier echo . 599a747e4fSDavid du Colombier echo w 609a747e4fSDavid du Colombier echo q 619a747e4fSDavid du Colombier } | ed /n/c:/config.sys >/dev/null >[2]/dev/null 629a747e4fSDavid du Colombier} 639a747e4fSDavid du Colombier 649a747e4fSDavid du Colombier{ 659a747e4fSDavid du Colombier echo 1 669a747e4fSDavid du Colombier echo '/\[[Mm][Ee][Nn][Uu]\]' 679a747e4fSDavid du Colombier echo '?^[Mm][Ee][Nn][Uu][Ii][Tt][Ee][Mm]=' 689a747e4fSDavid du Colombier echo a 699a747e4fSDavid du Colombier echo 'menuitem=plan9, Plan 9 from Bell Labs 709a747e4fSDavid du Colombier' 719a747e4fSDavid du Colombier echo . 729a747e4fSDavid du Colombier echo '$' 739a747e4fSDavid du Colombier echo a 749a747e4fSDavid du Colombier echo ' 759a747e4fSDavid du Colombier' 769a747e4fSDavid du Colombier echo '[plan9] 779a747e4fSDavid du Colombier' 789a747e4fSDavid du Colombier echo ' 799a747e4fSDavid du Colombier' 809a747e4fSDavid du Colombier echo . 819a747e4fSDavid du Colombier echo w 829a747e4fSDavid du Colombier echo q 839a747e4fSDavid du Colombier} | ed /n/c:/config.sys >/dev/null>[2]/dev/null 849a747e4fSDavid du Colombier 859a747e4fSDavid du Colombier{ 869a747e4fSDavid du Colombier echo 1 879a747e4fSDavid du Colombier echo i 889a747e4fSDavid du Colombier echo '@echo off 899a747e4fSDavid du Colombier' 909a747e4fSDavid du Colombier echo 'if %config%==plan9 goto plan9 919a747e4fSDavid du Colombier' 929a747e4fSDavid du Colombier echo 'goto notplan9 939a747e4fSDavid du Colombier' 949a747e4fSDavid du Colombier echo ':plan9 959a747e4fSDavid du Colombier' 969a747e4fSDavid du Colombier echo 'plan9\ld '^$dosdisk^'!dos!plan9/9load 979a747e4fSDavid du Colombier' 989a747e4fSDavid du Colombier echo ':notplan9 999a747e4fSDavid du Colombier' 1009a747e4fSDavid du Colombier echo . 1019a747e4fSDavid du Colombier echo w 1029a747e4fSDavid du Colombier echo q 1039a747e4fSDavid du Colombier} | ed /n/c:/autoexec.bat >/dev/null>[2]/dev/null 1049a747e4fSDavid du Colombier 1059a747e4fSDavid du Colombierfn zeroopt { 1069a747e4fSDavid du Colombier if(grep -s '^'^$1^'=1' /n/c:/msdos.sys) { 1079a747e4fSDavid du Colombier { 1089a747e4fSDavid du Colombier echo '/^'^$1^'=1/s/=1/=0/' 1099a747e4fSDavid du Colombier echo w 1109a747e4fSDavid du Colombier echo q 1119a747e4fSDavid du Colombier } | ed /n/c:/msdos.sys>/dev/null>[2]/dev/null 1129a747e4fSDavid du Colombier } 1139a747e4fSDavid du Colombier if not if (grep -s '^'^$1^'=0' /n/c:/msdos.sys) 1149a747e4fSDavid du Colombier ; 1159a747e4fSDavid du Colombier if not { 1169a747e4fSDavid du Colombier { 1179a747e4fSDavid du Colombier 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