- next_seg = LFS_UNUSED_DADDR;
- for (seg_addr = lfs_master->lfs_lastseg;
- seg_addr != LFS_UNUSED_DADDR &&
- next_seg != lfs_master->lfs_lastseg;
- seg_addr = next_seg)
- next_seg = dump_segment(fd, seg_addr, lfs_master, do_allsb);
-
+ if (seglist != NULL)
+ for (; seglist != NULL; seglist = seglist->next) {
+ seg_addr = lfs_master->lfs_sboffs[0] + seglist->num *
+ (lfs_master->lfs_ssize << lfs_master->lfs_fsbtodb);
+ dump_segment(fd,
+ seglist->num, seg_addr, lfs_master, do_allsb);
+ }
+ else
+ for (segnum = 0, seg_addr = lfs_master->lfs_sboffs[0];
+ segnum < lfs_master->lfs_nseg; segnum++, seg_addr +=
+ lfs_master->lfs_ssize << lfs_master->lfs_fsbtodb)
+ dump_segment(fd,
+ segnum, seg_addr, lfs_master, do_allsb);
+