diff options
| author | forsyth <forsyth@vitanuova.com> | 2010-07-19 22:57:51 +0100 |
|---|---|---|
| committer | forsyth <forsyth@vitanuova.com> | 2010-07-19 22:57:51 +0100 |
| commit | 98a84ad18808c4c7892dac82539cd678dc45e952 (patch) | |
| tree | 4c408eefe4b1ba648a1b18706752d0d737ca10ac /appl/cmd | |
| parent | adad243147f6102c6e975f48951c05745d56b92d (diff) | |
20100719-2257
Diffstat (limited to 'appl/cmd')
| -rw-r--r-- | appl/cmd/disk/mkfs.b | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/appl/cmd/disk/mkfs.b b/appl/cmd/disk/mkfs.b index 4c05fdf6..961332e8 100644 --- a/appl/cmd/disk/mkfs.b +++ b/appl/cmd/disk/mkfs.b @@ -556,35 +556,35 @@ getfile(old: ref File): (ref File, big) getpath(p: string): string { - for(; (c := p[0]) == ' ' || c == '\t'; p = p[1:]) + for(i := 0; i < len p && (p[i] == ' ' || p[i] == '\t'); i++) ; - for(n := 0; (c = p[n]) != '\n' && c != ' ' && c != '\t'; n++) + for(n := i; n < len p && (c := p[n]) != '\n' && c != ' ' && c != '\t'; n++) ; - return p[0:n]; + return p[i:n]; } getname(p: string): (string, string) { - for(; (c := p[0]) == ' ' || c == '\t'; p = p[1:]) + for(i := 0; i < len p && (p[0] == ' ' || p[0] == '\t'); i++) ; - i := 0; s := ""; quoted := 0; - for(; (c = p[0]) != '\n' && (c != ' ' && c != '\t' || quoted); p = p[1:]){ - if(quoted && c == '\'' && p[1] == '\'') - p = p[1:]; - else if(c == '\''){ + for(; i < len p && (c := p[i]) != '\n' && (c != ' ' && c != '\t' || quoted); i++){ + if(c == '\''){ + if(i+1 >= len p || p[i+1] != '\''){ quoted = !quoted; continue; } - s[i++] = c; + i++; + } + s[len s] = c; } if(len s > 0 && s[0] == '$'){ s = getenv(s[1:]); if(s == nil) error(sys->sprint("can't read environment variable %q", s)); } - return (s, p); + return (s, p[i:]); } getenv(s: string): string |
