- if (uap->arg < 0 || uap->arg >= NOFILE) {
- u.u_error = EINVAL;
- return;
- }
- if (u.u_error = ufalloc(uap->arg, &i))
- return;
- u.u_r.r_val1 = i;
- dupit(i, fp, *pop &~ UF_EXCLOSE);
- break;
+ if (uap->arg < 0 || uap->arg >= NOFILE)
+ RETURN (EINVAL);
+ if (error = ufalloc(uap->arg, &i))
+ RETURN (error);
+ u.u_ofile[i] = fp;
+ u.u_pofile[i] = *pop &~ UF_EXCLOSE;
+ fp->f_count++;
+ if (i > u.u_lastfile)
+ u.u_lastfile = i;
+ *retval = i;
+ RETURN (0);