| plan 9 kernel history: overview | file list | diff list |
1999/1230/port/chan.c (diff list | history)
| 1999/1224/sys/src/9/port/chan.c:19,25 – 1999/1230/sys/src/9/port/chan.c:19,25 (short | long | prev | next) | ||
| 1990/0227 | }chanalloc; | |
| 1999/0629 | #define SEP(c) ((c) == 0 || (c) == '/') | |
| 1999/0811 |
| |
| 1999/1230 | void cleancname(Cname*); | |
| 1999/0629 | ||
| 1990/0227 | int incref(Ref *r) | |
| 1999/1224/sys/src/9/port/chan.c:483,489 – 1999/1230/sys/src/9/port/chan.c:483,489 | ||
| 1999/1224 | c->name = addelem(c->name, name); if(dotdot){ | |
| 1999/1230 | cleancname(c->name); /* could be cheaper */ | |
| 1999/1224 | c = undomount(c); } return c; | |
| 1999/1224/sys/src/9/port/chan.c:644,693 – 1999/1230/sys/src/9/port/chan.c:644,668 | ||
| 1999/0629 | * In place, rewrite name to compress multiple /, eliminate ., and process .. */ void | |
| 1999/0716 |
| |
| 1999/1230 | cleancname(Cname *n) | |
| 1999/0629 | { | |
| 1999/1230 | char *p; | |
| 1999/0629 |
| |
| 1999/1230 | if(n->s[0] == '#'){ p = strchr(n->s, '/'); if(p == nil) return; cleanname(p); | |
| 1999/0629 |
| |
| 1999/0716 |
| |
| 1999/0629 |
| |
| 1999/0716 |
| |
| 1999/0629 |
| |
| 1999/1230 | /* * The correct name is #i rather than #i/, * but the correct name of #/ is #/. */ if(strcmp(p, "/")==0 && n->s[1] != '/') *p = '\0'; }else cleanname(n->s); n->len = strlen(n->s); | |
| 1999/0629 | } /* | |
| 1999/1224/sys/src/9/port/chan.c:911,922 – 1999/1230/sys/src/9/port/chan.c:886,893 | ||
| 1999/0629 | poperror(); | |
| 1999/0716 |
| |
| 1999/0629 |
| |
| 1999/0716 |
| |
| 1999/1230 | cleancname(cname); | |
| 1999/0629 | cnameclose(c->name); c->name = cname; }else | |