diff options
author | cinap_lenrek <cinap_lenrek@localhost> | 2011-04-12 15:53:55 +0000 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@localhost> | 2011-04-12 15:53:55 +0000 |
commit | 67e93d6a0a4f15192638e131413b9d64c4269c76 (patch) | |
tree | 88fd1d17c4be283683a96ced44159e3ce6b6f2f7 /sys/src/cmd/cwfs/config.c | |
parent | 7208d528bd42f981f2535403f72e4c0d7d8df643 (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.c | 41 |
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; |