summaryrefslogtreecommitdiff
path: root/sys/src/cmd/cwfs/config.c
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@localhost>2011-04-12 15:53:55 +0000
committercinap_lenrek <cinap_lenrek@localhost>2011-04-12 15:53:55 +0000
commit67e93d6a0a4f15192638e131413b9d64c4269c76 (patch)
tree88fd1d17c4be283683a96ced44159e3ce6b6f2f7 /sys/src/cmd/cwfs/config.c
parent7208d528bd42f981f2535403f72e4c0d7d8df643 (diff)
updating cwfs and moving installer in /rc/bin
Diffstat (limited to 'sys/src/cmd/cwfs/config.c')
-rw-r--r--sys/src/cmd/cwfs/config.c41
1 files changed, 40 insertions, 1 deletions
diff --git a/sys/src/cmd/cwfs/config.c b/sys/src/cmd/cwfs/config.c
index bc0d118ea..b11c53e77 100644
--- a/sys/src/cmd/cwfs/config.c
+++ b/sys/src/cmd/cwfs/config.c
@@ -82,6 +82,11 @@ devcmpr(Device *d1, Device *d2)
case Devwren:
case Devworm:
case Devlworm:
+ if(d1->wren.file || d2->wren.file){
+ if(d1->wren.file == nil || d2->wren.file == nil)
+ return 1;
+ return !!strcmp(d1->wren.file, d2->wren.file);
+ }
if(d1->wren.ctrl == d2->wren.ctrl)
if(d1->wren.targ == d2->wren.targ)
if(d1->wren.lun == d2->wren.lun)
@@ -222,7 +227,7 @@ config(void)
{
int c, m;
Device *d;
- char *icp;
+ char *icp, *s, *e;
if(f.error)
return devnone;
@@ -248,7 +253,41 @@ config(void)
d->type = Devnone;
break;
+ case '/': /* /path/to/file mapped file */
+ case '"': /* "/path/to/file" mapped file */
+ case '\'': /* '/path/to/file' mapped file */
+ Mapped:
+ d->type = Devwren;
+ if(c == '/'){
+ s = f.charp-1;
+ for(e = s+1; *e; e++)
+ if(*e == ')' || *e == ']' || *e == '}')
+ break;
+ f.charp = e;
+ } else {
+ s = f.charp;
+ if((e = strchr(s, c)) == nil){
+ cdiag("unterminated string", c);
+ return devnone;
+ }
+ f.charp = e+1;
+ }
+ d->wren.ctrl = -1;
+ d->wren.targ = -1;
+ d->wren.lun = -1;
+ d->wren.file = malloc((e - s) + 1);
+ memmove(d->wren.file, s, e - s);
+ d->wren.file[e - s] = 0;
+ break;
+
case 'w': /* w[#.]#[.#] wren [ctrl] unit [lun] */
+ switch(*f.charp){
+ case '/':
+ case '"':
+ case '\'':
+ c = *f.charp++;
+ goto Mapped;
+ }
case 'r': /* r# worm side */
case 'l': /* l# labelled-worm side */
icp = f.charp;