| plan 9 kernel history: overview | file list | diff list |
1998/0326/port/sysfile.c (diff list | history)
| 1998/0320/sys/src/9/port/sysfile.c:467,474 – 1998/0326/sys/src/9/port/sysfile.c:467,474 (short | long | prev | next) | ||
|
Change VSEEK system call to return vlong.
rsc Fri Mar 4 17:11:47 2005 | ||
| 1990/0227 | return n; } | |
| 1998/0319 |
| |
| 1998/0326 | static void sseek(ulong *arg) | |
| 1990/0227 | { Chan *c; char buf[DIRLEN]; | |
| 1998/0320/sys/src/9/port/sysfile.c:479,485 – 1998/0326/sys/src/9/port/sysfile.c:479,485 | ||
| 1998/0319 | ulong u[2]; } o; | |
| 1990/0227 | ||
| 1992/0825 |
| |
| 1998/0326 | c = fdtochan(arg[1], -1, 1, 0); | |
| 1990/11211 | if(c->qid.path & CHDIR) error(Eisdir); | |
| 1992/0825 | ||
| 1998/0320/sys/src/9/port/sysfile.c:487,495 – 1998/0326/sys/src/9/port/sysfile.c:487,495 | ||
| 1991/0319 | error(Eisstream); | |
| 1992/0825 | ||
| 1991/1101 | off = 0; | |
| 1998/0319 |
| |
| 1998/0326 | o.u[0] = arg[2]; o.u[1] = arg[3]; switch(arg[4]){ | |
| 1990/0227 | case 0: | |
| 1998/0319 | off = o.v; c->offset = off; | |
| 1998/0320/sys/src/9/port/sysfile.c:505,518 – 1998/0326/sys/src/9/port/sysfile.c:505,526 | ||
| 1990/0227 | case 2: | |
| 1997/0327 | devtab[c->type]->stat(c, buf); | |
| 1990/0227 | convM2D(buf, &dir); | |
| 1998/0320 |
| |
| 1998/0326 | off = dir.length + o.v; | |
| 1998/0319 | c->offset = off; | |
| 1990/0227 | break; } | |
| 1998/0326 | *(vlong*)arg[0] = off; | |
| 1998/0319 | } long | |
| 1998/0326 | sysvseek(ulong *arg) { validaddr(arg[0], BY2V, 1); sseek(arg); return 0; } long | |
| 1998/0319 | sysseek(ulong *arg) { union { | |
| 1998/0320/sys/src/9/port/sysfile.c:519,532 – 1998/0326/sys/src/9/port/sysfile.c:527,542 | ||
| 1998/0319 | vlong v; ulong u[2]; } o; | |
| 1998/0326 | ulong a[5]; | |
| 1998/0319 | o.v = arg[1]; | |
| 1998/0326 | a[0] = (ulong)&o.v; a[1] = arg[0]; a[2] = o.u[0]; a[3] = o.u[1]; a[4] = arg[2]; sseek(a); return o.v; | |
| 1990/0227 | } long | |