void TrimTask::addFromFstab() { std::unique_ptr<fstab, decltype(&fs_mgr_free_fstab)> fstab(fs_mgr_read_fstab_default(), fs_mgr_free_fstab); struct fstab_rec *prev_rec = NULL; for (int i = 0; i < fstab->num_entries; i++) { /* Skip raw partitions */ if (!strcmp(fstab->recs[i].fs_type, "emmc") || !strcmp(fstab->recs[i].fs_type, "mtd")) { continue; } /* Skip read-only filesystems */ if (fstab->recs[i].flags & MS_RDONLY) { continue; } if (fs_mgr_is_voldmanaged(&fstab->recs[i])) { continue; /* Should we trim fat32 filesystems? */ } if (fs_mgr_is_notrim(&fstab->recs[i])) { continue; } /* Skip the multi-type partitions, which are required to be following each other. * See fs_mgr.c's mount_with_alternatives(). */ if (prev_rec && !strcmp(prev_rec->mount_point, fstab->recs[i].mount_point)) { continue; } mPaths.push_back(fstab->recs[i].mount_point); prev_rec = &fstab->recs[i]; } }
static struct fstab* read_fstab() { fstab = fs_mgr_read_fstab_default(); if (!fstab) { LOG(ERROR) << "failed to read default fstab"; return NULL; } return fstab; }