| plan 9 kernel history: overview | file list | diff list |
1991/0411/port/devenv.c (diff list | history)
| 1991/0318/sys/src/9/port/devenv.c:435,441 – 1991/0411/sys/src/9/port/devenv.c:435,441 (short | long | prev | next) | ||
| 1990/0227 | } long | |
| 1991/0411 | envread(Chan *c, void *va, long n, ulong offset) | |
| 1990/0227 | { Env *e; Envval *ev; | |
| 1991/0318/sys/src/9/port/devenv.c:456,467 – 1991/0411/sys/src/9/port/devenv.c:456,467 | ||
| 1990/0227 | lock(e); ev = e->val; vn = ev? e->val->len : 0; | |
| 1991/0411 | if(offset+n > vn) n = vn - offset; | |
| 1990/0227 | if(n <= 0) n = 0; else | |
| 1991/0318 |
| |
| 1991/0411 | memmove(a, ev->dat+offset, n); | |
| 1990/0227 | unlock(e); unlock(pg); return n; | |
| 1991/0318/sys/src/9/port/devenv.c:468,474 – 1991/0411/sys/src/9/port/devenv.c:468,474 | ||
| 1990/0227 | } long | |
| 1991/0411 | envwrite(Chan *c, void *va, long n, ulong offset) | |
| 1990/0227 | { Env *e; char *p; | |
| 1991/0318/sys/src/9/port/devenv.c:496,508 – 1991/0411/sys/src/9/port/devenv.c:496,508 | ||
| 1990/0227 | } if(e->pgref>1) panic("envwrite to non-duped env"); | |
| 1991/0411 | growenval(e, offset+n); | |
| 1990/0227 | ev = e->val; vn = ev? ev->len : 0; | |
| 1991/0411 | if(offset > vn) | |
| 1990/11211 | error(Egreg); /* perhaps should zero fill */ | |
| 1991/0318 |
| |
| 1990/0227 |
| |
| 1991/0411 | memmove(ev->dat+offset, a, n); e->val->len = offset+n; | |
| 1990/0227 | poperror(); unlock(e); unlock(&envalloc); | |