Lines Matching +full:assoc +full:- +full:select

1 /*-
2 * SPDX-License-Identifier: BSD-3-Clause
84 struct vnode *vp = ap->a_vp;
85 struct vattr *vap = ap->a_vap;
87 if (vap->va_flags != (u_long)VNOVAL || vap->va_uid != (uid_t)VNOVAL ||
88 vap->va_gid != (gid_t)VNOVAL || vap->va_atime.tv_sec != VNOVAL ||
89 vap->va_mtime.tv_sec != VNOVAL || vap->va_mode != (mode_t)VNOVAL)
91 if (vap->va_size != (u_quad_t)VNOVAL) {
92 switch (vp->v_type) {
113 * The mode is shifted to select the owner/group/other fields. The
120 struct vnode *vp = ap->a_vp;
122 accmode_t accmode = ap->a_accmode;
127 if (vp->v_type == VCHR || vp->v_type == VBLK)
136 switch (vp->v_type) {
147 file_mode = ip->inode.iso_mode;
148 file_mode &= (vp->v_type == VDIR) ? ip->i_mnt->im_dmask : ip->i_mnt->im_fmask;
150 uid = (ip->i_mnt->im_flags & ISOFSMNT_UID) ?
151 ip->i_mnt->im_uid : ip->inode.iso_uid;
152 gid = (ip->i_mnt->im_flags & ISOFSMNT_GID) ?
153 ip->i_mnt->im_gid : ip->inode.iso_gid;
155 return (vaccess(vp->v_type, file_mode, uid,
156 gid, ap->a_accmode, ap->a_cred));
162 struct vnode *vp = ap->a_vp;
165 if (vp->v_type == VCHR || vp->v_type == VBLK)
168 vnode_create_vobject(vp, ip->i_size, ap->a_td);
176 struct vnode *vp = ap->a_vp;
177 struct vattr *vap = ap->a_vap;
180 vap->va_fsid = dev2udev(ip->i_mnt->im_dev);
181 vap->va_fileid = ip->i_number;
183 vap->va_mode = ip->inode.iso_mode;
184 vap->va_mode &= (vp->v_type == VDIR) ? ip->i_mnt->im_dmask : ip->i_mnt->im_fmask;
186 vap->va_nlink = ip->inode.iso_links;
187 vap->va_uid = (ip->i_mnt->im_flags & ISOFSMNT_UID) ?
188 ip->i_mnt->im_uid : ip->inode.iso_uid;
189 vap->va_gid = (ip->i_mnt->im_flags & ISOFSMNT_GID) ?
190 ip->i_mnt->im_gid : ip->inode.iso_gid;
191 vap->va_atime = ip->inode.iso_atime;
192 vap->va_mtime = ip->inode.iso_mtime;
193 vap->va_ctime = ip->inode.iso_ctime;
194 vap->va_rdev = ip->inode.iso_rdev;
196 vap->va_size = (u_quad_t) ip->i_size;
197 if (ip->i_size == 0 && (vap->va_mode & S_IFMT) == S_IFLNK) {
214 rdlnk.a_vp = ap->a_vp;
215 rdlnk.a_cred = ap->a_cred;
217 vap->va_size = MAXPATHLEN - auio.uio_resid;
220 vap->va_flags = 0;
221 vap->va_gen = 1;
222 vap->va_blocksize = ip->i_mnt->logical_block_size;
223 vap->va_bytes = (u_quad_t) ip->i_size;
224 vap->va_type = vp->v_type;
225 vap->va_filerev = 0;
239 vp = ap->a_vp;
245 if (vp->v_type == VCHR || vp->v_type == VBLK) {
253 switch (ap->a_command) {
255 *(int *)(ap->a_data) = ip->iso_start;
272 struct vnode *vp = ap->a_vp;
273 struct uio *uio = ap->a_uio;
283 if (vp->v_type == VCHR || vp->v_type == VBLK)
286 seqcount = ap->a_ioflag >> IO_SEQSHIFT;
288 if (uio->uio_resid == 0)
290 if (uio->uio_offset < 0)
292 imp = ip->i_mnt;
294 lbn = lblkno(imp, uio->uio_offset);
295 on = blkoff(imp, uio->uio_offset);
296 n = MIN(imp->logical_block_size - on, uio->uio_resid);
297 diff = (off_t)ip->i_size - uio->uio_offset;
304 if ((vp->v_mount->mnt_flag & MNT_NOCLUSTERR) == 0) {
305 if (lblktosize(imp, rablock) < ip->i_size)
306 error = cluster_read(vp, (off_t)ip->i_size,
307 lbn, size, NOCRED, uio->uio_resid,
308 (ap->a_ioflag >> 16), 0, &bp);
313 lblktosize(imp, rablock) < ip->i_size) {
322 n = MIN(n, size - bp->b_resid);
324 error = uiomove(bp->b_data + on, (int)n, uio);
326 } while (error == 0 && uio->uio_resid > 0 && n != 0);
352 dp->d_reclen = GENERIC_DIRSIZ(dp);
355 if (idp->uio->uio_resid < dp->d_reclen) {
356 idp->eofflag = 0;
357 return (-1);
360 if (idp->cookies) {
361 if (idp->ncookies <= 0) {
362 idp->eofflag = 0;
363 return (-1);
366 *idp->cookies++ = off;
367 --idp->ncookies;
370 if ((error = uiomove(dp, dp->d_reclen, idp->uio)) != 0)
372 idp->uio_off = off;
380 int cl, sl, assoc;
384 cl = idp->current.d_namlen;
385 cname = idp->current.d_name;
386 assoc = (cl > 1) && (*cname == ASSOCCHAR);
387 if (assoc) {
388 cl--;
392 dp = &idp->saveent;
393 sname = dp->d_name;
394 if (!(sl = dp->d_namlen)) {
395 dp = &idp->assocent;
396 sname = dp->d_name + 1;
397 sl = dp->d_namlen - 1;
402 if (idp->assocent.d_namlen) {
403 if ((error = iso_uiodir(idp,&idp->assocent,idp->assocoff)) != 0)
405 idp->assocent.d_namlen = 0;
407 if (idp->saveent.d_namlen) {
408 if ((error = iso_uiodir(idp,&idp->saveent,idp->saveoff)) != 0)
410 idp->saveent.d_namlen = 0;
414 idp->current.d_reclen = GENERIC_DIRSIZ(&idp->current);
415 if (assoc) {
416 idp->assocoff = idp->curroff;
417 memcpy(&idp->assocent, &idp->current, idp->current.d_reclen);
419 idp->saveoff = idp->curroff;
420 memcpy(&idp->saveent, &idp->current, idp->current.d_reclen);
431 struct uio *uio = ap->a_uio;
433 struct vnode *vdp = ap->a_vp;
449 imp = dp->i_mnt;
450 bmask = imp->im_bmask;
453 idp->saveent.d_namlen = idp->assocent.d_namlen = 0;
458 idp->saveent.d_type = idp->assocent.d_type = idp->current.d_type =
460 idp->uio = uio;
461 if (ap->a_ncookies == NULL) {
462 idp->cookies = NULL;
467 ncookies = uio->uio_resid / 16;
469 idp->cookies = cookies;
470 idp->ncookies = ncookies;
472 idp->eofflag = 1;
473 idp->curroff = uio->uio_offset;
474 idp->uio_off = uio->uio_offset;
476 if ((entryoffsetinblock = idp->curroff & bmask) &&
477 (error = cd9660_blkatoff(vdp, (off_t)idp->curroff, NULL, &bp))) {
481 endsearch = dp->i_size;
483 while (idp->curroff < endsearch) {
489 if ((idp->curroff & bmask) == 0) {
493 cd9660_blkatoff(vdp, (off_t)idp->curroff, NULL, &bp)) != 0)
501 ((char *)bp->b_data + entryoffsetinblock);
503 reclen = isonum_711(ep->length);
506 idp->curroff =
507 (idp->curroff & ~bmask) + imp->logical_block_size;
517 if (entryoffsetinblock + reclen > imp->logical_block_size) {
523 idp->current.d_namlen = isonum_711(ep->name_len);
525 if (reclen < ISO_DIRECTORY_RECORD_SIZE + idp->current.d_namlen) {
531 if (isonum_711(ep->flags)&2)
532 idp->current.d_fileno = isodirino(ep, imp);
534 idp->current.d_fileno = dbtob(bp->b_blkno) +
537 idp->curroff += reclen;
539 idp->current.d_off = idp->curroff;
541 switch (imp->iso_ftype) {
543 ino = idp->current.d_fileno;
544 cd9660_rrip_getname(ep, idp->current.d_name, &namelen,
546 idp->current.d_fileno = ino;
547 idp->current.d_namlen = (u_char)namelen;
548 if (idp->current.d_namlen)
549 error = iso_uiodir(idp,&idp->current,idp->curroff);
552 strcpy(idp->current.d_name,"..");
553 if (idp->current.d_namlen == 1 && ep->name[0] == 0) {
554 idp->current.d_namlen = 1;
555 error = iso_uiodir(idp,&idp->current,idp->curroff);
556 } else if (idp->current.d_namlen == 1 && ep->name[0] == 1) {
557 idp->current.d_namlen = 2;
558 error = iso_uiodir(idp,&idp->current,idp->curroff);
560 isofntrans(ep->name,idp->current.d_namlen,
561 idp->current.d_name, &namelen,
562 imp->iso_ftype == ISO_FTYPE_9660,
563 isonum_711(ep->flags)&4,
564 imp->joliet_level,
565 imp->im_flags,
566 imp->im_d2l);
567 idp->current.d_namlen = (u_char)namelen;
568 if (imp->iso_ftype == ISO_FTYPE_DEFAULT)
571 error = iso_uiodir(idp,&idp->current,idp->curroff);
580 if (!error && imp->iso_ftype == ISO_FTYPE_DEFAULT) {
581 idp->current.d_namlen = 0;
587 if (ap->a_ncookies != NULL) {
594 *ap->a_ncookies = ncookies - idp->ncookies;
595 *ap->a_cookies = cookies;
602 uio->uio_offset = idp->uio_off;
603 *ap->a_eofflag = idp->eofflag;
631 ip = VTOI(ap->a_vp);
632 imp = ip->i_mnt;
633 uio = ap->a_uio;
635 if (imp->iso_ftype != ISO_FTYPE_RRIP)
641 error = bread(imp->im_devvp,
642 (ip->i_number >> imp->im_bshift) <<
643 (imp->im_bshift - DEV_BSHIFT),
644 imp->logical_block_size, NOCRED, &bp);
652 dirp = (ISODIR *)(bp->b_data + (ip->i_number & imp->im_bmask));
658 if ((ip->i_number & imp->im_bmask) + isonum_711(dirp->length)
659 > (unsigned)imp->logical_block_size) {
668 if (uio->uio_segflg == UIO_SYSSPACE)
669 symname = uio->uio_iov->iov_base;
677 if (uio->uio_segflg != UIO_SYSSPACE)
683 * Don't forget before you leave from home ;-)
690 if (uio->uio_segflg != UIO_SYSSPACE) {
695 uio->uio_resid -= symlen;
696 uio->uio_iov->iov_base = (char *)uio->uio_iov->iov_base + symlen;
697 uio->uio_iov->iov_len -= symlen;
708 struct buf *bp = ap->a_bp;
709 struct vnode *vp = ap->a_vp;
714 if (vp->v_type == VBLK || vp->v_type == VCHR)
716 if (bp->b_blkno == bp->b_lblkno) {
717 bp->b_blkno = (ip->iso_start + bp->b_lblkno) <<
718 (ip->i_mnt->im_bshift - DEV_BSHIFT);
720 bp->b_iooffset = dbtob(bp->b_blkno);
721 bo = ip->i_mnt->im_bo;
733 switch (ap->a_name) {
735 *ap->a_retval = 32;
738 *ap->a_retval = 1;
741 if (VTOI(ap->a_vp)->i_mnt->iso_ftype == ISO_FTYPE_RRIP)
742 *ap->a_retval = NAME_MAX;
744 *ap->a_retval = 37;
747 if (VTOI(ap->a_vp)->i_mnt->iso_ftype == ISO_FTYPE_RRIP) {
748 *ap->a_retval = MAXPATHLEN;
753 *ap->a_retval = 1;
771 struct iso_node *ip = VTOI(ap->a_vp);
775 ifh.ifid_ino = ip->i_number;
776 ifh.ifid_start = ip->iso_start;
781 memcpy(ap->a_fhp, &ifh, sizeof(ifh));
802 return (lblkno(VTOI(vp)->i_mnt, off));
811 *sz = blksize(ip->i_mnt, ip, lbn);
820 vp = ap->a_vp;
821 if (vp->v_type == VCHR || vp->v_type == VBLK)
825 return (vfs_bio_getpages(vp, ap->a_m, ap->a_count,
826 ap->a_rbehind, ap->a_rahead, cd9660_gbp_getblkno,
828 return (vnode_pager_generic_getpages(vp, ap->a_m, ap->a_count,
829 ap->a_rbehind, ap->a_rahead, NULL, NULL));