On 2010-8-15 3:35 PM, Mark Cave-Ayland wrote:
[...] I added a quick bit of code in packages/sun-parts.c to detect this case, but was surprised to see that it wasn't getting triggered. Some further investigation shows that device strings of the form "disk,|foo|" are being rejected by the Forth in open-dev, i.e.
s" disk" open-dev u. -> returns a valid ihandle s" disk,|foo|" open-dev u. -> returns false
I'm guessing that we should simply just split on a ',' in the same way as we would do with a ':' if it were present, i.e. and pass the remainder of the string as the package argument?
Oh. I didn't notice the lack of colon.
No, you can't just split on a comma, that's a legitimate part of either the name or unit address. That should be:
disk@<unit>:|foo|dev
Both the nodename and unit address are allowed the have commas (e.g., "QLGC,isptwo" is the name of a SCSI adapter from Qlogic, and "@0,1" means target zero, unit 1).
The question is why are you missing both the unit address and the colon separator for the argument. The right answer is to make sure you're following the path resolution in section 4.3.1 in 1275.