long sysfversion(ulong *arg) { char *vers; uint arglen, m, msize; Chan *c; msize = arg[1]; vers = (char*)arg[2]; arglen = arg[3]; validaddr(arg[2], arglen, 1); /* check there's a NUL in the version string */ if(arglen==0 || memchr(vers, 0, arglen)==0) error(Ebadarg); c = fdtochan(arg[0], ORDWR, 0, 1); if(waserror()){ cclose(c); nexterror(); } m = mntversion(c, vers, msize, arglen); cclose(c); poperror(); return m; }
int sysfversion(int fd, unsigned int msize, char *vers, unsigned int arglen) { ERRSTACK(2); int m; struct chan *c; if (waserror()) { poperror(); return -1; } /* check there's a NUL in the version string */ if (arglen == 0 || memchr(vers, 0, arglen) == 0) error(EINVAL, ERROR_FIXME); c = fdtochan(¤t->open_files, fd, O_RDWR, 0, 1); if (waserror()) { cclose(c); nexterror(); } m = mntversion(c, vers, msize, arglen); poperror(); cclose(c); poperror(); return m; }
void sysfversion(Ar0* ar0, va_list list) { Chan *c; char *version; int fd; u32int msize; usize nversion; /* * int fversion(int fd, int bufsize, char *version, int nversion); * should be * usize fversion(int fd, u32int msize, char *version, usize nversion); */ fd = va_arg(list, int); msize = va_arg(list, u32int); version = va_arg(list, char*); nversion = va_arg(list, usize); version = validaddr(version, nversion, 1); /* check there's a NUL in the version string */ if(nversion == 0 || memchr(version, 0, nversion) == nil) error(Ebadarg); c = fdtochan(fd, ORDWR, 0, 1); if(waserror()){ cclose(c); nexterror(); } ar0->u = mntversion(c, msize, version, nversion); cclose(c); poperror(); }
uintptr sysfversion(va_list list) { uint msize, arglen; char *vers; Chan *c; int fd; fd = va_arg(list, int); msize = va_arg(list, uint); vers = va_arg(list, char*); arglen = va_arg(list, uint); validaddr((uintptr)vers, arglen, 1); /* check there's a NUL in the version string */ if(arglen==0 || memchr(vers, 0, arglen)==0) error(Ebadarg); c = fdtochan(fd, ORDWR, 0, 1); if(waserror()){ cclose(c); nexterror(); } msize = mntversion(c, vers, msize, arglen); cclose(c); poperror(); return msize; }