git: 9front

Download patch

ref: 1ae706763737ac70469cfb167a37ae8f9a7a0d5c
parent: 17c490aca3aced92949ecbcece4e993202421eb2
author: cinap_lenrek <cinap_lenrek@centraldogma>
date: Tue Aug 16 00:09:15 EDT 2011

9boot: list known filesystem images on usb stick as boot filesystems

--- a/rc/bin/nusbrc
+++ b/rc/bin/nusbrc
@@ -25,6 +25,7 @@
 		}
 	}
 	fn detach {
+		# handled /sys/src/9/boot/nusbrc
 	}
 	rc < '#σ/usb/usbevent' &
 }
--- a/sys/src/9/boot/local.rc
+++ b/sys/src/9/boot/local.rc
@@ -2,27 +2,36 @@
 
 fn showlocaldevs{
 	echo local devices found:
-	for(d in /dev/sd*){
-		if(test -r $d/ctl){
-			q=`{sed 's,(inquiry|geometry),\
+	for(d in /dev/sd*) if(test -r $d/ctl){
+		q=`{sed 's,(inquiry|geometry),\
 \1,g' $d/ctl | grep inquiry}
-			echo $d':' $q(2-)
-			for(i in `{ls -p $d}){
-				p=$d/$i
-				switch($i){
-				case ctl raw log
-					;
-				case 9fat plan9 nvram
-					echo $p
-				case *
-					t=`{fstype $p}
-					if(~ $#bootargs 0 && ! ~ $t '')
-						bootargs=local!$p
-					echo $p $t
-				}
+		echo $d':' $q(2-)
+		for(i in `{ls -p $d}){
+			p=$d/$i
+			switch($i){
+			case ctl raw log
+				;
+			case 9fat plan9 nvram
+				echo $p
+			case *
+				t=`{fstype $p}
+				if(~ $#bootargs 0 && ! ~ $t '')
+					bootargs=local!$p
+				echo $p $t
 			}
 		}
 	}
+	for(d in /shr/sd*) if(test -d $d) {
+		echo $d':'
+		for(p in $d/*.^(iso kfs paq)) if(test -f $p){
+			t=`{fstype $p}
+			if(! ~ $t ''){
+				if(~ $#bootargs 0)
+					bootargs=local!$p
+				echo $p $t
+			}
+		}
+	}
 }
 
 fn configlocal{
@@ -34,7 +43,7 @@
 }
 
 fn connectlocal{
-	if(test -r $1)
+	if(test -f $1)
 		t=`{fstype $1}
 	if not {
 		t=$1; shift
@@ -44,22 +53,10 @@
 		fatal unknown fstype $1
 	case 9660
 		bootfs 9660srv $*
+	case dos
+		bootfs dossrv $*
 	case kfs
 		bootfs disk/kfs $*
-	case dos
-		if(! test -f /srv/dos)
-			dossrv
-		m=/mnt/dosboot
-		must mount /srv/dos $m $1
-		shift
-		if(~ $#* 0)
-			f=$m/9front.iso
-		if not
-			f=$m/$1
-		if(test -r $f)
-			connectlocal $f
-		if not
-			connectlocal $*
 	case *
 		bootfs $t $*
 	}
--- a/sys/src/9/boot/nusbrc
+++ b/sys/src/9/boot/nusbrc
@@ -17,16 +17,13 @@
 			@{
 				rfork ne
 				cd '#σ/usb'
-				for(dev in sdU^$1.*){
-					echo $dev...
+				for(dev in sdU^$1.*) if(test -d $dev) {
 					diskparts $dev
-					for(part in $dev/dos* $dev/9fat){
-						if(test -r $part) {
-							mkdir -m 0700 '#σc/'^$dev
-							{dossrv -s -f $part &} <[0=1] |
-								echo 0 >'#σc/'^$dev/dos
-							exit
-						}
+					for(part in $dev/dos* $dev/9fat) if(test -r $part) {
+						mkdir -m 0700 '#σc/'^$dev || exit
+						{dossrv -s -f $part &} <[0=1] |
+							echo 0 >'#σc/'^$dev/dos
+						exit
 					}
 				}
 			} &
--