shithub: riscv

Download patch

ref: 9df9a3625ced6ec4f8c2f159903e4d0309bedb12
parent: 2d06aac2abbd22757b6aa33b4fdc0c9ead4b7d50
author: cinap_lenrek <[email protected]>
date: Thu Dec 18 21:37:40 EST 2014

sdaoe: allow aoedev= shorthand for id!lun -> id!#æ/aoe/lun

we cannot type æ character in the bootloader console, so allow
the shorthand syntax id!lun which gets translated to id!#æ/aoe/lun.

--- a/sys/man/3/sdaoe
+++ b/sys/man/3/sdaoe
@@ -68,7 +68,7 @@
 .IP
 .EX
 aoeif=ether0 ether1
-aoedev=e!#æ/aoe/42.0
+aoedev=e!42.0
 .EE
 .SH SOURCE
 .B /sys/src/9/port/sdaoe.c
--- a/sys/src/9/port/sdaoe.c
+++ b/sys/src/9/port/sdaoe.c
@@ -249,19 +249,6 @@
 static char	*probebuf;
 static int 	nprobe;
 
-static int
-pnpprobeid(char *s)
-{
-	int id;
-
-	if(strlen(s) < 2)
-		return 0;
-	id = 'e';
-	if(s[1] == '!')
-		id = s[0];
-	return id;
-}
-
 static SDev*
 aoepnp(void)
 {
@@ -275,9 +262,26 @@
 	nprobe = tokenize(probebuf, probef, nelem(probef));
 	h = t = 0;
 	for(i = 0; i < nprobe; i++){
-		id = pnpprobeid(probef[i]);
-		if(id == 0)
+		p = probef[i];
+		if(strlen(p) < 2)
 			continue;
+		id = 'e';
+		if(p[1] == '!'){
+			id = p[0];
+			p += 2;
+		}
+		/*
+		 * shorthand for: id!lun -> id!#æ/aoe/lun
+		 * because we cannot type æ in the bootloader console.
+		 */
+		if(strchr(p, '/') == nil){
+			char tmp[64];
+
+			snprint(tmp, sizeof(tmp), "%c!#æ/aoe/%s", (char)id, p);
+
+			probef[i] = nil;
+			kstrdup(&probef[i], tmp);
+		}
 		s = malloc(sizeof *s);
 		if(s == nil)
 			break;