Changeset View
Changeset View
Standalone View
Standalone View
sys/fs/smbfs/smbfs_io.c
Show First 20 Lines • Show All 96 Lines • ▼ Show 20 Lines | smbfs_readvdir(struct vnode *vp, struct uio *uio, struct ucred *cred) | ||||
while (limit && offset < 2) { | while (limit && offset < 2) { | ||||
limit--; | limit--; | ||||
bzero((caddr_t)&de, DE_SIZE); | bzero((caddr_t)&de, DE_SIZE); | ||||
de.d_reclen = DE_SIZE; | de.d_reclen = DE_SIZE; | ||||
de.d_fileno = (offset == 0) ? np->n_ino : | de.d_fileno = (offset == 0) ? np->n_ino : | ||||
(np->n_parent ? np->n_parentino : 2); | (np->n_parent ? np->n_parentino : 2); | ||||
if (de.d_fileno == 0) | if (de.d_fileno == 0) | ||||
de.d_fileno = 0x7ffffffd + offset; | de.d_fileno = 0x7ffffffd + offset; | ||||
de.d_off = offset + 1; | |||||
de.d_namlen = offset + 1; | de.d_namlen = offset + 1; | ||||
de.d_name[0] = '.'; | de.d_name[0] = '.'; | ||||
de.d_name[1] = '.'; | de.d_name[1] = '.'; | ||||
de.d_type = DT_DIR; | de.d_type = DT_DIR; | ||||
dirent_terminate(&de); | dirent_terminate(&de); | ||||
error = uiomove(&de, DE_SIZE, uio); | error = uiomove(&de, DE_SIZE, uio); | ||||
if (error) | if (error) | ||||
goto out; | goto out; | ||||
Show All 34 Lines | smbfs_readvdir(struct vnode *vp, struct uio *uio, struct ucred *cred) | ||||
for (; limit; limit--, offset++) { | for (; limit; limit--, offset++) { | ||||
error = smbfs_findnext(ctx, limit, scred); | error = smbfs_findnext(ctx, limit, scred); | ||||
if (error) | if (error) | ||||
break; | break; | ||||
np->n_dirofs++; | np->n_dirofs++; | ||||
bzero((caddr_t)&de, DE_SIZE); | bzero((caddr_t)&de, DE_SIZE); | ||||
de.d_reclen = DE_SIZE; | de.d_reclen = DE_SIZE; | ||||
de.d_fileno = ctx->f_attr.fa_ino; | de.d_fileno = ctx->f_attr.fa_ino; | ||||
de.d_off = offset + 1; | |||||
de.d_type = (ctx->f_attr.fa_attr & SMB_FA_DIR) ? DT_DIR : DT_REG; | de.d_type = (ctx->f_attr.fa_attr & SMB_FA_DIR) ? DT_DIR : DT_REG; | ||||
de.d_namlen = ctx->f_nmlen; | de.d_namlen = ctx->f_nmlen; | ||||
bcopy(ctx->f_name, de.d_name, de.d_namlen); | bcopy(ctx->f_name, de.d_name, de.d_namlen); | ||||
dirent_terminate(&de); | dirent_terminate(&de); | ||||
if (smbfs_fastlookup) { | if (smbfs_fastlookup) { | ||||
error = smbfs_nget(vp->v_mount, vp, ctx->f_name, | error = smbfs_nget(vp->v_mount, vp, ctx->f_name, | ||||
ctx->f_nmlen, &ctx->f_attr, &newvp); | ctx->f_nmlen, &ctx->f_attr, &newvp); | ||||
if (!error) { | if (!error) { | ||||
▲ Show 20 Lines • Show All 513 Lines • Show Last 20 Lines |