Home | History | Annotate | Download | only in restore

Lines Matching defs:rdirp

475 rst_seekdir(RST_DIR *rdirp, long loc, long base)
478 if (loc == rst_telldir(rdirp))
484 (void) lseek(rdirp->dd_fd, base + (loc & ~(DIRBLKSIZ - 1)), SEEK_SET);
485 rdirp->dd_loc = loc & (DIRBLKSIZ - 1);
486 if (rdirp->dd_loc != 0)
487 rdirp->dd_size = read(rdirp->dd_fd, rdirp->dd_buf, DIRBLKSIZ);
494 rst_readdir(RST_DIR *rdirp)
499 if (rdirp->dd_loc == 0) {
500 rdirp->dd_size = read(rdirp->dd_fd, rdirp->dd_buf,
502 if (rdirp->dd_size <= 0) {
507 if (rdirp->dd_loc >= rdirp->dd_size) {
508 rdirp->dd_loc = 0;
511 dp = (struct direct *)(rdirp->dd_buf + rdirp->dd_loc);
513 dp->d_reclen > DIRBLKSIZ + 1 - rdirp->dd_loc) {
518 rdirp->dd_loc += dp->d_reclen;
537 RST_DIR *rdirp;
542 rdirp = opendirfile(dirfile);
543 rst_seekdir(rdirp, itp->t_seekpt, itp->t_seekpt);
544 return (rdirp);
553 rst_closedir(RST_DIR *rdirp)
556 (void)close(rdirp->dd_fd);
557 free(rdirp);
565 rst_telldir(RST_DIR *rdirp)
567 return ((long)lseek(rdirp->dd_fd,
568 (off_t)0, SEEK_CUR) - rdirp->dd_size + rdirp->dd_loc);
577 RST_DIR *rdirp;
582 if ((rdirp = malloc(sizeof(RST_DIR))) == NULL) {
586 rdirp->dd_fd = fd;
587 rdirp->dd_loc = 0;
588 return (rdirp);