- fclose(f);
- } else
-#endif
-#if defined BB_FEATURE_USE_DEVPS_N_DEVMTAB
- if (strcmp(filesystemType, "auto") == 0) {
- int fd, i, numfilesystems;
- char device[] = "/dev/mtab";
- struct k_fstype *fslist;
-
- /* open device */
- fd = open(device, O_RDONLY);
- if (fd < 0)
- fatalError("open failed for `%s': %s\n", device, strerror (errno));
-
- /* How many filesystems? We need to know to allocate enough space */
- numfilesystems = ioctl (fd, DEVMTAB_COUNT_FILESYSTEMS);
- if (numfilesystems<0)
- fatalError("\nDEVMTAB_COUNT_FILESYSTEMS: %s\n", strerror (errno));
- fslist = (struct k_fstype *) calloc ( numfilesystems, sizeof(struct k_fstype));
-
- /* Grab the list of available filesystems */
- status = ioctl (fd, DEVMTAB_GET_FILESYSTEMS, fslist);
- if (status<0)
- fatalError("\nDEVMTAB_GET_FILESYSTEMS: %s\n", strerror (errno));
-
- /* Walk the list trying to mount filesystems
- * that do not claim to be nodev filesystems */
- for( i = 0 ; i < numfilesystems ; i++) {
- if (fslist[i].mnt_nodev)
- continue;
- status = do_mount(blockDevice, directory, fslist[i].mnt_type,
- flags | MS_MGC_VAL, string_flags,
- useMtab, fakeIt, mtab_opts);
- if (status == TRUE)
- break;
- }
- free( fslist);
- close(fd);
- } else
-#endif
- {