int smb_read(struct smb_share *ssp, u_int16_t fid, struct uio *uio, struct smb_cred *scred) { size_t tsize, len, resid; int error = 0; int rx = (SMB_CAPS(SSTOVC(ssp)) & SMB_CAP_LARGE_READX); resid = 0; /* XXX gcc */ tsize = uio->uio_resid; while (tsize > 0) { len = tsize; if (rx) error = smb_smb_readx(ssp, fid, &len, &resid, uio, scred); else error = smb_smb_read(ssp, fid, &len, &resid, uio, scred); if (error) break; tsize -= resid; if (resid < len) break; } return error; }
int smb_read(struct smb_share *ssp, u_int16_t fid, struct uio *uio, struct smb_cred *scred) { int tsize, len, resid; int error = 0; tsize = uio->uio_resid; while (tsize > 0) { len = tsize; error = smb_smb_read(ssp, fid, &len, &resid, uio, scred); if (error) break; tsize -= resid; if (resid < len) break; } return error; }
int smb_read(struct smb_share *ssp, u_int16_t fid, struct uio *uio, struct smb_cred *scred) { int len, resid; int error = 0; while (uio->uio_resid > 0) { if (uio->uio_resid > INT_MAX) len = INT_MAX; else len = (int)uio->uio_resid; error = smb_smb_read(ssp, fid, &len, &resid, uio, scred); if (error) break; if (resid < len) break; } return error; }