| plan 9 kernel history: overview | file list | diff list |
1992/0113/port/devmux.c (diff list | history)
| 1992/0111/sys/src/9/port/devmux.c:221,233 – 1992/0113/sys/src/9/port/devmux.c:221,233 (short | long | prev | next) | ||
| 1991/1114 | switch(NCON(c)) { case Qhead: if(m->headopen) | |
| 1992/0113 | error(Einuse); | |
| 1991/1117 | m->headopen = 1; m->ref++; | |
| 1991/1114 | break; case Qclone: if(m->headopen == 0) | |
| 1992/0113 | error(Emuxshutdown); | |
| 1991/1114 | cm = m->connects; for(e = &cm[Nmux]; cm < e; cm++) | |
| 1992/0111/sys/src/9/port/devmux.c:234,240 – 1992/0113/sys/src/9/port/devmux.c:234,240 | ||
| 1991/1114 | if(cm->ref == 0) break; | |
| 1991/1117 | if(cm == e) | |
| 1991/1114 |
| |
| 1992/0113 | error(Emuxbusy); | |
| 1991/1115 | cm->ref = 1; | |
| 1991/1114 | m->ref++; strncpy(cm->user, u->p->user, NAMELEN); | |
| 1992/0111/sys/src/9/port/devmux.c:275,281 – 1992/0113/sys/src/9/port/devmux.c:275,281 | ||
| 1991/1114 | } if(m == e) | |
| 1992/0113 | error(Enomux); | |
| 1991/1114 | strncpy(m->name, name, NAMELEN); strncpy(m->user, u->p->user, NAMELEN); | |
| 1992/0111/sys/src/9/port/devmux.c:304,311 – 1992/0113/sys/src/9/port/devmux.c:304,311 | ||
| 1991/1117 | if((c->qid.path&CHDIR) == 0 && m->srv == 0) error(Eperm); | |
| 1991/1114 |
| |
| 1992/0113 | if(strncmp(u->p->user, m->user, NAMELEN)) error(Eperm); | |
| 1991/1114 | ||
| 1991/1117 | srv = 0; lock(m); | |
| 1992/0111/sys/src/9/port/devmux.c:332,339 – 1992/0113/sys/src/9/port/devmux.c:332,339 | ||
| 1991/1114 | error(Eperm); m = &muxes[NMUX(c)]; | |
| 1992/0113 | if(strncmp(u->p->user, m->user, NAMELEN)) error(Eperm); | |
| 1991/1114 | convM2D(db, &d); d.mode &= 0777; | |
| 1992/0111/sys/src/9/port/devmux.c:434,444 – 1992/0113/sys/src/9/port/devmux.c:434,444 | ||
| 1991/1114 | Con *c; | |
| 1991/1115 | if(h[0] != Tmux || h[2] != 0) | |
| 1991/1114 |
| |
| 1992/0113 | error(Emuxmsg); | |
| 1991/1114 | c = &m->connects[h[1]]; if(c < m->connects || c > &m->connects[Nmux]) | |
| 1992/0113 | error(Emuxmsg); | |
| 1991/1114 | if(c->ref == 0) return 0; | |
| 1992/0111/sys/src/9/port/devmux.c:476,482 – 1992/0113/sys/src/9/port/devmux.c:476,482 | ||
| 1991/1114 | error(Eperm); case Qhead: if(n < 2) | |
| 1992/0113 | error(Emuxmsg); | |
| 1991/1114 | a = (char*)va; memmove(hdr, a, sizeof(hdr)); | |
| 1992/0111/sys/src/9/port/devmux.c:610,616 – 1992/0113/sys/src/9/port/devmux.c:610,616 | ||
| 1991/1115 | while(!havedata(q)) { sleep(&q->r, havedata, q); if(m->headopen == 0) | |
| 1992/0113 | errors(Emuxshutdown); | |
| 1991/1115 | } | |
| 1991/1114 | nread = 0; | |