Home | History | Annotate | Download | only in cd9660

Lines Matching defs:idp

298 iso_uiodir(struct isoreaddir *idp, struct dirent *dp, off_t off)
305 if (idp->uio->uio_resid < dp->d_reclen) {
306 idp->eofflag = 0;
310 if (idp->cookies) {
311 if (idp->ncookies <= 0) {
312 idp->eofflag = 0;
316 *idp->cookies++ = off;
317 --idp->ncookies;
320 if ((error = uiomove(dp, dp->d_reclen, idp->uio)) != 0)
322 idp->uio_off = off;
327 iso_shipdir(struct isoreaddir *idp)
334 cl = idp->current.d_namlen;
335 cname = idp->current.d_name;
343 dp = &idp->saveent;
346 dp = &idp->assocent;
353 if (idp->assocent.d_namlen) {
354 error = iso_uiodir(idp, &idp->assocent,
355 idp->assocoff);
358 idp->assocent.d_namlen = 0;
360 if (idp->saveent.d_namlen) {
361 error = iso_uiodir(idp, &idp->saveent,
362 idp->saveoff);
365 idp->saveent.d_namlen = 0;
369 idp->current.d_reclen = _DIRENT_SIZE(&idp->current);
371 idp->assocoff = idp->curroff;
372 memcpy(&idp->assocent, &idp->current, idp->current.d_reclen);
374 idp->saveoff = idp->curroff;
375 memcpy(&idp->saveent, &idp->current, idp->current.d_reclen);
395 struct isoreaddir *idp;
417 idp = malloc(sizeof(*idp), M_TEMP, M_WAITOK | M_ZERO);
418 idp->saveent.d_namlen = idp->assocent.d_namlen = 0;
423 idp->saveent.d_type = idp->assocent.d_type = idp->current.d_type =
425 idp->uio = uio;
427 idp->cookies = NULL;
431 idp->cookies = cookies;
432 idp->ncookies = ncookies;
434 idp->eofflag = 1;
435 idp->curroff = uio->uio_offset;
437 if ((entryoffsetinblock = idp->curroff & bmask) &&
438 (error = cd9660_blkatoff(vdp, (off_t)idp->curroff, NULL, &bp))) {
439 free(idp, M_TEMP);
444 while (idp->curroff < endsearch) {
450 if ((idp->curroff & bmask) == 0) {
453 error = cd9660_blkatoff(vdp, (off_t)idp->curroff,
469 idp->curroff =
470 (idp->curroff & ~bmask) + imp->logical_block_size;
486 idp->current.d_namlen = isonum_711(ep->name_len);
488 if (reclen < ISO_DIRECTORY_RECORD_SIZE + idp->current.d_namlen) {
495 idp->current.d_fileno = isodirino(ep, imp);
497 idp->current.d_fileno = dbtob(bp->b_blkno) +
500 idp->curroff += reclen;
504 cd9660_rrip_getname(ep, idp->current.d_name, &namelen,
505 &idp->current.d_fileno, imp);
506 idp->current.d_namlen = (u_char)namelen;
507 if (idp->current.d_namlen)
508 error = iso_uiodir(idp, &idp->current,
509 idp->curroff);
512 isofntrans(ep->name, idp->current.d_namlen,
513 idp->current.d_name, &namelen,
518 switch (idp->current.d_name[0]) {
520 idp->current.d_name[0] = '.';
521 idp->current.d_namlen = 1;
522 error = iso_uiodir(idp, &idp->current,
523 idp->curroff);
526 strlcpy(idp->current.d_name, "..",
527 sizeof(idp->current.d_name));
528 idp->current.d_namlen = 2;
529 error = iso_uiodir(idp, &idp->current,
530 idp->curroff);
533 idp->current.d_namlen = (u_char)namelen;
535 error = iso_shipdir(idp);
537 error = iso_uiodir(idp, &idp->current,
538 idp->curroff);
549 idp->current.d_namlen = 0;
550 error = iso_shipdir(idp);
562 *ap->a_ncookies = ncookies - idp->ncookies;
570 uio->uio_offset = idp->uio_off;
571 *ap->a_eofflag = idp->eofflag;
573 free(idp, M_TEMP);