Lines Matching refs:iter

100 	struct mountpoint_iter *iter;
113 iter = mountpoint_iter_init();
114 while ((mnt = mountpoint_iter_next(iter)) != NULL) {
126 if (mountpoint_iter_deinit(&iter) < 0 && mnt == NULL)
153 struct mountpoint_iter *iter = i_new(struct mountpoint_iter, 1);
166 iter->failed = TRUE;
167 return iter;
169 iter->count = count;
170 iter->mtab = i_malloc(size);
171 memcpy(iter->mtab, mtab, size);
172 iter->vmt = (void *)iter->mtab;
174 iter->f = fopen(MTAB_PATH, "r");
175 if (iter->f == NULL) {
177 iter->failed = TRUE;
178 return iter;
180 resetmnttab(iter->f);
182 iter->f = setmntent(MTAB_PATH, "r");
183 if (iter->f == NULL) {
185 iter->failed = TRUE;
188 iter->count = getmntinfo(&iter->fs, MNT_NOWAIT);
189 if (iter->count < 0) {
191 iter->failed = TRUE;
194 iter->failed = TRUE;
196 return iter;
199 const struct mountpoint *mountpoint_iter_next(struct mountpoint_iter *iter)
202 struct vmount *vmt = iter->vmt;
207 if (iter->count == 0)
209 iter->count--;
211 iter->vmt = PTR_OFFSET(vmt, vmt->vmt_length);
216 i_zero(&iter->mnt);
222 iter->mnt.device_path =
224 iter->mnt.mount_path = vmt_stub;
225 iter->mnt.type = MNTTYPE_NFS;
230 iter->mnt.device_path = vmt_object;
231 iter->mnt.mount_path = vmt_stub;
232 iter->mnt.type = MNTTYPE_JFS;
236 return mountpoint_iter_next(iter);
238 if (stat(iter->mnt.mount_path, &vst) == 0) {
239 iter->mnt.dev = vst.st_dev;
240 iter->mnt.block_size = vst.st_blksize;
242 return &iter->mnt;
249 if (iter->f == NULL)
252 i_zero(&iter->mnt);
253 while ((getextmntent(iter->f, &ent.ext, sizeof(ent.ext))) == 0) {
261 iter->mnt.device_path = ent.ent.mnt_special;
262 iter->mnt.mount_path = ent.ent.mnt_mountp;
263 iter->mnt.type = ent.ent.mnt_fstype;
264 iter->mnt.dev = makedev(ent.ext.mnt_major, ent.ext.mnt_minor);
265 return &iter->mnt;
272 if (iter->f == NULL)
275 i_zero(&iter->mnt);
276 while ((ent = getmntent(iter->f)) != NULL) {
282 iter->mnt.device_path = ent->mnt_fsname;
283 iter->mnt.mount_path = ent->mnt_dir;
284 iter->mnt.type = ent->mnt_type;
286 iter->mnt.dev = st.st_dev;
287 iter->mnt.block_size = st.st_blksize;
289 return &iter->mnt;
293 while (iter->count > 0) {
295 struct statfs *fs = iter->fs;
297 struct statvfs *fs = iter->fs;
300 iter->fs++;
301 iter->count--;
303 iter->mnt.device_path = fs->f_mntfromname;
304 iter->mnt.mount_path = fs->f_mntonname;
306 iter->mnt.type = getvfsbynumber(fs->f_type);
308 iter->mnt.type = fs->f_fstypename;
310 iter->mnt.block_size = fs->f_bsize;
311 return &iter->mnt;
321 struct mountpoint_iter *iter = *_iter;
322 int ret = iter->failed ? -1 : 0;
326 i_free(iter->mtab);
328 if (iter->f != NULL)
329 fclose(iter->f);
331 if (iter->f != NULL)
332 endmntent(iter->f);
334 i_free(iter);