X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;ds=sidebyside;f=sys%2Fsrc%2F9%2Fport%2Fsysfile.c;h=451822917b64ae1c07133f3d2141cec54e7bac91;hb=b450cb7e32ac9233d6d9225600feaf8b4a84301d;hp=77ff43fa30ab532b546d10ed5f0a52c890cc7ffd;hpb=323184d775b92c50bb37fa0b3ae73a16138f8b7e;p=plan9front.git diff --git a/sys/src/9/port/sysfile.c b/sys/src/9/port/sysfile.c index 77ff43fa3..451822917 100644 --- a/sys/src/9/port/sysfile.c +++ b/sys/src/9/port/sysfile.c @@ -294,7 +294,7 @@ fdclose(int fd, int flag) Fgrp *f = up->fgrp; lock(f); - c = f->fd[fd]; + c = fd <= f->maxfd ? f->fd[fd] : nil; if(c == nil || (flag != 0 && (c->flag&flag) == 0)){ unlock(f); return; @@ -1002,16 +1002,10 @@ syschdir(va_list list) } long -bindmount(int ismount, int fd, int afd, char* arg0, char* arg1, ulong flag, char* spec) +bindmount(int ismount, int fd, int afd, char* arg0, char* arg1, int flag, char* spec) { int ret; Chan *c0, *c1, *ac, *bc; - struct{ - Chan *chan; - Chan *authchan; - char *spec; - int flags; - }bogus; if((flag&~MMASK) || (flag&MORDER)==(MBEFORE|MAFTER)) error(Ebadarg); @@ -1039,12 +1033,7 @@ bindmount(int ismount, int fd, int afd, char* arg0, char* arg1, ulong flag, char if(afd >= 0) ac = fdtochan(afd, ORDWR, 0, 1); - bogus.flags = flag & MCACHE; - bogus.chan = bc; - bogus.authchan = ac; - bogus.spec = spec; - ret = devno('M', 0); - c0 = devtab[ret]->attach((char*)&bogus); + c0 = mntattach(bc, ac, spec, flag&MCACHE); poperror(); /* ac bc */ if(ac != nil) cclose(ac); @@ -1085,11 +1074,11 @@ uintptr sysbind(va_list list) { char *arg0, *arg1; - ulong flag; + int flag; arg0 = va_arg(list, char*); arg1 = va_arg(list, char*); - flag = va_arg(list, ulong); + flag = va_arg(list, int); return (uintptr)bindmount(0, -1, -1, arg0, arg1, flag, nil); } @@ -1097,13 +1086,13 @@ uintptr sysmount(va_list list) { char *arg1, *spec; - ulong flag; + int flag; int fd, afd; fd = va_arg(list, int); afd = va_arg(list, int); arg1 = va_arg(list, char*); - flag = va_arg(list, ulong); + flag = va_arg(list, int); spec = va_arg(list, char*); return (uintptr)bindmount(1, fd, afd, nil, arg1, flag, spec); } @@ -1112,12 +1101,12 @@ uintptr sys_mount(va_list list) { char *arg1, *spec; - ulong flag; + int flag; int fd; fd = va_arg(list, int); arg1 = va_arg(list, char*); - flag = va_arg(list, ulong); + flag = va_arg(list, int); spec = va_arg(list, char*); return (uintptr)bindmount(1, fd, -1, nil, arg1, flag, spec); }